<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>JimBot</title>
    <link rel="alternate" type="text/html" href="http://jimbot.ru/" />
    <link rel="self" type="application/atom+xml" href="http://jimbot.ru/atom.xml" />
    <id>tag:jimbot.ru,2009-06-11://1</id>
    <updated>2011-12-24T09:41:38Z</updated>
    <subtitle>Разработка IM-ботов на Java</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.31</generator>

<entry>
    <title>Вторая альфа 0.6.0</title>
    <link rel="alternate" type="text/html" href="http://jimbot.ru/2011/12/vtoraja-al-fa-060.html" />
    <id>tag:jimbot.ru,2011://1.134</id>

    <published>2011-12-24T09:22:41Z</published>
    <updated>2011-12-24T09:41:38Z</updated>

    <summary>В разделе загрузок выложена вторая альфа для версии 0.6.0. Запуск: скрипт &quot;run.bat&quot;, в браузере: http://localhost:8080/admin, логин/пароль: admin/admin. Что сделано: Исправлены ошибки. Разбиение длинных сообщений на части. Доработан интерфейс протокола. Значительные изменения в нем маловероятны. Можно начинать разработку плагинов с реализацией...</summary>
    <author>
        <name>Spec</name>
        
    </author>
    
        <category term="Новости" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="060" label="0.6.0" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://jimbot.ru/">
        <![CDATA[<p>В разделе <a href="http://code.google.com/p/jimbot/downloads/list">загрузок</a> выложена вторая альфа для версии 0.6.0.</p>
<p>Запуск: скрипт "run.bat", в браузере: <a href="http://localhost:8080/admin">http://localhost:8080/admin</a>, логин/пароль: admin/admin.</p>
<p>Что сделано:</p>
<ul>
<li>Исправлены ошибки.</li>
<li>Разбиение длинных сообщений на части.</li>
<li>Доработан интерфейс протокола. Значительные изменения в нем маловероятны. Можно начинать разработку плагинов с реализацией собственных протоколов.</li>
<li>Окончательно сформированы принципы обработки команд в боте: аргументы команд, псевдонимы, динамическая загрузка и изменение в процессе работы бота.</li>
<li>Реализована работа со скриптами. Скрипт теперь запускается один раз, формирует класс команды и загружает его в реестр команд. Таким образом, скорость работы и накладные расходы по выполнению таких команд ничем не отличаются от заранее скомпилированных.</li>
</ul>
<p>Дальнейшие планы:</p>
<ul>
<li>Чат.</li>
<li>Добавление новых протоколов.</li>
<li>Реализация "Админа" чата в виде отдельного сервиса, способного работать как внутри комнаты чата, так и внутри jabber-конференций.</li>
</ul>
<p>Как всегда, список изменений можно поглядеть <a href="http://code.google.com/p/jimbot/source/list?repo=draft" target="_blank">тут</a>.</p>
<p>Есть вопросы? Пиши на <a href="http://forum.jimbot.ru/index.php?/topic/6178-%D0%B2%D1%82%D0%BE%D1%80%D0%B0%D1%8F-%D0%B0%D0%BB%D1%8C%D1%84%D0%B0-060/">форум</a>.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Первая альфа 0.6.0</title>
    <link rel="alternate" type="text/html" href="http://jimbot.ru/2011/08/pervaja-al-fa-060.html" />
    <id>tag:jimbot.ru,2011://1.133</id>

    <published>2011-08-07T19:26:21Z</published>
    <updated>2011-08-07T19:34:17Z</updated>

    <summary>В разделе загрузок выложена первая альфа версия 0.6.0. В этой версии реализован полноценный анекбот, а также средство работы с базой анекбота через веб. Эта же версия запущена и тестируется на моем анекботе: 460626318 Запуск: скрипт &quot;run.bat&quot;, в браузере: http://localhost:8080/admin, логин/пароль:...</summary>
    <author>
        <name>Spec</name>
        
    </author>
    
        <category term="Новости" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="060" label="0.6.0" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://jimbot.ru/">
        <![CDATA[<p>В разделе <a href="http://code.google.com/p/jimbot/downloads/list" target="_blank">загрузок</a> выложена первая альфа версия 0.6.0.</p>
<p>В этой версии реализован полноценный анекбот, а также средство работы с базой анекбота через веб. Эта же версия запущена и тестируется на моем анекботе: 460626318</p>
<p>Запуск: скрипт "run.bat", в браузере: <a href="http://localhost:8080/admin">http://localhost:8080/admin</a>, логин/пароль: admin/admin.</p>
<p>Список изменений можно поглядеть <a href="http://code.google.com/p/jimbot/source/list?repo=draft" target="_blank">тут</a>.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Как собрать версию 0.6 из исходников?</title>
    <link rel="alternate" type="text/html" href="http://jimbot.ru/2011/08/kak-sobrat--versiju-06-iz-isxodnikov.html" />
    <id>tag:jimbot.ru,2011://1.132</id>

    <published>2011-08-04T16:41:39Z</published>
    <updated>2011-08-04T18:21:45Z</updated>

    <summary>Версия 0.6.0 постепенно движется к выпуску полноценной первой альфы, и поэтому появляется все больше желающих ее пощупать. Эта инструкция описывает как скачать исходники, импортировать проект в Eclipse и запустить его. Инструкция актуальна на текущий момент, последующие изменения в коде могут...</summary>
    <author>
        <name>Spec</name>
        
    </author>
    
        <category term="Инструкции" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Как сделать?" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="060" label="0.6.0" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://jimbot.ru/">
        <![CDATA[<p>Версия 0.6.0 постепенно движется к выпуску полноценной первой альфы, и поэтому появляется все больше желающих ее пощупать. Эта инструкция описывает как скачать исходники, импортировать проект в Eclipse и запустить его. Инструкция актуальна на текущий момент, последующие изменения в коде могут потребовать некоторых дополнительных дествий, поэтому необходимо при выполнении инструкции руководствоваться прежде всего логикой.</p>
<p>Внимание, в тексте много картинок!</p>]]>
        <![CDATA[<h2><strong>0. Качаем Eclipse.</strong></h2>
<p>Идем <a href="http://www.eclipse.org/downloads/" target="_blank">сюда</a> и скачиваем сборку <strong>Eclipse for RCP and RAP Developers</strong>.</p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0pt auto 20px; border: 1px solid black;" src="http://jimbot.ru/2011/08/04/01.png" alt="01.png" height="124" width="782" /></p>
<h2><strong>1. Скачивание исходников.</strong></h2>
<p>Идем <a href="http://code.google.com/p/jimbot/source/checkout?repo=draft" target="_blank">сюда</a>, и читаем краткую инструкцию по импорту исходников из репозитария. По ссылке ниже можно перейти на сайт плагина для работы с mercurial. Переходим и скачиваем:</p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0pt auto 20px; border: 1px solid black;" src="http://jimbot.ru/2011/08/04/02.png" alt="02.png" height="439" width="522" />Лично я качал самую нижнюю. Разобраться в ее работе несложно, в гугле к тому же есть куча информации по этому вопросу. Описывать подробно не буду.</p>
<h2><strong>2. Импорт проекта</strong></h2>
<p>И так, еклипс скачан и установлен, исходники импортированы из репозитория. Теперь нужно произвести импорт исходников в проект еклипса. В еклипсе выбираем меню файл - импорт, и далее тип проекта:</p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0pt auto 20px;" src="http://jimbot.ru/2011/08/04/03.png" alt="03.png" height="453" width="467" />В следующем окне указываем папку с исходниками проекта, и выбираем пункт импортировать как "Project with source folders":</p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0pt auto 20px;" src="http://jimbot.ru/2011/08/04/04.png" alt="04.png" height="482" width="656" /></p>
<p>В следующем окне добавим все найденные плагины для импорта:</p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0pt auto 20px;" src="http://jimbot.ru/2011/08/04/05.png" alt="05.png" height="453" width="654" />После импорта еклипс покажет ошибки с ненайденными ссылками на бандлы. Их необходимо добавить в папку плагинов эклипса. Скачайте последнюю сборку версии 0.6 в разделе загрузок и скопируйле из папки плагинов этой версии в папку "eclipse/plugins" следующие плагины:</p>
<pre>org.vaadin.osgi.staticres_1.0.1.jar</pre>
<pre>vaadin-6.5.6.jar</pre>
<pre>org.apache.log4j_1.2.15.v201005080500.jar</pre>
<p>Последний плагин может уже быть в комплекте поставки eclipse.</p>
<p>Теперь нужно перезапустить eclipse и убедиться в отсутствии ошибок.</p>
<h2><strong>3. Запуск проекта.</strong></h2>
<p>На кнопке запуска (с зеленой стрелкой) выбираем "Run configurations..." и создаем новую конфигурацию запуска для OSGI:</p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0pt auto 20px;" src="http://jimbot.ru/2011/08/04/06.png" alt="06.png" height="353" width="531" />Присвоим ей какое-нить имя, снимем галку с плагинов Target platform - нам столько много не нужно:</p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0pt auto 20px;" src="http://jimbot.ru/2011/08/04/07.png" alt="07.png" height="629" width="954" />Теперь добавим только требуемые для нашей работы бандлы, кнопка "Add Required Bundles". Проверить удовлетворение всех зависимостей можно кнопкой "Validate Bundles":</p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0pt auto 20px;" src="http://jimbot.ru/08.png" alt="08.png" height="334" width="709" />Но и это еще не все :) Потребуется вручную добавить плагин для реализации декларативных сервисов, они используются для подключения на лету статических ресурсов vaadin. Поставим галку на org.eclipse.equinox.ds, а затем добавим требуемые ему дополнительные бандлы:</p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0pt auto 20px;" src="http://jimbot.ru/2011/08/04/09.png" alt="09.png" height="438" width="710" />И наконец, последний штрих, переходим на вкладку аргументов и добавляем в аргументы командной строки при запуске бандлов следующую строчку:</p>
<pre>&nbsp;-Dorg.eclipse.equinox.http.jetty.http.port=8080</pre>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0pt auto 20px;" src="http://jimbot.ru/2011/08/04/10.png" alt="10.png" height="324" width="701" />Сохраняем конфигурацию запуска, запускаем и наслаждаемся результатом :)</p>
<p>&nbsp;</p>]]>
    </content>
</entry>

<entry>
    <title>Контакты</title>
    <link rel="alternate" type="text/html" href="http://jimbot.ru/2011/07/kontakti.html" />
    <id>tag:jimbot.ru,2011://1.131</id>

    <published>2011-07-17T19:37:19Z</published>
    <updated>2011-07-17T19:38:56Z</updated>

    <summary>Обновил информацию на странице контактов. Если есть что сказать интересного - пишите....</summary>
    <author>
        <name>Spec</name>
        
    </author>
    
    
    <content type="html" xml:lang="ru" xml:base="http://jimbot.ru/">
        <![CDATA[<p>Обновил информацию на странице <a href="/contacts.html">контактов</a>. Если есть что сказать интересного - пишите.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Демка 0.6.0</title>
    <link rel="alternate" type="text/html" href="http://jimbot.ru/2011/06/demka-060.html" />
    <id>tag:jimbot.ru,2011://1.130</id>

    <published>2011-06-13T17:46:39Z</published>
    <updated>2011-06-13T18:04:31Z</updated>

    <summary>В загрузках выложена технологическая демка версии 0.6.0. Можно поглядеть работу новой веб-админки и простого автоответчика. После запуска нужно открыть в браузере ссылку: http://localhost:8080/admin Для входа использовать admin/admin, в браузере должны быть включены ява-скрипты. В настройках бота можно добавить уин, или...</summary>
    <author>
        <name>Spec</name>
        
    </author>
    
        <category term="Новости" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="060" label="0.6.0" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="jimbot" label="JimBot" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://jimbot.ru/">
        <![CDATA[<p>В <a href="http://code.google.com/p/jimbot/downloads/list">загрузках</a> выложена технологическая демка версии 0.6.0.</p>
<p>Можно поглядеть работу новой веб-админки и простого автоответчика.</p>
<p>После запуска нужно открыть в браузере ссылку: <a href="http://localhost:8080/admin">http://localhost:8080/admin</a></p>
<p>Для входа использовать admin/admin, в браузере должны быть включены ява-скрипты.</p>
<p>В настройках бота можно добавить уин, или посмотреть работу прямо в админке через тестовый протокол.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Обновление репозитария исходников</title>
    <link rel="alternate" type="text/html" href="http://jimbot.ru/2011/06/obnovlenie-repozitarija-isxodnikov.html" />
    <id>tag:jimbot.ru,2011://1.129</id>

    <published>2011-06-12T19:28:38Z</published>
    <updated>2011-06-12T19:44:30Z</updated>

    <summary>Коллеги, прошу обратить внимание, что в гуглкод сегодня были помещены обновления исходных текстов для версии 0.6.0. Так что если для работы необходима версия 0.5 - нужно откатиться на соответствующую ревизию. Пока изменения представляют собой лишь прототип, который умеет запускаться и...</summary>
    <author>
        <name>Spec</name>
        
    </author>
    
        <category term="Новости" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="060" label="0.6.0" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="jimbot" label="JimBot" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://jimbot.ru/">
        <![CDATA[<p>Коллеги, прошу обратить внимание, что в <a href="https://code.google.com/p/jimbot/source/browse?repo=draft" target="_blank">гуглкод</a> сегодня были помещены обновления исходных текстов для версии 0.6.0. Так что если для работы необходима версия 0.5 - нужно откатиться на соответствующую ревизию.</p>
<p>Пока изменения представляют собой лишь прототип, который умеет запускаться и реагировать на сообщения.</p>
<p>Версия 0.6 пишется с нуля. Основная цель - дальнейшая абстракция модулей, создание гибкой и масштабируемой архитектуры, более полное использование преимуществ OSGi.</p>
<p>С этого момента обновления исходников будут происходить чаще.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Прощай MySQL.</title>
    <link rel="alternate" type="text/html" href="http://jimbot.ru/2010/04/proschaj-mysql.html" />
    <id>tag:jimbot.ru,2010://1.128</id>

    <published>2010-04-19T17:12:27Z</published>
    <updated>2010-04-21T12:46:23Z</updated>

    <summary>Недавно меня посетила мысль. Это случается довольно редко, поэтому пришедшие в голову мысли я стараюсь не упускать. На самом деле, в боте совершенно нет никакой необходимости использовать реляционные базы данных. Вполне достаточно использовать базу типа &quot;key-value&quot;. Несколько статей на эту...</summary>
    <author>
        <name>Spec</name>
        
    </author>
    
        <category term="Новости" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="050" label="0.5.0" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="keyvaluedb" label="key-value DB" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mysql" label="mysql" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://jimbot.ru/">
        <![CDATA[<p>Недавно меня посетила мысль. Это случается довольно редко, поэтому пришедшие в голову мысли я стараюсь не упускать. На самом деле, в боте совершенно нет никакой необходимости использовать реляционные базы данных. Вполне достаточно использовать базу типа "key-value".</p>
<p>Несколько статей на эту тему: <a href="http://freebsd-services.com/news/kak-otkazatsya-ot-sql.html" target="_blank">[1]</a>, <a href="http://habrahabr.ru/blogs/hi/55077/" target="_blank">[2]</a>, <a href="http://www.coolwebmasters.com/databases/530-25-alternative-open-source-databases.html" target="_blank">[3]</a>.</p>
<p>В моем проекте будет использоваться база данных <a href="http://www.oracle.com/technology/products/berkeley-db/je/index.html" target="_blank">Oracle Berkeley DB Java Edition</a>, а в качестве persistence layer над ней - проект <a href="http://carbonado.sourceforge.net/" target="_blank">Carbonado</a>.</p>
<p>Пощупать все это дело можно прямо сейчас, <a href="http://jimbot.googlecode.com/files/0.5.0_alpha_3.zip">скачав</a> третью альфу.</p>
<p>В данный момент эта версия запущена на моем анекботе. Первые несколько часов прошли успешно, что показывает жизнеспособность этой идеи.</p>
<p>Обсудить все это дело можно как всегда на <a href="http://forum.jimbot.ru/index.php?/topic/2304-050-alpha-3-%D0%BF%D1%80%D0%BE%D1%89%D0%B0%D0%B9-mysql/">форуме</a>.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Описание модулей 0.5.0 - jimbot.core</title>
    <link rel="alternate" type="text/html" href="http://jimbot.ru/2010/04/opisanie-modulej-050---jimbotcore.html" />
    <id>tag:jimbot.ru,2010://1.127</id>

    <published>2010-04-10T15:13:02Z</published>
    <updated>2010-04-10T15:20:16Z</updated>

    <summary>Все нижесказанное относится к состоянию бота на 10.04.2010. В последстивии нужно иметь ввиду, что структура и логика работы может поменяться. Начнем с описания работы ядра - модуля jimbot.core. Для начала советую прочитать про основы OSGi. Бандл ядра состоит из нескольких...</summary>
    <author>
        <name>Spec</name>
        
    </author>
    
        <category term="Инструкции" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="050" label="0.5.0" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="osgi" label="OSGi" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://jimbot.ru/">
        <![CDATA[<p>Все нижесказанное относится к состоянию бота на 10.04.2010. В последстивии нужно иметь ввиду, что структура и логика работы может поменяться.</p>
<p>Начнем с описания работы ядра - модуля <strong>jimbot.core</strong>.</p>
<p>Для начала советую прочитать про <a href="http://samolisov.blogspot.com/2009/03/osgi.html" target="_blank">основы OSGi</a>.</p>
<p>Бандл ядра состоит из нескольких пакетов.</p>
<ul>
<li><strong>jimbot.core</strong> - содержит активатор бандла и коннекторы сервисов. Название пакета отличается от общепринятого из-за того, что этот пакет не нужно экспортировать для других бандлов.</li>
<li><strong>ru.jimbot</strong> - несколько общих классов, которые я не смог отнести к другим пакетам. Самые важные из них: MainConfig и Manager.</li>
<li><strong>ru.jimbot.core</strong> - тут собраны общие классы, которые должны быть использованы при работе других бандлов. Часть из классов абстрактные и должны быть расширены.</li>
<li><strong>ru.jimbot.core.api</strong> - тут собраны все интерфейсы, которые должны реализовываться бандлами.</li>
<li><strong>ru.jimbot.core.events</strong> - в данном пакете содержатся классы событий. Я планирую переделать систему коммуникации между частями бота, т.к. в OSGi есть собственные средства обмена сообщениями и событиями между бандлами, но с этим еще предстоит разбираться.</li>
<li><strong>ru.jimbot.db</strong> - содержит общие абстрактные классы для работы с БД. Возможно, они тоже будут переписаны.</li>
<li><strong>ru.jimbot.utils</strong> - некоторые сервисные классы, реализующие функции общего назначения.</li>
</ul>]]>
        <![CDATA[<p>Как видно из <a href="http://code.google.com/p/jimbot/source/browse/META-INF/MANIFEST.MF?repo=draft" target="_blank">манифеста</a>, бандл ядра зависит от <strong>jimbot.logger</strong> и <strong>jimbot.mysql</strong> - это значит без них ядро запустить не получится.</p>
<p>Посмотрим что происходит в <a href="http://code.google.com/p/jimbot/source/browse/src/jimbot/core/Activator.java?repo=draft" target="_blank">активаторе</a> бандла.</p>
<p>Создаются два объекта: <strong>ServicesConnector</strong> и <strong>ProtocolConnector</strong>, в которые передается контекст бандла. Назначение коннекторов - следить за подключением бандлов, реализующих новые сервисы бота и протоколы.</p>
<p>А вот дальше происходит попытка запуска ботов посредством <strong>Manager</strong>. Это место предстоит переделать - потому как не факт, что в этот момент все бандлы сервисов и протоколов будут установлены и запущены.</p>
<p>Пару слов о терминологии. В боте и в OSGi имеется понятие <em>сервиса</em>. Чтобы не путаться, когда это не очевидно из контекста, я буду конкретизировать "<em>сервис бота</em>", или "<em>сервис OSGi</em>".</p>
<p>Сервисы бота и новые протоколы IM регистрируются в <strong>Manager</strong> следующим образом. Бандлы, их реализующие, регистрируют при запуске новые сервисы OSGi. Эти сервисы реализуют соответствующие интерфейсы <strong>IServiceBuilder</strong> и <strong>IProtocolManager</strong>. С помощью этих билдеров в нужный момент создается конкретная реализация сервиса бота (по его имени) или конкретная реализация протокола (с указанием уина и пароля).</p>
<p>Класс <strong>MainConfig</strong> реализует паттерн <a href="http://ru.wikipedia.org/wiki/%D0%9E%D0%B4%D0%B8%D0%BD%D0%BE%D1%87%D0%BA%D0%B0_%28%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%29" target="_blank">singleton</a> и претставляет собой <a href="http://java.sun.com/docs/books/tutorial/javabeans/index.html" target="_parent">ява-бин</a>. Реализация настроек в виде бина, на мой взгляд, позволит мне жестче контролировать изменение настроек бота - в случае ошибок я сразу увижу проблему на этапе компиляции. Сохранение настроек на диске происходит путем <a href="http://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F" target="_blank">сериализации</a> бина в XML. Класс <strong>MainConfigBeanInfo</strong> содержит информацию для редактора конфига в админке. Редактирование бинов в админке происходит при помощи библиотеки <a href="http://commons.apache.org/beanutils/" target="_blank">Commons BeanUtils</a>.</p>
<p>Класс <strong>Manager</strong> также является singleton, и служит, как и раньше, главным средством управления ботом.</p>
<p>Класс <strong>ChronoMaster</strong> используется для запуска в боте периодически повторяемых задач. Например, можно чистить раз в сутки базу данных. Запускаемые задачи должны реализовывать интерфейс <strong>Task</strong>.</p>
<p>Класс <strong>Message</strong> представляет собой отправляемое или принимаемое по каналам IM сообщение.</p>
<p>Класс <strong>MsgInQueue</strong> реализует очередь входящих сообщений. Сообщения ожидают здесь дальшейшей обработки бота. Кроме того, класс периодически проверяет и вызывает переподключение упавших уинов, а так же контролирует и блокирует флуд.</p>
<p>Класс <strong>MsgOutQueue</strong> реализует очередь исходящих сообщений. Сюда попадают созданные ботом сообщения в ожидании отправки по каналам IM конечным пользователям. В данный момент у каждого UINа своя собственная очередь исходящих, работающая в отдельном потоке. Тут есть над чем подумать в плане оптимизации.</p>
<p>Класс <strong>UserContext</strong> реализует понятие <em>сессии</em> пользователя бота. Служит для дальнейшего развития идеи интерактивных команд - когда общение бота и пользователя идет в едином информационном пространстве независимо от остальных пользователей. Класс <strong>ContextManager</strong> управляет текущими сессиями бота.</p>
<p>Перейдем к рассмотрению <a href="http://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_%28%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29" target="_blank">интерфейсов</a>.</p>
<p>Интерфейс <strong>Command</strong> описывает отдельную команду бота. Существуют методы инициализации и уничтожения команды для создания и удаления необходимых ресурсов. Команда сама должна проверять необходимые полномочия, выдавать паттерн команды, выдавать справку. Все команды в боте хранятся в виде пар <em>&lt;паттерн, объект команды&gt;</em>. Скрипты при запуске должны теперь создавать новые объекты команд - поэтому скорость выполнения скомпилированных модулей и скриптов отличаться не будет.</p>
<p>Остается открытым вопрос использования псевдонимов команд (так называемых "русификаций") - сложность возникает при инициализации и уничтожении в момент обновления скриптов, а так же хранении объектов. Так что интерфейс и логика работы с командами в боте может еще значительно поменяться.</p>
<p>Абстрактный класс <strong>DefaultCommand</strong> реализует некоторые методы интерфейса <strong>Command</strong>. Если вы будете расширять его, вам не придется выполнять некоторые рутинные операции для простых команд.</p>
<p>Интерфейс <strong>Parser</strong> описывает, как должен выглядеть парсер команд. Абстрактный класс <strong>DefaultCommandParser</strong> реализует некоторые методы интерфейса <strong>Parser</strong>, что позволит при его расширении в вашем парсере избежать некоторых рутинных операций.</p>
<p>Интерфейс <strong>Protocol</strong> описывает как должна выглядеть реализация протокола IM.</p>
<p>Интерфейс <strong>Service</strong> описывает сервис бота. А интерфейс <strong>ServiceConfig</strong> - обязательные параметры бина конфигурации любого сервиса. В остальном в конфиге сервиса можно добавлять любые данные.</p>
<p>Абстрактный класс <strong>DefaultService</strong> реализует некоторые методы интерфейса <strong>Service</strong>, в частности - регистрацию слушателей.</p>
<p>Сами интерфейсы слушателей, думаю, описывать не стоит, с ними и так все понятно.</p>
<p>Бандл, в котором создаются новые команды бота, должен реализовать интерфейс <strong>ICommandBuilder</strong>. Это происходит в сервисе OSGi, регистрируемом таким бандлом.</p>
<p>Интерфейс <strong>IProtocolBuilder</strong> описывает создание нового экземпляра протокола. Позволяет при создании указывать только часть параметров, оставляя для остальных значения по умолчанию.</p>
<p>Остальное, думаю, и так понятно из комментариев.</p>
<p>На сегодня все. Продолжение следует...</p>
<p>Если есть вопросы или предложения - пишите в комментарии или на <a href="http://forum.jimbot.ru/index.php?/topic/2221-jimbot-050-%d0%bc%d0%be%d0%b4%d1%83%d0%bb%d1%8c%d0%bd%d0%be%d1%81%d1%82%d1%8c/">форум</a>.</p>]]>
    </content>
</entry>

<entry>
    <title>Метод кирпича</title>
    <link rel="alternate" type="text/html" href="http://jimbot.ru/2010/04/metod-kirpicha.html" />
    <id>tag:jimbot.ru,2010://1.126</id>

    <published>2010-04-07T17:57:53Z</published>
    <updated>2010-04-08T01:08:27Z</updated>

    <summary>Все в реальной жизни состоит из маленьких кусочков. Частичек. Кирпичиков. Модулей... Очевидно что строить большой объект из нескольких маленьких гораздо проще, чем создавать его сразу на пустом месте. При этом так же понятно, что эти кирпичики должны обладать определенным согласованным...</summary>
    <author>
        <name>Spec</name>
        
    </author>
    
        <category term="Новости" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="050" label="0.5.0" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="osgi" label="OSGi" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="модульность" label="модульность" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://jimbot.ru/">
        <![CDATA[<p>Все в реальной жизни состоит из маленьких кусочков. Частичек. Кирпичиков. Модулей...</p>
<p>Очевидно что строить большой объект из нескольких маленьких гораздо проще, чем создавать его сразу на пустом месте. При этом так же понятно, что эти кирпичики должны обладать определенным согласованным интерфейсом друг с другом. Например, при строительстве дома все кирпичи обладают одинаковыми размерами, иначе построить дом неполучится.</p>
<p>В области разработки программного обеспечения ситуация аналогичная. Систему, обеспечивающую поддержку функций загрузки модулей, их запуска, разрешения зависимостей между ними, изоляцией молулей друг от друга называют <strong>плагинной шиной</strong>. В JimBot начиная с версии 0.5.0 будет также использована полноценная плагинная шина, реализованная на основе технологии <a href="http://ru.wikipedia.org/wiki/OSGi">OSGi</a>.</p>
<p>Подробнее об этой технологии можно прочитать по ссылкам, указанным в конце данной статьи, а пока я опишу некоторые функции и назначение существующих на данный момент модулей.</p>]]>
        <![CDATA[<p>Хочу сразу предупредить - это мой первый опыт использования OSGi, поэтому описанная ниже реализация не является оптимальной, а возможно и содержит ошибки. В процессе дальнейшей работы архитектура бота может быть изменена.</p>
<p>И так, в процессе преобразования бот был разбит на несколько модулей, или по терминологии OSGi - <strong>бандлов</strong>:</p>
<ul>
<li>jimbot.core - это ядро системы, реализует базовые функции и описывает общие интерфейсы для всех остальных модулей.</li>
<li>jimbot.logger - сюда была переведена существующая в боте реализация системы логирования.</li>
<li>jimbot.mysql - по сути содержит только библиотеку работы с mysql.</li>
<li>jimbot.protocol.icq - реализация протокола icq.</li>
<li>jimbot.http - реализация http-сервера на базе jetty и веб-админки для управления ботом.</li>
<li>jimbot.script - реализация скриптов для бота, по сути представляет собой просто библиотеку.</li>
<li>jimbot.anek - реализация анекдотного бота.</li>
<li>jimbot.anek.command - в этом модуле содержатся все команды для анекдотного бота.</li>
</ul>
<p>В дополнении к вышеизложенному, созданы еще несколько модулей для демонстрации подхода к расширению функционала бота:</p>
<ul>
<li>jimbot.testbot - тестовый бот, реализующий простейший автоответчик. Показывает как можно создать свой собственный модуль с ботом.</li>
<li>jimbot.protocol.test - реализация тестового протокола, эмулирует прием и отправку сообщений, может использоваться для тестирования ботов.</li>
<li>jimbot.anek.command.ext - реализует модуль с дополнительной командой для анекдотного бота. Показывает как можно создать модуль с дополнительными командами для бота.</li>
</ul>
<p>На сегодня все. В следующих статьях я подробнее остановлюсь на внутренней архитектуре и взаимодействии бандлов друг с другом.</p>
<p>А теперь обещенные ссылки.</p>
<p>Исходные тексты бота можно найти <a href="http://code.google.com/p/jimbot/source/browse?repo=draft">здесь</a>, основная папка - проект jimbot.core, в него вложены проекты остальных модулей. Файлы проектов для eclipse прилагаются.</p>
<p>Основную информацию по OSGi я почерпнул из <a href="http://samolisov.blogspot.com/search/label/osgi">цикла статей</a> Павла Самолысова, автора библиотеки ICQ, на основе которой работает наш бот.</p>
<p>Как создавать проекты OSGi в Eclipse с картинками описано <a href="http://www.vogella.de/articles/OSGi/article.html">тут</a>.</p>
<p>Запуск OSGi: <a href="http://www.eclipse.org/equinox/documents/quickstart.php">eclipse.org/equinox/documents/quickstart.php</a></p>
<p>Прочее: <a href="http://kernel.naumen.ru/Naumen_Kernel_Doc">1</a> <a href="http://topcode.ru/2009/10/03/osgi-pervoe-priblizhenie-modulnost-v-java/">2</a> <a href="http://topcode.ru/2009/12/14/osgi-vtoroe-priblizhenie-zakladyvaem-fundament/">3</a></p>
<p>UPD.08.04.2010. Забыл про еще одну полезную ссылку. Советую скачать и хотя бы поглядеть эту <a href="http://code.google.com/p/osgi-in-action/">книжку</a>.</p>]]>
    </content>
</entry>

<entry>
    <title>JimBot для самых маленьких</title>
    <link rel="alternate" type="text/html" href="http://jimbot.ru/2010/02/jimbot-dlja-samix-malen-kix.html" />
    <id>tag:jimbot.ru,2010://1.125</id>

    <published>2010-02-19T18:46:16Z</published>
    <updated>2010-02-19T18:55:11Z</updated>

    <summary><![CDATA[В качестве эпиграфа. - А вы на что проживаете?- Младенцев крещу.- Это как?- Ну, макаю в воду, потом отдаю обратно.- И в чём смысл?- Ну как же, а бульон? &nbsp; [В гостях у сказки mode on] Последнее время все чаще...]]></summary>
    <author>
        <name>Spec</name>
        
    </author>
    
        <category term="Новости" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="jimbot" label="JimBot" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="jimbotmanager" label="JimBotManager" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="запускбота" label="запуск бота" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://jimbot.ru/">
        <![CDATA[<p style="text-align: right;"><strong><em>В качестве эпиграфа.</em></strong></p>
<p style="text-align: right;"><em>- А вы на что проживаете?<br />- Младенцев крещу.<br />- Это как?<br />- Ну,  макаю в воду, потом отдаю обратно.<br />- И в чём смысл?<br />- Ну как же, а  бульон?</em></p>
<p>&nbsp;</p>
<pre>[В гостях у сказки mode on]<br /></pre>
<p>Последнее время все чаще замечаю проблемы у самых маленьких читателей нашего сайта по поводу запуска бота на своем домашнем компьютере. В связи с этим я потратил пару вечеров и наконец воплотил в жизнь свою <a href="http://jimbot.info/forumy/novosti/novyi-proiekt">старую идею</a> по поводу программы-управлятора ботом. А за одним вспомнил некоторые особенности работы со Swing.</p>
<p>И так, встречайте: <strong>JimBotManager</strong> - программа для простого, как 5 копеек, запуска сервера MySQL на домашнем компьютере и последующего запуска бота.</p>]]>
        <![CDATA[<p>Что умеет программа?</p>
<ul>
<li>Запускаться (это самое главное).</li>
<li>Сворачиваться в трей.</li>
<li>Запускать сервер MySQL, находящийся в папке с программой.</li>
<li>Создавать и удалять базы данных.</li>
<li>Выгружать дамп базы в файл.</li>
<li>Выполнять произвольные SQL-запросы (их нужно вводить ручками). Можно вводить список запросов (залить дамп обратно в базу).</li>
<li>Запускать бота.</li>
<li>Показывать в окошке изменение логов в реальном времени.</li>
<li>Автоматически открывать браузер с админкой.</li>
</ul>
<p>Глюки разумеется также присутствуют.</p>
<p>Для работы содержимое архива с программой необходимо скопировать в папку с ботом. Или воспользоваться готовой сборкой, в состав которой входит бот версии 0.4.0 и созданная база данных.</p>
<p>Если на вашем компьютере установлен денвер, топ-сервер или отдельная база MySQL, перед использованием программы их необходимо отключить.</p>
<p>Скачать отдельно JimBotManager можно <a href="http://jimbot.googlecode.com/files/JimbotManager.zip">тут</a>.</p>
<p>Скачать JimBotManager и JimBot в одном флаконе можно <a href="http://jimbot.googlecode.com/files/JimbotManager_and_Jimbot.zip">здесь</a>.</p>
<p>Обсудить все это дело можно на <a href="http://forum.jimbot.ru/index.php?/topic/1723-jimbot-%D0%B4%D0%BB%D1%8F-%D1%81%D0%B0%D0%BC%D1%8B%D1%85-%D0%BC%D0%B0%D0%BB%D0%B5%D0%BD%D1%8C%D0%BA%D0%B8%D1%85/">форуме</a>.</p>
<p>В заключение несколько скриншотов:</p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0pt auto 20px;" src="http://jimbot.ru/2010/02/19/pic5.png" alt="pic5.png" height="484" width="587" /></p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0pt auto 20px;" src="http://jimbot.ru/2010/02/19/pic6.png" alt="pic6.png" height="484" width="587" /></p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0pt auto 20px;" src="http://jimbot.ru/2010/02/19/pic7.png" alt="pic7.png" height="484" width="587" /></p>
<pre>[В гостях у сказки mode off]</pre>]]>
    </content>
</entry>

<entry>
    <title>Настройка авторизации к разделам сайта на lighttpd</title>
    <link rel="alternate" type="text/html" href="http://jimbot.ru/2010/02/nastrojka-avtorizacii-k-razdelam-sajta-na-lighttpd.html" />
    <id>tag:jimbot.ru,2010://1.124</id>

    <published>2010-02-11T10:49:28Z</published>
    <updated>2010-02-11T11:08:32Z</updated>

    <summary>В прошлой статье мы с вами научились рисовать статистику нагрузки на наш XEN-сервер. И хотя в этих данных по идее нет ничего секретного, найдутся желающие их скрыть. Сегодня мы научимся настраивать авторизацию на разделы сайта, работающего на сервере Lighttpd....</summary>
    <author>
        <name>Spec</name>
        
    </author>
    
        <category term="Инструкции" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="lighttpd" label="Lighttpd" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="xen" label="XEN" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="сервер" label="сервер" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="хостинг" label="хостинг" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://jimbot.ru/">
        <![CDATA[<p>В <a href="/2010/02/monitoring-servera.html">прошлой статье</a> мы с вами научились рисовать статистику нагрузки на наш <a href="http://www.dobryjhosting.ru/vds/73.html">XEN</a>-сервер. И хотя в этих данных по идее нет ничего секретного, найдутся желающие их скрыть. Сегодня мы научимся настраивать авторизацию на разделы сайта, работающего на сервере <strong>Lighttpd</strong>.</p>]]>
        <![CDATA[<p>Мы будем использовать <a href="http://en.wikipedia.org/wiki/Digest_access_authentication">digest-аутентификацию</a>. При этом методе пароль передается не в открытом виде, как при использовании базовой аутентификации, а в виде хеш-кода, вычисленному по алгоритму MD5. Поэтому пароль не может быть перехвачен при сканировании трафика.</p>
<p>Для начала создадим файл с паролями. Для этого обычно используется команда <strong>htdigest</strong>, которая входит в пакет программ <strong>apache</strong>. Я воспользовался для запуска этой команды и генерации файла своим вторым сервером с установленным апачем. Вы можете установить эту команду отдельно на свой сервер с lighttpd. Используется она следующим образом:</p>
<pre>htdigest -c /etc/lighttpd/.passwd 'Authorized users only' tom</pre>
<p>Здесь:</p>
<ul>
<li>/etc/lighttpd/.passwd - имя файла, который будет создан</li>
<li>'Authorized users only' - realm, или надпись, которая появится при запросе авторизации</li>
<li>tom - имя пользователя. Замените на свое.</li>
</ul>
<p>После завершения работы программы будет создан файл с паролем ".passwd". В процессе работы у вас будет дважды запрошен пароль для пользователя.</p>
<p>Теперь остается настроить сам lighttpd. Поместим файл паролей в "/etc/lighttpd/" (если он создавался на другом сервере). Обычно после установки lighhtd модуль "mod-auth" уже активирован. В таком случае внесем изменения непосредственно в файл "/etc/lighttpd/conf-enabled/05-auth.conf":</p>
<pre>auth.backend = "htdigest"<br />auth.backend.htdigest.userfile = "/etc/lighttpd/.passwd"<br /><br />auth.require = ( "/munin/" =&gt;<br />("method" =&gt; "digest",<br />"realm" =&gt; "Authorized users only",<br />"require" =&gt; "valid-user")<br />)<br /></pre>
<p>Перезапустим сервер командой: "<em>/etc/init.d/lighttpd restart</em>".</p>
<p>Теперь при попытке доступа на "<em>http://адрес_сервера/munin</em>" с нас будут запрошены имя пользователя и пароль.</p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0pt auto 20px;" src="http://jimbot.ru/2010/02/11/pic4.png" alt="pic4.png" height="226" width="356" /></p>
<p>Параноя в очередной раз торжествует.</p>
<p>&nbsp;</p>
<p><em>При подготовке данной статьи использовались материалы сайта <a href="http://www.cyberciti.biz/tips/lighttpd-secure-digest-authentication-mod_auth.html">cyberciti.biz</a>.</em></p>]]>
    </content>
</entry>

<entry>
    <title>Новый форум</title>
    <link rel="alternate" type="text/html" href="http://jimbot.ru/2010/02/novij-forum.html" />
    <id>tag:jimbot.ru,2010://1.123</id>

    <published>2010-02-10T16:38:21Z</published>
    <updated>2010-02-10T16:43:46Z</updated>

    <summary>Уважаемые пользователи! Если вы еще не заметили, то информирую: наш форум изменился и находится теперь по адресу forum.jimbot.ru Регистрации пользователей сохранены, старые посты так же по возможности перенесены. Форум по старому адресу сохранится в режиме &quot;только для чтения&quot;, чтобы избежать...</summary>
    <author>
        <name>Spec</name>
        
    </author>
    
        <category term="Новости" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="Форум" label="Форум" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://jimbot.ru/">
        <![CDATA[<p>Уважаемые пользователи!</p>
<p>Если вы еще не заметили, то информирую: наш форум изменился и находится теперь по адресу <a href="http://forum.jimbot.ru">forum.jimbot.ru</a></p>
<p>Регистрации пользователей сохранены, старые посты так же по возможности перенесены. Форум по старому адресу сохранится в режиме "только для чтения", чтобы избежать необходимости править внешние ссылки на него.</p>
<p>Если есть вопросы и предложения - пишите в <a href="http://forum.jimbot.ru/index.php?/topic/1629-%d1%81%d0%bc%d0%b5%d0%bd%d0%b0-%d0%b4%d0%b2%d0%b8%d0%b6%d0%ba%d0%b0-%d1%84%d0%be%d1%80%d1%83%d0%bc%d0%b0-2/">эту тему</a>.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Мониторинг сервера</title>
    <link rel="alternate" type="text/html" href="http://jimbot.ru/2010/02/monitoring-servera.html" />
    <id>tag:jimbot.ru,2010://1.122</id>

    <published>2010-02-04T18:47:25Z</published>
    <updated>2010-02-04T18:48:34Z</updated>

    <summary>В условиях, когда тарифы на XEN становятся все ниже и ниже, только ленивый остается на OpenVZ. Но при переходе к новой технологии виртуализации многих ждет разочарование. Если VDSManager стал некоторым промышленным стандартом для OpenVZ, то для XEN удобных панелей управления...</summary>
    <author>
        <name>Spec</name>
        
    </author>
    
        <category term="Инструкции" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="xen" label="XEN" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="мониторинг" label="мониторинг" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="сервер" label="сервер" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="Хостинг" label="Хостинг" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://jimbot.ru/">
        <![CDATA[<p>В условиях, когда тарифы на XEN становятся все <a href="http://www.dobryjhosting.ru/vds/73.html">ниже и ниже</a>, только ленивый остается на OpenVZ. Но при переходе к новой технологии виртуализации многих ждет разочарование. Если VDSManager стал некоторым промышленным стандартом для OpenVZ, то для XEN удобных панелей управления пока нет. Обычно каждый хостер предлагает свое решение, в котором можно запустить/перегрузить сервер, переустановить, реже - определить некоторые настройки.</p>
<p>Самого необходимого - статистики работы сервера там обычно не бывает. А для работы бота, особенно на недорогих тарифах это очень важно. Анализируя изменение нагрузки бота на сервер можно вовремя предупредить возникновение многих проблем.</p>
<p>Сегодня мы с вами займемся установкой и настройкой небольшой системы мониторинга собственного сервера.</p>]]>
        <![CDATA[<p>Речь, как обычно, будет идти о Debian 5, а в качестве системы мониторинга будем использовать <a href="http://munin.projects.linpro.no">Munin</a>.</p>
<p>Для начала установим необходимые пакеты, для этого выполним простые команды:</p>
<pre>apt-get update<br />apt-get install munin<br /></pre>
<p>Теперь остается настроить мониторинг. Делается это очень просто. В каталоге "/etc/munin/plugins" необходимо создать символические ссылки на нужные плагины из каталога "/usr/share/munin/plugins". Для себя я настроил следующее:</p>
<pre>cpu - показывает нагрузку на процессор<br />df - процент использования диска<br />if_eth0 - трафик через сетевое подключение, укажите имя устройства<br />iostat - статистику использования дисков<br />load - загрузка системы<br />memory - использование памяти<br />mysql_bytes - статистика mysql<br />mysql_queries<br />mysql_slowqueries<br />mysql_threads<br />netstat - число сетевых подключений<br />ping_ - пинг до гугла<br />ping_kamensktel.ru - пинг до выбранного сайта (укажите в имени)<br />processes - число запущенных процессов<br />swap - использование подкачки<br />vmstat - процессы в режиме ожидания<br /></pre>
<p>Символическая ссылка создается командой "ln", в некоторых случаях потребуется переименование. Например:</p>
<pre>ln -s /usr/share/munin/plugins/if_ /etc/munin/plugins/if_eth0<br />ln -s /usr/share/munin/plugins/cpu /etc/munin/plugins/cpu<br />ln -s /usr/share/munin/plugins/df /etc/munin/plugins/df<br /></pre>
<p>Возможно, вам будет удобнее создавать из через mc - меню "файл - символич.ссылка".</p>
<p>Так же можно поправить некоторые настройки в файле munin.conf, например:</p>
<pre>dbdir	/var/lib/munin<br />htmldir	/var/www/munin<br />logdir	/var/log/munin<br />rundir  /var/run/munin<br /></pre>
<p>Если соберетесь изменить папку с html, нужно учитывать, что она должна быть доступна на запись для пользователя munin, и на чтение для владельца веб-сервера (www-data).</p>
<p>После настроек перезапустим munin:</p>
<pre>/etc/init.d/munin-node restart<br /></pre>
<p>По адресу "http://имя_сайта.ru/munin" мы увидим графики с нашей статистикой. Информация обновляется раз в 5 минут.</p>
<p><img class="mt-image-none" src="http://jimbot.ru/2010/02/04/p4.png" alt="p4.png" height="353" width="501" /></p>
<p>В заключении хочу выразить благодарность linode за хорошую <a href="http://library.linode.com/server-monitoring/munin/debian-5-lenny">идею</a>,  а Доброму хостингу за предоставленный на тестирование <a href="http://www.dobryjhosting.ru/vds/73.html">сервер</a>.</p>]]>
    </content>
</entry>

<entry>
    <title>Переезд сайта на новый хостинг завершен</title>
    <link rel="alternate" type="text/html" href="http://jimbot.ru/2010/01/pereezd-sajta-na-novij-xosting-zavershen.html" />
    <id>tag:jimbot.ru,2010://1.121</id>

    <published>2010-01-31T11:51:09Z</published>
    <updated>2010-01-31T11:56:31Z</updated>

    <summary>С сегодняшнего дня сайт будет работать на VDS от linode.com. Если у кого остались вопросы, есть замечания или предложения, обсудить можно на форуме....</summary>
    <author>
        <name>Spec</name>
        
    </author>
    
        <category term="Новости" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="Переезд" label="Переезд" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="Хостинг" label="Хостинг" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://jimbot.ru/">
        <![CDATA[<p>С сегодняшнего дня сайт будет работать на VDS от <a href="http://www.linode.com/?r=e936469474416c6b3f555c6aa6c4222b89fe5721" target="_blank">linode.com</a>.</p>
<p>Если у кого остались вопросы, есть замечания или предложения, обсудить можно на <a href="http://jimbot.ru/phpbb/viewtopic.php?f=15&amp;t=3659">форуме</a>.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Так...</title>
    <link rel="alternate" type="text/html" href="http://jimbot.ru/2010/01/tak.html" />
    <id>tag:jimbot.ru,2010://1.119</id>

    <published>2010-01-30T18:32:43Z</published>
    <updated>2010-01-30T18:36:18Z</updated>

    <summary>Если эту запись видно, значит DNS уже обновился......</summary>
    <author>
        <name>Spec</name>
        
    </author>
    
        <category term="Мысли" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ru" xml:base="http://jimbot.ru/">
        <![CDATA[<p>Если эту запись видно, значит DNS уже обновился...</p>]]>
        
    </content>
</entry>

</feed>

