Skip to content

ro31337/rubyschool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rubyschool

Rubyschool.us list of contents (Russian)

полезные ссылки: -регулировка скорости видео на Vimeo (расширение для Chrome) https://goo.gl/C78s5P

Урок 1

  • что такое Ruby
  • что такое Ruby on Rails
  • настраиваем окружение
  • устанавливаем программы

Примечание: Установить файловый менеджер far: Windows Linux

Если планируете перейти на Linux, то необходимо выбрать Linux Mint Cinnamon (English)

RubyInstaller это ruby-окружение для Windows

Урок 2

  • puts, print, gets. #, \n
  • переменные
  • специальные символы
  • .chomp, .to_i, .to_s

Урок 3

  • irb
  • типы данных: string, fixnum, float, integer
  • class, array. Hash
  • задача про сопротивление (закон Ома)
  • преобразование типов данных (to_i переводим в to_s)

Урок 4

  • интерполяция строк - #{}
  • поддержка русского языка в Windows (#encoding: 866 + ANSI)
  • удаление символа (.chomp!)
  • методы
  • пайпы ||
  • задачи на преобразование типов и интерполяцию строк
  • дз: вывести числа 1..10, определить чётные и нечётные

Урок 5

  • методы (продолжение): upto, capitalize, strip, whitespace
  • \n \t \r
  • .times (считает от 0)
  • .upto (считает от 1)
  • задача: вывести на экран ряд цифр с помощью upto
  • задача: “Привет #{name}, в вашем имени #{name.length} букв”

Урок 6

  • блоки
  • sleep, .times, do...end, rand
  • задания про upto, times, sleep
  • задача: рассчитать накопления (сколько будем откладывать и сколько месяцев)
  • formating disk, Matrix
  • дз: доделать задачу про накопления

Урок 7

  • if...end, операторы сравнения, exit
  • задача: алгоритм "вы довольны зарплатой?" (Да/Нет)
  • задача: посчитать, сколько гостей придёт
  • задача: сделать игру "однорукий бандит"

Урок 8

  • 1_000_000
  • калькулятор
  • if/else
  • задача: игра - угадываем число
  • break, while true, ranges, each
  • разница между .. и ...
  • rand

Урок 9

  • функции и методы (def)
  • глобальные переменные (@)
  • символы (:)
  • массивы, добавление в массивы

Урок 10

  • инициализация массивов (продолжение)
  • задачи: двигаем робота, удаляем/добавляем учеников в список
  • loop do

Урок 11

  • разбор дз камень-ножницы-бумага
  • хэши (hash)

Урок 12

  • отличия хэшей от массивов
  • задача: создаем словарик
  • задача: переделываем “однорукого бандита” с использованием хэшей
  • функции (описание и их вызов)
  • дз: “Tic-Tac-Toe” (крестики-нолики)

Урок 13

  • повторяем хэши
  • использование if в одну строку
  • merge
  • сохранение в файл >, >>
  • немного об HTML

Урок 14

  • введение в ООП
  • классы
  • объекты
  • attr_reader, attr_accessor

Урок 15

  • задачи с классами: самолеты и аэропорты, альбомы и песни
  • наследование
  • дз: сделать программу с классами Artist - Album - Song

Урок 16

  • статические методы
  • lambda-функции
  • yield
  • наследование
  • типы переменных

Урок 17

  • мета-программирование (send)
  • чтение и запись в файлы
  • получение списка папок и файлов в каталогах

Урок 18

  • GET/POST запросы
  • задача: программа для подбора пароля

Примечание: Для 18 урока используйте докер-контейнер, который устанавливается командой: docker rm xxx; docker run -it --name xxx -p 4567:4567 ro31337/rubybook-save-the-world После этого у вас будет доступен локальный сервер по адресу http://localhost:4567

Если непонятно, что написано, то читаем ниже:

  • скачиваешь программу Docker, устанавливаешь
  • из консоли запускаешь команду - вот эту длинную, что на сайте rubyschool.us (см.сноску для 18 урока). Если ты на винде, то запускай по отдельности то, что разделено точкой с запятой (даже если дает ошибку): docker rm xxx, потом docker run -it --name xxx -p 4567:4567 ro31337/rubybook-save-the-world
  • что-то качается и у тебя будет доступен адрес из браузера http://localhost:4567

Урок 19

  • установка DevKit на Windows
  • установка Sinatra
  • Helloworld на Синатре

Урок 20

  • установка и работа с Git
  • установка Ungit на Windows
  • продолжение работы с Sinatra

Урок 21

  • ещё немного HTML-разметки
  • основы CSS
  • Bootstrap
  • установка готового небольшого приложения Sinatra с включенным Bootstrap'ом

Урок 22

  • Рома создает репозиторий. а все копируют себе
  • ещё немного теории по git
  • доделываем приложение BarberShop для записи к парикмахеру (теперь уже с использованием Bootstrap)

Урок 23

  • доработка приложения BarberShop
  • немножко JS, jQuery
  • делаем colorpicker при помощи jQuery плагина

Урок 24

  • немного подробнее о коде из предыдущего jQuery плагина и просто JS и jQuery
  • валидация
  • сохранение значений в полях формы

Урок 25

  • настройка git для пушей без запроса пароля (по ключу ssh)
  • установка SQLite3
  • немного про синтаксис SQL
  • создание БД и таблиц

Урок 26

  • связываем приложение BarberShop с SQLite
  • устанавливаем datetimepicker
  • выборка из БД, вывод информации

Примечание: Для работы datetimepicker необходимо использовать файл builder\jquery.datetimepicker.full.js

Урок 27

  • разбираем домашнее задание
  • выводим из БД в веб (в таблицу)
  • создаем вторую таблицу, добавляем туда значения
  • делаем выборку из БД, заносим в выпадающее меню

Урок 28

  • повторение
  • новое приложение-блог (Leprosorium)
  • прием параметра из ссылки

Примечание: Если Win10x64 выдает: `require': cannot load such file -- sqlite3/sqlite3_native (LoadError) Нужно выполнить в консоли gem uninstall sqlite3 --all gem install sqlite3 --platform=ruby

Урок 29

  • введение в ActiveRecord
  • rake
  • tux
  • migrations

Урок 30

  • продолжение ActiveRecords
  • валидация при помощи ActiveRecord

Урок 31

  • общая инфа по HTTP и запросам
  • javascript

Урок 32

  • повторение материала про классы
  • работаем с localstorage
  • создаём магазин пиццы
  • разбираем вопросы, которые могут задавать на интервью при приёме на работу

Урок 33

  • продолжаем разбор вопросов, которые могут задавать на интервью при приёме на работу
  • немного про yield
  • пишем PizzaShop

Урок 34

  • небольшое объяснение про операторы для краткой записи операций x += 1; x ||= 1

  • продолжаем делать pizzashop (javascript)

  • устанавливаем Rails

  • объяснение структуры Rails

  • *Примечание: Если при запуске rails приложения выходит ошибка со следующим текстом

Puma caught this error: Error loading the 'sqlite3' Active Record adapter. Missing a gem it depends on? can't activate sqlite3 (~> 1.3.6), already activated sqlite3-1.4.0. Make sure all dependencies are added to Gemfile. (LoadError)

Необходимо в gemfile исправить следующeю строку: gem 'sqlite3' на gem 'sqlite3', '< 1.4'

Урок 35

  • ещё разбор вопросов, которые могут задавать на интервью при приёме на работу
  • разбираем тесты, представленные на Odesk
  • продолжаем писать PizzaShop

Урок 36

  • краткое объяснение REST
  • анализ написанного приложения

Урок 37

  • введение в pull-реквесты
  • разбираем задачи с собеседования
  • настройка отступов в Sublime text
  • запускаем Rails
  • режимы запуска Rails
  • генераторы Rails
  • создаем контроллер
  • создаем модель

Урок 38

  • разбираем задачи на интервью
  • повторение
  • разбираем REST маршруты
  • сравнениваем resource и resources

Урок 39

  • создаем основные контроллеры (по REST) для сущности articles
  • создаем статичные страницы в RoR

Урок 40

  • удаление статей
  • атрибуты тегов data- (turbolinks)
  • небольшой рассказ про render
  • отношения one-to-many
  • создаем форму для комментариев

Урок 41

  • про типы связей (many-to-many, one-to-many, one-to-one)
  • задача: доделать блог до минимального функционала (CRUD)
  • полезные сервисы для веб-разработки
  • rspec и тесты
  • пишем пару простых тестов

Урок 42

  • матчеры для тестов
  • пишем тест, закрывающий баги на github
  • devise: установка, минимальная настройка, создание ссылок для входа-выхода
  • Примечание: начиная с Rails 5 синтаксис before_filter устарел и заменён на before_action

Урок 43

  • делаем ссылки входа, выхода и т. п. с помощью devise

  • сессии и куки

  • чуть-чуть про json

  • добавляем поля username в devise

  • настраиваем блог для поля username

  • *Примечание: в devise начиная с версии 4 параметры Sanitizer Api изменились, используйте вместо этого:

  devise_parameter_sanitizer.for(:sign_up) << :username

это:

  devise_parameter_sanitizer.permit(:sign_up, keys: [:username])

Урок 44

  • “интервью” с другом Романа - Алексеем. Вопросы про Odesk (Upwork) и в целом про ruby и программирование
  • bootstrap
  • основы responsive-дизайна

Урок 45

  • принцип работы метода params в контроллерах (используется для приёма параметров через post)
  • разница между render и redirect_to
  • разница между before_filter и before_action
  • немного про хелперы
  • continuous integration и continuous delivery (CI и CD)
  • немного про vagrant

Урок 46

  • тестируем модели
  • устанавливаем rspec в приложение blog (и capybara)
  • устанавливаем shoulda-matchers
  • устанавливаем FactoryGirl: простейшая настройка, создание фабрики, тестирование
  • создаем фабрику с автоматическим назначением значений полей
    • Примечание: в gem Rake начиная с версии 11 отсутствует метод "last_comment", этот метод используется в rspec-rails поэтому если вы используете свежую версию Rake не используйте старую версию rspec-rails. Для этого впишите в Gemfile rspec-rails без версии, и тогда bundle install подтянет сразу новую версию.
group :development, :test do
  gem 'capybara'
  gem 'rspec-rails'
end
    • Примечание 2: когда вы будете использовать Shoulda Matchers его нужно будет настроить, для этого в сгенерированной rails_helper.rb при запуске rails g rspec:install (rspec-rails в версии от 3.0) добавьте
Shoulda::Matchers.configure do |config|
  config.integrate do |with|
    with.test_framework :rspec
    with.library :rails
  end
end

подробности http://matchers.shoulda.io/docs/v3.1.1/index.html в файл с тестом вместо

  require 'spec_helper'

добавьте

  require 'rails_helper'

require 'support/factory_girl'

    • Примечание 3: При настройке Factory_girl в rspec-rails старше 3.0 нужно добавить строчку в rails_helper
  require 'support/factory_girl'

Урок 47

  • понятие о приёмочном тестировании (acceptance testing)
  • пишем тест для capybara
  • понятие о i18n (internationalization)
  • применение i18n в capybara
  • before и after hooks
    • Примечание: ссылка на capybara изменилась теперь: https://github.com/teamcapybara/capybara#using-capybara-with-rspec , для её настройки согласно документации нужно добавить в ваш файл rails_helper строчку (в rspec_helper для старых версий), хотя работает и без этой строки.
  require 'capybara/rspec'

Урок 48

  • Scaffolding (генерация модели, вида и контроллера одной командой)
  • недостатки скаффолдинга
  • создание небольшого приложения при помощи скаффолдинга
  • кратко про отправку имейлов

Урок 49

  • полиморфные ассоциации (краткое объяснение что это такое и создание небольшого примера)
  • паттерны
  • Singleton. Разбор на примере.
  • типы переменных в классе, принадлежащие экземпляру класса и классу

Урок 50

  • регулярные выражения

About

Rubyschool.us list of contents (Russian)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published