You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Возожно, вы уже слышали о MVC в отношении других фрэймворков, однако что представляет собой MVC в RoR? MVC –
@@ -42,72 +53,200 @@ Controller (Поведение, далее Контроллер) получае
Active Record
Active Record – это Модель в RoR. Модель хранит данные и предоставляет базу для работы с данными. Кроме этого Active Record также является ORM фрэймворком. ORM значит Object-relational mapping (Объектно-реляционная проекция). Собственно Active Record делает следующие вещи:
Проекция таблицы на класс. Каждая таблица проецируется на один или несколько классов по принципу convention over configuration (соглашение выше конфигурации). Одно из таких соглашений – имя таблицы должно быть во множественном числе, а название класса – в единственном. Атрибуты таблицы налету проецируются в атрибуты экземпляра Руби. После того, как все проекции сделаны, каждый объект ORM класса представляет определенную строку таблицы, с которой класс был спроецирован.
Соединение с БД. Вы можете подключиться к базе данных, используя API, предоставляемый Active Record, который создает необходимый вам запрос непосредственно в движок БД при помощи адаптеров. У Active Record есть адаптеры для MySQL, Postgres, MS SQLServer, DB2, и SQLite. Необходимо лишь записать параметры доступа к БД в файле database.yml.
Операции CRUD. Это операции create (создание), retrieve (получение), update (обновление) и delete (удаление) над таблицей. Так как Active Record – это ORM фрэймворк, вы всегда работаете с объектами. Чтобы создать новую строку таблицы, вы создаете новый объект класса и заполняете его переменные экземпляра значениями. Стоит заметить, что все это Active Record делает за вас.
Проверка данных. Проверка данных перед помещением их в таблицу – это первый шаг в безопасности вашего проекта. Active Record предоставляет проверку Модели. Данные могут быть проверены автоматически с помощью множества готовых методов, которые, в случае необходимости, можно переписать под собственные нужды.
Active Record – это Модель в RoR. Модель хранит данные и предоставляет базу для работы с данными.
Кроме этого Active Record также является ORM фрэймворком. ORM значит Object-relational mapping
(Объектно-реляционная проекция). Собственно Active Record делает следующие вещи:
Проекция таблицы на класс. Каждая таблица проецируется на один или несколько классов по принципу
convention over configuration (соглашение выше конфигурации). Одно из таких соглашений – имя таблицы
должно быть во множественном числе, а название класса – в единственном. Атрибуты таблицы налету проецируются
в атрибуты экземпляра Руби. После того, как все проекции сделаны, каждый объект ORM класса представляет
определенную строку таблицы, с которой класс был спроецирован.
Соединение с БД. Вы можете подключиться к базе данных, используя API, предоставляемый Active Record, который
создает необходимый вам запрос непосредственно в движок БД при помощи адаптеров. У Active Record есть адаптеры для MySQL,
Postgres, MS SQLServer, DB2, и SQLite. Необходимо лишь записать параметры доступа к БД в файле database.yml.
Операции CRUD. Это операции create (создание), retrieve (получение), update (обновление) и delete (удаление) над таблицей.
Так как Active Record – это ORM фрэймворк, вы всегда работаете с объектами. Чтобы создать новую строку таблицы, вы создаете
новый объект класса и заполняете его переменные экземпляра значениями. Стоит заметить, что все это Active Record делает за
вас.
Проверка данных. Проверка данных перед помещением их в таблицу – это первый шаг в безопасности вашего проекта. Active Record
предоставляет проверку Модели. Данные могут быть проверены автоматически с помощью множества готовых методов, которые, в
случае необходимости, можно переписать под собственные нужды.
Action View
Вид включает в себя логику, необходимую для вывода данных Модели. Роль Вида в RoR играет Action View. Наилее часто используемые функции Action View:
Шаблоны (Templates). Шаблоны – это файлы, содержащие заполнители (placeholders), которые буду заменены на контент. Шаблоны могут содержать HTML-код и код Ruby, встраиваемый в HTML с использованием синтакса встроенного (embedded) Ruby (ERb).
Помощники (helper, далее хелпер) форм и форматирования. Хелперы форм позволяют создавать такие элементы страниц, как чекбоксы, списки, используя готовые методы. В свою очередь хелперы форматирования позволяют форматировать данные необходимым нам способом, методы существуют для дат, валют и строк.
Макет. Макеты (layouts) определяют, как контент будет расположен на странице. Динамически создаваемая страница может содержать вложение из нескольких страниц, даже без использования таблиц и фрэймов, используя API Макета.
Вид включает в себя логику, необходимую для вывода данных Модели. Роль Вида в RoR играет Action View.
Наилее часто используемые функции Action View:
Шаблоны (Templates). Шаблоны – это файлы, содержащие заполнители (placeholders), которые буду заменены на контент.
Шаблоны могут содержать HTML-код и код Ruby, встраиваемый в HTML с использованием синтакса встроенного (embedded)Ruby (ERb).
Помощники (helper, далее хелпер) форм и форматирования. Хелперы форм позволяют создавать такие элементы страниц, как
чекбоксы, списки, используя готовые методы. В свою очередь хелперы форматирования позволяют форматировать данные необходимым
нам способом, методы существуют для дат, валют и строк.
Макет. Макеты (layouts) определяют, как контент будет расположен на странице. Динамически создаваемая страница может
содержать вложение из нескольких страниц, даже без использования таблиц и фрэймов, используя API Макета.
Action Controller
В веб-приложении Контроллер регулирует поток логики приложения. Он находится на границе программы, перехватывая все запросы, на основе которых он изменяет какой-то объект Модели и вызывает Вид, чтобы отобразить обновленные данные. В RoR Action Controller является Контроллером, вот его основные функции:
Поддержка сессий. Сессия – это период времени, проведенный пользователем на сайте. Его можно отследить с помощью cookie или объекта сессии. Cookie – небольшой файл, он не может содержать объекты, в отличие от объекта сессии.
Фильтрация. Бывают ситуации, когда необходимо вызвать определенный код, перед тем как исполнять логику Контроллера или после него, например, аутентификация пользователей, логирование событий, предоставление персонального ответа. Помогают в таких случаях фильтры, предоставляемые Action Controller. Существуют три основных фильтра: before, after и around. О них – позже.
Кэширование. Кэширование – это процесс, при котором наиболее запрашиваемый контент сохраняется в кэше, чтобы не было необходимости запрашивать его вновь и вновь.
В веб-приложении Контроллер регулирует поток логики приложения. Он находится на границе программы, перехватывая все
запросы, на основе которых он изменяет какой-то объект Модели и вызывает Вид, чтобы отобразить обновленные данные.
В RoR Action Controller является Контроллером, вот его основные функции:
Поддержка сессий. Сессия – это период времени, проведенный пользователем на сайте. Его можно отследить с помощью cookie
или объекта сессии. Cookie – небольшой файл, он не может содержать объекты, в отличие от объекта сессии.
Фильтрация. Бывают ситуации, когда необходимо вызвать определенный код, перед тем как исполнять логику Контроллера или
после него, например, аутентификация пользователей, логирование событий, предоставление персонального ответа. Помогают
в таких случаях фильтры, предоставляемые Action Controller. Существуют три основных фильтра: before, after и around.
О них – позже.
Кэширование. Кэширование – это процесс, при котором наиболее запрашиваемый контент сохраняется в кэше, чтобы не было
необходимости запрашивать его вновь и вновь.
7. локига в контроллере, должна ли быть и почему
It depends. In the spirit of object oriented programming it is better for a model (class) to encapsulate it's own
data and behaviour that is related to manipulating that data. The way the data is manipulated is of course dependant
on your business logic but if it's tightly coupled with the data then it should belong in the model.
That doesn't mean all business logic belongs in the models, the controllers should be responsible for marshalling
interaction between the user and the data and possibly any interactions between models.
8. назначение миграций
Миграции - это удобный способ изменять схему вашей базы данных всё время неизменным и простым образом.
Они используют Ruby DSL. Поэтому вам не нужно писать SQL вручную, позволяя вашей схеме быть независимой от базы данных.
Каждую миграцию можно рассматривать как новую 'версию' базы данных. Схема изначально ничего не содержит,
а каждая миграция изменяет ее, добавляя или убирая таблицы, столбцы или записи. Active Record знает, как обновлять
вашу схему со временем, перенося ее из определенной точки в прошлом в последнюю версию. Active Record также обновляет
ваш файл db/schema.rb, чтобы он соответствовал текущей структуре вашей базы данных.
9. Зачем нужны тесты
Автоматические тесты дают уверенность, что ваша программа работает как задумано.
Такие тесты можно запускать многократно. Успешное выполнение тестов покажет разработчику,
что его изменения не сломали ничего, что ломать не планировалось.
Провалившийся тест позволит обнаружить, что в коде сделаны изменения, которые меняют или ломают его поведение.
Исследование ошибки, которую выдает провалившийся тест, и сравнение ожидаемого результата с полученным даст возможность
понять, где возникла ошибка, будь она в коде или в требованиях.
10. TDD
Разработка через тестирование (англ. test-driven development, TDD) — техника разработки программного обеспечения,
которая основывается на повторении очень коротких циклов разработки: сначала пишется тест, покрывающий желаемое изменение,
затем пишется код, который позволит пройти тест, и под конец проводится рефакторинг нового кода к соответствующим стандартам.
Кент Бек, считающийся изобретателем этой техники, утверждал в 2003 году, что разработка через тестирование поощряет простой
дизайн и внушает уверенность (англ. inspires confidence)[1].
Я не буду тут ссылаться на статьи и презентации корифеев IT индустрии. Мне запомнилась одна фраза из Twitter по
поводу TDD которая засела в моем сознании, и которая на мой взгляд четко и коротко характеризует TDD подход.
К сожалению дословно я её привести не могу, но смысл в ней следующий: «если вы следуете TDD, то можете быть 100%
уверены, что каждая строчка кода была написана благодаря упавшему(ым) тесту(ам)». Я видел и слышал много дебатов
по поводу достоинств и недостатков TDD и BDD, но а) тесты писать надо б) если код был написан благодаря упавшему тесту,
то этому коду можно доверять, и с легкостью его изменять (рефакторить) не боясь испортить поведение системы.
11. BDD
Керована поведінкою розробка (англ. behavior-driven development (BDD)) — процес розробки програмного забезпечення,
що виникла з керованої тестами розробки (TDD).[1][2][3] BDD поєднує основні засади та техніки TDD з ідеями
предметно-орієнтованого проектування та об'єктно-орієнтованого дизайну з метою командам розробників та менеджменту
спільні інструменти для співпраці під час розробки програмного забезпечення.[1][4]
Теперь про BDD. Появилось это явление позже и как утверждает Фаулер в статье «Mocks Aren't Stubs» благодаря так
называемым мокистам. С другой стороны этот подход активно продвигают ребята из Agaile тусовки, сводя к минимуму расстояние
между разработчиками, пользователями и аналитиками систем. Достигается это путем получения Executable Scenarios, иными
словами, сценарии которые описывают пользователи переводятся в исполняемый тест.
12. JS
Node Ember React ES16 !!!!!
13. Настройки HTTP серверов
Веб-сервер — сервер, принимающий HTTP-запросы от клиентов, обычно веб-браузеров, и выдающий им HTTP-ответы,
как правило, вместе с HTML-страницей, изображением, файлом, медиа-потоком или другими данными.
Веб-сервером называют как программное обеспечение, выполняющее функции веб-сервера, так и непосредственно
компьютер (см.: Сервер (аппаратное обеспечение)), на котором это программное обеспечение работает.
Клиент, которым обычно является веб-браузер, передаёт веб-серверу запросы на получение ресурсов,
обозначенных URL-адресами. Ресурсы — это HTML-страницы, изображения, файлы, медиа-потоки или другие данные,
которые необходимы клиенту. В ответ веб-сервер передаёт клиенту запрошенные данные. Этот обмен происходит по протоколу HTTP.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Возожно, вы уже слышали о MVC в отношении других фрэймворков, однако что представляет собой MVC в RoR? MVC –
это паттерн архитектуры приложения, четко разделяющий три его компонента:
Model (далее Модель) является «сутью» приложения и отвечает за непосредственные алгоритмы,
расчёты и тому подобное внутреннее устройство приложения. Также предоставляет линк к хранилищу данных.
View (Представление, дальше Вид) предназначен для вывода данных, предоставленных Моделью.
Это единственная часть MVC, которая непосредственно контактирует с пользователем.
Controller (Поведение, далее Контроллер) получает данные от пользователя и передаёт их в Модель.
Кроме того, он получает сообщения от Модели и передаёт их в Вид.
Active Record
Active Record – это Модель в RoR. Модель хранит данные и предоставляет базу для работы с данными. Кроме этого Active Record также является ORM фрэймворком. ORM значит Object-relational mapping (Объектно-реляционная проекция). Собственно Active Record делает следующие вещи:
Проекция таблицы на класс. Каждая таблица проецируется на один или несколько классов по принципу convention over configuration (соглашение выше конфигурации). Одно из таких соглашений – имя таблицы должно быть во множественном числе, а название класса – в единственном. Атрибуты таблицы налету проецируются в атрибуты экземпляра Руби. После того, как все проекции сделаны, каждый объект ORM класса представляет определенную строку таблицы, с которой класс был спроецирован.
Соединение с БД. Вы можете подключиться к базе данных, используя API, предоставляемый Active Record, который создает необходимый вам запрос непосредственно в движок БД при помощи адаптеров. У Active Record есть адаптеры для MySQL, Postgres, MS SQLServer, DB2, и SQLite. Необходимо лишь записать параметры доступа к БД в файле database.yml.
Операции CRUD. Это операции create (создание), retrieve (получение), update (обновление) и delete (удаление) над таблицей. Так как Active Record – это ORM фрэймворк, вы всегда работаете с объектами. Чтобы создать новую строку таблицы, вы создаете новый объект класса и заполняете его переменные экземпляра значениями. Стоит заметить, что все это Active Record делает за вас.
Проверка данных. Проверка данных перед помещением их в таблицу – это первый шаг в безопасности вашего проекта. Active Record предоставляет проверку Модели. Данные могут быть проверены автоматически с помощью множества готовых методов, которые, в случае необходимости, можно переписать под собственные нужды.
Action View
Вид включает в себя логику, необходимую для вывода данных Модели. Роль Вида в RoR играет Action View. Наилее часто используемые функции Action View:
Шаблоны (Templates). Шаблоны – это файлы, содержащие заполнители (placeholders), которые буду заменены на контент. Шаблоны могут содержать HTML-код и код Ruby, встраиваемый в HTML с использованием синтакса встроенного (embedded) Ruby (ERb).
Помощники (helper, далее хелпер) форм и форматирования. Хелперы форм позволяют создавать такие элементы страниц, как чекбоксы, списки, используя готовые методы. В свою очередь хелперы форматирования позволяют форматировать данные необходимым нам способом, методы существуют для дат, валют и строк.
Макет. Макеты (layouts) определяют, как контент будет расположен на странице. Динамически создаваемая страница может содержать вложение из нескольких страниц, даже без использования таблиц и фрэймов, используя API Макета.
Action Controller
В веб-приложении Контроллер регулирует поток логики приложения. Он находится на границе программы, перехватывая все запросы, на основе которых он изменяет какой-то объект Модели и вызывает Вид, чтобы отобразить обновленные данные. В RoR Action Controller является Контроллером, вот его основные функции:
Поддержка сессий. Сессия – это период времени, проведенный пользователем на сайте. Его можно отследить с помощью cookie или объекта сессии. Cookie – небольшой файл, он не может содержать объекты, в отличие от объекта сессии.
Фильтрация. Бывают ситуации, когда необходимо вызвать определенный код, перед тем как исполнять логику Контроллера или после него, например, аутентификация пользователей, логирование событий, предоставление персонального ответа. Помогают в таких случаях фильтры, предоставляемые Action Controller. Существуют три основных фильтра: before, after и around. О них – позже.
Кэширование. Кэширование – это процесс, при котором наиболее запрашиваемый контент сохраняется в кэше, чтобы не было необходимости запрашивать его вновь и вновь.
7. локига в контроллере, должна ли быть и почему
8. синхронные и асинхронные операции — предложить варианты решения
9. назначение миграций
Тесты
зачем нужны
что такое TDD
Web специфика
javascript, опыт работы с ним, используемые библиотеки
Настройка http-серверов
nginx, его отличие от apache
балансировка нагрузки на сервера приложений (haproxy)
Базы данных
Общие вопросы
транзакции
блокировочные и версионные СУБД
индексы (зачем нужны, плюсы и минусы)
репликация
шардинг (партиционирование)
типичные bottle necks
PostgreSql
pgBouncer — что это и зачем нужно
системы репликации
PgQ (другие очереди)
синхронные и асинхронные операции
Организация разработки
Система контроля версий
зачем нужна
какими пользовались
Git (если есть опыт)
как перенести изменени из одной ветку в другую (2 способа)
зачем нужна команда git rebase
разница между git и svn (если есть)
Система тикетов и организация задач
зачем нужна
какими пользовались
как была организована работа в команде
методы разрешения конфликтов
Повышение квалификации
какие ресурсы читаются и как часто
какие задачи интересуют
что интересно по жизни, какие хобби
есть свой блог
какие три последние книги прочитал
что сделал в своей жизни такого, чем можешь гордиться