Вычисление МD5-свертки строки

августа 8, 2008

Алгоритм MD5 вырабатывает 128-разрядный цифровой отпечаток или дайджест сообщения произвольной длины. Это модификация свертки, т.е. функция шифрования односторонняя, так что восстановить первоначальное сообщение по дайджесту невозможно. Для Ruby имеется расширение, реализующее MD5; интересующиеся могут заметить его в каталоге ext/md5 стандартного дистрибутива. Ради творчества нового мира MD5 есть 2 эквивалентных метода класса:
require ‘md5′
hash = MD5.md5
hash = [...]

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

Генерирование последовательности строк

августа 8, 2008

Иногда бывает необходимо принять «следующую» строку. Так, следующей для строки “ааа” будет строка “aab” (потом “aac”, “aad” и так далее). В Ruby для этой задачи есть способ succ:
droid = “R2D2″
inproved = droid.succ # “R2D3″
pill = “Vitamin B”
pill2 = pill.succ # “Vitamin C”
He рекомендуется использовать данный метод, в случае, если точно не известно, что первоначальное значение [...]

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

Преобразование строки в число (десятичное или иное)

августа 8, 2008

Есть два важных способа превратить строку в число: методы integer и Float модуля Kernel и методы to_i и to_f класса string. (Имена, начинающиеся с большой буквы, к примеру Integer, обычно резервируются для особых целей преобразования.)
Простой факт тривиален, следующие два слова эквивалентны:
х = “123″.to_i # 123
у = Integer(”123″) # 123
Однако в случае, если в строке хранится [...]

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

Разбор данных, разделенных запятыми

августа 8, 2008

Данные, которые разделены запятыми, часто попадаются при программировании.
Это в одном доме «наибольший общий делитель» всех размеров обмена
данными. К примеру, так передаются данные между несовместимыми СУБД или приложениями, которые не поддерживают никакого иного общего объема.
Будем считать, что данные показывают собой строки и числа, а все
строки заключены в кавычки. Еще предположим, что все символы должным порядком экранированы [...]

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

Повторение строк

августа 7, 2008

В Ruby оператор (или метод) умножения перегружен так, что в применении к строкам выполняет операцию повторения. Если строку умножить на n, то получится строка, состоящая из n конкатенированных копий исходной:
etc = “Etc. “*3 # “Etc. Etc. Etc. ”
ruler = ” + ” + (”.”*4+”5″+”.”*4+”+”)*3
# ” + 5 + 5 + 5 + ”

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

Вычленение и замена подстрок

июля 3, 2008

В Ruby к подстрокам можно обращаться разными способами. Обычно применяются
квадратные скобки, как для массивов, но внутри скобок может находиться пара объектов класса Fixnum, диапазон, регулярное выражение или строка. Ниже
мы рассмотрим все варианты.
Если задана пара объектов класса Fixnum, то они трактуются как смещение от
начала строки и длина, а возвращается соответствующая подстрока.

str = “Шалтай-Болтай”
subl = str[7,4] # [...]

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

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

июня 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. Эти [...]

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