Jabber-cправочник ManPage-страниц (проект)
Ментор | Яковлев Виктор |
Учебный семестр | Весна 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-робот (в виде клиентской программы), который по запросу имени страницы руководства выдает ее текст.
Чему вы научитесь?
- Реализация сетевого взаимодействия на верхних уровнях модели OSI
- Обработка текстовых данных
Какие начальные требования?
- Знание языка программирования Python
- Знание технического английского (хотя бы со словарем или переводчиком)
- Знание или желание изучить основы разметки HTML
Какие будут использоваться технологии?
- Веб-службы Google Talk или Я.Онлайн (требуется учетная запись gmail или yandex)
- Python-библиотеки для работы с протоколом XMPP (SleekXMPP или pyxmpp2)
- Иерархия файлов и пакеты в дистрибутивах Linux (для оценки 9-10 баллов)
Темы вводных занятий
Направления развития
- Форматирование текста ответов в виде HTML в соответствии его структурой
- Поддержка одновременной работы с несколькими соединениями
Критерии оценки
- 5 баллов. Реализовать Jabber-клиент, который в ответ на имя man-страницы выдает ее текст в соответствии с содержимым файла, либо сообщает о том, что файл с указанным именем не найден.
- 6 баллов. Должна быть реализована поддержка русского языка в правильной кодировке
- 7 баллов. Должно быть реализовано форматирование ответа в виде HTML в соответсвии со структурой исходной man-страницы
- 8 баллов. Поддержка одновременной работы с несколькими соединениями
- 9 баллов. Оформление результатов работы в виде Linux-демона, запускаемого через штатную систему rc-скриптов
- 10 баллов. Оформление результатов работы в виде RPM-пакета.