<?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>Mihalytch personal blog &#187; Mihalytch</title>
	<atom:link href="http://mihalytch.org.ua/tag/mihalytch/feed" rel="self" type="application/rss+xml" />
	<link>http://mihalytch.org.ua</link>
	<description>Все о высоких технологиях</description>
	<lastBuildDate>Thu, 20 May 2010 07:56:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>M/Monit: Мониторинг нескольких серверов с использованием графического интерфейса.</title>
		<link>http://mihalytch.org.ua/administration/monitoring-serverov-2-html.html</link>
		<comments>http://mihalytch.org.ua/administration/monitoring-serverov-2-html.html#comments</comments>
		<pubDate>Wed, 10 Feb 2010 20:46:26 +0000</pubDate>
		<dc:creator>Mihalytch</dc:creator>
				<category><![CDATA[Администрирование]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Mihalytch]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/?p=217</guid>
		<description><![CDATA[Приветствую тебя уважаемый читатель. Как и обещал в предыдущей статье об использовании MonIT, я расскажу как с помощью M/Monit можно следить за состоянием нескольких серверов с одного графического интерфейса. На самом деле M/Monit в отличии от Monit утилита платная, но на официальном сайте доступна бесплатная версия с ограниченным функционалом. Давайте теперь подробно рассмотрим ее установку [...]]]></description>
			<content:encoded><![CDATA[<p><img class="post-thumb-left size-full wp-image-220" title="mmonit" src="http://mihalytch.org.ua/wp-content/mmonit.jpg" alt="m/monit" width="250" height="216" />Приветствую тебя уважаемый читатель. Как и обещал в предыдущей <a href="http://mihalytch.org.ua/administration/monitoring-serverov-1.html">статье об использовании MonIT</a>, я расскажу как с помощью M/Monit можно следить за состоянием нескольких серверов с одного графического интерфейса.</p>
<p>На самом деле M/Monit в отличии от Monit утилита платная, но на официальном сайте доступна <a href="/go/http://mmonit.com/download/">бесплатная версия с ограниченным функционалом</a>.<br />
Давайте теперь подробно рассмотрим ее установку и настройку. Для этого создадим временную папку, скачаем архив с нужной нам версией, распакуем и скопируем в рабочую директорию (актуальную версию можно найти здесь: <a href="/go/http://mmonit.com/dist/" target="_blank">http://mmonit.com/dist/</a>):<br />
<span id="more-217"></span></p>
<pre class="brush: bash;">
# mkdir ~/distr/mmonit
# cd ~/distr/mmonit
# wget http://mmonit.com/dist/mmonit-2.1.1-linux-x86.tar.gz
# tar -xvf mmonit-2.1.1-linux-x86.tar.gz
# cd mmonit-2.0.3
# ls
bin  CHANGES  conf  db  doc  docroot  lib  logs  README  upgrade
# mkdir /usr/local/mmonit
# cp -R * /usr/local/mmonit
# chmod -R 0700 /usr/local/mmonit
</pre>
<p>Теперь нам необходимо создать базу данных и импортировать туда необходимые приложению данные. В папке /usr/local/mmonit/db/ лежат дампы для четырех типов баз данных. Мы рассмотрим случай с MySQL.<br />
Итак, создадим таблицу и выполним команды из дампа:</p>
<pre class="brush: bash;">
# mysql -u yore_username -p
mysql&gt; CREATE DATABASE `mmonit`;
mysql&gt; use mmonit
mysql&gt; source /usr/local/mmonit/db/mmonit-schema.mysql
mysql&gt; quit
</pre>
<p>После того как мы подготовили к использованию базу данных перейдем к редактированию конфигурационного файла M/Monit /usr/local/mmonit/conf/server.xml .</p>
<pre class="brush: xml;">
&lt;Service&gt;
    &lt;!-- IP адрес интерфейса, на котором мы сможем получить доступ к админке --&gt;
    &lt;Connector address=&quot;IP.FROM.ALLOW.ACCESS&quot; port=&quot;8080&quot; processors=&quot;10&quot; /&gt;
    &lt;Engine name=&quot;mmonit&quot; defaultHost=&quot;localhost&quot; fileCache=&quot;10MB&quot;&gt;
        &lt;!-- настраиваем подключение к базе --&gt;
        &lt;Realm url=&quot;mysql://DB_USER:DB_PASSWORD@DB_HOST/DB_NAME&quot;
             minConnections=&quot;5&quot;
             maxConnections=&quot;25&quot;
             reapConnections=&quot;300&quot; /&gt;
</pre>
<p>Сохраняем конфиг и запускаем /usr/local/mmonit/bin/mmonit, заходим по адресу http://IP.FROM.ALLOW.ACCESS:8080 . По умолчанию логин/пароль - admin/swordfish (настоятельно рекомендуется изменить пароль сразу после первого входа в систему;) ).</p>
<p>Теперь нам обязательно нужно настроить сервис Monit хотя бы на одном сервере, чтобы было с чего собирать статистику. Для этого открываем файл конфигурации Monit: /usr/local/etc/monitrc.d/main.conf вашим любимым редактором и дописываем в начало следующие две строчки:</p>
<p><em>set httpd port 2812 and use address XXX.XXX.XXX.XXX # где XXX.XXX.XXX.XXX - адрес интерфейса, через который MMonit будет осуществлять доступ к monit.<br />
allow monit:your_strong_password</em></p>
<p>Сохраняем конфиг, перезапускаем monit. Входим под админом в web-интерфейс M/Monit, открываем страницу Admin->Hosts->"Add a new host". Заполняем информацию о сервере, состояние которого будем мониторить:<br />
Host Name - название сервера (выбираем имя для нашего удобства),<br />
IP-address, Monit Port - XXX.XXX.XXX.XXX и 2812 указанные в /usr/local/etc/monitrc.d/main.con,<br />
Monit user name, Monit password из того же конфига.<br />
Сохраняем изменения.</p>
<p>Чтобы увидеть информацию о состоянии сервера, нужно всего-лишь кликнуть по его имени в списке серверов на странице Admin->Hosts.</p>
<p>В следующей статье я более детально опишу, как сконфигурировать отчеты о состоянии серверов и как создать файлы для запуска/остановки/перезапуска/проверки статуса сервисов Monit и M/Monit.</p>
<img src="http://mihalytch.org.ua/?ak_action=api_record_view&id=217&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/administration/monitoring-serverov-2-html.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mount при загрузке</title>
		<link>http://mihalytch.org.ua/unix/mount-pri-zagruzke.html</link>
		<comments>http://mihalytch.org.ua/unix/mount-pri-zagruzke.html#comments</comments>
		<pubDate>Tue, 20 Jan 2009 16:46:45 +0000</pubDate>
		<dc:creator>Mihalytch</dc:creator>
				<category><![CDATA[UNIX`o подобные]]></category>
		<category><![CDATA[fstab]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Mihalytch]]></category>
		<category><![CDATA[Mount]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/unix/mount-pri-zagruzke.html</guid>
		<description><![CDATA[Часто бывает при смене/добавлении новых носителей или иных случаях необходимо изменить/добавить порядок, параметры и (или) количество устройств монтируемых при загрузке. Все это мы можем сделать путем редактирования файла /etc/fstab. Толкование содержимого этого файла изложено далее. Файл /etc/fstab содержит информацию о файловых системах для команд mount(1M) и mountall(1M). Строки файла /etc/fstab содержат следующие поля: UUID - [...]]]></description>
			<content:encoded><![CDATA[<p>Часто бывает при смене/добавлении новых носителей или иных случаях необходимо изменить/добавить порядок, параметры и (или) количество устройств монтируемых при загрузке. Все это мы можем сделать путем редактирования файла <em>/etc/fstab</em>. Толкование содержимого этого файла изложено далее. <span id="more-72"></span>Файл <em>/etc/fstab</em> содержит информацию о файловых системах для команд <em>mount(1M)</em> и <em>mountall(1M)</em>. Строки файла <em>/etc/fstab</em> содержат следующие поля:</p>
<ol>
<li><em>UUID </em>- определяет устройство, которое должно быть примонтировано (идентификатор диска).</li>
<li>Каталог, в который монтируется файловая система.</li>
<li>Тип файловой системы (например: <em>vfat </em>- FAT32).</li>
<li>Опции, показывающие как эта файловая система будет обрабатываться. Например:
<ul>
<li>"<em>default</em>" - означает, что они монтируются автоматически, доступны для чтения и записи с асинхронным <em>I/O</em> (вводом/выводом);</li>
<li><em>-r</em> - монтировать с доступом только на чтение;</li>
<li><em>-d[r]</em> - удаленный ресурс.</li>
</ul>
</li>
<li>Флаги, относящиеся к файловой системе. Первая цифра, <em>0</em> или <em>1</em>, показывает, должна ли система копироваться при помощи команды <em>dump </em>(это нужно для системных резервных копий). Вторая цифра может быть <em>0</em>,<em> 1</em> или <em>2</em>, она показывает порядок, в котором файловая система должна быть проверена при загрузке.
<ul>
<li><em>0</em> - не должна проверяться вовсе;</li>
<li><em>1</em> - должна проверяться первой и использоваться как корневая (/);</li>
<li><em>2</em> - ставится для всех остальных систем.</li>
</ul>
</li>
</ol>
<p>Поля отделяются друг от друга пробелами. Строки, начинающиеся с символа #, являются комментариями. Пустые строки игнорируются.<br />
Пример строки:</p>
<pre class="brush: bash;">

# /dev/sda1 UUID=9877-489A    /media/sda1     vfat     defaults, utf8, umask=007, gid=46     0 0
</pre>
<p>Некоторые системы (Ubuntu например) в /etc/fstab вместо названий устройств (/dev/hda1, /dev/hda2, etc) используется UUID.<br />
Чтобы узнать UUID нашего нового hdd выполняем команду:</p>
<pre class="brush: bash;">
ls -l /dev/disk/by-uuid/
</pre>
<img src="http://mihalytch.org.ua/?ak_action=api_record_view&id=72&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/unix/mount-pri-zagruzke.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WP Super Cache &#8211; rewrite rules для nginx</title>
		<link>http://mihalytch.org.ua/administration/wpsupercache-rewrite-rules-for-nginx.html</link>
		<comments>http://mihalytch.org.ua/administration/wpsupercache-rewrite-rules-for-nginx.html#comments</comments>
		<pubDate>Fri, 28 Nov 2008 10:47:51 +0000</pubDate>
		<dc:creator>Mihalytch</dc:creator>
				<category><![CDATA[Администрирование]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Cookie]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Mihalytch]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[rewritecond]]></category>
		<category><![CDATA[UTF-8]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/administration/wpsupercache-rewrite-rules-for-nginx.html</guid>
		<description><![CDATA[Если вы решились прочитать это пост, значит вы решили перейти (или уже перешли, что вероятнее всего) с  apache на nginx. Движок вашего сайта WordPress, и необходимо использовать плагин "WP Super Cache". Текущая статья посвящена тому, как настроить rewrite rules под nginx. Super Cache после установки и активации попросит нас сделать .htaccess доступным для записи или записать в [...]]]></description>
			<content:encoded><![CDATA[<p><img style="float:left; margin:5px;" src="http://mihalytch.org.ua/wp-content/nginx.gif" alt="nginx" />Если вы решились прочитать это пост, значит вы решили перейти (или уже перешли, что вероятнее всего) с  apache на nginx. Движок вашего сайта WordPress, и необходимо использовать плагин "WP Super Cache". Текущая статья посвящена тому, как настроить rewrite rules под nginx.<span id="more-68"></span></p>
<p>Super Cache после установки и активации попросит нас сделать .htaccess доступным для записи или записать в него следующие правила:</p>
<pre class="brush: plain;">
# BEGIN WPSuperCache
&lt;IfModule mod_rewrite.c&gt;
RewriteEngine On
RewriteBase /
AddDefaultCharset UTF-8
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{QUERY_STRING} !.*=.*
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress|wp-postpass_).*$
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz -f
RewriteRule ^(.*) /wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz [L]
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{QUERY_STRING} !.*=.*
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress|wp-postpass_).*$
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html -f
RewriteRule ^(.*) /wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html [L]
&lt;/IfModule&gt;
# END WPSuperCache
</pre>
<p>Но проблема в том, что все эти правила, как и сам .htaccess, абсолютно бесполезны для nginx`a, так как все rewrite rules прописываются в nginx.conf.</p>
<p>Итак  открываем файл конфигурации nginx.conf, находим</p>
<pre class="brush: plain;">
location /путь/к/блогу/ {
...
}
</pre>
<p>"/путь/к/блогу/" - вот вместо этого, скорее всего, будет стоять просто "/"</p>
<p>и между фигурными скобочками вписываем ряд директив:</p>
<pre class="brush: plain;">
gzip_static on;
if (-f $request_filename) {
 break;
}  

set $supercache_file '';
set $supercache_uri $request_uri;  

if ($request_method = POST) {
 set $supercache_uri '';
}  

if ($query_string) {
 set $supercache_uri '';
}  

if ($http_cookie ~* &quot;comment_author_|wordpress|wp-postpass_&quot; ) {
 set $supercache_uri '';
}  

if ($supercache_uri ~ ^(.+)$) {
 set $supercache_file /blog/wp-content/cache/supercache/$http_host/$1index.html;
}  

if (-f $document_root$supercache_file) {
 rewrite ^(.*)$ $supercache_file break;
}  

if (!-e $request_filename) {
 rewrite . /blog/index.php last;
}
</pre>
<p>Сохраняем и перезапускаем сервер.</p>
<p>P.S. Если мы хотим пользоваться gzip компрессией, то необходимо будет перекомпилировать nginx с параметром "<em>–-with-http_gzip_static_module</em>".</p>
<img src="http://mihalytch.org.ua/?ak_action=api_record_view&id=68&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/administration/wpsupercache-rewrite-rules-for-nginx.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IBLC group</title>
		<link>http://mihalytch.org.ua/portfolio/iblc-group.html</link>
		<comments>http://mihalytch.org.ua/portfolio/iblc-group.html#comments</comments>
		<pubDate>Mon, 03 Nov 2008 15:47:05 +0000</pubDate>
		<dc:creator>Mihalytch</dc:creator>
				<category><![CDATA[Портфолио]]></category>
		<category><![CDATA[Mihalytch]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/portfolio/iblc-group.html</guid>
		<description><![CDATA[IBLC group Сайт-визитка IBLC Group - группа правового консалтинга в сфере международного бизнеса. Выполненая работа: Блочная резиновая верстка div`ами. Адрес сайта: http://www.iblc.in.ua/]]></description>
			<content:encoded><![CDATA[<table>
<tr>
<td><img src="http://mihalytch.org.ua/wp-content/iblc.gif" alt="IBLC group preview" /></td>
<td class="portfolio">
<h2><a href="http://mihalytch.org.ua/go.php?url=iblc.in.ua" target="_blank" title="IBLC group">IBLC group</a></h2>
<p><em>Сайт-визитка</em></p>
<p>IBLC Group - группа правового консалтинга в сфере международного бизнеса.</td>
</tr>
</table>
<p><span id="more-64"></span></p>
<p><em>Выполненая работа</em>: Блочная резиновая верстка div`ами.</p>
<p><em>Адрес сайта</em>: <a href="http://mihalytch.org.ua/go.php?url=iblc.in.ua" title="IBLC group" target="_blank">http://www.iblc.in.ua/ </a></p>
<p style="text-align: center"><img src="http://mihalytch.org.ua/wp-content/iblc1.gif" alt="IBLC group main page preview" /></p>
<img src="http://mihalytch.org.ua/?ak_action=api_record_view&id=64&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/portfolio/iblc-group.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Стилизированный раскрывающийся список (select в html)</title>
		<link>http://mihalytch.org.ua/programming/js/styled-drop-down-list.html</link>
		<comments>http://mihalytch.org.ua/programming/js/styled-drop-down-list.html#comments</comments>
		<pubDate>Wed, 10 Sep 2008 08:21:34 +0000</pubDate>
		<dc:creator>Mihalytch</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Mihalytch]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/programming/js/styled-drop-down-list.html</guid>
		<description><![CDATA[Ниже представлено решение на JavaScript и CSS, с помощью которого можно было бы изменить внешний вид любой части выпадающего списка. При этом соблюдена кроссбраузерность, а также решена проблема, возникающая в IE 6 при перекрытии DIV`ом выпадающего списка select, который оказывался видимым при любом значении z-index. Стилизация выпадающих списков основывается на замене стандартного элемента html &#60;select&#62;  на [...]]]></description>
			<content:encoded><![CDATA[<p>Ниже представлено решение на JavaScript и CSS, с помощью которого можно было бы изменить внешний вид любой части выпадающего списка. При этом соблюдена кроссбраузерность, а также решена проблема, возникающая в IE 6 при перекрытии DIV`ом выпадающего списка select, который оказывался видимым при любом значении z-index.<span id="more-58"></span></p>
<p>Стилизация выпадающих списков основывается на замене стандартного элемента html &lt;select&gt;  на маркированный список&lt;ul&gt;, оформленный с помощью CSS необходимым нам образом.</p>
<p>JavaScript перехватывает все события onClick на странице и проверяет не "нажал" ли пользователь на ту или иную область выпадающего списка. Если произошло необходимое событие, и необходимо раскрыть, свернуть или выбрать необходимый элемент, скрипт применяет к элементам маркированного списка соответствующие стили и изменяет выбранное значение исходного выпадающего списка &lt;select&gt; (который был скрыт при загрузке страницы).</p>
<p>Ниже привожу результат стилизации (взят с реального проекта):</p>
<p style="text-align: center"><img width="454" src="/wp-content/drop-down.gif" alt="styled-drop-down" height="306" /></p>
<p>Чтобы не загромождать страницу кодом размещаю<a target="_blank" href="/wp-content/styled-drop-down.zip" title="Styled drop-down"> ссылку на архив с рабочим примером</a>.</p>
<img src="http://mihalytch.org.ua/?ak_action=api_record_view&id=58&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/programming/js/styled-drop-down-list.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Время и дата в php</title>
		<link>http://mihalytch.org.ua/programming/php/date-and-time-in-php.html</link>
		<comments>http://mihalytch.org.ua/programming/php/date-and-time-in-php.html#comments</comments>
		<pubDate>Fri, 29 Aug 2008 14:36:48 +0000</pubDate>
		<dc:creator>Mihalytch</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[DATE]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Mihalytch]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/programming/php/date-and-time-in-php.html</guid>
		<description><![CDATA[Эта статья представляет собой собрание нескольких полезных советов по манипулированию датой и временем в PHP. Для начала разберемся с установкой временной зоны. Для этого всего лишь необходимо воспользоваться функцией bool date_default_timezone_set ( string $timezone_identifier); Список временных зон (параметров для вышеописанной функции) доступен на официальном сайте PHP. Итак, для того чтобы установить нужную нам временную зону, [...]]]></description>
			<content:encoded><![CDATA[<p>Эта статья представляет собой собрание нескольких полезных советов по манипулированию датой и временем в PHP.<span id="more-55"></span></p>
<p>Для начала разберемся с <strong>установкой временной зоны</strong>. Для этого всего лишь необходимо воспользоваться функцией</p>
<pre>bool <a target="_blank" href="/go.php?url=ua2.php.net/manual/en/function.date-default-timezone-set.php" title="date_default_timezone_set">date_default_timezone_set</a> ( string <tt>$timezone_identifier</tt>);</pre>
<p>Список временных зон (параметров для вышеописанной функции) доступен на <a target="_blank" href="http://www.php.net/manual/en/timezones.others.php" title="Список временных зон">официальном сайте PHP</a>. Итак, для того чтобы установить нужную нам временную зону, необходимо вызвать функцию date_default_timezone_set в начале исполняемого скрипта.</p>
<p>Для того чтобы определить текущую временную зону в PHP есть стандартный инструмент:</p>
<pre>string <a target="_blank" href="http://mihalytch.org.ua/go.php?url=ua2.php.net/manual/en/function.date-default-timezone-get.php" title="date_default_timezone_get">date_default_timezone_get</a>  ( void  );</pre>
<p>О <a target="_blank" href="http://mihalytch.org.ua/programming/php/comparison-of-dates.html" title="Сравнение дат в PHP">сравнении двух дат</a> я уже упоминал ранее. Далее рассмотрим<strong> вычитание и сложение даты и времени</strong> или <strong>как определить какая дата и время были N дней X часов назад!? </strong>:)</p>
<p>Года полтора назад встречал "интересное" решение. Некий разработчик загнал в массив соответствия "номер месяца"=&gt;"количество дней", затем парсил текущую дату и "вручную" отнимал или прибавлял количество дней, часов, минут, секунд.  Описывать подробно этот алгоритм не буду, так как не привык изобретать велосипед. Предлагаю "формулу" гораздо проще:</p>
<pre class="brush: php;">
# $sec - разница в секундах с текущим временем;
# $min - разница в минутах с текущим временем;
# $hour - разница в часах с текущим временем;
# $days - разница в днях с текущим временем;
$need_date = date (&quot;Y-m-d H:i:s&quot;, time()+( $sec + 60*($min + 60*($hour + 24*$day))));
</pre>
<p>Где "<em>Y-m-d H:i:s</em>" всего лишь шаблон времени, которое мы получим в текстовом формате.</p>
<p>Для тех, кто хочет узнать не будущее, а прошлое время - необходимо заменить вот этот плюс <em>... time()<font color="#ff0000">+</font>( $sec ...</em> на минус.</p>
<p>На этой оптимистической ноте заканчиваю описание. Остальные возможности PHP предлагаю рассмотреть самостоятельно на официальном сайте php.net в качестве домашнего задания.</p>
<img src="http://mihalytch.org.ua/?ak_action=api_record_view&id=55&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/programming/php/date-and-time-in-php.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Дослідження процесів управління несучим органом летучої пили</title>
		<link>http://mihalytch.org.ua/news/flying-saw.html</link>
		<comments>http://mihalytch.org.ua/news/flying-saw.html#comments</comments>
		<pubDate>Fri, 27 Jun 2008 21:39:28 +0000</pubDate>
		<dc:creator>Mihalytch</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[Mihalytch]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/news/flying-saw.html</guid>
		<description><![CDATA[Ви щойно ознайомились із темою моєї дипломної роботи. З нижче наведеною доповіддю я захистив дипломну роботу на відмінно, та отримав диплом другого ступеня на всеукраїнському конкурсі студентських наукових робіт зі спеціальності "Електромеханічні системи автоматизації та електропривод". Розглянемо роботу ЛП для розрізання гнутого профілю, яка застосовується в агрегатах безперервного профілювання. Летуча пила має у своєму складі [...]]]></description>
			<content:encoded><![CDATA[<p>Ви щойно ознайомились із темою моєї дипломної роботи. З нижче наведеною доповіддю я захистив дипломну роботу на відмінно, та отримав диплом другого ступеня на всеукраїнському конкурсі студентських наукових робіт зі спеціальності "Електромеханічні системи автоматизації та електропривод".<span id="more-36"></span></p>
<p>Розглянемо роботу ЛП для розрізання гнутого профілю, яка застосовується в агрегатах безперервного профілювання. Летуча пила має у своєму складі декілька виконавчих механізмів, серед яких важливе місце займає несучий орган. На ньому розташовані інші механізми, що безпосередньо виконують операції порізу.</p>
<p>Дана робота присвячена розробці математичної моделі системи управління НО ЛП, за допомогою якої досліджуються показаний) і механізм зчеплення (МС) із приводом  Приводи МП та МС зазвичай пневматичні або гідравлічні. Обертання різального інструменту  виконується механізмом обертання (МВ) із приводом М (електродвигун). Зворотно-поступальний рух НО забезпечується електроприводом через редуктор та шестерінчасто-рійкову передачу.</p>
<p>Розглянемо робочий цикл летучої пили. Летуча пила (ЛП) працює в циклічному режимі. Робочий цикл складається з п’яти етапів. Приведемо опис цих етапів:</p>
<ol>
<li> Початок циклу, перехід НО з вихідного в початковий стан, підготовка до запуску НО.</li>
<li> Формування цілевказування, очікування команди на запуск НО.</li>
<li> Запуск НО, відпрацьовування приводом НО цілевказування на переслідування перетину різання й синхронізацію НО з перетином різання на профілі.</li>
<li> Продовження руху НО в напрямку переміщення перетину різання, виконання різання. Під час даного етапу НО рухається синхронно з перетином різання. Виконавчі механізми, розміщені на НО, виконують необхідні технологічні операції по розрізанню профілю.</li>
<li> Установка НО у вихідне положення, перехід ЛП у вихідний стан.</li>
</ol>
<p>Моменти вмикання-вимикання привода МВ пильного диска визначаються за різними чинниками. Важливо лише, щоб до початку його подачі й до відводу у вихідне положення він обертався.</p>
<p>З метою дослідження процесів управління електроприводу НО ЛП за допомогою підсистеми Simulink пакета Matlab створена відповідна математична модель. Вона містить у своєму складі підсистеми. Модель електроприводу несучого органу летучої пили. Підсистема контролеру, що моделює систему керування електроприводом НО ЛП. Підсистема, що моделює пружний зв’язок між ЛП та оброблюваним виробом. Також модель містить систему, що моделює привод ОІ і лічильника витрат енергії.</p>
<p><strong>Підсистема електроприводу НО ЛП</strong>. Дана підсистема містить модель електроприводу НО ЛП , що побудований на базі двигуна постійного струму та тиристорного перетворювача. Вхідними параметрами для даної моделі є завдання швидкості, току та сигнал, що вказує за датчику інтенсивності (ЗІ) по якому параметру проводити керування приводом (за швидкістю чи моментом). Значення вище описаних параметрів розраховуються в підсистемі контролера. Момент (одається до входу моделі електроприводу з виходу підсистеми пружного зв’язку. Дана модель містить підсистему контуру регулювання току.</p>
<p>При побудові системи керування електроприводом НО ЛП використано <em>задатчик інтенсивності другого порядку</em>. Саме цей спосіб дозволяє позбавитися спотворення вхідного сигналу завдання току та можливості втрати керованості по моменту при переключенні між режимами завдання скорості та моменту.</p>
<p>З результатів моделювання можна зробити висновок, що в режимі керування швидкістю вказана різниця дорівнює нулю, тобто сигнали до та після ЗІм співпадають і система регулювання швидкості залишається лінійною. Це відбувається завдяки тому, що система відпрацьовує завдання швидкості, сформоване ЗІ другого порядку. Таким чином в завданні вже обмежена друга похідна швидкості і, відповідно, сигнал з регулятора швидкості проходить через ЗІм без зміни. При переключенні на режим регулювання моменту завдання моменту стрибком змінюється, і тому ЗІм вступає в дію і обмежує швидкість його зміни до заданої величини ривка.</p>
<p>Модель побудована з урахуванням тертя. Для цього блок, що моделює механічну частино електроприводу охоплено зворотнім зв’язком із блоком «Coulomb and Viscous Friction». Даний блок моделює ефект сухого та в’язкого тертя та реалізує нелінійну характеристику.</p>
<p><strong>Підсистема контролеру НО ЛП</strong>. В підсистемі контролеру розраховується завдання швидкості, моменту, сигнал переключення керування по наведеним вище сигналам та поточне положення несучого органу ЛП.</p>
<p>До системи входить<strong> блок управління StateFlow</strong>. Вона складається з трьох основних блоків, що визначають стани, у яких знаходиться система:</p>
<ul>
<li> NO – діаграма, що реалізує послідовність етапів робочого циклу НО ЛП;</li>
<li> OI –  діаграма послідовності станів ОІ;</li>
<li> IM_MS_MP – діаграма роботи виконавчих механізмів, що розташовані на НО.</li>
</ul>
<p>Блок перемикання режимів роботи електроприводу несучого органу летучої пили побудований на базі логічних елементів та перемикачів. Вихідні значення даного блоку: завдання по току (моменту) та параметр що вказує на поточний режим роботи приводу НО ЛП.</p>
<p><strong>Підсистеми зв’язку приводів НО та ОІ</strong>. Вона моделює процеси зв’язку, що проходять між несучим органом та оброблюваним виробом на четвертому етапі робочого циклу. Вхідними параметрами даного блоку є швидкість оброблюваного виробу, швидкість несучого органу ЛП та сигнал, що приймає значення «1» на 4 етапі робочого циклу ЛП. Вихідний параметр – пружній момент зв’язку між приводом НО ЛП та приводом ОІ.</p>
<p><strong>Підсистема приводу ОІ</strong> реалізує фізичні процеси, що протікають в електроприводі ОІ та систему керування приводом ОІ. Вхідними параметрами даного блоку є швидкість оброблюваного виробу та пружній момент зв’язку між НО ЛП та ОІ, вихідний параметр швидкість обертання валу двигуна приводу ОІ.</p>
<p><strong>Результати моделювання</strong>. Отримана за допомогою побудованої моделі циклограма декількох робочих циклів летучої пили. З неї можна зробити висновок, що побудована нами модель достатньо повно відображує процеси зв’язані з ЛП протягом всіх етапів робочого циклу летучої пили. Також ми маємо можливість моделювати послідовність робочих циклів ЛП.</p>
<p>З графіків швидкостей руху несучого органу та оброблюваного виробу на четвертому етапі робочого циклу летучої пили можна зробити висновок, що дана модель дає можливість аналізувати вплив моменту зв’язку між несучим органом ЛП та ОІ на процеси, пов’язані з ЛП протягом четвертого етапу робочого циклу летучої пили. А також ми маємо можливість передбачити пошкодження оброблюваного виробу та вихід з ладу виконавчих механізмів летучої пили.</p>
<p>Таким чином, модель достатньо повно відображує процеси зв’язані з ЛП протягом всіх етапів робочого циклу летучої пили.</p>
<img src="http://mihalytch.org.ua/?ak_action=api_record_view&id=36&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/news/flying-saw.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Графический checkbox с помошью JavaScript</title>
		<link>http://mihalytch.org.ua/programming/js/graph-checkbox-javascript.html</link>
		<comments>http://mihalytch.org.ua/programming/js/graph-checkbox-javascript.html#comments</comments>
		<pubDate>Mon, 23 Jun 2008 16:05:34 +0000</pubDate>
		<dc:creator>Mihalytch</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Mihalytch]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/programming/js/graph-checkbox.html</guid>
		<description><![CDATA[Работая над последним проектом, возникла надобность изменить вид элементов формы: checkbox и select. Так как велосипед изобретать мне не свойственно, я решил почитать немного умных мыслей, посоветоваться с духами в он-лайне. Потратив пару часов своего времени, я нашел следущее решение. Для начала качаем скрипты: mootools, demo-moo Затем пишем в таблице стилей следующий код, отвечающий за [...]]]></description>
			<content:encoded><![CDATA[<p>Работая над последним проектом, возникла надобность изменить вид элементов формы: checkbox и select. Так как велосипед изобретать мне не свойственно, я решил почитать немного умных мыслей, посоветоваться с духами в он-лайне. Потратив пару часов своего времени, я нашел следущее решение.<span id="more-32"></span> Для начала качаем скрипты: <a title="demo-moo" href="http://mihalytch.org.ua/wp-content/mootools.js">mootools</a>, <a title="demo-moo" href="http://mihalytch.org.ua/wp-content/demo-moo.js">demo-moo</a></p>
<p>Затем пишем в таблице стилей следующий код, отвечающий за оформление чекбоксов:</p>
<pre class="brush: css;">
.f_checkbox {
background-repeat:no-repeat;
background-position:0px center;
height:16px;display:block;
cursor:pointer;
cursor:hand;
width:20px;
height:20px;
}

.checked,.selected{
color:#ddd;
}

.f_checkbox{
padding:0px;
background-color:#ccc;
}

.unchecked{
background-image:url('img/checkbox_off.gif');
}

.checked{
background-image:url('img/checkbox_on.gif');
}
</pre>
<p>В коде страницы делаем следующую запись:</p>
<pre class="brush: xml;">
&lt;!-- один из оформляемых чекбоксов --&gt;
&lt;label class=&quot;f_checkbox&quot;&gt;&lt;input type=&quot;checkbox&quot; /&gt;&lt;/label&gt;;
&lt;!-- подключаем скачанные java-скрипты --&gt;
&lt;script type='text/javascript' src='mootools.js'&gt;&lt;/script&gt;
&lt;script type='text/javascript' src='demo-moo.js'&gt;&lt;/script&gt;;
</pre>
<p>checkbox_on.gif и checkbox_off.gif изображения выбранного и не выбранного checkbox`а.</p>
<p>Теперь остается только экспериментировать =)</p>
<img src="http://mihalytch.org.ua/?ak_action=api_record_view&id=32&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/programming/js/graph-checkbox-javascript.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Безопасность и cookie</title>
		<link>http://mihalytch.org.ua/programming/php/safety-and-cookie.html</link>
		<comments>http://mihalytch.org.ua/programming/php/safety-and-cookie.html#comments</comments>
		<pubDate>Thu, 20 Mar 2008 17:14:59 +0000</pubDate>
		<dc:creator>Mihalytch</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Cookie]]></category>
		<category><![CDATA[Mihalytch]]></category>
		<category><![CDATA[безопасность]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/programming/php/bezopasnost-i-cookie.html</guid>
		<description><![CDATA[Зачастую в cookie хранятся конфиденциальные данные. Соответственно, разработчик должен позаботиться о том, чтобы злоумышленники не получили доступ к данной информации. Известно 4 метода защиты данных, хранимых в cookie: отправка cookie по ssl соединению; шифрование cookie; установка области видимости; ограничение доступа для доменов. При комплексном использовании всех 4-х методов защиты информации, хранимой в cookie, данные будут [...]]]></description>
			<content:encoded><![CDATA[<p>Зачастую в cookie хранятся конфиденциальные данные. Соответственно, разработчик должен позаботиться о том, чтобы злоумышленники не получили доступ к данной информации.</p>
<p><span id="more-23"></span>Известно 4 метода защиты данных, хранимых в cookie:</p>
<ol>
<li>отправка cookie по ssl соединению;</li>
<li>шифрование cookie;</li>
<li>установка области видимости;</li>
<li>ограничение доступа для доменов.</li>
</ol>
<p>При комплексном использовании всех 4-х методов защиты информации, хранимой в cookie, данные будут наиболее защищены.</p>
<p>Перейдем к рассмотрению практической реализации вышеперечисленных методов.</p>
<h3>Отправка cookie по ssl соединению</h3>
<p>Проще говоря, следует разрешить отправку  cookie только по защищенным HTTP запросам. В данном случае значительно затрудняется перехват данных, при передаче между клиентом и сервером.</p>
<p>На практике все выглядит гораздо проще. Нам достаточно задать 6-му параметру функции setcookie  значение "1".</p>
<h3>Шифрование cookie</h3>
<p>В этом случае известно множество методов шифрования cookie. Рассмотрим на примере один из них.</p>
<p>Сначала следует создать декодировщик. Назовем его  decrupt_cookie.php:</p>
<pre class="brush: php;">
    $cursor = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_CAST_256,MCRYPT_MODE_CFB), MCRYPT_RAND);
        # Ключ
    $s_key = &quot;sdfsd98k98sdfsdf944775df&quot;;
    $decrypt_name = mcrypt_ decrypt(MCRYPT_CAST_256,$s_key,$username, MCRYPT_MODE_CFB,$cursor);

    echo $decrypt_name;
</pre>
<p>Далее представлен сам код шифрования  cookie:</p>
<pre class="brush: php;">
    $cursor = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_CAST_256,MCRYPT_MODE_CFB), MCRYPT_RAND);
    $s_key = &quot;sdfsd98k98sdfsdf944775df&quot;;
    $cook_name = &quot;cookie1&quot;;
    $cipher = mcrypt_encrypt(MCRYPT_CAST_256,$s_key,$cook_name, MCRYPT_MODE_CFB,$cursor);
    setcookie(&quot;username&quot;, $cipher, &quot;/decrypt_cookie.php&quot;);
</pre>
<h3>Установка области видимости</h3>
<p>Ограничить область "видимости" cookie можно как для отдельного каталога, так и для конкретной страницы. Поскольку cookie доступны для всех каталогов, начиная от корневого.</p>
<p>Область видимости cookie задается в 3-м параметре функции setcookie.</p>
<p>Например:</p>
<ul>
<li>cookie доступны только для определенного каталога и его подкаталогов:
<pre class="brush: php;">setcookie(&quot;cookiename&quot;, $cooki_value, '/folder_1/');</pre>
</li>
<li> cookie доступны только для определенной страницы:
<pre class="brush: php;">setcookie(&quot;cookiename&quot;, $cooki_value, '/folder_1/page.php');</pre>
</li>
</ul>
<h3>Ограничение доступа для доменов</h3>
<p>Доступ от определенных доменов к информации, хранимой в cookie, также следует ограничить, так как в одном из способов взлома пользовательских аккаунтов используется чтение всех cookie пользователя. Потом нужные cookie подменяют и получают доступ к конфиденциальной информации...</p>
<p>Для того чтобы ограничить доступ к cookie для одного домена или их списка существует 4-й параметр.</p>
<pre class="brush: php;">setcookie(&quot;cookiename&quot;, $cooki_value, '/folder_1/page.php', 'mihalytch.org.ua');</pre>
<img src="http://mihalytch.org.ua/?ak_action=api_record_view&id=23&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/programming/php/safety-and-cookie.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Введение в ООП</title>
		<link>http://mihalytch.org.ua/programming/php/introduction-in-oop.html</link>
		<comments>http://mihalytch.org.ua/programming/php/introduction-in-oop.html#comments</comments>
		<pubDate>Sat, 01 Mar 2008 18:14:23 +0000</pubDate>
		<dc:creator>Mihalytch</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Mihalytch]]></category>
		<category><![CDATA[класс]]></category>
		<category><![CDATA[ООП]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/programming/php/%d0%b2%d0%b2%d0%b5%d0%b4%d0%b5%d0%bd%d0%b8%d0%b5-%d0%b2-%d0%be%d0%be%d0%bf.html</guid>
		<description><![CDATA[В ООП (объектно-ориентированном программировании) функции и данные, которыми манипулируют функции, связаны в объекты. Атрибуты (attributes) или свойства (properties) - данные. Методы (methods) - функции для обработки вышеупомянутых данных. Объект определяется классом, экземпляром которого он является. Класс определяет методы и атрибуты объекта. Путем создания экземпляра класса создается новый объект, инициализируются все его методы и атрибуты, а [...]]]></description>
			<content:encoded><![CDATA[<p>В <strong>ООП</strong> <em><strong>(объектно-ориентированном программировании)</strong></em> функции и данные, которыми манипулируют функции, связаны в объекты.</p>
<p><strong>Атрибуты (<em>attributes</em>)</strong> или <strong>свойства (<em>properties</em>)</strong> - данные.<br />
<strong>Методы (<em>methods</em>)</strong> - функции для обработки вышеупомянутых данных.<br />
<span id="more-17"></span><br />
Объект определяется классом, экземпляром которого он является. Класс определяет методы и атрибуты объекта. Путем создания экземпляра класса создается новый объект, инициализируются все его методы и атрибуты, а также вызывается конструктор (constructor).</p>
<p><strong>Конструктор (<em>constructor</em>)</strong> - функция, которая выполняет какие-либо начальные действия. В PHP 5 конструктор должен называться - <em>__construct ()</em>.</p>
<p>Далее приведен пример простого класса <em>TestClass</em>, создание и инициализация его объекта и вызов одного метода.</p>
<pre>&lt;?php</pre>
<pre>class TestClass {</pre>
<pre>	public $name;</pre>
<pre>	public $age;</pre>
<pre></pre>
<pre>	function __construct ($name, $age)  {</pre>
<pre> 		$this-&gt;name = $name;</pre>
<pre>		$this-&gt;age = $age;</pre>
<pre>	}</pre>
<pre></pre>
<pre>	function print_message ()  {</pre>
<pre>		$msg_text = "Привет, ".$this-&gt;name."!&lt;br /&gt;";</pre>
<pre>		$msg_text .= "Вам: ".$this-&gt;age" лет.";</pre>
<pre> 		return</pre>
<pre>	}</pre>
<pre>}</pre>
<pre></pre>
<pre>$new_class = TestClass ('Вася Пупкин', 29);</pre>
<pre>echo $new_class-&gt;print_message ();</pre>
<pre>?&gt;</pre>
<p>Результат выполнения кода приведенного выше:</p>
<pre>Привет, Вася Пупкин!</pre>
<pre>Вам: 29 лет.</pre>
<p>В данном примере конструктор инициализирует 2 атрибута: имя и возраст. Метод возвращает текст сообщения.</p>
<p><em>$this</em> - это псевдопеременная, которая автоматически создается во всех методах класса и представляет объект (в данном случае класса <em>TestClass)</em>. Для доступа к свойствам или методам класса используют оператор <em>-&gt;</em>.</p>
<p>Ниже приведены свойства, которыми обладают объкты:</p>
<p><a href="http://mihalytch.org.ua/programming/php/inheritance-in-oop.html"><strong>Наследование (<em>inheritance</em>)</strong></a> - способность порождать из существующих классов новые, наследовать или переопределять их свойства и методы.</p>
<p><strong>Инкапсуляция (<em>encapsulation</em>)</strong> - способность скрывать данные от пользователей класса.</p>
<p><strong>Полиморфизм (<em>polymorphism</em>) </strong>- когда несколько классов реализуют одни и те же внешние методы. И есть возможность их попеременного использования в функциях.</p>
<p><strong>Специальные методы (<em>special methods</em>)</strong> - это свойство указывает на то, что классы имеют событийные обратные вызовы, которые выполняются при возникновении распространенных событий. Например: при создании, копировании, уничтожении и т.д.</p>
<p>Подробное описание вышеперечисленных свойств будет приведено в следующих статьях.</p>
<img src="http://mihalytch.org.ua/?ak_action=api_record_view&id=17&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/programming/php/introduction-in-oop.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
