Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 638309)
Контекстум
Электро-2024

Путь Ruby (4000,00 руб.)

0   0
Первый авторФултон
АвторыАрко А.
ИздательствоМ.: ДМК Пресс
Страниц666
ID836629
АннотацияУже больше десяти лет программисты на Ruby обращаются к данной книге как к надежному источнику сведений о том, как эффективно писать на этом языке. А теперь Хэл Фултон и Андрэ Арко изрядно обновили этот классический труд, включив описание новых средств языка и инструментов. Новое издание охватывает версию Ruby 2.1 и содержит более 400 примеров, отвечающих на вопрос «Как это делается в Ruby?». Все примеры сопровождаются подробным описанием задачи и технических ограничений. Затем дается пошаговое объяснение одного хорошего решения с детальными комментариями, позволяющими лучше усвоить материал. Третье издание удобно организовано по темам, так что стало еще проще найти ответ на свой вопрос и писать более качественный код в согласии с духом и философией Ruby.
ISBN978-5-89818-334-9
Фултон, Х. Путь Ruby / А. Арко; Х. Фултон .— Москва : ДМК Пресс, 2023 .— 666 с. — ISBN 978-5-89818-334-9 .— URL: https://rucont.ru/efd/836629 (дата обращения: 09.06.2024)

Предпросмотр (выдержки из произведения)

Путь_Ruby.pdf
Стр.5
Стр.7
Стр.8
Стр.9
Стр.10
Стр.11
Стр.12
Стр.13
Стр.14
Стр.15
Стр.16
Стр.17
Стр.18
Стр.19
Стр.20
Стр.21
Стр.22
Путь_Ruby.pdf
УДК 004.438Ruby ББК 32.973.22 Ф94 Ф94 Фултон, Хэл. Путь Ruby / Х. Фултон, А. Арко ; пер. с англ. А. A. Слинкина. — 4-е изд., эл. — 1 файл pdf : 666 с. — Москва : ДМК Пресс, 2023. — Систем. требования: Adobe Reader XI либо Adobe Digital Editions 4.5 ; экран 10". — Текст : электронный. ISBN 978-5-89818-334-9 Уже больше десяти лет программисты на Ruby обращаются к данной книге как к надежному источнику сведений о том, как эффективно писать на этом языке. А теперь Хэл Фултон и Андрэ Арко изрядно обновили этот классический труд, включив описание новых средств языка и инструментов. Новое издание охватывает версию Ruby 2.1 и содержит более 400 примеров, отвечающих на вопрос «Как это делается в Ruby?». Все примеры сопровождаются подробным описанием задачи и технических ограничений. Затем дается пошаговое объяснение одного хорошего решения с детальными комментариями, позволяющими лучше усвоить материал. Третье издание удобно организовано по темам, так что стало еще проще найти ответ на свой вопрос и писать более качественный код в согласии с духом и философией Ruby. УДК 004.438Ruby ББК 32.973.22 Электронное издание на основе печатного издания: Путь Ruby / Х. Фултон, А. Арко ; пер. с англ. А. A. Слинкина. — 3-е изд. — Москва : ДМК Пресс, 2016. — 664 с. — ISBN 978-5-97060-320-8. — Текст : непосредственный. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами защиты авторских прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации. ISBN 978-5-89818-334-9 © Pearson Education, Inc. © Оформление, перевод, ДМК Пресс, 2016
Стр.5
Содержание Предисловие ......................................................... 22 Благодарности ....................................................... 26 Об авторах ............................................................ 29 Введение .............................................................. 30 Глава 1. Обзор Ruby ................................................ 39 1.1. Введение в объектно-ориентированное программирование .....................................................................40 1.1.1. Что такое объект ............................................................40 1.1.2. Наследование................................................................41 1.1.3. Полиморфизм ...............................................................43 1.1.4. Еще немного терминов ..................................................44 1.2. Базовый синтаксис и семантика Ruby ...................................45 1.2.1. Ключевые слова и идентификаторы ...............................46 1.2.2. Комментарии и встроенная документация .....................47 1.2.3. Константы, переменные и типы .....................................47 1.2.4. Операторы и приоритеты ...............................................49 1.2.5. Пример программы .......................................................50 1.2.6. Циклы и ветвление.........................................................53 1.2.7. Исключения ...................................................................57 1.3. ООП в Ruby ...........................................................................59 1.3.1. Объекты ........................................................................60 1.3.2. Встроенные классы .......................................................60 1.3.3. Модули и классы-примеси .............................................61 1.3.4. Создание классов ..........................................................62 1.3.5. Методы и атрибуты ........................................................66 1.4. Динамические аспекты Ruby .................................................68 1.4.1. Кодирование во время выполнения ...............................69 1.4.2. Отражение .....................................................................70 1.4.3. Отсутствующие методы .................................................72
Стр.7
Содержание 7 1.4.4. Сборка мусора...............................................................72 1.5. Потренируйте свою интуицию: что следует запомнить..........73 1.5.1. Синтаксис ......................................................................73 1.5.2. Отличия от других языков ..............................................75 1.5.3. Предложение case в Ruby ..............................................77 1.5.4. Рубизмы и идиомы ........................................................80 1.5.5. Ориентация на выражения и прочие вопросы ................85 1.6. Жаргон Ruby .........................................................................87 1.7. Заключение ..........................................................................90 Глава 2. Строки ...................................................... 91 2.1. Представление обычных строк .............................................91 2.2. Альтернативная нотация для представления строк ...............92 2.3. Встроенные документы ........................................................93 2.4. Получение длины строки ......................................................94 2.5. Построчная обработка ..........................................................94 2.6. Побайтовая обработка ..........................................................95 2.7. Специализированное сравнение строк .................................96 2.8. Разбиение строки на лексемы ..............................................97 2.9. Форматирование строк ........................................................98 2.10. Строки в качестве объектов ввода-вывода ..........................99 2.11. Управление регистром .......................................................99 2.12. Вычленение и замена подстрок ........................................100 2.13. Подстановка в строках ......................................................102 2.14. Поиск в строке ..................................................................103 2.15. Преобразование символов в коды ASCII и обратно ...........104 2.16. Явные и неявные преобразования ....................................104 2.17. Дописывание в конец строки ............................................106 2.18. Удаление хвостовых символов новой строки и прочих ......106 2.19. Убирание лишних пропусков .............................................107 2.20. Повтор строк ....................................................................108 2.21. Включение выражений в строку ........................................108 2.22. Отложенная интерполяция ................................................109 2.23. Разбор данных, разделенных запятыми ............................109 2.24. Преобразование строки в число (десятичное или иное) ....110 2.25. Кодирование и декодирование строк в кодировке rot13 ....111 2.26. Шифрование строк ...........................................................112 2.27. Сжатие строк ....................................................................113 2.28. Подсчет числа символов в строке .....................................113 2.29. Обращение строки ............................................................114
Стр.8
8 Содержание 2.30. Удаление дубликатов ........................................................114 2.31. Удаление заданных символов ...........................................114 2.32. Печать специальных символов ..........................................115 2.33. Генерирование последовательности строк .......................115 2.34. Вычисление 32-разрядного CRC .......................................115 2.35. Вычисление SHA-256-свертки строки ...............................116 2.36. Вычисление расстояния Левенштейна между двумя строками ...................................................................................117 2.37. base64-кодирование и декодирование строк ....................118 2.38. Замена символов табуляции пробелами и сворачивание пробелов в табуляторы ....................................119 2.39. Перенос строк по словам ..................................................120 2.40. Заключение ......................................................................121 Глава 3. Регулярные выражения ...............................122 3.1. Синтаксис регулярных выражений ......................................122 3.2. Компиляция регулярных выражений ...................................124 3.3. Экранирование специальных символов ..............................125 3.4. Якоря ..................................................................................125 3.5. Кванторы ............................................................................126 3.6. Позитивное и негативное заглядывание вперед .................128 3.7. Позитивное и негативное оглядывание назад .....................129 3.8. Обратные ссылки ................................................................130 3.9. Именованные соответствия ................................................133 3.10. Классы символов ..............................................................134 3.11. Обобщенные регулярные выражения ................................135 3.12. Сопоставление точки символу конца строки .....................136 3.13. Внутренние модификаторы ..............................................137 3.14. Внутренние подвыражения ...............................................137 3.14.1. Рекурсия в регулярных выражениях ...........................138 3.15. Примеры регулярных выражений ......................................139 3.15.1. Сопоставление с IP-адресом .....................................139 3.15.2. Сопоставление с парой «ключ-значение» ...................140 3.15.3. Сопоставление с числами, записанными римскими цифрами ..............................................................140 3.15.4. Сопоставление с числовыми константами .................141 3.15.5. Сопоставление с датой и временем ...........................141 3.15.6. Обнаружение удвоенных слов в тексте ......................142 3.15.7. Поиск слов, записанных одними заглавными буквами ................................................................................142
Стр.9
Содержание 9 3.15.8. Сопоставление с номером версии .............................143 3.15.9. Еще несколько образцов............................................143 3.16. Заключение ......................................................................144 Глава 4. Интернационализация в Ruby .......................145 4.1. Исторические сведения и терминология ............................146 4.2. Работа с кодировками ........................................................150 4.2.1. Нормализация .............................................................151 4.2.2. Преобразование из одной кодировки в другую ............154 4.2.3. Транслитерация ...........................................................155 4.2.4. Упорядочение строк ....................................................156 4.3. Перевод .............................................................................158 4.3.1. Значения по умолчанию ...............................................160 4.3.2. Пространства имен ......................................................161 4.3.3. Интерполяция ..............................................................161 4.3.4. Формы множественного числа ....................................162 4.4. Локализованное форматирование ......................................164 4.4.1. Дата и время ...............................................................164 4.4.2. Числа ...........................................................................165 4.4.3. Денежные величины ....................................................165 4.5. Заключение ........................................................................165 Глава 5. Численные методы .....................................167 5.1. Представление чисел в языке Ruby .....................................167 5.2. Основные операции над числами .......................................168 5.3. Округление чисел с плавающей точкой ...............................169 5.4. Сравнение чисел с плавающей точкой ................................171 5.5. Форматирование чисел для вывода ....................................172 5.6. Вставка разделителей при форматировании чисел ............173 5.7. Работа с очень большими числами .....................................173 5.8. Использование класса BigDecimal ......................................174 5.9. Работа с рациональными числами ......................................175 5.10. Перемножение матриц .....................................................176 5.11. Комплексные числа ..........................................................180 5.12. Библиотека mathn .............................................................181 5.13. Разложение на простые множители, вычисление НОД и НОК ........................................................................................181 5.14. Простые числа ..................................................................182 5.15. Явные и неявные преобразования чисел ...........................183 5.16. Приведение числовых значений........................................184
Стр.10
10 Содержание 5.17. Поразрядные операции над числами ................................185 5.18. Преобразование системы счисления ................................186 5.19. Извлечение кубических корней, корней четвертой степени и т.д. ............................................................................187 5.20. Определение порядка байтов ...........................................188 5.21. Численное вычисление определенного интеграла ............189 5.22. Тригонометрия в градусах, радианах и градах ..................190 5.23. Вычисление логарифмов по произвольному основанию ...191 5.24. Вычисление среднего, медианы и моды набора данных ...191 5.25. Дисперсия и стандартное отклонение ..............................193 5.26. Вычисление коэффициента корреляции ...........................193 5.27. Генерирование случайных чисел .......................................195 5.28. Кэширование функций с помощью метода memoize .........195 5.29. Заключение ......................................................................197 Глава 6. Символы и диапазоны ................................198 6.1. Символы .............................................................................198 6.1.1. Символы как перечисления .........................................200 6.1.2. Символы как метазначения..........................................200 6.1.3. Символы, переменные и методы .................................201 6.1.4. Преобразование строки в символ и обратно ................201 6.2. Диапазоны ..........................................................................203 6.2.1. Открытые и замкнутые диапазоны ...............................203 6.2.2. Нахождение границ диапазона ....................................203 6.2.3. Обход диапазона .........................................................203 6.2.4. Проверка принадлежности диапазону .........................204 6.2.5. Преобразование в массив ...........................................205 6.2.6. Обратные диапазоны ...................................................205 6.2.7. Оператор переключения ..............................................206 6.2.8. Нестандартные диапазоны ..........................................208 6.3. Заключение ........................................................................211 Глава 7. Дата и время .............................................212 7.1. Определение текущего момента времени ..........................213 7.2. Работа с конкретными датами (после точки отсчета) ..........213 7.3. Определение дня недели ....................................................214 7.4. Определение даты Пасхи ....................................................215 7.5. Вычисление n-ого дня недели в месяце ..............................215 7.6. Преобразование из секунд в более крупные единицы .........216 7.7. Вычисление промежутка времени, прошедшего
Стр.11
Содержание 11 от точки отсчета ........................................................................217 7.8. Високосные секунды ..........................................................217 7.9. Определение порядкового номера дня в году .....................218 7.10. Контроль даты и времени .................................................218 7.11. Определение недели в году ..............................................219 7.12. Проверка года на високосность ........................................220 7.13. Определение часового пояса ............................................220 7.14. Манипулирование временем без даты ..............................221 7.15. Сравнение моментов времени ..........................................221 7.16. Прибавление интервала к моменту времени .....................221 7.17. Вычисление разности между двумя моментами времени ....................................................................................222 7.18. Работа с конкретными датами (до точки отсчета) ..............222 7.19. Взаимные преобразования объектов Date, Time и DateTime .................................................................................223 7.20. Извлечение даты и времени из строки ..............................223 7.21. Форматирование и печать даты и времени .......................224 7.22. Преобразование часовых поясов ......................................225 7.23. Определение числа дней в месяце ...................................225 7.24. Разбиение месяца на недели ............................................226 7.25. Заключение ......................................................................227 Глава 8. Массивы, хэши и другие перечисляемые структуры .........................................................228 8.1. Массивы .............................................................................228 8.1.1. Создание и инициализация массива............................229 8.1.2. Доступ к элементам массива и присваивание им значений ..........................................................................230 8.1.3. Определение размера массива ...................................231 8.1.4. Сравнение массивов ...................................................231 8.1.5. Сортировка массива ....................................................233 8.1.6. Выборка из массива по заданному критерию ..............235 8.1.7. Специализированные функции индексирования..........236 8.1.8. Реализация разреженной матрицы ..............................238 8.1.9. Массивы как математические множества ....................239 8.1.10. Рандомизация массива .............................................242 8.1.11. Многомерные массивы ..............................................243 8.1.12. Нахождение элементов, принадлежащих одному массиву и не принадлежащих другому ..................................244 8.1.13. Преобразование или отображение массивов .............244
Стр.12
12 Содержание 8.1.14. Удаление элементов, равных nil, из массива ..............244 8.1.15. Удаление заданных элементов из массива ................244 8.1.16. Конкатенирование массивов и добавление в конец массива ....................................................................246 8.1.17. Использование массива в качестве стека или очереди ..........................................................................247 8.1.18. Обход массива ..........................................................247 8.1.19. Преобразование массива в строку с разделителями ...................................................................248 8.1.20. Обращение массива ..................................................248 8.1.21. Удаление дубликатов из массива ...............................248 8.1.22. Чередование массивов ..............................................248 8.1.23. Вычисление частоты различных значений в массиве ..............................................................................249 8.1.24. Инвертирование массива для получения хэша ...........249 8.1.25. Синхронная сортировка нескольких массивов ...........250 8.1.26. Задание значения по умолчанию для новых элементов массива ...............................................................250 8.2. Хэши ...................................................................................251 8.2.1. Создание нового хэша .................................................252 8.2.2. Задание значения по умолчанию для хэша ..................252 8.2.3. Доступ к парам ключ-значение и добавление новых пар ..............................................................................253 8.2.4. Удаление пар ключ-значение .......................................254 8.2.5. Обход хэша ..................................................................255 8.2.6. Инвертирование хэша .................................................255 8.2.7. Поиск ключей и значений в хэше ..................................256 8.2.8. Копирование хэша в массив ........................................256 8.2.9. Выборка пар ключ-значение по заданному критерию .....256 8.2.10. Сортировка хэша .......................................................257 8.2.11. Объединение двух хэшей ...........................................257 8.2.12. Создание хэша из массива ........................................258 8.2.13. Вычисление разности и пересечения хэшей ..............258 8.2.14. Хэш как разреженная матрица ...................................258 8.2.15. Реализация хэша с повторяющимися ключами ..........259 8.2.16. Другие операции с хэшем ..........................................262 8.3. Перечисляемые структуры в общем....................................262 8.3.1. Метод inject .................................................................263 8.3.2. Кванторы .....................................................................264
Стр.13
Содержание 13 8.3.3. Метод partition .............................................................264 8.3.4. Обход с группировкой .................................................265 8.3.5. Преобразование в массив или множество ...................266 8.3.6. Перечислители ............................................................266 8.4. Дополнительные сведения о перечисляемых объектах .......268 8.4.1. Поиск и выборка ..........................................................268 8.4.2. Подсчет и сравнение ...................................................269 8.4.3. Итерирование .............................................................269 8.4.4. Извлечение и преобразование ....................................270 8.4.5. Ленивые перечислители ..............................................271 8.5. Заключение ........................................................................271 Глава 9. Более сложные структуры данных ................273 9.1. Множества .........................................................................273 9.1.1. Простые операции над множествами ..........................274 9.1.2. Более сложные операции над множествами ................275 9.2. Стеки и очереди .................................................................276 9.2.1. Более строгая реализация стека .................................278 9.2.2. Обнаружение несбалансированных скобок ..................278 9.2.3. Стек и рекурсия ...........................................................279 9.2.4. Более строгая реализация очереди .............................281 9.3. Деревья ..............................................................................282 9.3.1. Реализация двоичного дерева .....................................282 9.3.2. Сортировка с помощью двоичного дерева ...................284 9.3.3. Использование двоичного дерева как справочной таблицы ................................................................................286 9.3.4. Преобразование дерева в строку или массив ..............286 9.4. Графы .................................................................................287 9.4.1. Реализация графа в виде матрицы смежности ............288 9.4.2. Является ли граф связным? .........................................290 9.4.3. Есть ли в графе эйлеров цикл? .....................................292 9.4.4. Есть ли в графе эйлеров путь? .....................................293 9.4.5. Инструменты для работы с графами в Ruby .................293 9.5. Заключение ........................................................................293 Глава 10. Ввод-вывод и хранение данных ..................295 10.1. Файлы и каталоги .............................................................296 10.1.1. Открытие и закрытие файлов .....................................296 10.1.2. Обновление файла ....................................................298 10.1.3. Дописывание в конец файла ......................................298
Стр.14
14 Содержание 10.1.4. Прямой доступ к файлу ..............................................298 10.1.5. Работа с двоичными файлами ....................................299 10.1.6. Блокировка файлов ...................................................300 10.1.7. Простой ввод-вывод ..................................................301 10.1.8. Буферизованный и небуферизованный ввод-вывод.....302 10.1.9. Манипулирование правами владения и разрешениями на доступ к файлу .......................................303 10.1.10. Получение и установка временных меток .................304 10.1.11. Проверка существования и получение размера файла ...................................................................................305 10.1.12. Опрос специальных свойств файла ..........................306 10.1.13. Каналы .....................................................................308 10.1.14. Специальные операции ввода-вывода .....................309 10.1.15. Неблокирующий ввод-вывод ...................................310 10.1.16. Применение метода readpartial ................................311 10.1.17. Манипулирование путевыми именами .....................311 10.1.18. Класс Pathname .......................................................312 10.1.19. Манипулирование файлами на уровне команд .........313 10.1.20. Ввод символов с клавиатуры ...................................314 10.1.21. Чтение всего файла в память ...................................315 10.1.22. Построчное чтение из файла ....................................315 10.1.23. Побайтное и посимвольное чтение из файла ...........315 10.1.24. Работа со строкой как с файлом...............................316 10.1.25. Копирование потока ................................................316 10.1.26. Работа с кодировками ..............................................317 10.1.27. Чтение данных, встроенных в текст программы .......317 10.1.28. Чтение исходного текста программы .......................317 10.1.29. Работа с временными файлами ...............................318 10.1.30. Получение и изменение текущего каталога ..............318 10.1.31. Изменение текущего корня ......................................319 10.1.32. Обход каталога ........................................................319 10.1.33. Получение содержимого каталога ............................319 10.1.34. Создание цепочки каталогов ....................................319 10.1.35. Рекурсивное удаление каталога ...............................320 10.1.36. Поиск файлов и каталогов ........................................320 10.2. Доступ к данным более высокого уровня ..........................321 10.2.1. Простой маршалинг ...................................................321 10.2.2. «Глубокое копирование» с помощью метода Marshal .....322 10.2.3. Более сложный маршалинг ........................................322
Стр.15
Содержание 15 10.2.4. Маршалинг в формате YAML ......................................323 10.2.5. Сохранение данных с помощью библиотеки JSON .....325 10.2.6. Работа с данными в формате CSV ..............................326 10.2.7. SQLite3 как SQL-хранилище данных ...........................327 10.3. Подключение к внешним базам данных .............................328 10.3.1. Подключение к базе данных MySQL ...........................329 10.3.2. Подключение к базе данных PostreSQL ......................331 10.3.3. Объектно-реляционные отображения (ORM) .............332 10.3.4. Подключение к хранилищу данных Redis ....................333 10.4. Заключение ......................................................................334 Глава 11. ООП и динамические механизмы в Ruby .......335 11.1. Рутинные объектно-ориентированные задачи ..................336 11.1.1. Применение нескольких конструкторов .....................336 11.1.2. Создание атрибутов экземпляра ...............................337 11.1.3. Более сложные конструкторы ....................................339 11.1.4. Создание атрибутов и методов уровня класса ...........341 11.1.5. Наследование суперклассу ........................................344 11.1.6. Опрос класса объекта ................................................346 11.1.7. Проверка объектов на равенство ...............................348 11.1.8. Управление доступом к методам ...............................349 11.1.9. Копирование объектов...............................................352 11.1.10. Метод initialize_copy .................................................353 11.1.11. Метод allocate ..........................................................354 11.1.12. Модули ....................................................................354 11.1.13. Трансформация или преобразование объектов .......358 11.1.14. Классы, содержащие только данные (Struct) ............359 11.1.15. Замораживание объектов ........................................360 11.1.16. Использование метода tap в цепочке методов .........362 11.2. Более сложные механизмы ...............................................362 11.2.1. Посылка объекту явного сообщения ..........................363 11.2.2. Специализация отдельного объекта ..........................364 11.2.3. Вложенные классы и модули ......................................368 11.2.4. Создание параметрических классов ..........................368 11.2.5. Хранение кода в виде объектов Proc ..........................371 11.2.6. Хранение кода в виде объектов Method .....................372 11.2.7. Использование символов в качестве блоков ..............373 11.2.8. Как работает включение модулей? .............................373 11.2.9. Опознание параметров, заданных по умолчанию .......376 11.2.10. Делегирование или перенаправление .....................376
Стр.16
16 Содержание 11.2.11. Автоматическое определение методов чтения и установки на уровне класса ................................................379 11.2.12. Поддержка различных стилей программирования ...380 11.3. Динамические механизмы ................................................382 11.3.1. Динамическая интерпретация кода ...........................382 11.3.2. Метод const_get .........................................................383 11.3.3. Получение класса по имени .......................................384 11.3.4. Метод define_method .................................................384 11.3.5. Получение списка определенных сущностей .............387 11.3.6. Удаление определений ..............................................389 11.3.7. Ссылки на несуществующие константы .....................391 11.3.8. Вызовы несуществующих методов ............................392 11.3.9. Повышение безопасности с помощью taint ................393 11.3.10. Определение чистильщиков для объектов ...............395 11.4. Интроспекция программы ................................................396 11.4.1. Обход пространства объектов ...................................396 11.4.2. Просмотр стека вызовов ............................................397 11.4.3. Отслеживание изменений в определении класса или объекта...........................................................................398 11.4.4. Мониторинг выполнения программы .........................401 11.5. Заключение ......................................................................402 Глава 12. Графические интерфейсы для Ruby .............403 12.1. Shoes 4 .............................................................................404 12.1.1. Начало работы с Shoes ..............................................404 12.1.2. Интерактивная кнопка ...............................................405 12.1.3. Текст и поле ввода .....................................................405 12.1.4. Компоновка ...............................................................407 12.1.5. Картинки и фигуры ....................................................408 12.1.6. События.....................................................................409 12.1.7. Прочие замечания .....................................................410 12.2. Ruby/Tk .............................................................................410 12.2.1. Обзор ........................................................................410 12.2.2. Простое оконное приложение ....................................411 12.2.3. Кнопки .......................................................................413 12.2.4. Текстовые поля ..........................................................416 12.2.5. Прочие виджеты ........................................................420 12.2.6. Дополнительные замечания ......................................423 12.3. Ruby/GTK3 ........................................................................423
Стр.17
Содержание 17 12.3.1. Обзор ........................................................................423 12.3.2. Простое оконное приложение ....................................424 12.3.3. Кнопки .......................................................................425 12.3.4. Текстовые поля ..........................................................427 12.3.5. Прочие виджеты ........................................................429 12.3.6. Дополнительные замечания ......................................434 12.4. QtRuby ..............................................................................435 12.4.1. Обзор ........................................................................435 12.4.2. Простое оконное приложение ....................................435 12.4.3. Кнопки .......................................................................436 12.4.4. Текстовые поля ..........................................................438 12.4.5. Прочие виджеты ........................................................439 12.4.6. Дополнительные замечания ......................................444 12.5. Swing ................................................................................444 12.6. Другие библиотеки для создания графических интерфейсов .............................................................................446 12.6.1. UNIX и X11 ..................................................................446 12.6.2. FXRuby (FOX) ..............................................................446 12.6.3. RubyMotion для iOS и Mac OS X ..................................447 12.6.4. Windows Win32 API ......................................................447 12.7. Заключение ......................................................................447 Глава 13. Потоки и параллелизм ..............................448 13.1. Создание потоков и манипулирование ими .......................450 13.1.1. Создание потоков ......................................................450 13.1.2. Доступ к поточно-локальным переменным ................451 13.1.3. Опрос и изменение состояния потока ........................452 13.1.4. Назначение рандеву (и получение возвращенного значения) ..............................................................................456 13.1.5. Обработка исключений ..............................................457 13.1.6. Группы потоков ..........................................................458 13.2. Синхронизация потоков ....................................................459 13.2.1. Простая синхронизация .............................................461 13.2.2. Синхронизация доступа с помощью мьютекса ...........462 13.2.3. Встроенные классы очередей ....................................464 13.2.4. Условные переменные ...............................................465 13.2.5. Другие способы синхронизации ................................467 13.2.6. Таймаут при выполнении операций ............................470 13.2.7. Ожидание события ....................................................472 13.2.8. Параллельный поиск в коллекции ..............................473 13.2.9. Параллельное рекурсивное удаление ........................474
Стр.18
18 Содержание 13.3. Волокна и кооперативная многозадачность ......................475 13.4. Заключение ......................................................................477 Глава 14. Скрипты и системное администрирование ...478 14.1. Запуск внешних программ ................................................478 14.1.1. Методы system и exec ................................................479 14.1.2. Запоминание вывода программы ..............................479 14.1.3. Манипулирование процессами ..................................480 14.1.4. Стандартный ввод и вывод ........................................483 14.2. Флаги и аргументы в командной строке ............................484 14.2.1. Константа ARGV .........................................................484 14.2.2. Константа ARGF .........................................................484 14.2.3. Разбор флагов в командной строке ...........................485 14.3. Библиотека Shell ...............................................................486 14.3.1. Использование библиотеки Shell для перенаправления ввода-вывода .....................................487 14.3.2. Дополнительные замечания по поводу библиотеки Shell ...................................................................488 14.4. Переменные окружения ....................................................489 14.4.1. Чтение и установка переменных окружения ...............489 14.4.2. Хранение переменных окружения в виде массива или хэша ...............................................................................490 14.5. Работа с файлами, каталогами и деревьями .....................491 14.5.1. Несколько слов о текстовых фильтрах ........................491 14.5.2. Копирование дерева каталогов (с символическими ссылками) .............................................................................491 14.5.3. Удаление файлов по времени модификации и другим критериям ..............................................................493 14.5.4. Вычисление свободного места на диске ....................494 14.6. Различные скрипты ...........................................................494 14.6.1. Распространение программ на Ruby ..........................494 14.6.2. Подача входных данных Ruby по конвейеру................495 14.6.3. Работает ли Ruby в интерактивном режиме? ..............496 14.6.4. Определение текущей платформы или операционной системы ..................................................497 14.6.5. Модуль Etc .................................................................497 14.7. Заключение ......................................................................498 Глава 15. Ruby и форматы данных ............................499 15.1. Разбор JSON ....................................................................500 15.1.1. Обход JSON-данных ..................................................500
Стр.19
Содержание 19 15.1.2. Типы данных, не представимые в JSON ......................501 15.1.3. Другие библиотеки для работы с JSON ......................502 15.2. Разбор XML (и HTML) ........................................................502 15.2.1. Разбор документа ......................................................503 15.2.2. Потоковый разбор .....................................................505 15.3. RSS и Atom........................................................................507 15.3.1. Разбор новостной ленты ............................................508 15.3.2. Создание новостных лент ..........................................509 15.4. Обработка изображений с помощью RMagick ...................510 15.4.1. Типичные графические задачи ...................................510 15.4.2. Специальные эффекты и преобразования .................513 15.4.3. API рисования ............................................................515 15.5. Создание документов в формате PDF с помощью библиотеки Prawn .....................................................................518 15.5.1. Основные концепции и приемы .................................519 15.5.2. Пример документа .....................................................519 15.6. Заключение ......................................................................523 Глава 16. Тестирование и отладка .............................524 16.1. Тестирование с помощью RSpec .......................................525 16.2. Тестирование с помощью Minitest .....................................527 16.3. Тестирование с помощью Cucumber .................................532 16.4. Работа с отладчиком byebug .............................................534 16.5. Отладка с помощью pry .....................................................537 16.6. Измерение производительности ......................................538 16.7. Объекты форматированной печати ...................................542 16.8. О том, что осталось за кадром ..........................................544 16.9. Заключение ......................................................................544 Глава 17. Создание пакетов и распространение программ ..........................................................546 17.1. Библиотеки и система Rubygems ......................................546 17.1.1. Работа с RubyGems ....................................................547 17.1.2. Создание gem-пакетов ..............................................547 17.2. Управление зависимостями с помощью Bundler ...............548 17.2.1. Семантическое версионирование ..............................550 17.2.2. Загрузка зависимостей из Git ....................................550 17.2.3. Создание gem-пакетов с помощью Bundler ................551 17.2.4. Частные gem-пакеты .................................................551 17.3. Программа RDoc ..............................................................552
Стр.20
20 Содержание 17.3.1. Простая разметка ......................................................554 17.3.2. Создание улучшенной документации с помощью Yard .......................................................................................556 17.4. Заключение ......................................................................557 Глава 18. Сетевое программирование .......................558 18.1. Сетевые серверы ..............................................................560 18.1.1. Простой сервер: время дня ........................................560 18.1.2. Реализация многопоточного сервера ........................561 18.1.3. Пример: сервер для игры в шахматы по сети .............562 18.2. Сетевые клиенты ..............................................................569 18.2.1. Получение истинно случайных чисел из веб ...............570 18.2.2. Запрос к официальному серверу времени .................573 18.2.3. Взаимодействие с POP-сервером .............................573 18.2.4. Отправка почты по протоколу SMTP ...........................575 18.2.5. Взаимодействие с IMAP-сервером ............................578 18.2.6. Кодирование и декодирование вложений ..................579 18.2.7. Пример: шлюз между почтой и конференциями .........581 18.2.8. Получение веб-страницы с известным URL ................586 18.2.9. Библиотека Open-URI ................................................587 18.3. Заключение ......................................................................588 Глава 19. Ruby и веб-приложения .............................589 19.1. HTTP-серверы ..................................................................589 19.1.1. Простой HTTP-сервер ................................................589 19.1.2. Rack и веб-серверы ...................................................591 19.2. Каркасы приложений ........................................................593 19.2.1. Маршрутизация в Sinatra ...........................................594 19.2.2. Маршрутизация в Rails ...............................................595 19.2.3. Параметры в Sinatra ...................................................597 19.2.4. Параметры в Rails ......................................................598 19.3. Хранение данных ..............................................................599 19.3.1. Базы данных ..............................................................599 19.3.2. Хранилища данных ....................................................601 19.4. Генерация HTML ................................................................602 19.4.1. ERB ............................................................................602 19.4.2. Haml ..........................................................................604 19.4.3. Другие шаблонные системы ......................................605 19.5. Конвейер активов .............................................................605 19.5.1. CSS и Sass .................................................................606
Стр.21
Содержание 21 19.5.2. JavaScript и CoffeeScript.............................................607 19.6. Предоставление веб-служб по протоколу HTTP ................609 19.6.1. Использование JSON в API .........................................610 19.6.2. REST API и его вариации ............................................610 19.7. Генерация статических сайтов ..........................................611 19.7.1. Middleman ..................................................................612 19.7.2. Другие генераторы статических сайтов .....................613 19.8. Заключение ......................................................................613 Глава 20. Распределенный Ruby ...............................614 20.1. Обзор: библиотека drb ......................................................614 20.2. Пример: эмуляция биржевой ленты ..................................617 20.3. Rinda: пространство кортежей в Ruby ...............................620 20.4. Обнаружение служб в распределенном Ruby ....................624 20.5. Заключение ......................................................................625 Глава 21. Инструменты разработки для Ruby ..............626 21.1. Программа Rake ...............................................................626 21.2. Оболочка irb ......................................................................630 21.3. Основы pry ........................................................................634 21.4. Утилита ri ..........................................................................635 21.5. Поддержка со стороны редакторов ...................................635 21.5.1. Vim .............................................................................636 21.5.2. Emacs ........................................................................637 21.6. Менеджеры версий Ruby ..................................................637 21.6.1. Работа с rvm ..............................................................637 21.6.2. Работа с rbenv ............................................................638 21.6.3. Работа с chruby ..........................................................639 21.7. Заключение ......................................................................639 Глава 22. Сообщество пользователей Ruby ................640 22.1. Ресурсы в веб ...................................................................640 22.2. Новостные группы и списки рассылки ...............................640 22.3. Извещения об ошибках и предложения новых функций ....641 22.4. Каналы IRC .......................................................................641 22.5. Конференции по Ruby .......................................................642 22.6. Локальные группы пользователей Ruby ............................643 22.7. Заключение ......................................................................643 Предметный указатель ...........................................644
Стр.22

Облако ключевых слов *


* - вычисляется автоматически
Периодика по подписке
Антиплагиат система Руконтекст