Jabber-cправочник ManPage-страниц (проект)

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
Ментор Яковлев Виктор
Учебный семестр Весна 2015
Учебный курс 1-й курс


Внимание! Данный проект находится в архиве и реализован не будет.

Что это за проект?

Jabber

Протокол Jabber предназначен для мгновенной передачи сообщений (как ICQ, Skype), используется в Google Talk (Hangouts), Я.Онлайн и Facebook Chat. Jabber-роботом (ботом) является специальный аккаунт в этой сети, сообщения в котором «читает» и «пишет» не человек, а программа. Боты могут быть реализованы как на стороне Jabber-сервера в виде plugin'а, так и в виде обычной клиентской программы, которая, с точки зрения сервера, не отличается от обычного чат-клиента.

Примером ботов являются сервисы Google Translate (аккаунты вида en2ru@bot.talk.google.com, ru2en@bot.talk.google.com и т. д.). Взаимодействие с таким ботом осуществляется следующим образом: пользователь пишет сообщение на исходном языке боту, а от бота приходит ответ, в котором содержится соответствующий перевод текста.

ManPages

Страницы UNIX‑руководства (ManPage) – это набор текстов документации по системе команд (группы 1, 6, 8), системным вызовам ядра (группа 2), стандартной библиотеке Си и POSIX (группы 3 и 3p), форматам файлов (группа 5). В UNIX-подобных системах отображение страницы выполняется с помощью команды man [номер_группы] имя_руководства; результат отображается в терминале, из которого запущена команда. Физически man-страницы реализованы в виде обычного текста (как правило, сжатого с помощью gzip), который содержит специальные теги, которые описывают его структуру (заголовок, разделы, выделения цветом и шрифтом и т. д.).

Постановка задачи

Требуется реализовать Jabber-робот (в виде клиентской программы), который по запросу имени страницы руководства выдает ее текст.

Чему вы научитесь?

  1. Реализация сетевого взаимодействия на верхних уровнях модели OSI
  2. Обработка текстовых данных

Какие начальные требования?

  1. Знание языка программирования Python
  2. Знание или желание изучить основы разметки HTML

Какие будут использоваться технологии?

  1. Веб-службы Google Talk или Я.Онлайн (требуется учетная запись gmail или yandex)
  2. Python-библиотеки для работы с протоколом XMPP (SleekXMPP или pyxmpp2)
  3. Иерархия файлов и пакеты в дистрибутивах Linux (для оценки 9-10 баллов)

Темы вводных занятий

  1. Обзорное занятие по основам сетевых технологий
  2. Занятие по теме подготовки RPM-пакетов

Направления развития

  1. Форматирование текста ответов в виде HTML в соответствии его структурой
  2. Поддержка одновременной работы с несколькими соединениями

Критерии оценки

  • 4 балла. Реализовать Jabber-клиент, который в ответ на имя man-страницы выдает ее текст в соответствии с содержимым файла, либо сообщает о том, что файл с указанным именем не найден.
  • 5 баллов. Должна быть реализована поддержка русского языка в правильной кодировке
  • 6 баллов. Должно быть реализовано форматирование ответа в виде HTML в соответсвии со структурой исходной man-страницы
  • 8 баллов. Поддержка одновременной работы с несколькими соединениями
  • 9 баллов. Оформление результатов работы в виде Linux-демона, запускаемого через штатную систему rc-скриптов
  • 10 баллов. Оформление результатов работы в виде RPM или DEB-пакета.