- Фантастика и фэнтези
- Ироническое фэнтези
- Стимпанк
- Детективная фантастика
- Киберпанк
- Попаданцы
- LitRPG
- Космоопера
- Технофэнтези
- Городская фантастика
- Русское фэнтези
- Юмористическая фантастика
- Космическая фантастика
- Боевое фэнтези
- Эпическая фантастика
- Зарубежная фантастика
- Книги магов
- Мистика
- Разная фантастика
- Разное фэнтези
- Любовное фэнтези
- Романтическая фантастика
- Городское фентези
- Историческая фантастика
- Историческое фэнтези
- Социально-философская фантастика
- Сказочная фантастика
- Иностранное фэнтези
- Романтическое фэнтези
- Ироническая фантастика
- Ужасы и Мистика
- Постапокалипсис
- Героическая фантастика
- Фэнтези
- Научная Фантастика
- Социально-психологическая
- Альтернативная история
- Боевая фантастика
- Разная литература
- Пословицы, поговорки
- Шахматы
- Визуальные искусства
- Фанфик
- Авто и ПДД
- Военное
- Отраслевые издания
- Гиды, путеводители
- Зарубежная образовательная литература
- Военная история
- Цитаты из афоризмов
- Современная литература
- Великолепные истории
- Начинающие авторы
- Современная зарубежная литература
- Боевые искусства
- Изобразительное искусство, фотография
- Кино
- Литература 19 века
- Недвижимость
- Музыка, музыканты
- Готические новеллы
- Истории из жизни
- Культура и искусство
- Спецслужбы
- Зарубежная прикладная литература
- Музыка, танцы
- Подростковая литература
- Прочее
- Военная техника, оружие
- Газеты и журналы
- Периодические издания
- Домоводство, Дом и семья
- Любовные романы
- Экономическая литература
- Научные и научно-популярные книги
- О животных
- Биохимия
- Культурология
- Юриспруденция
- Политика
- Психотерапия
- Языкознание
- Научпоп
- Медицина
- Психология, личное
- Радиотехника
- Филология
- Педагогика
- Образовательная литература
- Деловая литература
- Физика
- Науки: разное
- Химия
- Воспитание детей, педагогика
- Детская психология
- Зарубежная публицистика
- Биология
- Архитектура
- Зарубежная психология
- Науки о космосе
- Социология
- Математика
- География
- Беременность, ожидание детей
- Литературоведение
- Транспорт, военная техника
- Обществознание
- Зоология
- География
- Альтернативная медицина
- Иностранные языки
- Ветеринария
- Рефераты
- Астрология
- Биофизика
- Экология
- История Европы
- Учебники
- Шпаргалки
- Государство и право
- Ботаника
- Религиоведение
- История
- Техническая литература
- Прочая научная литература
- Психология
- Детективы и Триллеры
- Справочная литература
- Проза
- Новелла
- Юмор
- Проза
- Историческая проза
- Русская современная проза
- Советская классическая проза
- Повести
- Очерки
- Эссе
- Рассказы
- Зарубежная современная проза
- Сентиментальная проза
- Зарубежная классика
- Афоризмы
- Эпистолярная проза
- Феерия
- Семейный роман/Семейная сага
- Разное
- Антисоветская литература
- Магический реализм
- Русская классическая проза
- Современная проза
- О войне
- Контркультура
- Классическая проза
- Поэзия, Драматургия
- Детская литература
- Детская фантастика
- Детские остросюжетные
- Детские стихи
- Детские приключения
- Внеклассное чтение
- Учебная литература
- Зарубежные детские книги
- Бизнес
- Загадки
- Книги для подростков
- Школьные учебники
- Детский фольклор
- Книги для дошкольников
- Детские детективы
- Детская познавательная и развивающая литература
- Буквари
- Прочая детская литература
- Сказка
- Детская проза
- Детская образовательная литература
- Юмор
- Документальные книги
- Бизнес
- Внешнеэкономическая деятельность
- Тайм-менеджмент
- Кадровый менеджмент
- О бизнесе популярно
- Управление, подбор персонала
- Бизнес
- Менеджмент и кадры
- Продажи
- Экономика
- Ценные бумаги и инвестиции
- Малый бизнес
- Делопроизводство, офис
- Корпоративная культура, бизнес
- Банковское дело
- Финансы
- Зарубежная деловая литература
- Ораторское искусство / риторика
- Личные финансы
- Интернет-бизнес
- Поиск работы
- Государственное и муниципальное управление
- Бухучет и аудит
- Работа с клиентами
- Менеджмент
- Краткое содержание
- Личная эффективность
- Переговоры
- Приключения
- Старинная литература
- Религия и духовность
- Компьютеры и Интернет
- Блог
Читаем без скачивания Первые 20 часов. Как быстро научиться… чему угодно - Джош Кауфман
Шрифт:
Интервал:
Закладка:
Большинство языков программирования включают библиотеки, необходимые большинству программистов, но совсем немного специальных инструментов. Здесь на помощь приходит среда разработки. Вместо того чтобы программировать все с нуля, что займет много времени, вы задействуете среду разработки, которая позволит импортировать и использовать проверенные и надежные библиотеки для решения специальных задач, и сосредоточиваетесь на своем приложении, а не создаете Вселенную.
Среда разработки может иметь разный объем. Некоторые среды включают множество функций и команд в попытке сэкономить программистам время, другие же обходятся минимумом, охватывая лишь несколько основных функций.
В настоящее время у языка Ruby имеется несколько основных сред разработки интернет-приложений. Самые популярные из них — это Ruby on Rails [9] и Sinatra [10].
Ruby on Rails (ее часто называют просто Ruby) была одной из первых больших сред разработки интернет-приложений, предназначенных для Ruby. Созданная в 2004 году Давидом Хейнемейером Ханссоном, Rails использовалась для создания нескольких популярных приложений компании 37signals [11], одним из владельцев которой был Ханссон. В настоящее время тысячи компаний разработали серьезные интернет-приложения для бизнеса на основе Rails.
Программный каркас Rails основан на «генераторах», встроенных программах, которые в ответ на одну команду генерируют большой объем стандартного кода. Затем стандартный код модифицируется в соответствии с конкретными требованиями программиста. Rails помогает разработчику сэкономить время и создать работоспособное приложение без необходимости писать программу с нуля — при условии, если он знает, что ему нужно.
Среда разработки Sinatra, наоборот, является минимальной. Sinatra не использует генераторы, а предоставляет в распоряжение разработчика несколько простых функций, необходимых практически в каждом интернет-приложении, а затем самоустраняется.
Приложения Sinatra выглядят простыми по сравнению с приложениями Rails. Одна-единственная команда в Rails может сгенерировать больше десяти папок и больше 20 файлов. Приложение Sinatra во многих случаях состоит всего лишь из одного файла. Sinatra не генерирует большой массив кода, который затем может быть удален, а поддерживает простоту проекта, добавляя ровно столько кода, сколько нужно для работы.
Подобно выбору языка программирования, выбор среды разработки определяется в основном личными предпочтениями и характером задачи. Rails больше подходит для крупных проектов, над которыми работают несколько программистов, а Sinatra — для небольших. У этих двух сред разработки много общего, и недавнее исследование на RubySource.com показало, что выбор между ними по большей части определяется субъективными причинами [12].
GitHub — это источник программ с открытым кодом, который используют многие программисты для разработки и поддержки своих проектов. Там легко найти примеры приложений, написанных в Rails и Sinatra, чтобы получить представление о каждой среде разработки, и я потратил еще один час на изучение открытых проектов.
Тут существует нетривиальный риск: чтобы изучить программирование, требуется сделать выбор. После того как вы отдали предпочтение определенному языку программирования и среде разработки, гораздо легче приступить к изучению всего, что необходимо знать для написания программы. Однако, не сделав этого выбора, можно потратить годы на поиски «идеальных» средств программирования.
Лучше выбрать язык и среду программирования, которые кажутся вам привлекательными, потратить какое-то время на знакомство с ними и согласиться на неизбежные компромиссы, чем годами заниматься «исследованиями», не продвинувшись ни на шаг. Целый день просидеть в Stack Overflow и Hacker News — это не программирование.
В конечном итоге я решил начать со среды Sinatra. Генераторы Rails могут сэкономить уйму времени, если знать, что ты делаешь, — но я этого не знаю.
Интуиция подсказывает мне, что в такой ситуации лучше выбрать Sinatra. В этой среде программирования ясный, простой и понятный синтаксис. Единственный код, который существует в приложении Sinatra, — это код, созданный разработчиком. Среда разработки хорошо задокументирована, примеры рабочих приложений можно без труда найти на GitHub, а за помощью обратиться к Stack Overflow.
Когда-нибудь я, возможно, поэкспериментирую с Rails. Но теперь лучше начать со среды разработки Sinatra.
Анализ конечного результата
Потратив около пяти часов на предварительные исследования, я сделал все, что требуется для начала работы: разбил интернет-программирование на элементы, выбрал язык, среду разработки и конкретный проект. Пора приступать к делу.
«Разработать приложение в среде Sinatra, которое обслуживает сайт Jekyll» — так выглядит целевой уровень мастерства, однако мне нужно проанализировать это заявление, чтобы спланировать следующий шаг. Чему я должен научиться?
Еще час исследований, и я получаю вот какой результат.
1. Jekyll создает рабочий сайт из локальных статических файлов. Мне нужно сделать шаблон HTML для сайта при помощи специальных форматирующих тегов и экспортировать архив публикаций с сайта PersonalMBA.com, как описывается в инструкции, написанной Полом Стаматиу[13].
2. Приложение, созданное в среде Sinatra, обрабатывает запросы от посетителей сайта, предоставляя им запрошенные файлы. Это приложение я должен написать с нуля.
3. Готовый сайт Jekyll и серверное приложение Sinatra требуется загрузить на сетевой хост.
4. Для решения всех этих задач мне нужно понять, как установить на мой компьютер последнюю версию языка Ruby, а также среду Sinatra и другие необходимые программы.
Последнее требование может служить превосходным примером подготовки необходимых условий для занятий. Если я не смогу понять, как установить Ruby на свой компьютер, то буду не в состоянии перейти к следующим этапам. Так что начинать нужно с этого.
Важно отметить, что интернет-технологии меняются ежедневно. Вполне вероятно, что какие-то последовательности команд, приведенные в данном разделе, уже устареют к тому времени, когда вы будете читать книгу. Не переживайте: важен метод, а не команды.
Аналогичным образом, у вас возникнет искушение лишь бегло просмотреть приведенные фрагменты программы. Это естественное желание: строки кода выглядят слишком сложными, и вы, скорее всего, не сразу поймете, что они означают.
Я бы советовал вам не поддаваться искушению. Эти имена, команды и символы казались мне такими же чужими, как сейчас кажутся вам. Эта глава посвящена процессу, с помощью которого вы разберетесь в том, что они значат и как их использовать. Если вы попытаетесь прочесть строки программы, то извлечете гораздо больше пользы из этой главы.
Вперед!
Обновление Ruby
Компьютер у меня уже есть, и это хорошее начало: без него писать программу невозможно.
В настоящее время я пользуюсь Apple MacBook Air с операционной системой Mac OS X 10.6. Недолгий поиск в Google позволяет выяснить, что операционная система поставляется с уже установленной программой Ruby версии 1.8.7. И это тоже хорошо: я могу запускать написанные на языке Ruby программы без дополнительных усилий.
Но проблема в том, что Ruby 1.8.7 не самая последняя версия программы. Когда я пытаюсь установить Jekyll, система сообщает, что программа требует версию Ruby не ниже 1.9.1, и это значит, что мне нужно выяснить, как обновить программу. Придется вновь прибегнуть к помощи Google.
Поиск выявил две программы, предназначенные для облегчения установки Ruby: rbenv и ruby-build. Обе программы поддерживаются Сэмом Стефенсоном, разработчиком Ruby из компании 37signals. Вместе они помогают устанавливать новые версии Ruby и указывать компьютеру, какую версию использовать.
Инструкция на странице документации [14] rbenv показывает, как установить программы на компьютер. Вот что представляют собой команды установки:
$ cd ~
$ git clone git://github.com/sstephenson/ruby-build.git
$ cd ruby-build
$ sudo./install.sh
$ cd..
$ git clone git://github.com/sstephenson/rbenv.git.rbenv
$ mkdir — p ~/.rbenv/plugins
$ cd ~/.rbenv/plugins
$ git clone git://github.com/sstephenson/ruby-build.git
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashprofile
$ echo 'eval "$ (rbenv init — )"' >> ~/.bashprofile
$ exec $SHELL
$ rbenv install 1.9.3-p125
$ rbenv rehash
$ rbenv global 1.9.3-p125
Выглядит устрашающе, но это всего лишь список команд. Давайте проанализируем его.
Эти команды водятся в программе Terminal, которая предустановлена на компьютерах Apple. В кинофильмах часто показывают хакеров, которые лихорадочно набирают длинные строчки команд, отображающиеся на экране. Так вот — их компьютеры работают в программе Terminal [15].
Я открываю программу и ввожу первую команду:
$ cd ~
Эту команду понять нетрудно. Символ $ программа Terminal выводит на экран, когда готова к приему новой команды. cd — это сокращение от «сменить каталог» (change directory). Не составляет труда выяснить, что символ ~ обозначает «корневой каталог пользователя», то есть папку на моем компьютере, где хранится мой профиль пользователя.