Разработка архитектуры приложения "Филологический словарь"

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 26.02.2015
Размер файла 689,9 K

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

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

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

Курсовая работа

Разработка архитектуры приложения "Филологический словарь"

Содержание

  • Введение
  • Инструментальные средства курсового проекта
  • Денвер - локальный сервер для разработки веб приложения
  • Архитектура Денвера
  • Необходимость локального сервера Денвер
  • MongoDB. База данных с NoSQL архитектурой
  • PHP. Серверный язык программирования
  • JavaScript, как инструмент интерактивности
  • Ajax
  • jQuery
  • Структурные составляющие программы
  • Специфика словарной статьи
  • Взаимодействие с базой данных
  • Заключение
  • Библиографический список

Введение

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

Всемирная паутина (англ. World Wide Web) - распределённая система, предоставляющая доступ к связанным между собой документам, расположенным на различных компьютерах, подключенных к Интернету. Для обозначения Всемирной паутины также используют слово веб (англ. web "паутина") и аббревиатуру WWW.

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

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

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

Задачами курсовой работы являются:

научиться использовать не реляционную базу данных;

изучение JavaScript для создания интерактивности на странице;

изучение Php, настройка и использование;

настройка и взаимодействие веб приложения с базой данных MongoDB.

Инструментальные средства курсового проекта

Денвер - локальный сервер для разработки веб приложения

Джентльменский набор Web-разработчика ("Д. н. w. р", читается "Денвер") - проект Дмитрия Котерова, локальный сервер (Apache, PHP, MySQL, Perl и т.д.) и программная оболочка, используемые Web-разработчиками для разработки сайтов на "домашней" (локальной) Windows-машине без необходимости выхода в Интернет. Главная особенность Денвера - удобство при удаленной работе сразу над несколькими независимыми проектами и возможность размещения на Flash-накопителе.

Базовый (основной) пакет Денвера включает в себя:

· Инсталлятор (поддерживается также инсталляция на flash-накопитель).

· Apache, SSL, SSI, mod_rewrite, mod_php.

· PHP5 с поддержкой GD, MySQL, sqLite.

· MySQL5 с поддержкой транзакций.

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

Система управления запуском и завершением всех компонентов Денвера.

phpMyAdmin - система управления MySQL через Web-интерфейс.

Эмулятор sendmail и SMTP-сервера (отладочная "заглушка" на localhost: 25, складывающая приходящие письма в /tmp в формате. eml); поддерживается работа совместно с PHP, Perl, Parser и т.д.

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

· полная версия ActivePerl 5.8;

· PHP5 с полным набором модулей;

· язык программирования Python;

· СУБД PostgreSQL или InterBase/FireBird версий 1 и 2;

· старый-добрый PHP версии 3 или 4;

· или даже Parser студии Лебедева.

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

Архитектура Денвера

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

Денвер устанавливается в один-единственный каталог и вне его ничего не изменяет. Он не пишет файлы в Windows-директорию и не "гадит" в Реестре. При желании вы можете даже поставить себе сразу два Денвера, и они не будут конфликтовать.

Никакие "сервисы" NT/2000 не "прописываются". Если вы запустили Денвер, то он работает. Если завершили - то перестает работать, не оставляя после себя следов.

Системе не нужен деинсталлятор - достаточно просто удалить каталог.

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

Все конфигурирование и настройка под конкретную машину происходит автоматически.

Эти же правила распространяются и на пакеты расширений.

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

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

За счет применения виртуального диска Денвер "изнутри" похож на маленький Unix: у него есть своя директория /home, /usr, /tmp. Различные компоненты и серверы расположены так, как это принято в Unix. Например, в /home располагаются виртуальные хосты, а в /usr - программные компоненты.

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

Вопреки распространенному мнению, Денвер не является чем-то статическим и неизменным. Никто не мешает вам устанавливать поверх него дополнительные программы и компоненты (например, сервер СУБД PostgreSQL). Они просто будут для него "как родные". Вы можете также задавать логику запуска и завершения дополнительных сервисов по аналогии с тем, как это сделано в базовом пакете. Так что, если вам нужна какая-то система, которой нет в пакетах расширений, смело ставьте и конфигурируйте ее вручную.

Необходимость локального сервера Денвер

В последнее десятилетие во всем мире наблюдается настоящий бум среди Web-разработчиков (по преимуществу это программисты). Они устанавливают у себя на Windows-машине сервер Apache с различными дополнениями к нему: PHP, Perl, MySQL и т.д. - преимущественно в целях более удобной отладки сайтов.

Многие (преимущественно дизайнеры) могут спросить: зачем вообще нужен локальный Web-сервер, когда страницы можно открывать и так - прямо с диска? Если это обычные (статические) HTML-страницы, то да, сервер не нужен. Однако даже для такой мелочи, как SSI (Server-side Includes - директивы в страницах, позволяющие вставлять на нужное место содержимое других файлов), уже необходим сервер. Не говоря уж о скриптах - они без сервера просто не запустятся.

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

Мне относительно регулярно приходят письма со следующим - обычно завуалированным - вопросом: чем отличается "просмотр страниц, открывая файл в браузере" от "просмотра с использованием сервера". В первом случае вы выбираете в меню что-то вроде Файл - Открыть - Обзор и выбираете нужный файл на диске. Браузер показывает его без всякой обработки, и путь в его адресной строке выглядит примерно вот так (Рис. 1.3.1):

Рис. 1.3.1 Отображение адреса

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

Рис. 1.3.2 URL адрес

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

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

MongoDB. База данных с NoSQL архитектурой

MongoDB - документо-ориентированная система управления базами данных (СУБД) с открытым исходным кодом, не требующая описания схемы таблиц.

При разработке авторы исходили из необходимости специализации баз данных, благодаря чему им удалось отойти от принципа "один размер подо всё". За счёт минимизации семантики для работы с транзакциями появляется возможность решения целого ряда проблем, связанных с недостатком производительности, причём горизонтальное масштабирование становится проще. Используемая модель документов хранения данных (JSON/BSON) проще кодируется, проще управляется (в том числе за счёт применения т. н. "бессхемного стиля" (англ. schemaless style)), а внутренняя группировка релевантных данных обеспечивает дополнительный выигрыш в быстродействии. Нереляционный подход весьма удобен для создания баз данных, у которых горизонтальное масштабирование подразумевает разворачивание на множестве машин. Возможность обеспечивать наилучшую производительность должна существовать параллельно с поддержкой более обширной функциональности, чем это позволяет использование пар "ключ-значение" (в чистом виде). Технология баз данных должна работать везде, начиная с серверов пользователя и виртуальных машин и заканчивая облачными технологиями.

MongoDB, по мнению разработчиков, должна заполнить разрыв между простыми хранилищами данных типа "ключ-значение" (быстрыми и легко масштабируемыми) и большими РСУБД (со структурными схемами и мощными запросами).

Основные возможности данной СУБД:

· Документо-ориентированное хранилище (простая и мощная JSON-подобная схема данных)

· Достаточно гибкий язык для формирования запросов

· Динамические запросы

· Полная поддержка индексов

· Профилирование запросов

· Быстрые обновления "на месте"

· Эффективное хранение двоичных данных больших объёмов, напр., фото и видео

· Журналирование операций, модифицирующих данные в БД

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

· Может работать в соответствии с парадигмой MapReduce

· Полнотекстовый поиск, в том числе на русском языке, с поддержкой морфологии

СУБД управляет наборами JSON-подобных документов, хранимых в двоичном виде в формате BSON. Хранение и поиск файлов в MongoDB происходит благодаря вызовам протокола GridFS. Подобно другим документо-ориентированным СУБД (CouchDB и др.), MongoDB не является реляционной СУБД. Среди других отличий от традиционных реляционных СУБД:

· Отсутствует оператор "join". Обычно данные могут быть организованы более денормализованным способом, но на разработчиков ложится дополнительная нагрузка по обеспечению непротиворечивости данных.

· Нет такого понятия, как "транзакция". Атомарность гарантируется только на уровне целого документа, т.е. частичного обновления документа произойти не может.

· Отсутствует понятие "изоляции". Любые данные, которые считываются одним клиентом, могут параллельно изменяться другим клиентом.

PHP. Серверный язык программирования

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

Язык и его интерпретатор разрабатываются группой энтузиастов в рамках проекта соткрытым кодом. Проект распространяется под собственной лицензией, несовместимой с GNU GPL.

JavaScript, как инструмент интерактивности

JavaScript - прототипно-ориентированный сценарный язык программирования. Является диалектом языка ECMAScript.

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

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

На JavaScript оказали влияние многие языки, при разработке была цель сделать язык похожим на Java, но при этом лёгким для использования непрограммистами. Языком JavaScript не владеет какая-либо компания или организация, что отличает его от ряда языков программирования, используемых в веб-разработке.

Ajax

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

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

_ с использованием XMLHttpRequest (основной объект);

_ через динамическое создание дочерних фреймов;

_ через динамическое создание тега <script>http://ru. wikipedia.org/wiki/AJAX - cite_note-JsHttpRequest-2.

_ через динамическое создание тега <img>, как это реализовано в google analytics.

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

Действия с интерфейсом преобразуются в операции с элементами DOM (англ. Document Object Model), с помощью которых обрабатываются данные, доступные пользователю, в результате чего представление их изменяется. Здесь же производится обработка перемещений и щелчков мышью, а также нажатий клавиш. Каскадные таблицы стилей, или CSS (англ. Cascading Style Sheets), обеспечивают согласованный внешний вид элементов приложения и упрощают обращение к DOM-объектам. Объект XMLHttpRequest (или подобные механизмы) используется для асинхронного взаимодействия с сервером, обработки запросов пользователя и загрузки в процессе работы необходимых данных.

Три из этих четырех технологий - CSS, DOM и JavaScript - составляют DHTML (англ. Dynamic HTML). По мнению некоторых специалистов средства DHTML, появившиеся в 1997 году, подавали большие надежды, но так и не оправдали их.

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

jQuery

jQuery - библиотека JavaScript, фокусирующаяся на взаимодействии JavaScript и HTML. Библиотека jQuery помогает легко получать доступ к любому элементу DOM, обращаться к атрибутам и содержимому элементов DOM, манипулировать ими. Также библиотека jQuery предоставляет удобный API для работы с AJAX.

электронный филологический словарь база

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

Специфика словарной статьи

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

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

Рис. 2.1.1 Структура словарной статьи

Как видно на рисунке, структура статьи состоит из заглавного слова (MyArticle), которое может содержать окончания (ending, типа String), лингвокультурологический комментарии (lingv_com, объект класса Word), картинка (picture, типа String), а также объект Word, описанный ниже.

Далее, в соответствии с рис.2.1.1 в структуре следует объект Semantics (возможные значения слова MyArticle), который состоит из следующих атрибутов:

· Sem - текст семантики (String);

· Word_key - id семантики (String);

· Latin - интерпретация на латинском языке (String);

· Synonim, Variant, Derivat - возможные производные слова от семантики, соответственно: синоним, вариант, дериват. (тип: объект классов Synonim, Variant, Derivat, которые описаны чуть ниже).

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

· МуArticle - свойство article;

· Synonim - свойство text;

· Variant - свойство text;

· Derivat - свойство text;

· Variant_use - свойство data (не всегда).

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

· text - само слово (объект Word) - обязательное поле;

· meaning - уточняющее значение (объект Word);

· part_of_speach - часть речи (String);

· gender_ex - род (String);

· amount_word - число (String);

· padej - падеж (String);

· class_of_word - разряд (String);

· degree_of_concruence - степень сравнения (String);

· type - вид (String);

· mood - наклонение глагола (String);

· gram_pomet - грамматические пометы (Array);

· stil_pomet - стилистические пометы (Array);

· word_key - id слова (String);

· v_u - вариант использования (объект Varaint_Use).

Каждое слово (Synonim, Variant, Derivat), может содержать специфический объект - Variant_Use. Данный объект, в структуре статьи, может содержать:

· иллюстраций;

· переносные значения;

· прецедентных высказываний;

· сочетаемость;

· устойчивые или фразеологические сочетания.

Иллюстрации и прецедентные высказывания, помимо основных полей (а это data - объект Word, и type, типа String), могут содержать объект типа Informer_Pasport. Этот объект - паспорт информанта, содержит краткую информацию о человеке, предоставившем информацию об иллюстрации или прецедентом высказывании. Данный объект состоит из полей:

· fio_ - фамилия имя отчество (String);

· gender_ - пол (String);

· age_ - возраст (String);

· year_ - год записи (String);

· educ_ - образование (String);

· dialect - диалект (String);

· address - адрес, данный объект описан ниже (объект Adress).

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

· place - местность (String);

· region - область (String);

· district - район (String);

· settlement - населенный пункт (String).

Структура программы

При запуске программы (вход на сайт) пользователь видит главное окно программы рис. 2.2.1:

Рис 2.2.1 Главное окно программы.

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

Добавление статьи осуществляется в следующей форме ввода рис. 2.2.2:

Рис. 2.2.2 Форма ввода статьи

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

Справа отображена статья в виде дерева.

Добавление семантик, вариантов и дериватов происходит на следующей форме рис. 2.2.3:

Рис. 2.2.3 Форма ввода синонима, варианта, деривата.

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

Рис. 2.2.4 Форма ввода иллюстраций.

Взаимодействие с базой данных

Главное окно записи статьи находится в файле article. php. После того как форма ввода заполнена, пользователь нажимает на кнопку "записать статью" в результате, скрипт перенаправляет программу на тот же файл article. php. Строки представленные ниже (рис. 2.3.1) демонстрируют соединение и запись статья в базу данных.

Рис 2.3.1 Код записи коллекции в базу данных

Выборка и заполнение полей списка представлена на рис. 2.3.2.

Рис 2.3.2 Код выборки и заполнения данных в главное окно программы

Заключение

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

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

Php использовался в нескольких случаях:

· Подключение к базе данных;

· Чтение данных из базы;

· Удаление статьи;

· Добавление статьи;

· Переход между окнами программы.

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

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

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

Библиографический список

1. Дэвид Флэнаган - JavaScript. Подробное руководство. - Пер. с англ. - СПб: СимволлПлюс, 2008. - 992 с., ил.

2. Ларри Ульман - Основы программирования на PHP. М.: ДМК Пресс, 2011 г. 288 с.

Размещено на Allbest.ru


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

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

    курсовая работа [12,6 M], добавлен 17.06.2014

  • Разработка приложения для работы с базой данных с использованием объектно-ориентированного и визуального программирования. Обзор языка элементов языка программирования Delphi. Проектирование базы данных автозаправки. Клиентская система приложения.

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

  • Создание структуры базы данных на примере "Школьного журнала" с использованием метода и принципа нормализации. Понятия базы данных, архитектуры БД и проектирования. Описание предметной области; приложения для работы с базой данных TTable и TQuery.

    дипломная работа [996,4 K], добавлен 01.04.2012

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

    курсовая работа [613,5 K], добавлен 29.12.2015

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

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

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

    презентация [278,1 K], добавлен 16.10.2013

  • Разработка программного приложения WindowsForms для работы с базой данных на языке высокого уровня C# в автономном режиме с использованием ADO.NET. Проектирование реляционной модели базы данных, интерфейса приложения, основных функций и возможностей.

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

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

    учебное пособие [3,6 M], добавлен 19.12.2009

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

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

  • Факторы, влияющие на пропускную способность в беспроводных сетях. Использование скриптового языка программирования PHP для разработки базы данных интернет-магазина, его основные преимущества. Современные методы и средства тестирования web-приложений.

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

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