Skip to content

This is common repository for all student to submit all their homeworks

Notifications You must be signed in to change notification settings

punkofnewsociety/bsuir-courses

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BSUIR Courses

Домашка 1

Необходимо написать некоторое подобие утилиты sl. Для того чтобы иметь представление что делает данная утилита, для ubuntu можно поставить ее через sudo apt-get install sl и после завершения установки написать в терминале sl. Если вы упали со стула потому что на вас поехал паровоз - вы на правильном пути.

В данном домашнем задании мы не ограничиваем вас только поездом, в общем случае это должна быть какая-то ASCII-картинка которая будет как-то дергаться.

Домашка 2-1

Необходимо написать утилиту gemfiler, которая будет показывать отфильтрованные версии гемов.

Входные параметры:

  • Имя gem'а
  • Указание версий в формате, совместимом с Gemfile

Вывод на консоль:

  • Все версии данной библиотеки, при этом красным цветом подсвечиваются отфильтрованные версии.

Требования:

  • Утилита должна парсить входные параметры с использованием существующих библиотек.
  • Все версии gem'ов должны браться путем парсинга страницы или через взаимодействите с rubygems API
  • Утилита должна быть поделена на независимые модули, каждый должен быть представлен отдельным классом.
  • Правильная обработка потока ошибок.

Примеры:

./gemfiler devise '~> 2.1.3'
./gemfiler rails '>= 3.1'
./gemfiler rails '>= 3.1' '< 4.0'

Домашка 2-2

Создаем убийцу grep. Для тех кто не знает что это такое - советую пойти поиграться в консоль с этой утилитой. Если кратко - то это утилита для поиска строк, содержащих текст в файлах. Атомарной единицей для этой утилиты является строка. То есть при поиске если вы находите в строке искомый текст - она выдает вам обратно в STDOUT строку.

Если вы зайдете в мануал то увидите что формат команды примерно такой:

	grep [options] PATTERN [FILE...]
	grep [options] [-e PATTERN | -f FILE] [FILE...]

Первый формат означает что в команду сперва передаются опции, затем какой-то текст для поиска в файле и затем 1 или несколько файлов. Второй формат примерное такой же, но использует регулярные выражения для поиска по файлам.

Требования

В результате домашнего задания вам нужно написать утилиту grep с несколько ограниченным функционалом. Необходимые опции которые вам надо реализовать:

  • -A - опция которая выводит количество строк до и после найденной строки
  • -e - опция которая позволяет вводить регулярные выражения вместо просто части строки
  • -R - опция которая говорит искать строку не в одном файле, а рекурсивно во всех файлах в папке
  • -z - опция указывающая что файлик является сжатым и сначала его надо разжать и только потом искать по нему.

Немного примеров

Для примера будем использовать файлик 1.txt со следующим содержанием:

aa
bb
cc
abc
bcd
cde
ggg

Результаты выполнения:

grep a 1.txt 
=> aa
=> abc
grep -A 1 ab 1.txt 
=> cc
=> abc
=> bcd
grep -A 1 b 1.txt 
=> aa
=> bb
=> cc
=> cc
=> abc
=> bcd
=> abc
=> bcd
=> cde
grep -e "a[^b]" 1.txt 
=> aa

Этапы

Для того чтобы вы сразу не писали огромную утилиту разобьем ее имплементацию на несколько этапов:

  • Сделайте утилиту которая просто без опций находит строки в файле.
  • Добавьте возможность искать по нескольким файлам, aka grep a 1.txt 2.txt
  • Добавьте опцию -A которая выводит соседние строки.
  • Добавьте опцию -e которая ищет по регуляркам
  • Добавьте опцию -R которая будет искать по всем файлам в папке
  • Добавьте опцию -z которая будет искать по сжатому через gzip файлу

Проверка

Задания принимаются только ввиде ссылки на гитхаб.

About

This is common repository for all student to submit all their homeworks

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Ruby 98.3%
  • HTML 1.7%