- В папке с домашним заданием
hometask-1
создать файлhello_world.rb
с кодом, который выводит в консоль "Hello world!". - Файл должен быть исполняемым.
- Завести аккаунт с почтовым ящиком iTechArt на codewars.
- Решить онлайн задание.
- Код с решением поместить в файл
get_middle_charachter.rb
в папку с домашним заданиемhometask-2
. - В этот же файл добавить функцию
run_cli
, которая ожидает ввод пользователя. Пример работы с вводом и выводом был разобран на воркшопе. Если пользователь ввелexit!
, программа должна завершиться. Если пользователь ввел пустую строку, программа должна вывести сообщение об ошибке и ожидать следующий ввод пользователя. В остальных случаях в консоль выводится результат вызова функцииget_middle
c введенной строкой, после чего программа ожидает следующий ввод пользователя. Файл должен быть исполняемым. Пример работы программы:
$ ./get_middle_character.rb
Enter string:
String can not be blank!
Enter string:
test
Middle character: es
Enter string:
exit!
- Решить онлайн задание.
- Код с решением поместить в файл
rainfall.rb
в папку с домашним заданиемhometask-3
. - В этот же файл добавить функцию
run_cli
, которая ожидает ввод пользователя. Если пользователь ввелexit!
, программа должна завершиться. Если пользователь ввел пустую строку, программа должна вывести сообщение об ошибке и ожидать следующий ввод пользователя. В остальных случаях в консоль выводится результат вызова функцииmean
и функцииvariance
c введенной строкой, после чего программа ожидает следующий ввод пользователя. Файл должен быть исполняемым. Пример работы программы:
$ ./rainfall.rb
Enter city name:
City name can not be blank!
Enter city name:
London
Rainfall mean: 51.199999999999996
Rainfall variance: 57.42833333333374
Enter city name:
exit!
- Код с решением поместить в файл
my_array_rotate.rb
в папку с домашним заданиемhometask-4
. - Рacширить класс
Array
методaмиlab_rotate
иlab_rotate!
, которые реализуют циклический сдвиг.
Методlab_rotate
циклически сдвигает массив без изменения объекта.
Методlab_rotate!
циклически сдвигает массив c изменением объекта.
В качестве аргумента метод принимает число элементов, на которое нужно сдвинуть массив.
Если число положительное, то массив циклически сдвигается влево.
Если число отрицательное, то массив циклически сдвигается вправо.
По умолчанию массив циклически сдвигается на 1 элемент влево.
Задание подразумевает самостоятельную реализацию циклического сдвига, т.е. использовать Array#rotate или Array#rotate! нельзя.
C ростом размера сдвига скорость циклического сдвига, реализованного вArray#lab_rotate
иArray#lab_rotate!
, не должна значительно отличаться от скорости сдвига, реализованного вArray#rotate
илиArray#rotate!
соответственно.
С помощью модуля Benchmark произвести сравнение производительностиArray#lab_rotate
иArray#lab_rotate!
cArray#rotate
иArray#rotate!
соответственно.
Сравнение описать в файлеmy_array_rotate_benchmark.rb
.
Пример работы программы:
$ irb
irb(main):001:0> require './my_array_rotate.rb'
=> true
irb(main):002:0> arr = (1..7).to_a
=> [1, 2, 3, 4, 5, 6, 7]
irb(main):003:0> arr.lab_rotate
=> [2, 3, 4, 5, 6, 7, 1]
irb(main):004:0> arr
=> [1, 2, 3, 4, 5, 6, 7]
irb(main):005:0> arr.lab_rotate!(-3)
=> [5, 6, 7, 1, 2, 3, 4]
irb(main):006:0> arr
=> [5, 6, 7, 1, 2, 3, 4]
- Код с решением поместить в файл
my_hash.rb
в папку с домашним заданиемhometask-4
. - Реализовать класс
MyHash
подобно классу Hash.
Для классаMyHash
необходимо реализовать следующие операции:
- Запись по ключу
- Чтение по ключу
- Удаление пары ключ-значение
- Подсчет размера хэша
- Очищение всех пар ключ-значение без создание нового объекта.
Класс должен быть расширен модулем Enumerable.
Задание подразумевает самостоятельную реализацию хэша, т.е. использовать Hash нельзя.
C ростом числа пар ключ-значение скорост записи и чтения по ключу не должна значительно отличаться от стандартной имплементации Hash.
С помощью модуля Benchmark произвести сравнение производительности реализаванных операцийMyHash
с операциями вHash
.
Сравнение описать в файлеmy_hash_benchmark.rb
.
Пример работы программы:
$ irb
irb(main):001:0> require './my_hash.rb'
=> true
irb(main):002:0> my_hash = MyHash.new
=> #<MyHash:0x00007ff1d38a3d98 ... >
irb(main):003:0> my_hash['hello'] = 'world'
=> "world"
irb(main):004:0> my_hash['hello']
=> "world"
irb(main):005:0> my_hash['foo']
=> nil
irb(main):006:0> my_hash.each do |k, v|
irb(main):007:1* print "#{k} => "
irb(main):008:1> puts v
irb(main):009:1> end
hello => world
=> #<MyHash:0x00007ff1d38a3d98 ... >
- Установить Postgres последней версии
- Задача пройти курс по основам баз данных, используя свой email.
- Скачать дамп базы данных магазина проката DVD дисков по ссылке.
Применить дамп в базу данных на локали. - Выполнить следующие запросы, поместив каждый запрос в отдельный SQL-файл с именем “#{номер_задания}.sql”:
- Достать список всех актеров с фамилией Zellweger
- Получить список фильмов с английским, немецким и итальянским языком
- Получить список актеров у которых имя начинается на W или фамилия заканчивается на H. Для каждого актера вывести только полное имя, соединенное через дефис, начиная с фамилии.
- Например, для актера William Hoffman - результирующая колонка будет ‘Hoffman-William’
- Подсчитать кол-во фильмов с одинаковым rental_duration, подчитать кол-во фильмов в каждой группе. В результирующей выборке получить только rental_duration и кол-во фильмов в этой группе.
- Подсчитать общее кол-во фильмов с каждым из языков. В результирующей выборке получить название языка и связанное с ним количество фильмов
- Написать запрос на создание самого любимого фильма, который вам нравится
- Написать запрос на редактирование нескольких атрибутов любого фильма
- Написать запрос на удаление фильмов которые вам не нравятся(это может быть по имени, категории или же еще по какому-нибудь вашему признаку)
- Не забывайте о каскадных связях с другими таблицами
- Вывести список актеров которые снимались более чем в двух фильмах
- Добавьте новую колонку со значением по умолчанию в таблицу film
- Удалите колонку из п. 4.10
- Код с решением поместить в файл
scrapper.rb
в папку с домашним заданиемhometask-6
. - Написать скраппер onliner.by в CSV документ.
C помощью Capybara предлагается зайти на onliner.by.
Задача достать все новости из первых трех блоков(самый верхний блок - главные новости, “каталог”, “люди”) главной страницы, сохранив в CSV-документ следующие данные:
- название новости
- ссылку на картинку
- первые 200 символов текста)
- B папкe с домашним заданием 4
hometask-4
cоздать папкуspec
c файломmy_hash_spec.rb
. - В файле
my_hash_spec.rb
c помощью Rspec описать unit-тесты имплементации MyHash из задания 4.2.
Необходимо протестировать каждый публичный метод класса MyHash как позитивными, так и негативными сценариями.
Код каждого домашнего задания должен быть отправлены на проверку в качестве PR (Pull Request). Только после того, как PR был проверен и одобрен ментором, PR можно мержить. Задание считается выполненым только после того, как оно было замержено. Все домашние задания должны находиться в папке с вашим ником в GitHub.
- Сделать форк этого репозитория
- Сделать клон своего форка
- Создать ветку со своим ником и названием домашнего задания
- В корне репозитория создать папку с именем своего никнейма в GitHub
- В своей папке создать папку с названием домашнего задания
- В папке с домашним заданием создать все необходимые файлы с кодом
- По завершению задания добавить изменения, cоздать запушить коммит в свою ветку
- Создать PR с домашним заданием для ветки rubylab-2021-2022
- Скинуть ссылку на PR своему ментору и дождаться его ревью
- Замержить PR, если ментор одобрил PR