Исследование методов и реализация алгоритма моделирования распространения информации в социальных сетях

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    3,5 Мб
  • Опубликовано:
    2016-02-08
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Исследование методов и реализация алгоритма моделирования распространения информации в социальных сетях

Министерство образования и науки Российской Федерации

Волжский политехнический институт (филиал)

федерального государственного бюджетного образовательного

учреждения высшего образования

«Волгоградский государственный технический университет»

(ВПИ (филиал) ВолгГТУ)

Факультет «ВЕЧЕРНИЙ»

Кафедра «Информатика и технология программирования»





ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к бакалаврской работе на тему

Исследование методов и реализация алгоритма моделирования распространения информации в социальных сетях

Автор работы Айналимов Батырбек Орынгалиевич

Обозначение ________ВРБ-34675695-09.03.01-11.1-15________

Группа __________ВИЗ-475___________

Направление ___09.03.01-Информатика и вычислительная техника

Руководитель работы ______02 ноября 2015 г. Н.Н. Короткова

Консультанты по разделам:

Моделирование программных систем 02 ноября 2015 г. Л.А. Макушкина

Нормоконтролер 02 ноября 2015 г. Е.Е. Слободкина

г. Волжский, 2016

Задание на бакалаврскую работу

Студент __Айналимов Батырбек Орынгалиевич_____________

Код кафедры __ВИТ_______ Группа ____ВИЗ-475_________

Тема Исследование методов и реализация алгоритма моделирования распространения информации в социальных сетях____ утверждена приказом по ВПИ (филиал) ВолгГТУ от ____09 октября 2015___ № _356-ст_

Срок предъявления готовой работы _01 февраля 2016 г._

Исходные данные для выполнения работы

. Громаковский А.: Работа с облачными системами удаленного доступа. - СПб.: Питер, 2011

. Михеева Е.В.: Информационные технологии в профессиональной деятельности. - М.: Академия, 2011

. Негус Кристофер: Ubuntu и Debian Linux для продвинутых. - СПб.: Питер, 2011

Исполнитель работы __02 ноября 2015 г. Б.О.Айналимов_______

Руководитель работы_02 ноября 2015 г. Н.Н.Короткова______

Консультанты по разделам:

Моделирование программных систем 02 ноября 2015 г. Л.А. Макушкина

Аннотация

Работа содержит 143 страницы, 1 таблицу, 30 иллюстраций, 21 использованный литературный источник. Работа выполнена на кафедре «Информатика и технология программирования».

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

Целью бакалаврской работы является планирование и автоматизация проведения кампании по продвижению рекламного проекта социальных Twitter-медиа в социальных сетях на основе моделирования алгоритма распространения информации.

В рамках данной работы рассмотрено понятие социальных сетей; определены критерии эффективности продвижения аккаунта в социальных сетях; охарактеризованы особенности продвижения проектов в социальных сетях; разработан алгоритм автоматизированного эффективного распространения информации в сети Twitter. Произведена разработка программного комплекса, включающего клиентское и серверное решение, которые позволяют автоматизируют публикацию списка статусов (сообщений) по алгоритму отложенного постинга с анализом количества «лайков» предыдущих постов. Выполнена оценка качества программного обеспечения.

Основные результаты научных разработок, выполненных автором по теме бакалаврской работы, представлены на российских конференциях: РАЕ "Студенческий форум .2016", "Научный прорыв - 2016".


Введение


Актуальность. Социальные сети становятся всё более популярной площадкой для продвижения, для организации мероприятий и многого другого. По данным исследовательской организации IDC Global Technology and Industry 50% бюджета, выделенного на продвижение в социальных медиа, западные маркетологи тратят на работу в социальных сетях [1]. Сегодня SMM пользуется большой популярностью не только среди малого и среднего бизнеса, но и применяется крупнейшими мировыми брендами, которые используют её для установления обратной связи с потребителями.

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

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

В качестве объекта бакаларвского проекта рассматриваются социальные сети как инструмент интернет-коммуникаций. Предметом является продвижение проекта в социальных сетях. Апробация была произведена в рамках конференции «Cisco Connect - 2015», где были представлены результаты разработки программного продукта для маркетингового агентства. По результатам конференции, были внесены доработки и произведена повторная апробация в рамках «VK Challenge - 2015», где участники смогли протестировать продукт, а автор оценить возможности многопоточной работы системы при нагрузке более 1000 запросов в минуту.

Решению различных теоретических и практических проблем построения ИС в технических системах посвятили свои работы ведущие ученые и специалисты Бэкус Дж., Вирт Н., Вьеннер Я. И., Гийока М. Ф., Кирсанов О. Ф., Найер М. О., Чарльз Э.

Целью выпускной квалификационной работы является планирование и проведение кампании по продвижению рекламного проекта социальных Twitter-медиа, а также продвижение в собственной социальной сети Writer-ru.ru с моделированием алгоритма расспространения информации в социальных сетях.

Для достижения поставленной цели были решены следующие исследовательские задачи:

· Рассмотреть понятие функционирования социальных сетей.

· Определить критерии эффективности продвижения аккаунта в социальных сетях.

· Разработать методы продвижения проектов в социальных сетях.

· Составить план по автоматизации продвижения услуг в социальных сетях.

· Провести кампанию по продвижению услуг в Twitter.

· Проанализировать эффективность проведенной кампании по продвижению услуг в Twitter.

· Разработать собственную социальную сеть для моделирования алгоритма распространенния информации социальных сетях.

Методы исследования.

Для решения поставленных задач в работе использовались методы математической статистики, решения динамических задач распределения потоков информации, объектно-ориентированной модели проектирования.

Научная новизна. Научная новизна положений, выносимых на защиту, заключается в следующем:

· Выполнено построение сигналов для каждого токена (последовательности символов) с использованием информации о частоте его появления в корпусе в различные моменты времени.

· Осуществлено применение вейвлетного анализа к полученным сигналам.

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

· Выполняется построение матрицы кросс-корреляции сигналов токенов.

· Осуществляется поиск событий как наборов токенов (инструментов авторизации) путём кластеризации (разделения на кластеры) полученной матрицы.

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

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

· Реализована возможность инкрементальной обработки при поступлении новых сообщений по разработанному алгоритму.

Основные положения, выносимые на защиту:

· Проанализированы существующие методы и реализации алгоритма моделирования распространения информации в социальных сетях для оптимизации рекламных кампаний.

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

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

· Разработан интерфейс системы как экран взаимодействия с пользователем.

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

· База данных «Коррелирующих субъектов в информационных потоках», разработанная при партнерском сотрудничестве с ООО «ВАН», г. Москва.

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

· База данных «Математических зависимостей действий пользователей в медийной среде постинг-сервиса Twitter».

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

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

В третьей главе приведена программная реализация алгоритма моделирования распространения информации в социальной сети «Twitter».

В четвертой главе описана апробация простроенной модели работы системы распространения информации.

1 Обзор существующих методов и алгоритмов моделирования распространения информации в социальных сетях


1.1 Социальные сети как инструмент маркетингового агентства для распространения информации


Мир технологий развивается непрерывно и динамично. С каждым годом появляются новые концепции и их реализации, а существующие расширяют свои функциональные характеристики и возможности. Не нова и цель этой спирали прогресса - сделать условия жизни человека как можно комфортнее и продуктивными. Одной из причин такого бурного роста является широкое распространение Internet и значительное увеличение скорости передачи данных. Как отмечают в Google, до 2008 года был «Интернет людей», теперь наступил «Интернет вещей», так как устройств, подключенных к сети стало больше чем жителей планеты. Благодаря этому взаимодействие их с человеком стало возможно вынести на совершенно другой уровень.

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

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

Анализируя социальные сети в контексте информационных войн, следует уделить внимание психологическим явлениям, которые делают сети такими привлекательными для осуществления информационно-психологического воздействия на пользователей. В частности, целесообразно выделить следующие: явление «Спираль молчания» (по Э. Ноэль-Нойман) стадный инстинкт в социальных сетях; доверие всему опубликованном в сети; присутствие лидеров мнений; стремление к самореализации или замены реальности. Таким образом, модель коммуникации немецкой исследовательницы Е. Ноэль-Нойман [4].

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

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

Подобное происходит и с деятельностью групп: человек с большим удовольствием присоединится к группе, аудитория которой составляет несколько десятков тысяч, чем в маленькой группе с несколькими десятками участников. Интересным остается явление полного доверия всей информации, которая публикуется в сети. Пользователь обычно не проверяет полученную информацию и принимает ее за достоверную, только на основании того, что она публикуется солидной группой со значительной аудиторией. В этом аспекте следует отметить и явление возникновения «лидеров мнений», которые могут быть представлены, как отдельная независимая личность или группа, или страница в социальной сети.

Именно им пользователь доверяет беспрекословно, даже иногда считая их наиболее достоверным источником в определенных вопросах, упуская то, что они могут и не быть специалистами в данной сфере. С помощью таких «лидеров мнений» государство или корпорация может обеспечивать расположение пользователя к ним или же убеждать пользователей в собственных идеях, навязывая им свое видение конкретных важных событий, явлений в различных сферах функционирования государства и общества [5].

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

Также стремление человека к виртуализации своей жизни часто обусловлено желанием сделать свою жизнь более яркой, содержащим интересные события и сильные эмоциональные чувства [1]. Все вышеперечисленное приводит к тому, что количество пользователей социальных сетей растет с каждым годом. Обращаясь к конкретным цифрам, отметим, что аудитория социальной сети «Facebook» составляет более одного миллиарда пользователей, «Twitter», «Vk.com» и «Google+» - более 200 000 000, «LinkedIn» и «Odnoklassniki.ru» - более 100 миллионов [9].

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

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

Например, ученые Кембриджского университета обнаружили, что даже то, как пользователь ставит «лайки» в Facebook, может многое рассказать о нем, потому что современные компьютерные программы позволяют получить всю информацию из социальных сетей и проанализировать ее [2]. Итак, можно сделать вывод, что социальные сети могут стать действительно хорошим подспорьем для организаторов цветных революций.

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

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

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

1.2 Обзор существующих программных продуктов для распространения информации в социальных сетях


Сравнение начнем с сервиса, который позволяет публиковать записи в Facebook, Twitter, LinkedIn, App.net и Google+ одновременно. Buffer - не только автопостер, но и аналитическая система, которая изучает социальные медиа. Каждую запись можно опубликовать в назначенное время или использовать функцию Buffer (Share Next), как показано на рисунке 1 - система сама разместит сообщение в наиболее выгодное время, когда пост увидит максимальное количество людей.

Рисунок 1 - Интерфейс Buffer

Удобство интерфейса: понятный и простой.

Работает с: Facebook, Twitter, Google+ и LinkedIn.

Цена: бесплатен для частного использования до двух аккаунтов, далее от 4000 рублей в месяц.

Поддержка: нет русского интерфейса.

Рисунок 2 - Интерфейс Hootsuite

Полноценное приложение для работы с Twitter, «ВКонтакте», Facebook, Google+, LinkedIn, Foursquare и WordPress в браузере или на мобильных устройствах. Через «Хутсвит» (именно так правильно читается название сервиса) доступно не только чтение лент социальных сетей, но и публикация контента. В Pro-версии на рисунок 2 есть массовый загрузчик сообщений, с помощью которого SMM-менеджер может работать с несколькими постами одновременно [11].

Удобство интерфейса: для профессионалов. Нужно разбираться: нагруженный и сложный.

Работает с: Facebook, Twitter, Google+, LinkedIn, Instagram, Tumblr, YouTube.

Цена: бесплатно до 3-х социальных сетей, далее от 720 рублей в месяц.

Поддержка: быстрая обработка сообщений, но русского интерфейса нет.

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

Рисунок 3 - Интерфейс Buzzlike

Через Buzzlike (рисунок 3) публикуются записи во «ВКонтакте», Facebook и «Одноклассниках». Посты всех сообществ выстраиваются во временной ленте в порядке очереди. В сервисе есть шаблоны, как текстовые, так и с прикреплением медиафайлов.

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

Работает с: Facebook, Twitter, Google+, LinkedIn, Instagram, Tumblr, YouTube.

Цена: бесплатно до 2-х социальных сетей, далее от 3000 рублей в месяц.

Поддержка: быстрая обработка сообщений, но русского интерфейса в центре обработки сообщений нет.

Рисунок 4 - Интерфейс Time2Post

Помимо работы с «ВКонтакте», Facebook, Twitter и LinkedIn, Time2Post умеет публиковать сообщения из RSS-потока, а также накладывать водяной знак на изображения. Есть и массовый загрузчик изображений, который показан на рисунок 4. Все посты можно распланировать по времени или перемешать в случайном порядке.

Удобство интерфейса: сложный и нелогичный интерфейс со множеством опций. В центре помощи на сайте не хватает информации.

Работает с: «ВКонтакте», Facebook, Twitter и LinkedIn.

Цена: бесплатно.

Поддержка: долгая обработка сообщений, множество ошибок.

Типичная ошибка сервиса - автоматическое прекращение постинга по причине сбоя в авторизации.

Рисунок 5 - Интерфейс SmmBox

(рисунок 5) существует в виде расширения для браузера, через которое менеджер может публиковать записи с любых сайтов напрямую во «ВКонтакте». Сервис автоматически определяет весь доступный для постинга контент, а также позволяет добавить водяной знак, таймер или запланировать сообщение на нужное время. SmmBox работает и внутри «ВКонтакте» - в ленте у каждой записи появляется кнопка «Забрать», через которую контент сразу доступен для публикации в любом сообществе [12].

Удобство интерфейса: для профессионалов. Нужно разбираться: нагруженный и сложный.

Работает с: Facebook, ВКонтакте, Одноклассники.

Цена: от 399 рублей в месяц.

Поддержка: оперативная обработка сообщений, есть русский интерфейс.

1.3 Анализ алгоритмов распространения информации в социальных сетях


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

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

В социальных медиа, например, в блогах, любой зарегистрированный пользователь имеет право голоса и может участвовать в многопоточных дискуссиях по принципу: «все со всеми», каждый участник высказывает свое мнение и делится информацией. И все это общедоступно в режиме онлайн. Блогеров часто называют «гражданскими журналистами»

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

Виды социальных медиа

Социальные медиа могут принимать различные формы, в том числе Интернет-форумы, блоги, микроблоги, вики, подкасты, фотографии или картинки, видео, рейтинги и социальные закладки. Каплан и Хенлин созданы схемы классификации для различных социальных типов СМИ в своей статье Бизнес Горизонты [3] опубликованной в 2010 году. По словам Каплана и Хенлин существует шесть различных типов социальных медиа: совместные проекты, блоги и микроблоги, содержание общины, сайты социальных сетей, виртуальных игровых мирах, и виртуальные социальные миры. Технологии включают в себя: блоги, обмен изображениями, стены-сообщений, электронную почту, мгновенные сообщения, обмен музыкальными файлами, краудсорсинг, и Voice over IP. Многие из этих социальных услуг, могут быть интегрированы с помощью социальных платформ сети.

Классифицируем по направлению деятельности:

) Коммуникации

• Блоги: Blogger, ExpressionEngine, LiveJournal, Open Diary, TypePad, Vox, WordPress, Xanga

• микроблоггинга: FMyLife, Foursquare, Jaiku, Plurk, Posterous, Tumblr, Twitter, Qaiku, Google Buzz, Identi.ca Nasza-Klasa.pl

• Социальные сети ASmallWorld, Bebo, Cyworld, Diaspora, Facebook, Hi5, Hyves, LinkedIn, MySpace, Ning, Orkut, Plaxo, Tagged, XING, IRC, Yammer

• Событийные коммуникации: Eventful, The Hotlist, Meetup.com, Upcoming

• Агрегаторы информации: Netvibes, Twine (website)

• геосоциального сервисы: Foursquare, Geoloqi, Gowalla, Facebook places, The Hotlist, Google Latitude

) Совместная работа

• Вики: PBworks, Wetpaint, Wikia, Wikimedia, Wikispaces

• Социальные закладки: [5] CiteULike, Delicious, Diigo, Google Reader, StumbleUpon, folkd

• Новости (пользователи сами ищут информацию и загружают ее на сайт социальных новостей, где подписчики имеют возможность обсуждать ее содержание): Digg, NowPublic, Reddit, Newsvine

• Навигация: Trapster, Waze

• Системы управления контентом: Wordpress, Drupal, Plone

• Управление документами и средства редактирования: Google Docs, Syncplicity, Docs.com, Dropbox.com

) Мультимедиа

• Распространение фото и произведений искусства: deviantArt, Flickr, Photobucket, Picasa, SmugMug, Zooomr

• Распространение видеоsevenload, Viddler, Vimeo, YouTube, Dailymotion, Metacafe, Nico Nico Douga, Openfilm

• Кастинг (трансляции): Justin.tv, Livestream, OpenCU, Skype, Stickam, Ustream, blip.tv, oovoo, Youtube

• Музыка: Last.fm, The Hype Machine.

• Распространение презентаций: scribd, SlideShare

) Обзоры

• Обзор продуктов: epinions.com, MouthShut.com

• Бизнес обзоры: Customer Lobby, Yelp, Inc.

• Сообщество «Вопросы и ответы»: Askville, EHow, Stack Exchange, WikiAnswers, Yahoo! Answers, Quora, ask.com, answers mail.ru.

) Виртуальные миры

• Active Worlds, Forterra Systems, Second Life.

Методика исследования

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

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

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

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

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

Среда исследования

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

Наиболее распространенными являются социальные сети без четкой направленности по интересам (в отличие от, социальных сетей читателей книг, меломанов, фотографов и т.д. - то есть таких сетей, где люди группируются по преобладающим интересом). Примерами таких социальных сетей является Facebook, Vkontakte, Twitter. Их существует великое множество, однако, только эти достигли глобальных масштабов и доминируют среди других. Следует также учитывать то, что один человек может быть пользователем нескольких социальных сетей одновременно.

Пользователям «Twitter» доступен характерный для многих социальных сетей набор возможностей: создавать профиль с информацией о себе, использовать и распространять контент, гибко управлять приватностью, взаимодействовать с другими пользователями, а также через механизм групп и встреч, отслеживать через ленту новостей активность друзей и сообществ. Интерфейс «Twitter» доступен более чем на 200 языках.

«Twitter» предлагает сторонним ресурсам использовать специально разработанные приложения для глубокой интеграции с социальной сетью.

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

Разместим приложение в социальной сети «Twitter». Встроенные функции этой социальной сети не уступают по качеству другим. Есть возможность взаимодействовать с информацией пользователей с помощью «Twitter API». Именно благодаря хорошему API существуют возможности для получения информации о любом пользователя, такой, что он разместил добровольно и не скрывает. Эта лазейка и является решающим фактором при выборе среды для анализа.

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

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

Именно обработку всех запросов пользователей осуществляет центр обработки данных, который должен обеспечить единый информационный ресурс с гарантированными уровнями достоверности, доступности и безопасности данных. На каждом таком сервере может находиться от одной до нескольких десятков виртуальных машин, которые способны обрабатывать и удовлетворять соответствующими компонентами или приложениями запросы на предоставление сервиса. Однако "неустойчивая" структура центра обработки данных (ЦОД), в результате миграции является виртуальных машин, вносить задержки при обслуживании запросов на предоставление сервиса [13].

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

При изменении структуры сети. Это, в свою очередь, приведет к уменьшению времени обслуживания запросов пользователей с динамично переменной структуры ЦОД.

При исследовании алгоритмов решения задачи условного постинга в социальных сетях, был выявлен ряд алгоритмов и моделей, которые можно успешно применять при моделировании распространения информации в социальных сетях. Апробация была произведена в рамках конференции «Cisco Connect - 2015», где были представлены результаты разработки программного продукта для маркетингового агентства. По результатам конференции, были внесены доработки и произведена повторная апробация в рамках «VK Challenge - 2015», где участники смогли протестировать продукт, а автор оценить возможности многопоточной работы системы при нагрузке более 1000 запросов в минуту.

Таблица 1 - Сравнительный анализ методов и алгоритмов

Метод

Тип алгоритма

Сложность

Плюсы

Минусы

Полный перебор

Точный

O(n!)

Простота реализации; Точное решение

Входные данные не велики; временная сложность

Жадный алгоритм

Приближенный

O(n*log(n))

Высокая скорость; может работать с большими значениями n; простота реализации

Решение неточное

Генетический алгоритм

Приближенный

-

Высокая скорость; может работать с большими значениями n; независимость от вида исходных данных

Не гарантирует нахождение оптимального решения

Метод динамического программирования

Точный

O(w*n)

Независимость от вида исходных данных; точное решение

Большой объём вычислительной работы


Существует ряд методов, позволяющих находить решение задачи об отложенном постинге. При выборе алгоритма решения приходится выбирать между точными алгоритмами, которые не применимы для стеков большой размерности, и приближенными, которые работают быстро, но не обеспечивают оптимального решения задачи. Если перебирать всевозможные подмножества данного набора из n предметов, то получится решение сложности не менее чем O(2n). В настоящее время неизвестен (и, скорее всего, вообще не существует) алгоритм решения этой задачи, сложность которого является многочленом от n.

Выводы по первой главе. Постановка задач исследования


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

Целью выпускной квалификационной работы является планирование и проведение кампании по продвижению рекламного проекта социальных Twitter-медиа, а также продвижение в собственной социальной сети Writer-ru.ru с моделированием алгоритма расспространения информации в социальных сетях.

Для достижения поставленной цели были решены следующие исследовательские задачи:

· Рассмотреть понятие функционарования социальных сетей.

· Определить критерии эффективности продвижения аккаунта в социальных сетях.

· Разработать методы продвижения проектов в социальных сетях.

· Составить план по автоматизации продвижения услуг в социальных сетях.

· Провести кампанию по продвижению услуг в Twitter.

· Проанализировать эффективность проведенной кампании по продвижению услуг в Twitter.

· Разработать собственную социальную сеть для моделирования алгоритма распространенния информации социальных сетях.

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

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

социальный информация алгоритм интерфейс

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

 

.1 Обзор алгоритма распространения информации в социальных сетях


Пусть сервис является объектом для предоставления услуги клиентам cloud сети, основной характеристикой которого является продолжительность обработки запроса tобр. Рассмотрим атомарный сервис ― сервис, реализованный одной программой, установленной на одной виртуальной машине. Если установлено несколько атомарных сервисов на одной физической машине, производительность таких сервисов уменьшается, поскольку доступ сервисов к ресурсам физической машины происходит по методу временного разделения. Поэтому в случае увеличения количества сервисов на одной РМ, рост интенсивности поступления запросов на РМ и увеличения интенсивности поступления запросов на каждый сервис увеличивается продолжительность обслуживания запросов каждым сервисом. В случае уменьшение производительности сервиса система управления переносит этот сервис на другую VM или РМ.

Логическая топология не меняется, но данные проходят по другим физическим каналам. В таком случае общее время передачи сервиса от пользователя к ЦОД и в обратном направлении рассчитываться так:

                                                    (2.1)

где: n ― количество запросов;

tкоммут. ― время прохождения запроса через систему коммутации;п.к.з. ― время поиска каналов, по которым будет осуществляться передача;обр. ― время обработки запроса, который является суммой времен обработки запроса сервисом, который состоит из k атомарных сервисов:

                                                                             (2.2)

Поскольку оптимальный путь передачи изменяется, то это приводит к увеличению времени поиска каналов, по которым будет осуществляться передача - tп.к.з., что, в свою очередь, приведет к увеличению общего времени передачи (рисунок 6).

Время поиска маршрута, мкс

Рисунок 6 - Зависимость времени передачи сервису данных от временни поиска канала, по которому производиться передача

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

Метрика этого алгоритма представляется в виде:

                (2.3)

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

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

Предположим, что некоторый интерфейс на выходе, при передаче информации от физического сервера А к виртуальной машине, имеет значение задержки t, до порогового значения задержки Т, то есть t <T. Виртуальная машина с целым программным комплексом в результате воздействия различных факторов мигрирует на физический сервер В. Алгоритм поиска пути по критерию минимального времени прохождения, передавая запрос на предоставление сервиса, анализирует, что такого логического оптимального маршрута уже не существует, поскольку на выходе из интерфейса, в случае передачи по "старому" маршруту, значение задержки t превышает пороговое значение Т (рисунок 7).

Суммарная задержка на интерфейсах, мс

Рисунок 7 - Зависимость времени поиска оптимального маршрута от суммарной задержки на интерфейсах

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

Дано:

· Количество разновидностей медиапланирования - n;

· Количество видов имеющихся ресурсов - m;

· Значение ценовых коэффициентов на единицу медиапланирования j-го вида - ,;

· Запасы ресурсов i-го вида - bi, ;

· Матрица затрат ресурсов на медиапланирование - А, в какой aij- затраты i-го вида ресурса на j-й вид медиапланирования;

· Значение ценовых коэффициентов параметрической составляющей ЦФ для каждого го вида медиапланирования - ,.

Переменные:

· - количество медиапланирования.

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

Целевая функция - максимизировать прибыль от продажи услуг медиапланирования:

(2.4)

Ограничения:

  (2.5)

  (2.6)

. (2.7)

Данная задача является задачей параметрического программирования с параметром в целевой функции.

Назначением задачи является определение коэффициентов параметрической составляющей задачи, то есть значений вектора.

Для определения коэффициентов, параметрических составляющих задачи (2.4) - (2.7) необходимо применить один из методов оценки неизвестных величин. К таким методам оценки относятся: метод наименьших квадратов (МНК), взвешенный метод наименьших квадратов, метод - оценок и метод наименьших модулей (МНМ) [1]. При разработке комплекса задач для определения вектора применялся МНМ, в нем минимизируется следующая функция (суммарное отклонение):

, (2.8)

где - неизвестные параметры;

- функция, параметры которой мы оцениваем;

- результаты -го наблюдения .

Задача (2.4) - (2.7) является классической задачей линейного параметрического программирования (ЗЛП) [7], а задача (2.8) может быть сведена к ЗЛП, поэтому решать их будем, используя алгоритмы разработаны для данного класса задач.

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

В основе метода параметрического программирования для ЗПУ с параметром в целевой функции лежат процедуры прямого симплекс-метода с некоторой модификацией, следовательно, для задачи (2.4) - (2.7) будем применять процедуры алгоритма именно этого метода.

Относительно задачи (2.8), то она сводится к задаче линейного программирования, позволит решить ее симплекс-методом.

Основной математической задачей, которую решает данный комплекс, является задача параметрического программирования с параметром в целевой функции. Параметрическое программирование - это метод определения того, как меняется решение задачи с изменением всех компонент вектора коэффициентов ЦФ.

Пусть при  задача имеет оптимальное решение . Без потери общности предположим, что в оптимальном решения небазисные переменные имеют номера 1,…,. Запишем преобразованную задачу, соответствующую оптимальному развязку  ()

(2.9)

где

(2.10)

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

(2.11)

При  параметрическая составляющая не играет никакой роли. При увеличении  от нуля происходит поворот вектора нормали ЦФ , при достижении  определенного значения это может привести к изменению оптимума.

Продолжим анализ задачи. При увеличении  от нуля общая ЦФ приобретает значение

. (2.12)

Решение  остается оптимальным до тех пор, пока выполняются условия:

. (2.13)

Обобщим описанный выше метод в виде пошагового алгоритма:

Шаг 0. Найти решение начальной ЗЛП при .

Шаг 1. Если  для всех  ( - множество индексов небазисных переменных), текущий решение остается оптимальным при всех сколь угодно больших , Стоп. Иначе найти

 и соответствующее .

Шаг 2. Если , то мы определили все решения в заранее заданном диапазоне изменения параметра , Стоп.

Шаг 3. Если  для всех  ( - множество индексов базисных переменных), то при изменении базиса ЦФ становится неограниченным (если в столбце, соответствующей переменной , все коэффициент не положительные, то при всех  ЦФ неограниченное сверху), Стоп.

Иначе найти переменную, которую выводим из базиса, с помощью выражения

.

Пусть минимум соответствует индексу .

Шаг 4. Выполнить операцию замещения: ввести в базис переменную , вывести из базиса переменную .

Шаг 5. Перейти на Шаг 1.

 

2.2 Анализ базовых требований к информационной системе для эффективной работы алгоритма


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

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

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

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

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

Разработанный инструмент поддерживает скачивание данных из социальных сетей Facebook, Twitter, Hunch. Реализовано несколько способов получения репрезентативных выборок пользователей социальных сетей: сэмплирование методом обхода в ширину (breadth-first search, BFS) [1], по Метрополису- Гастингсу (Metropolis-Hastings Random Walk, MHRW) [3] и методом «лесного пожара» (Forest Fire, FF) [2].

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

Для оценки производительности фреймворка были проведены эксперименты, в которых скачивались профили пользователей социальных сетей Twitter, Facebook и Hunch. Были достигнуты следующие показатели:

· Facebook: более 500 профилей в час (один поток);

· Twitter: более 3000 профилей в час (один поток);

· Hunch: более 100 профилей в час (один поток).

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

К примеру, методы поиска сообществ пользователей в социальном графе могут показывать существенно различные результаты в зависимости от 442 размера исходного графа, средней степени вершины, коэффициента кластеризации и других структурных свойств. Сбор необходимых для достоверного тестирования реальных данных затруднён не только вследствие временных затрат на скачивание и обработку больших массивов слабоструктурированной информации, но и в силу сложности управления процессом сбора с целью получения набора данных с конкретным набором свойств. Размер графа, 106 вершин Размер графа, 103 вершин.

Результаты тестирования времени генерации случайных графов с заданной структурой сообществ. Вверху: на кластерах Amazon EC2 с различным количеством рабочих узлов типа m1.large: зелёная линия - 2 узла, жёлтая линия - 4 узла, красная линия - 8 узлов, синяя линия - 16 узлов.

Внизу: на одном компьютере. 443 Были разработаны модель и оригинальный метод для генерации случайных графов, обладающих основными свойствами социальных сетей (распределение степеней, диаметр, коэффициент кластеризации и т.д.) и заданной структурой сообществ пользователей. Для каждого пользователя осуществляется генерация атрибутов профиля, социальных связей, сообществ и текстовых сообщений.

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

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

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

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

Разработанный метод определения демографических атрибутов пользователей сети Twitter по текстам их сообщений обладает следующими особенностями:

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

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

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

 

Выводы по второй главе


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

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

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

Проанализированы существующие методы и реализации алгоритма моделирования распространения информации в социальных сетях.

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

При разработке модели «поиска кратчайшего пути», была определена эффективность его работы в контексте среды социальной сети Twitter. Отмечена высокая скорость обработки класса запросов типа POST.

Генерация графа из 1 миллиарда вершин заняла около 2 часов на кластере Amazon EC2 со 100 рабочими узлами типа m1.large. 4. Определение демографических атрибутов пользователей. При заполнении своего профиля в социальной сети пользователи зачастую по ошибке или преднамеренно не заполняют некоторые поля либо дают ложную информацию о фактах своей биографии, интересах и предпочтениях.

3. Программная реализация алгоритма моделирования распространения информации в социальной сети «Twitter»

 

.1 Описание и анализ технологий для реализации задачи моделирования алгоритма


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

Среди различных форм организации и предоставления таких услуг, к которым относятся Saas (Software as a Service), Paas (Platform as a Service) и Iaas (Infrastructure as a Service), последняя является наиболее гибким решением, позволяющие разворачивать распределены «виртуальные офисы» и формировать программное окружение аналогичное тому, которое установлено на персональном компьютере или локальном сервере. Фундаментальный сдвиг в самой природе обработки информации. Она смещается в сторону модели Utility Computing, то есть предоставление вычислительных ресурсов по принципу коммунальных услуг, предполагает, во-первых, выполнение большинства вычислительных задач в специализированных дата-центрах, и, во-вторых, доставку полученных результатов по каналам Internet аналогично электрической энергии.

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

Концепция разработки и развертывания облачной инфраструктуры базируется результатах анализа существующих решений и собственных исследований.

Традиционные архитектуры облачных систем предусматривают их построение на базе многоуровневой сетевой инфраструктуры виртуальных центров обработки данных (ЦОД) [8] и поддержки в виде программной платформы с набором сервисов. Типичная архитектура любого облачного ЦОД имеет иерархическую структуру, состоящую из 3 основных уровней:

Уровня ядра (Core). На этом уровне работают маршрутизаторы или коммутаторы 3 уровня, которые составляют основу всей сети дата-центра с высокоскоростными портами (10/40/100 GbЕ) для маршрутизации потоков между WAN и сети дата-центра.

Уровня агрегации (Aggregation или Distribution). На этом уровне также функционируют коммутаторы 3 уровня, основное назначение которых - распределение нагрузки между локальными сетями дата-центра.

Уровня доступа (Access). На этом уровне располагаются конечные точки (сервера, рабочие станции и др.) И сетевое оборудование, связывает конечные точки с уровнем агрегации. На уровне доступа функционируют кластера дата-центров, состоящих из множества физических серверов и большого количества виртуальных машин на каждом из них. На этом же уровне чаще всего располагается общая сеть хранения данных SAN (Storage Area Network). Группа, состоящая из взаимосвязанных компонентов хранения данных, вычислительных и сетевых ресурсов, которые работают совместно на уровне доступа, чтобы предоставить сервис или приложение клиенту называется точкой доставки или POD (Point of delivery).

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

Компоненты низкого уровня - сервера, которые объединяются в кластер. На каждом физическом сервере функционирует несколько виртуальных машин, то есть на одном физическом сетевом интерфейсе есть несколько виртуальных, обменом между которыми управляет программный компонент гипервизор (Virtual Machine Monitor / Hypervisor).

Облачные IT-инфраструктуры учебного заведения включают в себя следующие компоненты:

· ядро облака - ядро всей IT-инфраструктуры;

· персональные компьютеры в лабораториях, являются узлами облака.

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

· социальная сеть для коммуникаций и поиска контактов;

· обменник идеями и проектами (онлайн-платформа по поиску работы);

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

· база примеров коопераций и проектов, которая прогнозирует успех и дает советы.

Главным примером портала онлайн-общество GeoNet [15], которое объединяю разработчиков, исследователей, студентов, просто всех заинтересованных в развитии географически информационных технологий. Такое общество, направленное на информационные технологии и компьютерные науки, может быть даже более масштабным. В то же время, есть цель развить функционал профессиональных социальных сетей как LinkedIn [16] для построения резюме участников, добавить функциональность по трудоустройству на примере фрилансерских платформы oDesk [17], обеспечить облачный проектной и конфигурационный менеджмент как в YouTrack [18], так GitHub [19] соответственно.

Кроме того, уверенность в безопасности и приватности базируется на примере Telegram Messenger [1]. Конечно, все указанные веб-ресурсы являются лишь примерами и окончательный функционал должен соответствовать обобщенной группе участников: ученые и практики. Привлечение участников и определение приоритетов функций планируется через конференции, семинары (вебинары) и другие мероприятия.

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

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

В качестве хранилища было выбрано решение от Firebase, которое позволяет пользователю размещать файлы на удаленных серверах с помощью клиента или с использованием веб-интерфейса через браузер. При установке клиентского программного обеспечения Firebase на компьютере создается папка, синхронизированная с сервисом. Хотя главный акцент технологии делается на синхронизации и обмене информацией, Firebase ведёт историю загрузок, чтобы после удаления файлов с сервера была возможность восстановить данные [14]. Также ведется история изменения файлов, которая доступна на период последних 30 дней, кроме этого доступна функция бессрочной истории изменения файлов «PackRat».

История изменения файлов ведется по принципу diff-кодирование, чтобы сэкономить место, занимаемое файлами. В истории изменения записывается только отличие одной версии файла от другой. Файлы, загруженные через клиента, не имеют ограничения на размер, но файлы, загруженные через веб-интерфейс, ограниченные 300 МБ. Есть также возможность выкладывать файлы для общего доступа через папку «Public», что позволяет использовать сервис в качестве файлообменника. В версиях 0.8.x также появилась возможность предоставления в общий доступ любой папки в «My Firebase» для дальнейшего доступа через так называемый «shareable link», то есть через веб-интерфейс. Для совместной работы над проектами сервис имеет возможность создания «Shared» папок для общего доступа лиц, имеющих разные учетные записи на сервисе. Доступна автоматическая синхронизация файлов и папок и хранения версий с возможностью отката.

Для использования вышеупомянутых технологий от Firebase в приложениях был использован Firebase Cоre API. Защищенное соединение устанавливается с помощью токена и требует подтверждения от пользователя при использовании сервиса в приложении впервые.

Чтобы избежать постоянных подтверждений при передаче или загрузке файла, токен сохраняется в SharedPreferences [3] классе программы. Для работы синхронизации фоне был использован интерфейс AssyncTask [6]. Он дает возможность асинхронно выполнить код, не нарушая при этом работу потока графического интерфейса и рекомендован производителем для использования в задачах, требующих время исполнения не более 20-30 секунд для достижения оптимальной производительности интерфейса. Этот же интерфейс используется также в методах загрузки и закачки программы.

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

Облачные операционные системы представляют собой среду для выполнения программного кода на различных языках программирования. Corezoid обеспечивает поддержку JavaScript и Erlang.

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

В Corezoid API существует несколько способов сохранять настройки пользователей и информацию в зависимости от их назначения и использования.- класс для хранения настроек и небольших объемов информации другого типа [7]. Получить доступ к нему можно с любого класса, связанного с Activity или View. Минус - завязан на графический интерфейс и не подходит для хранения больших объемов информации. Класс SharedPreferences по умолчанию используется в классе PreferenceActivity для всех его параметров. В приложении от SHome SharedPreferences используется для хранения веб токена сервиса Firebase, настроек и лога системы при сбое. Пример использования:

prefs = context.getSharedPreferences (FIREBASE_NAME, 0);.Editor edit = prefs.edit (); edit.putString ("KEY_TOKEN_PAIR", tokenPair) edit.commit ();

SQL Сonnector - класс, для развертывания и доступа к встроенной в систему Android базы данных SQL lite

Используется для хранения и последующей обработки больших объемов информации в базе SQL типа. В приложении SHome используется для хранения истории прогноз погоды, показаний с датчиков. Временные файлы или TempFile - файлы, которые будут удалены после закрытия программы. Используются для хранения временной информации.В системе SHome временные файлы используются для записи данных из БД для отправки в облачное хранилище. Также в бета-версии программы лог краш записывается во временный файл и отправляется на почту разработчиков.

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

Программа создается на языке программирования ActionScript 3 с помощью программного пакета Adobe Flash Builder 4.1 и Adobe Flash Professional CS5. Такой выбор обусловлен возможностями API Twitter и удобством интерфейса создает моего приложения благодаря технологии Adobe Flash.

Структура программы включает 10 классов, реализующих предусмотренную функциональность. Функции программы:

• Регистрация пользователя;

• Получение информации из профиля с помощью API «Twitter»;

• Отложенный постинг («Мои Заметки» → «Отложенный постинг»);

• Обработка информации с помощью «Corezoid» и «Twitter»;

• Вывод информации пользователю («База данных» → «Форма результатов»);

• Вывод информации администратору («XML База данных» → «Администратор») (рисунок 8).

Рисунок 8 - Схема работы приложения

 



3.2 Программная реализация алгоритма для серверной части системы


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

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

· Параметр;

· Действие;

· Значения.

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

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

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

На рисунке 9 представлена реляционная модель базы данных web-ориентированной информационной системы оценки меню пользователя, состоящая из таких сущностей как:

Рисунок 9 - Реляционная модель базы данных web-ориентированной информационной системы

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

· применимость к ориентированным и неориентированным графам;

· учёт весов на рёбрах;

· поиск как пересекающихся, так и непересекающихся сообществ;

· поиск как локальных (среди ближайших контактов пользователя), так

· и глобальных сообществ;

· низкая вычислительная сложность;

· возможность распределённой реализации в рамках вычислительной

· модели Pregel.

Все этапы, за исключением первого, выполняются отдельно для каждого атрибута, что схематически изображено на рисунке 10. На этапе построения исходного набора данных производится сбор данных пользователей из сети Twitter. Для каждого пользователя сначала запрашивается только его профиль в сети Twitter. При наличии в нём ссылки на профиль того же пользователя в сети Facebook (в которой набор пользовательских атрибутов существенно больше, чем в Twitter) запрашиваются и сохраняются все доступные сообщения пользователя из сети Twitter.

Рисунок 10 - Система обработки сообщений

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

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

Рисунок 11 - Дамп базы данных

Таким образом, элементом набора данных для каждого атрибута и языка является набор символьных строк, полученных из текстов сообщений и 2 профиля одного пользователя в Twitter, а также значение атрибута у данного пользователя в Facebook. На этапе построения признакового описания из сообщений пользователей извлекаются лингвистические признаки. Из полученных токенов строится набор признаков в виде N-грамм размером от 1 до 3 с учётом порядка токенов. Каждый тип признаков представлен двумя подтипами: с учётом и без учёта регистра символов. Итоговый вектор признаков для пользователя является бинарным, то есть содержит только информацию о наличии или отсутствии признака в его текстовых данных. Количество экземпляров одного признака игнорируется. На этапе отбора информативных признаков применяется метод, основанный на расчёте условной взаимной информации.

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

Результатом является значение атрибута выбранного пользователя. Для тестирования использовались наборы данных англоязычных пользователей Twitter, размеченные по полу (мужской/женский), возрасту (моложе 20 лет/от 20 до 40 лет/старше 40 лет), семейному положению (состоит/не состоит в отношениях), политическим (демократ/республиканец) и религиозным (христианин/мусульманин/атеист) взглядам. Для оценки качества результатов используется точность классификации (accuracy). Исходный набор данных разделяется на обучающую и тестовую подвыборки. В качестве входных данных используются тексты пользователей сети Twitter из тестовой подвыборки исходного набора данных.

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

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

ER-модель базы данных, интегрированной с алгоритмом показана на рисунке 12.

Рисунок 12 - ER-модель базы данных

Алгоритмическая модель в системе Corezoid показана на рисунке 13.

Рисунок 13 - Алгоритмическая модель в системе Corezoid

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

Рисунок 14 - Главная алгоритмическая ветвь

3.3 Проектирование и разработка клиентского приложения

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

· Родной вид для операционной системы;

· Интуитивность;

· Дружелюбие к пользователю;

· Простота настроек.

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

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

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

Родной вид программы помогает пользователю быстро разобраться с интерфейсом и кроме того делает само приложение гармоничной частью той операционной системы, в которой он используется. Приложение функционирует в операционной системе Coreziod и должен соответствовать концепциям дизайна, определенным в Google. Собирательное название таких концепций - дизайн материалов или Material Design этого типа дизайна: в его рамках объекты «отвечают» пользователю тенями и реакцией на прикосновения. На первый взгляд новый концепт слишком «простой». Он плоский и многослойный. Слои обозначены тенями. Идея такая же, как в физической книги или тетради, и заключается в «перелистывании страниц». Разработчики получили возможность задавать определения угла отдельных элементов интерфейса и прорисовать тени в режиме реального времени.

«Материальный» дизайн web-ресурса характеризует жирные яркие шрифты и адаптивная «палитра», что позволяет приложениям приспосабливать свои цвета к цветовой гамме отображаемого им контента. Галерея найдет тона отраженной ней картинки, а музыкальный плеер - обложки воспроизводимого альбома. Это простые примеры того, на что способна эта самая знаменитая адаптивная «палитра» [8].

Другой ключевой особенностью Material design является отклик на касания пользователя. Нажатие кнопки анимирован. То есть, пользователь будет видеть, на какие элементы интерфейса он «нажимает». Эта возможность распространяется на все программы, страницы, меню и другие составляющие операционной системы [9].

Рисунок 15 - Пример интерфейса авторизации пользователя

Вся логика web-приложений строится вокруг классов, унаследованных от View или Activity, так как получить доступ к ресурсам приложения можно только через них или их Context классы. Однако динамично можно менять только виджеты помощью Holder-классов или заменой фрагмента на другой. Рассмотрим эти продходы в сравнении:класс является рациональным решением для вывода различных списков виджетов заранее определенной структуры с помощью адаптера, однако для отображения одного виджета этот подход не годится. Основная проблема - на инициализацию трех классов для настройки Holder тратится определенное количество ресурсов. К ним добавляются также память на динамическое выделение под виджет и на его прорисовки. Подход будет оправдан в том случае, если нужно выводить большое количество однотипной информации, однако для инициализации одного объекта он будет слишком ресурсоемким.класс для изменения фрагментов. Это решение оптимально для замены одного View на другое или для адаптации приложения и его компонентов под мобильный режим или изменение ориентации экрана. В прочем FragmentManager используется для замены фрагментов кода программы с какого-то действия. Чтобы просто изменить положение фрагментов на экране можно прописать соответствующее поведение в соответствующих манифест-файле и xml-файле.

Создать новое Activity. Ранее, до появления Holder и Fragment, это был единственный способ для создания программного продукта. Информация с одной Activity в другое можно было передать через Intent класс, необходимый для перехода. Минус такого подхода в том, что нужно создавать трех разных Activity: для двух вариаций ориентации экрана и для планшета. Также явным недостатком является перерисовка всего экрана вместо его части. Google рекомендует использовать Activity только в том случае, когда невозможно сделать те же операции с фрагментами.

Все три подхода используются в построении комплексных программ и их элементов навигации. Для переключения между экранами используется Navigation Drawer шаблон или просто боковое меню. Как элемент навигации боковое меню найболее часто используется в приложениях с несколькими разнотипными информационными экранами [2]. В формате XML - это просто тип разметки с встроенным учетной выводом сокращений-переходов.

Кроме XML файла интерфейса также необходим код для замены фрагментов на экране при выборе того или иного пункта бокового меню. Для этого и используются Inflater и FragmentManager классы.FragmentManager отвечает за изменение одного фрагмента на другой путем комита транзакций, а Inflater-класс - по отрисовку частей фрагмента после его замены.

3.4 Руководство пользователя


Для начала использования сервиса следует ввести в адресной строке браузера адрес сайта mob.writer-com.com.

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

На экране Вы увидите фирменный логотип Twitter виде птицы синего цвета. Для перехода к формам ввода сообщений нажмите на данный логотип.

Перед Вами отобразилась страница авторизации в социальной сети Twitter. Для авторизации необходимо ввести псевдоним или адрес электронной почты, которые Вы указывали при регистрации в Twitter, в следующем текстовом поле следует ввести пароль от аккаунта Twitter. Нажмите кнопку «Авторизировать», чтобы система Вас идентифицировала и получила доступ к возможности публикации сообщений от Вашего имени в Вашем аккаунте.

Если Вы нажмете кнопку «Отмена», то осуществите возврат на главную страницу сервиса mob.writer-com.com.

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

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

После того, как Вы введете весь медиа-план сообщений, следует нажать кнопку «Публиковать», чтобы инициализировать процесс публикации и отслеживания постов в Twitter (рисунок 16).

Рисунок 16 - Ввод сообщений постов

Следить за статистикой работы системы (рисунок 17) представляется возможным посредством статистической панели Corezoid.

Для этого перейдите на сайт Corezoid.com, авторизируйтесь.

Рисунок 17 - Список задач

Далее Нажмите на кнопку «Dashboard» (рисунок 18) и в режиме реального времени отслеживайте прогресс публикации Вашего медиа-плана.

Рисунок 18 - Прогресс публикации медиа-плана

Общая модель работы системы отображена на диаграмме активности (рисунок 19).

Рисунок 19 - Диаграмма активности

 

Выводы по третьей главе


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

Способы интерракции реализованы с целью создания лучшего опыта пользователя. Навигация между частями приложения выполняется посредством использования шаблона Navigation Drawer от Google. Результат соответствует представлениям заказчика о системе и согласован в технической документации.

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

Разработана алгоритмическая модель в системе Corezoid как инструмент проектирования бизнес-процессов для обработки запросов.

Разработан интерфейс системы как экран взаимодействия с пользователем.

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

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

 


4 Оценка эффективности реализованного метода и алгоритма распространения информации

 

.1 Оценка статистических выходных данных


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

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

После подтверждения происходит запуск приложения. Получив разрешение, обращаясь к серверам «Twitter» получает информацию о пользователе. Программа сразу же обрабатывает доступные данные и выдает страницу пользователя. Ему доступна информация относительно пола и возраста, города, в котором он проживает, и основного вуза, в котором учился или учится пользователь.

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

Пользователю доступны фильтры, чтобы корректировать доступ к его личным данным («Приватность).

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

Для администрирования приложение разаботана специальная административная панель, которая позволяет просматривать IP и браузера пользователей при их последнем входе.

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

Рисунок 20 - Панель администрирования

Также в приложении доступна общяя информация о всех пользователей, установивших приложение. Это категория «Мои друзья», где доступны функции просмотра информации всех друзей пользователя, друзей на сайте, а также просмотр заявок в друзья.

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

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

Следует отметить, что по мере изучения аудитории пользователей социальных медиа «изнутри» (опрос только пользователей социальных медиа), невозможно определить их абсолютное количество, и количество относительно общего количества Интернета. Однако, таким образом получается боль четкая и точная информация о пользователях социальных медиа.

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

База данных создана таким образом, чтобы все данные, содержащиеся в ней, можно было комфортно просматривать и обрабатывать. Для этого предусмотрена возможность импорта базы данных в Microsoft Access, что позволяет интерпретировать информацию средствами Access и Excel, в любой вид, необходимым определенная задача.

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

4.2 Описание входных данных

На первом этапе исследования проверим характеристики скорости работы системы, подставив случайные значения в расчетные формулы примененных алгоритмов метода динамического программирования, имеющего сложность O(w*n). Полученные данные отобразим в виде графов (рисунок 21).

Рисунок 21 - Данные для расчета производительности

Если необходимо найти расстояние от одной вершины к другим или ко всем вершинам графа и веса всех ребер графа является положительными или равны нулю, то наиболее эффективным оказывается алгоритм Дейкстры со временем работы О (m lgn) [20].

Если же веса ребер могут быть отрицательными, то необходимо применять алгоритм Беллмана-Форда, время работы которого О (nm). Если необходимо найти расстояния между всеми парами вершин графа, граф является разряженным и все ребра имеют неотъемлемые веса, то можно выполнить n раз алгоритм Дейкстры. Если же граф является разряженным, но в нем могут быть ребра с отрицательными весами, то необходимо использовать алгоритм Джонсона. Если необходимо найти расстояния между всеми парами вершин, веса ребер могут быть отрицательными и граф не является разряженным (m стремится к n2), то необходимо использовать алгоритм Флойда-Уоршола. Ни один из приведенных алгоритмов не может быть применен для графов, которые содержат негативные циклы. Однако алгоритм Беллмана-Форда (как и алгоритм Джонсона), а также алгоритм Флойда-Уоршола могут выявить такие циклы.

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

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

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

Такую регулятивную функцию и выполняет коэффициент kj. Общее количество генов в хромосоме соответствует количеству объектов поражения. Каждый ген содержит значение количества боевых единиц, назначаются на соответствующий объект. Такая структура хромосомы отвечает полиалельному варианта генетического алгоритма (ГА), который и был использован для решения задачи.

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

Опубликуем в аккаунте твиттер посты со следующим содержанием: «1», «2», «3». Пост с текстом «2» будет опубликован, когда кто-либо «лайкнет» пост 1. Пост с текстом «3» будет опубликован, когда кто-либо лайнет пост 2.

4.3 Описание результатов эксперимента


Анализ данных может быть получен как в автоматическом режиме так и в ручном. Программа может сама проанализировать собранную информацию и представить в наглядном виде. Эта возможность реализована по следующим категориям:

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

• загрузить базу данных XML с сервера на локальный компьютер;

• импортировать XML в Microsoft Access, используя штатный механизм Access;

• с помощью средств Microsoft Access сделать выборку;

• обработать выборку с помощью Microsoft Access или Microsoft Excel.

Для обработки данных с Microsoft Access можно использовать и любые другие программные средства, которые могут быть полезными для других задач.

В общем информация внутри XML базы данных хранятся в таком виде:

<UserInfo>

<Код> 1 </ Код>

<id_vk> 1702950 </ id_vk>

<Name> Батырбек </ Name>

<SecondName> Айналимов </ SecondName>

<BD> 27.05.1990 </ BD>

<Sex> 1 </ Sex>

<Contry> Россия </ Contry>

<City> Волжский </ City>

<Param1> 1 </ Param1>

...

<Param20> 5 </ Param20>

</ UserInfo>

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

Таким образом конечный XML файл выглядит следующим образом:

<? xml version = "1.0" encoding = "UTF-8"?>

<dataroot xmlns: od = «urn: schemas-microsoft-com: officedata» xmlns: xsi = "#"863940.files/image076.gif">

Рисунок 22 - Мои Заметки

Авторизируемся в системе (рисунок 23).

Рисунок 23 - Авторизация в системе

Авторизируемся в Twitter (рисунок 24).

Рисунок 24 - Авторизация в системе Twitter

Нажмем кнопку «Добавить сообщение», чтобы подготовить формы для ввода трех постов (рисунок 25).

Рисунок 25 - Добавление нового поля ввода

Введем текст постов и дополнительно загрузим 500 постов через Dashboard системы Corezoid (рисунок 26).

Рисунок 26 - Ввод текста сообщений

Нажмем кнопку «Публиковать» (рисунок 27).

Рисунок 27 - Публикация сообщений

Дейстивтельно, публикация первых постов происходила после «лайка» каждого предыдущего поста (рисунок 28).

Рисунок 28 - Публикация первых постов

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

Рисунок 29 - Публикация последних постов

Нагрузочное тестирование системы было выполнено в течение недели после публикации первого поста. Для этого была измерена нагрузка на центральный процессор сервера в течение публикации 500 постов. Полученный график нагрузки отображен на рисунке 30.

Рисунок 30 - Нагрузка на центральный процессор сервера публикаций Corezoid

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

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

 

Выводы по четвёртой главе


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

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

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

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

Такую регулятивную функцию и выполняет коэффициент kj. Общее количество генов в хромосоме соответствует количеству объектов поражения. Каждый ген содержит значение количества боевых единиц, назначаются на соответствующий объект. Такая структура хромосомы отвечает полиалельному варианта генетического алгоритма (ГА), который и был использован для решения задачи.

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

Отбор "отцов" для скрещивания осуществлялся по турнирной схеме с двумя участниками. Формирование следующего поколения осуществлялось по элитной схеме, когда лучший генотип принудительно переносился в следующее поколение. Модификация генотипа осуществлялась с помощью равномерного кроссовера с вероятностью 0,9, мутации с вероятностью 0,95 и инверсии с вероятностью 0,2. Количество особей в популяции составляла 50, а количество поколений - 250. Время расчетов на ЭВМ Intel-166 - 0,57 с. Дополнительная настройка параметров ГА не производилась.

Сравнение результатов расчетов по этим методам свидетельствует, что использование ГА позволило найти более эффективный вариант распределения, чем метод динамического программирования (в данном случае, на 1,6%), что свидетельствует о потенциально высокой вычислительной эффективности ГА.

Заключение


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

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

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

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

Сформулированы актуальные направления дальнейших научных исследований в области разработки ИС и приложений БД.

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

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

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

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

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

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

· выполнено построение сигналов для каждого токена (последовательности символов) с использованием информации о частоте его появления в корпусе в различные моменты времени;

· осуществлено применение вейвлетного анализа к полученным сигналам;

· произведено удаление незначительных токенов с использованием автокорреляции сигналов;

· выполняется построение матрицы кросс-корреляции сигналов токенов;

· осуществляется поиск событий как наборов токенов путём кластеризации полученной матрицы;

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

· программный продукт не требует данных о пользователях и доступа к внешним базам знаний;

· реализована возможность инкрементальной обработки при поступлении новых сообщений по разработанному алгоритму.

Если же веса ребер могут быть отрицательными, то необходимо применять алгоритм Беллмана-Форда, время работы которого О (nm). Если необходимо найти расстояния между всеми парами вершин графа, граф является разряженным и все ребра имеют неотъемлемые веса, то можно выполнить n раз алгоритм Дейкстры.

Если же граф является разряженным, но в нем могут быть ребра с отрицательными весами, то необходимо использовать алгоритм Джонсона. Если необходимо найти расстояния между всеми парами вершин, веса ребер могут быть отрицательными и граф не является разряженным (m стремится к n2), то необходимо использовать алгоритм Флойда-Уоршола.

Ни один из приведенных алгоритмов не может быть применен для графов, которые содержат негативные циклы. Однако алгоритм Беллмана-Форда (как и алгоритм Джонсона), а также алгоритм Флойда-Уоршола могут выявить такие циклы.

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

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

Сравнение результатов расчетов по этим методам свидетельствует, что использование генетического алгоритма позволило найти более эффективный вариант распределения, чем метод динамического программирования (в данном случае, на 1,6%), что свидетельствует о потенциально высокой вычислительной эффективности генетического алгоритма.

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

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

Список литературы

1) Gjoka M. et al. Practical recommendations on crawling online social networks. Selected Areas in Communications, IEEE Journal on. - 2011. - Т. 29. - №. 9. - С. 1872-1892.

) Leskovec J., Faloutsos C. Sampling from large graphs. Proceedings of the 12th ACM SIGKDD international conference on Knowledge discovery and data mining. - ACM, 2006. - С. 631-636.

) Najork M., Wiener J. L. Breadth-first crawling yields high-quality pages. Proceedings of the 10th international conference on World Wide Web. - ACM, 2001. - С. 114-118.

4) Васильев А.Н.: Java. - СПб.: Питер, 2011

5) Веселкова Т.В.: Эффективная эксплуатация сайта. - М.: Дашков и К, 2011

) Грачев А.: Создаем свой сайт на WordPress. - СПб.: Питер, 2011

) Гребенюк Е.И.: Технические средства информатизации. - М.: Академия, 2011

) Громаковский А.: Работа с облачными системами удаленного доступа. - СПб.: Питер, 2011

) Емельянова Н.З.: Проектирование информационных систем. - М: Форум, 2011

) Заварыкин В.М., Житомирский В.Г., Лапчик М.П. Основы информатики и вычислительной техники. - М.: Просвещение, 1989.

11) Задачи по программированию / С. А. Абрамов, Г. Г. Гнездилова, Е. Н. Капустина, М. И. Селюн. - М.: Наука, 1988.

12) Зозуля Ю.Н.: Настройка компьютера с помощью BIOS. - СПб.: Питер, 2011

13) Касаткин В. Н. Информация. Алгоритмы. ЭВМ. - М.: Просвещение, 1991.

14) Культин Н.Б.: С/С++ в задачах и примерах. - СПб: БХВ-Петербург, 2011

15) Мезенцев К.Н.: Автоматизированные информационные системы. - М.: Академия, 2011

) Михеева Е.В.: Информационные технологии в профессиональной деятельности. - М.: Академия, 2011

) Негус Кристофер: Ubuntu и Debian Linux для продвинутых. - СПб.: Питер, 2011

) НИУ БелГУ ; авт.-сост.: Н.А. Беседина, Ю.В. Францева ; рец.: Т.А. Клепикова, Т.М. Тимошилова: Английский язык для сферы компьютерных наук. - Белгород: ИПК НИУ БелГУ, 2011

) НИУ БелГУ ; гл. ред. Л.Я. Дятченко: Научные ведомости Белгородского государственного университета. - Белгород: ИПК НИУ "БелГУ", 2011

) Устинин Д.М., Коваленко И.Б., Ризниченко Г.Ю., Рубин А.Б. Сопряжение различных методов компьютерного моделирования в комплексной модели фотосинтетической мембраны. Компьютерные исследования и моделирование. 2013. Т. 5. № 1. C. 65-81.

) Хрущев С.С., Абатурова А.М., Дьяконова А.Н., Устинин Д.М., Зленко Д.В., Федоров В.А., Коваленко И.Б., Ризниченко Г.Ю., Рубин А.Б. Моделирование белок-белковых взаимодействий с применением программного комплекса многочастичной броуновской динамики. Компьютерные исследования и моделирование. 2013. Т. 5. № 1. C. 47-51.

Приложения


ПРИЛОЖЕНИЕ А

Код файла Coresoid.php

<?php

/**

* Corezoid Module

*

* NOTICE OF LICENSE

*

* This source file is subject to the Open Software License (OSL 3.0)

* that is available through the world-wide-web at this URL:

* http://opensource.org/licenses/osl-3.0.php

*

* @category Corezoid

* @package Corezoid/Corezoid

* @version 1.0

* @author corezoid.com

* @copyright Copyright (c) 2013 corezoid.com

* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)

*

* EXTENSION INFORMATION

*

* Corezoid API http://www.corezoid.com/how_to_use/api/en/

*

*/

/**

* Corezoid Class

*

* @author Corezoid <support@mcorezoid.com>

*/Corezoid

{

/**

* host Corezoid

*/$_host = 'https://www.corezoid.com';

/**

* Version API

*/$_version = '1';

/**

* Format API

*/$_format = 'json';

/**

* User API

*/$_api_login;

/**

* API secret key

*/$_api_secret;

/**

* Array tasks

*/$_tasks = array();

/**

* Constructor.

*

* @param string $api_login

* @param string $api_secret

*

* @throws InvalidArgumentException

*/function __construct($api_login, $api_secret)

{(empty($api_login)) {new InvalidArgumentException('api_login is empty');

}(empty($api_secret)) {new InvalidArgumentException('api_secret is empty');

}

$this->_api_login = $api_login;

$this->_api_secret = $api_secret;

}

/**

* Add new task

*

* @param string $ref

* @param string $conv_id

* @param array $data

*

* @throws InvalidArgumentException

*/function add_task($ref, $conv_id, $data = array())

{(empty($ref)) {new InvalidArgumentException('ref is empty');

}(empty($conv_id)) {new InvalidArgumentException('conv_id is empty');

}

$this->_tasks[] = array(

'ref' => $ref,

'type' => 'create',

'obj' => 'task',

'conv_id' => $conv_id,

'data' => $data

);

}

/**

* Send tasks to Corezoid

*

* @return string

*/function send_tasks()

{

$content = json_encode(array('ops' => $this->_tasks));

$time = time();

$url = $this->make_url($time, $content);

$ch = curl_init();_setopt($ch, CURLOPT_URL, $url);_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);_setopt($ch, CURLOPT_POST, 1);_setopt($ch, CURLOPT_POSTFIELDS,$content);_setopt($ch, CURLOPT_RETURNTRANSFER,1);

$server_output = curl_exec($ch);_close($ch);$server_output;

}

/**

* Check Signature

*

* @param string $sign

* @param string $time

* @param string $content

*

* @return string

*/function check_sign($sign, $time, $content)

{

$make_sign = $this->make_sign($time, $content);($sign == $make_sign) ? true : false;

}

/**

* Create URL to Corezoid

*

* @param string $time

* @param string $content

* @return string

*/function make_url($time, $content)

{

$sign = $this->make_sign($time, $content);$this->_host.'/api/'

.$this->_version.'/'

.$this->_format.'/'

.$this->_api_login.'/'

.$time.'/'

.$sign;

}

/**

* Create Signature

*

* @param string $time

* @param string $content

*

* @return string

*/function make_sign($time, $content)

{$this->str2hex(sha1($time.$this->_api_secret.$content.$this->_api_secret, 1));

}

/**

* String to HEX

*

* @param string $str

*

* @return string

*/function str2hex($str)

{

$r = unpack('H*', $str);array_shift( $r );

}

}

?>

ПРИЛОЖЕНИЕ Б

Код файла action.php

// API user settings

$api_login = '41294';

$api_secret = 'czwPIScyl7PHsdjEGLn67e8wysaOJpVIEz6tHEyR5MViMxJm4I';

// Init Middleware class

$MV = new Corezoid($api_login, $api_secret);

// Add new task

$ref1 = time().'_'.rand();

$task1 = array('text_form_posts1' => $text_form_posts1, 'text_form_posts2' => $text_form_posts2, 'oauth_token' => $oauth_token, 'oauth_token_secret' => $oauth_token_secret, 'text_form_posts3' => $text_form_posts3, 'text_form_posts4' => $text_form_posts4, 'text_form_posts5' => $text_form_posts5, 'text_form_posts6' => $text_form_posts6, 'text_form_posts7' => $text_form_posts7, 'text_form_posts8' => $text_form_posts8, 'text_form_posts9' => $text_form_posts9, 'text_form_posts10' => $text_form_posts10);

// ID conveyor

$conv_id = 77662;

$MV->add_task($ref1, $conv_id, $task1);

// Send all tasks to Middleware

$res = $MV->send_tasks();

?>

ПРИЛОЖЕНИЕ В

Код файла index.php

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="utf-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<meta name="viewport" content="width=device-width, initial-scale=1">

<title>Бакаларвская работа</title>

<link href='http://fonts.googleapis.com/css?family=Varela+Round' rel='stylesheet' type='text/css'>

<link href="css/bootstrap.min.css" rel="stylesheet">

<link href="http://netdna.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css" rel="stylesheet">

<link href="css/flexslider.css" rel="stylesheet" >

<link href="css/styles.css" rel="stylesheet">

<link href="css/queries.css" rel="stylesheet">

<link href="css/animate.css" rel="stylesheet">

<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->

<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->

<!--[if lt IE 9]>

<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>

<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>

<![endif]-->

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>

<script src="https://cdn.firebase.com/js/client/2.3.1/firebase.js"></script>

</head>

<body id="top">

<header id="home">

<nav>

<div>

<div>

<div>

<nav class="pull">

<ul>

<!-- <li><a href="#intro">Introduction <span>

<li><a href="#features">Возможности <span>

<!-- <li><a href="#responsive">Responsive Design <span>

<li><a href="#portfolio">Как это работает <span>

<!-- <li><a href="#team">Team <span>

<li><a href="#contact">Get in Touch <span>

</ul>

</nav>

</div>

</div>

</div>

</nav>

<section>

<div>

<div>

<div>

<a id="nav-toggle">

</div>

</div>

<div>

<div>

<h1>Бакаларсвкая работа</span></h1>

<p>

</div>

</div>

<div class="row">

<div>

<a href="#twit_auth">Старт</a>

</div>

</div>

</div>

</section>

</header>

<!-- Формы взаимодействия -->

<section>

<!-- <div>

<h1><i>

<?php

// определяем изначальные конфигурационные данные

('CONSUMER_KEY', 'REBbXraw2FwOE8Bgq4rykphSD');('CONSUMER_SECRET', '6cT0ETphHxzVw8Z6lFIa5LiFHNMj0cuBg4qvbImm4bjMkBsAjF');

('REQUEST_TOKEN_URL', 'https://api.twitter.com/oauth/request_token');('AUTHORIZE_URL', 'https://api.twitter.com/oauth/authorize');('ACCESS_TOKEN_URL', 'https://api.twitter.com/oauth/access_token');('ACCOUNT_DATA_URL', 'https://api.twitter.com/1.1/users/show.json');

('CALLBACK_URL', 'http://mob.writer-com.com/step2.php');

// формируем подпись для получения токена доступа

define('URL_SEPARATOR', '&');

$oauth_nonce = md5(uniqid(rand(), true));

$oauth_timestamp = time();

Продолжение приложения Г

$params = array(

'oauth_callback=' . urlencode(CALLBACK_URL) . URL_SEPARATOR,

'oauth_consumer_key=' . CONSUMER_KEY . URL_SEPARATOR,

'oauth_nonce=' . $oauth_nonce . URL_SEPARATOR,

'oauth_signature_method=HMAC-SHA1' . URL_SEPARATOR,

'oauth_timestamp=' . $oauth_timestamp . URL_SEPARATOR,

'oauth_version=1.0'

);

$oauth_base_text = implode('', array_map('urlencode', $params));

$key = CONSUMER_SECRET . URL_SEPARATOR;

$oauth_base_text = 'GET' . URL_SEPARATOR . urlencode(REQUEST_TOKEN_URL) . URL_SEPARATOR . $oauth_base_text;

$oauth_signature = base64_encode(hash_hmac('sha1', $oauth_base_text, $key, true));

// получаем токен запроса

$params = array(_SEPARATOR . 'oauth_consumer_key=' . CONSUMER_KEY,

'oauth_nonce=' . $oauth_nonce,

'oauth_signature=' . urlencode($oauth_signature),

'oauth_signature_method=HMAC-SHA1',

'oauth_timestamp=' . $oauth_timestamp,

'oauth_version=1.0'

);

$url = REQUEST_TOKEN_URL . '?oauth_callback=' . urlencode(CALLBACK_URL) . implode('&', $params);

$response = file_get_contents($url);_str($response, $response);

$oauth_token = $response['oauth_token'];

$oauth_token_secret = $response['oauth_token_secret'];

// генерируем ссылку аутентификации

$link = AUTHORIZE_URL . '?oauth_token=' . $oauth_token;

 '<h1>Шаг 1. Авторизируйтесь в Twitter (нажмите на птичку), чтобы опубликовать отложенные посты в Вашей ленте.</h1>';

echo '<a href="' . $link . '"><img src="img/logoTwitter.png"></a>';

?>

</section>

<script type="text/javascript" language="javascript">call() {msg = $('#formx').serialize();

text_form_posts1_db = $('#text_form_posts1').val();text_form_posts2_db = $('#text_form_posts2').val();oauth_token_db = $('#oauth_token').val();oauth_token_secret_db = $('#oauth_token_secret').val();

myFirebaseRef = new Firebase("https://popping-heat-8710.firebaseio.com/");

// Generate a reference to a new location and add some data using push()newPostRef = myFirebaseRef.push();

// Get the unique ID generated by push()postID = newPostRef.key();

.push({_token: oauth_token_db,_token_secret: oauth_token_secret_db,_form_posts1: text_form_posts1_db,_form_posts2: text_form_posts2_db

Продолжение приложения Г

});

$.ajax({: 'POST',: 'action.php',: msg,: function(data) {

$('.results').html(data);

},: function(xhr, str){('Возникла ошибка: ' + xhr.responseCode);

}

});

}

</script>

<!-- <section>

<div>

<div>

<div>

<h1>

<p>Sed a lorem quis neque interdum <a href="#">consequat ut sed sem</a>. Duis quis tempor nunc. Interdum et malesuada fames ac ante ipsum primis in faucibus. Praesent id tempor ipsum. Fusce at massa ac nunc porta fringilla sed eget neque. Quisque quis pretium nulla. Fusce eget bibendum neque, vel volutpat augue. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Interdum et malesuada fames ac ante ipsum primis in faucibus.</p>

</div>

</div>

</div>

</section> -->

<section>

<div class="container">

<div>

<div>

<h1 class="arrow">Возможности системы</h1>

<div>

<div>

<div>

<i>

</div>

<h2>Работа с любым аккаунтом Twitter</h2>

<p>Вы можете публиковать отложенные посты в ленте событий любого аккаунта Twitter. Достаточно лишь авторизироваться.</p>

</div>

<div>

<div>

<i>

</div>

<h2>Безграничность</h2>

<p>Применяется база данных Firebase от Google, позволяющая хранить и обрабатывать безлимитное количество данных. Серверная часть основана на масштабируемой технологии, основанной на облачной операционной системе Corezoid. </p>

</div>

<div>

<div>

<i>

</div>

<h2>Отложенный условный постинг</h2>

<p>Желаете загрузить медиаплан постов на несколько дней вперед? Важно взаимодействовать с аудиторией? Опубликаем каждый следующий пост, если предыдущий наберет указанное количество лайков.</p>

</div>

<div>

</div>

</div>

</div>

</div>

</section>

<!-- <section>

<div>

<div>

<div>

<div>

</div>

<div>

</div>

<div>

<div>

<div>

<div id="servicesSlider">

<ul>

<li>

<h1>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ultricies nulla non metus pulvinar imperdiet. Praesent non adipiscing libero. </p>

<p>ultrices odio vitae nulla ultrices iaculis. Nulla rhoncus odio eu lectus faucibus facilisis. Maecenas ornare augue vitae sollicitudin accumsan. </p>

<p>Etiam eget libero et erat eleifend consectetur a nec lectus. Sed id tellus lorem. Suspendisse sed venenatis odio, quis lobortis eros.</p>

</li>

<li>

<h1>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ultricies nulla non metus pulvinar imperdiet. Praesent non adipiscing libero. </p>

<p>ultrices odio vitae nulla ultrices iaculis. Nulla rhoncus odio eu lectus faucibus facilisis. Maecenas ornare augue vitae sollicitudin accumsan. </p>

<p>Etiam eget libero et erat eleifend consectetur a nec lectus. Sed id tellus lorem. Suspendisse sed venenatis odio, quis lobortis eros.</p>

</li>

</ul>

</div>

</div>

</div>

</div>

</div>

</section> -->

<section>

<div>

<div>

<div>

<h1>Применение<h4>Маркетинговые агенства могут загружать медиапланы наперед. Публикация постов с привязкой к заинтересованности аудитории - количеству лайков текущего поста.</h4></h1>

<a href="#portfolio">

</div>

</div>

</div>

</section>

<section>

<div>

<div>

<div id="portfolioSlider">

<ul>

<li>

<div>

<div>

<div>

<img src="img/portfolio-01.jpg" alt="Portfolio Item">

<div>

<a href="#twit_auth">Старт</a>

<a>

</div>

</div>

</div>

<h2>Авторизация</h2>

<p>Для начала работы с системой необходимо авторизироваться посредством птички Twitter. Это требуется для получения доступа к публикации Ваших отложенных постов.</p>

</div>

<div class="col-md-4 wp4 delay-05s">

<div>

<div>

<img src="img/portfolio-02.jpg" alt="Portfolio Item">

<div>

<a href="#twit_auth">Старт</a>

<a>

</div>

</div>

</div>

<h2>Написание постов</h2>

<p>Вам необходимо написать посты, которые будут опубликованы автоматически по достижении указанного количества лайков текущего поста.</p>

</div>

<div>

<div>

<div>

<img src="img/portfolio-03.jpg" alt="Portfolio Item">

<div>

<a href="#twit_auth">Старт</a>

<a>

</div>

</div>

</div>

<h2>Обработка данных</h2>

<p>После нажатия кнопки "Публиковать" данные отправляются в БД и в облачную ОС Corezoid. Система регулярно проверяет активность в Вашей ленте Twitter и публикует Ваши посты.</p>

</div>

</li>

<li>

<div>

<div>

<div class="img">

<img src="img/portfolio-01.jpg" alt="Portfolio Item">

<div>

<a href="#twit_auth">Старт</a>

<a>

</div>

</div>

</div>

<h2>Функция в разработке</h2>

<p>Функция в разработке.</p>

</div>

<div>

<div>

<div>

<img src="img/portfolio-02.jpg" alt="Portfolio Item">

<div>

<a href="#twit_auth">Старт</a>

<a>

</div>

</div>

</div>

<h2>Функция в разработке</h2>

<p>Функция в разработке.</p>

</div>

<div>

<div>

<div>

<img src="img/portfolio-03.jpg" alt="Portfolio Item">

<div>

<a href="#twit_auth">Старт</a>

<a>

</div>

</div>

</div>

<h2>Функция в разработке</h2>

<p>Функция в разработке.</p>

</div>

</li>

</ul>

</div>

</div>

</div>

</section>

<div>

<div>

<div>

<a href="#">

</div>

</div>

</div>

</div>

<section>

<div>

<div>

<div>

<h1>

</div>

</div>

<div>

<div>

<div id="teamSlider">

<ul>

<li>

<div>

<img src="img/team-01.png" alt="Team Member">

<h2>Jon Snow</h2>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ultricies nulla non metus pulvinar imperdiet. Praesent non adipiscing libero.</p>

<div>

<ul>

<li><a href="#">

<li><a href="#">

<li><a href="#">

</ul>

</div>

</div>

<div>

<img src="img/team-02.png" alt="Team Member">

<h2>Cersei Lannister</h2>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ultricies nulla non metus pulvinar imperdiet. Praesent non adipiscing libero.</p>

<div>

<ul>

<li><a href="#">

<li><a href="#">

<li><a href="#">

</ul>

</div>

</div>

<div>

<img src="img/team-03.png" alt="Team Member">

<h2>Jamie Lannister</h2>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ultricies nulla non metus pulvinar imperdiet. Praesent non adipiscing libero.</p>

<div>

<ul>

<li><a href="#">

<li><a href="#">

<li><a href="#">

</ul>

</div>

</div>

</li>

<li>

<div>

<img src="img/team-01.png" alt="Team Member">

<h2>Jon Snow</h2>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ultricies nulla non metus pulvinar imperdiet. Praesent non adipiscing libero.</p>

<div>

<ul>

<li><a href="#">

<li><a href="#">

<li><a href="#">

</ul>

</div>

</div>

<div>

<img src="img/team-02.png" alt="Team Member">

<h2>Cersei Lannister</h2>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ultricies nulla non metus pulvinar imperdiet. Praesent non adipiscing libero.</p>

<div>

<ul>

<li><a href="#">

<li><a href="#">

<li><a href="#">

</ul>

</div>

</div>

<div>

<img src="img/team-03.png" alt="Team Member">

<h2>Jamie Lannister</h2>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ultricies nulla non metus pulvinar imperdiet. Praesent non adipiscing libero.</p>

<div>

<ul>

<li><a href="#">

<li><a href="#">

<li><a href="#">

</ul>

</div>

</div>

</li>

</ul>

</div>

</div>

</div>

</div>

</section>

<section>

<a href="#top">

<div>

<div>

<div>

<h1>

</div>

</div>

<div>

<div class="col-md-4">

<div>

<h2><i>

<p>Level 6, 23 Pitt St, Sydney</p>

</div>

</div>

<div>

<div>

<h2><i>

<p>+61 9 211 3747</p>

</div>

</div>

<div>

<div>

<h2><i>

<p><a href="#">hey@halcyondays.com</a></p>

</div>

</div>

</div>

<div>

<div>

<ul>

<li><a href="#">

<li><a href="#">

<li><a href="#">

</ul>

</div>

</div>

</div>

</section>

->

<footer>

<div>

<div>

<div>

<p>Designed &amp; Developed by Батырбек Айналимов</p>

</div>

</div>

</div>

</footer>

<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

<!-- Include all compiled plugins (below), or include individual files as needed -->

<script src="js/waypoints.min.js"></script>

<script src="js/bootstrap.min.js"></script>

<script src="js/scripts.js"></script>

<script src="js/jquery.flexslider.js"></script>

<script src="js/modernizr.js"></script>

</body>

</html>

ПРИЛОЖЕНИЕ Г

Код файла index1.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head>

<title>1</title>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>

<script src="https://cdn.firebase.com/js/client/2.3.1/firebase.js"></script>

</head>

<body>

<?php

// определяем изначальные конфигурационные данные

define('CONSUMER_KEY', 'REBbXraw2FwOE8Bgq4rykphSD');('CONSUMER_SECRET', '6cT0ETphHxzVw8Z6lFIa5LiFHNMj0cuBg4qvbImm4bjMkBsAjF');

('REQUEST_TOKEN_URL', 'https://api.twitter.com/oauth/request_token');('AUTHORIZE_URL', 'https://api.twitter.com/oauth/authorize');('ACCESS_TOKEN_URL', 'https://api.twitter.com/oauth/access_token');('ACCOUNT_DATA_URL', 'https://api.twitter.com/1.1/users/show.json');

('CALLBACK_URL', 'http://www.mob.writer-com.com/');

// формируем подпись для получения токена доступа

define('URL_SEPARATOR', '&');

$oauth_nonce = md5(uniqid(rand(), true));

$oauth_timestamp = time();

$params = array(

'oauth_callback=' . urlencode(CALLBACK_URL) . URL_SEPARATOR,

'oauth_consumer_key=' . CONSUMER_KEY . URL_SEPARATOR,

'oauth_nonce=' . $oauth_nonce . URL_SEPARATOR,

'oauth_signature_method=HMAC-SHA1' . URL_SEPARATOR,

'oauth_timestamp=' . $oauth_timestamp . URL_SEPARATOR,

'oauth_version=1.0'

);

$oauth_base_text = implode('', array_map('urlencode', $params));

$key = CONSUMER_SECRET . URL_SEPARATOR;

$oauth_base_text = 'GET' . URL_SEPARATOR . urlencode(REQUEST_TOKEN_URL) . URL_SEPARATOR . $oauth_base_text;

$oauth_signature = base64_encode(hash_hmac('sha1', $oauth_base_text, $key, true));

// получаем токен запроса

$params = array(_SEPARATOR . 'oauth_consumer_key=' . CONSUMER_KEY,

'oauth_nonce=' . $oauth_nonce,

'oauth_signature=' . urlencode($oauth_signature),

'oauth_signature_method=HMAC-SHA1',

'oauth_timestamp=' . $oauth_timestamp,

'oauth_version=1.0'

);

$url = REQUEST_TOKEN_URL . '?oauth_callback=' . urlencode(CALLBACK_URL) . implode('&', $params);

$response = file_get_contents($url);_str($response, $response);

$oauth_token = $response['oauth_token'];

$oauth_token_secret = $response['oauth_token_secret'];

// генерируем ссылку аутентификации

$link = AUTHORIZE_URL . '?oauth_token=' . $oauth_token;

'<a href="' . $link . '">Аутентификация через Twitter</a>';

if (!empty($_GET['oauth_token']) && !empty($_GET['oauth_verifier'])) {

Продолжение приложения Д

// готовим подпись для получения токена доступа

$oauth_nonce = md5(uniqid(rand(), true));

$oauth_timestamp = time();

$oauth_token = $_GET['oauth_token'];

$oauth_verifier = $_GET['oauth_verifier'];

$oauth_base_text = "GET&";

$oauth_base_text .= urlencode(ACCESS_TOKEN_URL)."&";

$params = array(

'oauth_consumer_key=' . CONSUMER_KEY . URL_SEPARATOR,

'oauth_nonce=' . $oauth_nonce . URL_SEPARATOR,

'oauth_signature_method=HMAC-SHA1' . URL_SEPARATOR,

'oauth_token=' . $oauth_token . URL_SEPARATOR,

'oauth_timestamp=' . $oauth_timestamp . URL_SEPARATOR,

'oauth_verifier=' . $oauth_verifier . URL_SEPARATOR,

'oauth_version=1.0'

);

$key = CONSUMER_SECRET . URL_SEPARATOR . $oauth_token_secret;

$oauth_base_text = 'GET' . URL_SEPARATOR . urlencode(ACCESS_TOKEN_URL) . URL_SEPARATOR . implode('', array_map('urlencode', $params));

$oauth_signature = base64_encode(hash_hmac("sha1", $oauth_base_text, $key, true));

// получаем токен доступа

$params = array(

'oauth_nonce=' . $oauth_nonce,

'oauth_signature_method=HMAC-SHA1',

'oauth_timestamp=' . $oauth_timestamp,

'oauth_consumer_key=' . CONSUMER_KEY,

'oauth_token=' . urlencode($oauth_token),

'oauth_verifier=' . urlencode($oauth_verifier),

'oauth_signature=' . urlencode($oauth_signature),

'oauth_version=1.0'

);

$url = ACCESS_TOKEN_URL . '?' . implode('&', $params);

$response = file_get_contents($url);

parse_str($response, $response);

// формируем подпись для следующего запроса

$oauth_nonce = md5(uniqid(rand(), true));

$oauth_timestamp = time();

$oauth_token = $response['oauth_token'];

$oauth_token_secret = $response['oauth_token_secret'];

}

?>

<form method="POST" id="formx" action="javascript:void(null);" onsubmit="call()">

<h4>Введите сообщение для публикации в группах ВК на первом этапе</h4>

<p><textarea id="text_form_posts1" name="text_form_posts1" rows="10" cols="30"></textarea></p>

<p><textarea id="text_form_posts2" name="text_form_posts2" rows="10" cols="30"></textarea></p>

<input id="oauth_token" name="oauth_token" type="hidden" value= "<? echo $oauth_token ?>";>

<input id="oauth_token_secret" name="oauth_token_secret" type="hidden" value= "<? echo $oauth_token_secret ?>";>

<p><input type="submit"></p>

</form>

<script type="text/javascript" language="javascript">call() {msg = $('#formx').serialize();text_form_posts1_db = $('#text_form_posts1').val();text_form_posts2_db = $('#text_form_posts2').val();oauth_token_db = $('#oauth_token').val();oauth_token_secret_db = $('#oauth_token_secret').val();

myFirebaseRef = new Firebase("https://popping-heat-8710.firebaseio.com/");

// Generate a reference to a new location and add some data using push()newPostRef = myFirebaseRef.push();

// Get the unique ID generated by push()postID = newPostRef.key();

.push({_token: oauth_token_db,_token_secret: oauth_token_secret_db,_form_posts1: text_form_posts1_db,_form_posts2: text_form_posts2_db

});

$.ajax({: 'POST',: 'action.php',: msg,: function(data) {

$('.results').html(data);

},: function(xhr, str){('Возникла ошибка: ' + xhr.responseCode);

}

});

}

</script>

</body>

</html>

ПРИЛОЖЕНИЕ Д

Код файла step2.php

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="utf-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<meta name="viewport" content="width=device-width, initial-scale=1">

<title>Бакаларвская работа</title>

<link href='http://fonts.googleapis.com/css?family=Varela+Round' rel='stylesheet' type='text/css'>

<link href="css/bootstrap.min.css" rel="stylesheet">

<link href="http://netdna.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css" rel="stylesheet">

<link href="css/flexslider.css" rel="stylesheet" >

<link href="css/styles.css" rel="stylesheet">

<link href="css/queries.css" rel="stylesheet">

<link href="css/animate.css" rel="stylesheet">

<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->

<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->

<!--[if lt IE 9]>

<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>

<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>

<![endif]-->

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>

<script src="https://cdn.firebase.com/js/client/2.3.1/firebase.js"></script>

</head>

<body id="top">

<header id="home">

<nav>

<div>

<div class="row">

<div>

<nav>

<ul>

<li><a href="#intro">Introduction <span>

<li><a href="#features">Features <span>

<!-- <li><a href="#responsive">Responsive Design <span>

<li><a href="#portfolio">Portfolio <span>

<!-- <li><a href="#team">Team <span>

<li><a href="#contact">Get in Touch <span>

</ul>

</nav>

</div>

</div>

</div>

</nav>

<!-- <section>

<div>

<div>

<div>

<a id="nav-toggle">

</div>

</div>

<div>

<div>

<h1>

<p>

</div>

</div>

<div>

<div>

<a href="#intro">

</div>

</div>

</div>

</section> -->

</header>

<?php

('CONSUMER_KEY', 'REBbXraw2FwOE8Bgq4rykphSD');('CONSUMER_SECRET', '6cT0ETphHxzVw8Z6lFIa5LiFHNMj0cuBg4qvbImm4bjMkBsAjF');('REQUEST_TOKEN_URL', 'https://api.twitter.com/oauth/request_token');('AUTHORIZE_URL', 'https://api.twitter.com/oauth/authorize');('ACCESS_TOKEN_URL', 'https://api.twitter.com/oauth/access_token');('ACCOUNT_DATA_URL', 'https://api.twitter.com/1.1/users/show.json');

('CALLBACK_URL', 'http://mob.writer-com.com/step2.php');

('URL_SEPARATOR', '&');

(!empty($_GET['oauth_token']) && !empty($_GET['oauth_verifier'])) {

// готовим подпись для получения токена доступа

$oauth_nonce = md5(uniqid(rand(), true));

$oauth_timestamp = time();

$oauth_token = $_GET['oauth_token'];

$oauth_verifier = $_GET['oauth_verifier'];

$oauth_base_text = "GET&";

$oauth_base_text .= urlencode(ACCESS_TOKEN_URL)."&";

$params = array(

'oauth_consumer_key=' . CONSUMER_KEY . URL_SEPARATOR,

'oauth_nonce=' . $oauth_nonce . URL_SEPARATOR,

'oauth_token=' . $oauth_token . URL_SEPARATOR,

'oauth_timestamp=' . $oauth_timestamp . URL_SEPARATOR,

'oauth_verifier=' . $oauth_verifier . URL_SEPARATOR,

'oauth_version=1.0'

);

$key = CONSUMER_SECRET . URL_SEPARATOR . $oauth_token_secret;

$oauth_base_text = 'GET' . URL_SEPARATOR . urlencode(ACCESS_TOKEN_URL) . URL_SEPARATOR . implode('', array_map('urlencode', $params));

$oauth_signature = base64_encode(hash_hmac("sha1", $oauth_base_text, $key, true));

// получаем токен доступа

$params = array(

'oauth_nonce=' . $oauth_nonce,

'oauth_signature_method=HMAC-SHA1',

'oauth_timestamp=' . $oauth_timestamp,

'oauth_consumer_key=' . CONSUMER_KEY,

'oauth_token=' . urlencode($oauth_token),

'oauth_verifier=' . urlencode($oauth_verifier),

'oauth_signature=' . urlencode($oauth_signature),

'oauth_version=1.0'

);

$url = ACCESS_TOKEN_URL . '?' . implode('&', $params);

$response = file_get_contents($url);

parse_str($response, $response);

// формируем подпись для следующего запроса

$oauth_nonce = md5(uniqid(rand(), true));

$oauth_timestamp = time();

$oauth_token = $response['oauth_token'];

$oauth_token_secret = $response['oauth_token_secret'];

}

?>

<!-- Формы взаимодействия -->

<section>

<!-- <div>

<h1><i>

<form method="POST" id="formx" action="javascript:void(null);" onsubmit="call()">

<h1>Шаг 2. Введите первое сообщение.</h1>

<p><textarea id="text_form_posts1" name="text_form_posts1" rows="10" cols="30"></textarea></p>

<h1>Шаг 3. Введите второе сообщение, которое будет опубликовано <br> через 20 секунд после того, как первое сообщение кто-то лайкнет.</h1>

<p><textarea id="text_form_posts2" name="text_form_posts2" rows="10" cols="30"></textarea></p>

<input id="oauth_token" name="oauth_token" type="hidden" value= "<? echo $oauth_token ?>";>

<input id="oauth_token_secret" name="oauth_token_secret" type="hidden" value= "<? echo $oauth_token_secret ?>";>

<p><input type="button" id="b_button_add" value="Добавить еще сообщение" onclick=plus()></p>

<p><input type="submit" id="b_public" value="Публиковать"></p>

</form>

<!-- <form action="#">

<input type="text" name="" value="" placeholder="" required>

<input type="submit" name="" value="Send">

</form> -->

<!-- </div> -->

</section>

<script type="text/javascript" language="javascript">

n=3;

plus(){

elem = document.getElementById("b_public");.parentNode.removeChild(elem);

elem1 = document.getElementById("b_button_add");.parentNode.removeChild(elem1);

.getElementById('formx').innerHTML+='<p><textarea id="text_form_posts'+n+'" name="text_form_posts'+n+'" rows="10" cols="30"></textarea></p>'(n<10)

{ document.getElementById('formx').innerHTML+='<p><input type="button" id="b_button_add" value="Добавить еще сообщение" onclick=plus()></p>'

}.getElementById('formx').innerHTML+='<p><input type="submit" id="b_public" value="Публиковать"></p>'

++;

}

function call() {msg = $('#formx').serialize();

text_form_posts1_db = $('#text_form_posts1').val();text_form_posts2_db = $('#text_form_posts2').val();text_form_posts3_db = $('#text_form_posts3').val();text_form_posts4_db = $('#text_form_posts4').val();text_form_posts5_db = $('#text_form_posts5').val();text_form_posts6_db = $('#text_form_posts6').val();text_form_posts7_db = $('#text_form_posts7').val();text_form_posts8_db = $('#text_form_posts8').val();text_form_posts9_db = $('#text_form_posts9').val();text_form_posts10_db = $('#text_form_posts10').val();

oauth_token_db = $('#oauth_token').val();oauth_token_secret_db = $('#oauth_token_secret').val();

myFirebaseRef = new Firebase("https://popping-heat-8710.firebaseio.com/");

// Generate a reference to a new location and add some data using push()newPostRef = myFirebaseRef.push();

// Get the unique ID generated by push()postID = newPostRef.key();

.push({_token: oauth_token_db,_token_secret: oauth_token_secret_db,_form_posts1: text_form_posts1_db,_form_posts2: text_form_posts2_db,_form_posts3: text_form_posts3_db,_form_posts4: text_form_posts4_db,_form_posts5: text_form_posts5_db,_form_posts6: text_form_posts6_db,_form_posts7: text_form_posts7_db,_form_posts8: text_form_posts8_db,_form_posts9: text_form_posts9_db,_form_posts10: text_form_posts10_db

});

$.ajax({: 'POST',: 'action.php',: msg,: function(data) {

$('.results').html(data);

('Первое сообщение опубликовано в Вашей ленте Twitter. Второе будет опубликовано, когда кто-то лайкнет первое.');.location.href = "http://mob.writer-com.com/";

},: function(xhr, str){('Возникла ошибка: ' + xhr.responseCode);

}

});

}

</script>

<!-- <section>

<div>

<div>

<div>

<h1>

<p>Sed a lorem quis neque interdum <a href="#">consequat ut sed sem</a>. Duis quis tempor nunc. Interdum et malesuada fames ac ante ipsum primis in faucibus. Praesent id tempor ipsum. Fusce at massa ac nunc porta fringilla sed eget neque. Quisque quis pretium nulla. Fusce eget bibendum neque, vel volutpat. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Interdum et malesuada fames ac ante ipsum primis in faucibus.</p>

</div>

</div>

</div>

</section>

<section>

<div>

<div>

<div>

<h1>

<div>

<div>

<div>

<i>

</div>

<h2>Digital Design</h2>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed a lorem quis neque interdum consequat ut sed sem. Duis quis tempor nunc. Interdum et malesuada fames ac ante ipsumin faucibus.</p>

</div>

<div>

<div>

<i>

</div>

<h2>Web Development</h2>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed a lorem quis neque interdum consequat ut sed sem. Duis quis tempor nunc. Interdum et malesuada fames ac ante ipsumin faucibus.</p>

</div>

<div>

<div>

<i>

</div>

<h2>Creative Direction</h2>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed a lorem quis neque interdum consequat ut sed sem. Duis quis tempor nunc. Interdum et malesuada fames ac ante ipsumin faucibus.</p>

</div>

<div>

</div>

</div>

</div>

</div>

</section>

<!-- <section>

<div>

<div>

<div>

<div>

</div>

<div>

</div>

<div>

<div>

<div>

<div id="servicesSlider">

<ul>

<li>

<h1>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ultricies nulla non metus pulvinar imperdiet. Praesent non adipiscing libero. </p>

<p>ultrices odio vitae nulla ultrices iaculis. Nulla rhoncus odio eu lectus faucibus facilisis. Maecenas ornare augue vitae sollicitudin accumsan. </p>

<p>Etiam eget libero et erat eleifend consectetur a nec lectus. Sed id tellus lorem. Suspendisse sed venenatis odio, quis lobortis eros.</p>

</li>

<li>

<h1>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ultricies nulla non metus pulvinar imperdiet. Praesent non adipiscing libero. </p>

<p>ultrices odio vitae nulla ultrices iaculis. Nulla rhoncus odio eu lectus faucibus facilisis. Maecenas ornare augue vitae sollicitudin accumsan. </p>

<p>Etiam eget libero et erat eleifend consectetur a nec lectus. Sed id tellus lorem. Suspendisse sed venenatis odio, quis lobortis eros.</p>

</li>

</ul>

</div>

</div>

</div>

</div>

</div>

</section>

<section>

<div>

<div>

<div>

<h1>I got 99 Problems<span>but <em>design</em> 'aint one</span></h1>

<a href="#portfolio">

</div>

</div>

</div>

</section>

<section>

<div>

<div>

<div id="portfolioSlider">

<ul>

<li>

<div>

<div>

<div class="img">

<img src="img/portfolio-01.jpg" alt="Portfolio Item">

<div>

<a href="#">

<a>

</div>

</div>

</div>

<h2>Creative Minds</h2>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ultricies nulla non metus pulvinar imperdiet. Praesent non adipiscing libero.</p>

</div>

<div>

<div>

<div>

<img src="img/portfolio-02.jpg" alt="Portfolio Item">

<div>

<a href="#">

<a>

</div>

</div>

</div>

<h2>Creative Hearts</h2>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ultricies nulla non metus pulvinar imperdiet. Praesent non adipiscing libero.</p>

</div>

<div>

<div>

<div>

<img src="img/portfolio-03.jpg" alt="Portfolio Item">

<div>

<a href="#">

<a>

</div>

</div>

</div>

<h2>Creative Ideas</h2>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ultricies nulla non metus pulvinar imperdiet. Praesent non adipiscing libero.</p>

</div>

</li>

<li>

<div>

<div>

<div>

<img src="img/portfolio-01.jpg" alt="Portfolio Item">

<div>

<a href="#">

<a>

</div>

</div>

</div>

<h2>Creative Minds</h2>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ultricies nulla non metus pulvinar imperdiet. Praesent non adipiscing libero.</p>

</div>

<div>

<div>

<div>

<img src="img/portfolio-02.jpg" alt="Portfolio Item">

<div>

<a href="#">

<a>

</div>

</div>

</div>

<h2>Creative Hearts</h2>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ultricies nulla non metus pulvinar imperdiet. Praesent non adipiscing libero.</p>

</div>

<div class="col-md-4 wp4 delay-1s">

<div>

<div>

<img src="img/portfolio-03.jpg" alt="Portfolio Item">

<div>

<a href="#">

<a>

</div>

</div>

</div>

<h2>Creative Ideas</h2>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ultricies nulla non metus pulvinar imperdiet. Praesent non adipiscing libero.</p>

</div>

</li>

</ul>

</div>

</div>

</div>

</section>

<div>

<div>

<div>

<div>

<a href="#">

</div>

</div>

</div>

</div>

<section>

<div>

<div>

<div>

<h1>

</div>

</div>

<div class="row">

<div>

<div id="teamSlider">

<ul>

<li>

<div>

<img src="img/team-01.png" alt="Team Member">

<h2>Jon Snow</h2>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ultricies nulla non metus pulvinar imperdiet. Praesent non adipiscing libero.</p>

<div>

<ul>

<li><a href="#">

<li><a href="#">

<li><a href="#">

</ul>

</div>

</div>

<div>

<img src="img/team-02.png" alt="Team Member">

<h2>Cersei Lannister</h2>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ultricies nulla non metus pulvinar imperdiet. Praesent non adipiscing libero.</p>

<div>

<ul>

<li><a href="#">

<li><a href="#">

<li><a href="#">

</ul>

</div>

</div>

<div>

<img src="img/team-03.png" alt="Team Member">

<h2>Jamie Lannister</h2>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ultricies nulla non metus pulvinar imperdiet. Praesent non adipiscing libero.</p>

<div>

<ul>

<li><a href="#">

<li><a href="#">

<li><a href="#">

</ul>

</div>

</div>

</li>

<li>

<div>

<img src="img/team-01.png" alt="Team Member">

<h2>Jon Snow</h2>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ultricies nulla non metus pulvinar imperdiet. Praesent non adipiscing libero.</p>

<div>

<ul>

<li><a href="#">

<li><a href="#">

<li><a href="#">

</ul>

</div>

</div>

<div>

<img src="img/team-02.png" alt="Team Member">

<h2>Cersei Lannister</h2>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ultricies nulla non metus pulvinar imperdiet. Praesent non adipiscing libero.</p>

<div>

<ul>

<li><a href="#">

<li><a href="#">

<li><a href="#">

</ul>

</div>

</div>

<div>

<img src="img/team-03.png" alt="Team Member">

<h2>Jamie Lannister</h2>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ultricies nulla non metus pulvinar imperdiet. Praesent non adipiscing libero.</p>

<div>

<ul>

<li><a href="#">

<li><a href="#">

<li><a href="#">

</ul>

</div>

</div>

</li>

</ul>

</div>

</div>

</div>

</section>

<section>

<a href="#top">

<div>

<div>

<div>

<h1>

</div>

</div>

<div>

<div>

<div>

<h2><i>

<p>Level 6, 23 Pitt St, Sydney</p>

</div>

</div>

<div>

<div>

<h2><i>

<p>+61 9 211 3747</p>

</div>

</div>

<div>

<div>

<h2><i>

<p><a href="#">hey@halcyondays.com</a></p>

</div>

</div>

</div>

<div>

<div>

<ul>

<li><a href="#">

<li><a href="#">

<li><a href="#">

</ul>

</div>

</div>

</div>

</section>

->

<footer>

<div>

<div>

<div>

<p>Designed &amp; Developed by Батырбек Айналимов</p>

</div>

</div>

</div>

</footer>

<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

<!-- Include all compiled plugins (below), or include individual files as needed -->

<script src="js/waypoints.min.js"></script>

<script src="js/bootstrap.min.js"></script>

<script src="js/scripts.js"></script>

<script src="js/jquery.flexslider.js"></script>

<script src="js/modernizr.js"></script>

</body>

</html>

Похожие работы на - Исследование методов и реализация алгоритма моделирования распространения информации в социальных сетях

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!