Джош Кауфман - Первые 20 часов. Как быстро научиться… чему угодно
- Название:Первые 20 часов. Как быстро научиться… чему угодно
- Автор:
- Жанр:
- Издательство:Array Литагент «Аттикус»
- Год:2014
- Город:Москва
- ISBN:978-5-389-06144-6
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Джош Кауфман - Первые 20 часов. Как быстро научиться… чему угодно краткое содержание
Первые 20 часов. Как быстро научиться… чему угодно - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Какие возможности работы с базами данных предоставляет Heroku? Не знаю. Придется вновь заглянуть в документацию.
По умолчанию Heroku использует базу данных под названием Postgres [35]. Каждому новому приложению автоматически назначается маленькая база данных разработки. Мне это подходит, но как ею пользоваться и какими средствами протестировать программу на моем компьютере?
За ответами на эти вопросы я решил обратиться к Stack Overflow. Общее мнение: решение подобных задач значительно облегчает применение базы данных под названием DataMapper [36].
DataMapper относится к классу программ, получивших название «объектно-реляционного отображения», или сокращенно ORM [37]. Метод ORM решает насущную проблему программистов: базы данных зачаcтую используют собственный язык, отличающийся от языка, на котором пишется приложение. В большинстве баз данных используется язык SQL [38], однако существуют и сотни других языков.
Предположим, что мы пишем программу для сайта Amazon.com и хотим вывести на экран список книг Дж. К. Роулинг, автора серии о Гарри Поттере. Команда на языке SQL будет выглядеть так:
SELECT * FROM Book WHERE author = "J.K. Rowling" ORDER BY
title;
Данная команда извлекает из базы данных все записи, в поле «author» которых содержится «J.K. Rowling», и располагает их в алфавитном порядке по названию книги.
К сожалению, заставить SQL или любой другой язык запросов базы данных корректно работать с такими языками, как Ruby, — сложная задача. Непросто писать программу на одном языке, не говоря уже о нескольких языках одновременно.
Здесь на помощь приходит ORM: она позволяют программисту писать программу на одном языке, который ORM затем переводит на язык базы данных. Так гораздо проще.
Таким образом, DataMapper представляет собой библиотеку, облегчающую связь с базами данных, использующих Ruby. По умолчанию DataMapper содержит большое количество удобных функций для создания, чтения, обновления и удаления записей в базе данных. Поскольку программа DataMapper существует уже довольно давно и тщательно протестирована, в большинстве случаев надежнее пользоваться ею, а не пытаться писать собственную программу для базы данных.
DataMapper доступна в виде стандартной библиотеки, которая устанавливается следующим образом:
$ gem install data_mapper
Поскольку объем библиотеки DataMapper очень велик, ее можно устанавливать по частям. Этот принцип называется «модульностью», и он может служить признаком профессионального программирования. Вот как выглядит команда загрузки всех отдельных библиотек:
$ gem install dm-core dm-aggregates dm-constraints dm-migrations dm-transactions dm-serializer dm-timestamps dm-validations dm-types
Вместо установки всей библиотеки вы можете загрузить только те модули, которые будет использовать ваша программа, что гораздо эффективнее.
Использование DataMapper
Теперь, когда библиотека DataMapper установлена, я должен научиться с ее помощью 1) связываться с базой данных и 2) создавать базу данных для хранения и извлечения нужной мне информации.
В документации на Heroku указано, что следующая команда позволит приложению Sinatra связываться с базой данных:
DataMapper.setup (: default, ENV ['DATABASE_URL'] ||
"sqlite3://# {Dir.pwd} /database.db")
В данном случае || означает «или». ENV ['DATABASE_URL'] — это переменная, которую Heroku использует для вашей базы данных. Если эта база данных недоступна, то будет применен второй вариант, база данных под названием Sqlite [39].
Sqlite установлена на компьютерах Mac по умолчанию и уже готова к работе. DataMapper может связываться и с Postgres, и со Sqlite, если я установлю обе библиотеки:
$ gem install dm-sqlite-adapter dm-postgres-adapter
Это означает, что мое приложение будет использовать Postgres при запуске на сервере Heroku и Sqlite при запуске на моем компьютере. В обоих случаях моя программа остается одной и той же, несмотря на то что базы данных используют разные языки. Это действительно здорово.
Кстати, по поводу запуска такого приложения на моем компьютере… Как это сделать?
Pow!
Информацию о том, как запустить приложения такого типа на моем компьютере, я искал на Stack Overflow и Hacker News. К счастью, существует несколько вариантов. Похоже, я могу установить библиотеки (например, Foreman или Shotgun), которые выполняют приложение, когда я ввожу команду в Terminal, или программу, поддерживающую приложение все время.
Программа, использующая этот подход, называется Pow [40] — «Rack-сервер нулевой конфигурации для Mac OS X». Сайт обещает установить локальный хостинг для разработки приложений на моем компьютере меньше чем за минуту. Звучит привлекательно!
Установка Pow занимает меньше десяти секунд: для загрузки и установки приложения требуется всего одна команда в Terminal. После этого вы вводите команду, которая связывает вашу программу с Pow, и Pow позволит запускать ее на вашем компьютере.
Библиотека Ruby с названием Powder [41] еще больше облегчает этот процесс:
$ gem install powder
После установки библиотеки вы устанавливаете Pow:
$ powder install
Затем переходите в корневой каталог своего приложения и вводите следующую команду:
$ powder link
Вот и все. Мой корневой каталог называется «codex», поэтому теперь приложение выполняется на моем компьютере на http://codex.dev, и у меня появляется возможность протестировать свою работу.
Если я вношу изменения, следующая команда заново запускает программу:
$ powder restart
Все просто. Теперь я готов писать программу. Каждый вечер я буду выделять полтора часа на составление программы — пока работа не будет закончена.
Кодируем, тестируем, исправляем
Теперь я буду описывать, что я делаю, а не как. Полный текст программы вы, если захотите, сможете найти на https://github.com/first20hours/codex.
Вот как должно выглядеть приложение, когда работа будет завершена.

Вы, наверное, заметили, что дизайн страницы состоит из трех частей: верхней навигационной панели, области основного содержания и бокового поля. Я сконструировал эту структуру с помощью инструмента Bootstrap [42], созданного разработчиками Twitter Марком Отто и Джейкобом Торнтоном.
Веб-страницу не нужно разрабатывать с нуля, поскольку Bootstrap представляет собой библиотеку шаблонов HTML и CSS, находящихся в открытом доступе. Использование Bootstrap сэкономит вам уйму времени: вы сможете собрать прототип своего приложения за несколько минут вместо нескольких дней.
Основная единица этого приложения называется «Page», и она отображает запись, хранящуюся в базе данных. Специальная кнопка позволяет просматривать все записи базы данных. Внизу расположены еще две кнопки. Первая дает возможность редактировать текущую страницу, вторая — удалить.
В боковом поле реализованы три основные функции. Вверху расположена форма, позволяющая создать новую страницу, для чего нужно ввести ее название. Здесь также есть список страниц, добавленных пользователем, и этот список может служить указателем. И, наконец, справка по форматированию, помогающая пользователю вспомнить, как применять стандартные функции форматирования.
Читать дальшеИнтервал:
Закладка: