Git Product home page Git Product logo

bsuir-courses's Introduction

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 файлу

Проверка

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

bsuir-courses's People

Contributors

saicheg avatar yegorzdanovich avatar swarmer avatar gost402 avatar keritaf avatar katerinasav avatar maksimabramchuk avatar shimanskivlad avatar ilyadh avatar nikitabaz avatar kkan avatar rgbd avatar fut avatar sweider avatar nesterenkons avatar alexbelov avatar daryaandreevna avatar dmitrysenkovich avatar minchuksergei avatar sharrik111 avatar shem-sergey avatar paistitshare avatar varvara15 avatar apunko avatar ars18wrw avatar vladhilko avatar kravby avatar nastiasad avatar tsapa44 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.