Главная
В избранное
Наш E-MAIL
Добавить материал
Нашёл ошибку
Вниз
Программирование на языке Ruby
Хэл Фултон; Hal Fulton;
Предисловие
Благодарности
Об авторе
Введение
О втором издании
Как организована эта книга
Об исходных текстах, приведенных в книге
«Путь Ruby»
Глава 1. Обзор Ruby
1.1. Введение в объектно-ориентированное программирование
1.1.1. Что такое объект
1.1.2. Наследование
1.1.3. Полиморфизм
1.1.4. Еще немного терминов
1.2. Базовый синтаксис и семантика Ruby
1.2.1. Ключевые слова и идентификаторы
1.2.2. Комментарии и встроенная документация
1.2.3. Константы, переменные и типы
1.2.4. Операторы и приоритеты
1.2.5. Пример программы
1.2.6. Циклы и ветвление
1.2.7. Исключения
1.3. ООП в Ruby
1.3.1. Объекты
1.3.2. Встроенные классы
1.3.3. Модули и классы-примеси
1.3.4. Создание классов
1.3.5. Методы и атрибуты
1.4. Динамические аспекты Ruby
1.4.1. Кодирование во время выполнения
1.4.2. Отражение
1.4.3. Отсутствующие методы
1.4.4 Сборка мусора
1.5. Потренируйте свою интуицию: что следует запомнить
1.5.1. Синтаксис
1.5.2. Перспективы программирования
1.5.3. Предложение case в Ruby
1.5.4. Рубизмы и идиомы
1.5.5. Ориентация на выражения и прочие вопросы
1.6. Жаргон Ruby
1.7. Заключение
Глава 2. Строки
2.1. Представление обычных строк
2.2. Альтернативная нотация для представления строк
2.3. Встроенные документы
2.4. Получение длины строки
2.5. Построчная обработка
2.6. Побайтовая обработка
2.7. Специализированное сравнение строк
2.8. Разбиение строки на лексемы
2.9. Форматирование строк
2.10. Строки в качестве объектов ввода/вывода
2.11. Управление регистром
2.12. Вычленение и замена подстрок
2.13. Подстановка в строках
2.14. Поиск в строке
2.15. Преобразование символов в коды ASCII и обратно
2.16. Явные и неявные преобразования
2.17. Дописывание в конец строки
2.18. Удаление хвостовых символов новой строки и прочих
2.19. Удаление лишних пропусков
2.20. Повтор строк
2.21. Включение выражений в строку
2.22. Отложенная интерполяция
2.23. Разбор данных, разделенных запятыми
2.24. Преобразование строки в число (десятичное или иное)
2.25. Кодирование и декодирование строк в кодировке rot13
2.26. Шифрование строк
2.27. Сжатие строк
2.28. Подсчет числа символов в строке
2.29. Обращение строки
2.30. Удаление дубликатов
2.31. Удаление заданных символов
2.32. Печать специальных символов
2.33. Генерирование последовательности строк
2.34. Вычисление 32-разрядного CRC
2.35. Вычисление МD5-свертки строки
2.36. Вычисление расстояния Левенштейна между двумя строками
2.37. base64-кодирование и декодирование
2.38. Кодирование и декодирование строк (uuencode/uudecode)
2.39. Замена символов табуляции пробелами и сворачивание пробелов в табуляторы
2.40. Цитирование текста
2.41. Заключение
Глава 3. Регулярные выражения
3.1. Синтаксис регулярных выражений
3.2. Компиляция регулярных выражений
3.3. Экранирование специальных символов
3.4. Якоря
3.5. Кванторы
3.6. Позитивное и негативное заглядывание вперед
3.7. Обратные ссылки
3.8. Классы символов
3.9. Обобщенные регулярные выражения
3.10. Сопоставление точки символу конца строки
3.11. Внутренние модификаторы
3.12. Внутренние подвыражения
3.13. Ruby и Oniguruma
3.13.1. Проверка наличия Oniguruma
3.13.2. Сборка Oniguruma
3.13.3. Некоторые новые возможности Oniguruma
3.13.4 Позитивное и негативное оглядывание назад
3.13.5. Еще о кванторах
3.13.6. Именованные соответствия
3.13.7. Рекурсия в регулярных выражениях
3.14. Примеры регулярных выражений
3.14.1. Сопоставление с IP-адресом
3.14.2. Сопоставление с парой «ключ-значение»
3.14.3. Сопоставление с числами, записанными римскими цифрами
3.14.4 Сопоставление с числовыми константами
3.14.5 Сопоставление с датой и временем
3.14.6. Обнаружение повторяющихся слов в тексте
3.14.7. Поиск слов, целиком набранных прописными буквами
3.14.8. Сопоставление с номером версии
3.14.9. Еще несколько образцов
3.15. Заключение
Глава 4. Интернационализация в Ruby
4.1. Исторические сведения и терминология
4.2. Кодировки в пост-ASCII мире
4.2.1. Библиотека jcode и переменная $KCODE
4.2.2. Возвращаясь к строкам и регулярным выражениям
4.2.3. Распознавание кодировки
4.2.4. Нормализация Unicode-строк
4.2.5. Упорядочение строк
4.2.6. Преобразование из одной кодировки в другую
4.3. Справочники сообщений
4.3.1 Исторические сведения и терминология
4.3.2. Приступаем к работе со справочниками сообщений
4.3.3. Локализация простого приложения
4.3.4. Прочие замечания
4.4. Заключение
Глава 5. Численные методы
5.1. Представление чисел в языке Ruby
5.2. Основные операции над числами
5.3. Округление чисел с плавающей точкой
5.4. Сравнение чисел с плавающей точкой
5.5. Форматирование чисел для вывода
5.6. Вставка разделителей при форматировании чисел
5.7. Работа с очень большими числами
5.8. Использование класса BigDecimal
5.9. Работа с рациональными числами
5.10. Перемножение матриц
5.11. Комплексные числа
5.12. Библиотека mathn
5.13. Разложение на простые множители, вычисление НОД и НОК
5.14. Простые числа
5.15. Явные и неявные преобразования чисел
5.16. Приведение числовых значений
5.17. Поразрядные операции над числами
5.18. Преобразование системы счисления
5.19. Извлечение кубических корней, корней четвертой степени и т.д.
5.20. Определение порядка байтов
5.21. Численное вычисление определенного интеграла
5.22. Тригонометрия в градусах, радианах и градах
5.23. Неэлементарная тригонометрия
5.24. Вычисление логарифмов по произвольному основанию
5.25. Вычисление среднего, медианы и моды набора данных
5.26. Дисперсия и стандартное отклонение
5.27. Вычисление коэффициента корреляции
5.28. Генерирование случайных чисел
5.29. Кэширование функций с помощью метода memoize
5.30. Заключение
Глава 6. Символы и диапазоны
6.1. Символы
6.1.1. Символы как перечисления
6.1.2. Символы как метазначения
6.1.3. Символы, переменные и методы
6.1.4. Преобразование строки в символ и обратно
6.2. Диапазоны
6.2.1. Открытые и замкнутые диапазоны
6.2.2. Нахождение границ диапазона
6.2.3. Обход диапазона
6.2.4. Проверка принадлежности диапазону
6.2.5. Преобразование в массив
6.2.6. Обратные диапазоны
6.2.7. Оператор переключения
6.2.8. Нестандартные диапазоны
6.3. Заключение
Глава 7. Дата и время
7.1. Определение текущего момента времени
7.2. Работа с конкретными датами (после точки отсчета)
7.3. Определение дня недели
7.4. Определение даты Пасхи
7.5. Вычисление n-ого дня недели в месяце
7.6. Преобразование из секунд в более крупные единицы
7.7. Вычисление промежутка времени, прошедшего от точки отсчета
7.8. Високосные секунды
7.9. Определение порядкового номера дня в году
7.10. Контроль даты и времени
7.11. Определение недели в году
7.12. Проверка года на високосность
7.13. Определение часового пояса
7.14. Манипулирование временем без даты
7.15 Сравнение моментов времени
7.16 Прибавление интервала к моменту времени
7.17. Вычисление разности между двумя моментами времени
7.18. Работа с конкретными датами (до точки отсчета)
7.19. Взаимные преобразования объектов Date, Time и DateTime
7.20. Извлечение даты и времени из строки
7.21. Форматирование и печать даты и времени
7.22. Преобразование часовых поясов
7.23. Определение числа дней в месяце
7.24. Разбиение месяца на недели
7.25. Заключение
Глава 8. Массивы, хэши и другие перечисляемые структуры
8.1. Массивы
8.1.1. Создание и инициализация массива
8.1.2. Доступ к элементам массива и присваивание им значений
8.1.3. Определение размера массива
8.1.4. Сравнение массивов
8.1.5. Сортировка массива
8.1.6. Выборка из массива по заданному критерию
8.1.7. Специализированные функции индексирования
8.1.8. Реализация разреженной матрицы
8.1.9. Массивы как математические множества
8.1.10. Рандомизация массива
8.1.11. Многомерные массивы
8.1.12. Нахождение элементов, принадлежащих одному массиву и не принадлежащих другому
8.1.13. Преобразование или отображение массивов
8.1.14. Удаление из массива элементов равных nil
8.1.15. Удаление заданных элементов из массива
8.1.16. Конкатенирование массивов и добавление в конец массива
8.1.17. Использование массива в качестве стека или очереди
8.1.18. Обход массива
8.1.19. Преобразование массива в строку с разделителями
8.1.20. Обращение массива
8.1.21. Удаление дубликатов из массива
8.1.22. Чередование массивов
8.1.23. Вычисление частоты различных значений в массиве
8.1.24. Инвертирование массива для получения хэша
8.1.25. Синхронная сортировка нескольких массивов
8.1.26. Указание значения по умолчанию для новых элементов массива
8.2. Хэши
8.2.1. Создание нового хэша
8.2.2. Указание значения по умолчанию для хэша
8.2.3. Доступ к парам ключ-значение и добавление новых пар
8.2.4. Удаление пар ключ-значение
8.2.5. Обход хэша
8.2.6. Инвертирование хэша
8.2.7. Поиск ключей и значений в хэше
8.2.8. Копирование хэша в массив
8.2.9. Выборка пар ключ-значение по заданному критерию
8.2.10. Сортировка хэша
8.2.11. Объединение двух хэшей
8.2.12. Создание хэша из массива
8.2.13. Вычисление разности и пересечения хэшей
8.2.14. Хэш как разреженная матрица
8.2.15. Реализация хэша с повторяющимися ключами
8.3. Перечисляемые структуры в общем
8.3.1. Метод inject
8.3.2. Кванторы
8.3.3. Метод partition
8.3.4. Обход с группировкой
8.3.5. Преобразование в массив или множество
8.3.6. Энумераторы
8.3.7. Объекты-генераторы
8.4. Заключение
Глава 9. Более сложные структуры данных
9.1.
Множества
9.1.1. Простые операции над множествами
9.1.2. Более сложные операции над множествами
9.2. Стеки и очереди
9.2.1. Более строгая реализация стека
9.2.2. Обнаружение несбалансированных скобок
9.2.3. Стек и рекурсия
9.2.4. Более строгая реализация очереди
9.3. Деревья
9.3.1. Реализация двоичного дерева
9.3.2. Сортировка с помощью двоичного дерева
9.3.3. Использование двоичного дерева как справочной таблицы
9.3.4. Преобразование дерева в строку или массив
9.4. Графы
9.4.1. Реализация графа в виде матрицы смежности
9.4.2. Является ли граф связным?
9.4.3. Есть ли в графе эйлеров цикл?
9.4.4. Есть ли в графе эйлеров путь?
9.4.5. Инструменты для работы с графами в Ruby
9.5. Заключение
Глава 10. Ввод/вывод и хранение данных
10.1. Файлы и каталоги
10.1.1.
Открытие и закрытие файлов
10.1.2. Обновление файла
10.1.3. Дописывание в конец файла
10.1.4. Прямой доступ к файлу
10.1.5. Работа с двоичными файлами
10.1.6. Блокировка файлов
10.1.7. Простой ввод/вывод
10.1.8. Буферизованный и небуферизованный ввод/вывод
10.1.9. Манипулирование правами владения и разрешениями на доступ к файлу
10.1.10. Получение и установка временных штампов
10.1.11. Проверка существования и получение размера файла
10.1.12. Опрос специальных свойств файла
10.1.13. Каналы
10.1.14. Специальные операции ввода/вывода
10.1.15. Неблокирующий ввод/вывод
10.1.16. Применение метода readpartial
10.1.17. Манипулирование путевыми именами
10.1.18. Класс Pathname
10.1.19. Манипулирование файлами на уровне команд
10.1.20. Ввод символов с клавиатуры
10.1.21. Чтение всего файла в память
10.1.22. Построчное чтение из файла
10.1.23. Побайтное чтение из файла
10.1.24. Работа со строкой как с файлом
10.1.25. Чтение данных, встроенных в текст программы
10.1.26. Чтение исходного текста программы
10.1.27. Работа с временными файлами
10.1.28. Получение и изменение текущего каталога
10.1.29. Изменение текущего корня
10.1.30. Обход каталога
10.1.31. Получение содержимого каталога
10.1.32. Создание цепочки каталогов
10.1.33. Рекурсивное удаление каталога
10.1.34. Поиск файлов и каталогов
10.2. Доступ к данным более высокого уровня
10.2.1. Простой маршалинг
10.2.2. Более сложный маршалинг
10.2.3. Ограниченное «глубокое копирование» в ходе маршалинга
10.2.4. Обеспечение устойчивости объектов с помощью библиотеки PStore
10.2.5. Работа с данными в формате CSV
10.2.6. Маршалинг в формате YAML
10.2.7. Преобладающие объекты и библиотека Madeleine
10.2.8. Библиотека DBM
10.3. Библиотека KirbyBase
10.4. Подключение к внешним базам данных
10.4.1. Интерфейс с SQLite
10.4.2. Интерфейс с MySQL
10.4.3. Интерфейс с PostgreSQL
10.4.4. Интерфейс с LDAP
10.4.5. Интерфейс с Oracle
10.4.6. Обертка вокруг DBI
10.4.7. Объектно-реляционные отображения (ORM)
10.5. Заключение
Глава 11. ООП и динамические механизмы в Ruby
11.1. Рутинные объектно-ориентированные задачи
11.1.1. Применение нескольких конструкторов
11.1.2. Создание атрибутов экземпляра
11.1.3. Более сложные конструкторы
11.1.4. Создание атрибутов и методов уровня класса
11.1.5. Наследование суперклассу
11.1.6. Опрос класса объекта
11.1.7. Проверка объектов на равенство
11.1.8. Управление доступом к методам
11.1.9. Копирование объектов
11.1.10. Метод initialize_copy
11.1.11. Метод allocate
11.1.12. Модули
11.1.13. Трансформация или преобразование объектов
11.1.14. Классы, содержащие только данные (Struct)
11.1.15. Замораживание объектов
11.2. Более сложные механизмы
11.2.1. Отправка объекту явного сообщения
11.2.2. Специализация отдельного объекта
11.2.3. Вложенные классы и модули
11.2.4. Создание параметрических классов
11.2.5. Использование продолжений для реализации генератора
11.2.6. Хранение кода в виде объекта
11.2.7. Как работает включение модулей?
11.2.8. Опознание параметров, заданных по умолчанию
11.2.9. Делегирование или перенаправление
11.2.10. Автоматическое определение методов чтения и установки на уровне класса
11.2.11. Поддержка различных стилей программирования
11.3. Динамические механизмы
11.3.1. Динамическая интерпретация кода
11.3.2. Метод const_get
11.3.3. Динамическое создание экземпляра класса, заданного своим именем
11.3.4. Получение и установка переменных экземпляра
11.3.5. Метод define_method
11.3.6. Метод const_missing
11.3.7. Удаление определений
11.3.8. Получение списка определенных сущностей
11.3.9. Просмотр стека вызовов
11.3.10. Мониторинг выполнения программы
11.3.11. Обход пространства объектов
11.3.12. Обработка вызовов несуществующих методов
11.3.13. Отслеживание изменений в определении класса или объекта
11.3.14. Определение чистильщиков для объектов
11.4. Заключение
Глава 12. Графические интерфейсы для Ruby
12.1. Ruby/Tk
12.1.1. Обзор
12.1.2. Простое оконное приложение
12.1.3. Кнопки
12.1.4. Текстовые поля
12.1.5. Прочие виджеты
12.1.6. Дополнительные замечания
12.2. Ruby/GTK2
12.2.1. Обзор
12.2.2. Простое оконное приложение
12.2.3. Кнопки
12.2.4. Текстовые поля
12.2.5. Прочие виджеты
12.2.6. Дополнительные замечания
12.3. FXRuby (FOX)
12.3.1. Обзор
12.3.2. Простое оконное приложение
12.3.3. Кнопки
12.3.4. Текстовые поля
12.3.5. Прочие виджеты
12.3.6. Дополнительные замечания
12.4. QtRuby
12.4.1. Обзор
12.4.2. Простое оконное приложение
12.4.3. Кнопки
12.4.4. Текстовые поля
12.4.5. Прочие виджеты
12.4.6. Дополнительные замечания
12.5. Другие библиотеки для создания графических интерфейсов
12.5.1. Ruby и X
12.5.2. Ruby и wxWidgets
12.5.3. Apollo (Ruby и Delphi)
12.5.4. Ruby и Windows API
12.6. Заключение
Глава 13. Потоки в Ruby
13.1. Создание потоков и манипулирование ими
13.1.1. Создание потоков
13.1.2. Доступ к локальным переменным потока
13.1.3. Опрос и изменение состояния потока
13.1.4. Назначение рандеву (и получение возвращенного значения)
13.1.5. Обработка исключений
13.1.6. Группы потоков
13.2. Синхронизация потоков
13.2.1. Синхронизация с помощью критических секций
13.2.2. Синхронизация доступа к ресурсам (mutex.rb)
13.2.3. Предопределенные классы синхронизированных очередей
13.2.4. Условные переменные
13.2.5. Другие способы синхронизации
13.2.6. Тайм-аут при выполнении операций
13.2.7. Ожидание события
13.2.8. Продолжение обработки во время ввода/вывода
13.2.9. Реализация параллельных итераторов
13.2.10. Параллельное рекурсивное удаление
13.3. Заключение
Глава 14. Сценарии и системное администрирование
14.1. Запуск внешних программ
14.1.1. Методы system и exec
14.1.2. Перехват вывода программы
14.1.3. Манипулирование процессами
14.1.4. Стандартный ввод и вывод
14.2. Флаги и аргументы в командной строке
14.2.1. Разбор флагов в командной строке
14.2.2. Константа ARGF
14.2.3. Константа ARGV
14.3. Библиотека Shell
14.3.1. Использование библиотеки Shell для перенаправления ввода/вывода
14.3.2. Дополнительные замечания по поводу библиотеки shell.rb
14.4. Переменные окружения
14.4.1. Чтение и установка переменных окружения
14.4.2. Хранение переменных окружения в виде массива или хэша
14.4.3. Импорт переменных окружения как глобальных переменных
14.5. Сценарии на платформе Microsoft Windows
14.5.1. Расширение Win32API
14.5.2. Расширение Win32OLE
14.5.3. Использование ActiveScriptRuby
14.6. Моментальный инсталлятор для Windows
14.7. Библиотеки, о которых полезно знать
14.8. Работа с файлами, каталогами и деревьями
14.8.1. Несколько слов о текстовых фильтрах
14.8.2. Копирование дерева каталогов (с символическими ссылками)
14.8.3. Удаление файлов по времени модификации и другим критериям
14.8.4. Вычисление свободного места на диске
14.9. Различные сценарии
14.9.1. Ruby в виде одного файла
14.9.2. Подача входных данных Ruby по конвейеру
14.9.3. Получение и установка кодов завершения
14.9.4. Работает ли Ruby в интерактивном режиме?
14.9.5. Определение текущей платформы или операционной системы
14.9.6. Модуль Etc
14.10. Заключение
Глава 15. Ruby и форматы данных
15.1. Разбор XML и REXML
15.1.1. Древовидное представление
15.1.2. Потоковый разбор
15.1.3. XPath и другие интерфейсы
15.2. RSS и Atom
15.2.1. Стандартная библиотека rss
15.2.2. Библиотека feedtools
15.3. Обработка изображений при помощи RMagick
15.3.1. Типичные графические задачи
15.3.2. Специальные эффекты и трансформации
15.3.3. API рисования
15.4. Создание документов в формате PDF с помощью библиотеки PDF::Writer
15.4.1. Основные концепции и приемы
15.4.2. Пример документа
15.5. Заключение
Глава 16. Тестирование и отладка
16.1. Библиотека Test::Unit
16.2. Комплект инструментов ZenTest
16.3. Работа с отладчиком Ruby
16.4. Использование irb в качестве отладчика
16.5. Измерение покрытия кода
16.6. Измерение производительности
16.7. Объекты печати
16.8. Заключение
Глава 17. Создание пакетов и распространение программ
17.1. Программа RDoc
17.1.1. Простая разметка
17.1.2. Более сложное форматирование
17.2. Установка и подготовка пакета
17.2.1. Библиотека setup.rb
17.2.2. Система RubyGems
17.3. RubyForge и RAA
17.4. Заключение
Глава 18. Сетевое программирование
18.1. Сетевые серверы
18.1.1. Простой сервер: время дня
18.1.2. Реализация многопоточного сервера
18.1.3. Пример: сервер для игры в шахматы по сети
18.2. Сетевые клиенты
18.2.1. Получение истинно случайных чисел из Web
18.2.2. Запрос к официальному серверу времени
18.2.3. Взаимодействие с РОР-сервером
18.2.4. Отправка почты по протоколу SMTP
18.2.5. Взаимодействие с IMAP-сервером
18.2.6. Кодирование и декодирование вложений
18.2.7. Пример: шлюз между почтой и конференциями
18.2.8. Получение Web-страницы с известным URL
18.2.9. Библиотека Open-URI
18.3. Заключение
Глава 19. Ruby и Web-приложения
19.1. Программирование CGI на Ruby
19.1.1. Введение в библиотеку cgi.rb
19.1.2. Вывод и обработка форм
19.1.3. Куки
19.1.4. Сеансы пользователей
19.2. FastCGI
19.3. Ruby on Rails
19.3.1. Принципы и техника
19.3.2. Тестирование и отладка приложений Rails
19.3.3.
Базовые расширения
19.3.4. Дополнительные инструменты и библиотеки
19.4. Разработка Web-приложений с помощью Nitro
19.4.1. Создание простого приложения Nitro
19.4.2. Nitro и паттерн MVC
19.4.3. Nitro и Og
19.4.4. Решение типичных для Web-приложений задач в Nitro
19.4.5. Прочие детали
19.5. Введение в Wee
19.5.1. Простой пример
19.5.2. Ассоциирование состояния с URL
19.6. Разработка Web-приложений с помощью IOWA
19.6.1. Основные идеи IOWA
19.6.2. Шаблоны в IOWA
19.6.3. Передача управления компоненту
19.7. Ruby и Web-сервер
19.7.1. Модуль mod_ruby
19.7.2. Использование erb
19.7.3. Сервер WEBrick
19.7.4. Сервер Mongrel
19.8. Заключение
Глава 20. Распределенный Ruby
20.1. Обзор: библиотека drb
20.2. Пример: эмуляция биржевой ленты
20.3. Rinda: пространство кортежей в Ruby
20.4. Обнаружение сервисов в распределенном Ruby
20.5. Заключение
Глава 21. Инструменты разработки для Ruby
21.1. Система RubyGems
21.2. Программа Rake
21.3. Оболочка irb
21.4. Утилита ri
21.5. Поддержка со стороны редакторов
21.6. Интегрированные среды разработки
21.7. Заключение
Глава 22. Сообщество пользователей Ruby
22.1. Ресурсы в Web
22.2. Новостные группы и списки рассылки
22.3. Блоги и онлайновые журналы
22.4. Запросы на изменение Ruby
22.5. Каналы IRC
22.6. Конференции по Ruby
22.7. Локальные группы пользователей Ruby
22.8. Заключение
Альтернативная медицина
Астрономия и Космос
Биология
Военная история
Геология и география
Государство и право
Деловая литература
Домашние животные
Домоводство
Здоровье
История
Компьютеры и Интернет
Кулинария
Культурология
Литературоведение
Математика
Медицина
Научная лит. - прочее
Обществознание
Педагогика
Политика
Психология
Религиоведение
Сад и огород
Самосовершенствование
Сделай сам
Спорт
Технические науки
Транспорт и авиация
Учебники
Физика
Философия
Химия
Хобби и ремесла
Шпаргалки
Эзотерика
Юриспруденция
Языкознание
Главная
|
В избранное
|
Наш E-MAIL
|
Добавить материал
|
Нашёл ошибку
|
Наверх