Report Pdp

  • April 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Report Pdp as PDF for free.

More details

  • Words: 4,401
  • Pages: 36
МОСКОВСКИЙ ЭЛЕКТРОННО-ТЕХНОЛОГИЧЕСКИЙ ТЕХНИКУМ ГОСУДАРСТВЕННОЙ АКАДЕМИИ ИННОВАЦИЙ

Отчет о прохождении практики по профилю специальности (преддипломная)

Место практики Индивидуальный предприниматель Смирнов Алексей Евгеньевич Срок прохождения практики с 13.04.2009 по 04.05.2009

Студент Худяков Сергей Сергеевич Специальность «Программное обеспечение вычислительной техники и автоматизированных систем» (230105)

Курс 4 группа П-401 Руководитель практики Шипиев Роман Николаевич

Москва 2008/2009 уч.год.

МОСКОВСКИЙ ЭЛЕКТРОННО-ТЕХНОЛОГИЧЕСКИЙ ТЕХНИКУМ ГОСУДАРСТВЕННОЙ АКАДЕМИИ ИННОВАЦИЙ

«

Утверждаю Зам. Директора по УПР В.П. Сандул » 2009г.

ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ на период преддипломной практики студента гр. П-401 специальности 230105 Худякова Сергея Сергеевича

ТЕМА ЗАДАНИЯ Сформулировать технико-математические требования к дипломному проекту на тему «Разработка системы проведения видео-лекций» Вопросы, подлежащие изучению: 1. Протокол передачи данных HTTP 2. Архитектура сетевых протоколов REST 3. Архитектура приложений MVC 4. Среда разработки Ruby on Rails 5. Язык разметки гипертекста HTML

Указания по выполнению задания. Отчет о выполнении индивидуального задания оформляется записью в дневнике практики. Чертежи и схемы даются в приложении к отчету.

Руководители практики: от предприятия Смирнов Алексей Евгеньевич (подпись) от техникума Шипиев Роман Николаевич (подпись) Индивидуальное задание рассмотрено на цикловой комиссии специальности «Программное обеспечение ВТ и АС» (230105) протокол № от Председатель цикловой комиссии Одиноченко О.В.

2008/2009 уч.год. (подпись)

Дневник Дата

Наименование выполняемой работы

13.04.2009 18.04.2009

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

20.04.2009 25.04.2009

Написание общей части пояснительной записки диплома

27.04.2009

Получение отзыва о практике

28.04.2009 29.04.2009

Оформление отчета и дневника по практике

30.04.2009 02.05.2009

Сдача отчета

Подпись руководителя

ОГЛАВЛЕНИЕ Введение.......................................................................................................................5 1. Постановка задачи...................................................................................................6 1.1. Назначение задачи............................................................................................6 1.2. Технико-математическое описание задачи.....................................................6 1.3. Требования к программе................................................................................12 1.4. Требования к составу и параметрам технических средств.........................13 2. Описание языка программирования....................................................................15 2.1. Выбор языка программирования..................................................................15 2.2. Элементы языка программирования.............................................................16 Заключение.................................................................................................................34

5

ВВЕДЕНИЕ Данный отчет содержит сведения об изученном за время прохождения преддипломной практики материале. Тема дипломного проекта: Разработка системы проведения видео-лекций. Полное название программы: Система проведения видео-лекций. Краткое название программы: Система.

6

1. ПОСТАНОВКА ЗАДАЧИ 1.1. Назначение задачи Целью дипломного проекта является разработка системы проведения видео-лекций. Главной задачей разрабатываемой системы является задача проведения лекций в видео-формате. 1.2. Технико-математическое описание задачи Программа должна быть реализована на базе следующих технологий: —протокол передачи данных HTTP[1]; —архитектура сетевых протоколов REST[2]; —архитектура приложений MVC[3]; —среда разработки Ruby on Rails[4]; —язык разметки гипертекста HTML; 1.2.1. Протокол передачи данных HTTP HTTP (сокр. англ. Hypertext Transfer Protocol, «протокол передачи гипертекста») — это протокол высокого уровня (уровня приложений), обеспечивающий необходимую скорость передачи данных, требующуюся для распределённых информационных систем гипермедиа. HTTP используется проектом World Wide Web с 1990 года. HTTP/1.0 предоставляет открытое множество методов, которые могут быть использованы для указания целей запроса. Они построены на дисциплине ссылок, где для указания ресурса, к которому должен быть применен данный метод, используется Универсальный Идентификатор Ресурсов (Universal Resource Identifier — URI), в виде местонахождения (URL) или имени (URN).

7 Формат сообщений сходен с форматом Internet Mail или Multipurpose Internet Mail Extensions (MIME — Многоцелевое Расширение Почты Internet) HTTP основывается на парадигме запросов/ответов. Запрашивающая программа

(обычно

она

называется

клиент)

устанавливает

связь

с

обслуживающей программой-получателем (обычно называется сервер) и посылает запрос серверу в следующей форме: метод запроса, URI, версия протокола, за которой следует MIME-подобное сообщение, содержащее управляющую информацию запроса, информацию о клиенте и, может быть, тело сообщения. Сервер отвечает сообщением, содержащим строку статуса (включая версию протокола и код статуса — успех или ошибка), за которой следует MIME-подобное сообщение, включающее в себя информацию о сервере, метаинформацию о содержании ответа, и, вероятно, само тело ответа. Следует отметить, что одна программа может быть одновременно и клиентом и сервером. Использование этих терминов в данном тексте относится только к роли, выполняемой программой в течение данного конкретного сеанса связи, а не к общим функциям программы. 1.2.2. Архитектура сетевых протоколов REST REST (сокр. англ. Representational State Transfer, «передача состояния представления») подход к архитектуре сетевых протоколов, обеспечивающих доступ к информационным ресурсам. Идеи, положенные в основу REST, были сформулированы в главе 5 докторской диссертации («Architectural Styles and the Design of Network-based Software Architectures») по философии Роя Филдинга (Roy Fielding) в 2000 году. В подходе, использованном в REST, серверы поддерживают связь с клиентами, используя подключения без указания их статуса: вся информация о состоянии взаимодействия между двумя системами закодирована внутри запросов и ответов, которыми они обмениваются. Долгосрочное состояние хранится на сервере в виде набора идентифицируемых ресурсов.[5]

8 Согласно REST, сетевой ресурс должен поддерживать всего четыре операции: GET, PUT, POST и DELETE (с теми же значениями, как в протоколе HTTP). Данные должны передаваться в виде небольшого количества стандартных форматов (например HTML, XML, JSON). Сетевой протокол (как и HTTP) должен поддерживать кэширование, не должен зависеть от сетевого слоя, не должен сохранять информацию о состоянии между парами «запросответ». Утверждается, что такой подход обеспечивает масштабируемость системы и позволяет ей эволюционировать с новыми требованиями. 1.2.3. Архитектура приложений MVC MVC

(сокр.

англ.

Model-View-Controller,

«Модель-Представление-

Контроллер») — архитектура для разработки интерактивных приложений, разработанная Трюгве Реенскаугом (Trygve Reenskaug)[5], в которой модель данных приложения, пользовательский интерфейс и управляющая логика разделены на три компонента, так, что модификация одного из компонентов оказывает минимальное воздействие на другие компоненты. Шаблон (pattern) MVC позволяет разделить данные, представление и обработку действий пользователя на три отдельных компонента: —Модель (Model) отвечает за поддержку состояния приложения. Иногда это состояние является кратковременным, продолжающимся только на время нескольких взаимодействий с пользователем. А иногда состояние является постоянным и сохраняется вне приложения, чаще всего в базе данных. Модель — это больше, чем просто данные; в ней прописаны все бизнес-правила, применяемые к этим данным.[5] —Представление

(View)

отвечает

за

формирование

пользовательского

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

9 —Контроллеры (Controller) организуют работу приложения. Они воспринимают события внешнего мира (обычно ввод данных пользователем), взаимодействуют с моделью и отобажают соответствующее представление для пользователя. Важно отметить, что как представление, так и поведение зависят от модели. Однако модель не зависит ни от представления, ни от поведения. Это одно из ключевых достоинств подобного разделения. Оно позволяет строить модель независимо от визуального представления, а также создавать несколько различных представлений для одной модели. 1.2.4. Среда разработки Ruby on Rails Ruby on Rails – объектно ориентированный программный каркас для создания веб-приложений, написанных на языке программирования Ruby. Ruby on Rails использует архитектурный шаблон Model-View-Controller для вебприложений, а также обеспечивает их интеграцию с веб-сервером и сервером базы данных. Ruby on Rails относится к открытому программному обеспечению и распространяется под лицензией MIT. 1.2.4.1. Принципы

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

on

Rails

предоставляет

механизмы

повторного

использования,

позволяющие минимизировать дублирование кода в приложениях (принцип Don’t Repeat Yourself). —По умолчанию используются соглашения по конфигурации, типичные для

10 большинства приложений (принцип Convention over configuration). Явная спецификация конфигурации требуется только в нестандартных случаях. 1.2.4.2. Архитектура

Основными компонентами приложений Ruby on Rails являются модель (model), представление (view) и контроллер (controller). Модель предоставляет остальным компонентам приложения объектноориентированное представление данных (таких как каталог продуктов или список заказов). Объекты модели осуществляют загрузку и сохранение данных в реляционной базе данных, а также реализуют бизнес-логику. Благодаря возможностям динамической типизации в языке Ruby разработчику достаточно наследовать свой класс модели от базового класса ActiveRecord::Base. Ruby on Rails автоматически связывает классы модели с таблицами в базе данных и создает атрибуты объектов для соответствующих полей таблицы. Представление создает пользовательский интерфейс для отображения полученных от контроллера данных. Представление также передает запросы пользователя

на

манипуляцию

данными

в

контроллер

(как

правило,

представление не изменяет непосредственно модель). В Ruby on Rails представление описывается при помощи шаблонов RHTML. Они представляют собой файлы HTML с дополнительными включениями фрагментов кода Ruby (Embedded Ruby или ERb). Вывод, сгенерированный встроенным кодом Ruby, включается в текст шаблона, после чего

получившаяся

страница

HTML

возвращается

пользователю.

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

11 подготавливает их для отображения, а также сохраняет полученные от отображения данные в модели. Контроллером в Ruby on Rails является класс, наследованный от ActionController::Base.

Открытые

методы

контроллера

являются

так

называемыми действиями (actions). Action часто соответствует отдельному представлению. Например, по запросу пользователя admin/list будет вызван метод list класса AdminController и затем использовано представление list.rhtml. 1.2.4.3. Интеграция

Ruby on Rails может работать с Apache, Lighttpd или любым другим вебсервером, поддерживающим FastCGI. Для разработки и отладки часто используется встроенный в Ruby веб-сервер WEBrick или Mongrel. С помощью плагина в Rails реализована поддержка сетевого протокола WebDAV. В качестве сервера базы данных поддерживаются MySQL, Firebird, PostgreSQL, IBM DB2, Oracle и Microsoft SQL Server. Также поддерживается встраиваемая база данных SQLite. Для Windows существует дистрибутив Instant Rails c настроенной и готовой к работе сразу после установки рабочей средой для разработки Railsприложений, которая включает в себя сервер Apache и СУБД MySQL. Для платформ Windows, Linux, Mac OS X имеется комплексный установщик BitNami RubyStack, включающий в себя все необходимое для разработки в среде Rails, включая Ruby, RubyGems, Ruby on Rails, MySQL, Apache, Mongrel и Subversion. Для разработки Ajax-приложений RoR поставляется с интегрированными JavaScript-библиотеками

Prototype

и

Script.aculo.us,

но

также

можно

использовать и jQuery. 1.2.5. Язык разметки гипертекста HTML HTML (от англ. HyperText Markup Language — «язык разметки

12 гипертекста») - это стандартный язык разметки документов во Всемирной паутине. Почти все веб-страницы создаются при помощи языка HTML (или его потомка — XHTML). Язык HTML интерпретируется браузером и отображается в виде документа, в удобной для человека форме. Язык HTML был разработан британским учёным Тимом Бернерсом-Ли приблизительно в 1991—1992 годах в стенах Европейского совета по ядерным исследованиям в Женеве (Швейцария). HTML создавался как язык для обмена научной и технической документацией, пригодный для использования людьми, не являющимися специалистами в области вёрстки. HTML успешно справлялся с проблемой сложности SGML путём определения небольшого набора структурных и семантических элементов (размечаемых «тегами»), служащих для создания относительно простых, но красиво оформленных документов. Помимо упрощения структуры документа, в HTML внесена поддержка гипертекста.

Мультимедийные

возможности

были

добавлены

позже.

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

технической

оснащённостью

(цветной

экран

современного

компьютера, монохромный экран органайзера, ограниченный по размерам экран мобильного телефона или устройства и программы голосового воспроизведения текстов). Однако современное применение HTML очень далеко от его изначальной задачи. С течением времени, основная идея платформонезависимости языка HTML была отдана в своеобразную жертву современным потребностям в мультимедийном и графическом оформлении. 1.3. Требования к программе Система должна обеспечить: —единую пользовательскую систему для преподавателей;

13 —возможность загрузки и просмотра видео; —возможность добавления видео со сторонних сервисов; —возможность добавления лекции, а также видео и аннотации к нему; —возможность создания курсов лекций; —возможность создания тестирования по лекции с ответами в свободной форме; —возможность составления статистики по лекциям. 1.4. Требования к составу и параметрам технических средств Требования

к

параметрам

программно-технических

средств

для

серверной части: —процессор с производительностью не ниже Intel Pentium II; —операционная система семейства Unix (желательно Debian/Ubuntu Server); —оперативное запоминающее устройство не менее 128 Мб; —наличие свободного пространства на накопителе жестких магнитных дисков не менее 300Мб; —настроенный сетевой интерфейс; —установленный и настроенный интерпретатор Ruby версии не ниже 1.8.6; —установленная и настроенная среда разработки Ruby on Rails версии 2.2.2; —установленная и настроенная СУБД (желательно MySQL или PostgreSQL); —установленный видео-конвертер ffmpeg и набор кодеков libavcodec; —сервер для хранения видео-файлов. Требования

к

параметрам

программно-технических

клиентской части: —процессор с производительностью не ниже Intel Pentium II;

средств

для

14 —оперативное запоминающее устройство не менее 128Мб; —видеокарта; —клавиатура; —мышь; —монитор; —настроенный сетевой интерфейс; —наличие веб-обозревателя; —установленный Adobe Flash Player 9.

15

2. ОПИСАНИЕ ЯЗЫКА ПРОГРАММИРОВАНИЯ 2.1. Выбор языка программирования Основным требованием к языку программирования (далее ЯП) была возможность создания web-приложений (интернет-приложений). Исходя из этого требования выбор стоял между такими ЯП, как Ruby, Python, Perl и т. д. Кроме возможности разработки web-приложений эти ЯП имеют следующие общие характеристики: —поддерживаются практически всеми web-серверами; — имеют обширные библиотеки и инструментарии для разработки web-приложений; — обладают в той или иной степени объектно-ориентированными возможностями; — являются

динамическими

языками

программирования

интерпретируемого типа, что позволяет выполнять множество операций,

которые

не

доступны

статическим

языкам

компилируемого типа; — существуют реализации для всех популярных операционных систем: Windows, Unix, MacOS, BeOS и других; — используют более облегченный синтаксис, который позволяет писать более компактный код. Выбор остановился на ЯП Ruby по следующим причинам: —ЯП Ruby позволяет быстро и качественно писать сложные программы; —ЯП Ruby имеет очень лаконичный синтаксис, благодаря чему с ним удобно и приятно

работать,

функциональности;

при

этом

Ruby

не

уступает

другим

языкам

по

16 —ЯП Ruby имеет свою интересную концепцию и позволяет придерживаться принципа DRY (Don't Repeat Yourself - «Не повторяйся»); —ЯП Ruby имеет отличную среду разработки Ruby on Rails, которая позволяет писать сложные, но в тоже время гибкие web-приложения в краткие сроки; —Из личных предпочтений автора данной работы. 2.2. Элементы языка программирования При разработке системы был использован язык программирования Ruby. 2.2.1. Основные положения языка — комментарий начинается с символа "решетка" ( # ) и действует до конца строки (EOL); — программа на Ruby состоит из последовательности выражений; — выражения могут разделяться символом "точка с запятой" ( ; ) или символом

конца

строки

(EOL),

кроме

случая

незаконченного

выражения (например "+" в конце строки); — «обратный слеш» (\) в конце строки позволяет явно указать, что выражение незаконченно и окончания следует искать в последующих строках. 2.2.2. Зарезервированные слова Т а б л и ц а 1 — список зарезервированных слов alias

and

BEGIN

begin

break

case

class

def

defined

do

else

elsif

END

end

ensure

false

for

if

in

module

next

nil

not

or

redo

rescue

retry

return

self

super

then

true

undef

unless

until

when

while

yield

17 2.2.3. Типы данных Базовыми типами являются: числа, строки, диапазоны, регулярные выражения, символы, массивы и словари. Еще сюда можно было бы добавить файлы, так как они используются очень часто. 2.2.4. Числа Существуют следующие формы задания чисел: 123, 1_234, 123.45, 1.2e-3, 0xffff (шестнадцатеричное), 0b01011 (двоичное), 0377 (восьмеричное). Помимо перечисленных, существуют другие (неявные) формы задания чисел: — ?a

ASCII код символа "a";

— ?C-a

Код сочетания Ctrl+a;

— ?M-a

Код сочетания Alt+a;

— ?M-C-a

Код сочетания Ctrl+Alt+a;

— :symbol

Целое

значение,

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

идентификаторам, переменным и операторам. 2.2.5. Строки Существуют следующие формы задания строк: — 'без возможности вставки (interpolation)'; — "#{interpolation}, #{$interpolation}, #{@interpolation} и управл. последоват.\n"; — %q! без возможности вставки (interpolation)!; — %!Есть вставки и управляющие последовательности!; — %Q(Есть вставки и управляющие последовательности);

18 — `echo выполнение команды ОС со вставками и управляющими последовательностями`; — %x/echo выполнение команды ОС со вставками и управляющими последовательностями/. 2.2.6. Управляющие последовательности Используются

следующие

управляющие

последовательности:

\t

(табуляция), \n (переход на новую строку), \r (возврат каретки), \f (подача страницы), \b (удаление последнего символа), \a (звонок), \e (клавиша Отмена), \ s (пробел), \nnn (восьмеричное число) , \nn (шестнадцатеричное число), \сx (Ctrl+x), \C-x (Ctrl+x), \M-x (Alt+x), \M-\C-x (Ctrl+Alt+x) 2.2.7. Диапазоны Используются следующие формы задания диапазонов: — 1..10; — 'a'..'z'; — (1..10) === 5 => true; — (1..10) == 15 => false. 2.2.8. Строки Используются следующие формы задания регулярных выражений: — /обычное регулярное выражение/i; — %r|альтернативная форма задания регулярных выражений|. Задействованы следующие элементы регулярных выражений: — .

любой символ исключая перевод строки;

— []

любой символ из указанных;

19 — [^ ]

любой символ, кроме указанных;

— *

0

или

более

повторений

предыдущего

более

повторений

предыдущего

более

повторений

предыдущего

более

повторений

предыдущего

регулярного выражения; — *?

0

или

регулярного выражения (скупой); — +

1

или

регулярного выражения; — +?

1

или

регулярного выражения (скупой); — ?

0 или 1 повторений предыдущего регулярного

выражения; — |

альтернатива;

— ()

группировка регулярных выражений;

— ^

начало строки или текста;

— $

конец строки или текста;

— #{m,n}

не меньше m и не больше n повторений

предыдущего регулярного выражения; — #{m,n}?

не меньше m и не больше n повторений

предыдущего регулярного выражения (жадный); — \A

начало строки;

— \b

граница слова;

— \B

не граница слова;

— \d

цифра, то есть [0-9];

— \D

не цифра, то есть [^0-9];

20 — \s

пробельный (whitespace) символ, то есть [ \t\n\r\f];

— \S

не пробельный символ, то есть [^ \t\n\r\f];

— \w

символ, то есть [0-9a-zA-Z_];

— \W

не символ, то есть [^0-9a-zA-Z_];

— \z

конец текста;

— \Z

конец текста или позиция перед завершающим

переводом строки; — (?# )

комментарий;

— (?: )

группировка без сохранения;

— (?= )

позитивная опережающая проверка;

— (?! )

негативная опережающая проверка;

— (?ix-ix)

включение/отключение режимов для оставшейся

части выражения; — (?ix-ix: )

включение/отключение

режимов

для

содержимого скобок; 2.2.9. Массивы Массивы могут быть заданы одним из следующих способов: — [1, 2, 3]; — %w(foo bar baz). Индексы в массивах могут быть отрицательными и отсчет тогда будет вестись от конца массива (то есть -1 означает "последний элемент"). 2.2.10. Словари Словари (они же ассоциативные массива, они же хеши) могут быть

21 заданы одним из следующих способов: — { 1 => 2, 2 => 4, 3 => 6 }; — { key => value, ... }. 2.2.11. Файлы Работа с файлами осуществляется при помощи следующих методов: — File.join(p1,p2,p3, ... ,pN) => "p1/p2/.../pN" платформонезависимый путь; — File.new(path,modestring="r") => file; — File.new(path,modenum[,permnum])> file/li>; — File.open(fileName,aModeString="r"){ |file| block } -> block_result; — File.open(fileName[,aModeNum [, aPermNum]]){ |file| block } -> block_result; — IO.foreach(path,setstring=$/){ |line| block } -> block_result; — IO.readlines( path ) => array; — IO.read( path ) => string. 2.2.12. Строка для задания режима чтения записи файла — r

чтение с начала файла (режим по умолчанию);

— r+

чтение-запись с начала файла;

— w

обнуление или создание файла для записи;

— w+

обнуление или создание файла для чтения-записи;

— a

указатель устанавливается на конец файла или создается и

открывается на запись; — a+

указатель устанавливается на конец файла или создается и

22 открывается на чтение-запись; — b

(только для DOS/Windows) двоичный режим чтения-записи

(используется совместно с другими режимами). 2.2.13. Переменные — $global_variable

глобальные переменные;

— @instance_variable

переменные объекта;

— @@class_variable

переменные класса;

— [OtherCLass::]CONSTANT

константа

— local_variable

локальная переменная.

2.2.14. Псевдопеременные — self

возвращает указатель на текущий объект;

— nil

единственный

объект

класса

NilClass

(эквивалентен false) и имеет смысл "пустоты"; — true

единственный объект класса TrueClass и

имеет смысл "истины"; — false

единственный объект класса FalseClass и

имеет смысл "лжи"; — __FILE__

имя обрабатываемого в текущий момент

файла; — __LINE__

текущий номер строки в обрабатываемом

исходном файле. 2.2.15. Предопределенные переменные — $!

последнее сообщение об ошибке;

23 — $@

местоположение ошибки (массив с

трассировочным стеком); — $&

текст

совпадения

(регулярные

текст

перед

совпадением

выражения); — $` (регулярные выражения); — $'

текст после совпадения (регулярные

выражения); — $+

текст,

совпавший

с

последней

закрытой парой круглых скобок (регулярные выражения); — $n

n-тое подвыражение в последнем

совпадении, то же самое, что и $~[n]. (регулярные выражения); — $~

последнее совпадение с регулярным

выражением в виде массива подвыражений; — $=

флаг

зависимости

от

регистра

символов; — $/

разделитель во входных строках;

— $

разделитель в выходных строках;

— $,

разделитель для print и Array#join;

— $;

разделитель

по

умолчанию

для

String#split; — $.

номер

последней

строки,

прочитанной интерпретатором; — $<

результат виртуальной конкатенации

файлов, имена которых переданы в командной строке;

24 — $>

источник вывода по умолчанию для

print, printf (по умолчанию равен $stdout); — $_

последняя строка, прочитанная gets

или readline; — $0

имя файла с которого началось

выполнение; — $*

аргументы командной строки в виде

массива (аналог args); — $$

id процесса интерпретатора;

— $?

статус

завершения

последнего

дочернего процесса; — $:

массив путей для загрузки библиотек

и модулей; — $"

массив с именами подключенных

библиотек; — $DEBUG

если

интерпретатор

запущен

с

опцией -d, то равен true (только для чтения); — $FILENAME

текущий обрабатываемый файл при

использовании $<, аналогично вызову $<.filename; — $LOAD_PATH

псевдоним для $:;

— $stderr

текущий стандартный поток ошибок;

— $stdin

текущий стандартный поток ввода;

— $stdout

текущий поток вывода;

— $VERBOSE

если

интерпретатор

опцией -v, то равен true (только для чтения);

запущен

с

25 — $-0

псевдоним для $/;

— $-a

если

интерпретатор

запущен

с

опцией -a, то равен true (только для чтения); — $-d

псевдоним для $DEBUG;

— $-F

псевдоним для $;;

— $-i

удерживает

расширения,

по

умолчанию nil; — $-I

псевдоним для $:;

— $-l

если

интерпретатор

запущен

с

запущен

с

опцией -l, то равен true (только для чтения); — $-p

если

интерпретатор

опцией -p, то равен true (только для чтения); — $-v

псевдоним для $VERBOSE.

2.2.16. Предопределенные глобальные константы — TRUE

псевдоним для true;

— FALSE

псевдоним для false;

— NIL

псевдоним для nil;

— STDIN

псевдоним для $stdin;

— STDOUT

псевдоним для $stdout;

— STDERR

псевдоним для $stderr;

— ENV

словарь,

который

содержит переменные окружения; — ARGF

псевдоним для $<;

26 — ARGV

псевдоним для $*;

— DATA

указатель

на

область

после __END__; — VERSION

строка

с

версией

интерпретатора; — RUBY_RELEASE_DATE

строка с датой выпуска

интерпретатора; — RUBY_PLATFORM

идентификатор

платформы. 2.2.17. Выражения Элементом выражения могут быть базовые типы (см. выше), команда shell, переменная, константа или вызов метода. 2.2.18. Операторы и приоритеты (в порядке убывания) — ::; — []; — **; — - (унарный), + (унарный), !, ~; — *, /, %; — +, -; — <<, >>; — &; — |, ^; — >, >=, <, <=;

27 — <=>, ==, ===, !=, =~, !~; — &&; — ||; — .., ...; — = (+=, -= ...); — not; — and, or. Почти все представленные выше операторы являются методами (т.е. их можно переопределить), кроме следующих: =, .. , ... , !, not, &&, and, ||, or, !=, !~. В добавок ко всему, над составными операторами (то есть += и др.) пользователь не властен (то есть зависит от метода +, в случае с +=). 2.2.19. Строки Существуют следующие условные конструкции: if логическое_выражение [then] программный_код elsif логическое_выражение [then] программный_код else программный_код end unless логическое_выражение [then] программный_код else программный_код end программный_код unless логическое_выражение программный_код if логическое_выражение

28 case выражение_для_проверки when шаблон [, шаблон]... [then] программный_код when шаблон [, шаблон]... [then] программный_код [else программный_код] end Существуют следующие циклические конструкции: while логическое_выражение [do] программный_код end until логическое_выражение [do] программный_код end begin программный_код end while логическое_выражение begin программный_код end until логическое_выражение for счетчик[, счетчик]... in множество [do] программный_код end множество.each do | счетчик[, счетчик]... | программный_код end программный_код while логическое_выражение программный_код until логическое_выражение Существуют следующие директивы управления циклом: — break завершает текущий цикл.

29 — redo начинает текущий цикл сначала. — next переходит к следующей итерации текущего цикла. — retry повторяет итерацию без проверки условия для тещего цикла. 2.2.20. Вызов метода Почти все доступные вызовы метода являются опциональными и следовательно синтаксис вызова не очень простой. Ниже представлено несколько примеров: — method; — obj.method; — Class::method; — method(arg1, arg2); — method(arg1, key1 => val1, key2 => val2, aval1, aval2) #{ блок }; — method(arg1, *[arg2, arg3]) соответствует: method(arg1, arg2, arg3). Описание использованных элементов: — invocation := [receiver ('::' | '.')] name [ parameters ] [ block ]; — parameters := ( [param]* [, hashlist] [*array] [&aProc] ); — block := { blockbody } | do blockbody end. 2.2.21. Создание класса Имя класса всегда должно начинаться с большой латинской буквы: class Identifier [< superclass ] программный_код end

# единичный класс (singleton), добавляет метод(ы) к экземпляру класса

class << obj программный_код end

30

2.2.22. Создание модуля module Identifier программный_код end 2.2.23. Создание метода def method_name(arg_list, *list_expr, &block_expr) программный_код end # единичный метод

def expr.identifier(arg_list, *list_expr, &block_expr) программный_код end Следует учитывать несколько особенностей: — все

элементы

из

списка

аргументов,

включая

скобки



необязательные; — аргументы могут иметь значения по умолчанию (name=expr); — method_name может быть символьным оператором; — объявление метода не может быть вложенным в другой метод; — методы могут переопределять операторы: .., |, ^, &, <=>, ==, ===, =~, >, >=, <, <=, +, -, *, /, %, **, <<, >>, ~, +@, -@, [], []= (2 аргумента). 2.2.24. Ограничение доступа Существуют следующие модификаторы доступа: — public - полностью доступно. — protected

-

доступно

только

непосредственных потомков.

внутри

класса

и

внутри

31 — private - доступно только внутри класса. Ограничение на чтение-запись атрибутов (начинаются с @) производится посредством наличия/отсутствия одноименных методов. По умолчанию класс не дает доступа к атрибутам своих объектов (начинаются с @). Могут использоваться как для явного указания имен методов так и для разделения класса на "области доступа". class A protected def protected_method # ничего

end end class B < A public def test_protected myA = A.new myA.protected_method end end b = B.new.test_protected 2.2.25. Методы доступа Класс Module содержит следующие вспомогательные методы: — attr_reader атрибут[, атрибут]... - создает одноименный метод чтения значения атрибута; — attr_writer атрибут[, атрибут]... - создает одноименный метод изменения значения атрибута (т.е. атрибут=); — attr атрибут[, разрешение_на_запись] - эквивалентно "attr_reader атрибут; attr_writer атрибут if разрешение_на_запись"; — attr_accessor атрибут[, атрибут]... - эквивалентно "attr атрибут,

32 TRUE" для каждого аргумента. 2.2.26. Псевдонимы alias старое_название, новое_название Создает

новое

имя

метода

(новое_название)

для

старого

(старое_название). старое_название может быть любым существующим методом или оператором, но не может быть локальной или внутренней константой или именем класса 2.2.27. Блоки/замыкания Блоками являются следующие конструкции: — do ... end; — { ... }. Область видимости переменных объявленных внутри блока ограничена блоком. Блок может получать аргументы при помощи ключевого слова yield (при создании метода). Формы записи {} и do/end отличаются тем, что конструкции do/end применяются преимущественно для циклов, а {} для всего остального. 2.2.28. Лямбда-методы Создаются одним из следующих способов: — Kernel#proc; — Proc#new; — Вызов метода с аргументом &block. 2.2.29. Обработка исключений begin программный_код

33 [rescue [класс_ошибки [=> трассировка],..] программный_код] [else программный_код] [ensure программный_код] end Следует обращать внимание на то, что аргументом по умолчанию для rescue является StandardError, а не Exception. 2.2.30. Стандартная библиотека Ruby поставляется с исчерпывающей библиотекой классов и модулей. Некоторые из них встроенные, а некоторые поставляются в виде отдельных файлов (в исходниках). При подключении библиотеки любого типа, разницы вы не заметите. 2.2.31. Встроенные классы Разработчику доступны следующие классы: Object, Hash, Symbol, IO, File, Continuation, File::Stat, Data, NilClass, Exception, StandardError, LocalJumpError, SystemStackError, ZeroDivisionError, RangeError, FloatDomainError, SecurityError, ThreadError,

IOError,

EOFError, ArgumentError,

IndexError,

RuntimeError,

TypeError, SystemCallError, Errno::*, RegexpError, SignalException, Interrupt, Fatal,

NoMemoryError,

ScriptError,

LoadError,

NameError,

SyntaxError,

NotImplementedError, SystemExit, Array, Proc, String, Numeric, Float, Integer, Bignum, Fixnum, Regexp, Thread, Module, Class, ThreadGroup, Method, UnboundMethod, Struct, Struct::Tms, TrueClass, Time, Dir, Binding, Range, MatchData, FalseClass. 2.2.32. Встроенные модули Разработчику доступны следующие модули: Comparable, Enumerable, Errno, FileTest, GC, Kernel, Marshal, Math, ObjectSpace, Precision, Process.

34 2.2.33. Поддержка сокетов Поддержка сокетов обеспечивается следующими классами: BasicSocket, IPSocket, TCPSocket, SOCKSSocket, TCPServer, UDPSocket, UNIXSocket, Socket.

35

ЗАКЛЮЧЕНИЕ В

результате

прохождения

преддипломной

практики

было

сформулировано задание для дипломного проектирования, установлены требования к выполнению задания, а так же были определены и изучены следующие технологии: HTTP, REST, MVC, Ruby on Rails, HTML, на основе которых будет создаваться проект. Были освоены принципы создания webприложения на основе трехуровневой архитектуры MVC и архитектуры сетевых протоколов REST. Обоснован выбор языка программирования, с помощью которого будет создаваться система. Приведен обзор основ выбранного языка программирования.

36

СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ 1. Сообщество Wikipedia, HTTP, http://ru.wikipedia.org/wiki/HTTP, 2009 2. Сообщество Wikipedia, REST, http://ru.wikipedia.org/wiki/REST, 2009 3. Сообщество Wikipedia, MVC, http://ru.wikipedia.org/wiki/MVC, 2009 4. Сообщество Wikipedia, Ruby on Rails, http://ru.wikipedia.org/wiki/Ruby_on_Rails, 2009 5. Д. Томас, Д. Х. Хэнссон, Гибкая разработка веб-приложений в среде Rails, Питер, 2008

Related Documents

Report Pdp
April 2020 20
Report Pdp
April 2020 20
Pdp
December 2019 34
Pdp
November 2019 35
Pdp
November 2019 45
Pdp Ma'adani
April 2020 16