- •Минск, бгу,
- •Содержание.
- •Глава1. Компьютерные сети и протоколы…………………………..15
- •Введение в Интернет Коротко об истории Интернет
- •Как работает Интернет?
- •Система адресации
- •Способы подключения к сети
- •Сервисы Интернет
- •Передача файлов по ftp
- •Всемирная паутина www
- •Электронная почта
- •Задания по теме “Введение в Интернет”
- •Глава 1. Компьютерные сети и протоколы
- •Локальные сети
- •Распределенные и глобальные сети
- •Сеть vpn
- •Адресация в локальных сетях
- •Адресация в глобальных сетях и в Интернет
- •Понятие и краткое описание протоколов
- •Соотношение между tcp/ip и osi/iso
- •Межсетевой протокол iPv4
- •Транспортный протокол tcp
- •Протокол дэйтаграмм udp
- •Протоколы arp и rarp
- •Протоколы сетевого уровня
- •Протоколы электронной почты
- •Протоколы smtp и pop3
- •Протокол imap4
- •Спецификация mime
- •Протокол ftp
- •Http – Протокол передачи гипертекстов
- •Клиентский запрос http
- •Ответ сервера
- •Развитие прикладных протоколов: soap, rest, rpc
- •Безопасность в сети
- •Протокол ssl
- •Установление подлинности участников
- •Проблемы с кодировкой и Unicode
- •Задания по теме «Протоколы Интернет»
- •Глава 2. Проектирование и разработка сайтов
- •Виды сайтов
- •Этапы проектирования и разработки сайта
- •Модели проектирования и управление проектами
- •Итерационная (спиральная) модель
- •Программные средства управления проектами
- •Логическое проектирование дизайна сайта
- •Главная страница сайта
- •Внутренние страницы сайта
- •Оценки качества Веб – сайтов
- •Глава 3. Краткий обзор основных технологий разработки Веб приложений
- •Язык разметки гипертекста xml
- •Синтаксис xml
- •Объявление xml
- •Конструкции языка
- •Правильно построенные и действительные документы xml
- •Отображение xml документа
- •Словари xml
- •Вставка флэш в страницу
- •Язык ActionScript
- •Видео-аудио проигрыватели
- •Технология «клиент-сервер»
- •Язык Java на клиентской и серверной странице
- •Базы данных и язык sql
- •Нормализация модели данных
- •Язык sql
- •Команды определения структуры данных
- •Команды манипулирования данными
- •Команды управления транзакциями
- •Команды управления доступом
- •Извлечение данных, команда select
- •Секция where
- •Групповые функции
- •Секция having
- •Изменение данных
- •Команда insert
- •Язык разметки гипертекста html
- •Формы html
- •Новые элементы форм html5
- •Новый тип input – range служит для ввода значения из диапазона
- •Теги div и span
- •Метатеги
- •Новые возможности html5
- •Поддержка аудио
- •Поддержка видео
- •Атрибут Controls
- •Валидация документов
- •Каскадные таблицы стилей css
- •Способы включения каскадных таблиц стилей
- •Теги div , span и link
- •Свойства шрифтов (фонтов).
- •Заголовок1 Заголовок2 Заголовок3
- •Стили текста.
- •Цвет и фон.
- •Свойства списков
- •Свойства таблиц
- •Псевдоклассы
- •Псевдостили текста
- •Псевдоэлементы
- •Форматирование псевдоклассов и псевдоэлементов
- •Различные свойства
- •Представление документа в виде блоков
- •Отступы, поля, позиционирование
- •Границы элементов
- •Визуальное форматирование
- •Визуальные эффекты
- •Новое в css3
- •Глава 5. Язык JavaScript Введение
- •Включение скриптов JavaScript в html-код
- •Создание простых сценариев
- •Комментарии. Скрытие сценариев от браузеров
- •Отладка скриптов. Ввод и вывод данных
- •Описание языка Типы данных
- •Преобразование типа
- •Булев тип
- •Переменные типа Undefined и Null
- •Массивы
- •Операторы и выражения
- •Оператор присваивания
- •Арифметические операторы
- •Операторы сравнения
- •Функции пользователя
- •Передача параметров по значению и по ссылке
- •Глобальные и локальные переменные
- •Модель событий
- •Ключевое слово this
- •Перехват события.
- •Методы addEventListener, removeEventListener, attachEvent.
- •Исключения: throw/catch/finally
- •Объектная модель
- •Пользовательские объекты
- •Прототипы
- •Встроенные объекты String, Array, Date, Math Объект String
- •Объект Array
- •Объект Date (Дата)
- •Методы объекта Date
- •Коллекции
- •Свойства элемента innerHtml и outerHtml
- •Навигация по дереву документа
- •Создание новых узлов
- •Удаление и замена узлов в документе
- •Объект window
- •Свойства окна, передаваемые методу open()
- •Методы объекта window
- •Свойства и методы объекта navigator
- •Свойства и методы объекта history
- •Свойства и методы объекта location
- •Объект layer
- •Свойства объекта layer
- •Методы объекта layer
- •Использование каскадных таблиц стилей и объекта style
- •Модель ajax:
- •Класс xmlHttpRequest
- •Свойства класса
- •Методы класса
- •Создание экземпляра объекта
- •Использование dom
- •Объект FormData
- •Работа с cookie
- •Синтаксис http заголовка для поля Cookie
- •Способы задания значений cookie
- •Примеры на JavaScript
- •Глава 6. Язык серверных скриптов php
- •Инструменты для разработки
- •Как php работает
- •Описание языка Типы данных
- •Массивы и инициализация массивов
- •Операции и выражения
- •Операции сравнения
- •Логические операции
- •Строковые операции
- •Операторы управления
- •Функции
- •Рекурсивные функции
- •Аргументы функции
- •Область действия и время жизни переменных
- •Изменяемые (динамические) переменные
- •Внешние библиотечные функции
- •Функции для работы с массивами
- •Функции для работы со строками.
- •Функции форматных преобразований строк
- •Преобразование строк и файлов к формату html и наоборот
- •Преобразование html в простой текст
- •Преобразование строки к верхнему и нижнему регистру
- •Установка локальных настроек
- •Регулярные выражения
- •Perl-совместимые функции для работы с регулярными выражениями
- •Функции даты и времени
- •Математические функции
- •Объектно-ориентированное программирование в php Основные понятия ооп
- •Классы и Объекты
- •Конструкторы и деструкторы
- •Наследование классов и интерфейсов
- •Магические методы
- •Обработка ошибок
- •Ошибки php и журнал error_reporting
- •Чтение и запись бинарных файлов
- •Работа с каталогами в рнр
- •MySql – сервер: бд1; бд2; бд3; бд4;
- •Язык запросов sql
- •Операция соединения.
- •Команды sql для создания баз данных и таблиц
- •Выборка данных из таблиц бд
- •Работа с MySql (сохранение данных в базе данных).
- •Работа с MySql занесение и получение данных из базы данных
- •Организации работы с данными
- •Передача данных от клиента к серверу и обратно. Протокол http
- •Клиентские методы http
- •Обработка html-форм
- •Передача переменных из формы в скрипт.
- •Передача значений переменных по методу get
- •Передача данных из формы на сервер по методу get
- •Передача данных из формы на сервер по методу post
- •Php и различные формы
- •Обработка форм
- •Более сложные переменные формы
- •Глава 7. Лабораторные работы Лабораторная работа 1 (4 часа). Инструменты и средства создания простых сайтов
- •Лабораторная работа 3 (4часа). Применение каскадных таблиц стилей css
- •Трехколоночный контейнерный макет сайта
- •Лабораторная работа 4. Применение каскадных таблиц стилей css
- •Некоторые подсказки по синтаксису css:
- •1. Свойства шрифтов.
- •2. Свойства текста.
- •3. Свойства цвета и фона.
- •4. Свойства рамки.
- •5. Свойства списков.
- •6. Свойства изображений.
- •Форматирование блока
- •Лабораторная работа 5 (4 часа). Динамика и JavaScript на Веб –странице.
- •Ответить на следующие вопросы
- •Пример вывода даты и времени.
- •Пример вывода строки в стиле печатной машинки
- •Дополнительные задачи и упражнения по JavaScript
- •Лабораторная работа 6 по JavaScript (4 часа).
- •Проверка правильности заполнения формы на сайте
- •Методы объекта window
- •Методы focus() и blur()
- •Лабораторная работа 7. Php Задание 1. Массивы и строки Выполнить одно из перечисленных ниже упражнений
- •Задание 2. Функции
- •Задание 4. Работа с базами данных Выполнить одно из перечисленных ниже упражнений
- •Задание 5. Создание web-объектов Список заданий
- •Приложение 1. Курсовые работы Курсовая работа 1. Создание клиентских приложений
- •Курсовая работа №2. Сайты клиент-сервер
- •Каталог товаров
- •Система вопрос/ответ
- •Курсовая работа №3. Технологии разработки Веб – приложений Проекты сайтов
- •Перечень заданий
- •Приложение 2. Быстрая разработка Веб-приложений и cms
- •Начало работы с сайтом
- •Установка нового модуля
- •Создание шаблона
- •Создание индивидуальных шаблонов
- •Движок шаблонирования xTemplate
- •Создание нового шаблона
- •Удаление блока с формой входа на сайт
- •Включение блока для отображение популярных статей
- •Удаление ссылки "Далее" в отображение статьи
- •Drupal: практические примеры
- •Как заставить Drupal работать быстрее
- •Литература
Видео-аудио проигрыватели
Одним из самых частых способов использования технологии flash в интернете является проигрывание видео и аудио треков. В большинстве случаев для интеграции видео в веб страничку достаточно уже готовых интернет проигрывателей. Рассмотрим, например, один из популярных и свободно распространяемых проигрывателей: JW FLV Player ( http://www.longtailvideo.com/players/jw-flv-player/ )
Для интеграции JW FLV Player на сайт достаточно проследовать 4-м шагам:
1. Скачать архив с плеером с сайта проигрывателя
2. Загрузить файлы jwplayer.js и player.swf из архива на ваш сервер.
3. Подключите jwplayer.js на странице на которой вы собираетесь его использовать.
Например можно сделать так:
<script type="text/javascript" src="/jwplayer/jwplayer.js"></script>
4. Проинициализируйте плеер где-либо в коде вашей страницы. Сделать это можно следующим образом
<div id="container">Loading the player ...</div>
<script type="text/javascript"> jwplayer("container").setup({});
flashplayer: "/jwplayer/player.swf", file: "/uploads/video.mp4", height: 270,width: 480
</script>
Более детальные инструкции можно найти в документации по плееру.
Flex
Adobe Flex — технология для легкого и быстрого создания Rich Internet Applications, использующая описание интерфейса приложения с помощью диалекта XML — MXML. Flex приложение может компилироваться на сервере, а может — из IDE как во Flash, результатом является swf файл, исполняемый с помощью Flash Player.
Flex SDK - это большой набор классов, расширяющих возможности Flash. Flex-framework включает возможности локализации, стилизации приложения, разработки модульного приложения, встроенные валидаторы и форматоры текстовых полей — все те инструменты, которые нужны разработчикам приложений, работающих online.
Adobe предоставляет бесплатную интегрированную среду разработки на Flex: Flash Builder. Adobe Flash Builder создана на свободно распространяемой платформе разработки Eclipse, которую многие разработчики уже используют при программировании на Java.
Flex, помимо скорости разработки, предоставляет полные мультимедийные возможности Flash платформы: включая потоковое мультимедиа, возможность получить доступ к веб-камере и микрофону пользователя, бинарные сокеты, обширные возможности сетевых коммуникаций (HTTP-запросы, веб-сервисы, встроенный формат сериализации AMF), оперирование координатами трехмерного пространства, возможности использования встроенных фильтров (таких как расфокусировка, падающая тень и др.), и написания собственных.
Flex – это сложные приложения для веб и декстопов, в то время как Flash – это анимации, баннеры и простые игры.
Технология «клиент-сервер»
Приложения WWW работают по технологии «клиент-сервер», в которой все программное обеспечение разделяется на клиентскую и серверную части. Взаимодействие клиента и сервера происходит по принципу «запрос-ответ». Клиент посылает запрос, сервер обрабатывает его и посылает ответ. Рассмотрим, например, этапы соединения по протоколу http.
Запрос клиента. Браузер формирует запрос на основе данных из URL пользователя, либо из данных формы.
Установка соединения клиента с сервером
Посылка запроса клиента и ожидание ответа от сервера.
Обработка запроса сервером. Генерация ответа.
Прием ответа клиентом.
Разрыв соединения.
Пока нет обращений клиентов, HTTP-сервер просто «спит», установив прослушку заданного порта (по умолчанию 80). Когда клиент устанавливает соединение, сервер «просыпается» и, приняв данные запроса, вызывает скрипт для их обработки. Результат всех манипуляций - это выдача ответа, которого ожидает клиент. После того как сервер выдал ответ, он разрывает соединение и вновь «погружается в сон». В случае возникновения ошибки HTTP-транзакция может закончиться на любом из этих этапов.
Первой технологией, позволившей создавать динамические веб-сайты стал интерфейс CGI, который позволял обычным программам формировать содержимое веб-страницы и возвращать пользователю результат в виде HTML документа. Этот способ создания веб-сайтов популярен до сих пор.
Следующим поколением в разработке динамических веб-сайтов стал интерфейс ISAPI. Он мало чем отличается от CGI, однако решены многие проблемы с производительностью и масштабируемостью.
Гипертекстовые препроцессоры стали новой ступенью эволюции серверных технологий. Основное их отличие — возможность вставлять программный код прямо в HTML-страницу. Это позволило значительно упростить процесс разработки, а также частично отделить представление от программного кода. Самым популярным гипертекстовым препроцессором является PHP. Современный подход к созданию веб-приложений — это использование технологий JSP и ASP.NET. У JSP есть одно преимущество — кроссплатформенность(может работать и на Windows и на Unix серверах). В основном выбор технологии сводиться к выбору связки: JSP+Linux или ASP.NET+Windows. Linux является бесплатной операционной системой, но много компаний и разработчиков выбирают именно ASP.NET+Windows.
Технологии CGI
Технология CGI (Common Gateway Interface – стандартный шлюзовой интерфейс) – была разработана для расширения возможностей WWW за счет подключения внешнего программного обеспечения – гостевых книг, баз данных, интернет-магазинов и т.д. При этом сервер взаимодействует с подключаемыми программами через стандартные потоки ввода/вывода. Входной информацией для таких приложений служит содержимое HTTP-заголовка (метод GET) либо тело запроса (метод POST). CGI-приложения генерируют HTML-код, который возвращается браузеру для отображения новой страницы.
Отметим, что вместе с CGI широко используется и термин «CGI-скрипты». Подобные приложения писались на скриптовом языке Perl и выполнялись на сервере. Основная проблема CGI-приложений заключается в том, что при каждом клиентском запросе сервер загружает это приложение в отдельное адресное пространство, а затем инициирует его выполнение и выгрузку. Это ограничивает производительность приложений и возможность одновременной обработки большого количества клиентских запросов. CGI — это способ общения между http сервером и программой - скриптом. CGI-приложения можно создавать с помощью любого средства разработки, генерирующего консольные приложения для операционной системы, под управлением которой функционирует Web-сервер, а не только на Perl. Программа, , которая читает get-данные из системных переменных, post-данные из stdin и пишет результирующий html-код в stdout, может быть написана на любом языке. CGI-скрипт получает данные от пользователя и, в зависимости от этих данных выполняет какие-либо действия, например формирует HTML-страницу. Допустим вы вводите в браузере строку http://bbbb.by/cgi-bin/prr.cgi Ваш браузер соединяется по протоколу HTTP с указанным сервером и просит у него нужный файл. Серверу передается строка GET http://bbbb.by/cgi-bin/prr.cgi HTTP/1.1 Дальше идет посылаемая браузером информация о себе. Если такой файл есть, то сервер отошлет браузеру ответ: HTTP/1.1 200 Ok Content-Type: text/html Если в запрашиваемом URL указать специальную CGI - программу, то в результате эта программа запустится на сервере и браузер получит то, что выдала эта программа на выходе. При этом программа может выполнить какие-то другие действия, например, записать данные в базу данных. При запуске CGI-скрипта сервер создает в системе набор переменных окружения через которые и передаются данные от пользователя REQUEST_METHOD -Это поле, используемое для определения метода запроса HTTP Протокол HTTP использует методы GET и POST для запроса к серверу.Они отличаются тем что при методе GET запрос является как-бы частью URL т.е. http://www..../my.cgi?request а при методе POST данные передаются в теле HTTP-запроса. Следовательно для CGI при GET запрос идет в переменную QUERY_STRING а при POST подается на STDIN скрипта. Пример:REQUEST_METHOD=GET QUERY_STRING Это строка запроса при методе GET. Известно, что запрос из формы кодируется браузером поскольку не все символы разрешены в URL, некоторые имеют специальное назначение. В методе urlencode все пробелы заменяются на знак '+', а все специальные и непечатные символы на %hh, где hh-шестнадцатеричный код символа. Разделителем полей формы служит знак '&'. При обработке форм надо произвести декодирование. При методе запроса POST необходимо считать со стандартного входа STDIN CONTENT_LENGTH байт, а потом производить их обработку. Обычно методом POST пользуются для передачи форм, содержащих потенциально большие области ввода текста TEXTAREA. Браузер посылает на сервер и информацию о себе, чтобы CGI-скрипт мог представить информацию с учетом этого. Что такое скрипт CGI-скрипт - это программа, которая выполняется на web-сервере по запросу клиента. CGI - это не код, а специализированный интерфейс, при посредстве которого производится запуск скрипта и дальнейшая работа. Если посетитель сайта заполнит какие-то формы и нажмет кнопку "Отправить", данные поступают на сервер, запускается cgi-скрипт и происходит обработка поступившей информации. Например, текст сообщения и прочие значения считываются скриптом из формы отправки и записываются в файл гостевой книги. Взамен этого, на браузер посетителя отправляется сообщение. Сервера, функционирующие под управлением Windows могут работать с CGI – скриптами на С++, Perl Visual Basic или Delphi. Если вы скачали какой-то скрипт и хотите его использовать, необходимо подстроить под себя - в начале скрипта потребуется указать кое-какие данные. Например, путь к интерпретатору Perl (чаще всего - /usr/local/bin/perl/ или /usr/bin/perl/), адрес сайта, название файла, в который должны записываться результаты выполнения скрипта и т.д. Вдобавок ко всему, скрипт следует поместить в специальный каталог. Классический пример - имя скрипта Perl должно иметь расширения .cgi, а сам он будет находиться в каталоге cgi-bin. Но это необязательно: скрипт может располагаться где угодно, при этом большинство веб-серверов требуют специальной настройки. В веб-сервере Apache, например, такая настройка может производиться при помощи общего файла настроек httpd.conf или с помощью файла .htaccess в том каталоге, где содержится этот скрипт. Пример скрипта Hello World на языке Python:
#!/usr/bin/python print("""Content-Type: text/plain Hello, world!""")
Пример программы Hello World на языке C: #include <stdio.h> int main(void) { printf("Content-Type: text/plain;charset=us-ascii\n\n"); printf("Hello, world!\n\n"); return 0; } |
|
Использование CGI имеет ряд недостатков: сложность отделения программного кода от HTML-представления, отсутствие встроенных средств для создания пользовательского интерфейса. При создании сайта приходится либо все писать самому, либо использовать готовое решение, которое нелегко приспособить к другим условиям.
ISAPI и Apache DSO
Проблему ограниченной производительности CGI - приложений, которые выполняются в отдельном адресном пространстве, можно решить, создав приложение в виде библиотеки, загружающейся в адресное пространство Web-сервера и при необходимости остающейся там для обработки последующих запросов от других клиентов. Web-сервер должен поддерживать загрузку таких библиотек. Подобные приложения для Microsoft Internet Information Servise носят название ISAPI (Internet Server Application Program Interface), а для Web-сервера Apache такие библиотеки называются Apache DSO (Dynamic Shared Objects).
ASP, JSP, PHP
Очередным шагом в развитии технологий создания Интернет-приложений было появление средств, позволяющих отделить задачи Web-дизайна от задач, связанных с реализацией функциональности приложений. Такой технологией стала Active Server Pages (ASP), построенная на основе ISAPI. Основная идея ASP заключается в создании Web-страниц с внедренными в них фрагментами кода на скриптовых языках. Однако, указанные фрагменты кода интерпретируются не браузером, а сервером (ISAPI-библиотекой). Результат выполнения замещает сам фрагмент кода в версии страницы, которая передается в пользовательский браузер. Вскоре появились и другие технологии, реализующие идею размещения внутри Web-страницы кода, выполняемого Web-сервером. Известной является технология JSP (Java Server Pages), основная идея которой — однократная компиляция Java-кода (сервлета) при первом обращении к нему, выполнение методов этого сервлета и помещение результатов выполнения этих методов в набор данных, отправляемых в браузер. Еще одной популярной технологией подобного типа является PHP (Personal Home Pages), которая использует CGI-приложения, интерпретирующие внедренный в HTML-страницу код на скриптовом языке.
Программирование для серверов
Программирование на стороне сервера позволяет получать и обрабатывать на сервере запросы, введенные на клиенте при помощи формы или с помощью URI. В другие задачи входят: обеспечивать динамический доступ к серверным базам данных и другим ресурсам, хранимым на сервере; динамически создавать web-документы в качестве ответа клиенту; использовать серверные компоненты, предназначенные для решения типовых задач; осуществлять аутентификацию пользователя.
Perl
Когда веб-программирование зарождалось, наиболее часто используемым языком программирования был Perl. Perl был создан в 1986 году как инструмент для администрирования и конфигурирования системных ресурсов сети, состоящей из Unix-компьютеров. Синтаксис выражений Perl близок к синтаксису C++. Это рекурсивный язык с рекурсией произвольной глубины. Perl приспособлен для сканирования текстовых файлов, но может обрабатывать и двоичные данные. Perl позволяет использовать регулярные выражения, создавать объекты, вставлять в программу на C++ куски кода на Perl. Perl - интерпретируемый язык, приспособленный для обработки произвольных текстовых документов и файлов, извлечения из них необходимой информации и выдачи сообщений. Этот язык прост в использовании и эффективен. Язык получил большое распространение как инструмент создания исполняемых модулей-скриптов WWW-сервера. Perl скрипты можно использовать для решения всех задач, возникающих при обеспечении WWW-доступа к базам данных. Perl эффективен также при обработке произвольных структур данных: отчетов, списков, карточек. Perl является надежным языком программирования, которым до сих пор пользуются многие разработчики.
if ("Hello World" =~ /World/) { print "It matches\n"; }
else { print "It doesn't match\n"; }
ASP .NET
Новейшей версией технологии Active Server Pages является ASP .NET, ключевая в архитектуре Microsoft .NET Framework. Основное отличие этой технологии от ASP заключается в том, что код, присутствующий на Web-странице, не интерпретируется, а компилируется и кэшируется. Это повышает производительность Веб - приложений.
С помощью ASP.NET можно создавать Web-приложения и Web-сервисы, которые не только позволяют реализовать динамическую генерацию HTML-страниц, но и интегрируются с серверными компонентами.
Клиентами Web-сервера может быть и мобильные устройства, отличающиеся ограниченным размером экрана, малым объемом памяти. Для этих устройств существуют свои протоколы передачи. При этом необходимо передавать данные на мобильное устройство в соответствующем формате, для чего нередко создаются специальные сайты (например, поддерживающие WAP и WML). Более удобным представляется создание приложений, которые способны генерировать тот или иной код в зависимости от типа клиента. Именно такой подход и реализован в Microsoft ASP .NET.
PHP
PHP хорошо справляется с задачей написания серверных скриптов и отлично интегрирован в сферу создания сайтов. Его используют в качестве базового языка программирования при создании сайтов, работающих на веб-сервере Apache и Nginx.
Этот язык программирования более простой, чем, технология создания сайтов ASP.NET. Но, в отличие от более строгих языков, в которых присутствует типизация и другие ограничивающие факторы, в этом языке может получаться скрипт, который вроде бы и выполняет необходимый сценарий, но где-нибудь будет появляться то одна, то другая ошибка. В случае с ASP.NET создать конечный продукт, который работал бы с ошибками, трудно. Но и на PHP создают и маленькие сайты, и крупные порталы.
<?php if ($expression) { ?>
<strong>Это истина.</strong> <?php
} else {
?>
<strong>Это ложь.</strong> <?php
}
?>
Технология Ruby On Rails
В последнее время многие стали использовать фреймворк для построения веб-сайтов с каталогом продукции, использующих базы данных, Ruby On Rails. Эта технология совместима со всеми известными вариантами веб-серверов и баз данных. Главным достоинством технологии считают возможность увеличения скорости создания сайтов на 30-40% по сравнению с использованием PHP. Обеспечивается это большим количеством шаблонных библиотек и кода.
Ruby (англ. ruby — рубин) —интерпретируемый высокоуровневый язык объектно-ориентированного программирования вышедший в свет в 1995 году. Создатель Ruby — Юкихиро Мацумото. Целью разработки было создание «настоящего объектно-ориентированного», лёгкого в разработке, интерпретируемого языка программирования. Язык обладает независимой от ОС реализацией многопоточности, строгой динамической типизацией, сборщиком мусора и другими возможностями. Ruby близок по синтаксису к языкам Perl, Smalltalk, Python, Lisp. Сейчас Ruby входит в большинство дистрибутивов ОС Linux и доступен пользователям других операционных систем.
#Gemfile source 'http://rubygems.org' gem 'rails', '3.0.9' gem 'sqlite3' gem 'haml-rails'
Ruby — объектно-ориентированный язык, в котором все данные являются объектами, а. каждая функция — методом. Все переменные в Ruby являются ссылками. Например:
a = "abcdefg"
b = a
b #=> "abcdefg"
a[3] = 'R'
b #=> "abcRefg"
При изменении значения переменной a, неявно изменилось и значение b, так как они содержат ссылку на один объект. Ruby не поддерживает множественное наследование, но вместо него есть мощный механизм примесей. Все классы Ruby выведены из класса Object, следовательно, любой объект может использовать определённые в нём методы.
Ruby поддерживает процедурный стиль (определение функций и переменных вне классов, все глобальные процедуры неявно являются закрытыми методами класса Object), объектно-ориентированный (всё — объект), функциональный (анонимные функции, замыкания, возврат значения всеми инструкциями, возврат функцией последнего вычисленного значения). Он поддерживает отражение, метапрограммирование, информацию о типах переменных на стадии выполнения (динамическая идентификация типа).
Возможности Ruby
Позволяет обрабатывать исключения в стиле Java и Python.
Позволяет переопределять операторы (методы).
Не поддерживает множественное наследование, но может использовать концепцию «примесей», основанную на механизме модулей.
Содержит автоматический сборщик мусора.
Легко позволяет создавать расширения для Ruby на Си.
Поддерживает замыкания с полной привязкой к переменным.
Поддерживает блоки кода ({ … } или do … end).
Целые переменные в Ruby автоматически конвертируются между типами Fixnum (32-разрядные) и Bignum (больше 32 разрядов) в зависимости от их значения, что позволяет производить целочисленные математические расчёты со сколь угодно большой точностью.
Не требует предварительного объявления переменных, но для интерпретатора желательно, чтобы переменным присваивалось пустое значение nil (тогда интерпретатор знает, что идентификатор обозначает переменную, а не имя метода). Язык использует простые соглашения для обозначения области видимости. Пример: просто var — локальная переменная, @var — переменная экземпляра, @@var — переменная класса, $var — глобальная переменная.
В Ruby непосредственно в языке реализованы многие шаблоны проектирования, так, например, «одиночка» (singleton) может быть (хотя и не обязан) реализован добавлением необходимых методов к одному конкретному объекту.
В Ruby есть немало оригинальных решений, редко встречающихся в распространённых языках программирования. Можно добавлять методы не только в любые классы, но и в любые объекты. Например, можно добавить к некоторой строке произвольный метод.
# всё от символа и до конца строки – комментарий
# = является оператором присваивания,
# символы в «"» - строка, которой можно манипулировать
str = "Привет" # здесь создаётся переменная str, типа String
# def - ключевое слово для объявления функции
def str.bye# str. указывает, кому принадлежит метод (по умолчанию Object)
# bye - имя метода, за ним может следовать необязательный,
#заключённый в круглые скобки список параметров
"Пока!"
# из метода возвращается последнее значение- строка
end # ключевым словом end заканчиваются инструкции
# puts - метод,
# str.bye - обращение к методу bye объекта str
# значение, полученное из метода bye передаётся методу puts
# который выводит на экран информацию
puts str.bye #=> Пока!
Этот пример демонстрирует, как в Ruby можно использовать синглтон. В этом примере синглтоном является объект str.
Любая конструкция в Ruby возвращает значение. Например:
# конструкция if вычисляет выражение и, если оно истинно,
# возвращает результат между then и else, иначе между else и end
puts( if 5 > 3 then "Одно" else "Другое" end ) #=> Одно
# происходит присваивание значения переменной var, и
# возвращает значение var, которое выводится на экран
puts( var = 5 ) #=> 5
Контейнеры
Работа с массивами — одна из сильных сторон Ruby. Они автоматически изменяют размер, могут содержать любые элементы, а язык предоставляет мощные средства для их обработки.
# создаём массив
a = [1, 'hi', 3.14, 1, 2, [4, 5] * 3]
# => [1, "hi", 3.14, 1, 2, [4, 5, 4, 5, 4, 5]]
# обращение по индексу
a[2] # => 3.14
# «разворачиваем» внутренние массивы, удаляем одинаковые элементы
a.flatten.uniq # => [1, 'hi', 3.14, 2, 4, 5]
# пытаемся найти индекс элемента со значением 6
a.index(6) # => nil
# неудача: возвращается значение nil
#почти для всех функций предоставляется
# аналог с тем же названием, но заканчивающийся на «!»,
# который модифицирует контейнер
a.flatten! # => [1, "hi", 3.14, 1, 2, 4, 5, 4, 5, 4, 5]
# находим индекс первого элемента со значением 4
a.index(4) # => 5
Процедурные объекты и итераторы
В языке есть 2 эквивалентных способа записи блоков кода:
{ puts "Hello, World!" }
do puts "Hello, World!" end
Сопрограммы применяются с большинством встроенных методов:
File.open('file.txt', 'w') {|file| # открытие файла «file.txt» для записи («w» - write)
file.puts 'Wrote some text.'
} # Конструкция устраняет неопределённость с закрытием файла: закрывается здесь при любом исходе
Следующий пример показывает использование сопрограмм и итераторов для работы с массивами, который показывает краткость записи на Ruby многих достаточно сложных действий (случайно выбираем из последовательности квадратов чисел от «0» до «10» и распечатываем вместе с индексами):
# для работы требуется ruby 1.9
(0..10).collect{|v| v ** 2 }.select{ rand(2).zero? }.map.with_index {|*v| v }
Исключения
Исключения возбуждаются с помощью конструкции raise (или fail), опционально могут быть добавлены текст с сообщением, тип исключения и информация о стеке вызовов:
raise ArgumentError, "Неверный аргумент", caller
# caller - метод, возвращающий текущий стек выполнения
Обрабатываются исключения с использованием конструкции rescue. Опционально можно указать тип обрабатываемого исключения (по умолчанию обрабатываются все) и получение информации. Также можно добавлять блоки else (выполняется если исключения отсутствовали) и ensure (выполняется в любом случае).
begin
# ...
rescue RuntimeError => e
# обрабатываем конкретный тип ошибок
puts e # напечатаем сообщение об ошибке
rescue
# можно писать rescue => e чтобы получить объект исключения
# обрабатываем все исключения
else
# сработает, если исключений не было
ensure
# сработает в любом случае
end
Для Ruby существуют несколько реализаций: официальный интерпретатор, написанный на Си, JRuby — реализация для Java, интерпретатор для платформы .NET IronRuby, Rubinius — написанная в основном на Ruby и базирующаяся на идеях Smalltalk-80 VM,
С официальной версией интерпретатора Ruby поставляется командная оболочка Ruby (Interactive Ruby Shell). Запускаемая командой irb в окне терминала (интерфейсе командной строки), она позволяет тестировать код программы очень быстро (построчно):
Имитацию irb можно запустить непосредственно в браузере.
В поставке дистрибутива One-Click Installer для Windows, поставляется утилита fxri, которая включает в себя справочную систему (ri) и интерактивный интерпретатор (irb).
Стандартная библиотека и расширения
Кроме мощных возможностей, встроенных в язык, Ruby поставляется с большой стандартной библиотекой, которая включает библиотеки для работы с различными сетевыми протоколами на стороне сервера и клиента, средства для работы с различными форматами представления данных (XML, XSLT, YAML, PDF, RSS, CSV, WSDL). Также есть библиотеки для работы с архивами, датами, кодировками, матрицами, средства для системного администрирования, распределённых вычислений, поддержки многопоточности.
В языке Ruby осуществлён простой и удобный механизм для расширения языка с помощью библиотек, написанных на Си.
Для унифицированного доступа к базам данных разработана библиотека Ruby DBI (поддерживает SQLite, Oracle, ODBC, MySQL, DB2, MS SQL, InterBase, ADO и др.). Также существуют библиотеки для конкретных баз данных, поддерживающих специфические для них операции. Реализована библиотека для работы с OpenGL, позволяющая программировать трёхмерную графику. Win32utils — позволяет обращаться к специфическим возможностям Win32 API. Rmagick — библиотека для работы с изображениями, поддерживающая более 90 форматов (основана на ImageMagick и GraphicsMagick). Библиотека Ruport (Ruby reports) предназначена для лёгкой реализации отчётов и создания диаграмм на основе данных из БД или прямо из текстовых файлов CSV. Причём результаты можно сохранять в форматах PDF, HTML, CSV и TXT.
Большинство расширений распространяются под свободными лицензиями (LGPL, лицензия Ruby) и могут быть использованы в любом проекте практически без ограничений.
Система RDoc предназначена для автоматического извлечения документации из исходных кодов и программ на Ruby и её дальнейшей обработки. Является стандартом для подготовки документации по программному обеспечению, написанному на Ruby. Онлайн-документация доступна на сайте http://www.ruby-doc.org.
Python
Технология Python также довольно популярна в среде веб-разработчиков. В данном случае также существуют объемные готовые библиотеки, облегчающие задачу по созданию промо-сайтов. В целом же Python является многофункциональным языком программирования, с помощью которого можно создавать пользовательские веб-приложения, сценарии для веб-серверов и многое другое.
def myWonderfulMethod(): return "Некоторый метод" myWonderfulMethod = staticmethod(myWonderfulMethod)
ASP.NET -
Создание веб-сайта требует использования различных технологий: графический дизайн, верстка HTML, программирование клиентской части — интерфейс пользователя, и программирование серверной части. Microsoft ASP.NET представляет собой комплексную технологию серверного программирования со встроенными средствами создания интерфейса пользователя.
Достоинства ASP.NET
Объектно-ориентированный подход.
Поддержка визуальных компонентов, инкапсулирующих не только вывод HTML, но и Javascript и даже AJAX. Кроме встроенных, существуют компоненты сторонних производителей. Есть возможность наследовать свой компонент от чужого и улучшать его, адаптируя под свои потребности.
Встроенные визуальные компоненты для редактирования и отображения данных, навигации, авторизации и т.д.
Встроенные средства кэширования, мониторинга, позволяющие повысить производительность и масштабируемость приложений.
Полноценный компилируемый язык программирования (C#, VB.NET, Delphi, J#)
Удобная среда разработки и отладки приложений
Шаблоны дизайна, пользовательские элементы управления, модель codebehind — позволяют не только отделить программный код от представления, но и использовать многократно один и тот же код.
Встроенная авторизация и аутентификация.
Встроенная поддержка веб-сервисов
Расширяемая архитектура, основанная на провайдерах в таких областях как:
Авторизация
Хранение файлов
Компиляция
Сессия
Усовершенствованная архитектура доступа к данным ADO.NET
Встроенная поддержка локализации сайтов (многоязычность)
ASP NET - технология разработки веб сайтов любой сложности
ASP NET - технология создания веб сайтов от компании Майкрософт. На данный момент последней версией этой технологии является ASP.NET 4.0. Разработчики пишут код для ASP.NET, используя языки программирования C# или Visual Basic.NET. При первом обращении к странице сайта, созданного на ASP NET, код компилируется и помещается в специальный кэш, поэтому впоследствии не требует затрат времени на парсинг, оптимизацию, и т. д. Вследствие ASP.NET имеет преимущество в скорости по сравнению со скриптовыми технологиями (Perl, Python, PHP, Ruby).
В ASP NET встроена поддержка AJAX. Создание сайта на ASP NET ведется в среде разработки Visual Web Developer, которая позволяет большинство ошибок отлавливать ещё на стадии разработки. ASP.NET позволяет создавать сайты со сложной бизнес-логикой. Применять ASP.NET для небольших проектов не всегда рационально. На ASP.NET делают сайты финансовых организаций ( http://www.webmoney.ru/) и большинство банковских сайтов.
|
Платформа ASP.NET2/MS SQL Server 2005 стала платформой для создания очень больших корпоративных порталов и систем. C# (Си-шарп) — объектно-ориентированный язык программирования для платформы .NET. Разработан в 2000 году Андерсом Хейлсбергом, Скоттом Вилтамутом и Питером Гольде под эгидой Microsoft Research. Основным постулатом С# является высказывание: "всякая сущность есть объект". Язык основан на строгой компонентной архитектуре и реализует передовые механизмы обеспечения безопасности кода. C# был создан специально для технологии ASP.NET. В то же время, на C# полностью написана и сама ASP.NET. C# — это полнофункциональный объектно-ориентированный язык, который поддерживает все три «столпа» объектно-ориентированного программирования: инкапсуляцию, наследование и полиморфизм. Он имеет прекрасную поддержку компонентов, надежен и устойчив благодаря использованию «сборки мусора», обработки исключений, безопасности типов. Язык C# разрабатывался "с нуля" и вобрал в себя много полезных свойств таких языков, как C++, Java, Visual Basic, Delphy и др. Как и Java, C# разрабатывался специально для Интернет Примерно 75 процентов его синтаксических возможностей аналогичны языку программирования Java, его также называют «очищенной версией Java». Третья версия языка C# была представлена в 2005г. |
