<?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</title>
	<atom:link href="http://mihalytch.org.ua/feed" rel="self" type="application/rss+xml" />
	<link>http://mihalytch.org.ua</link>
	<description>Все о высоких технологиях</description>
	<lastBuildDate>Tue, 23 Feb 2010 12:22:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<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>С днем рождения jQuery или релиз версии 1.4</title>
		<link>http://mihalytch.org.ua/programming/js/jquery/jquery-1-4-release.html</link>
		<comments>http://mihalytch.org.ua/programming/js/jquery/jquery-1-4-release.html#comments</comments>
		<pubDate>Thu, 14 Jan 2010 14:37:54 +0000</pubDate>
		<dc:creator>Mihalytch</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/?p=241</guid>
		<description><![CDATA[ Сегодня очередная годовщина jQuery. Разработчики jQuery решили приурочить к четвертому дню рождения этой замечательной библиотеки релиз новой версии 1.4. 
В честь этого двойного праздника был открыт сайт 14 Days of jQuery, на котором в течении 14 дней будет анонсирована новая версия библиотеки.

Скачать последнюю версию библиотеки вы можете здесь - jQuery 1.4. Следить за последними [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/img/jquery_avatar.png" class="post-thumb-left" /> Сегодня очередная годовщина jQuery. Разработчики jQuery решили приурочить к четвертому дню рождения этой замечательной библиотеки релиз новой версии 1.4. </p>
<p>В честь этого двойного праздника был открыт сайт <a href="/go/http://jquery14.com/"  target="_blank">14 Days of jQuery</a>, на котором в течении 14 дней будет анонсирована новая версия библиотеки.<br />
<span id="more-241"></span><br />
Скачать последнюю версию библиотеки вы можете здесь - <a href="/go/http://code.jquery.com/jquery-1.4.js" target="_blank">jQuery 1.4</a>. Следить за последними анонсами можно через <a target="_blank" href="/go/http://twitter.com/jquery">Твиттер</a> или подписавшись на <a target="_blank" href="/go/http://feeds.feedburner.com/The14DaysOfJquery">RSS рассылку</a>.</p>
<p>Уже доступны <a href="/go/http://futurecolors.ru/jquery/" target="_blank">онлайн</a> и <a href="/go/http://futurecolors.ru/jquery/jquery.cheatsheet.1.4.pdf" target="_blank">PDF версия для печати</a> шпаргалки для текущей версии jQuery 1.4. Также известно, что обновлен дизайн и структура <a href="/go/http://api.jquery.com/" target="_blank">jQuery API</a>.</p>
<img src="http://mihalytch.org.ua/?ak_action=api_record_view&id=241&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/programming/js/jquery/jquery-1-4-release.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как отключить замену кавычек в WordPress</title>
		<link>http://mihalytch.org.ua/wordpress/otkluchit-zamenu-kavychek-v-wp.html</link>
		<comments>http://mihalytch.org.ua/wordpress/otkluchit-zamenu-kavychek-v-wp.html#comments</comments>
		<pubDate>Mon, 11 Jan 2010 19:29:33 +0000</pubDate>
		<dc:creator>Mihalytch</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/?p=231</guid>
		<description><![CDATA[ WordPress заменяет, например, двойные кавычки "текст" на «текст». С одинарными кавычками таже история. В принципе, они выглядят более привлекательно, но лишь до того момента, как дело касается постинга кода на нашем блоге.
Чтобы отключить замену кавычек в файл functions.php, который находится в папке вашей текущей темы, нужно вставить следующий код:

if ( function_exists('remove_filter') ) {
  [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/img/quot.jpg" class="post-thumb-left" /> WordPress заменяет, например, двойные кавычки "текст" на «текст». С одинарными кавычками таже история. В принципе, они выглядят более привлекательно, но лишь до того момента, как дело касается постинга кода на нашем блоге.</p>
<p>Чтобы отключить замену кавычек в файл functions.php, который находится в папке вашей текущей темы, нужно вставить следующий код:</p>
<pre class="brush: php;">
if ( function_exists('remove_filter') ) {
    # Отключим замену кавычек в тексте записей и страниц
    remove_filter('the_content', 'wptexturize');
    # Отключим замену кавычек в заголовках записей и страниц
    remove_filter('the_title', 'wptexturize');
    # Отключим замену кавычек в тексте комментариев
    remove_filter('comment_text', 'wptexturize');
}</pre>
<p>Также вы можете установить плагин, выполняющий аналогичную задачу, например, <a href="/go/http://wordpress.org/extend/plugins/sem-unfancy-quote/" target="_blank">Unfancy Quote</a>.</p>
<img src="http://mihalytch.org.ua/?ak_action=api_record_view&id=231&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/wordpress/otkluchit-zamenu-kavychek-v-wp.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Мониторинг серверов. Часть 1. Или &#171;настраиваем MonIT&#187;</title>
		<link>http://mihalytch.org.ua/administration/monitoring-serverov-1.html</link>
		<comments>http://mihalytch.org.ua/administration/monitoring-serverov-1.html#comments</comments>
		<pubDate>Wed, 02 Sep 2009 10:59:14 +0000</pubDate>
		<dc:creator>Mihalytch</dc:creator>
				<category><![CDATA[Администрирование]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/?p=197</guid>
		<description><![CDATA[Рано или поздно в жизни админа возникает потребность в мониторинге своих серверов. Сегодня разберем простой случай. У нас есть один выделенный/виртуальный сервер на базе LINUX. На нем установлены web-сервер, ftp-сервер, MySQL, PHP, почтовый сервер и тому подобные.
Что мы далее будем вкладывать в понятие мониторинга нашего сервера?

 мониторинг самой системы (состояние процессора, памяти...);
 мониторинг состояния сервисов [...]]]></description>
			<content:encoded><![CDATA[<p>Рано или поздно в жизни админа возникает потребность в мониторинге своих серверов. Сегодня разберем простой случай. У нас есть один выделенный/виртуальный сервер на базе LINUX. На нем установлены web-сервер, ftp-сервер, MySQL, PHP, почтовый сервер и тому подобные.</p>
<p>Что мы далее будем вкладывать в понятие мониторинга нашего сервера?</p>
<ul>
<li> мониторинг самой системы (состояние процессора, памяти...);</li>
<li> мониторинг состояния сервисов (запущен или нет);</li>
<li> мониторинг функционирования сервисов (отвечает ли корректно на запросы)</li>
<li> осуществлять контроль потребляемых сервисами ресурсами системы</li>
<li> уведомление по email и выполнение заданных действий по восстановлению работоспособности системы.</li>
</ul>
<p><span id="more-197"></span><br />
Было рассмотрено несколько систем мониторинга. Одни оказались перегружены функционалом либо платными. В итоге оптимальным вариантом был выбран Monit.<br />
<a href="http://mihalytch.org.ua/go/http://mmonit.com/monit/" target="_blank">Monit</a> - бесплатное приложение с открытым исходным кодом, предназначенное для комплексного мониторинга UNIX'о подобных систем. Полностью удовлетворяет нашим требованиям, а также при использовании в паре с <a href="http://mihalytch.org.ua/go/http://mmonit.com/" target="_blank">M/Monit</a> дает возможность использовать графический интерфейс для мониторинга нескольких серверов при помощи графического интерфейса. К сожалению программа платная, но на сайте есть и Free версия с некоторыми ограничениями функционала.</p>
<p>О мониторинге нескольких серверов и использовании графического интерфейса мы поговорим в следующей статье, а сейчас перейдем к установке и настройке Monit.</p>
<p>Для начала скачаем с официального сайта исходники monit, распакуем и сконфигурируем их:</p>
<pre class="brush: bash;">
# mkdir ~/distr
# cd ~/distr
# wget http://mmonit.com/monit/dist/monit-5.0.3.tar.gz
# tar -xvf monit-5.0.3.tar.gz
# cd monit-5.0.3
# ./configure
</pre>
<p>Весь недостающий софт, который может быть затребован на данном этапе, можно установить с репозитория с помощью apt-get, yum или портов в FreeBSD. Затем выполним установку monit:</p>
<pre class="brush: bash;">
# make
# make install
</pre>
<p>Теперь необходимо настроить и запустить сервис. Создадим основной файл конфигурации /usr/local/etc/monitrc и поместим туда строку</p>
<pre class="brush: bash;">
include /usr/local/etc/monitrc.d/*
</pre>
<p>подключающую дополнительные файлы настроек, которые будут находиться, соответственно, в папке /usr/local/etc/monitrc.d/</p>
<p>Теперь создадим файл конфигурации /usr/local/etc/monitrc.d/main.conf, в котором опишем слежение за основными параметрами системы:</p>
<p>set daemon 120 # Частота проверки сервисов.<br />
set logfile syslog facility log_daemon # Syslogd facility.<br />
set mailserver localhost, # Хост почтового сервера, через который пойдут уведомления.<br />
set eventqueue # Разрешить очередь уведомлений.<br />
basedir /var/log/monit.log # путь к каталогу, где будут храниться уведомления.<br />
slots 100 # Максимальное количество уведомлений в очереди.</p>
<p>set mail-format { from: admin@MYSERVER.EXAMPLE.COM } # От какого имени рассылать уведомления.<br />
set alert admin@same-mail.com # Email для всех уведомлений<br />
set alert admin@same-mail.com { timeout } # Email для критических уведомлений (падение сервера\демонов).</p>
<p>check system MYSERVER.EXAMPLE.COM # Хост сервера.<br />
if loadavg (1min) &gt; 6 then alert<br />
if loadavg (5min) &gt; 3 then alert<br />
if memory usage &gt; 75% then alert<br />
if cpu usage (user) &gt; 70% then alert<br />
if cpu usage (system) &gt; 50% then alert<br />
if cpu usage (wait) &gt; 40% then alert</p>
<p>Сохраним, затем нужно установить на файлы конфигурации права 0700 (по крайней мере у меня monit потребовал выставить именно такие права доступа). Теперь, чтобы запустить сервис, достаточно выполнить команду:</p>
<pre class="brush: bash;">monit</pre>
<p>Более подробно прочитать о синтаксисе и ознакомиться с примерами настроек для контроля и мониторинга состояния необходимых нам процессов можно на <a href="http://mihalytch.org.ua/go/http://mmonit.com/monit/documentation/monit.html#the_run_control_file" target="_blank">официальном сайте</a>. В следующей статье из этого цикла будет рассмотрен мониторинг нескольких серверов с помощью графического интерфейса.</p>
<img src="http://mihalytch.org.ua/?ak_action=api_record_view&id=197&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/administration/monitoring-serverov-1.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SysAdmin Day!</title>
		<link>http://mihalytch.org.ua/news/sysadmin-day.html</link>
		<comments>http://mihalytch.org.ua/news/sysadmin-day.html#comments</comments>
		<pubDate>Fri, 31 Jul 2009 07:31:43 +0000</pubDate>
		<dc:creator>Mihalytch</dc:creator>
				<category><![CDATA[Новости]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/?p=192</guid>
		<description><![CDATA[В эту последнюю пятницу Июля поздравляю всех бойцов "невидимого фронта" из касты сисадминов.
Прямых рук пользователям, софта без глюков и море пива!
]]></description>
			<content:encoded><![CDATA[<p>В эту последнюю пятницу Июля поздравляю всех бойцов "невидимого фронта" из касты сисадминов.<br />
Прямых рук пользователям, софта без глюков и море пива!</p>
<img src="http://mihalytch.org.ua/?ak_action=api_record_view&id=192&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/news/sysadmin-day.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Бегущая строка на JavaScript своими руками</title>
		<link>http://mihalytch.org.ua/programming/js/begushhaya-stroka-na-javascript-svoimi-rukami.html</link>
		<comments>http://mihalytch.org.ua/programming/js/begushhaya-stroka-na-javascript-svoimi-rukami.html#comments</comments>
		<pubDate>Tue, 28 Jul 2009 09:38:59 +0000</pubDate>
		<dc:creator>Mihalytch</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Mihalytch]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/?p=177</guid>
		<description><![CDATA[Сегодня речь пойдет о создании простого скрипта для имитации эффекта бегущей строки. Для начала, придумаем, как это будет работать. По идее должен быть внешний контейнер, который определит размеры блока бегущей строки и ее положение в пространстве на странице, назовем его marquee_container. Также должен существовать блок, содержащий "бегущий" текст, наречем его - marquee_text.
Теперь должно быть все [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня речь пойдет о создании простого скрипта для имитации эффекта бегущей строки. Для начала, придумаем, как это будет работать. По идее должен быть внешний контейнер, который определит размеры блока бегущей строки и ее положение <span style="text-decoration: line-through;">в пространстве</span> на странице, назовем его <em>marquee_container</em>. Также должен существовать блок, содержащий "бегущий" текст, наречем его - <em>marquee_text</em>.</p>
<p>Теперь должно быть все просто, мы задаем родительскому блоку фиксированную ширину, position: relative (для того, чтобы мы могли абсолютно позиционировать блок с текстом относительно текущего), overflow: hidden (для того, чтобы "бегущий" текст скрывался за границами родительского блока). Далее пишем скрипт, который отодвигает текст вправо на ширину родительского блока (теперь он не видим) и потом перемещает его влево с заданной скоростью, пока текст не скроется полностью. И повторяем это действие снова и снова =).<span id="more-177"></span><br />
Для того, чтобы рассчитать момент, когда текст полностью скроется за левой границей, нам  нужно узнать настоящую ширину блока с текстом. Если наш текстовый блок будет содержаться  в <em>marquee_container</em> с заданной шириной, скрипт нам покажет ширину не больше нами заданной. Поэтому нам нужен еще один блок (<em>marquee_subcontainer</em>). Зададим ему ширину width:9999999px, и поместим в него текстовый блок. Теперь проблема с определением ширины решена.</p>
<p>Составим HTML код бегущей строки:</p>
<pre class="brush: xml;">
&lt;div class=&quot;marquee-container&quot; id=&quot;marquee_container&quot;&gt;
&lt;div class=&quot;marquee-subcontainer&quot; id=&quot;marquee_subcontainer&quot;&gt;
&lt;div class=&quot;marquee-text&quot; id=&quot;marquee_text&quot;&gt;
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</pre>
<p>Теперь составим таблицу CSS стилей в соответствии с нашими рассуждениями:</p>
<pre class="brush: css;">
.marquee-container {
border-right:1px dotted #d8cfc2;
height:30px;
width:200px;
overflow: hidden;
border:2px solid #f00;
margin:0px auto;
}

.marquee-subcontainer {
position: relative;
width:9999999px;
height:30px;
margin:0px;
}

.marquee-text {
position: absolute;
margin: 0px;
top:0px;
left:0px;
height:30px;
font: bold 16px Arial Georgia;
color:#000;
}
</pre>
<p>Когда все предварительные приготовления сделали, можно приступить к написанию JS кода.</p>
<pre class="brush: jscript;">
// текущий сдвиг текста относительно левой границы блока бегущей строки
var craw_line_offset;

// функция инициализации бегущей строки
function enableCrawLine () {
craw_line_offset = 0;

// ширина текстового блока
var craw_line_width = document.getElementById('marquee_text').offsetWidth;

moveCrawLine (craw_line_width);
}

// функция пошагового сдвига
function moveCrawLine (w) {
var lefttime;
var container_width = document.getElementById('marquee_container').offsetWidth;
// шаг (в пикселях), с которым будем перемещать текст
var step = 1;
// задержка между перемещениями на step пикселей
var tdelay = 50;

// ширина текстового блока
w = parseInt(w);
// если блок не &quot;заехал&quot; за левую границу
if (craw_line_offset&lt;(w+container_width)) {
// сдвигаем блок на шаг влево
craw_line_offset = craw_line_offset + step;
} else {
// иначе начинаем все с начала
craw_line_offset = 0;
}

// изменяем позицию текстового блока
document.getElementById('marquee_text').style.left = parseInt(container_width-craw_line_offset)+'px';

// рекурсивно вызываем функцию сдвига с заданной задержкой
setTimeout('moveCrawLine ('+w+');', tdelay);
}

// вызов инициализирующей функции
enableCrawLine ();
</pre>
<p>Теперь можем ознакомиться с <a href="http://mihalytch.org.ua/example/marquee-javascript.html">рабочим примером</a>.</p>
<img src="http://mihalytch.org.ua/?ak_action=api_record_view&id=177&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/programming/js/begushhaya-stroka-na-javascript-svoimi-rukami.html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Знакомство с Google Maps API. Часть #2</title>
		<link>http://mihalytch.org.ua/programming/js/znakomstvo-s-google-maps-api-2.html</link>
		<comments>http://mihalytch.org.ua/programming/js/znakomstvo-s-google-maps-api-2.html#comments</comments>
		<pubDate>Fri, 24 Apr 2009 16:21:23 +0000</pubDate>
		<dc:creator>Mihalytch</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/?p=166</guid>
		<description><![CDATA[Как я и обещал в первой части Знакомства с Google Maps API этого цикла, мы сейчас познакомимся с обработкой событий, добавлением/управлением объектами карты Google.
Как для регистрации обработчиков событий DOM и пользовательских событий, так и для их запуска в Google maps API есть пространство имен GEvent.  Сейчас мы воспользуемся для примера методом addListener(source, event, handler).  Этот [...]]]></description>
			<content:encoded><![CDATA[<p>Как я и обещал в <a title="Знакомство с Google Maps API. Часть #1" href="http://mihalytch.org.ua/programming/js/znakomstvo-s-google-maps-api-1.html" target="_blank">первой части Знакомства с Google Maps API</a> этого цикла, мы сейчас познакомимся с обработкой событий, добавлением/управлением объектами <strong>карты Google</strong>.</p>
<p>Как для регистрации обработчиков событий DOM и пользовательских событий, так и для их запуска в Google maps API есть пространство имен <strong>GEvent</strong>.  Сейчас мы воспользуемся для примера методом <em>addListener(source, event, handler)</em>.  Этот метод регистрирует пользовательское событие <em>event </em>в источнике объекта <em>source</em> и вызывает обработчик <em>handler.</em><span id="more-166"></span></p>
<p>Теперь назначим событию <em>click</em> обработчик, который будет <strong>создавать метки на карте</strong>. Затем мы научим эти метки позиционироваться путем перетаскивания их мышкой по самой карте и назначим удаление их из карты по даблклику по метке.</p>
<p>Теперь перейдем от теории к практической части:</p>
<pre class="brush: jscript;">
/* Здесь мы будем хранить классы:
- GMap2 для создания карты;
- GClientGeocoder для получения геокодов для пользовательских адресов
*/
var map, geocoder;

function initialize_map () {
    /* Если браузер совместим */
    if (GBrowserIsCompatible()) {
        /* Создадим объект карты */
        map = new GMap2(document.getElementById(&quot;google_canvas&quot;));
        geocoder = new GClientGeocoder();

        /* Установим координаты центра карты и начальный масштаб */
        map.setCenter(new GLatLng(37.4419, -122.1419), 5);

        /* Добавим элементы управления картой, воспользовавшись конструктором GLargeMapControl из класса GControl  */
        map.addControl(new GLargeMapControl());

        /* Добавим мини-карту обзора в углу основной карты */
        map.addControl(new GOverviewMapControl());

        /* Назначаем  onClickForMap() обработчиком события click  */
        GEvent.addListener(map, &quot;click&quot;, onClickForMap);
    }
}

/* При нажатии на карту  */
function onClickForMap(overlay, latlng) {
    /* Если определен входной аргумент */
    if (latlng != null) {
        /* Определим координаты точки, в которой было вызвано событие  */
        geocoder.getLocations(latlng, addPointToMap);
    }
}

/* Непосредственно добавление точки с маркером на карту */
function addPointToMap (response) {
    /* Если произошла какая-либо ошибка при определении координат - выведем ошибку */
    if (!response || response.Status.code != 200) {
        alert(&quot;Status Code:&quot; + response.Status.code);
    } else {
        /* Получим координаты */
        place = response.Placemark[0];
        /* Создадим точку на карте */
        point = new GLatLng(place.Point.coordinates[1],
        place.Point.coordinates[0]);

        /* Создадим маркер в этой точке */
        var marker = new GMarker(
            point,
            /* разрешим пользователю перетаскивать мышкой этот маркер  */
            {draggable: true}
        );

        /* При двойном клике по маркеру */
        GEvent.addListener(marker, &quot;dblclick&quot;, function() {
            /* Вызовем метод  hide() который скроет маркер */
            this.hide();
        });

        /* Нанесем созданный нами объект на полотно карты */
        map.addOverlay(marker);
    }
}

initialize_map ();
</pre>
<p>То что из этого получиться вы можете посмотреть <a href="http://mihalytch.org.ua/example/google-maps-api-2.html" target="blank_">в примере</a>.</p>
<img src="http://mihalytch.org.ua/?ak_action=api_record_view&id=166&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/programming/js/znakomstvo-s-google-maps-api-2.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Знакомство с Google Maps API. Часть #1</title>
		<link>http://mihalytch.org.ua/programming/js/znakomstvo-s-google-maps-api-1.html</link>
		<comments>http://mihalytch.org.ua/programming/js/znakomstvo-s-google-maps-api-1.html#comments</comments>
		<pubDate>Wed, 22 Apr 2009 10:55:53 +0000</pubDate>
		<dc:creator>Mihalytch</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/?p=117</guid>
		<description><![CDATA[Для того чтобы использовать карты Google на своем веб-ресурсе, необходимо получить ключ к API карте гугла. Для этого идем по этому адресу, соглашаемся с условиями использования, вводим URL своего сайта и жмем "Сгенерировать ключ к API". На следующей странице получаем ключ.
Следующим шагом нам необходимо подключить саму библиотеку Google:

&#60;script src=&#34;http://maps.google.com/maps?file=api&#38;v=2.x&#38;sensor=false&#38;key=[здесь_код_к_API]&#34; type=&#34;text/javascript&#34;&#62;&#60;/script&#62;

Затем в HTML коде страницы необходимо [...]]]></description>
			<content:encoded><![CDATA[<p>Для того чтобы использовать <strong>карты Google</strong> на своем веб-ресурсе, необходимо получить <strong>ключ к API карте гугла</strong>. Для этого <a title="Зарегистрироваться для получения ключа к API карт Google" href="/go/http://code.google.com/intl/ru_ALL/apis/maps/signup.html" target="_blank">идем по этому адресу</a>, соглашаемся с условиями использования, вводим URL своего сайта и жмем "Сгенерировать ключ к API". На следующей странице получаем ключ.</p>
<p>Следующим шагом нам необходимо <em>подключить саму библиотеку Google</em>:</p>
<pre class="brush: jscript;">
&lt;script src=&quot;http://maps.google.com/maps?file=api&amp;v=2.x&amp;sensor=false&amp;key=[здесь_код_к_API]&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</pre>
<p><span id="more-117"></span>Затем в HTML коде страницы <em>необходимо определить блок</em>, в котором будет отображаться карта и стили для него.</p>
<pre class="brush: xml;">
&lt;style&gt;
div#google_canvas {
 height:300px;
 width: 500px;
 margin:0px auto;
}
&lt;/style&gt;
&lt;div id=&quot;google_canvas&quot;&gt;&lt;/div&gt;
</pre>
<p>Теперь пишем <em>функцию инициализации карты Google</em>:</p>
<pre class="brush: jscript;">
 /* Если браузер совместим */
 if (GBrowserIsCompatible()) {
 /* Создадим объект карты */
 var map = new GMap2(document.getElementById(&quot;google_canvas&quot;));

 /* Установим координаты центра карты и начальный масштаб */
 map.setCenter(new GLatLng(37.4419, -122.1419), 5);

 /* Добавим элементы управления картой воспользовавшись конструктором GLargeMapControl из класса GControl  */
 map.addControl(new GLargeMapControl());

 /* Добавим мини-карту обзора в углу основной карты */
 map.addControl(new GOverviewMapControl());
 }
</pre>
<p>И самое главное, нам нужно запустить эту функцию при загрузке страницы и выгрузить при закрытии:</p>
<p>&lt;<span class="start-tag">body</span><span class="attribute-name"> onload</span>=<span class="attribute-value">"initialize_map()" </span><span class="attribute-name">onunload</span>=<span class="attribute-value">"GUnload()"</span>&gt;</p>
<p>Сейчас у нас получилось отобразить <a href="http://mihalytch.org.ua/example/google-maps-api-1.html" target="_blank">карту следующим образом</a>. В следующей статье мы научим нашу карту взаимодействовать с пользователем в интерактивном режиме.</p>
<p>P.S. Для самостоятельного изучения рекомендую к прочтению <a title="Справочные материалы по API карт Google" href="/go/http://code.google.com/intl/ru/apis/maps/documentation/reference.html" target="_blank">справочные материалы по API карт Google</a>.</p>
<img src="http://mihalytch.org.ua/?ak_action=api_record_view&id=117&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/programming/js/znakomstvo-s-google-maps-api-1.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>День Земли</title>
		<link>http://mihalytch.org.ua/news/earth-day.html</link>
		<comments>http://mihalytch.org.ua/news/earth-day.html#comments</comments>
		<pubDate>Wed, 22 Apr 2009 08:56:36 +0000</pubDate>
		<dc:creator>Mihalytch</dc:creator>
				<category><![CDATA[Новости]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/?p=129</guid>
		<description><![CDATA[
Поздравляю Вас с Днем Земли, уважаемые читатели!
Пусть будут лишь мирные и радостные Дни Земли для нашего прекрасного космического корабля — планеты Земля, летящей и вращающейся посреди холодного космоса со своим столь уязвимым грузом жизни…
( ©Генеральный секретарь ООН У Тан, 21 марта 1971 года. )

Подробнее о Дне Земли Вы можете прочитать на вики.
]]></description>
			<content:encoded><![CDATA[<p><img style="float:left; margin:5px;" src="/wp-content/earth_day.png" alt="Earth Day" /><br />
Поздравляю Вас с <em>Днем Земли</em>, уважаемые читатели!</p>
<blockquote><p>Пусть будут лишь мирные и радостные Дни Земли для нашего прекрасного космического корабля — планеты Земля, летящей и вращающейся посреди холодного космоса со своим столь уязвимым грузом жизни…<br />
<small>( ©Генеральный секретарь ООН У Тан, 21 марта 1971 года. )<br />
</small></p></blockquote>
<p>Подробнее о Дне Земли Вы можете <a title="День Земли" href="/go/http://ru.wikipedia.org/wiki/День_Земли" target="_blank">прочитать на вики</a>.</p>
<img src="http://mihalytch.org.ua/?ak_action=api_record_view&id=129&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/news/earth-day.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS Naked Day 2009</title>
		<link>http://mihalytch.org.ua/news/css-naked-day-2009.html</link>
		<comments>http://mihalytch.org.ua/news/css-naked-day-2009.html#comments</comments>
		<pubDate>Thu, 09 Apr 2009 14:21:22 +0000</pubDate>
		<dc:creator>Mihalytch</dc:creator>
				<category><![CDATA[Новости]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/news/css-naked-day-2009.html</guid>
		<description><![CDATA[Сегодня 9 апреля - четвертый ежегодный CSS Naked Day!
В этот день участники акции снимают со своих сайтов CSS, демонстрируя посетителям сайт без оформления с помощью каскадных таблиц стилей.
Для того чтобы присоединиться к этой акции необходимо всего лишь зарегистрироваться на странице naked.dustindiaz.com (Форма находиться в самом низу) и отключить ЦСС на своем сайте.
]]></description>
			<content:encoded><![CDATA[<p>Сегодня 9 апреля - четвертый ежегодный CSS Naked Day!</p>
<p>В этот день участники акции снимают со своих сайтов CSS, демонстрируя посетителям сайт без оформления с помощью каскадных таблиц стилей.</p>
<p>Для того чтобы присоединиться к этой акции необходимо всего лишь зарегистрироваться на странице <a href="/go.php?url=naked.dustindiaz.com" target="_blank">naked.dustindiaz.com</a> (Форма находиться в самом низу) и отключить ЦСС на своем сайте.</p>
<img src="http://mihalytch.org.ua/?ak_action=api_record_view&id=104&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/news/css-naked-day-2009.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
