Тестовое задание МТГ. Бизнес-решения
Тестовое задание.
1. Создать БД PostgreSQL или Firebird, или MS SQL, не суть. В БД создать таблицу из 4-5 полей. Должны быть строковые и числовые поля. Заполнить таблицу произвольными данными, не менее 5000 строк.
2. Разработать клиент-серверное приложение (по факту 2 приложения клиент и север). На форме клиента должна быть кнопка при нажатии на которую клиент запрашивает данные. После получения запроса сервер обращается в БД и передаёт данные на клиент.
3. Клиент получает данные в одном потоке и передаёт для записи в файл в другой поток. Данные из потока в поток передаются построчно.
4. Все запросы пишутся в один и тот же файл.
5. Нажатие на кнопку не должно замораживать клиент. Должна быть возможность запустить еще один запрос при выполнении других запросов.
Необходимо создать приложение-клиент на сокетах, которая просто шлет бесконечно из разных потоков (число потоков указывается на форме) данные на сервер вида 1234567890 (блоками от 1000 до 10000 байт рандомного размера), но перед этим кодирует их в Base64.
Приложение сервер простое, оно принимает эти данные и пишет в базу. где Socket клиента - это ID. То есть в базе таблица из двух полей ID (Socket - handle сокета), и Data там данные которые приходят. Но перед тем как записать данные, оно декодирует их из Base64. Сервер консольный и выводит в консоль - клиент подключился, клиент отключился, пришли новые данные (тут посмотреть как будет работать между потоками и главным потоком). Клиентов может быть много.
Внешний вид на ваш вкус.
Для запуска тестовых заданий выполните следующие шаги:
Запустите контейнеры
docker-compose -f docker-compose.yml --env-file .env up -d
Откройте страницу http://localhost:8091 и нажмите кнопку старт
В результате будут записаны данные в файл client1.out
Откройте страницу http://localhost:8092, укажите число поток и нажмите кнопку старт
Ход выполнения можно увидеть в логах контейнера server и в таблице БД database.table2, строка подключения postgresql://user:password@postgres:15432/database