Сеансы пользователей

июня 28, 2008

Куки - это хорошо, если вам нужно сохранить простые данные и вы не прочь возложить на браузер заботу об их хранении. Но часто предъявляются более жесткие требования. Что если нужно сохранить много данных и вы не хотите гонять их «взад-вперед» при каждом запросе? К тому же данные могут быть секретными, так что доверять их хранение [...]

Читать далее →

Cookie

июня 28, 2008

Мы уже упоминали, что HTTP - протокол без состояния. Это означает, что после того как сервер закончил обрабатывать запрос, он не может сказать, пришел ли следующий запрос от того же или какого-либо другого браузера. Тут-то и приходят на помощь куки (cookies) - способ, быть может, несколько грубоватый, сохранить состояние между последовательными запросами от одного и [...]

Читать далее →

Вывод и обработка форм

июня 28, 2008

Наиболее распространенный способ взаимодействия с CGI-программой - форма. HTML-формы создаются с помощью специальных тегов, которые браузер представляет в виде элементов ввода данных. Подробное их обсуждение выходит за рамки данной книги, но существует немало книг и онлайновых руководств по этому предмету.
В классе cgi имеются методы для генерирования всех элементов HTML-форм. В примере ниже показано, как можно [...]

Читать далее →

Введение в библиотеку cgi.rb

июня 25, 2008

Библиотека cgi .rb включена в стандартный дистрибутив Ruby. Ее функциональность в основном реализована в центральном классе cgi. Первое, что нужно сделать при работе с данной библиотекой, - создать экземпляр этого класса.
require  “cgi”
cgi = CGI.new(”html4″)
Инициализатор класса cgi принимает единственный параметр - уровень спецификации языка HTML, который должен поддерживаться методами генерации разметки, входящими в пакет CGI. Эти [...]

Читать далее →

Управление регистром

июня 25, 2008

В классе string есть множество методов управления регистром. В этом разделе мы
приведем их краткий обзор.
Метод downcase переводит символы всей строки в нижний регистр, а метод
upcase - в верхний:

si = “Бостонское чаепитие”
s2 = si.downcase # “бостонское чаепитие”
s3 = s2.upcase # “БОСТОНСКОЕ ЧАЕПИТИЕ”
Метод capitalize представляет первый символ строки в верхнем регистре, а
все остальные - в нижнем:

s4 = [...]

Читать далее →

Форматирование строк

июня 25, 2008

В Ruby, как и в языке С, для этой цели существует метод sprintf. Он принимает строку и список выражений и возвращает строку. Набор спецификаторов в форматной строке почти ничем отличается от принятого в функции sprintf (или printf)из библиотеки С.

name = “Боб”
age =28
str = sprintf(”Привет, %s… Похоже, тебе %d лет.”, name, age)
Спрашивается, зачем нужен этот метод, [...]

Читать далее →

Специализированное сравнение строк

июня 25, 2008

В язык Ruby уже встроен механизм сравнения строк: строки сравниваются в привычном
лексикографическом порядке (то есть на основе упорядочения, присущего
данному набору символов). Но при желании можно задать собственные правила
сравнения любой сложности.
Предположим, например, что мы хотим игнорировать английские артикли а,
an и the, если они встречаются в начале строки, а также не обращать внимания на
большинство знаков препинания. Для [...]

Читать далее →

Программирование CGI на Ruby

июня 25, 2008

Всякий, кто знаком с программированием для Web, хотя бы раз встречал аббревиатуру CGI (Common Gateway Interface - общий шлюзовой интерфейс). Спецификация CGI появилась на заре развития Web с целью обогатить взаимодействие между пользователем и Web-сервером. С тех пор были изобретены бесчисленные альтернативные технологии, но CGI все еще живет и прекрасно себя чувствует. Своим успехом и [...]

Читать далее →

Ruby и web-приложения

июня 25, 2008

Как ловко мы сплетаем сеть…
Сэр Вальтер Скотт, «Мармион»
Ruby - универсальный язык, его ни в коей мере нельзя считать исключительно «языком Web». Но, несмотря на это, одно из наиболее типичных его применений -создание приложений (да и вообще инструментов в широком смысле) для Web.
Существует множество способов разрабатывать приложения для Web на Ruby - от сравнительно небольших и [...]

Читать далее →

Несколько слов о стиле кода

июня 24, 2008

Маленький пример рефакторинга ruby-кода.
Исходный вариант:
hosts = []
# add all the site temporary domains
hosts << Site.find(:all).inject([]) do |collection, site|
collection << site.harmony_url
end
# add all the account subdomains
hosts << Account.find(:all).inject([]) do |collection, account|
collection << account.harmony_url
end
Как можно сделать лучше?
Да легко!
# site and account subdomains
hosts = []
hosts << Site.find(:all).collect(&:harmony_url)
hosts << Account.find(:all).collect(:&harmony_url)
Улучшений здесь, как вы видите, три:

Заменяем низкоуровневый inject на collect. [...]

Читать далее →
посуточно в москве