Тут можно читать онлайн книгу Фултон Хэл - Программирование на языке Ruby - бесплатно полную версию (целиком). Жанр книги: Программирование. Вы можете прочесть полную версию (весь текст) онлайн без регистрации и смс на сайте Lib-King.Ru (Либ-Кинг) или прочитать краткое содержание, аннотацию (предисловие), описание и ознакомиться с отзывами (комментариями) о произведении.
Программирование на языке Ruby - описание и краткое содержание, автор Фултон Хэл, читать бесплатно онлайн на сайте электронной библиотеки Lib-King.Ru.
Ruby — относительно новый объектно-ориентированный язык, разработанный Юкихиро Мацумото в 1995 году и позаимствовавший некоторые особенности у языков LISP, Smalltalk, Perl, CLU и других. Язык активно развивается и применяется в самых разных областях: от системного администрирования до разработки сложных динамических сайтов. Книга является полноценным руководством по Ruby — ее можно использовать и как учебник, и как справочник, и как сборник ответов на вопросы типа «как сделать то или иное в Ruby». В ней приведено свыше 400 примеров, разбитых по различным аспектам программирования, и к которым автор дает обстоятельные комментарии. Издание предназначено для программистов самого широкого круга и самой разной квалификации, желающих научиться качественно и профессионально работать на Ruby.
Программирование на языке Ruby - читать книгу онлайн бесплатно, автор Фултон Хэл
"Фон этой страницы" + "изменяется в зависимости от значения 'bgcolor'," + "хранящегося в сеансе каждого пользователя." + "Время последнего доступа: #{lastaccess}" end endendЕсли обратиться к URL
/thatscript.cgi?bgcolor=red"bgcolor"CGI::SessionCGIsession_keyprefixКлассу
CGI::SessionStringdatabase_managerCGI::Session19.2. FastCGI
Чаще всего CGI критикуют за то, что при каждом запросе создается новый процесс, и это заметно снижает производительность. Невозможность сохранять в памяти объекты между последовательными запросами также не украшает дизайн системы. Для разрешения этих проблем была создана технология FastCGI.
По сути дела, FastCGI — это определение и программная реализация протокола. Обычно она реализуется в надстройки над Web-сервером, например модуля в случае сервера Apache. FastCGI позволяет работающему внутри процесса компоненту перехватывать HTTP-запросы и направлять их через сокет другому процессу, работающему в течение длительного времени. По сравнению с традиционным порождением новых процессов это существенно ускоряет работу. Кроме того, программист получает возможность оставить данные в памяти и найти их там при обработке следующего запроса.
Серверы, адаптированные для работы с FastCGI, реализованы на многих языках, в том числе на Ruby. Эли Грин (Eli Green) написал целиком на Ruby модуль (он есть в архиве RAA), который реализует протокол FastCGI и упрощает разработку FastCGI-программ.
Не вдаваясь в детали реализации, мы представили в листинге 19.1 пример приложения. Как видите, он повторяет функциональность предыдущего примера.
require "fastcgi"require "cgi"last_time = ""def get_ramblings(instream) # He слишком красивый способ извлечь значение из первой пары # имя-значение. CGI сделал бы это за нас. data = "" if instream != nil data = instream.split("&")[0].split(" = ")[1] || "" end return CGI.unescape(data)enddef reverse_ramblings(ramblings) if ramblings == nil then return "" end chunks = ramblings.split(/\s+/) chunks.reverse.join(" ")endserver = FastCGI::TCP.new('localhost', 9000)begin server.each_request do |request| stuff = request.in.read out = request.out out << "Content-type: text/html\r\n\r\n" out << <<-EOF<html><head><titlе>Отражатель текста</title></head><h1>sdrawkcaB txeT</h1><i>Вы перед этим сказали: #{last_time}</i><BR><b>#{reverse_ramblings(get_ramblings(stuff))}</b><form method="POST" action="/fast/serv.rb"><textarea name="ramblings"></textarea><input type="submit" name="submit"></form></body></html>EOF last_time = get_ramblings(stuff) request.finish endensure server.closeendСразу же бросается в глаза (если вы читали предыдущий раздел) то, что в FastCGI приходится вручную делать кое-какие вещи, которые были не нужны при работе с библиотекой
CGIget_ramblingsНо вместе с тем у FastCGI есть и достоинства. Мы не проводили замеров, но — как следует из самого названия — FastCGI быстрее CGI. Вместо накладных расходов на создание нового процесса мы просто открываем соединение с портом 9000 на локальной машине (
FastCGI::TCP.new('localhost', 9000)last_tim