Путь Ruby

Философия Ruby.

Хэл Фултон, Андре Арко «Путь Ruby» ДМК Пресс, 2015 год, 664 стр. (51,2 мб. pdf)

Немного о языке.

В книге описывается язык программирования Ruby, его философия и особенности (объектно ориентированный, лаконичный, позволяющий вести быструю разработку). Ruby используется во многих крупных организациях, таких как: NASA и Motorola. Имеет как встроенные возможности, так и большую стандартную библиотеку, интерпретатор работает на большинстве современных платформ ОС.

О книге.

Это третье издание книги, которая больше десяти лет помогает программистам изучать Ruby получая из книги информацию эффективной работы на этом языке. Текущее издание рассказывает о версии Ruby 2.1 и содержит более 400 примеров, с подробной постановкой задачи и детальными разъяснениями, что снимает многие вопросы. В этом издании для простоты и удобства пользования материалы сгруппированы по темам. Хотя в самом начале книги дается обзор принципов объектно ориентированного программирования, для эффективного изучения языка Ruby по данной книге желательно иметь базовые знания программирования.
ISBN: 978-5-97060-320-8, 978-0-321-71463-3

Подробней о Ruby.

Оглавление книги

Глава 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. Циклы и ветвление 52
1.2.7. Исключения 57
1.3. ООП в Ruby 59
1.3.1. Объекты 59
1.3.2. Встроенные классы 60
1.3.3. Модули и классы-примеси 61
1.3.4. Создание классов 62
1.3.5. Методы и атрибуты .66
1.4. Динамические аспекты Ruby .68
1.4.1. Кодирование во время выполнения 68
1.4.2. Отражение 70
1.4.3. Отсутствующие методы 71
1.4.4. Сборка мусора 71
1.5. Потренируйте свою интуицию: что следует запомнить 72
1.5.1. Синтаксис 72
1.5.2. Отличия от других языков 74
1.5.3. Предложение case в Ruby 77
1.5.4. Рубизмы и идиомы 79
1.5.5. Ориентация на выражения и прочие вопросы 84
1.6. Жаргон Ruby 86
1.7. Заключение 89

Глава 2. Строки 90
2.1. Представление обычных строк 90
2.2. Альтернативная нотация для представления строк 91
2.3. Встроенные документы 92
2.4. Получение длины строки 93
2.5. Построчная обработка 93
2.6. Побайтовая обработка 94
2.7. Специализированное сравнение строк 94
2.8. Разбиение строки на лексемы 96
2.9. Форматирование строк 97
2.10. Строки в качестве объектов ввода-вывода 98
2.11. Управление регистром 98
2.12. Вычленение и замена подстрок 99
2.13. Подстановка в строках 101
2.14. Поиск в строке 102
2.15. Преобразование символов в коды ASCII и обратно 103
2.16. Явные и неявные преобразования 103
2.17. Дописывание в конец строки 105
2.18. Удаление хвостовых символов новой строки и прочих 105
2.19. Убирание лишних пропусков 106
2.20. Повтор строк 106
2.21. Включение выражений в строку 107
2.22. Отложенная интерполяция 107
2.23. Разбор данных, разделенных запятыми 108
2.24. Преобразование строки в число (десятичное или иное) 108
2.25. Кодирование и декодирование строк в кодировке rot 13_110
2.26. Шифрование строк 110
2.27. Сжатие строк 111
2.28. Подсчет числа символов в строке 112
2.29. Обращение строки 112
2.30. Удаление дубликатов 112
2.31. Удаление заданных символов 113
2.32. Печать специальных символов 113
2.33. Генерирование последовательности строк 113
2.34. Вычисление 32-разрядного CRC 114
2.35. Вычисление SHA-256-свертки строки 114
2.36. Вычисление расстояния Левенштейна между двумя строками 115
2.37. Ьазе64-кодирование и декодирование строк 117
2.38. Замена символов табуляции пробелами и сворачивание пробелов в табуляторы 117
2.39. Перенос строк по словам 118
2.40. Заключение 119

Глава 3. Регулярные выражения 120
3.1. Синтаксис регулярных выражений 120
3.2. Компиляция регулярных выражений 122
3.3. Экранирование специальных символов 123
3.4. Якоря 123
3.5. Кванторы 124
3.6. Позитивное и негативное заглядывание вперед 126
3.7. Позитивное и негативное оглядывание назад 127
3.8. Обратные ссылки 128
3.9. Именованные соответствия 130
3.10. Классы символов 132
3.11. Обобщенные регулярные выражения 133
3.12. Сопоставление точки символу конца строки 134
3.13. Внутренние модификаторы 134
3.14. Внутренние подвыражения 135
3.14.1. Рекурсия в регулярных выражениях 135
3.15. Примеры регулярных выражений 136
3.15.1. Сопоставление с IP-адресом 136
3.15.2. Сопоставление с парой «ключ-значение» 137
3.15.3. Сопоставление с числами, записанными римскими цифрами 138
3.15.4. Сопоставление с числовыми константами 138
3.15.5. Сопоставление с датой и временем 139
3.15.6. Обнаружение удвоенных слов в тексте 140
3.15.7. Поиск слов, записанных одними заглавными буквами 140
3.15.8. Сопоставление с номером версии 140
3.15.9. Еще несколько образцов 140
3.16. Заключение 141

Глава 4. Интернационализация в Ruby 142
4.1. Исторические сведения и терминология 143
4.2. Работа с кодировками 147
4.2.1. Нормализация 148
4.2.2. Преобразование из одной кодировки в другую 151
4.2.3. Транслитерация 152
4.2.4. Упорядочение строк 152
4.3. Перевод 155
4.3.1. Значения по умолчанию 157
4.3.2. Пространства имен 158
4.3.3. Интерполяция 158
4.3.4. Формы множественного числа 159
4.4. Локализованное форматирование 160
4.4.1. Дата и время 161
4.4.2. Числа 161
4.4.3. Денежные величины 162
4.5. Заключение 162

Глава 5. Численные методы 163
5.1. Представление чисел в языке Ruby 163
5.2. Основные операции над числами 164
5.3. Округление чисел с плавающей точкой 165
5.4. Сравнение чисел с плавающей точкой 167
5.5. Форматирование чисел для вывода 168
5.6. Вставка разделителей при форматировании чисел 169
5.7. Работа с очень большими числами 169
5.8. Использование класса BigDecimal 169
5.9. Работа с рациональными числами 171
5.10. Перемножение матриц 172
5.11. Комплексные числа 176
5.12. Библиотека mathn 176
5.13. Разложение на простые множители, вычисление НОД и НОК 177
5.14. Простые числа 178
5.15. Явные и неявные преобразования чисел 179
5.16. Приведение числовых значений 180
5.17. Поразрядные операции над числами 181
5.18. Преобразование системы счисления 182
5.19. Извлечение кубических корней, корней четвертой степени и т.д 183
5.20. Определение порядка байтов 183
5.21. Численное вычисление определенного интеграла 184
5.22. Тригонометрия в градусах, радианах и градах 185
5.23. Вычисление логарифмов по произвольному основанию 186
5.24. Вычисление среднего, медианы и моды набора данных 187
5.25. Дисперсия и стандартное отклонение 188
5.26. Вычисление коэффициента корреляции 189
5.27. Генерирование случайных чисел 190
5.28. Кэширование функций с помощью метода memoize 191
5.29. Заключение 192

Глава 6. Символы и диапазоны 193
6.1. Символы 193
6.1.1. Символы как перечисления 195
6.1.2. Символы как метазначения 195
6.1.3. Символы, переменные и методы 196
6.1.4. Преобразование строки в символ и обратно 196
6.2. Диапазоны 197
6.2.1. Открытые и замкнутые диапазоны 198
6.2.2. Нахождение границ диапазона 198
6.2.3. Обход диапазона 198
6.2.4. Проверка принадлежности диапазону 199
6.2.5. Преобразование в массив 200
6.2.6. Обратные диапазоны 200
6.2.7. Оператор переключения 200
6.2.8. Нестандартные диапазоны 203
6.3. Заключение 205

Глава 7. Дата и время 207
7.1. Определение текущего момента времени 208
7.2. Работа с конкретными датами (после точки отсчета) 208
7.3. Определение дня недели 209
7.4. Определение даты Пасхи 209
7.5. Вычисление n-ого дня недели в месяце 210
7.6. Преобразование из секунд в более крупные единицы 211
7.7. Вычисление промежутка времени, прошедшего от точки отсчета 212
7.8. Високосные секунды 212
7.9. Определение порядкового номера дня в году 213
7.10. Контроль даты и времени 213
7.11. Определение недели в году 214
7.12. Проверка года на високосность 214
7.13. Определение часового пояса 215
7.14. Манипулирование временем без даты 215
7.15. Сравнение моментов времени 216
7.16. Прибавление интервала к моменту времени 216
7.17. Вычисление разности между двумя моментами времени 217
7.18. Работа с конкретными датами (до точки отсчета 217
7.19. Взаимные преобразования объектов Date, Time и DateTime 217
7.20. Извлечение даты и времени из строки 218
7.21. Форматирование и печать даты и времени 219
7.22. Преобразование часовых поясов 219
7.23. Определение числа дней в месяце 220
7.24. Разбиение месяца на недели 220
7.25. Заключение 221

Глава 8. Массивы, хэши и другие перечисляемые структуры 223
8.1. Массивы 223
8.1.1. Создание и инициализация массива 224
8.1.2. Доступ к элементам массива и присваивание им значений 224
8.1.3. Определение размера массива 226
8.1.4. Сравнение массивов 226
8.1.5. Сортировка массива 228
8.1.6. Выборка из массива по заданному критерию 230
8.1.7. Специализированные функции индексирования 231
8.1.8. Реализация разреженной матрицы 233
8.1.9. Массивы как математические множества 233
8.1.10. Рандомизация массива 237
8.1.11. Многомерные массивы 237
8.1.12. Нахождение элементов, принадлежащих одному массиву и не принадлежащих другому 238
8.1.13. Преобразование или отображение массивов 238
8.1.14. Удаление элементов, равных nil, из массива 239
8.1.15. Удаление заданных элементов из массива 239
8.1.16. Конкатенирование массивов и добавление в конец массива 240
8.1.17. Использование массива в качестве стека или очереди 241
8.1.18. Обход массива 241
8.1.19. Преобразование массива в строку с разделителями 242
8.1.20. Обращение массива 242
8.1.21. Удаление дубликатов из массива 242
8.1.22. Чередование массивов 243
8.1.23. Вычисление частоты различных значений в массиве 243
8.1.24. Инвертирование массива для получения хэша 243
8.1.25. Синхронная сортировка нескольких массивов 244
8.1.26. Задание значения по умолчанию для новых элементов массива 245
8.2. Хэши 245
8.2.1. Создание нового хэша 246
8.2.2. Задание значения по умолчанию для хэша 247
8.2.3. Доступ к парам ключ-значение и добавление новых пар 247
8.2.4. Удаление пар ключ-значение 248
8.2.5. Обход хэша 249
8.2.6. Инвертирование хэша 249
8.2.7. Поиск ключей и значений в хэше 250
8.2.8. Копирование хэша в массив 250
8.2.9. Выборка пар ключ-значение по заданному критерию 250
8.2.10. Сортировка хэша 251
8.2.11. Объединение двуххэшей 251
8.2.12. Создание хэша из массива 252
8.2.13. Вычисление разности и пересечения хэшей 252
8.2.14. Хэш как разреженная матрица 252
8.2.15. Реализация хэша с повторяющимися ключами 253
8.2.16. Другие операции с хэшем 256
8.3. Перечисляемые структуры в общем 256
8.3.1. Метод inject 257
8.3.2. Кванторы 258
8.3.3. Метод partition 258
8.3.4. Обход с группировкой 259
8.3.5. Преобразование в массив или множество 260
8.3.6. Перечислители 260
8.4. Дополнительные сведения о перечисляемых объектах 262
8.4.1. Поиск и выборка 262
8.4.2. Подсчет и сравнение 263
8.4.3. Итерирование 263
8.4.4. Извлечение и преобразование 264
8.4.5. Ленивые перечислители 265
8.5. Заключение 265

Глава 9. Более сложные структуры данных 266
9.1. Множества 266
9.1.1. Простые операции над множествами 267
9.1.2. Более сложные операции над множествами 268
9.2. Стеки и очереди 269
9.2.1. Более строгая реализация стека 271
9.2.2. Обнаружение несбалансированных скобок 271
9.2.3. Стек и рекурсия 272
9.2.4. Более строгая реализация очереди 274
9.3. Деревья 275
9.3.1. Реализация двоичного дерева 275
9.3.2. Сортировка с помощью двоичного дерева 277
9.3.3. Использование двоичного дерева как справочной таблицы 279
9.3.4. Преобразование дерева в строку или массив 279
9.4. Графы 280
9.4.1. Реализация графа в виде матрицы смежности 281
9.4.2. Является ли граф связным 283
9.4.3. Есть ли в графе эйлеров цикл 284
9.4.4. Есть ли в графе эйлеров путь 285
9.4.5. Инструменты для работы с графами в Ruby 286
9.5. Заключение 286

Глава 10. Ввод-вывод и хранение данных 287
10.1. Файлы и каталоги 288
10.1.1. Открытие и закрытие файлов 288
10.1.2. Обновление файла 289
10.1.3. Дописывание в конец файла 290
10.1.4. Прямой доступ к файлу 290
10.1.5. Работа с двоичными файлами 291
10.1.6. Блокировка файлов 292
10.1.7. Простой ввод-вывод 293
10.1.8. Буферизованный и небуферизованный ввод-вывод 294
10.1.9. Манипулирование правами владения и разрешениями на доступ к файлу 295
10.1.10. Получение и установка временных меток 296
10.1.11. Проверка существования и получение размера файла 297
10.1.12. Опрос специальных свойств файла 298
10.1.13. Каналы 300
10.1.14. Специальные операции ввода-вывода 301
10.1.15. Неблокирующий ввод-вывод 302
10.1.16. Применение метода readpartial 302
10.1.17. Манипулирование путевыми именами 303
10.1.18. Класс Pathname 304
10.1.19. Манипулирование файлами на уровне команд 305
10.1.20. Ввод символов с клавиатуры 306
10.1.21. Чтение всего файла в память 306
10.1.22. Построчное чтение из файла 307
10.1.23. Побайтное и посимвольное чтение из файла 307
10.1.24. Работа со строкой каксфайлом 308
10.1.25. Копирование потока 308
10.1.26. Работа с кодировками 308
10.1.27. Чтение данных, встроенных в текст программы 309
10.1.28. Чтение исходного текста программы 309
10.1.29. Работа с временными файлами 309
10.1.30. Получение и изменение текущего каталога 310
10.1.31. Изменение текущего корня 310
10.1.32. Обход каталога 311
10.1.33. Получение содержимого каталога 311
10.1.34. Создание цепочки каталогов 311
10.1.35. Рекурсивное удаление каталога 311
10.1.36. Поиск файлов и каталогов 311
10.2. Доступ к данным более высокого уровня 312
10.2.1. Простой маршалинг 313
10.2.2. «Глубокое копирование» с помощью метода Marshal 313
10.2.3. Более сложный маршалинг 314
10.2.4. Маршалинг в формате YAML 315
10.2.5. Сохранение данных с помощью библиотеки JSON 316
10.2.6. Работа с данными в формате CSV 317
10.2.7. SQLite3 как SQL-хранилище данных 319
10.3. Подключение к внешним базам данных 320
10.3.1. Подключение к базе данных MySQL 320
10.3.2. Подключение к базе данных PostreSQL 322
10.3.3. Объектно-реляционные отображения (ORM 323
10.3.4. Подключение к хранилищу данных Redis 324
10.4. Заключение 326

Глава 11. ООП и динамические механизмы в Ruby 327
11.1. Рутинные объектно-ориентированные задачи 328
11.1.1. Применение нескольких конструкторов 328
11.1.2. Создание атрибутов экземпляра 329
11.1.3. Более сложные конструкторы 331
11.1.4. Создание атрибутов и методов уровня класса 333
11.1.5. Наследование суперклассу 336
11.1.6. Опрос класса объекта 338
11.1.7. Проверка объектов на равенство 340
11.1.8. Управление доступом к методам 341
11.1.9. Копирование объектов 343
11.1.10. Метод initialize_copy 344
11.1.11. Метод allocate 345
11.1.12. Модули 346
11.1.13. Трансформация или преобразование объектов 349
11.1.14. Классы, содержащие только данные (Struct 351
11.1.15. Замораживание объектов 352
11.1.16. Использование метода tap в цепочке методов 353
11.2. Более сложные механизмы 354
11.2.1. Посылка объекту явного сообщения 354
11.2.2. Специализация отдельного объекта 356
11.2.3. Вложенные классы и модули 359
11.2.4. Создание параметрических классов 360
11.2.5. Хранение кода в виде объектов Ргос 362
11.2.6. Хранение кода в виде объектов Method 364
11.2.7. Использование символов в качестве блоков 364
11.2.8. Как работает включение модулей 365
11.2.9. Опознание параметров, заданных по умолчанию 367
11.2.10. Делегирование или перенаправление 367
11.2.11. Автоматическое определение методов чтения и установки на уровне класса 370
11.2.12. Поддержка различных стилей программирования 371
11.3. Динамические механизмы 373
11.3.1. Динамическая интерпретация кода 373
11.3.2. Метод const_get 375
11.3.3. Получение класса по имени 375
11.3.4. Метод define_method 375
11.3.5. Получение списка определенных сущностей 378
11.3.6. Удаление определений 380
11.3.7. Ссылки на несуществующие константы 382
11.3.8. Вызовы несуществующих методов 383
11.3.9. Повышение безопасности с помощью taint 384
11.3.10. Определение чистильщиков для объектов 386
11.4. Интроспекция программы 387
11.4.1. Обход пространства объектов 387
11.4.2. Просмотр стека вызовов 388
11.4.3. Отслеживание изменений в определении класса или объекта 388
11.4.4. Мониторинг выполнения программы 391
11.5. Заключение 393

Глава 12. Графические интерфейсы для Ruby 394
12.1. Shoes 4 395
12.1.1. Начало работы с Shoes 395
12.1.2. Интерактивная кнопка 396
12.1.3. Текст и поле ввода 396
12.1.4. Компоновка 397
12.1.5. Картинки и фигуры 399
12.1.6. События 400
12.1.7. Прочие замечания 400
12.2. Ruby/Tk 401
12.2.1. Обзор 401
12.2.2. Простое оконное приложение 402
12.2.3. Кнопки 403
12.2.4. Текстовые поля 407
12.2.5. Прочие виджеты 411
12.2.6. Дополнительные замечания 413
12.3. Ruby/GTK3 414
12.3.1. Обзор 414
12.3.2. Простое оконное приложение 415
12.3.3. Кнопки 416
12.3.4. Текстовые поля 417
12.3.5. Прочие виджеты 420
12.3.6. Дополнительные замечания 424
12.4. QtRuby 425
12.4.1. Обзор 425
12.4.2. Простое оконное приложение 426
12.4.3. Кнопки 426
12.4.4. Текстовые поля 428
12.4.5. Прочие виджеты 430
12.4.6. Дополнительные замечания 434
12.5. Swing 435
12.6. Другие библиотеки для создания графических интерфейсов 437
12.6.1. UNIXhX11 437
12.6.2. FXRuby (FOX 437
12.6.3. RubyMotion для iOS и Mac OS X 437
12.6.4. Windows Win32 API 438
12.7. Заключение 438

Глава 13. Потоки и параллелизм 439
13.1. Создание потоков и манипулирование ими 440
13.1.1. Создание потоков 441
13.1.2. Доступ к поточно-локальным переменным 442
13.1.3. Опрос и изменение состояния потока 443
13.1.4. Назначение рандеву (и получение возвращенного значения 446
13.1.5. Обработка исключений 447
13.1.6. Группы потоков 449
13.2. Синхронизация потоков 450
13.2.1. Простая синхронизация 451
13.2.2. Синхронизация доступа с помощью мьютекса 452
13.2.3. Встроенные классы очередей 454
13.2.4. Условные переменные 456
13.2.5. Другие способы синхронизации 457
13.2.6. Таймаут при выполнении операций 460
13.2.7. Ожидание события 462
13.2.8. Параллельный поиск в коллекции 463
13.2.9. Параллельное рекурсивное удаление 464
13.3. Волокна и кооперативная многозадачность 465
13.4. Заключение 467

Глава 14. Скрипты и системное администрирование 468
14.1. Запуск внешних программ 468
14.1.1. Методы system и ехес 469
14.1.2. Запоминание вывода программы 469
14.1.3. Манипулирование процессами 470
14.1.4. Стандартный ввод и вывод 473
14.2. Флаги и аргументы в командной строке 474
14.2.1. Константа ARGV 474
14.2.2. Константа ARGF 474
14.2.3. Разбор флагов в командной строке 475
14.3. Библиотека Shell 476
14.3.1. Использование библиотеки Shell
для перенаправления ввода-вывода 477
14.3.2. Дополнительные замечания по поводу библиотеки Shell 478
14.4. Переменные окружения 479
14.4.1. Чтение и установка переменных окружения 479
14.4.2. Хранение переменных окружения в виде массива или хэша 480
14.5. Работа с файлами, каталогами и деревьями 481
14.5.1. Несколько слов о текстовых фильтрах 481
14.5.2. Копирование дерева каталогов (с символическими ссылками 481
14.5.3. Удаление файлов по времени модификации и другим критериям 483
14.5.4. Вычисление свободного места на диске 484
14.6. Различные скрипты 484
14.6.1. Распространение программ на Ruby 484
14.6.2. Подача входных данных Ruby по конвейеру 485
14.6.3. Работает ли Ruby в интерактивном режиме 486
14.6.4. Определение текущей платформы или операционной системы 486
14.6.5. Модуль Etc 487
14.7. Заключение 487

Глава 15. Ruby и форматы данных 489
15.1. Разбор JSON 490
15.1.1. Обход JSON-данных 490
15.1.2. Типы данных, не представимые в JSON 491
15.1.3. Другие библиотеки для работы с JSON 492
15.2. Разбор XML (и HTML 492
15.2.1. Разбор документа 493
15.2.2. Потоковый разбор 495
15.3. RSS и Atom 497
15.3.1. Разбор новостной ленты 497
15.3.2. Создание новостных лент 499
15.4. Обработка изображений с помощью RMagick 499
15.4.1. Типичные графические задачи 500
15.4.2. Специальные эффекты и преобразования 503
15.4.3. API рисования 505
15.5. Создание документов в формате PDF с помощью библиотеки Prawn 508
15.5.1. Основные концепции и приемы 509
15.5.2. Пример документа 509
15.6. Заключение 513

Глава 16. Тестирование и отладка 514
16.1. Тестирование с помощью RSpec 515
16.2. Тестирование с помощью Minitest 517
16.3. Тестирование с помощью Cucumber 522
16.4. Работа с отладчиком byebug 524
16.5. Отладка с помощью pry 527
16.6. Измерение производительности 528
16.7. Объекты форматированной печати 532
16.8.0 том, что осталось за кадром 534
16.9. Заключение 534

Глава 17. Создание пакетов и распространение программ 535
17.1. Библиотеки и система Rubygems 535
17.1.1. Работа с RubyGems 536
17.1.2. Создание дет-пакетов 536
17.2. Управление зависимостями с помощью Bundler 537
17.2.1. Семантическое версионирование 539
17.2.2. Загрузка зависимостей из Git 539
17.2.3. Создание дет-пакетов с помощью Bundler 540
17.2.4. Частные дет-пакеты 540
17.3. Программа RDoc 541
17.3.1. Простая разметка 543
17.3.2. Создание улучшенной документации с помощью Yard 545
17.4. Заключение 546

Глава 18. Сетевое программирование 547
18.1. Сетевые серверы 549
18.1.1. Простой сервер: время дня 549
18.1.2. Реализация многопоточного сервера 550
18.1.3. Пример: сервер для игры в шахматы по сети 551
18.2. Сетевые клиенты 558
18.2.1. Получение истинно случайных чисел из веб 558
18.2.2. Запрос к официальному серверу времени 561
18.2.3. Взаимодействие с РОР-сервером 562
18.2.4. Отправка почты по протоколу SMTP 563
18.2.5. Взаимодействие с IMAP-сервером 566
18.2.6. Кодирование и декодирование вложений 568
18.2.7. Пример: шлюз между почтой и конференциями 570
18.2.8. Получение веб-страницы с известным URL 575
18.2.9. Библиотека Open-URI 575
18.3. Заключение 576

Глава 19. Ruby и веб-приложения 577
19.1. HTTP-серверы 577
19.1.1. Простой HTTP-сервер 577
19.1.2. Rack и веб-серверы 579
19.2. Каркасы приложений 581
19.2.1. Маршрутизация в Sinatra 582
19.2.2. Маршрутизация в Rails 583
19.2.3. Параметры в Sinatra 585
19.2.4. Параметры в Rails 586
19.3. Хранение данных 586
19.3.1. Базы данных 587
19.3.2. Хранилища данных 589
19.4. Генерация HTML 589
19.4.1. ERB 590
19.4.2. Haml 592
19.4.3. Другие шаблонные системы 592
19.5. Конвейер активов 593
19.5.1. CSS и Sass 593
19.5.2. JavaScript и CoffeeScript 595
19.6. Предоставление веб-служб по протоколу HTTP 597
19.6.1. Использование JSON в API 597
19.6.2. REST API и его вариации 598
19.7. Генерация статических сайтов 599
19.7.1. Middleman 599
19.7.2. Другие генераторы статических сайтов 600
19.8. Заключение 601

Глава 20. Распределенный Ruby 602
20.1. Обзор: библиотека drb 602
20.2. Пример: эмуляция биржевой ленты 605
20.3. Rinda: пространство кортежей в Ruby 608
20.4. Обнаружение служб в распределенном Ruby 611
20.5. Заключение 613

Глава 21. Инструменты разработки для Ruby 614
21.1. Программа Rake 614
21.2. Оболочка irb 618
21.3. Основы pry 621
21.4. Утилита ri 623
21.5. Поддержка со стороны редакторов 623
21.5.1. Vim 624
21.5.2. Emacs 624
21.6. Менеджеры версий Ruby 625
21.6.1. Работа с rvm 625
21.6.2. Работа с rbenv 625
21.6.3. Работа с chruby 626
21.7. Заключение 627

Глава 22. Сообщество пользователей Ruby 628
22.1. Ресурсы в веб 628
22.2. Новостные группы и списки рассылки 628
22.3. Извещения об ошибках и предложения новых функций 629
22.4. Каналы IRC 629
22.5. Конференции по Ruby 630
22.6. Локальные группы пользователей Ruby 631
22.7. Заключение 631
Предметный указатель 632

Скачать техническую литературу бесплатно51,2 мб. pdf


Ruby язык программирования. Видео

 

Похожая литература