Назначение cgi программы это

Данная спецификация определяет стандартный способ обмена данными между прикладной программой и HTTP-сервером. Спецификация была предложена для сервера NCSA и является основным средством расширения возможностей обработки запросов клиентов HTTP-сервером.

В CGI имеет смысл выделить следующие основные моменты:

  • понятие CGI-скрипта ;
  • типы запросов;
  • механизмы приема данных скриптом;
  • механизм генерации отклика скриптом.

Основное назначение CGI — обработка данных из HTML-форм. В настоящее время область применения CGI гораздо шире.

Понятие CGI-скрипта

CGI-скриптом называют программу, написанную на любом языке программирования или командном языке, которая осуществляет обмен данными с HTTP-сервером в соответствии со спецификацией Common Gateway Interface .

Наиболее популярными языками для разработки скриптов являются Perl и С.

Типы запросов

Различают два типа запросов к CGI-скриптам : по методу GET и по методу POST . В свою очередь, запросы по методу GET подразделяются на запросы по типам кодирования: isindex и form-urlencoded , а запросы по методу POST — multipart/form-data и form-urlencoded .

С ЧЕГО НАЧАТЬ ИЗУЧЕНИЕ 3D | CGI

В запросах по методу GET данные от клиента передаются скрипту в переменной окружения QUERY_STRING . В запросах по методу POST данные из формы передаются в потоке стандартного ввода скрипта. При передаче через поток стандартного ввода в переменной окружения CONTENT_LENGTH указывается число передаваемых символов.

Запрос типа ISINDEX — это запрос вида:

http://intuit.ru/somthing-cgi/cgi-script?word1+word2+word3

Главным здесь является список слов после символа «?». Слова перечисляются через символ » + » и для кириллицы в шестнадцатеричные последовательности не кодируются. Последовательность слов после символа » ?» будет размещена в переменной окружения QUERY_STRING .

Запрос типа form-urlencoded — это запрос вида:

http://intuit.ru/somthing-cgi/cgi-script?field=word1 имя_поля=значение «, которые разделены символом » .

Приведенный пример — это обращение к скрипту по методу GET . Все символы после «?» попадут в переменную окружения QUERY_STRING . При этом если в значениях полей появляется кириллица или специальные символы, то они заменяются шестнадцатиричным кодом символа, который следует за символом » % «.

При обращении к скрипту по методу POST данные после символа » ?» не будут размещаться в QUERY_STRING , а будут направлены в поток стандартного ввода скрипта. В этом случае количество символов в потоке стандартного ввода скрипта будет указано в переменной окружения CONTENT_LENGTH .

При запросе типа multipart/form-data применяется составное тело HTTP-сообщения, которое представляет собой данные, введенные в форме, и данные присоединенного внешнего файла. Это тело помещается в поток стандартного ввода скрипта. При этом к данным формы применяется кодирование как в form-urlencoded , а данные внешнего файла передаются как есть.

Что такое CGI?

Механизмы приема данных скриптом

Скрипт может принять данные от сервера тремя способами:

  • через переменные окружения;
  • через аргументы командной строки;
  • через поток стандартного ввода.

При описании этих механизмов будем считать, что речь идет об обмене данными с сервером Apache для платформы Unix.

Переменные окружения

При вызове скрипта сервер выполняет системные вызовы fork и exec . При этом он создает среду выполнения скрипта, определяя ее переменные. В спецификации CGI определены 22 переменные окружения. При обращении к скрипту разными методами и из различных контекстов реальные значения принимают разные совокупности этих переменных. Например, при обращении по методу POST переменная QUERY_STRING не имеет значения, а по методу GET — имеет. Другой пример — переменная окружения HTTP_REFERER . При переходе по гипертекстовой ссылке она определена, а если перейти по значению поля location или через JavaScript-программу, то HTTP_REFERER определена не будет.

Получить доступ к переменным окружения можно в зависимости от языка программирования следующим образом:

#Perl $a = $ENV; . // C a = getenv(«CONTENT_LENGTH»);

В случае доступа к скрипту по методу GET данные, которые передаются скрипту, размещаются в переменной окружения QUERY_STRING .

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

Как ни странно звучит, но у CGI-скрипта может быть такой элемент операционного окружения как командная строка. Это не означает, что скрипт реально можно вызвать из командной строки через сервер. Тем не менее получить доступ к содержанию командной строки скрипта можно с помощью тех же функций, что и при вызове его из-под интерактивной оболочки:

В обоих примерах показана распечатка аргументов командной строки для программ на Perl и C соответственно.

Аргументы командной строки появляются только в запросах типа ISINDEX .

Поток стандартного ввода

Ввод данных в скрипт через поток стандартного ввода осуществляется только при использовании метода доступа к ресурсу (скрипту) POST . При этом в переменную окружения CONTENT_LENGTH помещается число символов, которое необходимо считать из потока стандартного ввода скрипта, а в переменную окружения CONTENT_TYPE помещается тип кодирования данных, которые считываются из потока стандартного ввода.

Читайте также:
Программа для анализа идей

При посимвольном считывании в C можно применить, например, такой фрагмент кода:

int n; char *buf; n= atoi(getenv(«CONTENT_LENGTH»)); buf = (char *) malloc(n+1); memset(buf,’00′,n+1); for(i=0;i free(buf);

В данном фрагменте применено динамическое размещение памяти в скрипте, поэтому при выходе из него память следует освободить. Вообще говоря, память будет автоматически освобождена операционной системой после завершения скрипта. Однако, если переносить скрипт на спецификацию FCGI (Fast CGI), что требует минимума переделок, из-за неаккуратной работы с памятью могут возникнуть проблемы.

Механизм генерации отклика скриптом

Существует только один способ вернуть данные серверу и, соответственно, браузеру пользователя — писать в поток стандартного вывода (STDOUT). При этом скрипт должен формировать HTTP-сообщение.

Сначала выводятся директивы HTTP-заголовка. В минимальном варианте это либо

Content-type: text/html,

Источник: intuit.ru

Общий шлюзовый интерфейс (CGI)

Common Gateway Interface (CGI, рус. Общий шлюзовый интерфейс) — это стандартный метод динамического управления содержимым веб-страниц с помощью специальных программ, выполняющихся на стороне веб-сервера. Эти программы называются CGI-обработчики или шлюзы, но чаще — CGI-скрипты, т.к. обычно они пишутся на скриптовых языках, в основном на Perl.

Поскольку гипертекст статичен по своей природе, веб-страница не может непосредственно взаимодействовать с пользователем. До появления JavaScript, не было иной возможности отреагировать на действия пользователя, кроме как передать введенные им данные на веб-сервер для дальнейшей обработки. В случае CGI эта обработка осуществляется с помощью внешних программ и скриптов, обращение к которым выполняется через стандартизованный (см. RFC 3875: CGI Version 1.1) интерфейс — общий шлюз. Упрощенная модель, иллюстрирующая работу CGI, приведена на рис. 1.

Common Gateway Interface

Рис. 1. Общий принцип работы CGI

Как работает CGI?

Обобщенный алгоритм работы через CGI можно представить в следующем виде:

  1. Клиент запрашивает CGI-приложение по его URI.
  2. Веб-сервер принимает запрос и устанавливает переменные окружения, через них приложению передаются данные и служебная информация.
  3. Веб-сервер перенаправляет запросы через стандартный поток ввода (stdin) на вход вызываемой программы.
  4. CGI-приложение выполняет все необходимые операции и формирует результаты в виде HTML.
  5. Сформированный гипертекст возвращается веб-серверу через стандартный поток вывода (stdout). Сообщения об ошибках передаются через stderr.
  6. Веб-сервер передает результаты запроса клиенту.

Области применения CGI

Эти возможности обеспечиваются тем, что CGI-скрипт может быть подключен к базе данных или обращаться к файловой системе сервера. Таким образом CGI-скрипт может сохранять информацию в таблицах БД или файлах и получать ее оттуда по запросу, чего нельзя сделать средствами HTML.

ОБРАТИТЕ ВНИМАНИЕ: CGI — это не язык программирования! Это простой протокол, позволяющий веб-серверу передавать данные через stdin и читать их из stdout. Поэтому, в качестве CGI-обработчика может ипользоваться любая серверная программа, способная работать со стандарными потоками ввода-вывода.

Hello, world!

Пример простого CGI-скрипта на языке Perl приведен в листинге 1. Если этот код сохранить в файле с именем hello (имя может быть любым, расширение — тоже), поместить файл в серверный каталог cgi-bin (точнее, в тот каталог веб-сервера, который предназначен для CGI-приложений и указан в настройках веб-сервера) и установить для этого файла права на исполнение ( chmod uo+x hello ), то он станет доступен по адресу вида http://servername/cgi-bin/hello.

Листинг 1. Пример CGI-скрипта (Perl)

#!/usr/bin/perl print «Content-type: text/htmlnn»; print CGI say Hello

Hello, world!

HTML exit;

В этом коде строка #!/usr/bin/perl указывает полный путь к интерпретатору Perl. Строка Content-type: text/htmlnn — http-заголовок, задающий тип содержимого (mime-type). Удвоенный символ разрыва строки (nn) — обязателен, он отделяет заголовки от тела сообщения.

Переменные окружения

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

Переменная окруженияОписание
CONTENT_TYPE Тип данных, передаваемых на сервер. Используется, когда клиент отправляет данные, например, загружает файл.
CONTENT_LENGTH Размер содержимого запроса. Эта переменная определена для POST-запросов.
HTTP_COOKIE Возвращает набор «куков» в виде пар «ключ значение».
HTTP_USER_AGENT Информация об агенте пользователя (браузере)
PATH_INFO Путь к каталогу CGI
QUERY_STRING Строка запроса (URL-encoded), передаваемая методом GET.
REMOTE_ADDR IP-адрес клиента, выполняющего запрос.
REMOTE_HOST Полное имя (FQDN) клиента. (Если доступно)
REQUEST_METHOD Метод, которым выполняется запрос. Чаще всего GET или POST.
SCRIPT_FILENAME Полный путь к запрашиваемому скрипту (в файловой системе сервера).
SCRIPT_NAME Имя скрипта
SERVER_NAME Имя сервера
SERVER_ADDR IP-адрес сервера
SERVER_SOFTWARE Информация о серверном ПО

В листинге 2 приведен код небольшой программы на Perl, выводящей список переменных окружения. Результат ее работы приведен на рис. 2.

Листинг 2. Переменные окружения

#!/usr/bin/perl print «Content-type: text/htmlnn»; print «nn

Environment

n»; foreach (sort keys %ENV) < print «$_: $ENV
n»; > print «n»; exit;

Рис. 2. Список переменных окружения

Передача данных: метод GET

Метод GET используется для передачи urlencoded-данных через строку запроса. Адрес запрашиваемого ресурса (CGI-скрипта) и передаваемые ему данные отделяются знаком «?». Пример такого адреса:

Читайте также:
Программа которая подписывает фотографии

Метод GET используется по умолчанию для данных, введенных в адресную строку браузера. Такая же строка может быть сформирована при отправке данных из веб-формы (тег ), если метод передачи для формы не указан. Вся информация, отправляемая методом GET, передается в открытом виде, поэтому никогда не следует использовать его для отправки на сервер паролей или другой подобной информации. Метод GET имеет ограничение по размеру: строка запроса должна быть не длинее 1024 символов.

Информация, отправляемая методом GET передается в заголовке QUERY_STRING в виде строки, состоящей из пар вида ключ=значение, CGI-скрипт может получить ее через одноименную переменную окружения.

Листинг 3. Отправка данных из веб-формы методом GET

A simple CGI scripting: Sending data using GET-method You name: name=»user»>
Where are you from?: name=»from»>

После ввода данных в форму из листинга 3 и нажатия кнопки «Submit» будет сформирована строка запроса вида:

http://example.com/cgi-bin/sayhello?user=sometext user и from — имена параметров; sometext и anothertext — введенные пользователем значения соответствующих параметров.

В листинге 4 приведен пример скрипта, который может обработать данные формы из листинга 3.

Листинг 4. Отправка данных из веб-формы методом GET

Передача данных: метод POST

В общем случае более подходящим для передачи информации CGI-скрипту является метод POST. Блок передаваемых данных формируется так же, как и для метода GET, но непосредственно передача осуществляется в теле запроса. Данные поступают на вход CGI-приложения через стандартный ввод (stdin).

Для отправки данных этим методом, он должен быть явно задан в описании формы (action=»POST»).

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

. # Анализируем окружение $ENV =~ tr/a-z/A-Z/; if ($ENVREQUEST_METHOD’> eq «POST»)< read(STDIN, $buffer, $ENVCONTENT_LENGTH’>); > .

Дальнейшая обработка сохраненных в переменной $buffer параметров и их значений выполняется так же, как и в при использовании метода GET.

Преимущества CGI

Многие возможности CGI сейчас дублируются такими технологиями, как например DHTML, ActiveX или Java-апплетами. Основными преимуществами использования серверных скриптов является то, что вы можете быть уверены, что все клиенты (за редким исключением, как правило связанным с блокировкой доступа к определенным ресурсам на уровне файрвола) смогут работать с серверным приложением. Клиентские-же программы могут быть просто отключены в браузере, или вовсе не поддерживаться.

Недостатки CGI

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

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

Источник: www.4stud.info

Что такое CGI-графика и где она используется

Каждый год в прокат выходят тысячи фильмов, которые используют CGI-графику. Впервые она появилась в фильме «Мир Дикого Запада», вышедшем на экраны в 1973 году, а сегодня ее можно встретить практически в каждом фильме или сериале.

Многие кинокритики скептически относятся к такой графике и часто говорят, что CGI убивает кино. Действительно ли CGI-графика так сильно портит фильмы и что это вообще такое? Давайте разбираться.

Что такое CGI-графика

Что такое CGI-графика и зачем она нужна

CGI (от англ. computer-generated imagery – изображение, сгенерированное компьютером) – это статические или динамические изображения, созданные с помощью трехмерной компьютерной графики. Они используются не только в кино, но и в изобразительном искусстве, печати, а также на телевидении и в играх.

Как я уже и говорил, CGI появилась в прошлом веке, сразу решив многие технические сложности. В фильме «Парк Юрского Периода (1993)» при помощи CGI удалось заменить каскадера. В том же фильме также удалось соединить CGI (кожа и мышцы динозавров были созданы при помощи компьютерной графики) с традиционной съемкой и аниматроникой.

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

CGI – это не только фильм «Аватар» и «Железный человек», такая графика используется везде, где это уместно. Например, ее можно встретить в таких фильмах, как «Паразиты», «Кровавый алмаз», «Горбатая гора» и многих других. Например, в психологической драме «Черный лебедь» CGI используется крайне нетипично. Если вы видели этот фильм, то с ходу сможете вспомнить много очевидных сцен с компьютерной графикой. Но вы вряд ли заметили то, что в конце фильма у героини руки были не настоящие – их специально сделали более длинными и гладкими с помощью CGI-графики.

Читайте также:
Что такое индивидуальная программа выполнения творческого проекта кратко

Черный лебедь CGI-графика

В большинстве случаев хорошая CGI – это та CGI, которую зритель не замечает.

Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей

Компьютерная графика в рекламе

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

Все точно так же, как в киноиндустрии – есть реклама, которая полностью состоит из CGI. Например, недавняя реклама от «Сбер» с CGI-персонажами Чебурашкой и крокодилом Геной:

CGI-реклама от Сбер в Москва Сити

А есть реклама, в которой графика оживляет простые предметы:

Пример компьютерной графики в рекламе

Помимо видеороликов, мы можем встретить CGI и в наружной рекламе (3D-модели):

CGI-графика в рекламе

Как создается CGI-графика

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

Моделирование

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

Вот так будет выглядеть объект в полигонной сетке:

Как выглядит полигонная сетка

Текстурирование

На этом этапе дизайнер прорабатывает текстуру объекта с использованием различных материалов. Простыми словами, создается реалистичный объект. Например, выглядеть это может так:

Текстурирование в CGI-графике

Свет

Для более реалистичного эффекта также нужно поработать со светом и тенями, в общем, хорошо настроить освещение. Если создается простое изображение, то это последний этап, но для тех, кто работает с видео, это еще не все.

Риггинг

Риггинг – это процесс создания скелета, с помощью которого можно управлять частями модели для дальнейшей анимации. Например, если речь идет о персонаже, то в ходе риггинга показывается, как он будет двигаться и в какую сторону покачиваться во время ходьбы. Прорабатывается сначала одна рука, потом вторая, затем ноги, само тело и прочие элементы.

Реггинг в CGI-графике

Композитинг

Композитинг (от англ. compositing – компоновка, сборка) – это создание целостного изображения методом совмещения нескольких слоев. Последний этап, где все слои послойно сохраняются и в результате получается готовое реалистичное видео.

Кажется, что создание CGI-графики – это крайне просто, но все зависит от сложности проекта – компьютерная графика может создаваться как пару месяцев, так и несколько лет. Например «300 спартанцев» – фильм, в котором каждый кадр снят под компьютерную обработку, создавали 16 студий на протяжении целого года.

Где создается CGI-графика

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

Наиболее популярное ПО для работы с CGI-графикой:

  • Maya Autodesk – основное программное обеспечение, используемое в индустрии VFX. Мощнейшие возможности для анимации и инструменты для различных сценариев.
  • Houdini – сложное и мощное процедурное 3D-приложение. Используется для эффектов разрушения, дыма, взрывов, органических воздействий, дезинтеграции и эффектов энергии.
  • Cinema 4D – универсальная программа для 3D-моделирования, редактирования объектов и создания эффектов.
  • Blender – мощнейшая бесплатная программа для 3D-скульпинга, создания игр, анимации, сцен и дизайна интерьеров. Отлично подходит для начинающих.
  • ZBrush – программное обеспечение для создания 3D-моделей любого уровня. Позволяет моделировать, лепить, оптимизировать и экспортировать модели для последующих целей.
  • Substance Designer и Substance – уникальные программы, пользующиеся популярностью у разработчиков крупных игровых блокбастеров. Данный софт позволяет рисовать текстуры поверх 3D-модели и сразу видеть результат.
  • After Effects – наиболее часто используемое программное обеспечение для добавления визуальных эффектов, создания сложных видеосцен, анимации интерфейса и осуществления постобработки.

На этом список программ, конечно, не заканчивается. Есть еще монтажные станции типа Adobe Premier, Final Cut Pro и многое другое. Если вы собираетесь погрузиться в создание CGI-графики, то необязательно браться за весь перечисленный софт. Подберите одну программу под ваши задачи и начните ее изучать.

Заключение

CGI-графика – это возможность добавить в фильм или рекламу реалистичную 3D-анимацию с помощью различных программных средств. Сегодня компьютерная графика используется практически во всех кинофильмах, рекламных роликах и даже в обычных вывесках. Графический дизайнер, который умеет работать с CGI, пользуется высоким спросом на рынке.

Источник: timeweb.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru