Перейти к содержимому


Jimbot at C++

jimbot java c++ cpp sqlite

Сообщений в теме: 28

#1 Black_Kot

    Профи

  • Модераторы
  • 410 сообщений
  • ГородTokio

Отправлено 01 Июнь 2012 - 23:15

Описание последней версии бота:
1. Бот работает с базой данных SQLite, настройки хранит в ней же. в файлах
services/name/props.sqlite - настройки сервиса
services/name/db/ - база данных сервиса
jimbot.sqlite - основные настройки бота, файл лежит в папке с ботом

2. Все практически тоже самое что и в Jimbot 0.4.0 by spec.

3. Есть админ панель. логин/пароль admin/admin. порт 8888.

4. Для icq протокола используется написаная мною icqlib на основе модификации плагина для миранды от sss..

5. Работает так же и под windows, но имеются некоторые ошибки связаные с виндой.

6. Как собрать бота самому из исходных текстов:

Для *nix.
Скрытый текст

Для win.
Скрытый текст

7. Исходники включают в себя также проект в нетбинсе, достаточно в нетбинсе выбрать открыт проект и выбрать папку с исходниками.
чтобы получить исходные тексты нужно набрать в консоли
 git clone git://sss.chaoslab.ru/jimbot_at_cpp.git

8. Есть викторина, за основу была взята викторина Clo на Java.

9. Апи почти полностью точно такое же как в 0.4.0 pre* by spec.
Только скриптов нет..

10. Последняя версия на данный момент 0.0.0 alfa 4.

11. Планируется не зависимая модульная система.

12. Загрузить уже собранного бота, если я не поленюсь собрать, можно тут

13. Если есть идеи, предложения или вы обнаружили ошибку в работе бота то отпишите в этой теме или создайте новый тикет на баг трекере.

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

UPD: Обновил бота, добавил протокол icq и сделлал код рабочим для винды(ошибки все равно есть но они из за винды..), так же добавил свою icqlib на c++ написаную на основе модификацию плагина icq протокола к миранде by sss. Особо любопотные могут найти файл games_mod.bmp, говорю сразу что это не просто картинка а в ней кое что спрятано(не вирус..)))

UPD:
Открыт баг трекер тут
Добавить тикет можно тут
Просмотреть список всех тикетов можно тут

#2 scano

    Профи

  • Пользователи
  • PipPipPipPipPip
  • 571 сообщений
  • ГородМосква

Отправлено 17 Июль 2012 - 18:23

Black_Kot, разве нет другого выхода кроме как писать свою личную либу?
В инете есть XMPP либы на Яве, версии который до сих пор выходят. Перенести на язык С+ не проблема ведь.

#3 Black_Kot

    Профи

  • Модераторы
  • 410 сообщений
  • ГородTokio

Отправлено 18 Июль 2012 - 04:43

Речь идет о том что скорее всего придется писать либу icq протокола а не XMPP.
Либу для XMPP протокола я нашел за минут 10, причем не одну единственную либу а несколько десятков либ из которых и выбрал понравившуюся.
А вот для icq по сей день нормальной найти не могу.
Есть только два возможных варианта для icq:
1. libpurple с такими вот зависимостями и еще с где то 6 протоколами.
Скрытый текст
2. libicq2000 которая не хочет работать с русским языком и тянет за собой libsigc++1.0.
3. qutim(да я в курсе что это клиент но его можно использовать как отдельную либу исключив из сборки gui часть), которому нужны где то более 3 либ от qt.

Других вариантов хотя бы для линукса я не встречал кроме как консольных клиентов в которых вшит протокол.

Сообщение отредактировал Black_Kot: 18 Июль 2012 - 04:52


#4 nek

    Профи

  • Модераторы
  • 2 293 сообщений

Отправлено 18 Июль 2012 - 16:54

А что, компоновать статически, религия не позволяет?

#5 Black_Kot

    Профи

  • Модераторы
  • 410 сообщений
  • ГородTokio

Отправлено 18 Июль 2012 - 18:38

Просмотр сообщенияnek (18 Июль 2012 - 16:54) писал:

А что, компоновать статически, религия не позволяет?
И какова будет разница?
Хоть динамика, хоть статика, а ресурсы потребляются одинаково.

На собственном примере вижу сколько кушает либпурпл всего лишь с двумя акками аси и тремя акками джаббера, и честно говоря это, 7-9мб, много будет для маленького бота.

QT тоже не лучший вариант так как не вижу смысла использовать его для такого маленького проекта и тем более из за всего лишь одного протокола.

А вообще, nek это твой единственный вариант по которому ты смог придраться или есть еще другие?

#6 nek

    Профи

  • Модераторы
  • 2 293 сообщений

Отправлено 18 Июль 2012 - 20:35

Ну т.е. 40-50 mb для одной только java машины это нормально, а 9 mb для уже готовой программы без промежуточных звеньев это много?

Это называется "Экономия на спичках".
И да, из libpurple можно убрать остальные протоколы, уменьшив число так называемых "заисимостей"

#7 Black_Kot

    Профи

  • Модераторы
  • 410 сообщений
  • ГородTokio

Отправлено 18 Июль 2012 - 23:19

1. не 40-50 а 20-25.
2. зачем ратить 9мб если возможно тратить раза в три меньше?
3. попытка уменьшить расходы ресурсов одной либы раза в три разве экономия на спичках? напоминаю что я тестировал в общей сложности на 5 аккаунтах, а на боте их может быть 10(колличество сервисов)*5(колличество уинов)=50. и это лишь по скромным подсчетам выльется в 90мб вместо 30мб.
4. жаль но, все протоколы кроме XMPP и icq я из libpurple убрал и те завсисимости что я ранее представил это лишь icq и XMPP.

#8 scano

    Профи

  • Пользователи
  • PipPipPipPipPip
  • 571 сообщений
  • ГородМосква

Отправлено 19 Июль 2012 - 18:31

Что я бы сделал - так взял бы либу написанную на Java и перевёл бы в C++ код. Немного своё бы добавил в знак вкуса, убрал то что считал бы лишним. Желательно взял бы XMPP поскольку мультипротокольность сейчас будет кстати, а простой протокол ICQ быстро устареет, даже сейчас некоторые стараются использовать не один протокол в работе своего бота, а это значит, что протокол ICQ над котором Вы/Ты/Я трудились окажется формальностью (т.е. просто так, пустышка, всё равно что свою систему OSGI писать с надеждой уменьшить нагрузку).

Сообщение отредактировал scano: 19 Июль 2012 - 18:31


#9 Пушкожук

    Профи

  • Специалисты
  • PipPipPipPipPip
  • 617 сообщений
  • ГородМосква

Отправлено 19 Июль 2012 - 20:16

Просмотр сообщенияBlack_Kot (18 Июль 2012 - 18:38) писал:

На собственном примере вижу сколько кушает либпурпл всего лишь с двумя акками аси и тремя акками джаббера, и честно говоря это, 7-9мб, много будет для маленького бота.
Во-первых, как ты определил, что это именно libpurple занимает? Может, что-то ещё?
Во-вторых, не совсем верный алгоритм измерений. Например, приведу аналогию с ботом на Java: бот с одним сервисом занимает около 30 Мбайт памяти. Добавляю второй сервис - потребление памяти увеличивается совсем немного, где-то 30-31 Мбайт. Это значит, что подавляющее большинство данных - общие данные для всех сервисов. Так же и здесь. По-моему, нужно измерять так: измерить потребление с 1 уином, потом, скажем, с 11, вычесть первое из второго и разделить на 10. Получим реальное потребление памяти 1 уином. Далее можно посчитать, сколько потребляет сама библиотека libpurple.
В-третьих, на написание своей библиотеки уйдёт время. Оно кажется бесплатным, но это не так. Окупится ли это время? Я видел такие сообщения: если заказчик оплачивает и оборудование, и работу программистов, то зачастую ему дешевле купить более мощное железо, чем платить программистам, чтобы они оптимизировали код.

#10 Black_Kot

    Профи

  • Модераторы
  • 410 сообщений
  • ГородTokio

Отправлено 19 Июль 2012 - 20:42

Просмотр сообщенияПушкожук (19 Июль 2012 - 20:16) писал:

Во-первых, как ты определил, что это именно libpurple занимает? Может, что-то ещё?
Во-вторых, не совсем верный алгоритм измерений. Например, приведу аналогию с ботом на Java: бот с одним сервисом занимает около 30 Мбайт памяти. Добавляю второй сервис - потребление памяти увеличивается совсем немного, где-то 30-31 Мбайт. Это значит, что подавляющее большинство данных - общие данные для всех сервисов. Так же и здесь. По-моему, нужно измерять так: измерить потребление с 1 уином, потом, скажем, с 11, вычесть первое из второго и разделить на 10. Получим реальное потребление памяти 1 уином. Далее можно посчитать, сколько потребляет сама библиотека libpurple.
В-третьих, на написание своей библиотеки уйдёт время. Оно кажется бесплатным, но это не так. Окупится ли это время? Я видел такие сообщения: если заказчик оплачивает и оборудование, и работу программистов, то зачастую ему дешевле купить более мощное железо, чем платить программистам, чтобы они оптимизировали код.
1. маленький тестовый бот автоответчик который юзает libpurple и просто выводит мои аккаунты в онлайн и отвечает н все сообщение одним единственным "меня здесь нет".
2. В Java 25-30мб отъедает сама Java машина. В C++ никаких Java машин нет, следовательно теряться этим же 25-30мб не куда кроме как на класс tools в котором иницируется статические данные одиножды и эти данные лишь 40-50 символов на русском языке. Насчет алгоритма я тоже усомнилсяч пару раз, и запускал с одним уином, и запускал со всеми аккаунтами, так же делал sizeof всех используемых классов и т.д. сервиса с одним и несколькими уинами. результат был почти одинаков.
3. Написание своей асько либы лишь интересс и не большой опыт написания библиотек и опыт работы с сокетами в с++, а так кодировками и т.д. Оптимизировать код смог и другие после первого же релиза либы, исходники всех моих проектов использованных в Jimbot at C++ будут доступны и открыты для всех.

Просмотр сообщенияscano (19 Июль 2012 - 18:31) писал:

Что я бы сделал - так взял бы либу написанную на Java и перевёл бы в C++ код. Немного своё бы добавил в знак вкуса, убрал то что считал бы лишним. Желательно взял бы XMPP поскольку мультипротокольность сейчас будет кстати, а простой протокол ICQ быстро устареет, даже сейчас некоторые стараются использовать не один протокол в работе своего бота, а это значит, что протокол ICQ над котором Вы/Ты/Я трудились окажется формальностью (т.е. просто так, пустышка, всё равно что свою систему OSGI писать с надеждой уменьшить нагрузку).
Переписать либу с Java на С++ не очень разумно, ообенно если вспомнить о недостатках известной нам icqlib.
Лично я взял за основу либу от миранды, и перенощу код из этой либы в свою медленно очень и когда есть время.
А разве icq не устарела пару лет назад? Зачем я пишу либу, так просто ради опыта.
Мультипротокльность в данном боте заложена изначально, или никто исходников не смотрел?

#11 scano

    Профи

  • Пользователи
  • PipPipPipPipPip
  • 571 сообщений
  • ГородМосква

Отправлено 20 Июль 2012 - 01:59

Я не имел в виду либу, которая сейчас присутствует в последней stable version. В сети Интернет существует несколько либ написанные на Java, к примеру, библиотека XMPP smack последнее её обновление датировано 22 февраля текущего года, а значит её разработка по сей день ведётся. Вот я и подумал, если необходим код на конкретном языке, а его алгоритм присутствует на другом, то почему бы не взять готовое и просто переписать.

Просмотр сообщенияBlack_Kot (19 Июль 2012 - 20:42) писал:

Мультипротокльность в данном боте заложена изначально, или никто исходников не смотрел?
Нет, но "Желательно взял бы XMPP поскольку мультипротокольность сейчас будет кстати, а простой протокол ICQ быстро устареет".

Просмотр сообщенияBlack_Kot (19 Июль 2012 - 20:42) писал:

А разве icq не устарела пару лет назад?
Устарела, но ведь никогда не узнаешь что тебе может пригодиться. В этом вся и непредсказуемость в жизни. Тем более мультипротокольность.

#12 Black_Kot

    Профи

  • Модераторы
  • 410 сообщений
  • ГородTokio

Отправлено 20 Июль 2012 - 02:15

Просмотр сообщенияscano (20 Июль 2012 - 01:59) писал:

Я не имел в виду либу, которая сейчас присутствует в последней stable version. В сети Интернет существует несколько либ написанные на Java, к примеру, библиотека XMPP smack последнее её обновление датировано 22 февраля текущего года, а значит её разработка по сей день ведётся. Вот я и подумал, если необходим код на конкретном языке, а его алгоритм присутствует на другом, то почему бы не взять готовое и просто переписать.
Угу.. но с Java и icq все просто печально, таких либ, рабочих, всего две. Одна из них обновлялась года 4 назад, вторая которая используется в боте года два назад.
Надеюсь объяснять не надо что чем новее icqlib тем лучше и тем выше вероятность ее работоспособности и более лучшей работы с icq серверами(ведь есть некоторые из них выпиниывают из сети если им не понравится что либо).

Просмотр сообщенияscano (20 Июль 2012 - 01:59) писал:

Нет, но "Желательно взял бы XMPP поскольку мультипротокольность сейчас будет кстати, а простой протокол ICQ быстро устареет".
Ну так посмотри для начала исходники.. класс UinManager, файлы UinManager.h и UinManager.cpp...

Просмотр сообщенияscano (20 Июль 2012 - 01:59) писал:

Устарела, но ведь никогда не узнаешь что тебе может пригодиться. В этом вся и непредсказуемость в жизни. Тем более мультипротокольность.
Насчет icq мое мнение такого "ICQ MUST DIE AND NEVER RESURRECT". Да и на всякий случай имеется возможность самому добавлять протокол, хоть facebook хоть yahoo, хоть еще что то. Проще говоря поддержка мультипротокольности.

Сообщение отредактировал Black_Kot: 20 Июль 2012 - 02:17


#13 Black_Kot

    Профи

  • Модераторы
  • 410 сообщений
  • ГородTokio

Отправлено 25 Июль 2012 - 16:47

Сделал обновление.
Добавил админ панель, использовал самописную либу http сервера.
Убрал icq протокол(временно?).
Скачивание исходников все такое же как и раньше.

#14 scano

    Профи

  • Пользователи
  • PipPipPipPipPip
  • 571 сообщений
  • ГородМосква

Отправлено 26 Июль 2012 - 00:31

Обычно есть две стороны, те что За и те что Против, а у Black_Kot'а найдёт ещё и третью.
В с+ не больше и не меньше плюсов чем у java.
Сам я поклонник Java и си'шек всех серий, но что про переписывание мода на другой язык, то я решил что это очень (!) глупо (решил?! да, ведь я думал над своей одной идей)
Посудите сами, автор пишет свою задумку для общественности и хотел чтобы его творение было популярным, а сама программа более простой, удобной в использовании и вседоступной, чтобы каждый мог творить что-то своё - и отсюда я думаю вряд ли этот автор придёт к выводу чтобы написать задумку на таком языке как с+, зная при этом что он будет мало знаменит из-за сложности его понять (например типичные ошибки из-за которых растёт объём потребляемых ресурсов (своего рода утечка памяти)). Java - вот к чему автор повернётся.

Add: И кому какая разница кто на чём пишет, через годик глядишь и найдётся чудак который захочет на паскаль всё это перевести.

#15 Black_Kot

    Профи

  • Модераторы
  • 410 сообщений
  • ГородTokio

Отправлено 26 Июль 2012 - 00:53

Просмотр сообщенияscano (26 Июль 2012 - 00:31) писал:

Обычно есть две стороны, те что За и те что Против, а у Black_Kot'а найдёт ещё и третью.
В с+ не больше и не меньше плюсов чем у java.
Сам я поклонник Java и си'шек всех серий, но что про переписывание мода на другой язык, то я решил что это очень (!) глупо (решил?! да, ведь я думал над своей одной идей)
Посудите сами, автор пишет свою задумку для общественности и хотел чтобы его творение было популярным, а сама программа более простой, удобной в использовании и вседоступной, чтобы каждый мог творить что-то своё - и отсюда я думаю вряд ли этот автор придёт к выводу чтобы написать задумку на таком языке как с+, зная при этом что он будет мало знаменит из-за сложности его понять (например типичные ошибки из-за которых растёт объём потребляемых ресурсов (своего рода утечка памяти)). Java - вот к чему автор повернётся.

Add: И кому какая разница кто на чём пишет, через годик глядишь и найдётся чудак который захочет на паскаль всё это перевести.
Типичные ошибки, утечки памяти, в C/C++ возникают только тогда когда забывают удалить какой либо элемент который потом никогда больше не понадобится.
В Java утечки памяти возникают даже если извернуться как только можно, но утечки все равно будут. В C/C++ этих же утечек вполне можно избежать.
Напоминаю что на C++ я решил бота переписать по одной простой причине, интерес. А не в целях сэкономить на ресурсах.
О все доступности, популярности, легкости, я как то и не задумываюсь. Кто захочет/сможет, тот и изменит для себя.
Моя цель это лишь довести бот до плагинов и в последствии забить на него если он не будет не кому нужен. В любом случае для меня этот бот лишь опыт и ничего большего.

#16 splite

    Новичок

  • Пользователи
  • Pip
  • 2 сообщений

Отправлено 21 Август 2012 - 22:25

Как продвигается разработка? Жду с нетерпением релиза!

#17 Black_Kot

    Профи

  • Модераторы
  • 410 сообщений
  • ГородTokio

Отправлено 21 Август 2012 - 23:24

Просмотр сообщенияsplite (21 Август 2012 - 22:25) писал:

Как продвигается разработка? Жду с нетерпением релиза!
Разработка самого бота пока стоит, пишу icqlib на данный момент и добавление некоторые мелочи в http сервер.
Чем alfa версия не устаивает? Все что сейчас реализовано, работает стабильно.

#18 splite

    Новичок

  • Пользователи
  • Pip
  • 2 сообщений

Отправлено 22 Август 2012 - 13:50

Да мне то в основном icq библиотека и нужна, очень нужна лёгкая icq библиотека на c++

#19 Black_Kot

    Профи

  • Модераторы
  • 410 сообщений
  • ГородTokio

Отправлено 22 Август 2012 - 14:52

Просмотр сообщенияsplite (22 Август 2012 - 13:50) писал:

Да мне то в основном icq библиотека и нужна, очень нужна лёгкая icq библиотека на c++
Ну так берите icqlib2000 и прикручивайте ее к боту сами))
Если конечно потом сможете ее научить русскому языку))
Или берите libpurple и опять же прикручивайте ее к боту. Ничего особо сложного нету.

#20 scano

    Профи

  • Пользователи
  • PipPipPipPipPip
  • 571 сообщений
  • ГородМосква

Отправлено 28 Август 2012 - 21:38

Просмотр сообщенияBlack_Kot (22 Август 2012 - 14:52) писал:

Ну так берите icqlib2000 и прикручивайте ее к боту сами))
Если конечно потом сможете ее научить русскому языку))
Научить та можно, равносильно что свою кирилицу писать. Не удобно лишь то, что из-за такой ерунды пакеты ещё одну обработку проходят.





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых пользователей