Архив рубрики: MySQL

Мой диплом о разработке и вводе в эксплуатацию веб-приложения

Буквально месяц назад в славном Московском Техническом Университете Связи и Информатики я защищал диплом «Разработка и ввод в эксплуатацию веб-приложения „Сурдосервер“».

Веб-приложение я начинал разрабатывать еще с августа 2009 года в рамках своей работы в лаборатории вместе со своими коллегами, за мной была инженерная часть и проектирование взаимодействия. Самые интересные моменты в плане разработки я апериодически выкладывал в этом блоге. Настала пора опубликовать и сам диплом. Самим приложением можно воспользоваться на сайте http://surdoserver.ru/.

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

О дипломе

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

  1. Исследование вопроса;
  2. Определение целей, достигать которые поможет веб-приложение;
  3. Экономический расчет;
  4. Проектирование пользовательского взаимодействия (проектирование интерфейса);
  5. Проектирование БД;
  6. Проектирование программной архитектуры;
  7. Разработка;
  8. Тестирование (в том числе нагрузочное тестирование);
  9. Ввод в эксплуатацию.

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

Что использовалось при разработке и какие результаты:

  • Создано полноценное приложение, которое содержит в себе свыше 400 страниц программного кода;
  • Использовались технологий: PHP, Zend Framework, JavaScript, HTML, Adobe Flex, ActionScript 3;
  • Приобретен и настроен «с нуля» удаленный сервер на основе «облачных» вычислений для обеспечения бесперебойной работы приложения в сети Интернет;
  • Приложение размещено на сервере, получены первые положительные отзывы пользователей на форуме глухих, в социальной группе глухих в сети «вКонтакте», а также посредством встроенной системы обратной связи;
  • В период с 1 февраля по 1 июня 2010 года сайт посетило более 4 100 уникальных пользователей, которые совершили более 88 000 переходов по сайту.

Содержание дипломной работы

  • ВВЕДЕНИЕ
  • Глава 1 Проектирование приложения
    • 1.1 Исследование предметной области
      • 1.1.1  Язык жестов
      • 1.1.2  Современные методы обучения языку жестов
      • 1.1.3  Актуальность проблемы интерактивного веб-приложения для изучения русского языка жестов
    • 1.2   Назначение и основные возможности проектируемого приложения
    • 1.3   Общая архитектура приложения
    • 1.4  Проектирование серверной части
    • 1.5    Проектирование базы данных
      • 1.5.1  Системный анализ предметной области
      • 1.5.2  Инфологическое проектирование
      • 1.5.3  Даталогическое проектирование
      • 1.5.4  Физическое проектирование
    • 1.6  Проектирование клиентской части
  • Глава 2 Технологическая платформа приложения
    • 2.1  Требования к серверной части приложения
      • 2.1.1  Операционная система
        • 2.1.1.1  Обзор современных сетевых ОС
        • 2.1.1.2  Выбор ОС в соответствии с предъявленными требованиями
      • 2.1.2  Система управления базами данных
        • 2.1.2.1 Обзор современных СУБД
        • 2.1.2.2 Выбор СУБД в соответствии с предъявленными   требованиями
      • 2.1.3  Языки программирования
      • 2.1.4  Веб-сервер
        • 2.1.4.1  Обзор современных веб-серверов
        • 2.1.4.2 Выбор веб-сервера в соответствии с предъявленными  требованиями
    • 2.2  Требования к клиентской части приложения
  • Глава 3 Техническая платформа
    • 3.1 Серверное аппаратное оснащение
    • 3.2 Клиентское аппаратное оснащение
  • Глава 4 Описание разработанных компонентов
    • 4.1  Архитектура приложения
      • 4.1.1  Теория
      • 4.1.2  Используемая архитектура
      • 4.1.3  Файловая структура
    • 4.2  Разработанные модули
      • 4.2.1  Сурдо
      • 4.2.2  Дактильная азбука
      • 4.2.3  Страницы
      • 4.2.4  Обратная связь
      • 4.2.5  Поиск
      • 4.2.6  Административная панель
  • Глава 5 Введение приложения в эксплуатацию
    • 5.1  Размещение в сети Интернет
      • 5.1.1 Обзор и выбор способов размещения приложения в сети Интернет
      • 5.1.2  Настройка серверов, подключение доменов
      • 5.2.2  Размещение приложения
      • 5.1.4  Настройка резервного копирования
    • 5.2  Нагрузочное тестирование
      • 5.2.1  Методология тестирования
      • 5.2.2  Результаты тестирования
        • 5.2.1.1  Loadimpact.com
        • 5.2.2.2  Apache JMeter
  • Глава 6 Разработка вопросов по экологии и безопасности жизнедеятельности
    • 6.1  Характеристика условий труда программиста
    • 6.2 Анализ опасных вредных факторов и возможных чрезвычайных ситуаций, возникающих во время работы программиста
      • 6.2.1  Уровень шума на рабочем месте
      • 6.2.2  Электромагнитное и ионизирующее излучения
      • 6.2.3  Статические нагрузки и монотонность труда
      • 6.2.4  Недостаточная освещенность
    • 6.3  Разработка мер безопасности
      • 6.3.1  Снижение уровня шума
        • 6.3.1.1  Теория
        • 6.3.1.1  Расчетная часть
      • 6.3.2  Приобретение оборудования, отвечающего стандартам  безопасности
      • 6.3.3  Устранение статических нагрузок и монотонности труда
      • 6.3.4  Расчет освещенности рабочего места программиста
    • 6.4  Выводы
  • Глава 7 Технико-экономического обоснование проекта
    • 7.1  Постановка задачи
    • 7.2  Стоимость разработки приложения
      • 7.2.1  Определение реальных сроков и количества участников разработки и внедрения приложения
      • 7.2.2  Расчет заработной платы персонала
      • 7.2.3  Расчет затрат на приобретение необходимых аппаратных и программных средств для разработки приложения
      • 7.2.4  Расчет затрат на размещение сайта в сети Интернет
      • 7.2.5 Расчет всех затрат
    • 7.3  Оценка эффективности от внедрения приложения
      • 7.3.1  Косвенная экономия средств
      • 7.3.2  Доход от работы сервиса
  • ЗАКЛЮЧЕНИЕ
  • СПИСОК ЛИТЕРАТУРЫ
  • Приложение А Программные листинги
  • Приложение Б Графические интерфейсы

Плакаты:

Сам диплом в pdf-формате.

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

Поиск по русским буквам в mysql (проблема "е" и "ё" в utf-8)

Была задача найти все слова, начинающиеся на определенную букву. Казалось бы, что может быть проще?)

Стоит отметить, что сайт на utf-8, таблицы в utf8_general_ci. Начал я с простого: для передачи ссылка (с GET запросом для сортировки по определенной букве, типа «http://sky2high.net/sort.php/?letter=Ю«) проходила через php-ое urlencode(), а на приеме через urldecode(), на выходе которого получаем необходимую букву.

Сначала скрипт выборки из БД был типа такого:

SELECT name, lat_name, video
FROM ru_words AS w
WHERE w.name LIKE "{$letter}%"
ORDER BY w.name

И всё бы хорошо, но БД выдавала одинаковые результаты для букв «е» и «ё». Тут я и впал в ступор, стал гуглить. Оказалось, что это ошибка mysql-server-5.0.xx, рекомендовали апгрейдить на 5.1 (а на боевом сервере стоит mysql 5.0.xxx), что, конечно, есть большой геморр, особенно в виду отсутствия deb-пакетов для ubuntu 8.04 LTS, что значит надо собирать из исходников, заново настраивать, импортировать БД и т.д..

Далее, вспомнил про прекрасный оператор REGEXP в SQL запросах (и правильно сделал! — прим. КО), однако запрос типа

SELECT name, lat_name, video
FROM ru_words AS w
WHERE w.name REGEXP "^{$letter}"
ORDER BY w.name"

Не дал результатов, то есть вообще никаких, слова перестали находится. Не знаю зачем (ведь перед глазами постоянно мелькало из документации «REGEXP ведет НЕ РЕГИСТРОЗАВИСИМЫЙ поиск»), но всё-таки попробовал передать в запросе поиск не по заглавной букве, но по прописной.

$letter = mb_strtolower((urldecode($letter), 'UTF-8')

И мини-чудо озарило мой экран: поиск стал просто идеально идти по всем буквам.

Выводы: даже и не знаю какие. Доверять, конечно, надо документации, но и проверять.