BalaBOT

жив
 
1 2 3 4 5 6 7
+
-
edit
 

Balancer

администратор
★★★★★
Сабж снова возвращается в строй. Правда, мозги ему поменяли. И профессия у него [пока?] другая.

Интересно, кто помнит? :)
 
+
-
edit
 

Balancer

администратор
★★★★★
BalaBOT Gearman Jaber JAXL PHP
Чёрт, Gearman + fcntl + JAXL — это сила :) Сейчас за пару часов (90% времени — изучение JAXL'а) слепил Jabber-бот-фреймворк, который давно задумывал. Суть такая. Висит мелкий скрипт (S1) и принимает от юзеров запросы. И кладёт их обработку в Gearman, тут же возвращаясь к работе. Висит скрипт 2 (S2). Принимает с Gearman'а запросы, делает fcntl-форк, в форке обрабатывает (грузит нужные компоненты моего фреймворка и дальше — через них, просто и красиво), основной процесс тут же возвращается к приёму следующего задания. Форк, окончив работу, благополучно завершается, высвобождая всю память. Даже имея напрочь дырявый менеджер памяти (хоть в PHP-5.3 это уже и не так), никаких утечек, большая гибкость при отладке, никаких лишних задержек. А, да. Форк S2 из класса-обработчика может класть на Gearman же ответ, который возьмёт S1 и отправит адресату. В общем, после того, как разобрался с JAXL, написать бота описанной системы заняло от силы пол-часа :) Включил balabot@balancer.ru (можно мучить), поставил ему пока блок случайных ответов от древней перловой версии Балабота десятилетней давности. Который, в свою очередь, ещё Psys'а идёт 15-летней давности :) В перспективе — нормальный микроблоггинг на Авиабазу. Ну и более полноценный вариант Psys'а :)

// Транслировано с juick.com
 

+
-
edit
 

Mishka

модератор
★★★
Balancer> Даже имея напрочь дырявый менеджер памяти (хоть в PHP-5.3 это уже и не так), никаких утечек, большая гибкость при отладке, никаких лишних задержек.

Если полноценный форк (тогда память освобождается по настоящему — один из доводов использования многопроцессности vs многонитевости), то дороговато — можно залететь и по накладным расходам на запуск процесса, так и по размерам таблицы процессов (тут винда линух приделает, т.к. у неё не таблица, а список). Если там всё же многонитевость (или пул процессов), то от проблем с утечками не убежать. :)
 3.6.133.6.13

+
-
edit
 

Balancer

администратор
★★★★★
Mishka> Если полноценный форк (тогда память освобождается по настоящему — один из доводов использования многопроцессности vs многонитевости), то дороговато

В Linux форки дешёвые.

Mishka> можно залететь и по накладным расходам на запуск процесса

В виду того, что используется copy-on-write, то создание форка - крайне лёгкий процесс. Сейчас проверил - средствами PHP 100 форков за 0,3 сек. 300 форков в секунду - у меня инициализация PHP-фреймворка больше занимает на порядок :D

Mishka> Если там всё же многонитевость (или пул процессов), то от проблем с утечками не убежать. :)

Нет, проверял - никаких привязок по памяти, всё освобождается. Специально жрал в форках памяти гигабайтами - после их завершения всё высвобождается.
 
+
-
edit
 

Balancer

администратор
★★★★★
Сабж сейчас легко расширяется командами. Только кроме help ничего пока не придумал, что бы б добавить :)

По идее, безусловно, нужно делать возможность авторизации (в смысле - привязки JID к UserID Авиабазы) и потом - постинг на форум через Jabber. Но это нужно привязку делать, сейчас - лениво :)

Что бы б такое полезное и простое/автономное прилепить для теста?
 
+
-
edit
 

Balancer

администратор
★★★★★
Балабот Авиабаза Jabber
Ну, вот, теперь Балабот умеет и новые темы открывать. Подробности спрашивайте по «help» у JID balabotbalancer.ru:)
 

+
-
edit
 

HolyBoy

аксакал

Тест бота *тесты *авиабаза Тестовое сообщение, отправленное через balabot, свалилось от сюды!
 
+
-
edit
 

HolyBoy

аксакал

А почему balabot'у нельзя указать только ключевые слова и текст, чтобы он точнее разместил пост в нужное место?
 
+
-
edit
 

Balancer

администратор
★★★★★
HolyBoy> А почему balabot'у нельзя указать только ключевые слова и текст, чтобы он точнее разместил пост в нужное место?

Э... Я, видимо, в хелпе криво написал. Если в команде post не указывать заголовок сообщения, то не создаётся новая тема, а добавляется к подходящей (по ключевым словам) имеющейся.

Можно и без ключевых слов, просто post текст - тогда в эту тему упадёт сразу :) А в перспективе, наверное, в блог пользователя будет падать.
 
+
-
edit
 

HolyBoy

аксакал

Ещё, из пожеланий: пусть при размещении сообщения через balabot в формате "post текст", указывается ещё и адрес сообщения, а то улетает неизвестно куда, и вообще, неясно, разместилось ли сообщение на форуме или нет.
 
+
-
edit
 

Balancer

администратор
★★★★★
HolyBoy> Тест бота *тесты *авиабаза Тестовое сообщение, отправленное через balabot, свалилось от сюды!

*тэги только до основного текста принимаются. Как в Juick'е. В теле сообщения только неубираемые #тэги работают, как в Твиттере.
 

+
-
edit
 

HolyBoy

аксакал

Balancer> Можно и без ключевых слов, просто post текст - тогда в эту тему упадёт сразу :) А в перспективе, наверное, в блог пользователя будет падать.

Я имел в виду, post *теги текст и чтобы тогда падало не в эту тему, а куда надо, по совпадению тегов.
 
+
-
edit
 

HolyBoy

аксакал

тесты авиабаза balabot
Проверим работу только по тегам.
 
+
-
edit
 

Balancer

администратор
★★★★★
HolyBoy> Ещё, из пожеланий: пусть при размещении сообщения через balabot в формате "post текст", указывается ещё и адрес сообщения, а то улетает неизвестно куда, и вообще, неясно, разместилось ли сообщение на форуме или нет.

Э... Я сломал, что ли, что-то. Адрес там указывается. Надо будет проверить...
code php
  1. return $this->send("Ваше сообщение было размещено в теме {$post->topic()->title()} по адресу {$post->url_for_igo()}");
 
+
-
edit
 

AGRESSOR

литератор
★★★★★
А это чо за чудо в перьях? Зачем оно нам? %)
 
+
-
edit
 

Balancer

администратор
★★★★★
HolyBoy> Я имел в виду, и чтобы тогда падало не в эту тему, а куда надо, по совпадению тегов.

Так и сделано. Хотя алгоритм ещё не самый оптимальный.
 

RU Balancer #10.02.2011 11:46  @AGRESSOR#10.02.2011 11:44
+
-
edit
 

Balancer

администратор
★★★★★
AGRESSOR> А это чо за чудо в перьях? Зачем оно нам? %)

Слать новые сообщения через IM-клиент намного удобнее, чем через форум :) Хотя это только одна из функций сабжа. Собственно, сабж - это ИИ Авиабазы :)

Кстати, он уже не только на Авиабазе пасётся и не только в роли бота для отсылки сообщений :D
 
+
-
edit
 

HolyBoy

аксакал

Balancer> Э... Я сломал, что ли, что-то. Адрес там указывается. Надо будет проверить...

code text
  1. [11:44:15] farataa: post *тесты *авиабаза *balabot Проверим работу только по тегам.
  2. [11:44:18] balabot: Ваше сообщение было размещено в теме BalaBOT по адресу http://balancer.ru/g/p2368427
  3. [11:45:31] farataa: post *тесты *авиабаза *balabot Во, оперативно сработано, да и на теги реагирует ожидаемо. Спасибо. :)
  4. [11:46:12] farataa: post *тесты *авиабаза *balabot Хм, оповещения о размещении поста работают через раз, видно, Ром, ты там крутишь что-то.
 
RU Balancer #10.02.2011 11:50  @Balancer#10.02.2011 11:44
+
-
edit
 

Balancer

администратор
★★★★★
Balancer> Так и сделано. Хотя алгоритм ещё не самый оптимальный.

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

Например, для тэгов «Авиабаза» и «Балабот» последний встречается на форуме много реже и потому темы с этим тэгом имеют более высокий вес. Поэтому сообщение упадёт не в ту тему, где 10 раз встретится тэг «Авиабаза», а в ту, где один раз - «Балабот» :)
 
US AGRESSOR #10.02.2011 11:50  @Balancer#10.02.2011 11:46
+
-
edit
 

AGRESSOR

литератор
★★★★★
Balancer> Слать новые сообщения через IM-клиент намного удобнее, чем через форум :)

Что такое IM-клиент? %)
 
+
-
edit
 

Balancer

администратор
★★★★★
>Ваше сообщение было размещено в теме BalaBOT по адресу BalaBOT [HolyBoy#10.02.11 11:43]

Всё правильно, указывается :)
 
+
-
edit
 

HolyBoy

аксакал

Balancer> Хотя это только одна из функций сабжа. Собственно, сабж - это ИИ Авиабазы :)

Он сможет отсылать ответ других пользователей в IM клиент, в случае появившегося ответа на посланное сообщение?

Как разлогиниться при нужде?
 
RU Balancer #10.02.2011 11:53  @AGRESSOR#10.02.2011 11:50
+
-
edit
 

Balancer

администратор
★★★★★
AGRESSOR> Что такое IM-клиент? %)

Instant Messenger :) ICQ, MSN, Jabber и т.п. Балабот работает через Jabber (Google Talk, LJTalk и др.)

Правда, пока ещё почти ничего не умеет :) Нужно будет научить его поиску, подписке на блоговые сообщения конкретных пользователей и т.п.
 
+
-
edit
 

Balancer

администратор
★★★★★
HolyBoy> Он сможет отсылать ответ других пользователей в IM клиент, в случае появившегося ответа на посланное сообщение?

Да, можно и нужно такое будет сделать.

HolyBoy> Как разлогиниться при нужде?

Никак :) Это не логин, а привязка JID'а к твоему аккаунту. А чтобы отменять потом ненужные будущие рассылки - можно будет как и отписываться от них, так и просто заставлять Бота замолкнуть на время или насовсем :)
 
+
-
edit
 

HolyBoy

аксакал

Balancer> Всё правильно, указывается :)

Нет, он барахлит.

Ты смотри, я послал потом два сообщения, сейчас ещё парочку и тишина. На форуме вообще не появились.
 
1 2 3 4 5 6 7

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru