MastersAcademy / ruby-rails-course

Репозиторій з курсу "Ruby&Rails" проекту Masters Academy
https://www.facebook.com/cherkasy.masters/
GNU General Public License v3.0
5 stars 42 forks source link

Hometasks #1

Open piskovoy-dmitrij opened 7 years ago

piskovoy-dmitrij commented 7 years ago

Hometask 0

piskovoy-dmitrij commented 7 years ago

Продублюю :) "Ім'я папки має бути створене за шаблоном типу name.surname_githubUsername" У кого ім'я папки чи файл не відповідають вимогам реквести відхиляються і треба переробити.

piskovoy-dmitrij commented 7 years ago

Напоминаю также для всех. Правильно оформленные пул реквесты с заданием домашней работы ждем до конца дня 06.11.16 К след занятию нужно просмотреть видео и почитать по теме №1 из папки "sessions". Ссылка на видео есть в ридми.

piskovoy-dmitrij commented 7 years ago

Hometask 1

Взять любую предметную область из реальной жизни и сделать ее описание (объекты, связи, т.д). Т.е расписать предметную область так, как вы видите ее при автоматизации и дальнейшего описание в коде программы. Для домашнего задания не нужно использовать какие-то компьютерные языки, хватит украинского, русского или английского :) Можно использовать маркдаун. Окончание приема работ 13.11.16 23:59 (но не забывайте подключать здравый смысл)

darkwoolf10 commented 7 years ago

в 'Hometask 1' в последних скобках написано не "подключать", а "подлючать".

piskovoy-dmitrij commented 7 years ago

Hometask 2

Взять предметную область (либо с предыдущей домашней работы либо новую) на ваше усмотрение. Расписать эту предметную область. Для одной или несколько частей работы указать какой паттерн соответсвует этой части описания. Окончание приема работ 20.11.16 22:59 :)

Mnilko commented 7 years ago

Hometask 3 Взять один из паттернов своей предметной области. Реализовать паттерн при помощи классов, можно использовать наследование, миксины или динамическое расширение классов/инстансов. Попробуйте использовать инициалайзеры, акссесоры, методы класса. Как минимум 3 класса с 4-5 методами. После описания классов должен быть пример их использования, например инициализация объекта и вызов определенных функций. P.S. Не стесняемся пользоваться https://github.com/bbatsov/ruby-style-guide и здравым смыслом.

Mnilko commented 7 years ago

Hometask 4 Прочитать документацию для Hahs, Array и Set. http://ruby-doc.org/core-2.3.3/ Выбрать 5-6 методов, которые покажуться вам интересными и сделать с ними примеры.

Mnilko commented 7 years ago

Hometask 5 Взять 3-е домашнее задания и переделать наследования при помощи include и extend. Если нет наследования, то нужно придумать модули, которые могут быть полезны вашим текущим классам.

shcherb commented 7 years ago

Hometask 6

  1. В своей последней работе, добавить обработчик исключения NoMethodError. В обработчике создать метод для класса или для экземпляра класса в зависимости от того, применительно к чему вызовался несуществующий метод.
  2. Создать собственный подклас StandardError и обработчик для этого исключения.
shcherb commented 7 years ago

Ребята, я думал, что последняя домашка не сложная. Однако почему-то никто не посмотрел в сторону использования методов instance_eval, class_eval, define_method, define_singleton_method. Предлагаю ознакомиться с кодом ниже, сможете ли разобраться что для чего и как работает? Используйте irb, выполняйте пошагово, но должно быть понимание работы кода. ``

class MyClass
end

def handler_no_method(err)
  err.receiver.instance_eval do
    define_singleton_method(err.name) do
      puts("It's instance method #{err.name} for object #{err.receiver}")
    end
  end
end

# create two instance of MyClass
a = MyClass.new
b = MyClass.new

# example 1 - define method only instance a
begin
  a.method1
rescue NoMethodError => err
  handler_no_method(err)
  retry
end

begin
  b.method1
rescue NoMethodError => err
  puts("other instances of MyClass doesn't have the method #{err.spell_checker.method_name}")
end

# example2 - define class method for MyClass
begin
  MyClass.method2
rescue NoMethodError => err
  handler_no_method(err)
  retry
end

# example3 - define method for all instances of MyClass
begin
  a.method2
rescue NoMethodError => err
  # we should use "send" method because "define_method" is private method
  err.receiver.class.send(:define_method, err.name) do
      puts("New method")
  end
  retry
end

b.method2
shcherb commented 7 years ago

По поводу домашней работы. Разбираем пример #9 https://github.com/MastersAcademy/ruby-rails-course/blob/master/Sessions/6%20-%20Functional%20Ruby/examples/9.rb Берем json либо из примера, либо придумываем аналогичный. Парсим его, динамически создаем или структуры с набором переменных и методов доступа к ним, или классы с методами. В работе пробуем приминить proc или lambda.

Mnilko commented 7 years ago

С прошедшими праздниками!!! На завтра посмотрите лекции по темам Rack и REST. На занятии расскажем про следующую домашку и ответим на вопросы.

Mnilko commented 7 years ago

На завтра изучить темы ActiveRecord и Serialization. подготовить вопросы по теме и проектам, которые вы выбрали.

Mnilko commented 7 years ago

Hometask 8

  1. Create Sinatra app. https://github.com/sinatra/sinatra
  2. Add ActiveRecord ORM.
  3. Use raw json or Sinatra::JSON. (Use ActiveModelSerializer or Jbuilder.)
  4. Create User and Post models. Add migrations.
  5. User can create and edit posts. Select user and then create and edit posts.
  6. Get endpoints should respond to json and html.
  7. Run application on Heroku.

Good Luck. May the Force be with you.

Mnilko commented 7 years ago

Hometask 8.1

  1. Rename endpoint by Rails Convention. http://guides.rubyonrails.org/layouts_and_rendering.html
  2. Use RSpec for tests.

Performance and Tests.

skoddowl commented 7 years ago

Hometask 9.0

  1. Переписать 8ю домашку на Rails.
  2. Добавить авторизацию (без использования гемов, написать самому).