Upgrade to Pro — share decks privately, control downloads, hide ads and more …

mom, where do the sites come form?

mom, where do the sites come form?

RailsGirls Ukraine

October 06, 2012
Tweet

More Decks by RailsGirls Ukraine

Other Decks in Programming

Transcript

  1. Скользим по Рельсам или “Мама, откуда берутся сайты?” Леонид Шевцов

    для RailsGirls, Днепропетровск, октябрь 2012 Saturday, October 6, 12
  2. Что такое Ruby on Rails? Ruby on Rails (или, любовно,

    “Рельсы”) - это “каркас” для создания веб-приложений. Рельсы - это удобная “рамка”, в которую можно расположить нужные элементы (как фотографии в альбом). С Рельсами не обязательно разбираться в нюансах работы веб-сервера, базы данных, и других технических скучностях. Saturday, October 6, 12
  3. Как устроены сайты Давным-давно, на заре Интернета, каждая веб-страничка была

    обыкновенным текстовым документом, который был набран в текстовом редакторе, например, в Ворде. Такие веб-странички до сих пор встречаются на просторах Сети. Но... Saturday, October 6, 12
  4. Проблема 1: Скучно! Странички, набранные вручную, можно было менять только

    вручную. Хотелось более “живых” страниц, которые можно было не только смотреть, но и изменять их содержимое без привлечения редактора. Вывод: странички должна была создавать программа (веб-приложение). Saturday, October 6, 12
  5. Проблема 2: Неудобно! Многие страницы на одном и том же

    сайте очень похожи друг на друга; например, страница одного пользователя ВКонтакте состоит из тех же элементов (аватарка, ник, стена), что и любого другого. Набирать каждую такую страницу вручную оказалось неудобно и непрактично. Saturday, October 6, 12
  6. Шаблоны! Поэтому люди придумали “шаблоны”. Шаблон - это страничка, в

    которой все изменяющиеся места заменили на “пробелы”, в которые подставляются данные. Приложение использует шаблоны, чтобы построить конечный вид странички. Точно так же работают бумажные формы и бланки. Saturday, October 6, 12
  7. Чем заполнять шаблоны? Итак, странички сайтов получаются из шаблонов. Но

    чем их заполнять? Откуда берется информация? Откуда ВКонтакте знает, что на страничке твоей любимой школьной учительницы надо написать “Марфа Петровна”, а не “Павел Дуров”? Можно так выразиться, что в эту страницу нужно “вписать” какого-то человека. А что такое “человек” в устройстве сайта? Saturday, October 6, 12
  8. Отступление о вещах Люди очень хорошо умеют раскладывать предметы по

    категориям. Например, туфли у тебя лежат отдельно от помады, а тарелки - отдельно от кастрюль. Предметы одной категории наделены одинаковым набором характеристик (у всякой помады есть цвет), поэтому их легко сравнивать, считать и выбирать нужный. Saturday, October 6, 12
  9. Модели! Точно так же программы работают с такими категориями вещей,

    как “человеки”, “фотографии”, “сердечки”, и даже... “категории”. Категории предметов принято называть “моделями” (или “классами”), а предметы - “объектами”. Свойства также называют “атрибутами”. Saturday, October 6, 12
  10. Модель “Туфли” Название (строка) Размер (число) Тип (строка) Высота каблука

    (число) Цвет (строка) Дата покупки (дата) Saturday, October 6, 12
  11. Объект “Туфли #123” Название: “Любимые красненькие” Размер: 37 Тип: “шпильки”

    Высота каблука: 9 Цвет: “барбарисовый” Дата покупки: 02.09.2012 Saturday, October 6, 12
  12. Модель - не только данные Модель также хранит связи между

    данными: “Корзина для покупок” содержит много “Туфель”. Модель также обрабатывает данные. Стоимость Корзины = сумма цен Туфель. Saturday, October 6, 12
  13. Кто отвечает браузеру? Пока шаблоны и модели никак не привязаны

    к, собственно, “сайту” как чему-то, что можно открыть в браузере. Когда ты вводишь адрес странички или переходишь по ссылке на сайт, откуда приложение знает, какой шаблон взять и какие объекты в него подставить? Saturday, October 6, 12
  14. Контроллеры! Поэтому третий элемент сайта - это “контроллеры”. Контроллер -

    это кусочек программы, который получает запрос от браузера, выбирает для страницы шаблон и подготавливает для неё данные. Например, есть контроллер для страницы пользователя; для страницы со списком пользователей; для страницы загрузки фотографии. Saturday, October 6, 12
  15. Сохранение данных Контроллеры, как часть сайта, “говорящая” с браузером, также

    ответственны за прием данных, отправленных пользователем. Например, когда ты отправляешь сообщение, его текст (и адресат) попадает в контроллер отправки сообщения, и контроллер выполняет доставку. А когда ты обновляешь свой статус, то другой контроллер обновляет его в “твоем” объекте пользователя. Saturday, October 6, 12
  16. Маршруты! Контроллеры привязываются к адресам страничек с помощью “карты маршрутов”

    Например, в ней сказано, что для адреса “/users/любое-имя” должен запуститься контроллер профиля пользователя, а для адреса “/users” - списка пользователей. Saturday, October 6, 12
  17. Твой браузер Приложение Контроллер Маршрутизатор Шаблоны Дай мне страницу /books/123

    Контроллер: Books, действие show, id: 123 Нарисуй мне шаблон books#show для вот этой книги А пожалуйста Модели Дай мне книгу с id: 123 А вот она Веб-страница Saturday, October 6, 12
  18. Как сделать сайт? Теперь мы знаем, что для того, чтобы

    добавить страничку на сайт, нужно: добавить для неё маршрут; описать в контроллере нужные данные; создать нужные модели, если их еще нет; и написать шаблон. Saturday, October 6, 12
  19. Сложно? Один из важных принципов программирования - Не Повторяй Уже

    Сделанного (DRY). Часто используемые подходы уже реализованы в Рельсах. Другие возможности уже реализованы в других библиотеках (их огромное множество!) Saturday, October 6, 12
  20. С чего начать Scaffold - встроенная в Рельсы программка для

    создания “отправной точки” твоего приложения. Создает новую модель, и все необходимые шаблоны, маршруты и контроллер для ее просмотра и редактирования. Saturday, October 6, 12
  21. Scaffold подробнее Scaffold создает в приложении такие страницы (для модели

    “Книга”): список книг страницу отдельной книги страницу редактирования книги страницу создания книги ссылку для удаления книги Saturday, October 6, 12
  22. Следующий шаг Изменить шаблоны, созданные скаффолдом (по умолчанию страница книги

    выглядит довольно скучно) Добавить новые страницы (страницу с книгами из серии “Сумерки”) Добавить еще один скаффолд! Saturday, October 6, 12
  23. Одни люди хотят, чтобы что-то произошло. Другие мечтают об этом.

    А третьи — берут и делают. Майкл Джордан Удачи! Saturday, October 6, 12