Постановка проблемы


Скачать 208.88 Kb.
НазваниеПостановка проблемы
ТипДокументы
filling-form.ru > бланк заявлений > Документы
Государственное бюджетное общеобразовательное учреждение города Москвы "Школа с углубленным изучением английского языка № 1381"

Сайт для прослушивания онлайн-радио «Радиоприёмник»

Творческий проект

Выполнил: ученик 11 «Д» класса

Морозов Юрий Алексеевич

Руководитель: учитель информатики

Рыбин Андрей Владимирович

Москва 2017

Оглавление


Постановка проблемы


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

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

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

Критерии результативности


Результативность выполненной работы будет прямо оцениваться от количества пользователей сайта и времени пребывания на нём. При оценивании будут использоваться как данные собранные при помощи Яндекс.Метрики, так и средства сбора статистики внутри проекта.

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

Концепция проекта


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

  • работать на мобильных устройствах;

  • автоматически определять песню, которая сейчас играет на радио;

  • предоставлять возможность выбора качества звука и сервера-раздатчика;

  • иметь систему избранных радиостанций, которая не требует регистрации;

  • предоставлять возможность узнать подробную информацию о каждой радиостанции;

  • иметь систему сортировки и поиска;

  • автоматически генерировать раздел «Популярные»;

  • иметь большую пополняемую базу радиостанций, которая будет объединять в себе большое количество радиостанций, в том числе и таких крупных холдингов, как «ГПМ Радио», «Европейская медиагруппа», «ВГТРК» и «Мультимедиа-холдинг»;

  • предоставлять возможность запросить добавление радиостанции.

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

  1. Разработать «интернет-радиоприёмник» с использованием современных Web-технологий (HTML5, JavaScript, PHP), которое будет соответствовать указанным выше требованиям и в котором также будут реализованы:

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

  • воспроизведение аудио-потоков радиостанций при помощи аудио-возможностей HTML5;

  • база данных MySQL, содержащая модель представления данных о радиостанциях;

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

  • автоматическая смена сервера при неудачном подключении;

  • переход между страницами при помощи AJAX, если это поддерживается браузером пользователя (необходимо для того, чтобы радио не прерывалось при переходе между страницами внутри сайта);

  1. Заполнить сайт (базу данных сайта) как можно большим количеством радиостанций и информацией о них;

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

Определение доступных ресурсов


Для реализации проекта необходимы:

  • Хостинг (в проекте используется хостинг Azure с бесплатной подпиской Microsoft Imagine)

  • 1 компьютер под управлением Windows с установленным следующим программным обеспечением (все указанные здесь приложения распространяются бесплатно):

    • NetBeans IDE 8.1 (основное средство разработки)

    • FileZilla (для управления файлами, которые находятся на хостинге)

    • Notepad++ (в качестве блокнота для быстрого редактирования документов, которые уже загружены на хостинг)

    • Open Server (для тестирования и отладки сайта на компьютере)

    • PixBuilder Studio (для редактирования и создания растровых изображений)

    • MySQL Workbench 6.3 CE (для работы с базой данных MySQL как локальной, так и уже загруженной на хостинг)

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

Этапы выполнения проекта


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

  1. Подготовка к выполнению проекта Сентябрь – октябрь 2016

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

  1. Разработка дизайна Ноябрь 2016

Был тщательно продуман дизайн проекта (сайта), а также составлен его макет. Изначально макет был нарисован на бумаге.

  1. Разработка серверной части проекта Ноябрь – Декабрь 2016

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

  1. Анализ необходимой информации, создание БД Январь 2017

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

  1. Доработка клиентской части проекта Январь – Февраль 2017

Была завершена клиентская часть сайта: доработан шаблон сайта, создан основной JS-сценарий, добавлены и заполнены недостающие страницы, добавлены в БД ещё радиостанции, создан раздел «Добавить радиостанцию».

  1. Доработка всего проекта в целом Март 2017 – настоящее время

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

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

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

Реализация плана


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

Дальнейшая разработка была продолжена созданием серверной части сайта. Был создан фронт-котроллер, который обрабатывает GET-запросы, если запрашиваемый файл не был найден, и выполняет внутреннюю переадресацию на нужную страницу из папки pages (например, при запросе GET /station/1/ скрипт откроет страницу /pages/station.php, передав ей аргумент id равный 1). Затем были созданы модули для переадресации на нужный аудио-поток и подсчета статистики, для определения что за песня сейчас играет и для подведения итогов недели по прослушиваниям радиостанций и формировки раздела «Популярные».

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

Затем была продолжена разработка клиентской части сайта: доработан шаблон, написан основной JS-сценарий (его фрагмент, касающийся воспроизведения аудио-потока, см. в Приложении 3), реализованы недостающие элементы интерфейса, создана страница-контроллер для радиостанций, а также страницы «Сводка», «О проекте» и «Добавить радиостанцию».

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

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

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

Оценка эффективности и результативности


Реализация проекта протекает в соответствии с назначенным планом: почти все первоначально задуманные функциональные идеи уже удалось реализовать. Ознакомиться с самим проектом можно по адресу в Интернете: http://the-radio.azurewebsites.net/.

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

Говорить о результативности на данный момент рано. Оценка результативности будет проводиться после выполнения задачи №3 из раздела «Концепция проекта» в соответствии с критериями (см. раздел «Определение критериев результативности»).




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


  • Локхарт Д. PHP: Правильный Путь. http://getjump.me/ru-php-the-right-way/ (Перевод издания: Josh Lockhart PHP: The Right Way. http://www.phptherightway.com)

  • Официальное руководство по PHP. http://php.net/manual/ru/

  • Кантор И. Современный учебник Javascript. https://learn.javascript.ru

  • Мержевич В. Справочники и руководства по веб-разработке. https://webref.ru

Также в самом проекте частично использовались статьи о радиостанциях из свободной интернет-энциклопедии Википедия (ru.wikipedia.org), а также информация с официальных сайтов самих радиостанций (см. Приложение 2).

Приложение 1


Подробная информация о недостатках других подобных проектов

online-red.com – отсутствуют определение песни, выбор сервера и битрейта, мобильная версия и система избранных радиостанций.

onlayn-radio.ru – неудобный плеер; отсутствует определение песни; система избранных радиостанций работает только для зарегистрированных пользователей; нет возможности сменить сервер и битрейт; переход между страницами прерывает воспроизведение.

radioprofusion.com – для работы обязательно необходим Adobe Flash Player; работает далеко не на всех мобильных устройствах; отсутствует мобильная версия; неудобный плеер; нет системы избранных; переход между страницами прерывает воспроизведение.

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

top-radio.ru – не работает поиск; плеер работает не совсем корректно на мобильных устройствах; отсутствует выбор качества звука, определение песни и система избранных.

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

pofm.ru – сравнительно мало радиостанций, и отсутствуют очень многие популярные; отсутствует определение песни, сортировка и поиск радиостанций; для работы обязательно необходим Adobe Flash Player; работает далеко не на всех мобильных устройствах.

Приложение 1 (продолжение)


101.ru – включает в себя только радиостанции холдинга «ГПМ Радио», а также персональные радиостанции, созданные по заказу.

Здесь приведены только несколько сайтов из лидирующих позиций по запросу «Слушать радио онлайн» в Яндексе.

Приложение 2


Добавленные в проект радиостанции и их официальные сайты

Название радиостанции

Адрес официального сайта

Europa Plus

www.europaplus.ru

Радио ENERGY

www.energyfm.ru

Радио Романтика

www.radioromantika.ru

Ретро FM

retrofm.ru

Радио 7

radio7.ru

Радио Маяк

radiomayak.ru

Эхо Москвы

echo.msk.ru

Радио Шансон

radioshanson.fm

Радио ULTRA

www.radioultra.ru

Серебряный Дождь

www.silver.ru

Радио Рекорд

www.radiorecord.ru

Наше радио

www.nashe.ru

Вести FM

radiovesti.ru

BEST FM

bestfm.ru

Relax FM

relax-fm.ru

Русское Радио

www.rusradio.ru

Юмор FM

www.veseloeradio.ru

Авторадио

www.avtoradio.ru

euronews RADIO

ru.euronews.com

Приложение 2 (продолжение)


Название радиостанции

Адрес официального сайта

Детское Радио

www.deti.fm

Спорт FM

sportfm.ru

Радио для друзей

radio4d.ru

Дорожное радио

dorognoe.ru

RockFM

www.rockfm.ru

Радио Jazz

www.radiojazzfm.ru

ХИТ FM

www.hitfm.ru

Говорит Москва

govoritmoskva.ru

Радио ЗВЕЗДА

www.radiozvezda.ru

Эльдорадио

eldoradio.ru

Like FM

www.likefm.ru

Love Radio

www.loveradio.ru

Радио MAXIMUM

maximum.ru

DFM

www.dfm.ru

Радио России

www.radiorus.ru

Радио Культура

www.cultradio.ru


Приложение 3 (стр. 1/3)


Алгоритм воспроизведения радиостанций на стороне клиента [JavaScript]

/* e – функция получения элемента из DOM

toggleButtons – функция переключения кнопок воспроизводить/приостановить

whatTrack – функция для получения информации о воспроизвдении

XRequest – метод создания объекта асинхронного подключения (если поддерживается браузером)

wt – id таймера до следующего определения песни

setTitle – изменить заголовок вкладки/окна браузера на нужный

BLANK – строка ‘about:blank’

volume – громкость воспроизведения (по умолчанию 0.6; загружается из Local Storage, если был задан ранее)

config – настройки воспроизведения радиостанций (по умолчания лучший битрейт и 1-ый сервер; загружается из Local Storage, если был изменён для какой-либо радиостанции) */

function r(id) { return STATIONS['id' + id]; } // Глобальная переменная STATIONS объявляется в JSONP радиостанций (stations.js)

function isPlaying(id) { return r_id == id && !radio.paused; }

var radio = new Audio; radio.volume = volume;

if (radio.volume == volume) {

changeVolume();

document.querySelector('.volume_icon').style.display = 'inline-block';

e('regulator').onmousedown = e('regulator').ontouchstart = function (ev) {

changeVolume(ev);

window.onmousemove = window.ontouchmove = changeVolume;

window.onmouseup = window.ontouchend = function () {

window.localStorage.setItem('volume', volume); window.onmousemove =

window.ontouchmove = window.onmouseup = window.ontouchend = null;

};

};

}

if (radio.onplay === undefined) no_events = true;

radio.onplay = function () {

if (!fc) {

toggleButtons(true); setTitle();

e('playing').innerText = 'Подключение...';

e('playing_img').src = '/img/stations/' + r_id + '.png';

if (!fail) whatTrack();

} else fc = false;

e('play').title = 'Отменить подключение'; e('play').className = 'work';

};

radio.onplaying = function () {

Приложение 3 (стр. 2/3)


if (fail) { warn(); fail = false; attempts = 3; whatTrack(); }

e('play').title = 'Приостановить'; e('play').className = 'pause';

if (XRequest && !wt) e('playing').innerText = 'Определение песни...';

};

radio.onpause = function () {

e('play').title = 'Подключиться к радиостанции'; e('play').className = '';

whatTrack(true);

e('playing').innerText = 'Ничего не играет';

e('playing_img').src = '/img/stations/nothing.png';

if (stop) { radio.src = BLANK; stop = false; } toggleButtons(); setTitle();

};

radio.onerror = function () {

if (radio.src != BLANK) {

var i = r(r_id); fail = true; if (attempts) {

if (attempts == 3) whatTrack(true); var s = e('server').selectedIndex;

warn(W_CONNECT.replace('*', i[0]).replace('#', --attempts));

e('server').selectedIndex = i[2] - 1 > s ? s + 1 : 0; setConfig();

} else {

warn(W_CONNECT2.replace('*', i[0])); attempts = 3; radioStop();

e('warning').appendChild(repeat);

}

}

};

function radioSet() {

var id = this.dataset.id;

if (r_id == id) e('play').click(); else {

if (!r_id) { fav.classList.remove('lock'); e('info').className = ''; }

var s = r(id), c = isFavourite(id); r_id = id; rc = config[id] || [0, 0];

e('info').title = 'Информация о радиостанции «' + s[0] + '»';

e('station').innerText = s[0]; fav.title = getTitle(0, id, c ? 1 : 0);

fav.classList[c ? 'add' : 'remove']('active'); fav.dataset.id = id;

e('server').options.length = e('bitrate').options.length = 0;

for (var i = 0; i < s[2]; i++) e('server').options[i] =

new Option('Сервер ' + (i + 1), i, i == rc[0], i == rc[0]);

s[3].forEach(function (item, i) {

e('bitrate').options[i] =

new Option(item + ' кбит/с', i, i == rc[1], i == rc[1]);

});

e('bitrate').disabled = s[3].length == 1;

e('server').disabled = s[2] == 1;

radioStart();

}

};

function radioStart() {

Приложение 3 (стр. 3/3)


radio.src = '/play/' + r_id + '/' + rc[0] + '/' + rc[1] + '/'; radio.play();

if (no_events) {

radio.onplay();

var timeout = new Date(); check = setInterval(function () {

if (radio.played.length) { radio.onplaying(); clearInterval(check); }

else if (radio.error || new Date() - timeout > 20000)

{ radio.onerror(); clearInterval(check); }

}, 200);

}

};

function radioStop() {

stop = true; radio.pause();

if (no_events) { radio.onpause(); clearInterval(check); }

if (fail && attempts < 3) { attempts = 0; radio.onerror(); }

};

function changeVolume(ev) {

if (ev) {

var y = ev.type.search('touch') + 1 ? ev.targetTouches[0].clientY : ev.clientY;

ev.preventDefault();

volume = Math.round((footer.offsetTop - y - 6) * 100 / 15) / 1000;

if (volume > 1) volume = 1; else if (volume < 0) volume = 0;

radio.volume = volume;

}

e('slider').style.bottom = volume * 150 + 4 + 'px';

}

function setConfig() {

rc = config[r_id] = [e('server').selectedIndex, e('bitrate').selectedIndex];

window.localStorage.setItem('config', JSON.stringify(config));

if (!radio.paused) fc = true; radioStart();

}

e('play').onclick = function () {

if (r_id) if (radio.paused) radioStart(); else radioStop();

};

Приложение 4


Иллюстрации внешнего вида проекта

Главная страница проекта



Страница с информацией о радиостанции «Спорт FM»


Похожие:

Постановка проблемы iconНачало эссе (фактически сочинения на заданную тему) постановка проблемы....

Постановка проблемы iconВокруг света под русским флагом
...

Постановка проблемы icon«Группы крови. Переливание крови»
Ууд: самостоятельное выделение и формулирование познавательной цели; постановка и формулирование проблемы, самостоятельное создание...

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

Постановка проблемы iconАктуальные проблемы
Актуальные проблемы гражданского процесса: Учебно-методическое пособие. М. А. Гранат, Тольятти: тгу, 2012. с. 26

Постановка проблемы iconРабочая программа Актуальные проблемы «холодной войны»
Учебная дисциплины «Актуальные проблемы «холоднойвойны» предусмотрена компетентно- ориентированным учебным планом по направлению...

Постановка проблемы iconПроблемы, опыт, перспективы
П18 Профессиональная подготовка будущих учителей: проблемы, опыт, перспективы: Сб науч ст. Саратов: иц «Наука», 2012. 224 с

Постановка проблемы iconПроблемы и перспективы
Демографическое развитие России: проблемы и перспективы: Материалы межрегиональной школы-семинара молодых ученых (Уфа, 27 июня 2008...

Постановка проблемы iconПроблемы филологического образования сборник научных трудов
Проблемы филологического образования: Сб науч тр. / Отв ред проф. Л. И. Черемисинова; ред. Тарасова И. А., О. Я. Гусакова. — Вып....

Постановка проблемы iconПостановление от 29. 12. 2012г. №2050-п г. Усть-Кут Об утверждении...
«Постановка малоимущих граждан, проживающих на межселенных территориях Усть-Кутского муниципального образования на учет в качестве...

Вы можете разместить ссылку на наш сайт:


Все бланки и формы на filling-form.ru




При копировании материала укажите ссылку © 2019
контакты
filling-form.ru

Поиск