SlideShare a Scribd company logo
Стажировка-2014
Web-приложения
Занятие 6 (часть 1)
Стажировка-2014
• У каждого узла есть IP-адрес
• У сайтов – доменные имена
• DNS (Domain Name System) –
иерархическая структура
серверов
Иерархическая адресация,
стек TCP/IP
Стажировка-2014
Domain Name System
Стажировка-2014
Архитектура клиент-сервер
Стажировка-2014
Архитектура клиент-сервер
Стажировка-2014
HTTP (HyperText Transfer Protocol)
– протокол передачи гипертекста
• Работает поверх TCP/IP
• Адрес узла – URL
• Не сохраняет промежуточное
состояние
https://ru.wikipedia.org/wiki/HTTP
Протокол HTTP
Стажировка-2014
Каждый HTTP-запрос состоит
из 3-х частей:
1. Тип запроса, протокол, URI,
параметры
2. Заголовки
3. Тело запроса
Структура протокола HTTP
Стажировка-2014
Запрос клиента
GET /news/recent HTTP/1.1
Host: www.example.com
Структура протокола HTTP
Стажировка-2014
• GET
• POST
• PUT
• DELETE
• …и остальные
HTTP-методы
Стажировка-2014
Коды состояния HTTP
Код состояния = код ответа +
поясняющая фраза
200 – OK
404 – Not Found
Список кодов состояния HTTP
Стажировка-2014
Заголовки HTTP
Заголовки HTTP (HTTP Headers) -
это строки в HTTP-сообщении,
содержащие разделённую
двоеточием пару имя-значение.
http://ru.wikipedia.org/wiki/Заголовки_HTTP
Стажировка-2014
Примеры HTTP заголовков
• General Headers (Cache-Control,
Date)
• Request Headers (Referer, User
Agent)
• Response Headers (Age, ETag)
• Entity Headers (Content-Language,
Content-Encoding)
Стажировка-2014
Заголовки HTTP
Пример запроса:
GET /wiki/страница HTTP/1.1
Host: ru.wikipedia.org
User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru;
rv:1.9b5) Gecko/2008050509 Firefox/3.0b5
Accept: text/html
Connection: close
(пустая строка)
Стажировка-2014
Заголовки HTTP
Пример ответа:
HTTP/1.1 200 OK
Date: Wed, 11 Feb 2009 11:20:59 GMT
Server: Apache
X-Powered-By: PHP/5.2.4-2ubuntu5wm1
Last-Modified: Wed, 11 Feb 2009 11:20:59 GMT
Content-Language: ru
Content-Type: text/html; charset=utf-8
Content-Length: 1234
Connection: close
(пустая строка)
Стажировка-2014
Cookie и сессии
Cookie – небольшой фрагмент
данных, отправленный сервером
и хранимый на компьютере
пользователя.
Стажировка-2014
Инструменты разработчика
Firebug (встроен в Firefox Nightly):
Стажировка-2014
Инструменты разработчика
Chrome developer tools:
Стажировка-2014
Сервера
Веб-сервер (HTTP-сервер):
это сервер, принимающий
HTTP запросы от клиентов, и
выдающий им HTTP-ответы
(веб-страницы в HTML,
изображения, файлы)
Стажировка-2014
Сервера
HTTP-сервера:
• Apache
• Nginx
• Lighttpd
• Microsoft IIS
• Cherokee
Стажировка-2014
Сервера
Особенности Apache:
• Система модулей для языков
• Механизм виртуальных
хостов для портов
• Язык для описания конфигов
https://ru.wikipedia.org/wiki/Apache
Стажировка-2014
Сервера
Установка Apache на Ubuntu:
sudo apt-get install apache2 php5
/etc/apache2/ports.conf
/etc/apache2/sites-available/
/etc/apache2/sites-enabled/
Стажировка-2014
Сервера
Пример Apache для статики:
<VirtualHost *:80>
DocumentRoot /var/www/demo
ServerName www.example.com
</VirtualHost>
Стажировка-2014
Сервера
Особенности Nginx:
• Асинхронная обработка
запросов
• Использует потоки вместо
процессов
• Идеален для статики
https://ru.wikipedia.org/wiki/Nginx
Стажировка-2014
Сервера
Установка Nginx на Ubuntu:
sudo apt-get install nginx
/etc/nginx/nginx.conf
/etc/nginx/sites-available/
/etc/nginx/sites-enabled/
Стажировка-2014
Сервера
Пример Nginx для статики:
server {
listen 80;
server_name example.com;
root /var/www/nginx;
location / {
#…
}
}
Стажировка-2014
Сервера
Сервера приложений:
• Apache Tomcat (Java)
• Phusion Passenger (Ruby, Python,
Node.js)
• Unicorn, thin (Ruby)
• gUnicorn, uWSGI (Python)
Стажировка-2014
Выбор инструмента
ruby
java
python
erlang
javascript
php
c#
scala go perl
c
c++
groovy
clojure
Стажировка-2014
Выбор инструмента
Rails, Sinatra
Spring
Django, Flask, Pyramid
Nitrogen
node.js
Zend, symfony
Asp.net
Play Revel
Grails
Стажировка-2014
Выбор инструмента
Возможные задержки при загрузке
страниц в вебе:
• задержки соединения
• загрузка статики
• запросы к базам данных
• скорость выполнения на сервере
• скорость обработки страницы в
браузере
Стажировка-2014
Выбор инструмента
Что зависит от выбора языка и
фреймворка:
• Скорость выполнения на
сервере
• Эффективность разработки
• Эффективность поддержки
Стажировка-2014
Выбор инструмента
Лучшего языка или
фреймворка не существует!
Каждой задаче – свой
инструмент.

More Related Content

PPTX
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
7bits
 
PPTX
Стажировка-2013, разработчики, занятие 7. Web, HTTP
7bits
 
PPTX
Cпецкурс 2014, занятие 7. Web-приложения
7bits
 
PPTX
04 web server_deployment_ru
mcroitor
 
PPTX
06 php instalation_ru
mcroitor
 
PPTX
07 virtual hosts_ru
mcroitor
 
PDF
HTTP протокол
lectureswww lectureswww
 
PDF
Анатомия веб-сервиса (РИТ-2014)
Andrey Smirnov
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
7bits
 
Стажировка-2013, разработчики, занятие 7. Web, HTTP
7bits
 
Cпецкурс 2014, занятие 7. Web-приложения
7bits
 
04 web server_deployment_ru
mcroitor
 
06 php instalation_ru
mcroitor
 
07 virtual hosts_ru
mcroitor
 
HTTP протокол
lectureswww lectureswww
 
Анатомия веб-сервиса (РИТ-2014)
Andrey Smirnov
 

What's hot (20)

PPT
REST
Dmitry Buzdin
 
PPTX
03 web server_architecture_ru
mcroitor
 
PDF
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Ontico
 
PDF
Консольные приложения на Go
Andrey Smirnov
 
PDF
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
OpenVZ
 
PPTX
Основы Java. 4. Web
Sergey Nemchinsky
 
PDF
Клиентские приложения под нагрузкой (HighLoad 2014)
Andrey Smirnov
 
PPTX
High Availability в жизни обычного разработчика
Sumy PHP User Grpoup
 
PDF
Анатомия веб сервиса (HighLoad-2014)
Andrey Smirnov
 
PPT
Видеохостинг своими руками
StanislavMalkin
 
PPT
Загрузка, обработка, хранение и отдача статики
Kirill Mokevnin
 
PPTX
Евгений Потапов (Сумма Айти)
Ontico
 
PDF
05 - Web-технологии. Сетевые протоколы
Roman Brovko
 
PDF
Курс высокие нагрузки: сеть (отрывок)
Andrey Smirnov
 
PDF
UCloud™- примеры использования облака
ucloud
 
PDF
Архитектура хранения фотографий в Badoo
Badoo Development
 
PPTX
Intercepter-NG: сниффер нового поколения
Positive Hack Days
 
PDF
Обзор Redis storage / Symfony Camp UA 2011
Igor Brovchenko
 
PDF
Twisted Framework - сетевые приложения в Python
Andrey Smirnov
 
03 web server_architecture_ru
mcroitor
 
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Ontico
 
Консольные приложения на Go
Andrey Smirnov
 
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
OpenVZ
 
Основы Java. 4. Web
Sergey Nemchinsky
 
Клиентские приложения под нагрузкой (HighLoad 2014)
Andrey Smirnov
 
High Availability в жизни обычного разработчика
Sumy PHP User Grpoup
 
Анатомия веб сервиса (HighLoad-2014)
Andrey Smirnov
 
Видеохостинг своими руками
StanislavMalkin
 
Загрузка, обработка, хранение и отдача статики
Kirill Mokevnin
 
Евгений Потапов (Сумма Айти)
Ontico
 
05 - Web-технологии. Сетевые протоколы
Roman Brovko
 
Курс высокие нагрузки: сеть (отрывок)
Andrey Smirnov
 
UCloud™- примеры использования облака
ucloud
 
Архитектура хранения фотографий в Badoo
Badoo Development
 
Intercepter-NG: сниффер нового поколения
Positive Hack Days
 
Обзор Redis storage / Symfony Camp UA 2011
Igor Brovchenko
 
Twisted Framework - сетевые приложения в Python
Andrey Smirnov
 
Ad

Viewers also liked (20)

PPTX
Стажировка-2015. Тестирование. Занятие 2. Планирование процесса тестирования.
7bits
 
PPTX
Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.
7bits
 
PPTX
Стажировка-2014, занятие 6 (часть 2). Транзакции в БД
7bits
 
PPTX
Стажировка-2014, занятие 8. Обзор Rails framework (Ruby)
7bits
 
PPTX
Стажировка-2015. Разработка. Занятие 4. Системы контроля версий
7bits
 
PDF
Стажировка-2015. Дизайн. Занятие 4 (2 часть). Цвет в web-дизайне
7bits
 
PDF
Стажировка 2015. Разработка. Занятие 5. Использование nginx
7bits
 
PDF
Стажировка 2015. Дизайн. Занятие 1. История дизайна, тренды 2015, логотипы.
7bits
 
PDF
Стажировка 2015. Разработка. Занятие 6. Адаптивная верстка
7bits
 
PPT
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
7bits
 
PPTX
Спецкурс 2014, занятие 9 (2 часть). Code conventions and best practices
7bits
 
PPTX
Стажировка-2015. Разработка. Занятие 10 (часть 1). Конфиги, сборка, автотесты
7bits
 
PPTX
Спецкурс 2014, занятие 5 (часть 2). Git, GitHub и Open source
7bits
 
PDF
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
7bits
 
PPTX
Стажировка-2015. Разработка. Занятие 12. Транзакции в БД, работа с БД из прил...
7bits
 
PPTX
Курс Java-2016. Занятие 05. Тестирование и Java
7bits
 
PPTX
Стажировка-2014, занятие 11. MVP, метод прогрессивного JPEG, Story mapping, A...
7bits
 
PPTX
Стажировка-2014, занятие 10. Бизнес-модели и Lean startup.
7bits
 
PPTX
Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)
7bits
 
PDF
Стажировка 2015. Разработка. Занятие 9. BEM
7bits
 
Стажировка-2015. Тестирование. Занятие 2. Планирование процесса тестирования.
7bits
 
Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.
7bits
 
Стажировка-2014, занятие 6 (часть 2). Транзакции в БД
7bits
 
Стажировка-2014, занятие 8. Обзор Rails framework (Ruby)
7bits
 
Стажировка-2015. Разработка. Занятие 4. Системы контроля версий
7bits
 
Стажировка-2015. Дизайн. Занятие 4 (2 часть). Цвет в web-дизайне
7bits
 
Стажировка 2015. Разработка. Занятие 5. Использование nginx
7bits
 
Стажировка 2015. Дизайн. Занятие 1. История дизайна, тренды 2015, логотипы.
7bits
 
Стажировка 2015. Разработка. Занятие 6. Адаптивная верстка
7bits
 
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
7bits
 
Спецкурс 2014, занятие 9 (2 часть). Code conventions and best practices
7bits
 
Стажировка-2015. Разработка. Занятие 10 (часть 1). Конфиги, сборка, автотесты
7bits
 
Спецкурс 2014, занятие 5 (часть 2). Git, GitHub и Open source
7bits
 
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
7bits
 
Стажировка-2015. Разработка. Занятие 12. Транзакции в БД, работа с БД из прил...
7bits
 
Курс Java-2016. Занятие 05. Тестирование и Java
7bits
 
Стажировка-2014, занятие 11. MVP, метод прогрессивного JPEG, Story mapping, A...
7bits
 
Стажировка-2014, занятие 10. Бизнес-модели и Lean startup.
7bits
 
Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)
7bits
 
Стажировка 2015. Разработка. Занятие 9. BEM
7bits
 
Ad

Similar to Стажировка-2014, занятие 6 (часть 1). Web-приложения (20)

PPTX
Lesson1
jinol
 
PDF
Курс Java-2016. Занятие 09. Web
7bits
 
PPTX
Web servers
Dmitrii Stoian
 
PDF
Вячеслав Бирюков - HTTP и HTTPS
Yandex
 
PDF
Стажировка 2016-07-12 02 Денис Нелюбин. Web, HTTP, TCP/IP
SmartTools
 
PPT
PHP
Vasya Petrov
 
PPT
Web весна 2013 лекция 1
Technopark
 
PDF
Стажировка-2015. Разработка. Занятие 3. Серверные Java-приложения
7bits
 
PDF
Разработка мобильного и веб интерфейса для Caché
InterSystems CEE
 
PDF
Phalcon - самый быстрый PHP Framework
Oleksandr Torosh
 
PPTX
Платформа .NET Core глазами PHP-разработчика
Георгий Драк
 
PDF
Ян Жабин "Преимущества использования протокола HTTP/2"
Provectus
 
PPTX
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Ekaterina Kuchinskaya
 
PPTX
Введение в Web-технологии
Eugen Dashkovsky
 
PPTX
Введение в курс
Eugen Dashkovsky
 
PDF
Web and mobile development for intersystems caché, Eduard Lebedyuk
InterSystems
 
PPTX
Мировые информационные ресурсы. Лекция 3
Dmitriy Krukov
 
ODP
Nginx Igor Sysoev
Media Gorod
 
PDF
15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...
Vladislav Morgun
 
PPTX
Impress Application Server for node.js (ru)
Timur Shemsedinov
 
Lesson1
jinol
 
Курс Java-2016. Занятие 09. Web
7bits
 
Web servers
Dmitrii Stoian
 
Вячеслав Бирюков - HTTP и HTTPS
Yandex
 
Стажировка 2016-07-12 02 Денис Нелюбин. Web, HTTP, TCP/IP
SmartTools
 
Web весна 2013 лекция 1
Technopark
 
Стажировка-2015. Разработка. Занятие 3. Серверные Java-приложения
7bits
 
Разработка мобильного и веб интерфейса для Caché
InterSystems CEE
 
Phalcon - самый быстрый PHP Framework
Oleksandr Torosh
 
Платформа .NET Core глазами PHP-разработчика
Георгий Драк
 
Ян Жабин "Преимущества использования протокола HTTP/2"
Provectus
 
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Ekaterina Kuchinskaya
 
Введение в Web-технологии
Eugen Dashkovsky
 
Введение в курс
Eugen Dashkovsky
 
Web and mobile development for intersystems caché, Eduard Lebedyuk
InterSystems
 
Мировые информационные ресурсы. Лекция 3
Dmitriy Krukov
 
Nginx Igor Sysoev
Media Gorod
 
15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...
Vladislav Morgun
 
Impress Application Server for node.js (ru)
Timur Shemsedinov
 

More from 7bits (20)

PDF
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
7bits
 
PDF
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
7bits
 
PDF
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
7bits
 
PDF
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
7bits
 
PDF
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
7bits
 
PDF
Goodbye, IT-loft! Тараканов Алексей: Идеология в IT
7bits
 
PPTX
Курс Java-2016. Занятие 13. Spring
7bits
 
PDF
Курс Java-2016. Занятие 12. DBMS, JDBC
7bits
 
PDF
Курс Java-2016. Занятие 11. Servlets, JSP
7bits
 
PDF
Курс Java-2016. Занятие 10. Reflection, mock
7bits
 
PDF
Курс Java-2016. Занятие 08. Итераторы, многопоточность
7bits
 
PDF
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
7bits
 
PDF
Курс Java-2016. Занятие 04 (часть 2). Git и GitHub
7bits
 
PDF
Курс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
7bits
 
PPTX
курс Java 2016. занятие 03. интерфейсы, generic, исключения
7bits
 
PPTX
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
7bits
 
PPTX
Курс Java-2016. Занятие 01. Введение в Java как технологию
7bits
 
PPTX
Спецкурс-2015. Занятие 05. Системы контроля версий
7bits
 
PPTX
Спецкурс-2015. Занятие 04 (часть 2). Обработка исключительных ситуаций, запи...
7bits
 
PPTX
Спецкурс-2015. Занятие 04 (часть 1). Конфигурации, сборка проекта, автоматизи...
7bits
 
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
7bits
 
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
7bits
 
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
7bits
 
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
7bits
 
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
7bits
 
Goodbye, IT-loft! Тараканов Алексей: Идеология в IT
7bits
 
Курс Java-2016. Занятие 13. Spring
7bits
 
Курс Java-2016. Занятие 12. DBMS, JDBC
7bits
 
Курс Java-2016. Занятие 11. Servlets, JSP
7bits
 
Курс Java-2016. Занятие 10. Reflection, mock
7bits
 
Курс Java-2016. Занятие 08. Итераторы, многопоточность
7bits
 
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
7bits
 
Курс Java-2016. Занятие 04 (часть 2). Git и GitHub
7bits
 
Курс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
7bits
 
курс Java 2016. занятие 03. интерфейсы, generic, исключения
7bits
 
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
7bits
 
Курс Java-2016. Занятие 01. Введение в Java как технологию
7bits
 
Спецкурс-2015. Занятие 05. Системы контроля версий
7bits
 
Спецкурс-2015. Занятие 04 (часть 2). Обработка исключительных ситуаций, запи...
7bits
 
Спецкурс-2015. Занятие 04 (часть 1). Конфигурации, сборка проекта, автоматизи...
7bits
 

Стажировка-2014, занятие 6 (часть 1). Web-приложения