понедельник, апреля 02, 2007

Форум ожил

Итак, форум снова жив. Новый хостинг меня пока радует, как скоростью работы, так и стабильностью. Заодно, в очередной раз вычистив форум от кучи спама, не поленился и нашёл какую-то зверскую капчу. Тесты показали, правда, что я сам далеко не всегда могу разобрать, что за код на ней написан. Но уж извините — от спама просто взвыть можно. После установки капчи спам загадочным образом прекратился. Дело в том что в phpBB есть такой глюк особенность — даже не прошедшие до конца регистрацию пользователи отображаются в списках. То есть даже если бот не смог оставить рекламное сообщение, он будет болтаться в пользовательских списках и «светить» ссылкой, прописанной в профиле. Мелочь, а неприятно. Сейчас же нет ни спама, ни этих «обрубков». Толи боты стали черезчур умными, толи баг этот был наконец пофикшен в последнем апдейте phpBB.

суббота, марта 17, 2007

Смена хостинга

Сайт «проектов» сменил хостинг. В связи с этим временно недоступен форум — его работа будет восстановлена в ближайшее время. Других новостей пока нет, в вялотекущем режиме ведётся разработка scepsis'а, в данный момент рефакторится механизм обработки соединений и принцип обработки сообщений. Цель — создать более общий механизм обработки событий в сервере, что позволит создавать более мощные дополнения и (по идее) подвести базу для разработки линковки серверов. Как водится, о сроках релиза гарантий никаких нет — времени на разработку очень немного.

вторник, января 09, 2007

Продолжаем чистить TODO-list


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

Что же эти изменения дают простым пользователям? Гейт iRCha теперь не будет "подвисать" , когда кто-то воспользуется командой !users (а с включенной антифлудной задержкой эта пауза была очень заметна). Spoiler же будет более равномерно распределять новости по каналам (ранее он выводил новости для каждого канала поочерёдно, весь список на канал).

суббота, января 06, 2007

Восстановлена работа сайтов

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

суббота, декабря 30, 2006

Небольшое объявление


В связи с временными сложностями у хостинга сайт проектов и форум пока недоступны. Обещают исправить как можно скорее - ждём. Исходные тексты и дистрибутивы по-прежнему доступны для скачивания с sourceforge.

понедельник, декабря 18, 2006

Очищаем TODO-list


Только что с горем пополам закончил ещё одно давно запланированное масштабное мероприятие - написание статьи об устройстве протокола ичата. Заняло это, надо сказать, порядком времени. Если под конец написано не слишком разборчиво - прошу меня извинить, с трудом попадал пальцами в нужные кнопки. Возможно, статья ещё претерпит некоторые изменения. Пока же представляю, так сказать, на суд широкой общественности: Intranet Chat - Описание протокола

Spoiler - второе рождение


На днях сделал полезное и давно запланированное дело - переписал-таки заново Спойлера. Спойлер - это мой первый IRC бот, изначально предназначавшийся для того чтобы сбрасывать новости с локального сетевого форума в IRC-каналы. Написан он был жутко коряво, узко-специализирован на phpBB, зато в рекордные сроки. Разумеется, со временем я собирался довести его до ума.

И вот, не прошло и года, задуманное воплощено в жизнь. Новый спойлер стартовал сразу с версии 2.0, что помимо указания на его тёмное прошлое означает ещё и то, что функций в нём несколько прибавилось. Теперь это полноценный feed-reader, умеющий читать как RSS, Atom, так и RDF ленты новостей. Как уже у нас повелось, бот конфигурируется с помощью yan-framework и его xml-подмножества Nuts, что позволяет пересобрать / видоизменить приложение избегая перекомпиляции.

Новый спойлер умеет читать неограниченное (теоретически) число лент, сохраняя в памяти последний "снимок" из определённого количества новостей. Также поддерживается возможность вывода новостей сразу на большое число каналов, причём каждый канал может быть подписан на своё подмножество новостей, а также указать формат их вывода (эта возможность может пригодиться для каналов, на которых запрещено использование цветов или же какого-либо другого специфического выделения, а также для использования специфических расширений).

Пока что не все функции бота доступны пользователям (ещё не реализована выдача новостей по запросу, а также выдача содержимого конкретного поста по запросу), так что ожидайте новостей!

воскресенье, ноября 26, 2006

Новое обновление

Дятел оборудован клювом. Им он долбит.


В одной из сетей, в которых установлен Scepsis, была замечена странная аномалия - сервер потреблял порядка 90% процессорного времени. Проведённое на скорую руку расследование выявило одну из возможных причин: арп-флуд. Однако флуд пошёл на спад, загрузка же осталась прежней. Проведённый анализ трафика сервера показал наличие огромного количества запросов на обновление списка контактов.

Поясню, в чём заключается проблема. Процесс обновления списка контактов в ичате выглядит следующим образом: клиент отправляет запрос на обновление, адресуемый всем клиентам (себе в том числе). Каждый клиент (!), получивший этот запрос, отправляет запрашиваемому клиенту refresh-ответ для каждой линии, на которой он присутствует.

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

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

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