Разработка сервиса, упрощающего потенциальным пользователям получение информации (новостей) о Национальном исследовательском университете Высшая школа экономики

Выбор платформы и языка разработки сервиса. Разработка структуры используемой базы данных. Описание принципа работы чат-бота в Telegram. Описание алгоритма получения, отправки и сохранения новостей ВКонтакте. Разработка функции администрирования сервиса.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 03.07.2017
Размер файла 1,8 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Содержание

  • Введение
  • 1. Определение проблемы
  • 2. Выбор платформы для разработки
  • 3. Средства и методы разработки
    • 3.1 Язык программирования
    • 3.2 СУБД
    • 3.3 Telegram Bot API
    • 3.4 API ВКонтакте
  • 4. Категоризация источников
    • 4.1 Группы VK
    • 4.2 Официальный сайт ВШЭ
    • 4.3 Категоризация приходящих сообщений с использованием техники Машинного обучения
  • 5. Структура используемой базы данных
    • 5.1 Таблица Users
    • 5.2 Таблица Groups
    • 5.3 Таблица UsersGroups
    • 5.4 Таблица Categories
    • 5.5 Таблица Posts
    • 5.6 Таблица RSS
    • 5.7 Таблица Reviews
    • 5.8 Таблица Buildings
    • 5.9 Таблица ToCat
  • 6. Принцип работы чат-бота в Telegram
  • 7. Настройка удаленного сервера
  • 8. Получение новостей из ВКонтакте
    • 8.1 Алгоритм получения, отправки и сохранения новостей
  • 9. Получение новостей через RSS
    • 9.1 Алгоритм получения, отправки и сохранения новостей
  • 10 Вечерняя Вышка
    • 10.1 Алгоритм работы Вечерней Вышки
  • 11. Администрирование
    • 11.1 Массовая рассылка сообщений
    • 11.2 Добавление нового источника новостей в базу данных
    • 11.3 Отмена функций администрирования
    • 11.4 Информация о количестве пользователей
  • 12. Определение ближайшего корпуса НИУ ВШЭ
  • 13. Обработка ошибок (исключений)
  • 14. Контроль версий (процесса разработки)
  • 15. Файл конфигураций
  • 16. Результаты
  • 17. Статистика
    • 17.1 Количество пользователей
    • 17.2 Популярность групп для получения новостей, как только они выходят
    • 17.3 Популярность групп в Вечерней Вышке
  • Заключение
  • Список использованных источников

Введение

Цель работы

Целью работы является разработка сервиса, упрощающего потенциальным пользователям получение информации (новостей) о Национальном исследовательском университете Высшая школа экономики (далее - ВШЭ).

Задачи

а) определение проблемы

б) постановка целей и задач для разрабатываемого проекта;

в) разработка структуры проекта;

г) разработка проекта;

д) тестирование и анализ недочетов;

е) публичный запуск проекта.

1. Определение проблемы

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

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

Для анализа обратимся к данным выручки сегментов мировой индустрии (фактическая за 2015 год и ожидаемая за 2020 год) средств массовой информации на таблице ниже [8]:

Таблица 1. Выручка сегментов мировой индустрии развлечений и СМИ в 2015 и 2020 гг. (млн долл. США)

На 2015 год (млн долл. США)

Индустрия

На 2020 год (млн долл. США)

34623

Наружная реклама

42741

43896

Радио

48817

83742

Издание журналов

83181

113251

Книгоиздание

122953

130515

Газеты

121067

153651

Интернет-реклама

260356

167489

Телевизионная реклама

210730

180638

Деловая информация (B2B)

209309

Из таблицы можно выделить два основных тренда: рынок будет продолжать свой рост, причем рынок цифрового контента (ТВ и Интернет) растет значительно стремительнее. Рынок печати при этом, предположительно, будет переживать стагнацию и падение. Таким образом, людям предстоит потреблять всё больше и больше цифрового контента.

При это издавна печатные издания были основными источниками новостной информации, но сейчас изданиям из этой отрасли приходится переформатироваться под современные условия рынка. Крупнейшие мировые издательства начали переход в цифровое пространство еще в 2009 году, и результаты довольно показательны [9]:

Таблица 2. Статистика присутствия печатных СМИ в цифровом пространстве

Издание

Лайков Facebook, шт.

Подписчиков в Twitter, шт.

Tweet-(ов), шт.

На Twitter с

Punch

1,240,877

1,650,000

237,000

Март, 2009

Vanguard

2,500,703

1,410,000

276,000

Май, 2009

The Sun

895,241

1,230,000

228,000

Март, 2013

Guardian

527,249

804,000

92,900

Июль, 2009

Thisday

10,338

694,000

70,000

Февраль, 2010

The Nation

1,596,281

421,000

59,800

Октябрь, 2009

Daily Trust

950,423

402,000

184,000

Август, 2009

Leadership

1,189,240

368,000

279,000

Февраль, 2011

Nigeria Tribune

749,246

99,600

429,000

Июнь, 2009

Independence

731,401

8,419

127,000

Март, 2012

New Telegraph

174,369

2,770

110,000

Январь, 2014

The Point

7,009

17,500

4,403

Декабрь, 2009

С уверенностью можно сказать, что социальные сети превращаются в один из основных источников новостей. Важными критериями являются удобство и скорость получения информации.

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

Таблица 3. Статистика самых популярных новостных веб-сайтов на апрель 2017 года [10]

CМИ

Число уникальных посетителей/мес.

Huffington Post

110,000,00

CNN

95,000,000

New York Times

70,000,000

Fox News

65,000,000

NBC News

63,000,000

Mail Online

53,000,000

Washington Post

47,000,000

The Guardian

42,000,000

WSJ

40,000,000

Как видно из таблицы 3, большая часть рейтинга занята изданиями, представленными в печатном виде. Из этого следует, что в цифровом виде на данный момент возможно можно получать как новости от традиционных информационных агентств, проходящих процесс переформатирования, так и современных агентств, изначально создававшихся в цифровом формате.

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

В России, как видно из рис. 1, самой популярной социальной сетью является VK:

Рис. 1. Количество уникальных пользователей социальных сетей в месяц (тысяч пользователей) [11].

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

Поиск по сообществам в социальной сети VK по запросу «ВШЭ» дает более 9500 результатов [12]. В выдаче присутствуют как официальная группа университета, так и просто тематические группы. Таким образом, чтобы иметь возможность охватить весь поток информации о ВШЭ, приходится следить за обновлениями более чем одной группы.

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

Другим актуальным источником информации является официальный сайт ВШЭ [13], который, к сожалению, тоже не имеет какой-либо агрегации новостей или уведомлений об их выходе.

Таким образом, проблема агрегации новостей об университете в удобном виде является нерешенной.

2. Выбор платформы для разработки

Стандартными решениям для разработки сервиса являются либо создание нового веб-сайта/приложения, через которое будет доставляться контент, либо использование готовой платформы. Первый вариант является более затратным со всем аспектов и менее универсальным: потребуются клиенты под все актуальные на данный момент платформы (Windows, Android, iOS, macOS и прочие). С пользовательской точки зрения это также неудобно, поскольку потребуются установка и использование еще одного приложения.

Популярным на данный момент трендом среди универсальных платформ являются чат-боты [18]. Это платформы, позволяющие пользователям взаимодействовать при помощи текстовых сообщений. Среди популярных платформ для построения чат-ботов [19] выгодно выделяется Telegram. Telegram в своей сущности - из популярнейших текстовых мессенджеров [20], имеющий клиенты для всех современных платформ [21]: Android, iOS (iPhone/iPad), Windows Phone, Windows, macOS, Linux, а также веб-версия, доступная на всех веб-браузерах, выпущенных после 2012 года.

С точки построения чат-ботов Telegram обладает инструментарием под названием Botfather. Он позволяет быстро настроить внешнее представление бота для пользователей (его никнейм, имя пользователя, аватар), а также сгенерировать ключ для Telegram API, посредством которого будет взаимодействие пользователя с сущностью бота, реализующей исполняемый код. Таким образом, разработка программы, выполняющей алгоритмы работы бота, не имеет жесткой привязки к платформе, её выбор будет описан ниже.

3. Средства и методы разработки

3.1 Язык программирования

Для реализации агрегатора был выбран язык программирования Python 3. Python - это высокоуровневый интерпретируемый язык программирования. Ниже представлены лишь некоторые преимущества Python [14]:

· динамическая типизация;

· модульность;

· поддержка ООП;

· автоматическая сборка «мусора»;

· отсутствие утечек памяти;

· кроссплатформенность.

Динамическая типизация позволяет не объявлять тип переменной заранее.

Модульность означает две вещи: возможность написать свой модуль, который можно будет использовать в других программах; наличие большого количества модулей, как встроенных, так и сторонних, которые можно удобно использовать при написании программы.

Python поддерживает объектно-ориентированное программирование, как и большинство современных языков программирования.

Сборкой «мусора» называют одну из форм управления памятью. По умолчанию в Python работает автоматическая сборка «мусора». Это значит, что периодически Python запускается сборщика «мусора», который удаляет объекты, которые больше не будут востребованы программой, тем самым освобождая память.

Отсутствие утечек памяти возможно благодаря автоматической сборке «мусора».

Кроссплатформенность означает, что программа будет выполняться и функционировать одинаково на всех операционных системах.

Эти и многие другие преимущества Python делают его отличным выбором для разработки чат-бота для мессенджера Telegram.

3.2 СУБД

Для хранения данных о пользователях, группах, новостях и другой информации необходимо использовать базу данных. В качестве системы управления базой данных была выбрана встраиваемая реляционная СУБД SQLite.

У SQLite можно выделить следующие преимущества [15, 16]:

· простота использования;

· отсутствие необходимости настройки сервера СУБД;

· свободная лицензия;

· кроссплатформенность;

· высокая скорость выполнения простых операций по сравнению с MySQL и PostgreSQL [17];

· высокая производительность по сравнению с MySQL и PostgreSQL [16];

· база данных хранится всего в одном файле;

Конечно, у SQLite есть и недостатки по сравнению с другими популярными СУБД: отсутствие пользовательского управления, плохая работа с транзакциями больше 50 Мбайт, невозможность дополнительной настройки для улучшения производительности. Но все эти недостатки никак не скажутся на работе агрегатора новостей, а учитывая все достоинства данной СУБД, выбор SQLite кажется очевидным.

3.3 Telegram Bot API

Telegram Bot API - это интерфейс, основанный на HTTP, созданный для разработчиков, заинтересованных в создании ботов для Telegram [24]. Чтобы воспользоваться функциями Telegram Bot API необходимо получить специальный ключ аутентификации. Каждому боту при создании присваивается свой уникальный ключ.

Запросы к Telegram Bot API выглядят следующим образом: https://api.telegram.org/bot<token>/METHOD_NAME?SOME_PARAMETERS, где <token> - это ключ аутентификации, полученный при регистрации бота, METHOD_NAME - это название метода обращения к Telegram Bot API, а SOME_PARAMETRS - это параметры метода.

В ответ Telegram Bot API возвращает JSON-объект, который обязательно содержит поле «ok», принимающее значение «True» или «False». Если поле «ok» имеет значение «True», то JSON-объект так же содержит поле «result» с результатом запроса. Если поле «ok» имеет значение «False», то JSON-объект включает себя еще поле «description», в котором объясняется причина возникновения ошибки.

Для упрощения работы с Telegram Bot API будет использован Python-модуль pyTelegramBotAPI [28]. С помощью этого модуля достаточно один раз присвоить ключ аутентификации bot = telebot.TeleBot(“TOKEN”), после чего, обращение к методам Telegram Bot API сводится к bot.METHOD_NAME(SOME_PARAMETERS).

3.4 API ВКонтакте

API ВКонтакте - это интерфейс, позволяющий получать информацию из базы данных сайта vk.com при помощи HTTP-запросов (HTTP POST/GET/DELETE) к серверу [27]. Для работы бота достаточно запросов HTTP GET, а также в отличие от Telegram Bot API, для использования API ВКонтакте по данному сценарию не нужно получать специальный ключ API, чтобы совершать запросы, направленные на получение общедоступной информации.

Запросы к API Вконтакте выглядят следующим образом: https://api.vk.com/method/METHOD_NAME?SOME_PARAMETERS, где METHOD_NAME - это название метода в API ВКонтакте, а SOME_PARAMETERS - это некоторые параметры запроса, например, версия API ВКонтакте или id пользователя.

API ВКонтакте возвращает в ответ JSON-объект, либо с запрошенными данными, либо с сообщением об ошибке.

Для облегчения работы с API ВКонтакте будет использован Python-модуль vk [29]. Сначала необходимо создать новую сессию session = vk.Session(), затем надо подключиться к API ВКонтакте api = vk.API(session, v='5.63', timeout=10), где v - это версия API ВКонтакте, а timeout - это время ожидания ответа от сервера. После этого обращение к методам API ВКонтакте происходит следующим образом: api.method.name(parameter=value), где method.name - это метода, к которому идет обращение, parameter - это название параметра этого метода (может быть несколько), а value - это значение параметра.

4. Категоризация источников

4.1 Группы VK

В качестве источников новостей были выбраны группы, имеющие репутация проверенных и освещающие разные сферы жизни университета.

«Высшая школа экономики» - официальное представительство университета в VK, публикующее новости о предстоящих конференциях, лекциях и олимпиадах, внеучебных мероприятиях ВУЗа.

«The Вышка» - группа, созданная студентами и выпускниками ВШЭ, в которой в основном публикуются новости, связанные с внеучебной деятельностью студентов. Отличительной чертой от официально группы университета является наличие обзоров состоявшихся мероприятий, а не только анонсы предстоящих.

«THE WALL» также является публичной группой студентов ВШЭ, однако основными тематиками являются новости о моде, светской жизни России, иногда политика.

«HSE Press» - издание от студентов, в котором публикуются новости, посвященные студенческим мероприятиям, а также современному молодежному образу жизни. сервис база данные администрирование

«Ингруп СтС НИУ ВШЭ» - «одна из старейших студенческих организаций НИУ ВШЭ, хранители корпоративных традиций Вышки. Уже более 17 лет СтС создает в Вышке уникальные проекты и мероприятия, делая внеучебную жизнь университета по-настоящему выдающейся».

«ТелеВышка» - «новостной и развлекательный видеоканал от Ингруп СтС. Мы рассказываем о жизни родного университета, о главных развлекательных и образовательных событиях в Вышке».

«Студенческий Спортивный Клуб НИУ ВШЭ» - группа о спортивных мероприятиях, связанных с университетом и его студентами.

«Журнал DOXA» - Студенческий журнал DOXA был создан студентами ФГН ВШЭ в феврале 2017 г. Авторы публикуют переводы, рецензии, интервью и эссе по самым различным темам, кроме того, они делятся своей точкой зрения на различные условия студенческой и образовательной жизни и не боятся давать критические комментарии.

«STUDLIFE HSE» - группа, посвященная студенческим проектам НИУ ВШЭ, а также мероприятиям, проходящим в стенах НИУ ВШЭ.

4.2 Официальный сайт ВШЭ

Сайт университете предоставляет RSS-ленты по следующим категориям:

а) все новости;

б) Высшая школа экономики - Москве и москвичам;

в) университетская жизнь;

г) свободное общение;

д) общество;

е) экспертиза;

ж) поступающим;

з) наука;

и) образование;

к) новости прессы;

л) анонсы событий.

Таким образом, источники новостей заранее поделены по категориям в зависимости от освещаемых тематик.

4.3 Категоризация приходящих сообщений с использованием техники Машинного обучения

Категоризация текста получаемых сообщений реализована с использованием библиотеки scikit-learn для Python. Библиотека классификаторы, регрессионные модели и кластеры, в том числе метод опорных векторов (Метод опорных векторов, n.d.), «случайный лес» (Random forest, б.д.), градиентный ускоритель (Gradient boosting, б.д.), метод k-средних (k-means, б.д.), DBSCAN (DBSCAN, б.д.) и множество других. Данная библиотека крайне универсальна и позволяет производит обучение для различных структур данных, в том числе и текстовых.

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

В проекте были выделены следующие категории, по которым производилось обучение:

а) образование;

б) мероприятия;

в) предпринимательство;

г) политика;

д) наука;

е) культура;

ж) спорт.

Данные категории хранятся в таблице Categories как название для отображения (name) и уникальный id, состоящий из английских букв без пробелов со структурой cat.{название категории на английском}, список может быть расширен в любой момент.

Для обучения была выгрузка текстов сообщений из используем сообществ ВКонтакте при помощи VK API, а также сообщений с официального сайта ВШЭ - в общей сложности около 2000 сообщений. Для ручной оценки сообщений был разработан дополнительный интерфейс для бота, вызываемый командой /learn и позволяющий выбрать категорию при помощи виртуальных клавиш, причем данная команда доступна только пользователям, включенным в список администраторов в файле конфигурации.

Рис. 2. Интерфейс категоризации текстов.

Однако из-за особенностей построения предложений на русском языке было принято решение систематически переводить все тексты внутри системы на английский язык, обладающий более четкой структурой предложений (строгий порядок слов, служебных конструкций, отсутствие словоформ). Для этого было использовано расширение Python под названием translate, которое осуществляет перевод текстов через сервис Google Translate, не требуя персонального ключа API в отличие от официального API Google Cloud, на котором базируется Google Translate. Данный сервис также построен на принципах Машинного обучения и Deep learning (Hsu, 2016) и отлично подходит для автоматизированного перевода текстов.

Далее разбитые на категории сообщения были преобразованы в отдельные файлы со случайными названиями и помещены в директории /{id категории}/{файл} - такое размещение требует метод load_files модуля sklearn.datasets.

Наличие категории и некоторой выборки (train set) позволяет алгоритмам производить категоризацию получаемых на вход текстов автоматически. Качество работы алгоритма/их комбинаций определяется параметром AUC - площадью под ROC-кривой (Receiver Operating Characteristic), значение которого варьируется в пределах [0;1]. Условно разбить показатели можно следующим образом:

Таблица 4. Категории качества показателя AUC

Интервал AUC

Качество модели

0.9-1.0

Отличное

0.8-0.9

Очень хорошее

0.7-0.8

Хорошее

0.6-0.7

Среднее

0.5-0.6

Неудовлетворительно

Целью являлось достижение точности не ниже 0.7.

Цель была достигнута при помощи:

а) предобработки обучающих текстов, токенизации, фильтрации при помощи компонента CountVectorizer из sklearn.feature_extraction.text;

б) подсчета словоупотреблений (N-грам слов) также при помощи CountVectorizer;

в) разделения количества употреблений каждого слова в документе на общее количество слов в документе - признака tf - Частоты термина, а также снижения веса слова, появляющегося во многих документах в категории - tf-idf - «Term Frequency times Inverse Document Frequency»;

г) использования Наивного Байесовского классификатора - компонента MultinomialNB в sklearn.naive_bayes.

Тесты показывают AUC, варьирующийся в районе 0.8:

Рис. 3. Результат одного из результатов работы категоризатора

Это является хорошим результатом, учитывая наличие хоть и тематической, но не слишком объемной обучающей базы.

Определенная категория помещается в базу данных как один из параметров сообщения (поле cat в таблице Posts), а также может быть выведено в бот в сообщении с новостью:

Рис. 4. Отображение категорий сообщений в боте

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

5. Структура используемой базы данных

Использование реляционной базы данных необходимо для хранения информации о пользователях, их подписках, списка информационных ресурсов, получаемых из ресурсов сообщений, их свойств и другой вспомогательной информации.

Структура базы данных схематично выглядит следующим образом:

Рис. 5. Схема базы данных сервиса

Ниже будут более подробно рассмотрены таблицы со схемы, изображенной на рис. 2. SQL-запросы для генерации таблиц - в приложении.

5.1 Таблица Users

Хранит в себе данные о пользователях сервиса.

а) id - уникальный идентификационный номер пользователя в Telegram. Также является уникальным в базе данных сервиса;

б) дата регистрации пользователя в чат-боте;

в) текущее состояние работы с ботом (системный флаг, показывающий, на какой операции находится пользователь);

г) username - никнейм пользователя, установленный в профиле в Telegram;

д) first_name - имя пользователя в Telegram;

е) last_name - фамилия пользователя в Telegram.

5.2 Таблица Groups

Хранит перечень источников новостей и сведения о них.

а) id - уникальный номер группы в VK или название категории RSS в формате rss:{название категории};

б) name - отображаемое в клиенте название группы;

в) g_link - ссылка на ресурс.

5.3 Таблица UsersGroups

Таблица является промежуточной для связи многие-ко-многим (many-to-many) между таблицами Users и Groups и отражает, какой пользователь является подписчиком каких групп.

а) uid - id пользователя;

б) gid - id группы;

в) upget - флаг, означающий, что пользователь подписан на группу для получения новостей по мере их выхода;

г) fetget - флаг, означающий, что пользователь подписан на получения новостей из группы в Вечерней Вышке.

5.4 Таблица Categories

В данной таблице хранятся категории, на которые разделяются сообщения при помощи Машинного обучения.

д) id - уникальный id категории;

е) name - отображаемое в интерфейсе название категории.

5.5 Таблица Posts

Таблица, в которой хранятся получаемые из групп VK, содержащихся в таблице Groups, новости и их параметры.

а) id - уникальный номер новости в VK и в данной базе данных;

б) gid - номер группы, из которой была получена новость;

в) p_date - дата публикации новости;

г) p_text - текст новости;

д) p_likes - количество отметок нравится у сообщения на момент запроса;

е) p_reposts - сколько раз пользователи поделились данным сообщением на момент запроса.

ж) cat - id категории сообщения из таблицы Categories.

5.6 Таблица RSS

Аналогична таблице Posts, но служит для хранения новостей, полученных через RSS.

а) rss_id - id RSS-ресурса, из которого получена новость;

б) rss_date - дата публикации новости;

в) rss_link - ссылка на новость;

г) rss_title - заголовок новости.

5.7 Таблица Reviews

Предназначена для хранения отзывов, оставляемых пользователями о боте.

а) uid - id пользователя;

б) rev_text - текст отзыва;

в) rev_date - дата, когда отзыв был оставлен.

5.8 Таблица Buildings

Таблица, хранящая данные об учебных корпусах московского кампуса НИУ ВШЭ.

а) id - порядковый номер здания в таблице;

б) address - адрес здания;

в) lon - координата долготы здания;

г) lat - координата широты здания.

5.9 Таблица ToCat

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

а) post - текст сообщения;

б) cat - id категории, к которой принадлежит сообщение;

д) sentto - id пользователя, который производил категоризацию.

6. Принцип работы чат-бота в Telegram

Чат-боты в Telegram - это специальный вид аккаунтов, который не требует номера мобильного телефона для регистрации. Взаимодействие пользователя с ботом происходит посредством отправки специальных сообщений или команд в отдельный чат с ботом (Bots: An introduction for developers, n.d.).

Взаимодействие пользователя с разрабатываемым в данной дипломной работе чат-ботом происходит с помощью следующих команд и сообщений (могут быть представлены в виде специальных кнопок):

· Команда /start. Если ее вводит новый пользователь, то происходит регистрация пользователя в базе данных и отправляется приветственное сообщение. Если команду использует уже зарегистрированный пользователь, то отправляется другое приветственное сообщение.

· Команда /stop. Если ее вводит зарегистрированный пользователь, то происходит отписка пользователя от всех групп, на которые он был подписан. Если эту команду вводит незарегистрированный пользователь, то бот отправит сообщение о том, что пользователь не зарегистрирован и предложит нажать команду /start.

· Сообщение «Выбрать группы для подписки». Если есть группы, на которые пользователь еще не подписан, то выводятся кнопки «Далее», «Выбрать все» и список групп, на которые пользователь еще не подписан. Если пользователь подписан на все группы, то будет отправлено сообщение, уведомляющее пользователя об этом.

· Сообщение «Выбрать группы для отписки». Работает по аналогичному принципу, как сообщение «Выбрать группы для подписки», только вместо подписки на группы, происходит отписка от них.

· Сообщение «Подписки». Показывает список групп, на которые подписан пользователь. Если пользователь не подписан ни на одну группу, бот присылает соответственное сообщение.

· Сообщение «Настройки». Показывает кнопки «Выбрать группы для подписки», «Выбрать группы для отписки» и «Главное меню».

· Сообщение «Главное меню». Возвращает в главное меню с кнопками «Подписки», «Настройки», «О проекте» и «Оставить пожелания».

· Сообщение «О проекте». Выводит ознакомительную информацию о данном чат-боте.

· Сообщение «Оставить пожелания». Выводит пользователю сообщение с предложением оставить отзыв. Отзыв пользователя записывается в отдельную таблицу в базе данных.

· Отправка геолокации. Если пользователь отправит чат-боту свою геолокацию, то в ответ будет прислан адрес и местоположение ближайшего учебного корпуса НИУ ВШЭ.

Данный чат-бот собирает новости из заранее определенных групп в социальной сети ВКонтакте, а также с официального сайта НИУ ВШЭ. Новые статьи отправляются пользователям и записываются в базу данных.

7. Настройка удаленного сервера

Для непрерывной работы чат-бота необходимо запускать его на сервере. Для этого был получен виртуальный сервер от научного руководителя дипломной работы. Для подключения к серверу необходимо открыть терминал в любой Unix-подобной операционной системе и ввести следующую команду: ssh -p 8096 ubuntu@hse.auditory.ru, где ssh - это команда подключения к серверу, -p 8096 - это номер порта подключения, ubuntu - это имя пользователя, а hse.auditory.ru - адрес сервера. После чего необходимо ввести пароль для получения доступа к серверу.

На сервер был установлен Python 3.5 с помощью следующей команды: sudo apt-get install python3.

Для установки Python-модулей необходимо установить систему управления пакетами pip. Это было сделано с помощью следующей команды: sudo apt-get install python3-pip.

Были установлены Python-модули для работы с Telegram API Bot и API ВКонтакте с помощью команд sudo pip3 install pyTelegramBotAPI и sudo pip3 install vk соответственно.

Для непрерывной работы программы, даже после завершения сессии, необходимо было установить приложение Screen. Screen - это программа, которая обеспечивает работу нескольких сессий внутри одного окна. Установка программы Screen осуществляется с помощью команды sudo apt-get install screen.

Данные программы и модули обеспечивают непрерывную работу программы на удаленном сервере.

8. Получение новостей из ВКонтакте

Как было сказано ранее, для взаимодействия с сайтом ВКонтакте используется API ВКонтакте, а также специальный Python-модуль vk, который упрощает взаимодействие с API ВКонтакте.

8.1 Алгоритм получения, отправки и сохранения новостей

1. Запуск процедуры запроса новостей;

2. Запрос идентификаторов групп ВКонтакте;

3. Для каждой группы:

3.1. Обращение с применением vk - возвращаемым параметром является JSON-объект;

3.2. Для полученной структуры находится максимальное время (время самого последнего сообщения);

3.3. Из базы данных получается значение даты самого нового записанного сообщения;

3.4. Если дата последнего полученного сообщения новее полученной из базы данных сообщений, то происходит выборка всех сообщений, чья дата новее;

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

3.6. Все новые сообщения отправляются пользователям;

3.7. Новые сообщения дописываются в базу данных;

4. Запускается рекурсивный вызов процедуры с таймером-задержкой в минуту.

9. Получение новостей через RSS

Для упрощения процесса получения новостей в формате RSS используется плагин feedparser, который упрощает структуру единоразового запроса до feedparser.parse({ссылка на ресурс}). При этом возвращается JSON-объект, являющийся массивом сообщений и параметров. В случае со структурой, возвращаемой сайтом ВШЭ, сообщения можно разграничить ключевым параметром entries.

Каждое вхождение имеет дату публикации (published) в формате %d/%m/%Y/%H/%M/%S, где %d - день публикации, %m - месяц, %y - год, %h - час, %m - месяц, %s - секунда. Текст сообщения идет как значение параметра value.

9.1 Алгоритм получения, отправки и сохранения новостей

1. Запуск процедуры запроса новостей;

2. Запрос адресов источников, являющихся RSS;

3. Для каждого RSS-источника:

3.1. Обращение с применением feedparser - возвращаемым параметром является JSON-объект;

3.2. Для полученной структуры находится максимальное время (время самого последнего сообщения);

3.3. Из базы данных получается значение даты самого нового записанного сообщения;

3.4. Если дата последнего полученного сообщения новее полученной из базы данных сообщений, то происходит выборка всех сообщений, чья дата новее;

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

3.6. Все новые сообщения отправляются пользователям;

3.7. Новые сообщения дописываются в базу данных;

4. Запускается рекурсивный вызов процедуры с таймером-задержкой в полчаса.

10. Вечерняя Вышка

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

Сортировка новостей в сообщении происходит от самой популярной новости до менее популярной. Популярность новости высчитывается как сумма количества пользователей ВКонтакте, которым понравилась данная новость и увеличенное в 10 раз количество пользователей ВКонтакте, которые поделились данной новостью.

10.1 Алгоритм работы Вечерней Вышки

1. Проверка времени системы. Если время в промежутке от 21:00 и 21:01, то процедура выполняется.

2. Запрос идентификаторов групп ВКонтакте;

3. Для каждой группы:

3.1. Подсчет количества новостей в базе данных;

3.2. Происходит обращение с применением vk - возвращаемым параметром является JSON-объект;

3.3. Для каждой новости происходит проверка выходила эта новость за последние сутки или нет. Если выходила, то происходит обновление информации в базе данных о данной новости;

3.4. Подсчет количества новостей в базе данных;

3.5. Если новостей больше 6, то происходит удаление новостей, которые старше двух суток;

4. Выборка пользователей, которые подписаны хотя бы на одну группу для Вечерней Вышки;

5. Для каждого пользователя:

5.1. Выборка групп для Вечерней Вышки, на которые подписан пользователь;

5.2. Для каждой группы:

5.2.1. Запрос всех новостей, вышедших за последние сутки, отсортированных по популярности;

5.2.2. Добавление этих новостей в общий массив;

5.3. Сортировка массива по популярности (от большего к меньшему);

5.4. Составление и отправка сообщения с новостями;

6. Запускается рекурсивный вызов процедуры с таймером-задержкой в минуту.

11. Администрирование

Для упрощения работы с базой данных была разработана специальная система администрирования. Функционал данной системы доступен только тем пользователям, чьи идентификационные номера прописанных в файле конфигураций. Администрирование происходит с помощью определенных стикеров в мессенджере Telegram. У каждого стикера есть уникальный ключ, который дает сигнал программе о том, какое действие необходимо произвести дальше.

11.1 Массовая рассылка сообщений

После отправки стикера, отвечающего за массовую рассылку сообщений чат-бот разошлет всем пользователям сообщение, отправленное администратором после стикера. Результат представлен на рисунке #.

Рис. 6. Массовая рассылка сообщений

11.2 Добавление нового источника новостей в базу данных

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

Рис. 7. Добавление источника новостей в базу данных

11.3 Отмена функций администрирования

После отправки стикера, отвечающего за отмену, чат-бот выходит из режима администрирования. Этот стикер применяется в тех случая, когда предыдущие стикеры были отправлены случайно. Результат представлен на рисунке 6.

11.4 Информация о количестве пользователей

После отправки этого стикера, чат-бот присылает число пользователей. Этот функционал реализован для получения информации о количестве пользователей, без обращения к базе данных через сервер.

Рис. 8. Отмена функций администрирования и информация о количестве пользователей.

12. Определение ближайшего корпуса НИУ ВШЭ

В качестве дополнительной функции была разработана функция определения ближайшего учебного корпуса московского кампуса НИУ ВШЭ по отношению к отправленной пользователем геолокации.

Координаты локации пользователя сравниваются с координатами учебных корпусов НИУ ВШЭ, хранящимися в таблице базы данных. Расстояние между пользователем и зданиями НИУ ВШЭ высчитывается по формуле гаверсинусов:

Где - широта и долгота двух точек в радианах, - разница координат по долготе, а - угловая разница.

Чтобы узнать расстояние между точками в километрах, необходимо умножить угловую разницу на радиус Земли.

После подсчета расстояния между пользователем и всеми учебными корпусами НИУ ВШЭ выбирается самый ближайший корпус. Затем пользователь получает сообщение с адресом и геолокацией ближайшего учебного корпуса НИУ ВШЭ.

Рис. 9. Определение ближайшего корпуса НИУ ВШЭ

13. Обработка ошибок (исключений)

Каждая из чувствительных к внешним ответам процедура имеет раздел исключений, чтобы обеспечить бесперебойную работу сервиса. В частности, обработчик ошибок предусмотрен в процедурах, запрашивающих данные у VK через VK API и у RSS-источников. Также обработчик ошибок предусмотрен при всех попытках отправить какое-либо сообщение пользователю в Telegram.

Основная возможная причина возникновения ошибки - пропажа или отсутствие Интернет-соединения на сервере, на котором расположен сервер, либо же при возникновении проблем/незапланированных работ на серверах источников новостей.

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

С использованием дополнительного пакета traceback в сервисе также реализован процесс ведения лог-файла, в котором структурировано хранится вся информация о возникающих в процессе работы программы ошибках: при работе какой процедуры она возникла, в какое время, в чем заключалась ошибка.

Анализ лог-файла позволяет структурировать информацию и с использованием систематического подхода понять, с какими трудностями чаще всего сталкивается программа при работе.

14. Контроль версий (процесса разработки)

Важным правилом при разработке любого программного продукта является его версионность, то есть возможность отслеживать весь процесс разработки от первой отладки и до последнего релиза. Таким образом удается отследить, в какой момент появился тот или иной функционал, в какой момент возникла та или иная ошибка. К тому же это позволяет удобно вести синхронный процесс разработки продукта несколькими разработчиками одновременно, иметь возможность увидеть, какое изменение было внесено тем или иным участником и когда. Не в последнюю очередь это позволяет синхронизировать код между средами разработок участников.

В проекте контроль версий реализован при помощи сервиса Github [25]. Github является крупнейшим веб-ресурсом для хостинга IT-проектов, позволяющим пользователям размещать свои проекты в открытом или закрытом доступе, допускать других пользователей к совместной работе, предоставляет возможность реализации версионности разработки.

Данный проект доступен по ссылке [26], первая версия была опубликована 22 октября 2016, на данный момент общее количество опубликованных версий превышает отметку в семьдесят. Каждое изменение сопровождается комментарием, объясняющим проведенные работы, а также перечнем файлов или частей файлов, которые были и как именно изменены.

15. Файл конфигураций

Проект имеет множество различных параметров, определяющих принцип работ тех или иных частей.

Например, какая версия VK API используется, каков токен используемого Telegram-бота, в какое время пользователям приходят сообщения из Вечерней Вышки и прочее.

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

Список параметров, настраиваемых через файл конфигураций:

1. База данных: пусть к базе данных;

2. Telegram API: токен чат-бота;

3. VK API: используемая версия API;

4. VK API: максимальная задержка ответа при обращении к API (секунд);

5. VK: частота вызова процедуры опроса групп VK;

6. RSS: частота вызова процедуры опроса RSS-источников;

7. Вечерняя Вышка: час начала публикации подборки;

8. Вечерняя Вышка: минута начала публикации подборки;

9. Вечерняя Вышка: час окончания публикации подборки;

10. Вечерняя Вышка: минута окончания публикации подборки;

11. Администрирование: идентификационный номер администратора бота;

12. Стикер (приложение): идентификатор стикера для массовой рассылки сообщений от администратора;

13. Стикер: идентификатор стикера для добавления нового источника новостей в базу данных;

14. Стикер: идентификатор, возвращающий количество пользователей чат-бота;

15. Стикер: идентификатор для отмены других команд администрирования.

16. Результаты

Настройка сервера и установка всех необходимых программ и модулей были произведены успешно. Результат представлен на рисунке #.

Рис. 10. Программы и модули на удаленном сервере

Была разработана процедура получения новостей из ВКонтакте и отправки их пользователям.

Рис. 11. Новость, полученная из ВКонтакте

Была разработана процедура получения новостей с официального сайта НИУ ВШЭ и отправки их пользователям. Результат представлен на рисунке ниже:

Рис. 12. Новость, полученная с официального сайта НИУ ВШЭ

Была разработана процедура вечерней рассылки популярных новостей:

Рис. 13. Вечерняя рассылка популярных новостей

17. Статистика

17.1 Количество пользователей

Рис. 14. Количество пользователей в определенную дату

17.2 Популярность групп для получения новостей, как только они выходят

Рис. 15. Популярность групп для получения новостей, как только они выходят

17.3 Популярность групп в Вечерней Вышке

Рис. 16. Популярность групп в Вечерней Вышке

Заключение

Поставленные в начале работы цели и задачи были достигнуты и выполнены в полном объеме авторами данной работы. Итогом проделанной работы стал сервис, доступный в Telegram под никнеймом @HSE_news_bot, который выполняет функцию агрегирования новостей из разных ресурсов и выполняет их рассылку пользователям либо в момент получения, либо в качестве подборки раз в день, являющихся подписчиками той или иной группы. Барсуковым Павлом был проведен анализ средств разработки, проделана работа по созданию репозитория на Github (настройки системы контроля версий), развертывание проекта на сервере, разработан процесс сбора сообщений из ВКонтакте через работу с API VK, создан алгоритм подсчета популярности сообщений и агрегация лучших - Вечерняя Вышка, создан интерфейс администрирования через стикеры для избранных пользователей, разработан механизм определения ближайшего здания ВШЭ. Садонцевым Максимом был произведен анализ рынка и постановка проблемы, составлена архитектура базы данных, создана сама база, разработан механизм получения сообщений из RSS, обработчик возможных ошибок при работе сервиса, создан файл конфигурации, разработан и внедрен механизм машинного обучения. Весь процесс развития проекта можно отследить на GitHub.

Список использованных источников

1.Метод опорных векторов [Электронный ресурс] // Wikipedia: [сайт]. URL: https://ru.wikipedia.org/wiki/Метод_опорных_векторов (дата обращения: 14.май.2017).

2.Random forest [Электронный ресурс] // Wikipedia: [сайт]. URL: https://ru.wikipedia.org/wiki/Random_forest (дата обращения: 14.май.2017).

3.Gradient boosting [Электронный ресурс] // Wikipedia: [сайт]. URL: https://en.wikipedia.org/wiki/Gradient_boosting (дата обращения: 13.май.2017).

4.k-means [Электронный ресурс] // Wikipedia: [сайт]. URL: https://ru.wikipedia.org/wiki/K-means (дата обращения: 13.май.2017).5.DBSCAN [Электронный ресурс] // Wikipedia: [сайт]. URL: https://en.wikipedia.org/wiki/DBSCAN (дата обращения: 14.май.2017).

6.Hsu J. Google Translate Gets a Deep-Learning Upgrade [Электронный ресурс] // IEEE Sprectrum: [сайт]. [2016]. URL: http://spectrum.ieee.org/tech-talk/computing/software/google-translate-gets-a-deep-learning-upgrade (дата обращения: 01.май.2017).

7.Bots: An introduction for developers [Электронный ресурс] // Telegram Messenger: [сайт]. URL: https://core.telegram.org/bots (дата обращения: 17.октябрь.2016).

8.Пуха Ю., Яковлева Н. Всемирный обзор индустрии развлечений и СМИ: прогноз на 2016-2020 годы, Москва, 2015.

9.Amzat A. Punch, Vanguard, Sahara Reporters top 2016 social media presence [Электронный ресурс] // Media Career Services: [сайт]. [2017]. URL: http://www.mediacareerng.org/2017/01/05/punch-vanguard-sahara-reporters-top-2016-social-media-presence/ (дата обращения: 23.март.2017).

10.eBizMBA. Top 15 Most Popular News Websites [Электронный ресурс] // eBizMBA: [сайт]. [2017]. URL: http://www.ebizmba.com/articles/news-websites (дата обращения: 23.март.2017).11.Любовь. Top social networks in Russia: latest numbers and trends [Электронный ресурс] // Russian Search Tips: [сайт]. [2015]. URL: http://www.russiansearchtips.com/2015/01/top-social-networks-russia-latest-numbers-trends/ (дата обращения: 23.март.2017).

12.Дуров П. ВКонтакте [Электронный ресурс] // Поиск сообществ: [сайт]. [2007]. URL: https://vk.com/groups?act=catalog&c%5Blike_hints%5D=1&c%5Bq%5D=вшэ&c%5Bsection%5D=communities (дата обращения: 23.март.2017).

13.Национальный исследовательский университет Высшая школа экономики [Электронный ресурс] // Национальный исследовательский университет Высшая школа экономики: [сайт]. URL: https://www.hse.ru/ (дата обращения: 30.март.2017).14.Python 3 для начинающих [Электронный ресурс] // Язык программирования Python 3 для начинающих и чайников: [сайт]. [2012]. URL: https://pythonworld.ru/ (дата обращения: 13.октябрь.2016).

15.Железовский А. Что такое SQLite. Плюсы и минусы [Электронный ресурс] // Заметки WEB-разработчика: [сайт]. URL: http://webnotes.by/docs/sql/259 (дата обращения: 01.ноябрь.2016).16.Смирнов Д. FreeSource: SQLite/Преимущества [Электронный ресурс] // Мысли, идеи и информация о свободном ПО: [сайт]. [2005]. URL: http://freesource.info/wiki/SQLite/Preimushhestva&%20-%20%D0%B5%D1%89%D0%B5%20SQLite (дата обращения: 01.ноябрь.2016).

17.Database Speed Comparison [Электронный ресурс] // SQLite: [сайт]. [2000]. URL: http://www.sqlite.org/speed.html (дата обращения: 01.ноябрь.2016).

18.Bacon J., Rogers C., Chahal M. Trends for 2017: Chatbots, social media & Trump tactics [Электронный ресурс] // Marketing Week: [сайт]. [2016]. URL: https://www.marketingweek.com/2016/12/12/trends-2017-chatbots-social-trump/ (дата обращения: 11.март.2017).

19.Rampton J. Top 10 Best Chatbot Platform Tools to Build Chatbots for Your Business [Электронный ресурс] // Entrepreneur: [сайт]. [2017]. URL: https://www.entrepreneur.com/article/289788 (дата обращения: 02.апрель.2017).

20.Chaffey D. Global social media research summary 2017 [Электронный ресурс] // Smart Insights: [сайт]. [2017]. URL: http://www.smartinsights.com/social-media-marketing/social-media-strategy/new-global-social-media-research/ (дата обращения: 02.апрель.2017).

21.Дуров П. Telegram - a new era of messaging [Электронный ресурс] // Telegram Messenger: [сайт]. [2013]. URL: https://telegram.org/ (дата обращения: 18.октябрь.2016).

22.Ингруп СтС НИУ ВШЭ [Электронный ресурс] // ВКонтакте: [сайт]. URL: https://vk.com/ingroupctc (дата обращения: 11.ноябрь.2016).

23.ТелеВышка [Электронный ресурс] // ВКонтакте: [сайт]. URL: https://vk.com/tv_hse (дата обращения: 11.ноябрь.2016).24.Telegram Bot API [Электронный ресурс] // Telegram Messenger: [сайт]. URL: https://core.telegram.org/bots/api (дата обращения: 20.октябрь.2017).

25.GitHub [Электронный ресурс] // GitHub: [сайт]. [2007]. URL: https://github.com/ (дата обращения: 01.ноябрь.2016).26.Барсуков П., Садонцев М. Ballahuginn/HSE_News_Bot [Электронный ресурс] // GitHub: [сайт]. [2016]. URL: https://github.com/Ballahuginn/HSE_News_Bot (дата обращения: 22.октябрь.2016).

27.Знакомство с API ВКонтакте [Электронный ресурс] // ВКонтакте: [сайт]. URL: https://vk.com/dev/first_guide (дата обращения: 20.октябрь.2017).

28.Wang F. Python Telegram bot api. [Электронный ресурс] // GitHub: [сайт]. [2016]. URL: https://github.com/eternnoir/pyTelegramBotAPI (дата обращения: 19.октябрь.2016).

29.Воронин Д. vk.com API python wrapper [Электронный ресурс] // GitHub: [сайт]. [2016]. URL: https://github.com/dimka665/vk (дата обращения: 13.ноябрь.2016).

30.Bots: An introduction for developers [Электронный ресурс] // Telegram: [сайт]. URL: https://core.telegram.org/bots (дата обращения: 17.октябрь.2016).

31.PrimeBOT. RSS [Электронный ресурс] // Wikipedia: [сайт]. [2017]. URL: https://en.wikipedia.org/wiki/RSS (дата обращения: 25.март.2017).

32.JSON I. Introducing JSON [Электронный ресурс] // JSON, Inc.: [сайт]. [1999]. URL: http://www.json.org (дата обращения: 18.март.2017).

33.Application programming interface [Электронный ресурс] // Wikipedia: [сайт]. [2017]. URL: https://en.wikipedia.org/wiki/Application_programming_interface (дата обращения: 15.March.2017).

34.Метод опорных векторов [Электронный ресурс] // Wikipedia: [сайт]. URL: https://ru.wikipedia.org/wiki/Метод_опорных_векторов (дата обращения: 14.май.2017).

...

Подобные документы

  • Проектирование Web-сервиса учебного процесса кафедры физкультуры. Анализ существующих решений и построение моделей предметной области. Разработка базы данных Web-сервиса для обеспечения функциональности работы. Архитектура, интерфейс, взаимодействие с БД.

    дипломная работа [1,9 M], добавлен 05.04.2017

  • Описание создаваемого сервиса. Разработка и реализация серверной части сервиса и клиентской части сервиса, которая будет предоставлять пользователям возможность создания и редактирования генеалогических деревьев, возможность импорта и экспорта данных.

    курсовая работа [116,9 K], добавлен 20.07.2012

  • Анализ информационных потоков, связанных с деятельностью шиномонтажной мастерской. Разработка информационной модели данных. Описание технического задания на разработку web-сервиса. Составление планов управления конфигурациями и контроля качества.

    курсовая работа [3,7 M], добавлен 25.12.2014

  • Федеральная служба судебных приставов как федеральный орган исполнительной власти. Основные этапы разработки интерфейса в виде веб-сервиса. Общая характеристика схемы интерфейса "Пристав" для удаленного просмотра соединений таблиц из единой базы данных.

    отчет по практике [1,0 M], добавлен 07.08.2013

  • Разработка информационной системы для хранения информации о результатах экзаменов студентов. Описание сервисов, разработка логической и физической модели системы. Выбор системы хранения данных. Схема работы сервиса, принципы безопасности доступа.

    курсовая работа [560,6 K], добавлен 09.09.2012

  • Разработка структурной схемы руки человека. Методика определения коэффициента сервиса и координат точек ориентации. Разработка метода многомерной оптимизации для решения обратной задачи кинематики. Программная реализация определения коэффициента сервиса.

    дипломная работа [1,2 M], добавлен 15.06.2013

  • Проведение исследования опыта взаимодействия в сети. Методы улучшения согласования с пользователем web-сервиса. Особенность проектирования онлайн-приложения. Изучение разработки контроллеров и моделей. Характеристика создания интерфейса программы.

    дипломная работа [1,3 M], добавлен 11.08.2017

  • Выбор программных и аппаратных средств для создания базы данных. Описание структуры программы. Описание разработки приложения. Подключение к базе данных, выполняемое с помощью компонента ADOConnectio. Создание средств защиты информации в программе.

    курсовая работа [2,1 M], добавлен 16.02.2015

  • Анализ предметной области с использованием моделей методологии ARIS и разработка ER-диаграммы. Описание входной и выходной информации для проектирования реляционной базы данных. Разработка управляющих запросов и связей между ними с помощью языка SQL.

    курсовая работа [975,2 K], добавлен 30.01.2014

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

    реферат [1,4 M], добавлен 13.04.2015

  • Разработка интернет-сервиса для создания визуального интерфейса системных служб хостинг-компании. Критерии оценки интерфейса и направления разработки. Рабочий стол GlideOS. Выбор архитектуры сервиса, языка программирования и коммуникационных методов.

    дипломная работа [3,1 M], добавлен 19.11.2013

  • Обзор технологической платформы для разработки клиентского веб-интерфейса. Выбор платформы базы данных, языка разработки, фреймворка на стороне сервера и клиента. Создание схемы данных MySQL. Работа пользователя и оператора с программным продуктом.

    курсовая работа [4,1 M], добавлен 17.07.2012

  • Характеристика работы сервиса технического обслуживания автомобилей и основные составляющие процесса. Структурная схема модели, временная диаграмма, Q-схема системы и их описание. Сравнение результатов моделирования и машинная программа работы сервиса.

    дипломная работа [140,2 K], добавлен 18.06.2011

  • Выбор состава технических и программных средств разработки системы. Описание входных и выходных данных. Выбор модели базы данных. Разработка подсистемы наполнения базы данных, формирования отчетов. Разработка интерфейса пользователя, тестирование системы.

    курсовая работа [3,7 M], добавлен 04.12.2014

  • Описание предметной области разработки. Особенности хранения информации об автомобилях и владельцах. Описание структуры базы данных. Основные таблицы: автомобили, владельцы, виды работ, запчасти, заказы, услуги. Инструкции программисту и пользователю.

    курсовая работа [318,9 K], добавлен 15.11.2010

  • Основные подходы к организации баз данных, компоненты языка Delphi, используемые для их построения. Разработка программного обеспечения - базы данных "Школа", предназначенной для хранения информации об учащихся, их успеваемости по различным дисциплинам.

    курсовая работа [739,8 K], добавлен 14.07.2012

  • Описание особенностей подсистемы обеспечения медикаментами. Разработка структуры базы данных, схемы алгоритма и программного модуля, структуры реестра. Обоснование выбора языка программирования. Оценка надежности и классификация ошибок программы.

    дипломная работа [1,3 M], добавлен 25.12.2014

  • Знакомство с особенностями и основными этапами разработки онлайн-сервиса, облегчающего потребителям процесс подбора спортивного снаряжения. Анализ оборудования для вейкбординга. Общая характеристика клиент-серверной архитектуры реализации веб-приложения.

    дипломная работа [4,1 M], добавлен 30.09.2016

  • Описание состава реляционной базы данных как системы связанной информации, сохраняемой в двумерных таблицах. Основные функции CMS и изучение структуры сервера MySQL. Разработка системы выборок данных по товарам для интернет-магазина, таблицы покупателей.

    курсовая работа [2,0 M], добавлен 21.04.2015

  • Назначение программного модуля (базы данных). Разработка информационной базы данных для колледжа. Поиск пользователями информации о преподавателях и дисциплинах. Анализ входной и выходной информации. Разработка алгоритма работы программы-приложения.

    реферат [513,1 K], добавлен 22.10.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.