Skip to content

Latest commit

 

History

History
368 lines (315 loc) · 22.6 KB

HOMEWORK.md

File metadata and controls

368 lines (315 loc) · 22.6 KB

Урок 1

Нет ДЗ


Урок 2

Нет ДЗ


Урок 3

Нет ДЗ (на форуме было)


Урок 4

  1. Тем, у кого были сложности с выполнением урока: x, y, z - вывод (смотрите видео). Ссылка на видео будет. Вкратце: переменная х должна быть строкой, y - это число, z - дробное число (с точкой). Должны выводиться в одну строку: x = ..., y = ..., z = ... . Вывод в одну строку с помощью одной строки. Программа должна спрашивать по-русски:
Введите x
Введите y
Введите z
  1. То же самое, но с помощью интерполяции. Т. е. #{}.
  2. Пройти по ссылке http://www.ruby-doc.org/core-2.1.1/String.html - попробовать то, что понятно.
  3. Пройти по ссылке http://www.ruby-doc.org/core-2.1.1/Integer.html - попробовать то, что понятно (с числами).
  4. Написать программу, которая будет выводить числа от 0 до 50 следующим образом:
i = 0, четное: true
i = 1, четное: false
i = 2, четное: true
...
i = 50, четное: true

Программа должна занимать одну строку (потому что блоки проходили только в фигурных скобках). Это задание сделать обязательно.


Урок 5

Пересмотреть видео. Убедиться в том, что выполнены все примеры. Сделать анимированную штуку из урока (1:24:20)


Урок 6

  1. Посмотреть то, что Роман написал https://paste2.org/kev51Hab
  2. Посмотреть то, что написал Хан Соло 100000.times { print rand(30..120).chr }
  3. Программу, которая выводит сумму, которую хотите откладывать в месяц, https://paste2.org/0OIteUx5, посмотреть и понять, как она работает.
  4. Изменить программу в пункте (3) следующим образом:
    • программа должна спрашивать:
    "Сколько лет будем копить: ",
    "Какую сумму будем откладывать в месяц: "
    
    • вывод должен быть следующий:
     - Год 1 месяц 1, отложено: ...
     - Год 1 месяц 2, отложено: ...
     - Год 1 месяц 3, отложено: ...
     ...
    
     - Год 1 месяц 12, отложено: ...
     ...
    
     - Год 2 месяц 1, отложено: ...
     ... и т. д.
    

Урок 7

  1. Изменить программу, чтобы она писала комбинацию, которая выпала (см. выше ответ Кое-Кто).
  2. Доработать программу до комбинаций:
    666 - чтобы уменьшалось наполовину
    777 - на 70 долларов
    888 - на 80 долларов
    999 - на 90 долларов
    123 - на 123 доллара
  1. Попробовать поиграть.
  2. Придумать что-нибудь, чтобы программа не только выигрывала, но и проигрывала.

Урок 8

  1. Придумать, какую программу вы будете делать. Можно дорабатывать однорукого бандита. Если бандита, то сделать вывод в виде анимации. Для этого использовать команды print, \r, sleep.
  2. Если не успели сделать какие-то примеры из урока, пересмотрите видео, сделайте примеры.

Урок 9

  1. Ссылку www.ruby-doc.org/core-2.1.1/Array.html посмотреть повнимательней. Попробовать в irb сделать. Особенно такие вещи, как array.new. Обратить внимание на то, как он инициализируется, потому что бывают сложные случаи, например, с фигурными скобками.
  2. Если что-то было непонятно в видео, пересмотреть видео.
  3. Свой проект, который придумали себе после прошлого урока, делать.

Урок 10

  1. Доделать игру "Камень-ножницы-бумага" http://paste2.org/8KkN41O7
  2. Писать свою программу.

Урок 11

  1. Написать программу "Камень-ножницы-бумага" по памяти. Если не получится, смотрите видео 11 урока.
  2. Создать массив имен с помощью %w[...], вывести все имена с порядковым номером с помощью arr.each_with_index - для тех, кто не сделал.
  3. Англо-русский словарь - то, что на уроке делали. Простой вариант.
  4. Сложный англо-русский словарь - с несколькими вариантами перевода для каждого слова. Использовать хэши вида hh = {'cat' => ['кот', 'кошка'], ...}, где ключ - это строка, а значение - массив. Словарь будет выводить:
    • количество переводов слова;
    • сами переводы слова. Вывод:
    Количество переводов слова: 2
    Переводы:
    кот
    кошка
    

Урок 12

  1. Кто не сделал однорукого бандита - сделать.
  2. Кто не сделал ДЗ к уроку - сделать. В частности, "Камень-ножницы-бумагу".
  3. Программа Tic-Tac-Toe (крестики-нолики). Должна выводить на экран доску 3х3 в текстовом формате с номерами ячеек. И спрашивать:
    "Ваш ход по Х: "
    "Ваш ход по Y: "
    

Урок 13

  1. Тем, кто не успел сделать пример с хэшем в начале урока, разобрать, посмотреть видео. Кто примеры какие-то не успевал сделать - посмотреть и разобрать.
  2. Делать свой проект.

Урок 14

  1. Делать все задания, которые не смогли сделать за предыдущие уроки (с хэшами, с классами и т. д.).
  2. Делать свою программу.

Урок 15

  1. Изучить информацию по ссылке http://phrogz.net/programmingruby/tut_classes.html
  2. Если не поняли, то смотрите видео, делайте примеры.
  3. Добавить в приложение из урока класс Artist (Artist-Album-Song).

Урок 16

  1. Разбирать примеры из 15 урока.
  2. Разбирать примеры из 16 урока.
  3. http://phrogz.net/programmingruby/tut_classes.html (классы) читать и пробовать.
  4. http://tutorialspoint.com/ruby/ruby_modules.htm (модули) читать и пробовать.

Урок 17

  1. На основе кода, который был в уроке, доделать расширенное задание - рассчитать прибыль за 6 месяцев.
  2. Расширенное задание - написать программу, которая ищет нужный файл на диске C:\

Урок 18

  1. Сделать переборщик (самостоятельно), узнать пароль.
  2. Кто что-то не понял - см. видео.
  3. Попробуйте подобрать пароль к своему роутеру, если он ваш (ваш роутер находится по адресу http://192.168.1.1 или http://192.168.0.1).
  4. Поставьте Fiddler (google: fidler.proxy), введите запрос в http://ya.ru и посмотрите, как он работает.

Урок 19

Если не подходит логин и пароль, выводить сообщение access denied (как тут: http://rubyschool.us/router).


Урок 20

Добавить в то, что написали на уроке, зону /admin, где по паролю будет выдаваться список тех, кто записался (из users.txt). Чтобы вывести на экран users.txt, введите в гугле: sinatra text file site:stackoverflow.com


Урок 21

sinatra и twitter bootstrap - сделать так, чтобы можно было войти c помощью логина и пароля (чтобы логин был admin, пароль secret). https://github.com/bootstrap-ruby/sinatra-bootstrap.


Урок 22

  • Программа-минимум:

    • Добавить post-обработчик для /visit
    • Добавить все введенные данные в ./public/users.txt
    • Добавить страницу /contacts со следующими полями:
      • email
      • сообщение (посмотреть html-элемент textarea)

      все сохраненные контакты должны добавляться в ./public/contacts.txt.

  • Программа-максимум:

    • На странице /visit пользователь должен иметь возможность выбрать парикмахера из списка:
      • Walter White
      • Jessie Pinkman
      • Gus Fring

      Необходимо использовать html-контрол (тег), который называется select.

    • Программа должна сохранять введенные данные в тот же файл.
  • Домашнее задание супер-максимум: Сделать то, что было задано на 21 урок (вход по логину и по паролю с помощью sinatra-bootstrap) - для тех, кто не сделал.


Урок 23

Попробовать сделать то же, что на уроке, самостоятельно. Если что-то непонятно, подсматривать в репозиторий. Сохранить всё в файл.


Урок 24

  1. Cделать раздел /contacts с валидацией в BarberShop.
  2. Отправлять почту на ваш адрес электронной почты через gmail (или через mail.yandex.ru). http://stackoverflow.com/questions/2068148/contact-form-in-ruby-sinatra-and-haml

Урок 25

  1. Установить визуальную программу для работы с БД.
  2. Создать БД BarberShop
  3. Создать таблицы:
    Таблица 1. Users 
        Id - идентификатор, primary key, автоинкремент, тип Integer
        Name - varchar
        Phone - varchar
        DateStamp - varchar
        Barber - varchar
        Color - varchar
    
    Таблица 2. Contacts
        Id - идентификатор, primary key, автоинкремент, тип Integer
        Email - varchar
        Message - varchar
    
  4. Добавить несколько записей с помощью консоли sqlite3 в таблицы Users и Contacts. Если не получится, создать БД в блокноте и скопировать в sqlite3 вручную по аналогии с запросом CREATE TABLE "Cars" ("Id" INTEGER PRIMARY KEY AUTOINCREMENT, "Name" VARCHAR, "Price" INTEGER)

Урок 26

  1. Сделать страницу /showusers, которая выводит информацию из базы данных со списком пользователей. Использовать запрос: select*from Users order by id desc -- кто не знает, сделать и догадаться, что он делает.
  2. (на подумать) В методе configure сделать дополнительную таблицу Barbers для хранения списка парикмахеров. Загружать список парикмахеров в методе configure. Сделать так, чтобы парикмахеры вставлялись в таблицу, но 1 раз.
  3. (кто сделал 2). В представлении visit.erb изменить что-то в строках 38-45 и выводить список парикмахеров из БД.

Урок 27

  1. Если что-то не поняли, пересмотреть видео.
  2. Повторить то, что уже проходили, так как на следующем уроке будет новая тема.

Урок 28

  1. На странице /new спрашивать имя автора и сохранять в БД. Выводить на главной.
  2. Валидация комментария. Если введен пустой текст - выдавать ошибку.
  3. Посмотреть видео, попробовать все сделать самостоятельно.

Урок 29

  1. На странице /visit cделать сохранение данных в БД с помощью ActiveRecord.
  2. Программа-максимум. Сделать сущность Contact и на странице /contacts сохранять в БД данные с помощью ActiveRecord.

Урок 30

  1. Программа-минимум: добавить удалённый выпадающий список с парикмахерами в visit.erb, чтобы он нормально отображался и сохранялся.
  2. Программа-максимум: сделать блог, который мы делали ( https://github.com/ro31337/Leprosorium ) на ActiveRecord. Можно использовать тему, которую мы не проходили active record one-to-many.

Урок 31


Урок 32

  1. Попробовать разобраться с grid системой самостоятельно.
  2. Почитать справку, посмотреть примеры, ActiveRecord. Почитать книгу по ruby.

Урок 33

  1. Ввести в гугле запрос: enumerate localStorage site: stackoverflow.com
  2. Посмотреть как пройтись по каждому элементу хеша localStorage
  3. Написать javascript функцию (по аналогии), которая выводит количество item'ов в нашей корзине.

Урок 34

  1. Программа-минимум: на странице /cart вывести в виде таблицы список продуктов в корзине и их количество.
  2. Программа-максимум: на странице /cart сделать так, чтобы форма (которая будет на странице /cart) сабмитилась по адресу /order и чтобы в базу данных заносился заказ: с телефоном, именем, адресом доставки и списком купленных товаров (в виде текстового поля).

Урок 35

  1. Сделать модель Order с полями из формы в cart.erb (+timestamps). Не забыть про миграцию.
  2. Добавить post-обработчик /place_order, в котором получать данные из страницы и сохранять в БД.
  3. Программа-максимум: выводить на экран сообщение "Заказ принят".
  4. Выводить на экран страницу со всеми принятыми заказами.

Урок 36

  1. /admin - вывод всех заказов в обратном порядке (вверху самые свежие).
  2. Минорные изменения (title, изменить My Website на PizzaShop), удалить Cart (...))
  3. Программа-максимум: сделать pull-request в мой репозиторий с PizzaShop со всеми перечисленными выше изменениями (оформить в виде commit).
  4. Удалить лишние javascript функции.

Урок 37

  1. Сделать страницу /home/contacts с формой для контактов (обычная, как в синатре).
  2. Сделать так, чтобы на сервер передавались email, message из формы контактов (подсказка: rails generate controller...). Сделать простым способом без rest.

Урок 38

  1. FizzBuzz тест: Вывести список чисел от 1 до 100. Если число делится на 3, писать "Fizz", если число делится на 5, писать "Buzz", если число делится на 3 и на 5, то писать FizzBuzz, иначе выводить просто само число.
  2. Создать в нашем блоге страницы:
    • /terms - условия использования;
    • /about - о нашем блоге.
  3. Реализовать #articles#create.
  4. Программа-максимум: сделать редактирование статьи, сделать вывод списка всех статей.

Урок 39

  1. Переписать таблицу и маршруты (rake routes).
  2. Реализовать destroy.

Урок 40

  1. Сделать вывод комментариев на странице статьи (.each).
  2. Избавиться от ненужных маршрутов.
  3. Посмотреть старые версии Barbershop и сравнить с кодом на rails.

Урок 41

  1. Найти книгу "Rails 4 гибкая разработка веб-приложений".
  2. Читать со страницы 284 соглашение об именах.
  3. Прочитать про CRUD на стр. 298.

Урок 42

  1. Посмотреть как сделана авторизация в https://github.com/DefactoSoftware/Hours
  2. Посмотреть https://github.com/plataformatec/devise (или найти на русском языке на habrahabr.ru описание devise и почитать).
  3. Глянуть примеры https://github.com/plataformatec/devise/wiki/Example-Applications
  4. Программа-максимум: добавить в свой блог поддержку Bootstrap.

Урок 43

  1. Поискать в гугле и почитать на тему "что такое индексы в базе данных".
  2. Сделать так, чтобы комментарии оставлялись под именем залогиненного пользователя.

Урок 44

  1. Книга "Rails 4 гибкая разработка веб-приложений", стр. 367 - читать про хелперы.
  2. Причесать наш блог с помощью bootstrap.
  3. Сделать так чтобы комментарии оставлялись от имени текущего залогиненного пользователя (убрать поле author из представления) и выводить комментарии на странице.
  4. Залить его на github и прислать ссылку посмотреть.

Урок 45

  1. Поставить virtualbox https://www.virtualbox.org/ Поставить https://www.vagrantup.com/ Установить rails dev box согласно инструкциям https://github.com/rails/rails-dev-box
  2. Если не получилось - поставить linux Mint.
  3. Привязать сущность Article в блоге к пользователю. Сделать так, чтобы другие пользователи не могли редактировать статьи.

Урок 46

  1. Добавить в Article валидацию длины title в 140 символов и написать тесты.
  2. Добавить в Article валидацию длины text в 4000 символов и написать тесты.
  3. В Comment добавить валидацию длины body в 4000 символов и написать тесты.

Урок 47

  1. Посмотреть документацию/примеры по гему capybara.
  2. Все константы, которые не сделаны через I18n, сделать.
  3. Добавить второй тест в user_creates_article_spec.rb.
  4. Тестировать создание комментариев.
  5. Тестировать редактирование статей.

Урок 48

  1. http://rusrails.ru/action-mailer-basics - читать.
  2. (Если у вас есть свой домен) зарегистрироваться на postmarkapp, попробовать гем https://github.com/wildbit/postmark-gem и https://github.com/wildbit/postmark-rails

Урок 49

Сделать самостоятельно блог, в котором будет три сущности: post, link, image с комментариями, сделать на главной странице вывод всех этих сущностей.


Урок 50

  1. Попробовать то, что мы делали - сделать в ruby программе (погуглить ruby regex, regexp).
  2. Попробовать: а) тестировать строки на вхождения б) заменять
  3. Программа-максимум: посмотреть match groups - что это такое и как применять.