Программирование на языке Ruby
Покупка
Тематика:
Программирование и алгоритмизация
Издательство:
ДМК Пресс
Автор:
Фултон Хэл
Год издания: 2009
Кол-во страниц: 688
Дополнительно
Вид издания:
Монография
Уровень образования:
ВО - Магистратура
ISBN: 5-94074-357-9
Артикул: 615785.01.99
К покупке доступен более свежий выпуск
Перейти
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
Хэл Фултон Программирование на языке Ruby Москва
The Ruby Way, Second Edition Hal Fulton Addison Wesley Upper Saddle River, NJ • Boston • Indianapolis • San Francisco NewYork ♦ Toronto ♦ Montreal ♦ London ♦ Munich ♦ Paris ♦ Madrid Capetown ♦ Sydney ♦ Tokyo ♦ Singapore ♦ Mexico City
Программирование на языке Ruby Хэл Фултон Москва
УДК 004.438 ББК 32.973.26-018.2 Фултон X. Ф94 Программирование на языке Ruby. - М.: ДМК Пресс. - 688 с. : ил. ISBN 5-94074-357-9 Ruby - относительно новый объектно-ориентированный язык, разработанный Юкихиро Мацумото в 1995 году и позаимствовавший некоторые особенности у языков LISP, Smalltalk, Perl, CLU и других. Язык активно развивается и применяется в самых разных областях: от системного администрирования до разработки сложных динамических сайтов. Книга является полноценным руководством по Ruby - ее можно использовать и как учебник, и как справочник, и как сборник ответов на вопросы типа «как сделать то или иное в Ruby». В ней приведено свыше 400 примеров, разбитых по различным аспектам программирования, и к которым автор дает обстоятельные комментарии. Издание предназначено для программистов самого широкого круга и самой разной квалификации, желающих научиться качественно и профессионально работать на Ruby. УДК 004.438 ББК 32.973.26-018.2 Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic, mechanical, photocopying, recording or otherwise, without prior written permission the publisher. For information on getting permission for reprints and excerpts, contact permission@peachpit.com. RUSSIAN language edition published by DMK PUBLISHERS, Copyright © 2007. ISBN 0672328844 ISBN 5-94074-357-9 Copyright © Pearson Education, Inc. © Оформление, ДМК Пресс
Содержание Предисловие.......................................... 12 Обавторе............................................. 17 Введение............................................. 18 О втором издании....................................18 Как организована эта книга..........................21 Об исходныхтекстах, приведенных в книге.............23 «Путь Ruby».........................................24 Глава 1. Обзор Ruby...................................29 1.1. Введение в объектно-ориентированное программирование...................................30 1.2. Базовый синтаксис и семантика Ruby.............35 1.3. ООПвRuby.......................................48 1.4. Динамические аспекты Ruby......................57 1.5. Потренируйте свою интуицию: что следует запомнить.61 1.6. Жаргон Ruby....................................76 1.7. Заключение.....................................79 Глава 2. Строки.......................................80 2.1. Представление обычных строк....................80 2.2. Альтернативная нотация для представления строк.81 2.3. Встроенныедокументы 2.4. Получениедлины строки..........................83 2.5. Построчная обработка...........................83 2.6. Побайтовая обработка...........................84 2.7. Специализированное сравнение строк.............84 2.8. Разбиение строки налексемы.....................85 2.9. Форматирование строк...........................87 2.10. Строки в качестве объектов ввода/вывода.......87 2.11. Управление регистром..........................88 2.12. Вычленение и замена подстрок..................88 2.13. Подстановкавстроках...........................90 2.14. Поисквстроке..................................91
Содержание 2.15. Преобразование символов в коды ASCII и обратно......92 2.16. Явные и неявные преобразования..................92 2.17. Дописывание в конец строки......................94 2.18. Удаление хвостовых символов новой строки и прочих...94 2.19. Удаление лишних пропусков.......................95 2.20. Повтор строк....................................96 2.21. Включение выражений в строку....................96 2.22. Отложенная интерполяция.........................96 2.23. Разборданных, разделенныхзапятыми...............97 2.24. Преобразование строки в число (десятичное или иное).98 2.25. Кодирование и декодирование строк в кодировке rot13.99 2.26. Шифрование строк...............................100 2.27. Сжатие строк...................................101 2.28. Подсчет числа символов в строке................101 2.29. Обращение строки...............................102 2.30. Удаление дубликатов............................102 2.31. Удаление заданных символов.....................102 2.32. Печать специальных символов....................102 2.33. Генерирование последовательности строк.........103 2.34. Вычисление 32-разрядного CRC...................103 2.35. Вычисление МО5-свертки строки..................104 2.36. Вычисление расстоянияЛевенштейна между двумя строками.................................105 2.37. Ьаэе64-кодирование и декодирование.............106 2.38. Кодирование и декодирование строк (uuencode/uudecode)..................................107 2.39. Замена символов табуляции пробелами и сворачивание пробелов в табуляторы.................107 2.40. Цитированиетекста..............................108 2.41. Заключение.....................................109 Глава 3. Регулярные выражения..........................110 3.1. Синтаксис регулярных выражений..................110 3.2. Компиляция регулярных выражений.................112 3.3. Экранирование специальных символов..............113 3.4. Якоря...........................................113 3.5. Кванторы........................................114 3.6. Позитивное и негативное заглядывание вперед.....116 3.7. Обратные ссылки.................................117 3.8. Классы символов.................................119 3.9. Обобщенные регулярные выражения.................120
Содержание Hill 7 3.10. Сопоставлениеточки символу конца строки.......121 3.11. Внутренние модификаторы.......................122 3.12. Внутренние подвыражения.......................122 3.13. ИиЬуи Oniguruma...............................123 3.14. Примеры регулярных выражений..................129 3.15. Заключение....................................133 Глава 4. Интернационализация в Ruby...................134 4.1. Исторические сведения и терминология...........135 4.2. Кодировки в пост-ASCII мире....................139 4.3. Справочники сообщений..........................150 4.4. Заключение.....................................157 Глава 5. Численные методы.............................158 5.1. Представление чисел в языке Ruby...............158 5.2. Основные операции над числами..................159 5.3. Округление чисел с плавающей точкой............160 5.4. Сравнение чисел с плавающей точкой.............162 5.5. Форматирование чисел для вывода................163 5.6. Вставка разделителей при форматировании чисел..163 5.7. Работа с очень большими числами................164 5.8. Использованиекласса BigDecimal.................164 5.9. Работа с рациональными числами.................166 5.10. Перемножение матриц...........................167 5.11. Комплексные числа.............................171 5.12. Библиотека mathn..............................172 5.13. Разложение на простые множители, вычисление НОД и НОК................................172 5.14. Простыечисла..................................173 5.15. Явные и неявные преобразования чисел..........174 5.16. Приведениечисловыхзначений....................175 5.17. Поразрядные операции над числами..............176 5.18. Преобразование системы счисления..............177 5.19. Извлечение кубических корней, корней четвертой степени ит. д......................178 5.20. Определение порядка байтов....................178 5.21. Численное вычисление определенного интеграла..179 5.22. Тригонометрия в градусах, радианах и градах...180 5.23. Неэлементарная тригонометрия..................181 5.24. Вычисление логарифмов по произвольному основанию... 182 5.25. Вычисление среднего, медианы и моды набораданных ...182
Содержание 5.26. Дисперсия и стандартное отклонение...............183 5.27. Вычисление коэффициента корреляции...............184 5.28. Генерирование случайных чисел....................185 5.29. Кэширование функций с помощью метода memoize....186 5.30. Заключение.......................................187 Глава 6. Символы и диапазоны ............................188 6.1. Символы...........................................188 6.2. Диапазоны.........................................192 6.3. Заключение........................................200 Глава 7. Дата и время....................................202 7.1. Определение текущего момента времени..............203 7.2. Работа с конкретными датами (после точки отсчета).203 7.3. Определение дня недели............................204 7.4. Определениедаты Пасхи.............................204 7.5. Вычисление n-ого дня недели в месяце..............205 7.6. Преобразование из секунд в более крупные единицы.206 7.7. Вычисление промежутка времени, прошедшего от точки отсчета.........................207 7.8. Високосныесекунды.................................207 7.9. Определение порядкового номера дня в году.........208 7.10. Контрольдаты и времени...........................208 7.11. Определение недели в году........................209 7.12. Проверка года на високосность....................210 7.13. Определение часового пояса.......................210 7.14. Манипулирование временем без даты................211 7.15. Сравнение моментов времени.......................211 7.16. Прибавление интервала к моменту времени..........211 7.17. Вычисление разности междудвумя моментами времени.............................................212 7.18. Работа с конкретными датами (до точки отсчета)...212 7.19. Взаимные преобразования объектов Date, Time и DateTime....................................213 7.20. Извлечение даты и времени из строки..............214 7.21. Форматирование и печать даты и времени...........215 7.22. Преобразование часовых поясов....................216 7.23. Определение числа дней в месяце..................216 7.24. Разбиение месяца на недели.......................216 7.25. Заключение.......................................218
Содержание 9 Глава 8. Массивы, хэши и другие перечисляемые структуры...................219 8.1. Массивы.......................................219 8.2. Хэши..........................................242 8.3. Перечисляемыеструктуры вобщем.................252 8.4. Заключение....................................259 Глава 9. Более сложные структуры данных..............260 9.1. Множества.....................................260 9.2. Стеки и очереди...............................263 9.3. Деревья.......................................268 9.4. Графы.........................................274 9.5. Заключение....................................280 Глава 10. Ввод/вывод и хранение данных...............281 10.1. Файлы и каталоги.............................282 10.2. Доступ кданным более высокого уровня.........306 10.3. Библиотека KirbyBase.........................314 10.4. Подключение к внешним базам данных...........317 10.5. Заключение...................................329 Глава 11. ООП и динамические механизмы в Ruby........330 11.1. Рутинные объектно-ориентированныезадачи......331 11.2. Более сложные механизмы......................356 11.3. Динамические механизмы.......................375 11.4. Заключение...................................395 Глава 12. Графические интерфейсы для Ruby............396 12.1. Ruby/Tk......................................397 12.2. Ruby/GTK2....................................409 12.3. FXRuby(FOX)..................................422 12.4. QtRuby.......................................436 12.5. Другие библиотеки для создания графических интерфейсов...............446 12.6. Заключение...................................447 Глава 13. Потоки в Ruby..............................448 13.1. Создание потоков и манипулирование ими.......449 13.2. Синхронизация потоков........................458 13.3. Заключение...................................473
Содержание Глава 14. Сценарии и системное администрирование......................474 14.1. Запуск внешних программ.....................474 14.2. Флаги и аргументы в командной строке........479 14.3. БиблиотекаЗИеП..............................482 14.4. Переменныеокружения.........................485 14.5. Сценарии на платформе MicrosoftWindows......487 14.6. Моментальный инсталлятордляWindows..........493 14.7. Библиотеки, о которых полезно знать.........494 14.8. Работа с файлами, каталогами и деревьями....495 14.9. Различныесценарии...........................498 14.10. Заключение.................................502 Глава 15. ЯиЬуи форматыданных.......................503 15.1. РазборХМ1_иРЕХМ1_...........................503 15.2. РЗЗиАФт.....................................508 15.3. Обработка изображений с помощью RMagick.....512 15.4. Создание документов в формате PDF с помощью библиотеки PDF::Writer...................521 15.5. Заключение..................................530 Глава 16. Тестирование и отладка....................531 16.1. БиблиотекаTest::Unit........................531 16.2. KомплектинструментовZenTest.................535 16.3. Работасотладчиком Ruby......................538 16.4. Использование irb в качестве отладчика......541 16.5. Измерение покрытия кода.....................542 16.6. Измерениепроизводительности.................543 16.7. Объекты печати..............................547 16.8. Заключение..................................548 Глава 17. Создание пакетов и распространение программ.........................550 17.1. Программа RDoc..............................550 17.2. Установка и подготовка пакета...............555 17.3. RubyForgeиRАА...............................559 17.4. Заключение..................................560 Глава 18. Сетевое программирование...................561 18.1. Сетевые серверы.............................562 18.2. Сетевые клиенты.............................572 18.3. Заключение..................................591
Содержание Глава 19. RubyMWeb-приложения.......................592 19.1. Программирование CGI на Ruby................592 19.2. FastCGI.....................................597 19.3. Rubyon Rails................................599 19.4. PазработкаWeb-приложений с помощью Nitro....603 19.5. Введение BWee...............................615 19.6. PазработкаWeb-приложений с помощью IOWA.....617 19.7. RubyиWeb-сервер.............................622 19.8. Заключение..................................629 Глава 20. Распределенный Ruby.......................630 20.1. Обзор: библиотека drb.......................630 20.2. Пример: эмуляция биржевой ленты.............633 20.3. Rinda: пространство кортежей в Ruby.........636 20.4. Обнаружение сервисов в распределенном Ruby..640 20.5. Заключение..................................641 Глава 21. Инструменты разработки для Ruby..........642 21.1. Система RubyGems............................642 21.2. Программа Rake..............................644 21.3. Оболочка irb................................647 21.4. Утилита ri..................................652 21.5. Поддержка со стороны редакторов.............653 21.6. Интегрированные среды разработки............654 21.7. Заключение..................................656 Глава 22. Сообщество пользователей Ruby.............657 22.1. Ресурсы вWeb................................657 22.2. Новостные группы и списки рассылки..........658 22.3. Блоги и онлайновые журналы..................658 22.4. Запросы на изменение Ruby...................659 22.5. Каналы IRC..................................659 22.6. Конференции по Ruby.........................659 22.7. Локальные группы пользователей Ruby.........660 22.8. Заключение..................................660 Алфавитный указатель................................662
Предисловие Предисловие ко второму изданию В древнем Китае люди, в особенности философы, полагали, что под внешней оболочкой мира и любого существа скрыто нечто, чего нельзя ни объяснить, ни описать словами. Это нечто китайцы называли Дао, а японцы - До. На русский язык это слово можно перевести как Путь. Слово «до» входит в такие названия, как дзюдо, кендо, карате-до и айкидо. Это не просто боевые искусства, а целая философия и взгляд на жизнь. Так и в языке программирования Ruby есть свои философия и способ мышления. Этот язык заставляет думать по-новому. Он помогает программистам получать удовольствие от своей работы. И не потому, что Ruby был создан в Японии, а потому, что программирование стало важной частью существования - по крайней мере, для некоторых людей, жизнь которых Ruby призван улучшить. Как всегда, описать, что такое Дао, трудно. Я чувствую это, но не могу подыскать нужных слов даже на японском, моем родном языке. А вот один смельчак по имени Хэл Фултон попытался, и его первая попытка (первое издание этой книги) оказалась довольно удачной. Попытка номер два увенчалась еще лучшим результатом, чему немало способствовала помощь многих людей из сообщества пользователей Ruby. По мере того как Ruby набирает популярность (отчасти благодаря продукту Ruby on Rails), все важнее становится овладение секретами мастерства производительного программирования на этом языке. Надеюсь, что книга, которую вы держите в руках, поможет вам в решении этой задачи. Удачной работы! Юкихиро «Мац» Мацумото Август 2006 года, Япония Предисловие к первому изданию Вскоре после того как я впервые познакомился с компьютерами в начале 1980-х годов, меня заинтересовали языки программирования. С тех пор я буквально помешался на этой теме. Думаю, причина такого интереса в том, что языки программирования - это способ выражения мыслей. Они по сути своей предназначены для человека. Но вопреки этому факту языки программирования почему-то всегда оказывались в большей степени машинно-ориентированными. Многие из них спроектированы с учетом удобства для компьютеров.
Предисловие к первому изданию III» 13 По мере того как компьютеры становятся мощнее и дешевле, ситуация постепенно меняется. Возьмем, к примеру, структурное программирование. Машине все равно, насколько хорошо структурирована программа: она просто исполняет ее команда за командой. Идеи структурного программирования обращены к людям, а не к машинам. То же относится и к объектно-ориентированному программированию. Пришло время проектировать языки, удобные для людей! В 1993 году я разговаривал со своим коллегой о сценарных языках, их выразительности и перспективах. Я считал, что программирование пойдет именно по этому пути и будет ориентироваться на человека. Но меня не вполне устраивали существующие языки, такие как Perl и Python. Я хотел видеть язык более мощный, чем Perl, и более объектно-ориентированный, чем Python. Найти идеальный вариант мне не удалось, поэтому остался один выход: изобрести свой собственный. Ruby - не самый простой язык, но ведь и человеческая душа не проста. Ей равно нравятся простота и сложность. Она не приемлет ни слишком примитивных, ни чересчур заумных вещей. Она ищет равновесия. Поэтому при проектировании ориентированного на человека языка - Ruby -я следовал принципу наименьшего удивления. Иными словами, работа шла под девизом: хорошо то, что не кажется мне странным. Вот почему я чувствую себя в своей родной стихии и испытываю радость, когда программирую на Ruby. А с момента выхода в свет первой версии в 1995 году многие программисты во всем мире разделили со мной эту радость. Как всегда, хочу выразить величайшую благодарность всем членам сообщества, сложившегося вокруг Ruby. Они - причина его успеха. Также я благодарен автору этой книги, Хэлу Фултону, за то, что он показал другим Путь Ruby. В книге объясняется философия, стоящая за языком Ruby. Это квинтэссенция моих мыслей и ощущений членов сообщества. Интересно, как Хэлу удалось прочитать мои мысли и раскрыть секрет Пути Ruby!.. Я никогда не встречался с ним лично, надеюсь, что скоро это все-таки произойдет. В заключение хочу выразить надежду, что эта книга и сам язык Ruby помогут вам получить удовольствие и радость от программирования. Юкихиро «Мац» Мацумото Сентябрь 2001, Япония
Благодарности Благодарности за второе издание Здравый смысл подсказывает, что второе издание требует в два раза меньше работы, чем первое. Но здравый смысл ошибается. Хотя значительная часть текста книги перекочевала прямиком из первого издания, даже эту часть пришлось сильно править. К каждому предложению приходилось ставить вопрос: «Сохранилось ли в 2006 году то, что было верно в 2001-м?» И это только начало! Короче говоря, я потратил много сотен часов на подготовку второго издания -примерно столько же, сколько ушло на первое. И тем не менее я «всего лишь автор». Книга появляется на свет в результате усилий многих людей. Если говорить об издательстве, то я благодарен Дебре Вильямс Коули (Debra Williams Cauley), Сонь-лин Киу (Songlin Qiu) и Менди Фрэнк (Mandie Frank) за тяжелый труд и бесконечное терпение. Спасибо Джениль Бриз (Geneil Breeze) за неутомимое вычитывание и выпалывание сорняков из моего английского. Есть много других сотрудников, которых я не могу назвать, поскольку их работа проходила за кулисами и я никогда с ними не встречался. За техническое редактирование отвечали главным образом Шашанк Дейт (Shashank Date) и Фрэнсис Хван (Francis Hwang). Они прекрасно справились со своей задачей - если остались какие-то ошибки, это всецело моя вина. Большое спасибо людям, которые предлагали объяснения, писали код примеров и отвечали мне на многочисленные вопросы. Это сам Мац (Юкихиро Мацумото), Дейв Томас (Dave Thomas), Кристиан Нойкирхен (Christian Neukirchen), Чед Фаулер (Chad Fowler), Дэниэл Бергер (Daniel Berger), Армин Рерль (Armin Roehrl), Стефан Шмидль (Stefan Schmiedl), Джим Вайрих (Jim Weirich), Райан Дэвис (Ryan Davis), Дженни У. (Jenny W.), Джим Фриз (Jim Freeze), Лайл Джонсон (Lyle Johnson), Мартин Де Мелло (Martin DeMello), Март Лоуренс (Mart Lawrence), Рон Джеффрис (Ron Jeffries), Тим Хантер (Tim Hunter), Чет Хендриксон (Chet Hendrickson), Натаниэль Талбот (Nathaniel Talbott) и Бил Клеб (Bil Kleb). Особая благодарность активным помощникам. Эндрю Джонсон (Andrew Johnson) здорово обогатил мои знания о регулярных выражениях. Пол Бэтли (Paul Battley) предоставил обширный материал для главы об интернационализации. Масао Муто (Masao Mutoh) помог в написании той же главы, а также снабдил меня материалами по GTK. Остин Зиглер (Austin Ziegler) научил меня секретам
Благодарности за первое издание III» 15 подготовки PDF-файлов. Калеб Теннис (Kaleb Tennis) дал материал по Qt. Эрик Ходел (Eric Hodel) помог в описании продуктов Rinda и Ring, а Джеймс Бритт (James Britt) внес большой вклад в главу о разработке приложений для Web. И еще раз выражаю искреннюю благодарность и восхищение Мацу - не только за помощь, но и прежде всего - за создание Ruby. Domo arigato gozaimasu’! Еще раз хочу поблагодарить своих родителей. Они постоянно подбадривали меня и с нетерпением ждали выхода книги... Я еще сделаю из них программистов! И опять - спасибо всем членам сообщества пользователей Ruby за неутомимую энергию и дух коллективизма. Особенно я благодарен читателям этой книги (обоих изданий). Я надеюсь, что вы найдете ее информативной, полезной и, быть может, даже увлекательной. Благодарности за первое издание Создание книги - плод усилий целого коллектива. Я не понимал этого в полной мере, пока не взялся за это дело сам. Рекомендую всем пройти подобное испытание, хотя оно и не из легких. Нет сомнений, что без помощи многих и многих людей книга не увидела бы свет. Прежде всего, выражаю благодарность и восхищение Мацу (Юкихиро Мацумото), который создал язык Ruby. Domo arigato gozaimasu!’ Спасибо Конраду Шнейкеру (Conrad Schneiker), который подал мне идею написать эту книгу и помог выработать ее общий план. Он же оказал мне неоценимую услугу, познакомив с языком Ruby в 1999 году. Материалом для книги меня снабжали несколько человек. Первым хочу назвать Гая Хэрста (Guy Hurst), который написал значительную часть начальных глав, а также два приложения. Его помощь поистине бесценна. Спасибо также другим помощникам, называя которых, я не придерживаюсь какого-то определенного порядка. Кэвин Смит (Kevin Smith) многое сделал для раздела главы 6, посвященного GTK, избавив меня от изучения сложной темы в условиях жесткого графика. Патрик Логан (Patrick Logan) пролил свет на графическую систему FOX GUI, описанную в той же главе. Чед Фаулер (Chad Fowler) в главе 9 углубился в тайны XML, а также помог при написании раздела о CGI. Благодарю всех, кто правил корректуру, писал рецензии и помогал иными способами: Дона Мучоу (Don Muchow), Майка Стока (Mike Stok), Михо Огисима (Miho Ogishima) и уже упомянутых выше. Спасибо Дэвиду Эпштейну (David Eppstein), профессору математики, который ответил на вопросы по теории графов. Одна из замечательных особенностей Ruby - поддержка со стороны сообщества пользователей. В списке рассылки и в конференции многие отвечали на мои вопросы, подавали идеи и всячески помогали. Опять же не придерживаясь определенного порядка, хочу упомянуть Дейва Томаса (Dave Thomas), Энди Ханта (Andy Hunt), Хи-Соб Парка (Hee-Sob Park), Майка Уилсона (Mike Wilson), Ави Брайанта (Avi Bryant), Ясуси Шоджи (Yasushi Shoji «Yashi»), Шуго Маэда (Shugo ’ Огромное спасибо (яп.)
Maeda), Джима Вайриха (Jim Weirich) и Масаки Сукета (Masaki Suketa). Как это ни печально, но, скорее всего, кого-то я пропустил. Очевидно, что книга никогда не вышла бы без помощи издателя. Многие работали над ней незримо для меня, но особенно я хотел бы поблагодарить Вильяма Брауна (William Brown), который тесно сотрудничал со мной и постоянно поощрял, и Скотта Мейера (Scott Meyer), который скрупулезно занимался объединением всех материалов. Других назвать не могу, потому что никогда о них не слышал. Но они знают себя сами. Хочу поблагодарить своих родителей, которые следили за проектом издалека, подбадривали меня и даже дали себе труд ради меня освоить азы программирования. Один мой друг как-то сказал: «Если ты написал книгу, которую никто не читает, значит, ты не написал ее вовсе». Поэтому напоследок я хочу поблагодарить читателей. Эта книга для вас. Надеюсь, что она окажется полезной.
Об авторе Хэл Фултон - обладатель двух ученых степеней по информатике, полученных в Университете штата Миссисипи. Он четыре года преподавал информатику в колледже, пока не переехал в Остин, штат Техас, для работы по контрактам (в основном с отделением компании IBM в Остине). Более 15 лет он работал с различными версиями ОС UNIX, в том числе AIX, Solaris и Linux. С языком Ruby впервые познакомился в 1999 году, а в 2001 приступил к работе над первым изданием этой книги - второй книги на английском языке, посвященной Ruby. Фултон присутствовал на шести конференциях по Ruby и проводил презентации на четырех из них, в частности на первой европейской конференции по языку Ruby, состоявшейся в Карлсруэ (Германия). Сейчас Хэл работает в компании Broadwing Communications, располагающейся в Остине, и занимается вопросами, связанными с большим хранилищем данных и относящимися к нему телекоммуникационными приложениями. В работе он использует язык C++, СУБД Oracle и, конечно, Ruby. Фултон по-прежнему постоянно присутствует в списке рассылки и в IRC-канале, посвященном Ruby, а также участвует в нескольких разрабатываемых проектах на Ruby. Он член Ассоциации по вычислительной технике (ACM - Association for Computing Machinery) и компьютерного общества IEEE (Институт инженеров по электротехнике и электронике). В свободное от работы время увлекается музыкой, чтением, искусством и фотографией. Кроме всего прочего, Хэл член общества по изучению Марса и энтузиаст космических полетов. Мечтал бы когда-нибудь совершить такой полет. Проживает в Остине, штат Техас.
К покупке доступен более свежий выпуск
Перейти