Практика по Java

202 (АУ, MIT-2015) группа

Тимофей Брыксин

Студент TODO №1 №2 №3 Тест 1 №4 №5 №6 Тест 2 Тест 3
25 VCS VCS++ Simple FTP GUI XUnit 1
Богомолов Егор 3
Гусев Андрей 1
Жидков Николай 1
Кайсин Илья 3
Лобанов Артём 3
Плющенко Даниил 3
Сазанович Никита 1
Софронова Анастасия 1
Федорова Анна 4
Шевченко Илья 5

Задачи

Тест 3. 25.05.17
  1. Разработать приложение, позволяющие пользователю играть с самим собой по сети в крестики-нолики.

Тест 2. 11.05.17
  1. Pair

    Реализовать игру "Найди пару". При запуске отображается поле с кнопками размера N x N, кнопки без надписей. Каждой кнопке ставится в соответствие случайное число от 0 до 1. Игрок нажимает на две произвольные (разные) кнопки, на них показывается соответствующие им числа. Если числа совпали, кнопки делаются неактивными. Если числа не совпали, кнопки возвращаются в изначальное положение. Игра заканчивается, когда игрок открыл все пары чисел (программа должна генерировать 0 и 1 таким образом, чтобы нулей и единиц было четное количество).

Домашняя работа 6. 04.05.17
Презентация
  1. XUnit

    Реализовать command-line приложение, принимающее на вход имя класса и выполняющее запуск тестов, находящихся в этом классе.

    • Тестом считается метод, помеченный аннотацией Test. У аннотации может быть два аргумента -- expected для исключения, ignore -- для отмены запуска и указанияпричины.
    • Перед и после запуска каждого теста в классе должны запускаться методы, помеченные аннотациями Before и After.
    • Перед и после запуска тестов в классе должны запускаться методы, помеченные аннотациями BeforeClass и AfterClass.

    Приложение должно выводить в стандартный поток вывода отчет:

    • о результате и времени выполнения прошедших и упавших тестов;
    • о причине отключенных тестов.

    Дедлайн: 17.05.2017, 23:59

Домашняя работа 5. 20.04.17
Презентация
  1. GUI

    Сделать GUI для FTP-клиента, позволяющий ходить по дереву файлов с сервера и скачивать файлы
    - Можно пользоваться JavaFX, Swing или чем угодно ещё
    Дедлайн: 03.05.2017 23:59

Домашняя работа 4. 06.04.17
Non-blocking server
Non-blocking client
  1. Simple FTP

    Требуется реализовать сервер, обрабатывающий два запроса:
    - list — листинг файлов в директории на сервере,
    - get — скачивание файла с сервера.
    И клиент, позволяющий исполнять указанные запросы.

    Команда list:
    Формат запроса:
    <1: Int> <path: String>,
    path — путь к директории.
    Формат ответа:
    <size: Int> (<name: String> <is_dir: Boolean>)*,
    size — количество файлов и папок в директории,
    name — название файла или папки,
    is_dir — флаг, принимающий значение True для директорий.
    Если директории не существует, сервер посылает ответ с size = 0

    Команда get:
    Формат запроса:
    <2: Int> <path: String>,
    path — путь к файлу.
    Формат ответа:
    <size: Long> <content: Bytes>,
    size — размер файла,
    content — его содержимое.
    Если файла не существует, сервер посылает ответ с size = 0

    Примечания:
    - Разрешается использовать библиотеки для упрощения ввода-вывода
    - Рекомендуется взглянуть на DataInputStream и DataOutputStream
    - Должны быть реализованы тесты
    - Рекомендуется задуматься об интерфейсе сервера и клиента, возможно стоит сделать что-то подобное:
    * Server: start/stop
    * Client: connect/disconnect/executeList/executeGet

    Срок: 26.04.2017 23:59

    Полезные ссылки:
    * Google -> Java Sockets
    * https://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html

Тест 1. 30.03.17
  1. MD5

    Реализовать консольное приложение, вычисляющее check-сумму директории файловой системы по такому правилу:

    • f(file) = MD5(<содержимое>)
    • f(dir) = MD5(<имя папки> + f(file1) + ...)

    Требуется:

    • Однопоточный вариант
    • Вариант с Fork-Join
    • Сравнить время их работы в main-е

    Файлы могут быть большими и не помещаться в память целиком.

    Классы MessageDigest и DigestInputStream могут быть полезны.

Домашняя работа 3. 18.03.17
Библиотеки логирования (презентация)
Mock-объекты (презентация)
Презентация про VCS и задача на пару
  1. VCS++

    К системе контроля версий добавляются следующие команды:
    - status: измененные/удаленные/недобавленные/staged файлы
    - reset [file]: данная команда сбрасывает состояние файла
    - rm [file]: файл перестаёт версионироваться и удаляется с диска физически
    - clean: из текущего каталога удаляются все файлы, которые не версионируются

    Теперь для каждой ревизии НЕ должна храниться полная копия репозитория
    Также надо добавить логирование и применить полученные знания по mock-объектам для написания тестов.
    Срок: 05.04.2017, 23:59

Домашняя работа 2. 04.03.17
Презентация про git
  1. VCS

    Сделать систему контроля версий, представляющую из себя консольное приложение и умеющую:
    - add: добавление файлов
    - commit с commit message (сообщение обязательно и принимается как параметр, система должна сама добавлять ещё дату коммита и автора)
    - работу с ветками: создание и удаление
    - checkout по имени ревизии или ветки
    - log: список ревизий вместе с commit message в текущей ветке
    - merge: сливает указанную ветку с текущей
    * конфликты разрешайте (или не разрешайте) любым разумным способом

    Нефункциональные требования:
    - Документация: комментарии, помощь для пользователя, краткое описание внутреннего устройства
    - Тесты
    - Исключения, обработка ошибок
    - Вывод в консоль --- только в клиентском коде типа main(), основной код должен позволять себя использовать как библиотеку
    - Развитый программный интерфейс, должно быть можно без проблем потом прикрутить GUI
    - Аннотации @NotNull, @Nullable/Optional
    - Continuous Integration

    Не накладывается никаких ограничений на хранимые на диске данные и их формат, дельта-компрессию делать не надо. Не требуется работа с удалёнными репозиториями. Дедлайн --- до 23:59 22.03.

Домашняя работа 1. 16.02.17
Введение и задача про Lazy (презентация)
  1. Lazy

© 2014-2018 HwProj