<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wikicshse.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%92%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80_%D1%81_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C%D1%8E_CGI</id>
	<title>Веб-сервер с функциональностью CGI - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wikicshse.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%92%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80_%D1%81_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C%D1%8E_CGI"/>
	<link rel="alternate" type="text/html" href="https://wikicshse.ru/index.php?title=%D0%92%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80_%D1%81_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C%D1%8E_CGI&amp;action=history"/>
	<updated>2026-06-06T18:17:42Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wikicshse.ru/index.php?title=%D0%92%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80_%D1%81_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C%D1%8E_CGI&amp;diff=2098&amp;oldid=prev</id>
		<title>imported&gt;Vyacovlev: Migrated current public revision from wiki.cs.hse.ru</title>
		<link rel="alternate" type="text/html" href="https://wikicshse.ru/index.php?title=%D0%92%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80_%D1%81_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C%D1%8E_CGI&amp;diff=2098&amp;oldid=prev"/>
		<updated>2015-12-19T12:18:31Z</updated>

		<summary type="html">&lt;p&gt;Migrated current public revision from wiki.cs.hse.ru&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Метаданные ==&lt;br /&gt;
ID проекта: &amp;#039;&amp;#039;&amp;#039;cgi&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Презентация проекта: http://1drv.ms/1VmeBQ0&lt;br /&gt;
&lt;br /&gt;
Ментор проекта: Виктор Яковлев&lt;br /&gt;
&lt;br /&gt;
Аккаунты ментора в git-сервисах:&lt;br /&gt;
&lt;br /&gt;
* [http://GitHub.com GitHub.com]: victor-yacovlev&lt;br /&gt;
* [http://GitLab.com GitLab.com]: v-yacovlev&lt;br /&gt;
* [http://BitBucket.org BitBucket.org]: victor_yacovlev&lt;br /&gt;
&lt;br /&gt;
== Что это за проект ==&lt;br /&gt;
&lt;br /&gt;
=== Введение ===&lt;br /&gt;
Веб-серверы - это программы, которые работают на физических серверах и обеспечивают выдачу содержимого браузерам.&lt;br /&gt;
&lt;br /&gt;
Common Gateway Interface (CGI) - простой интерфейс взаимодействия между веб-сервером и сторонними программами, генерирующими&lt;br /&gt;
динамический контент. В отличии от веб-фреймворков, используется там, где нужна очень простая функциональность.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Что требуется ===&lt;br /&gt;
Реализовать веб-сервер, функционально аналогичный старым версиям Apache.&lt;br /&gt;
&lt;br /&gt;
Требования к серверу:&lt;br /&gt;
&lt;br /&gt;
1. Обслуживать много клиентов&lt;br /&gt;
&lt;br /&gt;
2. Уметь выполнять CGI-программы и выдавать динамический контент&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Чему вы научитесь (помимо разработки очередного велосипеда) ==&lt;br /&gt;
1. Устройство протокола HTTP, работа с заголовками и запросами&lt;br /&gt;
&lt;br /&gt;
2. Основам параллельного программирования&lt;br /&gt;
&lt;br /&gt;
3. Умение разрабатывать программы для Unix-подобных систем и ориентироваться в POSIX API&lt;br /&gt;
&lt;br /&gt;
== Начальные требования ==&lt;br /&gt;
1. Умение разрабатывать программы на Cи или C++&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Критерии оценивания ==&lt;br /&gt;
&lt;br /&gt;
=== Первая контрольная точка (24 октября 2015 г.) ===&lt;br /&gt;
Необходимо иметь git-репозиторий с проектом, в который приглашен ментор. В репозитории должно быть:&lt;br /&gt;
* Файл README.md, который содержит описание проекта, написанный в расчета на &amp;quot;конечного пользователя&amp;quot;. Это описание должно быть написано &amp;#039;&amp;#039;&amp;#039;самостоятельно&amp;#039;&amp;#039;&amp;#039;, а не скопировано из Wiki, и отражать Ваше понимание того, что нужно сделать.&lt;br /&gt;
* Реализацию TCP-сервера, который при запуске создает сокет, принимает хотя бы по одному соединению одновременно, и выводит в качестве отладочной информации (на стандартный поток вывода или стандартный поток ошибок) данные, который ему передает клиент (для тестирования можно использовать программу telnet).&lt;br /&gt;
* Для тех, кто реализует проект на Си/C++, - проектный файл CMakeLists.txt.&lt;br /&gt;
&lt;br /&gt;
=== Вторая контрольная точка (14 ноября 2015 г.) ===&lt;br /&gt;
Необходимо иметь режиме веб-сервер, который умеет выдавать статические страницы и запускать сторонные CGI-программы с помощью fork().&lt;br /&gt;
&lt;br /&gt;
=== Итоговая оценка ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;4 балла&amp;#039;&amp;#039;&amp;#039;. Реализован веб-сервер, который умеет выдавать статические страницы и обслуживать одновременно несколько подключений&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;6 баллов&amp;#039;&amp;#039;&amp;#039;. Помимо выдачи статического содержимого, сервер умеет выполнять сторонние программы и выдавать результат их работы&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;9 баллов&amp;#039;&amp;#039;&amp;#039;. Реализована функциональность прерывания работы и изоляции потенциально опасных CGI-скриптов.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;+1 балл&amp;#039;&amp;#039;&amp;#039;. Реализована поддержка POST-запросов&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;+1 балл&amp;#039;&amp;#039;&amp;#039;. Сервер оформлен в виде системной службы для systemd&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;+2 балла&amp;#039;&amp;#039;&amp;#039;. Использование как многопроцессной, так и многопоточной работы для обеспечения оптимального использования системных ресурсов&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;+2 балла&amp;#039;&amp;#039;&amp;#039;. Реализация обработки запросов с помощью очереди ядра.&lt;br /&gt;
&lt;br /&gt;
== Дополнительные материалы и методические указания ==&lt;br /&gt;
&lt;br /&gt;
* Описание протокола HTTP на русском языке [https://ru.wikipedia.org/wiki/HTTP]&lt;br /&gt;
&lt;br /&gt;
* Описание работы с CGI: [http://www.cgi101.com/book/ch3/text.html]&lt;br /&gt;
&lt;br /&gt;
=== Материалы с семинаров 07 и 28 ноября 2015 ===&lt;br /&gt;
Материалы выложены на [https://yadi.sk/d/Xt1TOvAkkoMcf Яндекс.Диске]&lt;/div&gt;</summary>
		<author><name>imported&gt;Vyacovlev</name></author>
	</entry>
</feed>