Записи, связанные с тегом «0.5.0»

Прощай MySQL.

Недавно меня посетила мысль. Это случается довольно редко, поэтому пришедшие в голову мысли я стараюсь не упускать. На самом деле, в боте совершенно нет никакой необходимости использовать реляционные базы данных. Вполне достаточно использовать базу типа "key-value".

Несколько статей на эту тему: [1], [2], [3].

В моем проекте будет использоваться база данных Oracle Berkeley DB Java Edition, а в качестве persistence layer над ней - проект Carbonado.

Пощупать все это дело можно прямо сейчас, скачав третью альфу.

В данный момент эта версия запущена на моем анекботе. Первые несколько часов прошли успешно, что показывает жизнеспособность этой идеи.

Обсудить все это дело можно как всегда на форуме.

Описание модулей 0.5.0 - jimbot.core

Все нижесказанное относится к состоянию бота на 10.04.2010. В последстивии нужно иметь ввиду, что структура и логика работы может поменяться.

Начнем с описания работы ядра - модуля jimbot.core.

Для начала советую прочитать про основы OSGi.

Бандл ядра состоит из нескольких пакетов.

  • jimbot.core - содержит активатор бандла и коннекторы сервисов. Название пакета отличается от общепринятого из-за того, что этот пакет не нужно экспортировать для других бандлов.
  • ru.jimbot - несколько общих классов, которые я не смог отнести к другим пакетам. Самые важные из них: MainConfig и Manager.
  • ru.jimbot.core - тут собраны общие классы, которые должны быть использованы при работе других бандлов. Часть из классов абстрактные и должны быть расширены.
  • ru.jimbot.core.api - тут собраны все интерфейсы, которые должны реализовываться бандлами.
  • ru.jimbot.core.events - в данном пакете содержатся классы событий. Я планирую переделать систему коммуникации между частями бота, т.к. в OSGi есть собственные средства обмена сообщениями и событиями между бандлами, но с этим еще предстоит разбираться.
  • ru.jimbot.db - содержит общие абстрактные классы для работы с БД. Возможно, они тоже будут переписаны.
  • ru.jimbot.utils - некоторые сервисные классы, реализующие функции общего назначения.

Метод кирпича

Все в реальной жизни состоит из маленьких кусочков. Частичек. Кирпичиков. Модулей...

Очевидно что строить большой объект из нескольких маленьких гораздо проще, чем создавать его сразу на пустом месте. При этом так же понятно, что эти кирпичики должны обладать определенным согласованным интерфейсом друг с другом. Например, при строительстве дома все кирпичи обладают одинаковыми размерами, иначе построить дом неполучится.

В области разработки программного обеспечения ситуация аналогичная. Систему, обеспечивающую поддержку функций загрузки модулей, их запуска, разрешения зависимостей между ними, изоляцией молулей друг от друга называют плагинной шиной. В JimBot начиная с версии 0.5.0 будет также использована полноценная плагинная шина, реализованная на основе технологии OSGi.

Подробнее об этой технологии можно прочитать по ссылкам, указанным в конце данной статьи, а пока я опишу некоторые функции и назначение существующих на данный момент модулей.

Вторая альфа версии 0.5.0

Не прошло и пол года, а вот уже вторая демка теснит новые горизонты сознания, напоминая о том, что всякая программа развивается до тех пор, пока не преодолеет предел понимания программиста.

Хотя версия 0.5.0 его еще не преодолела, но подобралась практически вплотную.

Ну да в сторону лирику, что нового?

  1. Добавление нормального веб-сервера на базе jetty. Теперь можно размещать свои сиськи картинки на фоне админки, и вообще практически забацать свой сайт. Все файлы берутся сервером из папки htdocs в корне бота.
  2. Нормальная авторизация с поддержкой куков.
  3. Можно пробовать писать в скриптах новые команды. В качестве примера поглядите на services\AnekBot\scripts\command\test.bsh
  4. Использована последняя версия библиотеки IcqLib. Благодаря этому исправлены утечки ресурсов и запуск/остановка сервисов. Вставить библиотеку в старую версию не получится, даже не пытайтесь.
  5. Реализовано разделение логов по сервисам. Пока криво и глючно.

Чатов пока нет. Не ищите. Обещанного три года ждут, так что время у меня еще есть.

Скачать можно тут. Исходники здесь. Поругаться и поплакать как всегда можно на форуме.

Специально для фанатов кодов и компилятора выпущена первая альфа версия для 0.5.0. В ней вы сможете:

  • Поглядеть новую архитектуру ядра и оценить его возможности
  • Оценить сильные и слабые стороны новой архитектуры
  • Высказать замечания по реализации интерфейсов
  • Оценить необходимые доработки своих решений

Уже есть:

  • Прием и отправка сообщений
  • Реализация интерфейса команд
  • Реализация механизма периодического запуска команд

Все остальное, в том числе скрипты и чат, пока отсутствуют. Соответственно делать ваши изменения вы можете только в компиляторе.

Скомпилированная версия лежит тут, Исходные тексты можно получить здесь, как подключиться к репозиторию mercurial написано тут.

Обсуждение этой темы предлагаю продолжить на форуме.

Удачи.

1
Loading

Смотрите новые записи на главной странице или загляните в архив, где есть ссылки на все сообщения.

Хостинг для чата

Рейтинг@Mail.ru службы мониторинга серверов