Чтение онлайн

на главную - закладки

Жанры

Первые 20 часов. Как быстро научиться… чему угодно
Шрифт:

Кроме того, я хочу добавить еще одну меру безопасности — шифрование. Протокол SSL — его используют банки для обеспечения безопасности онлайновых банковских операций — добавится к моему приложению с помощью библиотеки rack-ssl-enforcer:

require 'rack-ssl-enforcer'

use Rack::SslEnforcer

Библиотека заставляет браузер использовать безопасное SSL-соединение для доступа к сайту. Heroku позволяет приложениям, размещенным на его доменах, использовать SSL по умолчанию, поэтому никакие дополнительные настройки не нужны [47].

Флэш-сообщения

Есть

еще одна функция которую мне хотелось бы добавить. Я видел сайты, где в ответ на ваши действия появляются маленькие сообщения, например «Ваша страница создана/отредактирована/удалена». Как это сделать?

После недолгих поисков я обнаружил библиотеку под названием sinatra-flash, которая обслуживает эту функцию [48]. Такие сообщения называются флэш-сообщениями и работают следующим образом: перед переходом на новую страницу в куки-файле браузера пользователя сохраняется небольшой текст. При загрузке следующей страницы приложение читает куки-файл и показывает сообщение пользователю.

Я добавил библиотеку к Gemfile и application.rb, в соответствующих маршрутах написал сообщения, которые хотел бы видеть, затем добавил несколько строк программы в мои шаблоны ERB, чтобы показывать эти сообщения. Дело сделано. Мое приложение завершено.

Вот как начинается ознакомительный файл Readme приложения «Кодекс»:

«Codex» — это простое интернет-приложение, справочник для одного пользователя, написанное на языке Ruby. «Кодекс» использует Sinatra и DataMapper для того, чтобы создавать, сохранять, обновлять и удалять записи страниц в простой базе данных Postgres. Приложение готово для немедленного размещения на сервисе Heroku.

Форматирование Markdown доступно для всех страниц, что облегчает создание сложных страниц с простой разметкой. Сохранность информации обеспечивают аутентификация HTTP и принудительное SSL-шифрование для всего трафика. Дизайн Bootstrap делает страницы аккуратными и привлекательными.

Далее в файле Readme приводятся подробные инструкции по установке приложения на Heroku. Метод «Начни разработку с Readme» оказался весьма успешным.

Всего на разработку приложения «Кодекс» я потратил 10 часов. Таким образом, затраты времени на обучение программированию составили 20 часов. (Эту главу я писал дольше, чем программу.)

Когда приложение было готово, я присоединился к локальному форуму программистов, работающих на Ruby, и рассказал о том, как работает программа. Меня похвалили за то, каким ясным, компактным и понятным получился код. Один из участников форума заметил, что качество кода оказалось лучше, чем у многих проектов, выполненных профессиональными программистами.

Миссия завершена.

Ярость против машины

Хотелось бы кое-что прояснить: процесс, который я описал, выглядит линейным и прямым. Причина в том, что до сих пор я рассказывал о своих успехах, а не о трудностях и ошибках.

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

На самом деле процесс программирования

выглядел так. Когда я приходил к выводу, что понял, как должна работать та или иная часть программы, то писал код, тестировал его — и программа вылетала. Я пытался исправить ошибку. Это иногда получалось, иногда нет, а порой изменения приводили к новым проблемам. Если я заходил в тупик, то искал объяснение ошибки или нужную библиотеку на Stack Overflow или в Google.

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

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

На этапе добавления бокового поля мое приложение перестало работать. Я пытался выявить свою ошибку, но ничего не получалось. Я был готов рвать на себе волосы — если бы они у меня были.

Именно тогда я осознал ценность git branch и git merge: они позволяют создавать экспериментальные копии своей программы, а затем вносить изменения. Если копия заработала, вы можете сохранить изменения в оригинале. В случае ошибки вы просто удаляете экспериментальную ветвь, не теряя всей предыдущей работы.

Программирование — сложный процесс, и существует миллион возможностей сделать ошибку. Компьютер ничего не прощает и не выполняет неправильно сформулированные команды. Точно так же легко пропустить какие-нибудь мелочи, что приведет к непредсказуемым результатам. Я долго бился над ошибкой во фрагменте, связанном с сохранением пустых записей в базе данных, которые появлялись в списке страниц.

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

Каждая моя ошибка меня чему-нибудь учила. В этом заключается одно из скрытых преимуществ программирования. Компьютер — самый быстрый из всех возможных типов обратной связи. Когда вы что-то делаете неправильно, то мгновенно узнаете об этом. А когда правильно, то мгновенно видите результат. Если вам удастся побороть желание швырнуть компьютер в стену, то мгновенная обратная связь может превратить программирование в весьма увлекательное занятие.

В начале этого эксперимента я совсем не умел писать программы. Теперь умею. Потребовалось потратить определенное время, чтобы сделать коды послушными, а также проявить упорство или выполнить кое-какие исследования, если я заходил в тупик.

Что же я приобрел, потратив столько сил? Очень много. Я узнал, что такое программирование, как оно выглядит и какая от него польза. Я научился с нуля создавать интернет-приложения на языке Ruby, а затем размещать их на рабочих серверах. Я познакомился с Sinatra, Heroku, Jekyll, DataMapper, Rake и другими универсальными инструментами, с помощью которых могу разрабатывать новые приложения. Я научился находить ошибки в программе и устранять их.

Поделиться:
Популярные книги

Господин моих ночей (Дилогия)

Ардова Алиса
Маги Лагора
Любовные романы:
любовно-фантастические романы
6.14
рейтинг книги
Господин моих ночей (Дилогия)

Его нежеланная истинная

Кушкина Милена
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Его нежеланная истинная

История "не"мощной графини

Зимина Юлия
1. Истории неунывающих попаданок
Фантастика:
попаданцы
фэнтези
5.00
рейтинг книги
История немощной графини

Санек

Седой Василий
1. Санек
Фантастика:
попаданцы
альтернативная история
4.00
рейтинг книги
Санек

Убивать чтобы жить 6

Бор Жорж
6. УЧЖ
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 6

Стеллар. Трибут

Прокофьев Роман Юрьевич
2. Стеллар
Фантастика:
боевая фантастика
рпг
8.75
рейтинг книги
Стеллар. Трибут

Идеальный мир для Лекаря 26

Сапфир Олег
26. Лекарь
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Идеальный мир для Лекаря 26

Отверженный VIII: Шапка Мономаха

Опсокополос Алексис
8. Отверженный
Фантастика:
городское фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Отверженный VIII: Шапка Мономаха

Хозяйка забытой усадьбы

Воронцова Александра
5. Королевская охота
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Хозяйка забытой усадьбы

Убивать, чтобы жить

Бор Жорж
1. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать, чтобы жить

Душелов. Том 3

Faded Emory
3. Внутренние демоны
Фантастика:
альтернативная история
аниме
фэнтези
ранобэ
хентай
5.00
рейтинг книги
Душелов. Том 3

Ползком за монстрами!

Молотов Виктор
1. Младший Приручитель
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Ползком за монстрами!

Аргумент барона Бронина

Ковальчук Олег Валентинович
1. Аргумент барона Бронина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Аргумент барона Бронина

Газлайтер. Том 12

Володин Григорий Григорьевич
12. История Телепата
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 12