Хэл Фултон - Программирование на языке Ruby

Здесь есть возможность читать онлайн «Хэл Фултон - Программирование на языке Ruby» — ознакомительный отрывок электронной книги совершенно бесплатно, а после прочтения отрывка купить полную версию. В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 2007, ISBN: 2007, Издательство: ДМК Пресс, Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Программирование на языке Ruby: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Программирование на языке Ruby»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Ruby — относительно новый объектно-ориентированный язык, разработанный Юкихиро Мацумото в 1995 году и позаимствовавший некоторые особенности у языков LISP, Smalltalk, Perl, CLU и других. Язык активно развивается и применяется в самых разных областях: от системного администрирования до разработки сложных динамических сайтов.
Книга является полноценным руководством по Ruby — ее можно использовать и как учебник, и как справочник, и как сборник ответов на вопросы типа «как сделать то или иное в Ruby». В ней приведено свыше 400 примеров, разбитых по различным аспектам программирования, и к которым автор дает обстоятельные комментарии.
Издание предназначено для программистов самого широкого круга и самой разной квалификации, желающих научиться качественно и профессионально работать на Ruby.

Программирование на языке Ruby — читать онлайн ознакомительный отрывок

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Программирование на языке Ruby», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Возникает вопрос: «А как вообще почта поступает в программу mail2news?» Ведь она, похоже, читает из стандартного ввода. Автор рекомендует следующую настройку: сначала в файле .forwardпрограммы sendmailвся входящая почта перенаправляется на программу procmail. Файл .procmailконфигурируется так, чтобы извлекать сообщения, приходящие из списка рассылки, и по конвейеру направлять их программе mail2news. Уточнить детали можно в документации, сопровождающей приложение RubyMirror (в архиве RAA). Если вы работаете не в UNIX, то придется изобрести собственную схему конфигурирования.

Ну а все остальное расскажет сам код, приведенный в листингах 18.6 и 18.7.

Листинг 18.6. Перенаправление почты в конференцию

# mail2news: Принимает почтовое сообщение и отправляет

# его в конференцию.

require "nntp"

include NNTP

require "params"

# Прочитать сообщение, выделив из него заголовок и тело.

# Пропускаются только определенные заголовки.

HEADERS = %w{From Subject References Message-ID

Content-Type Content-Transfer-Encoding Date}

allowed_headers = Regexp.new(%{^(#{HEADERS.join("|")}):})

# Прочитать заголовок. Допускаются только некоторые заголовки.

# Добавить строки Newsgroups и X-rubymirror.

head = "Newsgroups: #{Params::NEWSGROUP}\n"

subject = "unknown"

while line = gets

exit if line /^#{Params::LOOP_FLAG}/о # Такого не должно быть!

break if line =~ /^s*$/

next if line =~ /^\s/

next unless line =~ allowed_headers

# Вырезать префикс [ruby-talk:nnnn] из темы, прежде чем

# отправлять в конференцию.

if line =~ /^Subject:\s*(.*)/

subject = $1

# Следующий код вырезает специальный номер ruby-talk

# из начала сообщения в списке рассылки, перед тем

# как отправлять его новостному серверу.

line.sub!(/\[ruby-talk:(\d+)\]\s*/, '')

subject = "[#$1] #{line}"

head << "X-ruby-talk: #$1\n"

end

head << line

end

head << "#{Params::LOOP_FLAG}\n"

body = ""

while line = gets

body << line

end

msg = head + "\n" + body

msg.gsub!(/\r?\n/, "\r\n")

nntp = NNTPIO.new(Params::NEWS_SERVER)

raise "Failed to connect" unless nntp.connect

nntp.post(msg)

Листинг 18.7. Перенаправление конференции в почту

##

# Простой сценарий для зеркалирования трафика

# из конференции comp.lang.ruby в список рассылки ruby-talk.

#

# Вызывается периодически (скажем, каждые 20 минут).

# Запрашивает у новостного сервера все сообщения с номером,

# большим номера последнего сообщения, полученного

# в прошлый раз. Если таковые есть, то читает сообщения,

# отправляет их в список рассылки и запоминает номер последнего.

require 'nntp'

require 'net/smtp'

require 'params'

include NNTP

##

# # Отправить сообщения в список рассылки. Сообщение должно

# быть отправлено участником списка, хотя в строке From:

# может стоять любой допустимый адрес.

#

def send_mail(head, body)

smtp = Net::SMTP.new

smtp.start(Params::SMTP_SERVER)

smtp.ready(Params::MAIL_SENDER, Params::MAILING_LIST) do |a|

a.write head

a.write "#{Params::LOOP_FLAG}\r\n"

a.write "\r\n"

a.write body

end

end

##

# Запоминаем идентификатор последнего прочитанного из конференции

# сообщения.

begin

last_news = File.open(Params::LAST_NEWS_FILE) {|f| f.read}.to_i

rescue

last_news = nil

end

##

# Соединяемся с новостным сервером и получаем номера сообщений

# из конференции comp.lang.ruby.

#

nntp = NNTPIО.new(Params::NEWS_SERVER)

raise "Failed to connect" unless nntp.connect

count, first, last = nntp.set_group(Params::NEWSGROUP)

##

# Если номер последнего сообщения не был запомнен раньше,

# сделаем это сейчас.

if not last_news

last_news = last

end

##

# Перейти к последнему прочитанному ранее сообщению

# и попытаться получить следующие за ним. Это может привести

# к исключению, если сообщения с указанным номером

# не существует, но мы не обращаем на это внимания.

begin

nntp.set_stat(last_news)

rescue

end

##

# Читаем все имеющиеся сообщения и отправляем каждое

# в список рассылки.

new_last = last_news

begin

loop do

nntp.set_next

head = ""

body = ""

new_last, = nntp.get_head do |line|

head << line

end

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Программирование на языке Ruby»

Представляем Вашему вниманию похожие книги на «Программирование на языке Ruby» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Программирование на языке Ruby»

Обсуждение, отзывы о книге «Программирование на языке Ruby» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x