КнигоПровод.Ru22.11.2024

/ИТ-книги/O'REILLY

Создаём динамические веб-сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5. — 4-е изд. — Никсон Р.
Создаём динамические веб-сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5. — 4-е изд.
Никсон Р.
год издания — 2017, кол-во страниц — 768, ISBN — 978-5-496-02146-3, язык — русский, тип обложки — мягк., масса книги — 980 гр., издательство — Питер
серия — Бестселлеры O'Reilly
цена: 1000.00 рубПоложить эту книгу в корзину
FOURTH EDITION
Learning PHP, MySQL & JavaScript
With jQuery, CSS & HTML5

Robin Nixon

O'REILLY
2015


Пер. с англ. Н. Вильчинского

Уровень пользователя: опытный

Формат 70x100 1/16. Бумага писчая
ключевые слова — веб-сайт, php, mysql, javascript, css, html, ajax, jquery, apache, веб-программиров, веб-сервер

Научитесь создавать интерактивные сайты, активно работающие с данными, воплощая в них мощные комбинации свободно распространяемых технологий и веб-стандартов. Для этого достаточно обладать базовыми знаниями языка HTML. Это популярное и доступное пособие поможет вам уверенно освоить динамическое веб-программирование с применением самых современных языков и технологий: PHP, MySQL, JavaScript, CSS и HTML5.

С каждой из упомянутых технологий вы познакомитесь отдельно, научитесь применять их в комбинации друг с другом, а по ходу изложения освоите ценные практические приёмы веб-программирования. В конце книги весь изученный материал будет обобщён: вы создадите полнофункциональный сайт, работающий по принципу социальной сети.

• Изучите важнейшие аспекты языка PHP и основы объектно-ориентированного программирования.
• Познакомьтесь с базой данных MySQL.
• Управляйте cookie-файлами и сеансами, обеспечивайте высокий уровень безопасности.
• Пользуйтесь фундаментальными возможностями языка JavaScript.
• Применяйте вызовы AJAX, чтобы значительно повысить динамику вашего сайта.
• Изучите основы CSS для форматирования и оформления ваших страниц.
• Познакомьтесь с возможностями HTML5: геолокацией, работой с аудио и видео, холстом.

ОГЛАВЛЕНИЕ

Предисловие29
Для кого предназначена эта книга29
Предположения, допущенные в данной книге29
Как устроена книга30
Дополнительная литература30
Условные обозначения31
Использование примеров кода32
Благодарности32
 
От издательствазз
 
Глава 1. Введение в динамическое содержимое веб-страницы34
HTTP и HTML: основы, заложенные Бернерсом-Ли35
Процедура «запрос — ответ»35
Преимущества использования PHP, MySQL, JavaScript и CSS38
    PHP39
    MySQL40
    JavaScript41
    CSS42
А теперь HTML543
Веб-сервер Apache44
Несколько слов о программах с открытым исходным кодом45
А теперь всё это, вместе взятое45
Вопросы47
 
Глава 2. Установка сервера, предназначенного для разработки49
Что такое WAMP, MAMP и LAMP50
Установка XAMPP в систему Windows50
    Тестирование установки57
    Обращение к исходному источнику документов58
    Другие системы WAMP59
Установка XAMPP в систему Mac OS X59
    Обращение к исходному источнику документов60
Установка LAMP в Linux60
Работа в удалённом режиме61
    Вход в систему61
    Использование FTP61
Использование редактора программ63
Использование IDE64
Вопросы65
 
Глава 3. Введение в PHP66
Включение PHP в HTML66
Примеры в этой книге68
Структура PHP69
   Комментарии69
   Основной синтаксис70
   Переменные70
   Операторы75
   Присваивание значений переменным78
   Многострочные команды81
   Типы переменных83
   Константы84
   Предопределённые константы84
   Различие между командами echo и print85
   Функции86
   Область видимости переменной87
Вопросы93
 
Глава 4. Выражения и управление процессом выполнения
программы в PHP95
Выражения95
    TRUE или FALSE?95
    Литералы и переменные97
Операторы98
    Приоритетность операторов99
    Взаимосвязанность операторов100
    Операторы отношения102
Условия106
    Инструкция if106
    Инструкция else107
    Инструкция elseif109
    Инструкция switch110
    Оператор ?113
Организация циклов114
    Циклы while115
    Циклы do…while116
    Циклы for117
    Прекращение работы цикла119
    Инструкция continue120
Неявное и явное преобразование типов120
Динамическое связывание в PHP121
Динамическое связывание в действии122
Вопросы123
 
Глава 5. Функции и объекты PHP125
Функции PHP126
    Определение функции127
    Возвращение значения128
    Возвращение массива130
    Не передавайте аргументы по ссылке130
    Возвращение глобальных переменных132
    И ещё раз об области видимости переменных133
Включение и запрос файлов133
    Инструкция include133
    Инструкция include_once134
    Инструкции require и require_once134
Совместимость версий PHP135
Объекты PHP135
    Терминология136
    Объявление класса138
    Создание объекта138
    Доступ к объектам139
    Клонирование объектов140
    Конструкторы141
    Деструкторы в PHP 5142
    Написание методов142
    Статические методы в PHP 5143
    Объявление свойств144
    Объявление констант145
    Область видимости свойств и методов в PHP 5145
    Статические свойства и методы146
    Наследование147
Вопросы151
.
Глава 6. Массивы в PHP152
Основные подходы к массивам152
    Массивы с числовой индексацией152
    Ассоциативные массивы154
    Присваивание с использованием ключевого слова array155
Цикл foreach…as156
Многомерные массивы158
Использование функций для работы с массивами161
    is_array161
    count161
    sort162
    shuffle162
    explode162
    extract163
    compact164
    reset165
    end166
Вопросы166
 
Глава 7. Практикум по программированию на PHP167
Функция printf167
    Настройка представления данных169
    Дополнение строк171
    Функция sprintf172
Функции даты и времени172
    Константы, связанные с датами174
    Функция checkdate175
Работа с файлами175
    Проверка существования файла176
    Создание файла176
    Чтение из файлов178
    Копирование файлов178
    Перемещение файла179
    Удаление файла179
    Обновление файлов180
    Блокирование файлов при коллективном доступе181
    Чтение всего файла целиком182
    Загрузка файлов на веб-сервер183
Системные вызовы188
XHTML или HTML5190
Вопросы191
 
Глава 8. Введение в MySQL192
Основные характеристики MySQL192
Сводка понятий, используемых в базах данных193
Доступ к MySQL из командной строки193
    Начало работы с интерфейсом командной строки194
    Использование интерфейса командной строки197
    Команды MySQL199
    Типы данных203
Индексы212
    Создание индекса213
    Создание запросов к базе данных MySQL218
    Объединение таблиц227
    Использование логических операторов229
Функции MySQL229
Работа с MySQL через phpMyAdmin230
Вопросы231
 
Глава 9. Освоение MySQL233
Проектирование базы данных233
Первичные ключи: ключи к реляционным базам данных234
Нормализация235
    Первая нормальная форма236
    Вторая нормальная форма238
    Третья нормальная форма241
    Когда не следует проводить нормализацию243
Отношения244
    «Один к одному»244
    «Один ко многим»245
    «Многие ко многим»246
    Базы данных и анонимность247
Транзакции247
    Ядра (механизмы хранения) транзакций248
    Команда BEGIN249
    Команда COMMIT249
    Команда ROLLBACK250
Команда EXPLAIN250
Резервное копирование и восстановление данных252
    Команда mysqldump252
    Создание файла резервной копии253
    Восстановление данных из файла резервной копии255
    Выгрузка данных в файлы формата CSV255
    Планирование резервного копирования256
Вопросы256
 
Глава 10. Доступ к MySQL с использованием PHP258
Запросы к базе данных MySQL с помощью PHP258
    Процесс258
    Создание файла регистрации259
    Подключение к базе данных MySQL260
Практический пример265
    Массив $_POST268
    Удаление записи268
    Отображение формы269
    Запросы к базе данных270
    Запуск программы271
Практическая работа с MySQL272
    Создание таблицы272
    Описание таблицы273
    Удаление таблицы274
    Добавление данных274
    Извлечение данных275
    Обновление данных275
    Удаление данных276
    Свойство AUTO_INCREMENT276
    Выполнение дополнительных запросов278
    Предотвращение попыток взлома279
    Возможные меры противодействия280
    Указатели мест заполнения281
    Предотвращение внедрения HTML-кода284
    Процедурный метод использования mysqli285
Вопросы287
 
Глава 11. Обработка форм288
Создание форм288
Извлечение отправленных данных289
    register_globals: склонность к использованию устаревших
       решений291
    Значения по умолчанию292
    Типы элементов ввода данных293
    Обезвреживание введённых данных300
Пример программы302
А что нового в HTML5?304
    Атрибут autocomplete305
    Атрибут autofocus305
    Атрибут placeholder305
    Атрибут required306
    Атрибуты подмены306
    Атрибуты width и height306
Свойства, ожидающие повсеместной реализации306
    Атрибут form307
    Атрибут list307
    Атрибуты min и max307
    Атрибут step308
    Тип ввода color308
    Типы ввода number и range308
    Окно выбора даты и времени308
Вопросы309
 
Глава 12. Cookie, сессии и аутентификация310
Использование cookie в PHP310
    Установка cookie311
    Доступ к cookie312
    Удаление cookie313
HTTP-аутентификация313
    Сохранение имён пользователей и паролей316
    Добавление произвольных данных317
Использование сессий321
    Начало сессии321
    Завершение сессии325
    Безопасность сессии326
Вопросы330
 
Глава 13. Изучение JavaScript331
JavaScript и текст HTML332
    Использование сценариев в заголовке документа333
    Устаревшие и нестандартные браузеры333
    Включение файлов JavaScript334
    Отладка кода JavaScript335
Использование комментариев337
Точка с запятой337
Переменные338
    Строковые переменные338
    Числовые переменные338
    Массивы339
Операторы340
    Арифметические операторы340
    Операторы присваивания340
    Операторы сравнения341
    Логические операторы341
    Инкремент и декремент переменной342
    Объединение строк342
    Управляющие символы342
Типизация переменных343
Функции344
Глобальные переменные344
Локальные переменные344
Объектная модель документа346
    Но не всё так просто348
    Ещё одно использование знака $348
    Использование DOM349
О функции document.write350
    Использование console.log350
    Использование alert350
    Запись в элементы350
    Использование document.write350
Вопросы351
 
Глава 14. Выражения и управление процессом выполнения
сценариев в JavaScript353
Выражения353
Литералы и переменные354
Операторы355
    Приоритетность операторов356
    Взаимосвязанность356
    Операторы отношения357
Инструкция with360
Использование события onerror360
Конструкция try…catch362
Условия362
    Инструкция if363
    Инструкция else363
    Инструкция switch364
    Оператор ?365
Циклы366
    Циклы while366
    Циклы do…while366
    Циклы for367
    Прекращение работы цикла368
    Инструкция continue368
Явное преобразование типов369
Вопросы370
 
Глава 15. Функции, объекты и массивы JavaScript371
Функции JavaScript371
    Определение функции371
    Массив аргументов372
    Возвращение значения373
    Возвращение массива375
Объекты JavaScript376
    Объявление класса376
    Создание объекта377
    Доступ к объектам378
    Ключевое слово prototype378
Массивы в JavaScript381
    Числовые массивы381
    Ассоциативные массивы382
    Многомерные массивы383
    Методы массивов384
Вопросы389
 
Глава 16. Проверка данных и обработка ошибок в JavaScript и PHP390
Проверка данных, введенных пользователем, средствами JavaScript390
    Документ validate.html (часть первая)391
    Документ validate.html (часть вторая)393
Регулярные выражения396
    Соответствие, закладываемое в метасимволы397
    Нестрогое символьное соответствие397
    Группировка с помощью скобок399
    Символьный класс399
    Указание диапазона400
    Инвертирование400
    Более сложные примеры400
    Сводная таблица метасимволов403
    Общие модификаторы405
    Использование регулярных выражений в JavaScript405
    Использование регулярных выражений в PHP406
Повторное отображение формы после проверки данных PHP-программой407
Вопросы413
 
Глава 17. Использование технологии AJAX414
Что такое AJAX415
XMLHttpRequest415
    Ваша первая программа, использующая AJAX417
    Использование GET вместо POST422
    Отправка XML-запросов424
Использование для AJAX специальной среды428
Вопросы429
 
Глава 18. Введение в CSS430
Импортирование таблицы стилей431
    Импортирование CSS из HTML-кода432
    Встроенные настройки стиля432
Идентификаторы (ID)432
Классы433
Точки с запятой433
Правила CSS433
    Множественные задания стиля434
    Использование комментариев435
Типы стилей435
    Исходные стили435
    Пользовательские стили436
    Внешние таблицы стилей436
    Внутренние стили437
    Внедрённые стили437
Селекторы CSS437
    Селектор типа437
    Селектор потомков438
    Селектор дочерних элементов439
    Селектор элементов, имеющих идентификатор440
    Селектор класса441
    Селектор атрибутов441
    Универсальный селектор442
    Групповая селекция442
Каскадность CSS443
    Создатель таблиц стилей443
    Методы создания таблиц стилей444
    Селекторы таблиц стилей444
    Вычисление специфики445
    Разница между элементами Div и Span447
Измерения448
Шрифты и оформление450
    font-family450
    font-style451
    font-size451
    font-weight452
Управление стилями текста452
    Оформление453
    Разрядка453
    Выравнивание454
    Преобразование454
    Отступы454
Цвета CSS455
    Сокращённые цветовые строки455
    Градиенты456
Позиционирование элементов457
    Абсолютное позиционирование457
    Относительное позиционирование458
    Фиксированное позиционирование458
Псевдоклассы460
Сокращённая запись правил462
Модель блока и макет страницы462
    Установка полей463
    Применение границ465
    Настройка отступов466
    Содержимое объекта467
Вопросы468
 
Глава 19. Расширение CSS с помощью CSS3469
Селекторы атрибутов469
    Соответствие частям строк470
    Оператор ^470
    Оператор $471
    Оператор *471
Свойство box-sizing471
Создание фона в CSS3472
    Свойство background-clip472
    Свойство background-origin473
    Свойство background-size474
    Использование нескольких фонов475
Границы CSS3477
    Свойство border-color477
    Свойство border-radius477
Прямоугольные тени480
Выход элемента за пределы размеров481
Разметка с использованием нескольких колонок481
Цвета и непрозрачность483
    Цвета HSL483
    Цвета HSLA484
    Цвета RGB484
    Цвета RGBA485
    Свойство opacity485
Эффекты, применяемые к тексту486
    Свойство text-shadow486
    Свойство text-overflow486
    Свойство word-wrap487
Веб-шрифты487
Трансформации489
Трёхмерная трансформация490
Переходы491
    Свойства, применяемые к переходам492
    Продолжительность перехода492
    Задержка перехода492
    Задание скорости перехода492
    Сокращённый синтаксис493
Вопросы495
 
Глава 20. Доступ к CSS из JavaScript496
Ещё одно обращение к функции getElementById496
    Функция O496
    Функция S497
    Функция C498
    Включение функций499
Обращение к свойствам CSS из JavaScript500
    Некоторые общие свойства500
    Другие свойства501
Встроенный JavaScript503
    Ключевое слово this504
    Привязка событий к объектам в сценарии504
    Прикрепление к другим событиям505
Добавление новых элементов506
    Удаление элементов507
    Альтернативы добавлению и удалению элементов508
Использование прерываний509
    Использование функции setTimeout509
    Отмена тайм-аута510
    Функция setInterval510
    Использование прерываний для анимации512
Вопросы513
 
Глава 21. Введение в jQuery515
Почему же именно jQuery?516
Включение jQuery516
    Выбор подходящей версии517
    Загрузка518
    Использование сети доставки контента518
    Всегда используйте самую последнюю версию519
    Заказная сборка jQuery519
Синтаксис jQuery520
    Простой пример520
    Как избежать конфликта библиотек521
Селекторы522
    Метод css522
    Селектор элемента523
    Селектор идентификатора523
    Селектор класса523
    Сочетание селекторов523
Обработка событий525
Ожидание готовности документа526
Функции и свойства событий527
    События blur и focus527
    Ключевое слово this529
    События click и dblclick529
    Событие keypress530
    Деликатное программирование532
    Событие mousemove532
    Другие события, связанные с мышью535
    Альтернативные методы работы с мышью536
    Событие submit537
Специальные эффекты539
    Исчезновение и появление540
    Метод toggle541
    Проявление и растворение541
    Скольжение элементов вверх и вниз543
    Анимация544
    Остановка анимации547
Работа с DOM547
    Разница между методами text и html548
    Методы val и attr549
    Добавление и удаление элементов550
Динамическое применение классов552
Работа с размерами.553
    Методы width и height553
    Методы innerWidth и innerHeight556
    Методы outerWidth и outerHeight556
Обход объектов DOM556
    Родительские элементы557
    Дочерние элементы562
    Одноуровневые элементы562
    Выбор следующих и предыдущих элементов564
    Обход элементов, выбранных с помощью методов jQuery565
    Метод is567
Использование jQuery без селекторов569
    Метод $.each569
    Метод $.map570
Использование Ajax570
    Использование метода Post570
    Использование метода Get571
Дополнительные модули572
    Пользовательский интерфейс jQuery572
    Другие дополнительные модули573
    jQuery для мобильных устройств573
Вопросы574
 
Глава 22. Введение в HTML5576
Холст577
Геолокация578
Аудио и видео580
Формы581
Локальное хранилище582
Рабочие веб-процессы582
Веб-приложения582
Микроданные583
Резюме583
Вопросы583
 
Глава 23. Холсты в HTML5584
Создание холста и доступ к нему584
    Функция toDataURL586
    Указание типа изображения588
    Метод fillRect588
    Метод clearRect588
    Метод strokeRect589
    Сочетание всех этих команд589
    Метод createLinearGradient590
    Метод addColorStop в подробностях593
    Метод createRadialGradient594
    Использование узоров для заливки595
Запись текста на холсте596
    Метод strokeText597
    Свойство textBaseLine597
    Свойство font598
    Свойство textAlign598
    Метод fillText598
    Метод measureText599
Рисование линий600
    Свойство lineWidth600
    Свойства lineCap и lineJoin600
    Свойство miterLimit602
Использование путей603
    Методы moveTo и LineTo603
    Метод stroke603
    Метод rect604
Заливка областей604
Метод clip606
Метод isPointInPath609
Работа с кривыми линиями609
    Метод arc610
    Метод arcTo612
    Метод quadraticCurveTo613
    Метод bezierCurveTo615
Обработка изображений615
    Метод drawImage616
    Изменение размеров изображения616
    Выбор области изображения616
    Копирование с холста618
    Добавление теней618
Редактирование на уровне пикселов620
    Метод getImageData620
    Массив data621
    Метод putImageData623
    Метод createImageData623
Более сложные графические эффекты624
    Свойство globalCompositeOperation624
    Свойство globalAlpha626
Преобразования627
    Метод scale627
    Методы save и restore628
    Метод rotate628
    Метод translate629
    Метод transform631
    Метод setTransform632
Резюме632
Вопросы633
 
Глава 24. Аудио и видео в HTML5634
О кодеках635
Элемент <audio>636
Поддержка браузеров, не работающих с HTML5638
Элемент <video>639
    Видеокодеки640
    Поддержка устаревших браузеров643
Резюме644
Вопросы644
 
Глава 25. Другие свойства HTML5646
Геолокация и служба GPS646
Другие методы определения местоположения647
Геолокация и HTML5647
Локальное хранилище651
    Использование локального хранилища652
    Объект localStorage652
Рабочие веб-процессы654
Автономные веб-приложения656
Перетаскивание658
Обмен сообщениями между документами660
Микроданные663
Другие теги HTML5666
Резюме666
Вопросы666
 
Глава 26. Объединение технологий668
Проектирование сайта социальной сети668
Информация на сайте669
Файл functions.php669
Функции669
Файл header.php671
Файл setup.php673
Файл index.php675
Файл signup.php676
    Проверка возможности применения желаемого имени пользователя676
    Регистрация676
Файл checkuser.php679
Файл login.php680
Файл profile.php682
    Добавление текста в поле About Me (Обо мне)683
    Добавление изображения профиля683
    Обработка изображения683
    Отображение текущего профиля684
Файл members.php687
    Просмотр профилей пользователей687
    Добавление и удаление друзей687
    Вывод списка всех участников687
Файл friends.php690
Файл messages.php694
Файл logout.php697
Файл styles.css698
Файл ]javascript.js701
 
Приложение А. Ответы на контрольные вопросы703
Ответы на вопросы главы 1703
Ответы на вопросы главы 2704
Ответы на вопросы главы 3704
Ответы на вопросы главы 4706
Ответы на вопросы главы 5707
Ответы на вопросы главы 6709
Ответы на вопросы главы 7709
Ответы на вопросы главы 8710
Ответы на вопросы главы 9711
Ответы на вопросы главы 10712
Ответы на вопросы главы 11713
Ответы на вопросы главы 12714
Ответы на вопросы главы 13715
Ответы на вопросы главы 14716
Ответы на вопросы главы 15717
Ответы на вопросы главы 16718
Ответы на вопросы главы 17719
Ответы на вопросы главы 18720
Ответы на вопросы главы 19721
Ответы на вопросы главы 20723
Ответы на вопросы главы 21724
Ответы на вопросы главы 22725
Ответы на вопросы главы 23726
Ответы на вопросы главы 24727
Ответы на вопросы главы 25728
 
Приложение Б. Интернет-ресурсы730
Сайты, относящиеся к PHP730
Сайты, относящиеся к MySQL730
Сайты, относящиеся к JavaScript731
Сайты, относящиеся к CSS731
Сайты, относящиеся к HTML5731
Сайты, относящиеся к AJAX731
Сайты с разнообразными ресурсами732
Сайты с ресурсами издательства O'REILLY732
 
Приложение В. MySQL's FULLTEXT Stopwords733
 
Приложение Г. Функции MySQL736
Строковые функции736
Функции для работы с датами739
Функции для работы с временем744
 
Приложение Д. Селекторы, объекты и методы jQuery747
Селекторы jQuery747
Объекты jQuery751
Методы jQuery752

Книги на ту же тему

  1. jQuery. Подробное руководство по продвинутому JavaScript, Бибо Б., Кац И., 2009
  2. ES6 и не только, Симпсон К., 2017
  3. JavaScript и DHTML. Сборник рецептов. Для профессионалов, Гудман Д., 2004
  4. JavaScript. Подробное руководство, Флэнаган Д., 2004
  5. JavaScript. Сборник рецептов для профессионалов, Бранденбау Д., 2000
  6. Автоматизация Photoshop CS2 на 100%, Царик С. В., 2007
  7. Разработка веб-приложений с использованием ASP.NET и AJAX, Эспозито Д., 2012
  8. Добавляем Ajax, Пауэрс Ш., 2009
  9. AJAX и РНР: разработка динамических веб-приложений, Дари К., Бринзаре Б., Черчез-Тоза Ф., Бусика М., 2006
  10. PHP 5. — 2-е изд., перераб. и доп., Котеров Д. В., Костарев А. Ф., 2010
  11. Профессиональное PHP программирование, 2-е издание, 2003
  12. PHP. Сборник рецептов, Скляр Д., Трахтенберг А., 2005
  13. PHP. Справочник, Хадсон П., 2006
  14. Профессиональное программирование на PHP, Шлосснейгл Д., 2006
  15. PHP 4. Разработка Web-приложений (+ CD-ROM), Ратшиллер Т., Геркен Т., 2001
  16. PHP 5. Профессиональное программирование, Гутманс Э., Баккен С., Ретанс Д., 2006
  17. Головоломки на PHP для хакера, Кузнецов М. В., Симдянов И. В., 2006
  18. Руководство по MySQL, Тахагхогхи С., Вильямс Х. Е., 2007
  19. MySQL. Сборник рецептов, Дюбуа П., 2004
  20. MySQL и mSQL. Базы данных для небольших предприятий и Интернета, Яргер Р. Д., Риз Д., Кинг Т., 2000
  21. CSS ручной работы. Библиотека специалиста, Седерхольм Д., Маркотт И., 2011
  22. CSS. Карманный справочник. — 4-е изд., Мейер Э. А., 2016
  23. CSS — каскадные таблицы стилей. Подробное руководство, 2-е изд., Мейер Э. А., 2006
  24. Dynamic HTML, Айзекс С., 1998
  25. Dynamic HTML: справочник, Хоумер А., Улмен К., 2000
  26. HTML и XHTML. Подробное руководство, Муссиано Ч., Кеннеди Б., 2002
  27. Apache для профессионалов, Уэйнрайт П., 2001
  28. Тюнинг веб-сервера. — 2-е изд., Киллелиа П., 2003

© 1913—2013 КнигоПровод.Ruhttp://knigoprovod.ru