├── 2020
├── README.md
└── requirements
│ ├── back
│ ├── README.md
│ ├── img
│ │ └── Level3.png
│ └── src
│ │ └── Level3.drawio
│ ├── engine
│ └── README.md
│ └── front
│ └── README.md
├── 2021
├── README.md
└── requirements
│ ├── android
│ └── README.md
│ ├── babylonjs_aframe
│ └── README.md
│ ├── back
│ └── README.md
│ ├── design
│ └── README.md
│ ├── front
│ ├── README.md
│ └── json-server
│ │ ├── README.md
│ │ ├── db.json
│ │ ├── public
│ │ └── images
│ │ │ └── logo.jpg
│ │ └── server.js
│ ├── ios
│ └── README.md
│ ├── ue4
│ └── README.md
│ └── unity
│ └── README.md
├── 2022
├── README.md
└── requirements
│ ├── back
│ └── README.md
│ ├── design
│ └── README.md
│ ├── engine
│ └── README.md
│ ├── front
│ └── README.md
│ ├── iot
│ └── README.md
│ ├── mocap
│ └── README.md
│ └── robot-control
│ └── README.md
├── 2023
├── README.md
└── requirements
│ ├── 3d
│ └── README.md
│ ├── backend
│ └── README.md
│ ├── engine
│ └── README.md
│ ├── frontend
│ └── README.md
│ ├── gamedesign
│ ├── A-423.mp4
│ └── README.md
│ └── mobile
│ ├── README.md
│ └── qr
│ ├── README.md
│ ├── btc-400.svg
│ ├── doge-400.svg
│ └── matic-400.svg
├── 2024
├── README.md
└── requirements
│ ├── 3d
│ └── README.md
│ ├── ai
│ ├── README.md
│ ├── datasets
│ │ ├── .gitkeep
│ │ ├── primery_rezyume.txt
│ │ ├── test.csv
│ │ ├── train.csv
│ │ └── vakansii.txt
│ └── img
│ │ ├── .gitkeep
│ │ ├── 1350.jpg
│ │ ├── 200.png
│ │ ├── 8888.jpg
│ │ ├── camerus1.png
│ │ ├── camerus2.png
│ │ ├── camerus3.png
│ │ ├── schema.png
│ │ └── standart.png
│ ├── back
│ ├── README.md
│ └── img
│ │ ├── .gitkeep
│ │ ├── 1350.jpg
│ │ ├── 200.png
│ │ ├── 8888.jpg
│ │ ├── camerus1.png
│ │ ├── camerus2.png
│ │ ├── camerus3.png
│ │ ├── schema.png
│ │ └── standart.png
│ ├── design
│ └── README.md
│ ├── front
│ └── README.md
│ ├── game-design
│ └── README.md
│ ├── iot
│ ├── README.md
│ └── img
│ │ └── IoT.png
│ ├── mobile
│ └── README.md
│ ├── robot
│ ├── README.md
│ └── img
│ │ ├── .gitkeep
│ │ ├── 1350.jpg
│ │ ├── 200.png
│ │ ├── 8888.jpg
│ │ ├── camerus1.png
│ │ ├── camerus2.png
│ │ ├── camerus3.png
│ │ ├── robotics
│ │ ├── 1.jpg
│ │ ├── 2.jpg
│ │ ├── 3.jpg
│ │ └── 4.jpg
│ │ ├── schema.png
│ │ └── standart.png
│ ├── unity
│ └── README.md
│ └── unreal-engine
│ └── README.md
├── .vscode
└── settings.json
├── README.md
└── requirements
├── 3d
└── README.md
├── ai
└── README.md
├── back
└── README.md
├── c++
└── README.md
├── design
└── README.md
├── front
└── README.md
├── iot
├── README.md
└── img
│ └── IoT.png
├── it-infrastructure
├── README.md
└── img
│ └── top.png
├── mobile
└── README.md
├── quantum
└── README.md
├── robot
├── README.md
└── img
│ ├── robotics_1.jpg
│ ├── robotics_2.jpg
│ ├── robotics_3.jpg
│ ├── robotics_4.jpg
│ ├── robotics_5.jpg
│ └── robotics_6.jpg
├── smm
└── README.md
├── unity
└── README.md
└── unreal-engine
└── README.md
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "cSpell.words": [
3 | "Babylon",
4 | "Bearer",
5 | "Blueprint",
6 | "Boot",
7 | "Controller",
8 | "Defense",
9 | "Docker",
10 | "Epic",
11 | "Figma",
12 | "Guidelines",
13 | "Human",
14 | "Illustrator",
15 | "Launcher",
16 | "Mock",
17 | "Pawn",
18 | "Photoshop",
19 | "Sketch",
20 | "Rabbit",
21 | "Sketchfab",
22 | "Spring",
23 | "Tube",
24 | "Unity",
25 | "Unreal",
26 | "Vehicle",
27 | "WASM",
28 | "logic",
29 | "moodboard",
30 | "save",
31 | "wireframe",
32 | "postgre",
33 | "reverse",
34 | "save",
35 | "sql",
36 | "Геймдизайн",
37 | "Коммиты",
38 | "МИРЭА",
39 | "ассетов",
40 | "ассеты",
41 | "билд",
42 | "бэкенд",
43 | "геймдизайнера",
44 | "геймпада",
45 | "кастомизацей",
46 | "категоризации",
47 | "кликером",
48 | "онбординг",
49 | "онбординга",
50 | "пайплайну",
51 | "коммитам",
52 | "коммитом",
53 | "копипаста",
54 | "принтов",
55 | "скилла",
56 | "тайминги",
57 | "тестировщика",
58 | "токеном",
59 | "токену",
60 | "юнитов",
61 | "юниты"
62 | ],
63 | "cSpell.ignorePaths": [
64 | ".vscode/settings.json",
65 | "requirements/front/json-server/db.json"
66 | ]
67 | }
--------------------------------------------------------------------------------
/2020/README.md:
--------------------------------------------------------------------------------
1 | # Набор в лабораторию 2020
2 |
3 | Перед тем, как попасть в лабораторию, необходимо выполнить определенные тестовые задания, для определения вашего скилла и желания работать.
4 |
5 | ## Набор ведется по следующим направлениям:
6 |
7 | * Frontend разработка ([подробно](requirements/front))
8 | * Backend разработка ([подробно](requirements/back))
9 | * Разработка игрового приложения ([подробно](requirements/engine))
10 |
11 | **Любые** вопросы вы можете задавать в [личные сообщения группы ВК](https://vk.com/rtuitlab).
12 |
13 | Если Вы не видите здесь направления, которое Вам интересно - не переживайте. Вы можете прислать нам в [личные сообщения группы ВК](https://vk.com/rtuitlab) свое портфолио и мы в индивидуальном порядке рассмотрим каждого человека.
14 |
15 | ## Форма отправки
16 | Все работы отправляйте [в личные сообщения группы ВК](https://vk.com/rtuitlab)
17 |
18 | Что должно быть в теле сообщения:
19 | - Выбранное направление
20 | - Состав команды
21 | - Краткое описание сделанной работы
22 | - Ссылка на Git-репозиторий
23 | - Архив или ссылка на облако, откуда можно скачать собранную версию вашего проекта
24 | - Несколько скриншотов или видео с Вашим проектом
25 |
--------------------------------------------------------------------------------
/2020/requirements/back/README.md:
--------------------------------------------------------------------------------
1 | # Требования для backend
2 |
3 | В качестве входного испытания ставится задача написать сервер, который будет отвечать на запросы по протоколу HTTP. Передача данных должна осуществляться при помощи протокола JSON.
4 |
5 | ## Общие критерии
6 |
7 | * Читаемость кода
8 |
9 | Ваш проект должен быть доступен для понимания другими людьми. К этому относится именование файлов, переменных, модулей, соответствие соглашениям языка и/или платформы, на которой вы разрабатываете.
10 |
11 | * Инструкция по запуску
12 |
13 | Вместе с вашим проектом необходима инструкция, которая позволит развернуть ваше решение на рабочем компьютере другого разработчика. Необходимо указать, какое ПО необходимо для работы с проектом, какие действия необходимо сделать для запуска/сборки проекта, будь то команды в консоли или иные настройки в интерфейсе сред разработки.
14 |
15 | * Git
16 |
17 | Система управления версиями GIT де-факто сегодня заняла лидирующие позиции, и если вы умеете с ней работать - это большой плюс. При работе в лаборатории все равно будет необходимо научиться с ней работать, но лучше уже иметь опыт работы.
18 |
19 | * Кроссплатформенность
20 |
21 | Крайне желательна возможность запускать ваше решение на разных операционных системах. Это не критично, но желательно.
22 |
23 |
24 | ## Требования для разрабатываемых сервисов
25 |
26 | Предполагается три разных уровня в зависимости от сложности реализуемого сервиса. Чем более сложную задачу вы решите - тем больше шансов на попадание в лабораторию.
27 |
28 | Все задания идет на примере сервиса To-Do. Идея максимально проста для понимания, но на самом деле качественный сервис сделать не так и просто.
29 |
30 | ### Первый уровень
31 |
32 |
33 | Необходим сервис, который будет обеспечивать несколько операций:
34 | * Создание элемента/задания в **своем** списке заданий
35 | * Пометка задания как выполненное/невыполненное
36 | * Архивирование заданий
37 | * Выборка списка заданий (все/за период/только выполненные/только не выполненные)
38 | * Получение информации о одном задании
39 |
40 | Сервис может как содержать систему аутентификации, так и работать без нее.
41 | Для упрощения модели можно передавать идентификатор пользователя как параметр ко всем запросам.
42 |
43 | В задании необходимо хранить:
44 | * Название задания, строка
45 | * Описание задания, строка
46 | * Дата создания задания, дата
47 | * Флаг выполненности задания, логический тип
48 |
49 | #### Критерии оценивания
50 |
51 | * **Грамотность составления путей к API**, именно самих URL. Как именно передаются различные параметры, насколько url согласованы между собой, удобно ли ими пользоваться при работе с API.
52 | * **Хранилище данных**, как именно хранятся данные в вашей системе, в оперативной памяти, файле, базе данных. Каждый из вариантов должен быть аргументирован. Что произойдет, если ваше приложение вдруг остановится?
53 | * **Устойчивость**, есть ли запросы, на которых ваше приложение вернет 500, или запросы после которых приложение выйдет из строя? Разумеется количество таких ситуаций должно стремиться к нулю.
54 | * **Скорость работы**, насколько долго отвечает ваш сервис на тот или иной запрос? Сколько запросов в секунду он может обработать? Чем быстрее он работает - тем лучше.
55 | * **Конфиденциальность**, как именно сервис узнает, какой именно пользователь выполняет запрос, и с чьими задачи необходимо работать?
56 |
57 | ### Второй уровень
58 |
59 | На втором уровне необходима полноценна база данных. Для SQL мира - как минимум SQLite, для NoSQL мира - любая.
60 |
61 | На втором уровне должна быть обеспечена возможность горизонтального масштабирования. А именно, должна быть возможность запустить одновременно сколь угодно много экземпляров сервера, и обращаться к любому из них, при этом получая одинаковый результат. Таким образом необходимо добиться взаимозаменяемости экземпляров сервиса.
62 |
63 | Имя задачи теперь обязано быть уникальным в рамках одного дня. То есть не должно быть возможности создать две задачи за одни сутки с одинаковым названием. При наличии нескольких пользователей это правило должно работать для каждого пользователя отдельно. Для тестирования можно сделать промежуток не сутки, а минута, например. Это не должно иметь большой разницы.
64 |
65 | Факт выполнения задания должен теперь сохраняться не как логическое значение. Необходимо хранить историю, когда пользователь перевел данное задание в положение "выполнено" или "невыполненное". Соответственно при формировании представления задания необходимо основываться на последнем изменении.
66 |
67 | ### Третий уровень
68 |
69 | Необходимо реализовать второй, вспомогательный сервис. В нем будет храниться информация о фактах перевода того или иного задания в положение "выполнено" и "не выполнено".
70 |
71 | Запросы на изменение состояния теперь должны отправляться только во второй сервис. Желательно, чтобы второй сервис имел свою базу данных.
72 |
73 | Первый же сервис теперь запрашивает информацию о текущем статусе задания у второго сервиса. Примерная модель взаимодействия представлена на рисунке ниже.
74 |
75 | 
76 |
77 | Желательно обеспечить работоспособность обоих сервисов, при выходе из строя любого из них. Так, необходимо предусмотреть ситуацию, в которой недоступен сервис 2, и выбрать оптимальное поведение для сервиса 1.
78 |
79 | Также желательна возможность горизонтального масштабирования каждого из сервисов, чтобы клиент мог обращаться к любому из сервисов и не бояться, что данные куда-то как-то пропадут.
80 |
81 |
82 | ## Полезные материалы
83 |
84 | ### Фреймворки/платформы/библиотеки, используемые для разработки в лаборатории
85 | * [ASP.NET Core](https://docs.microsoft.com/en-us/aspnet/core/getting-started/?view=aspnetcore-3.1&tabs=windows) (C#, F#)
86 | * [Ktor](https://ktor.io/quickstart/index.html) (Kotlin)
87 | * [Node.JS](https://nodejs.org/en/docs/guides/getting-started-guide/) (JS, TS)
88 | * [Gorilla (mux)](https://github.com/gorilla/mux) (Go)
89 |
--------------------------------------------------------------------------------
/2020/requirements/back/img/Level3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2020/requirements/back/img/Level3.png
--------------------------------------------------------------------------------
/2020/requirements/back/src/Level3.drawio:
--------------------------------------------------------------------------------
1 | 5Vldk9ogFP01PuoAiTF5XL+2nWln2vGh7SNrMEkXgyW46v76EgJJMMZ1x1V3Wx8YOLl8hHvuCRc7zmi5ved4FX9lIaEdBMJtxxl3EBq4gSxzYFcAQd8rgIgnYQHBCpglz0SDQKPrJCSZZSgYoyJZ2eCcpSmZCwvDnLONbbZg1J51hSM9I6iA2RxT0jD7kYQiLlC/X7P+RJIoNjNDoJ8ssTHWQBbjkG1qkDPpOCPOmChqy+2I0HzvzL4U/aYtT8uFcZKKUzp8D56nsy6f4Eny/Q/+7N1PgOjCvl6c2Jk3JqHcAN1kXMQsYimmkwodcrZOQ5IPC2SrsvnC2EqCUIK/iRA77U28FkxCsVhS/TQTmIu73DsSSFlKDDZNKNXDkjQ0FnOKsyyZF6A2gaol+O5naS8bv/JGr2+a42394XinW8Ur5+/ZupUaytiaz8mx/dOUxDwi4pidX3pcRgphSyIXJDtyQrFInuyFYM3ZqLQru35jiVwiAjq8XMM2HV3QAfYQxcJ0r4ocslJbRgUpyryGPjqYnzBd63foyC0Opnk5nKhy2JHO8h1VDhTSV+VYlb5GJHmr5lgZu2YQWS+ejlQJFOLV7OXmelRu//CBy1qU13RfVBhDVaJad1RbFTRr2IsEQbbCJi6mSZTmjJREIVwCT4SLRKrFnX6wTMKwiBGSJc/4QQ2Vc26Vu0A5pT/s9Mf5Cp0hxQ+EDvH8MVIhNWKUcTW1s1C/kqv5NGR7SPD0FHX9qlh8JOSbVNTDd0EP+kD79Ux6QtDzPYugXTcoITMOWywychl6BrdQt0qWeqhvKdMLumTJYiV6dWWEtjJq7axk8VbyNjhT3izPv9bNyP0AKiQrA9NRlm6tPrYH+T9UKDiqQqAHAPRt6YDobUQJHh72CnJ0kKZ35vNTMQwZQqiPEwKwQQpbpDZxIshshVUsb+Q53OZLq/caktDqD+jtHTTMwWNTHYqhcX5cOxB7oN0/ZwW9d/OD67tQaPdUhb6lQLfosyJ+4B4keCY4eyxTLrTnhhivcrvlNsqTzt6Css08lj7ohVhqEc5IS1C8RSQEdiR0UTMSvGsGQvOLcd0zzquOOC9FxokB9oYBNDg1gC6UwbUJ65UyuMFLoYk+Tmi6zjsLTdiyu3fmSFo7elYnzuaOX/1rv3etgNzmRrr+NXeyvES7lcoNPnom55+qc7dN5ZzDEVMkcbCWLk1qJ+Xh0YTuxPufJsP+zcyrdvl8cual78bOzbzQ3rCuPcIFMy//IK1OSL3QgaT+1vLcuPW9YDImm9VfFIU7qv95nMlf
--------------------------------------------------------------------------------
/2020/requirements/engine/README.md:
--------------------------------------------------------------------------------
1 | # 3D-Движки (Unity, Unreal Engine и другие)
2 |
3 | **Задача:** Написать игру с решением головоломок.
4 |
5 | Для выполнения задачи Вы можете использовать любой игровой движок (но с поддержкой 3D моделей).
6 |
7 | ## **Общие критерии**
8 |
9 | * Читаемость кода
10 |
11 | Ваш проект должен быть доступен для понимания другими людьми. К этому относятся именование файлов, переменных, модулей, соответствие соглашениям языка и/или платформы, на которой вы разрабатываете.
12 |
13 | * Инструкция по запуску
14 |
15 | Вместе с вашим проектом необходима инструкция, котора позволит развернуть ваше решение на рабочем компьютере другого разработчика. Необходимо указать, какое ПО необходимо для работы с проектом, какие действия необходимо сделать для запуска/сборки проекта, будь то команды в консоли или иные настройки в интерфейсе сред разработки.
16 |
17 | * Git
18 |
19 | Система управления версиями GIT де-факто сегодня заняла лидирующие позиции, и если вы умеете с ней работать - это большой плюс. При работе в лаборатории все равно будет необходимо научиться с ней работать, но лучше уже иметь опыт работы.
20 |
21 | ## **Сложность задачи**
22 | Задача делится на несколько уровней. Выбирайте в зависимости от Ваших знаний.
23 |
24 | Выполнять задачу можно как одному, так и с группой людей, **НО** чем больше людей в команде, тем сложнее уровень задачи Вам нужно выбрать.
25 |
26 | ### **Уровень 1** *(до 2 человек)*
27 | Создать уровень, в котором будет несколько головоломок (например: взаимодействие с различными предметами/найти нужный переключатель и т.д.). Конец игры: решить все головоломки на уровне. Механика на каждую задачу должна быть разной.
28 |
29 | ### **Уровень 2** *(до 4 человек)*
30 | Создать мультиплеерную игру с решением нескольких задач на подобие 1-го уровня сложности. Взаимодействие нескольких игроков на уровне, для того, чтобы решить головоломку и завершить игру.
31 |
32 | ### **Уровень 3**
33 | Создать *"полноценную игру"* с решением головоломок.
34 |
35 | Критерии, которые нужно соблюсти:
36 |
37 | - пользовательский интерфейс;
38 | - несколько игровых уровней;
39 | - инвентарь и статистика игрока;
40 | - cохранение прогресса (при перезаходе в игру, дать возможность загрузить сохранение);
41 | - возможность играть как и одному, так и с другими игроками
42 |
43 | ### **Примечание**
44 |
45 | - можно использовать Bluprint *(относиться к UE4 и CryEngine)*;
46 | - по желанию можно добавить свои элементы игровой механики;
47 | - можно использовать готовые модели из интернета, или сделать самому (это даже будет в +);
48 | - можно заимствовать элементы кода и механики из других проектов, но пометить комментарием, откуда Вы это взяли и не злоупотреблять!
49 |
50 | # Полезные материалы
51 |
52 | ## Движки
53 | - [Unity](https://unity.com/ru)
54 | - [Unreal Engine 4](https://www.unrealengine.com)
55 | - [CryEngine](https://www.cryengine.com/)
56 | - [Babylon.JS](https://www.babylonjs.com/)
57 | - [AFrame](https://aframe.io/)
58 |
59 | ## Youtube
60 | - [Уроки по UE4 на русском языке](https://www.youtube.com/channel/UCLbkGIcYJxxL0tciH9RVebg)
61 | - [Уроки по Unity на русском языке](https://www.youtube.com/watch?v=wiBYx7n6ey4&list=PL0lO_mIqDDFVNOKquWCHh4n-Ird5HRB_1)
62 |
63 | ## Игровые модели
64 | - [Free3D](https://free3d.com/ru/)
65 | - [Sketchfab](https://sketchfab.com/3d-models/popular)
66 |
--------------------------------------------------------------------------------
/2020/requirements/front/README.md:
--------------------------------------------------------------------------------
1 | # Требования для frontend
2 |
3 | Требуется написать сайт для вашей учебной группы. На сайте должна быть видна информация о студентах группы (можно выдумать), курс, направление, расписание (можно накидать наугад).
4 |
5 | ## Общие критерии
6 |
7 | * Читаемость кода
8 |
9 | Ваш проект должен быть доступен для понимания другими людьми. К этому относится именование файлов, переменных, модулей, соответствие соглашениям языка и/или платформы, на которой вы разрабатываете.
10 |
11 | * Инструкция по запуску
12 |
13 | Вместе с вашим проектом необходима инструкция, которая позволит развернуть ваше решение на рабочем компьютере другого разработчика. Необходимо указать, какое ПО необходимо для работы с проектом, какие действия необходимо сделать для запуска/сборки проекта, будь то команды в консоли или иные настройки в интерфейсе сред разработки.
14 |
15 | * Git
16 |
17 | Система управления версиями GIT де-факто сегодня заняла лидирующие позиции, и если вы умеете с ней работать - это большой плюс. При работе в лаборатории все равно будет необходимо научиться с ней работать, но лучше уже иметь опыт работы.
18 |
19 | * Внешний вид
20 |
21 | Необходимо продумать дизайн сайта, составить его так, чтобы контентом было удобно пользоваться. Желательно опираться на современные тренды веб дизайна.
22 |
23 | * Адаптивность
24 |
25 | Сегодня абсолютно большая часть трафика идет с мобильных устройств, из-за этого крайне важно делать ваш сайт адаптивным под разные форм факторы устройств отображения. Контент должен быть удобным для восприятия и на маленьком экране смартфона, и на широкоформатном мониторе.
26 |
27 |
28 | ## Требования для разрабатываемого сайта
29 |
30 | Предполагается три разных уровня в зависимости от сложности реализуемого сайта. Чем более сложную задачу вы решите - тем больше шансов на попадание в лабораторию.
31 |
32 | Все данные, непосредственно наполнение, можно выдумывать из головы. Нет необходимости искать достоверную информацию о каждом человеке и доставать "удачные" фотографии.
33 |
34 | ### Первый уровень
35 |
36 | Необходимо создать несколько страниц, на которых будет представлена различная информация
37 | 1. Информация о группе
38 |
39 | На данной странице необходимо рассказать пару параграфов, про то чем отличительна ваша группа от остальных. Представить всех людей в группе, с фотогалереей. То есть должна быть возможность посмотреть на каждого человека.
40 |
41 | 2. Расписание группы
42 |
43 | Необходимо отобразить расписание на текущий день, в какое время, где, фио преподавателя.
44 |
45 | 3. Новости группы
46 |
47 | Страница с новостями, которая будет отображать последние события, произошедшие в группе. Например - сходили на пару, или потанцевали в холле, или сдали зачет, и тд.
48 |
49 | Необходимо продумать, как и где будут располагаться те или иные элементы, как будет организована навигация по сайту, как это будет работать на разных устройствах.
50 |
51 | На первом уровне всю информацию можно жестко захардкодить.
52 |
53 | ### Второй уровень
54 |
55 | На втором уровне необходимо добавить возможность добавления контента. Должны быть реализованы дополнительные страницы менеджера, на которых можно будет добавлять контент, новости, добавлять данные в расписание.
56 |
57 | Необходимо, чтобы по разным путям открывались разные представления. Для /admin например, открывалась панель менеджера, с возможностью редактирования, и после редактирования эта информация должна отображаться на самом сайте, по обычным путям из прошлого уровня.
58 |
59 | ### Третий уровень
60 |
61 | Теперь необходимо обеспечить хранение всех данных на внешнем сервере. Тут должно получиться полноценное SPA, не обязательно реализованное на каком-то специальном фреймворке.
62 |
63 | Данные необходимо брать из стороннего сервиса, например из [MyJSON Server](https://my-json-server.typicode.com/). При помощи этого сервиса очень просто выложить свои данные и получать к ним удобный доступ.
64 |
65 | Но для редактирования данных из панели администратора(менеджера) необходимо и менять данные, для этого самым простом способом будет использовать [JSON Server](https://github.com/typicode/json-server). Это тот же самый сервис, только вы можете развернуть его локально.
66 |
67 | Теперь необходимо, чтобы ваш сайт работал, и брал данные из стороннего сервиса, адекватно реагировал на то, что сервиса с данными нет, то есть он недоступен, ну или просто нет соединения с интернетом. Пользовательский опыт в любой из ситуаций должен быть положительным.
68 |
69 |
70 | ## Полезные материалы
71 |
72 | ### Руководства по основам WEB
73 |
74 | * [Руководство по HTML5 и CSS3 Metanit](https://metanit.com/web/html5/)
75 | * [Курс по HTML от w3schools](https://www.w3schools.com/html/)
76 | * [Руководство по JavaScript Metanit](https://metanit.com/web/javascript/)
77 | * [The Modern JavaScript Tutorial](https://javascript.info/)
78 | * [Руководство по TypeScript Metanit](https://metanit.com/web/typescript/)
79 | * [TypeScript documentation](https://www.typescriptlang.org/docs/home.html)
80 |
81 | ### SPA фреймворки/библиотеки
82 |
83 | Их существует великое множество, приведены те, что используются в лаборатории на данный момент.
84 |
85 | * [VUE.JS](https://vuejs.org/v2/guide/)
86 | * [Angular 2+](https://angular.io/start)
87 | * [React](https://reactjs.org/docs/getting-started.html)
88 |
--------------------------------------------------------------------------------
/2021/README.md:
--------------------------------------------------------------------------------
1 |
2 | # Набор в лабораторию 2021
3 |
4 | Перед тем, как попасть в лабораторию, необходимо выполнить определенные тестовые задания, для определения вашего скилла и желания работать.
5 |
6 | ## Набор ведется по следующим направлениям:
7 |
8 | * `Backend` разработка ([подробно](requirements/back/README.md))
9 | * `Frontend` разработка ([подробно](requirements/front/README.md))
10 | * `Дизайн` ([подробно](requirements/design/README.md))
11 | * Разработка на движке `Unreal Engine 4` ([подробно](requirements/ue4/README.md))
12 | * Разработка на движке `Unity` ([подробно](requirements/unity/README.md))
13 | * Разработка на движках `Babylon.JS/AFrame` ([подробно](requirements/babylonjs_aframe/README.md))
14 | * Разработка под `Android` ([подробно](requirements/android/README.md))
15 | * Разработка под `IOS` ([подробно](requirements/ios/README.md))
16 |
17 | Вопросы по пониманию задач необходимо задавать в [Обсуждении в группе RTUITLab](https://vk.com/topic-171158291_47137948), для того чтобы остальные участники могли увидеть ответы на популярные вопросы.
18 |
19 | В течение набора допускаются корректировки, проясняющие задания, но не меняющие их суть. Чтобы быть в курсе событий, советуем вам нажать кнопку `Watch` и выбрать `All Activity` на странице репозитория.
20 |
21 | Если у вас появится вопрос, который не хочется афишировать - вы всегда можете обратиться в [личные сообщения группы ВК](https://vk.com/rtuitlab).
22 |
23 | Если Вы не видите здесь направления, которое Вам интересно - не переживайте. Вы можете прислать нам в [личные сообщения группы ВК](https://vk.com/rtuitlab) свое портфолио, и мы в индивидуальном порядке рассмотрим каждого человека.
24 |
25 | ## Форма отправки
26 |
27 | Для отправки решения необходимо подготовить следующее:
28 |
29 | * Список участников (на направлениях, где допустимо более одного участника)
30 | * Ваше направление
31 | * **Краткое** описание проделанной работы
32 | * Видео запись - демонстрация вашего проекта (5-15 минут)
33 |
34 | Данный пункт является обязательным для возможности оперативно ознакомиться с решением, которое вы создали. Формат записи видео не регламентируется. Для направления `Дизайн` это может быть объяснение UI и принятых решений по его проектированию, для `Backend` - демонстрация архитектуры, взаимодействия и результата, и так далее. [OBS](https://obsproject.com/) вам в помощь 😊.
35 |
36 | Для отправки решения необходимо заполнить следующую [Google форму](https://forms.gle/Qtd4Dqb4MgJZ8BjG7).
37 |
38 | ### Порядок сдачи работ по направлениям (кроме Дизайна)
39 |
40 | #### **GIT**
41 |
42 | Все проекты в **обязательном** порядке сдаются в виде git репозитория. Можете разместить его на любом удобном вам ресурсе: GitHub, GitLab, Bitbucket и так далее. Если вы решите сделать репозиторий приватным - от вас будет требоваться оперативное предоставление доступа на чтение сотрудникам из лаборатории для проверки решения.
43 |
44 | Важно:
45 | * README
46 |
47 | В корне репозитория **ОБЯЗАТЕЛЬНО** должен находиться файл `README.md`, в котором будут следующие пункты:
48 | * Название проекта
49 | * Описание - суть, идея, замысел
50 | * Скриншоты проекта (за исключением backend)
51 | * Подробная инструкция по запуску: какие SDK нужны, на какой ОС можно запустить и все необходимое для самостоятельного запуска вашего проекта из исходного кода
52 | * Коммиты
53 |
54 | Сообщения к коммитам должны быть читаемыми и понятными. Крайне *желательно* писать их на английском языке. Не стоит заливать весь проект единственным коммитом, лучше постепенно наращивать функционал. Это позволит и вам при необходимости откатиться к предыдущей версии, и сотрудникам лаборатории проследить ход ваших мыслей при проверке.
55 |
56 | #### **Качество кода**
57 |
58 | При проверке любого решения будет уделяться внимание качеству написанного кода. Старайтесь избегать устаревших практик, копипаста, забытых ненужных файлов. Оставляйте только то, что относится к проекту и необходимо для его работы(разработки). Пишите комментарии, если считаете необходимым.
59 | > [Набор 2020 года](2020)
60 |
--------------------------------------------------------------------------------
/2021/requirements/android/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Android разработка`
2 |
3 | Требуется написать мобильное приложение для демонстрации погодных условий конкретного города. Приложение обязательно должно запускаться на ОС Android, однако реализовано оно может быть на удобном языке программирования кандидату из предложенных: Kotlin или Java.
4 |
5 | **Общие критерии**
6 |
7 | * Архитектура мобильного приложения
8 |
9 | В связи с тем, что ваше приложение может в дальнейшем расширятся и иметь дополнительный функционал, оно должно быть написано с понятным устройством элементов мобильного приложения, позволяющим в дальнейшем масштабировать и оптимизировать приложение без лишней работы.
10 |
11 | * Внешний вид
12 |
13 | Необходимо продумать дизайн мобильного приложения, составить его так, чтобы контентом было удобно пользоваться. Желательно опираться на современные инструкции дизайнов мобильных приложений от компании Google.
14 |
15 | * Адаптивность
16 |
17 | Сегодня абсолютно большая часть трафика идет с мобильных устройств, однако ОС Android работает на множестве устройствах с разными размерами и форм факторами. В связи с этим ваше приложение должно корректно отображаться на максимальном количестве экранов.
18 |
19 | * Инструкции по запуску
20 |
21 | Вместе с вашим проектом необходима инструкция, которая позволит развернуть ваше решение на эмуляторе или реальном устройстве другого разработчика или тестировщика. Необходимо указать, какая версия ОС необходимо для работы с проектом, какие разрешения необходимо выдать для запуска проекта, если это нужно делать вручную, а также другую всевозможную информацию, которую необходимо знать для успешного запуска разработанного приложения.
22 |
23 | **Требования для разрабатываемого мобильного приложения**
24 |
25 | Все данные, непосредственно наполнение, необходимо брать с открытого API, расположенного на сайте [https://openweathermap.org/api](https://openweathermap.org/api).
26 |
27 | Приложение должно быть полностью русифицировано.
28 |
29 | **Первый уровень**
30 |
31 | Необходимо создать простое мобильное приложение, общающееся со сторонним открытым API и демонстрирующее погоду на ближайшие 7 дней для введенного в поля для ввода города. Если у мобильного приложения нет на момент ввода названия подключения к сети, то приложение должно предупредить пользователя о необходимости такого подключения.
32 |
33 | Города из поиска можно сохранять в приложении на экран со списком городов и короткой информацией о погоде в этом городе. Каждый город можно открыть как выпадающий список или expandable/colapsable view и посмотреть детальную информацию о метеоданных в этом городе.
34 |
35 | Элемент отдельного города должен давать возможность перейти на карты Яндекс/Google для отображения местонахождения города. Пользователь должен сам выбрать какой именно тип карт он хочет использовать.
36 |
37 | Все данные экранов должны кэшироваться внутри жизненного цикла приложения и при отсутствии доступа к сети интернет, при открытии приложения, экраны не должны быть пусты.
38 | *(предпочтителен LiveData и Room)*
39 |
40 | Используйте Material Design и его концепции при проектировании решения
41 |
42 | *Рекомендуется строить решение на архитектуре MVVM, следуя основным гайдам Google по Architecture Components.*
43 |
44 | *Используйте View/Data Bindings для работы с элементами экрана.*
45 |
46 | **Второй уровень**
47 |
48 | На втором уровне необходимо добавить возможность авто определения местоположения пользователя по GPS модулю, встроенному в устройство. Так же необходимо оставить получение погоды по интересующему городу, однако приложение должно помогать пользователю при вводе названия при помощи подсказок названий городов по введенному значению.
49 |
50 | По выбраному городу из списка с погодой отображайте [Weather Map](https://www.rainviewer.com/ru/api/weather-maps-api.html) карту, с детализацией погоды в виде карты осадков. Карта должна открываться в масштабе города. Размещение элемента и механизм отображения остается за вами.
51 |
52 | Приложение обязано строиться на последних принятых стандартах архитектуры мобильных приложений.
53 |
54 | Сделайте настраиваемый механизм оповещений, который позволяет пользователю выставить когда он хотел бы получать уведомления о состоянии погоды на выбранное время срабатывания. Оповещение обязано выводиться даже если приложение закрыто.
55 |
56 | Все переходы между экранами должны быть анимированны, хотя бы стандартными анимациями которые уже есть в material design.
57 |
58 | **Третий уровень**
59 |
60 | В связи с тем, что мобильное приложение редко разрабатывается без ошибок, то важным этапом разработки является тестирование. Для выполнения третьего уровня от кандидата требуется создание тестов мобильного приложения, а именно тестирование пользовательского интерфейса приложения и тестирование отдельного функционала приложения, в особенности общение со сторонним API. Для разработки тестов пользовательского интерфейса необходимо работать не с данными от стороннего сервиса, а с Mock данными, или данными «заглушками», в угоду скорости работы тестов.
61 |
62 | Так же ваше приложение должно использовать Dependency Injection.
--------------------------------------------------------------------------------
/2021/requirements/babylonjs_aframe/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Babylon.JS/AFrame разработка`
2 | ## Задание
3 |
4 | Необходимо создать трехмерную игру при помощи одного из инструментов - [Babylon.js](https://www.babylonjs.com/) или [A-Frame](https://aframe.io/).
5 |
6 | Жанр игры - Tower Defense.
7 |
8 | Игра должна запускаться в браузере, и выдавать приемлемый FPS для игрового процесса.
9 |
10 | ## A-Frame или Babylon.js?
11 | A-Frame позиционируется как решение для создания VR решений в браузере, и он правда в этом хорош, но кроме этого он позволяет создавать приложения без VR, выступая качественным игровым движком.
12 |
13 | Babylon.js выступает больше как разнопрофильный игровой движок, но в тоже время он предоставляет доступ к VR в браузере.
14 |
15 | Обе платформы позволят вам создать проект, описанный в задании, и только вы принимаете решение на какой конкретно платформе вы будете работать.
16 | ## Общие критерии
17 |
18 | ### TypeScript
19 |
20 | При написании _желательно_ использовать язык TypeScript, за счет того, что он в большей части представлен в лаборатории, нежели чистый JavaScript. Это не обязательное условие, и в целом можно использовать любой язык программирования, доступный для перечисленных библиотек, вплоть до использования WASM.
21 |
22 | ### Структура проекта
23 |
24 | _Желательно_ оформить проект как Package при помощи [npm](https://www.npmjs.com/) или [yarn](https://yarnpkg.com/), и использовать инструмент по типу [webpack](https://webpack.js.org/). Конечно же можно и составить исключительно из файлов по типу `index.html`, `logic.js` и подобных, используя различные CDN.
25 |
26 | ### Геймдизайн
27 |
28 | В первую очередь при проверке будет оцениваться качество игры с точки зрения игрока, а не техническая составляющая и непосредственно реализация проекта. Представляемая игра должна быть готова к тому, чтобы любой человек с клавиатурой и мышкой мог провести полноценную игровую сессию. При этом длительность сессии не так важна. Минутная сбалансированная игра будет оценена как лучшая при сравнению с часовым кликером по одной кнопке (если это не успешно внедренная механика).
29 |
30 | ### Модели
31 |
32 | В качестве 3D моделей для игры _желательно_ использовать полноценные модели, которые можно найти в открытом доступе, или создать самостоятельно. Если нет возможности применить готовые 3D модели по какой-то причине - допустимо создавать игру из графических примитивов, помня про пункт [геймдизайн](#геймдизайн).
33 |
34 | ### Уровень 1
35 |
36 | Требуется создать одну карту, по которой могут перемещаться вражеские юниты по предопределенному маршруту. У игрока должна быть возможность создавать оборонительные сооружения (башни, юнитов, что угодно) за определенную стоимость. Необходимо продумать источник ресурсов на постройку.
37 |
38 | В игре должен присутствовать интерфейс, позволяющий начать игру, и после завершения сессии начать заново.
39 |
40 | Кратко:
41 | * Одна карта
42 | * Жестко заданный маршрут вражеских юнитов
43 | * Интерфейс для запуска/перезапуска игры
44 | * Один тип оборонительных сооружений
45 | * Система стоимости обороны, источника ресурсов
46 |
47 | ### Уровень 2
48 |
49 | Как минимум три разного типа оборонительных сооружений, накладывающих разнообразные эффекты на вражеских юнитов (заморозка, горение...).
50 |
51 | Возможность прокачки обороны, как минимум 2 уровня прокачки у двух типов башен.
52 |
53 | Как минимум четыре типа различных вражеских юнитов. Необходимо обратить внимание на визуальное различие юнитов, обеспечить понимание со стороны игрока, какие юниты что из себя представляют.
54 |
55 | Понятие `волны`, постепенная выдача разных противников с нарастающей сложностью.
56 |
57 | Кратко:
58 | * Как минимум три типа оборонительных юнитов
59 | * Возможность прокачки оборонительных юнитов
60 | * Как минимум четыре типа вражеских юнитов
61 | * Понятие нарастающей сложности и волн
62 |
63 | ### Уровень 3
64 |
65 | Необходимо выйти за рамки одного боя и реализации механики `Tower Defense`, и создать полноценную игру с различными уровнями и картами. Так, например изначально у пользователя может быть доступен только один тип башен, и при прохождении уровней он будет получать новые башни в арсенал, открывая новые уровни/карты/врагов. Можно применять механику открытия по прохождению, можно ввести собственную валюту, на которую можно приобретать новые типы вооружения, **конкретных ограничений нет**.
66 |
67 | Состояние игрока должно сохраняться между игровыми сессиями/открытием браузера. Предлагается использовать для этого использовать [localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage).
68 |
69 | При разработке игр с множеством уровней, карт и разными наборами вражеских юнитов на каждом из них появляется необходимость оперативно менять конфигурации появления противников. Необходимо реализовать `инструмент геймдизайнера`, который позволит настраивать тайминги волн, типы/количество врагов, их параметры и прочее. Можно сделать его при помощи `JSON` файла определенного формата, либо составить полноценный редактор.
70 |
71 | В проекте должно быть доступное не программисту место для регулирования параметров оборонительных сооружений, для оперативной апробации и правки баланса.
72 |
73 | Кратко:
74 | * Система уровней, с различными картами/наборами врагов
75 | * Процесс получения доступа к новым оборонительным сооружениям
76 | * Хранение прогресса пользователя, как минимум на уровне браузера
77 | * Инструмент конфигурирования волн на уровне
78 | * Инструмент настройки параметров оборонительных сооружений
79 |
80 |
81 | ## Полезные материалы:
82 | ### Babylon.JS
83 | - [Основной сайт](https://www.babylonjs.com/)
84 | - [Редактор](http://editor.babylonjs.com/)
85 | - [Канал разработчиков](https://www.youtube.com/channel/UCyOemMa5EJkIgVavJjSCLKQ)
86 |
87 | ### A-Frame
88 | - [Основной сайт](https://aframe.io/)
89 | - Инспектор:
90 | - [Репозиторий](https://github.com/aframevr/aframe-inspector)
91 | - [Примеры](https://aframe.io/aframe-inspector/examples/)
92 |
93 | ### Игровые модели
94 | - [Free3D](https://free3d.com/ru/)
95 | - [Sketchfab](https://sketchfab.com/3d-models/popular)
96 |
97 |
98 |
--------------------------------------------------------------------------------
/2021/requirements/back/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Backend разработка`
2 |
3 | В качестве входного испытания ставится задача написать backend проект, который будет отвечать на запросы по протоколу HTTP. Передача данных должна осуществляться при помощи формата JSON.
4 |
5 | ## Задание
6 |
7 | Необходимо создать проект позволяющий контролировать покупки человека. В зависимости от уровня он будет содержать в себе различный функционал.
8 | ## Общие критерии
9 |
10 | ### Технологии
11 |
12 | Сегодня в лаборатории для написания Backend сервисов используются следующие технологии:
13 |
14 | Backend:
15 | - [ASP.NET Core](https://dotnet.microsoft.com/learn/aspnet/what-is-aspnet-core)
16 | - [Go (Gorilla, mux)](https://github.com/gorilla/mux)
17 | - [Spring Boot](https://spring.io/projects/spring-boot)
18 | - [Node.JS (Express)](https://nodejs.org/en/)
19 | - [Flask](https://flask.palletsprojects.com/)
20 |
21 | Database:
22 | - [PostgreSQL](https://www.postgresql.org/)
23 | - [MongoDB](https://www.mongodb.com/)
24 | - [SQLite](https://www.sqlite.org/index.html)
25 | - [MySQL](https://www.mysql.com/)
26 |
27 | Cache:
28 | - [Redis](https://redis.io/)
29 |
30 | Message broker:
31 | - [RabbitMQ](https://www.rabbitmq.com/)
32 |
33 | _Желательно_ реализовывать проект с использованием технологий, описанных выше, за счет простоты дальнейшего встраивания в рабочй процесс. Но в рамках тестового задания **жестких ограничений на используемый стек нет**.
34 |
35 | ## Окружение
36 |
37 | **Обязательной** является возможность запуска вашего проекта в [Docker](https://www.docker.com/) среде, ввиду того, что сегодня как в лаборатории так и мире эта технология крайне популярна.
38 |
39 | Образы приложений необходимо отправить в личный [docker hub](https://hub.docker.com/).
40 | Весь сервис(включая окружение в виде БД и прочего) должен быть работоспособен, и подниматься при помощи следующих команд:
41 | ```bash
42 | docker-compose pull
43 | docker-compose up -d
44 | ```
45 | ## Документация API
46 |
47 | То, какие маршруты у приложения существуют, какие параметры принимают, что возвращают, какие коды отдают - все это **необходимо** задокументировать.
48 |
49 | Можно создать в репозитории отдельный файл `API_DOC.md`, и в нем описать все возможные маршруты/форматы данных, или воспользоваться инструментом [Swagger](https://swagger.io/) и [OpenAPI](https://swagger.io/specification/). Второй вариант является приоритетным, он является де-факто стандартом описания HTTP API, и может быть сгенерирован автоматически на основе написанного кода.
50 |
51 | ## Тестирование
52 |
53 | _Желательным_ является наличие тестов для вашего сервиса. Речь идет как о Unit тестах, так и о E2E тестах. Для последних в лаборатории применяется инструмент [Karate](https://github.com/intuit/karate). При отсутствии опыта работы с этой технологией предлагается применять тестирование в [Postman](https://learning.postman.com/docs/writing-scripts/test-scripts/). Данные два примера даны для _ознакомления_, выбор технологии тестирования остается за автором решения.
54 |
55 | ## Хранение данных
56 | **Не приемлемо** хранение данных в памяти приложения. Необходима полноценная отдельная база данных, начиная с SQLite. In-memory хранилища(например Redis) относятся в данном контексте к _полноценным базам данных_.
57 |
58 | Как описано выше - необходимо настроить окружение так, чтобы все дополнительные сервисы запускались в docker-compose. Вам необходимо проработать механизм автоматического применения миграций при старте приложения. Разумеется, если таковые имеются в вашем проекте.
59 |
60 | ### Уровень 1
61 |
62 | Необходим сервис "Покупки", который может хранить данные о покупках разных людей. О покупке необходимо хранить следующую информацию:
63 |
64 | - Дата покупки
65 | - Название товара
66 | - Сумму, потраченную на товар
67 |
68 | Необходима базовая концепция аутентификации. Например, можно передавать ID человека, про которого запрашивается/отправляется информация через строку запроса, или заголовок.
69 |
70 | На данном уровне подразумевается, что сервис является "записной книжкой", в которую человек может поместить информацию о своих покупках.
71 |
72 | ### Уровень 2
73 |
74 | На втором уровне появляется как минимум второй сервис "Магазины", который должен быть отдельным приложением (процессом). Он должен управлять информацией о доступных магазинах, о товарах в них, стоимости количестве и тд.
75 |
76 | * **Покупки**
77 |
78 | * Необходимо добавить возможность категоризации покупок. Категории могут как подтягиваться из "Магазинов", так и устанавливаться пользователем вручную.
79 | * Пользователь должен иметь возможность указать, при помощи какого способа оплаты была совершена покупка.
80 | * **Понятие чека**
81 | * Теперь каждая отдельная покупка **должна** существовать в контексте **чека**, из конкретного магазина.
82 |
83 | * **Магазины**
84 |
85 | О магазинах необходимо хранить следующую информацию:
86 | * Название
87 | * Адрес
88 | * Телефон
89 | * Список доступных позиций (Название, описание, стоимость ...)
90 | * Количество единиц каждой позиции
91 |
92 | Магазин должен обеспечивать возможность что-то в нем купить, при этом важно обратить внимание на безопасность данных, и не дать возможность пользователю API купить больше товара, чем есть в магазине. О каждой покупке магазин должен знать, кто когда что в каком количестве и на какую сумму купил.
93 |
94 | Теперь все покупки, доступные пользователю, не задаются им в ручном режиме, а формируются из покупки в конкретном магазине. Необходимо продумать, как правильно построить маршруты, как поднять сервисы, как протестировать функционал, как защищены данные и тд.
95 |
96 | Сами сервисы могут быть запущены на разных портах, для удобного доступа к каждому из них.
97 |
98 | ### Уровень 3
99 |
100 | На финальном уровне добавляется еще один сервис "Заводы". Сущность "Завод" производит какую-либо продукцию в единицу времени, и поставляет её в магазин, без стоимости, пусть он обязан поставлять и точка.
101 |
102 | У каждого завода должен быть перечень товаров, которые он производит, и производительность, сколько единиц продуктов он производит за единицу времени. Эти параметры в рамках данного задания могут быть заданы на этапе конфигурации сервиса "Заводы".
103 |
104 | Таким образом, на данном уровне должна получиться следующая схема:
105 |
106 | 1. Магазины существуют, товаров в наличии у них нет
107 | 2. Никто ничего в этих магазинах купить не имеет возможности
108 | 3. Заводы, в соответствии со своей производительностью производят и поставляют товары в магазины
109 | 4. Теперь магазины могут продавать товары пользователям
110 |
111 | Данная система должна работать корректно в условиях недоступности какого-либо сервиса. Так, завод который не может получить доступ к магазину (упал сервер с сервисом "магазины") не прекращает свою работу, а нарабатывает единицы товара, и при появлении доступа к магазину - отправляет. Пользователь не может купить что-то, если нет доступа к сервису "Покупки", и так далее. Необходимо проработать максимальное количество сценариев.
112 |
113 | Сценарии отказа и поведение сервисов не регламентируется заданием, необходимо самостоятельно продумать возможные сценарии и сохранить максимальную работоспособность проекта в сложившемся окружении(неполадки с доступом и тд).
114 |
115 | Все сервисы должны быть доступны по одному порту (api gateway, reverse proxy, и тд).
116 |
--------------------------------------------------------------------------------
/2021/requirements/design/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Дизайн`
2 | Требуется создать дизайн мобильного приложения или сайта на тему "Дом креативных идей".
3 | Под домом можно подразумевать "музей", "магазин" или нечто иное.
4 |
5 | Под идеей также можно подразумевать "товар", "экспонат", "подарок" или нечто иное.
6 |
7 | Трактовка названия остается на Ваше усмотрение, однако итоговый цифровой продукт должен подходить под описание. Дизайн должен "говорить сам за себя", олицетворяя Ваше понимание тематики.
8 |
9 | # Общие критерии
10 |
11 | * **Внешняя привлекательность**
12 |
13 | Ваш проект должен быть не только функциональным, но и привлекательным внешне. Приветствуется следование трендам, однако внешняя эстетичность не должна мешать функциональности.
14 |
15 | * **Следование дизайн-системам**
16 |
17 | Если вы выбрали мобильное приложение, стоит продумать под какую ОС вы будете проектировать. Вам могут помочь [Material Design](https://material.io/) или [Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/). Если же вы делаете сайт, то, возможно, вы захотите следовать дизайн-системе [Ant](https://ant.design/), [Bootstrap](https://mdbootstrap.com/docs/standard/) или любой другой. В любом случае, навык следования дизайн-системам приветствуется.
18 |
19 | * **Проработка пользовательского опыта**
20 |
21 | Хорошо проработанный UX можно увидеть уже на моменте построения wireframe-ов. Постарайтесь не удалять их из своего проекта, чтобы было понятно по какому пайплайну вы работаете. Тем не менее, важно, чтобы пользователям было удобно пользоваться Вашим приложениям: нажимать на кнопки, не промахиваться мимо полей, точно знать, к чему относится та или иная информация.
22 |
23 | * **Проработка целевой аудитории**
24 |
25 | Грамотно составлен портрет пользователя, есть понимание на кого ориентирован интерфейс.
26 |
27 | * **Прочее**
28 |
29 | Дополнительным плюсом будет владение *Adobe Illustrator* и *Adobe Photoshop*. При наличии умения рисовать векторные иллюстрации, просьба его продемонстрировать. Также дополнительным плюсом будет, если вы продумали, как можно получить выгоду с помощью Вашего приложения/сайта, а также отразили некоторые элементы модели монетизации в дизайне.
30 |
31 | К дизайну можно приложить док-пояснение. Также необходимо будет записать видео - небольшой рассказ о том, кто вы, что вы сделали и как вы это сделали.
32 |
33 | Для сдачи дизайна в *Sketch* или *Adobe XD*, просьба выложить **файл** на облачное хранилище и отправить в форму сдачи заданий ссылку на него.
34 |
35 | При сдаче дизайна в *Figma* просьба отправить ссылку на конкретный проект. Убедитесь, что доступ на чтение по ссылке включен.
36 |
37 | # Первый уровень
38 | Необходимо создать несколько экранов, на которых будет представлена различная информация, которую вы отнесете к тематике.
39 |
40 | Для данного уровня достаточно наличие 5-6+ характерных экранов для мобильного приложения или 2-3+ экранов для сайта.
41 |
42 | # Второй уровень
43 | * Необходимо обосновать выбор цветовой палитры и создать moodboard.
44 | * При составлении дизайна требуется использовать символы _Sketch_/компоненты _Figma_ (или их аналоги в используемом вами ПО).
45 | * Требуется создать онбординг или как минимум нескольких характерных экранов из него.
46 | * В контенте экранов **нельзя** использовать "рыбы"/шаблоны по типу Lorem Ipsum.
47 | * Для данного уровня достаточно наличие 7-9+ характерных экранов для мобильного приложения и 4-5+ экранов для сайта.
48 |
49 | # Третий уровень
50 | Если на предыдущих этапах требовалось спроектировать интерфейс пользователя - на данном этапе необходимо разработать дизайн интерфейса администратора. Способ реализации административных возможностей остается на Ваше усмотрение (админ панель, расширение возможностей пользовательского интерфейса, и тд).
51 |
52 | * Все файлы, группы и экраны в иерархии организованы и систематизированы.
53 | * Для данного уровня необходимо наличие 8+ характерных экранов для мобильного приложения и 5+ экранов для сайта.
54 |
--------------------------------------------------------------------------------
/2021/requirements/front/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Frontend разработка`
2 |
3 | ## Цель
4 |
5 | Создать сайт новостного агентства.
6 |
7 | ## Общие требования
8 |
9 | ### Дизайн
10 |
11 | Залог успеха пользовательского приложения — хороший внешний вид. При выполнении данного задания Вам будет необходимо самостоятельно продумать дизайн сайта так, чтобы он не вызывал отторжения и был удобен в использовании.
12 |
13 | ### Адаптивность
14 |
15 | На мобильные устройства сейчас приходится более 50% интернет трафика, поэтому очень важно обеспечивать корректное отображение контента на всех устройствах, начиная с мобильных телефонов и заканчивая широкоформатными мониторами.
16 |
17 | ### Поддержка браузерами
18 |
19 | Веб разработка не стоит на месте и постоянно развивается. Ежегодно появляется всё больше возможностей для оформления сайтов, однако поддержка этих возможностей всеми браузерами появляется не сразу. При разработке приложения необходимо, чтобы оно отображалось корректно во всех современных браузерах (существование IE можно смело игнорировать).
20 |
21 | ## Первый уровень
22 |
23 | На первом уровне необходимо создать пользовательскую часть сайта новостного агентства.
24 |
25 | Вам необходимо создать страницы:
26 | ### Главная страница
27 | Данная страница должна отображать перечень новостей/статей, опубликованных на сайте. Каждая новость должна иметь иллюстрацию, вынесенную на главную страницу.
28 | ### Новость
29 | Необходимо отобразить определённую новость/статью.
30 |
31 | На данном этапе можно использовать статическую информацию, хранящуюся в памяти приложения.
32 |
33 | ## Второй уровень
34 |
35 | На данном уровне Вам предстоит добавить функционал администрирования контента.
36 |
37 | Для этого потребуются страницы:
38 | * Авторизация
39 |
40 | На данной странице сотрудник СМИ входит в систему управления контентом.
41 | * Создание записи
42 |
43 | Данная страница предназначена для внесения статей и новостей.
44 | * Изменение записи
45 |
46 | Данная страница предназначена для изменения статей и новостей.
47 | * Просмотр всех записей
48 |
49 | На данном этапе необходимо продемонстрировать навыки работы с REST API, поэтому весь контент должен загружаться с сервера (сервер и инструкция к нему приложены в папке [json-server](./json-server)).
50 |
51 | ## Третий уровень
52 |
53 | В рамках данного уровня от Вас требуется усовершенствование уже имеющегося функционала.
54 |
55 | _Динамическая загрузка_
56 |
57 | С каждым днём работы СМИ объём выпущенного контента неизменно растёт, поэтому загружать его целиком при открытии сайта не очень целесообразно. Вам необходимо ограничить количество отображаемой информации, но при этом сохранить для пользователя возможность увидеть более старые публикации.
58 |
59 | _Фильтрация и поиск_
60 |
61 | Весьма часто записи делятся на различные категории, потому что есть читатели, которым интересна или наоборот не интересна информация по определённой тематике. Именно по этому от Вас требуется реализовать возможность просмотра контента по категориям, а также поиск какой-то конкретной записи.
62 |
63 | _Форматирование текста_
64 |
65 | Сейчас мало кого можно удивить однообразным текстом с изображением в заголовке, поэтому необходимо сделать так, чтобы **администратор контента** имел возможность форматирования, размещаемого материала (например, добавить ссылки на источник или поместить несколько фотографий внутрь статьи).
66 |
67 | ## Полезные материалы
68 | * [Руководство по HTML5 и CSS3](https://metanit.com/web/html5/)
69 | * [Руководство по JavaScript](https://metanit.com/web/javascript/)
70 | * [Руководство по Vue](https://ru.vuejs.org/v2/guide/)
71 | * [Введение в React](https://reactjs.org/tutorial/tutorial.html)
72 | * [Руководство по Angular 11](https://metanit.com/web/angular2/)
73 |
--------------------------------------------------------------------------------
/2021/requirements/front/json-server/README.md:
--------------------------------------------------------------------------------
1 | # JSON Server
2 |
3 | ## Инструкция
4 |
5 | ### Запуск сервера
6 |
7 | * Установите **NodeJS** и **NPM**
8 | * Клонируйте данный репозиторий на своё устройство
9 | * В командной строке перейдите в папку `json-server` и запустите команду `npm install json-server --save-dev`
10 | * Запустите сервер командой `node server.js`
11 |
12 | ### Работа с сервером
13 |
14 | Данное приложение является продвинутой версией json-server. Для хранения данных он использует файл `db.json`, на основе которого и создаётся API этого сервера.
15 |
16 | Основы работы с сервером описаны в [документации](https://www.npmjs.com/package/json-server).
17 |
18 | В этот сервер добавлено несколько дополнительных возможностей:
19 | * Авторизация
20 |
21 | Доступ к изменению БД получают только авторизованные пользователи, обладающие токеном доступа к данным. Для авторизации необходимо отправить POST запрос на `/login` с телом:
22 | ```js
23 | {
24 | "login": "user_name",
25 | "password": "user_password"
26 | }
27 | ```
28 | В ответе придёт JSON с полем `accessToken`, который даёт право изменять контент.
29 |
30 | Список пользователей по умолчанию:
31 |
32 | | User | Password |
33 | | ------ | -------- |
34 | | admin | pa$$word |
35 | | parker | root666 |
36 |
37 | * Защита методов
38 |
39 | Неавторизованным пользователям недоступно изменение контента. Для того, чтобы выполнялись не GET запросы необходимо в заголовках запроса отправлять:
40 | ```http
41 | Authorization: Bearer
42 | ```
43 |
44 | * Хранение статических файлов
45 |
46 | Для хранения статических файлов можно воспользоваться папкой `public` в корне сервера.
47 |
48 | **В рамках данного задания допустимо загружать изображения руками в папку `public` вместо сохранения с помощью запросов.**
49 |
50 | ## Изменение сервера
51 |
52 | **Запрещено:**
53 | * менять формат обмена текстовыми данными. Только JSON.
54 |
55 | **Разрешено:**
56 | * менять структуру данных
57 | * менять код исходного сервера
58 | * менять метод входа в систему
59 | * использовать свой бэкенд
60 |
61 | **Если используется не исходный вариант сервера, то при сдаче работы необходимо описать свой вариант, а лучше приложить ссылку на него.**
62 |
--------------------------------------------------------------------------------
/2021/requirements/front/json-server/db.json:
--------------------------------------------------------------------------------
1 | {
2 | "articles": [
3 | {
4 | "id": 1,
5 | "source": "newsBTC",
6 | "tags": [
7 | "business",
8 | "bitcoin"
9 | ],
10 | "author": "Nick Chong",
11 | "title": "Bitcoin Sets New All-Time High at $49,400",
12 | "description": "Bitcoin just rocketed to a new all-time high at $49,400 despite consolidation in the price of Ethereum. The leading cryptocurrency set this new high after spending most of the past week in the $47,000 range. Bitcoin is moving higher on continued institutional…",
13 | "coverImage": "https://www.newsbtc.com/wp-content/uploads/2021/02/ken-cheung-10py7Mvmf1g-unsplash.jpg",
14 | "publishedAt": "2021-02-14T07:58:16Z",
15 | "content": "Bitcoin just rocketed to a new all-time high at $49,400 despite consolidation in the price of Ethereum. The leading cryptocurrency set this new high after spending most of the past week in the $47,00… [+2028 chars]"
16 | },
17 | {
18 | "id": 2,
19 | "source": "newsBTC",
20 | "tags": [
21 | "business",
22 | "bitcoin"
23 | ],
24 | "author": "Nick Chong",
25 | "title": "Bitcoin Sets New All-Time High at $49,400",
26 | "description": "Bitcoin just rocketed to a new all-time high at $49,400 despite consolidation in the price of Ethereum. The leading cryptocurrency set this new high after spending most of the past week in the $47,000 range. Bitcoin is moving higher on continued institutional…",
27 | "coverImage": "https://www.newsbtc.com/wp-content/uploads/2021/02/ken-cheung-10py7Mvmf1g-unsplash.jpg",
28 | "publishedAt": "2021-02-14T07:58:16Z",
29 | "content": "Bitcoin just rocketed to a new all-time high at $49,400 despite consolidation in the price of Ethereum. The leading cryptocurrency set this new high after spending most of the past week in the $47,00… [+2028 chars]"
30 | },
31 | {
32 | "id": 3,
33 | "source": "newsBTC",
34 | "tags": [
35 | "business",
36 | "bitcoin"
37 | ],
38 | "author": "Nick Chong",
39 | "title": "Bitcoin Sets New All-Time High at $49,400",
40 | "description": "Bitcoin just rocketed to a new all-time high at $49,400 despite consolidation in the price of Ethereum. The leading cryptocurrency set this new high after spending most of the past week in the $47,000 range. Bitcoin is moving higher on continued institutional…",
41 | "coverImage": "https://www.newsbtc.com/wp-content/uploads/2021/02/ken-cheung-10py7Mvmf1g-unsplash.jpg",
42 | "publishedAt": "2021-02-14T07:58:16Z",
43 | "content": "Bitcoin just rocketed to a new all-time high at $49,400 despite consolidation in the price of Ethereum. The leading cryptocurrency set this new high after spending most of the past week in the $47,00… [+2028 chars]"
44 | }
45 | ],
46 | "users": [
47 | {
48 | "id": 1,
49 | "login": "admin",
50 | "password": "pa$$word"
51 | },
52 | {
53 | "id": 2,
54 | "login": "parker",
55 | "password": "root666"
56 | }
57 | ],
58 | "tokens": []
59 | }
60 |
--------------------------------------------------------------------------------
/2021/requirements/front/json-server/public/images/logo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2021/requirements/front/json-server/public/images/logo.jpg
--------------------------------------------------------------------------------
/2021/requirements/front/json-server/server.js:
--------------------------------------------------------------------------------
1 | const jsonServer = require('json-server');
2 | const server = jsonServer.create();
3 | const router = jsonServer.router('db.json');
4 | const middlewares = jsonServer.defaults();
5 |
6 | // Generate access token
7 | function makeToken(length) {
8 | var result = '';
9 | var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
10 | var charactersLength = characters.length;
11 | for ( var i = 0; i < length; i++ ) {
12 | result += characters.charAt(Math.floor(Math.random() * charactersLength));
13 | }
14 | return result;
15 | }
16 |
17 | // Use default middlewares (e.g. cors, logger)
18 | server.use(middlewares);
19 |
20 | // Parse json from request body
21 | server.use(jsonServer.bodyParser);
22 |
23 | // Protect admin paths
24 | server.use((req, res, next) => {
25 | let authorized = false;
26 |
27 | if (req.method === 'GET' || req.path === '/login') {
28 | next();
29 | } else {
30 | const token = req.headers.authorization;
31 |
32 | router.db.get('tokens').value().forEach((_token) => {
33 | if (token === 'Bearer ' + _token) {
34 | authorized = true;
35 | next();
36 | }
37 | });
38 |
39 | if (!authorized) res.sendStatus(401);
40 | }
41 | });
42 |
43 | // Admin authorization
44 | server.post('/login', (req, res) => {
45 | const credentials = req.body;
46 |
47 | router.db.get('users').value().forEach((user) => {
48 | if (user.login === credentials.login && user.password === credentials.password) {
49 | // Generate token
50 | const token = makeToken(100);
51 |
52 | // Add token to DB
53 | router.db.get('tokens').push(token).write();
54 |
55 | res.json({
56 | accessToken: token
57 | });
58 | }
59 | });
60 | });
61 |
62 | // Default json-server behaviour
63 | server.use(router);
64 |
65 | // Launch server
66 | server.listen(5500, () => {
67 | console.log('JSON server is running');
68 | });
69 |
--------------------------------------------------------------------------------
/2021/requirements/ios/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `IOS разработка`
2 |
3 | Требуется написать мобильное приложение для мониторинга цен акций на бирже. Приложение обязательно должно запускаться на ОС IOS и быть реализовано на языке программирования Swift.
4 |
5 | ## Общие критерии
6 |
7 | * Архитектура мобильного приложения
8 |
9 | В связи с тем, что ваше приложение может в дальнейшем расширятся и иметь дополнительный функционал, оно должно быть написано с понятным устройством элементов мобильного приложения, позволяющим в дальнейшем масштабировать и оптимизировать приложение без лишней работы.
10 |
11 | * Внешний вид
12 |
13 | Необходимо продумать дизайн мобильного приложения, составить его так, чтобы контентом было удобно пользоваться. Желательно опираться на современные инструкции дизайнов мобильных приложений от компании Apple.
14 |
15 | * Адаптивность
16 |
17 | Сегодня абсолютно большая часть трафика идет с мобильных устройств, однако iOS работает на линейке устройствах с разными размерами и форм факторами. В связи с этим ваше приложение должно корректно отображаться на максимальном количестве устройств, начиная с IPhone 7 и новее.
18 |
19 | * Инструкции по запуску
20 |
21 | Вместе с вашим проектом необходима инструкция, которая позволит развернуть ваше решение на эмуляторе или реальном устройстве другого разработчика или тестировщика. Необходимо указать, какая версия ОС необходима для работы с проектом, какие разрешения необходимо выдать для запуска проекта, если это нужно делать вручную, а также другую всевозможную информацию, которую необходимо знать для успешного запуска разработанного приложения.
22 |
23 | ## Требования для разрабатываемого мобильного приложения
24 |
25 | Все данные, непосредственно наполнение, необходимо брать с открытого API, расположенного на сайте [https://finnhub.io/docs/api](https://finnhub.io/docs/api).
26 |
27 | Приложение должно быть полностью русифицировано.
28 |
29 | ### Первый уровень
30 |
31 | Необходимо создать простое мобильное приложение, общающееся со сторонним открытым API и демонстрирующее нынешнее состояние списка акций с возможностью подробнее изучить полную информацию о конкретной акции. Если у мобильного приложения на момент ввода нет названия подключения к сети, то приложение должно предупредить пользователя о необходимости такого подключения.
32 |
33 | ### Второй уровень
34 |
35 | На втором уровне необходимо добавить возможность поиска акции по ее названию или тикеру, с дальнейшим сохранением истории поиска пользователя для ускорения данного процесса. Так же необходимо реализовать возможность сохранения интересующих акций во вкладку «Избранное» для быстрого перехода к ним. Весь функционал полного перечня акций должен работать и в избранном перечне.
36 |
37 | Все элементы экранов должны быть анимированы. Например, при изменении графиков при их обновлении, они плавно перерисовываются. Решение по внешнему виду анимации остаются за вами, но анимации обязаны выглядеть эстетично и соответствовать гайдлайнам Apple.
38 |
39 | Приложение обязано строиться на последних принятых стандартах архитектуры мобильных приложений.
40 |
41 | Большим плюсом будет создание приложения сразу и под Apple Watch, где вы выводите список любимых бумаг пользователя. Приложение обязано быть построено как приложение компаньон и получать список выбранных любимых бумаг именно с телефона.
42 |
43 | Приложение должно быть адаптивно и поддерживать iPad и iPhone. При открытии вашего приложения на iPad разметка не должна съезжать или открываться в режиме отображения экрана размером с iPhone на экране iPad.
44 |
45 | ### Третий уровень
46 |
47 | В связи с тем, что мобильное приложение редко разрабатывается без ошибок, то важным этапом разработки является тестирование. Для выполнения третьего уровня от кандидата требуется создания тестов мобильного приложения, а именно тестирование пользовательского интерфейса приложения и тестирование отдельного функционала приложения, в особенности общения со сторонним API. Для разработки тестов пользовательского интерфейса необходимо работать не с данными от стороннего сервиса, а с Mock данными, или данными «заглушками», в угоду скорости работы тестов.
48 |
49 | Создайте экранные виджеты с акциями, которые пользователь отмечает в приложении. Виджет должен отображать графики выбранных бумаг. Если выбранных бумаг больше чем помещается в виджет, бумаги на виджете должны меняться с определенным промежутком времени на новые из выбранных, с анимацией данного процесса.
--------------------------------------------------------------------------------
/2021/requirements/ue4/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Unreal Engine 4 разработка`
2 |
3 | ## **Задача:** Написать игру "Гонки"
4 | От Вас требуется реализовать на игровом движке Unreal Engine игру, в которой пользователь должен управлять машиной и преодолевать различные препятствия и/или преодолевать трассу на время.
5 |
6 | ## Критерии
7 |
8 | * **Git LFS**
9 |
10 | Добавление и настройка файла LFS для репозитория. Для работы с LFS вам нужно структурировать папки в проекте, и добавить пути до папок в систему LFS, в которых лежат текстуры, медиа материалы.
11 |
12 | * **Полноценность**
13 |
14 | Проект необходимо реализовать до конца и сделать билд под целевую платформу. Пользователь должен иметь возможность протестировать приложение без Unreal Engine редактора. Проект должен иметь выраженное начало, конец, цель.
15 |
16 | * **Наполненность и стиль**
17 |
18 | Наполнение игрового пространства должно содержать достаточное количество объектов окружения и реалистичный ландшафт. Объекты должны сочетаться друг с другом. Например, густой лес, si-fi роботы и египетские пирамиды могут наполнить пространство, но возможно не будут сочетаться друг с другом на одной локации.
19 |
20 | ## **Сложность задачи**
21 |
22 | Выполнять задачу можно как одному, так и с группой людей, **НО** чем больше людей в команде, тем сложнее уровень задачи Вам нужно выбрать.
23 |
24 | ### **Уровень 1** *(1 человек)*
25 | - Создать 1-2 уровня, где будет небольшая трасса с препятствиями, которую игрок на машине должен преодолеть
26 | - Реализовать скрипты управления машинкой
27 | - Создать интерфейс игрока с выводом полезных данных (спидометр, время круга и т.д.)
28 | - Меню с возможностью запуска/перезапуска игры
29 | - Можно писать код как на Blueprint, так и на С++
30 |
31 | ### **Уровень 2** *(до 2 человек в команде)*
32 | - Усложнения **уровня 1**
33 | - Сделать level-дизайн, используя собственные модели, или из различных бесплатных ассетов, доступных в Unreal Engine Marketplace
34 | - Реализовать вид от первого и третьего лица. Возможность переключать вид во время заезда
35 | - Реализация мини-карты трассы
36 | - Добавить поддержку геймпада для управления игровым персонажем/машиной
37 |
38 | ### **Уровень 3** (до 4 человек в команде)
39 | - Усложнения **уровня 2**
40 | - Кастомизация авто (модель, цвет, характеристики)
41 | - Мультиплеер. Возможность играть с 2-3 игроками по локальной сети
42 | - В проекте должен присутствовать код на С++. Реализовать PlayerController и Character/Pawn классы на C++
43 |
44 | ### **Примечание**
45 | - За основу можно взять проект Vehicle. Данный проект можно найти в предлагаемых шаблонах при создании нового проекта в UE. Итоговый проект должен отличаться от шаблонного
46 | - Можно дополнять проект своими задачами, непротиворечащие задачам, описанные выше и не нарушающие устав ***Университета РТУ МИРЭА*** и закон ***Российской Федерации*** =)
47 |
48 |
49 | # Полезные материалы
50 |
51 | ## Ссылка на движок
52 | - [Unreal Engine 4](https://www.unrealengine.com)
53 |
54 | ## YouTube
55 | - [Уроки по UE4 на русском языке](https://www.youtube.com/channel/UCLbkGIcYJxxL0tciH9RVebg)
56 |
57 |
58 | ## Игровые модели
59 | - [Free3D](https://free3d.com/ru/)
60 | - [Sketchfab](https://sketchfab.com/3d-models/popular)
61 | - [Unreal Engine Marketplace](https://www.unrealengine.com/marketplace/en-US/store) - есть бесплатные и платные ассеты, которые можно использовать в своих проектах (плагины, модели, текстуры). Так же можно его найти в Epic Launcher в разделе Unreal Engine
62 |
--------------------------------------------------------------------------------
/2021/requirements/unity/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Unity разработка`
2 | ## Задача
3 | Реализовать аркадную игру, главной механикой которой будет управление самолетом.
4 |
5 | Для выполнения задачи Вы должны использовать игровой движок **Unity 3D 2020.2.4+**. Вам предстоит создать проект, в котором пользователь сможет взлетать на самолете и управлять им.
6 |
7 | ## Общие критерии
8 |
9 | ### **LFS**
10 | Добавление и настройка файла LFS для репозитория. *Желательно* отметить расширения файлов и папки, которые могут занимать большое пространство.
11 |
12 | ### **Полноценность**
13 |
14 | Проект необходимо реализовать до конца и сделать билд. Пользователь должен иметь возможность протестировать приложение без Unity 3D редактора. Игра должна иметь выраженное начало, конец и цель.
15 |
16 | ### **Наполненность и стиль**
17 |
18 | Наполнение игрового пространства должно содержать достаточное количество объектов окружения и реалистичный ландшафт. Объекты должны сочетаться друг с другом. Например, густой лес, si-fi роботы и египетские пирамиды могут наполнить пространство, но, скорее всего, не будут сочетаться друг с другом на одной локации.
19 |
20 | ### **Размер команды**
21 |
22 | Выполнять задачу можно как одному, так и в группе, **НО** чем больше людей в команде, тем сложнее уровень задачи Вам необходимо выбрать.
23 |
24 | ## **Уровень 1** (1 человек)
25 |
26 | * Создать взлетную полосу и окружение, которые пользователь сможет наблюдать во время полета
27 |
28 | * Создать скрипты для взлета и посадки самолета, а также управления им (крен, тангаж, рыскание)
29 |
30 | * Реализовать базовый UI для старта и завершения игры
31 |
32 | ## **Уровень 2** (до 2 человек)
33 |
34 | * Реализовать выдвижное шасси. Добавить возможность управлять самолетом на земле на колесах (как машиной, с учетом габаритов и массы летательного аппарата)
35 |
36 | * Локация должна быть насыщенной и обширной. Во время полета пользователь должен наблюдать красивый разнообразный пейзаж с выдержанным стилем (лес, горы, город, побережье и т.п.).
37 |
38 | * Свет **необходимо** запечь, реализовать правильные тени и источники света летательного аппарата
39 |
40 | ## **Уровень 3** (до 4 человек)
41 |
42 | * Добавить возможность кастомизировать или выбирать самолет. Под кастомизацей имеется в виду изменение текстуры, добавление принтов (названия авиалиний и т.п.), разный цвет освещения и т.д.
43 |
44 | * Добавить мини-игру, где пользователь должен максимально быстро пролететь через кольца. Реализовать отслеживание счета, сохранение счета за пользователем (логин указывается при запуске, одинаковые имена не допускаются).
45 |
46 | * Добавить несколько локаций, которые пользователь может выбрать в UI. Счет для каждой локации должен быть отдельным. Разные локации могут иметь различные уровни сложности.
47 |
48 | * UI должен должен обладать собственным стилем, выглядеть красиво и логично,
49 |
50 | * На данном этапе проект должен представлять из себя полноценную аркаду, в которой пользователь четко понимает, зачем он играет, сохраняет интерес к игровому процессу и может отслеживать свой прогресс.
51 |
52 | ## Полезные ссылки:
53 |
54 | * [Unity Manual](https://docs.unity3d.com/Manual/index.html)
55 | * [Unity Documentation](https://docs.unity3d.com/ru/530/ScriptReference/index.html)
56 | * [Unity Asset store](https://assetstore.unity.com)
57 | * [3D модели](https://www.cgtrader.com/free-3d-models)
58 |
59 |
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/2022/README.md:
--------------------------------------------------------------------------------
1 | # Набор в лабораторию 2022
2 |
3 | Чтобы стать сотрудником лаборатории, необходимо выполнить тестовое задание. На основании Вашего решения будет проведен отбор, по результатам которого лучшие из лучших получат оффер.
4 |
5 | ## Общая информация
6 | В 2022 году все задания составлены так, чтобы у Вас была возможность реализовать задание *по-своему*, проявив креативность и инициативу. Будет приниматься во внимание ваша осведомленность о способах решения задачи, ответственность в подходе к организации решения.
7 |
8 | ## Набор ведется по следующим направлениям:
9 |
10 | * Создание виртуальных приложений (Unity, UE, VR, AR…) ([подробно](requirements/engine/README.md))
11 | * Product-дизайн ([подробно](requirements/design/README.md))
12 | * Backend ([подробно](requirements/back/README.md))
13 | * Frontend ([подробно](requirements/front/README.md))
14 | * Motion Capture ([подробно](requirements/mocap/README.md))
15 | * IoT ([подробно](requirements/iot/README.md))
16 | * Управление роботом ([подробно](requirements/robot-control/README.md))
17 |
18 | Если у Вас возникнут вопросы относительно формулировок и понимания заданий, обратитесь в [обсуждение](https://vk.com/topic-171158291_48703042), чтобы остальные участники могли увидеть ответы на популярные вопросы.
19 |
20 | В течение времени набора допускаются корректировки, проясняющие задания, но не меняющие их суть. Чтобы быть в курсе событий, советуем Вам нажать кнопку `Watch` и выбрать `All Activity` на странице этого репозитория.
21 |
22 | Если у Вас появится вопрос, который не хочется афишировать, Вы всегда можете обратиться в [личные сообщения RTUITLab](https://vk.com/rtuitlab).
23 |
24 | Полезная информация по поводу набора и работы лаборатории доступна [в записи трансляции очного собрания](https://www.youtube.com/watch?v=XxNTDFZQnlw).
25 |
26 | ## Материально-техническая база для реализации тестового задания
27 | В этом году соискателям доступны мощности Техно-коворкинга РТУ МИРЭА. В нем можно собраться командой и/или применить интересные для Вас технологии в реализации вступительного испытания. Из доступного оборудования имеется:
28 | * VR-перчатки Perception Neuron Motoin Capture Glove
29 | * VR-перчатки Senso Glove DK3-L
30 | * VR-перчатки Manus Prime II Haptic Edition
31 | * VR-очки HTC Vive
32 | * VR-очки HTC Vive Pro
33 | * AR-очки Epson Moverio BT-330
34 | * AR-очки Epson Moverio BT-35E
35 | * Смарт-очки Vuzix Blade
36 | * MR-очки Microsoft HoloLens
37 | * Ноутбуки для работы и многое другое
38 |
39 | Полный список оборудования доступен во вкладке "Брони" в [личном кабинете студента](https://lk.mirea.ru/). Особое внимание к работе с оборудованием просим проявить кандидатов на направления "IoT-разработка" и "Создание виртуальных приложений".
40 |
41 | Информация о том, как воспользоваться оборудованием [доступна здесь](https://vk.com/rtuitlab?w=wall-171158291_453).
42 |
43 | ## Форма отправки
44 | Для сдачи решения необходимо заполнить следующую [форму](https://vk.cc/cboGdd).
45 |
46 | ## Порядок сдачи работ по направлениям
47 |
48 | ### Общее
49 | 1. По всем направлениям, кроме `Создание виртуальных приложений`, задание выполняется в индивиуальном порядке. Виртуальное приложение допускается создавать в команде до двух человек.
50 | 2. Демонстрация Вашего проекта
51 |
52 | Вместе с решением тестового задания необходимо приложить видео ролик длиной от 5 до 15 минут. Данный пункт является обязательным для возможности оперативного ознакомления с решением, которое Вы создали. Формат записи видео при необходимости конкретизируется в соответствующих разделах. Для направления `Дизайн` это может быть объяснение примененных UX/UI-паттернов и принятых решений по его проектированию, для `Backend` - демонстрация архитектуры, взаимодействия и результата, и так далее. [OBS](https://obsproject.com/) Вам в помощь 😊.
53 |
54 |
55 | ### `Backend`, `Frontend`, `Создание виртуальных приложений`
56 | #### **GIT**
57 |
58 | Все проекты в **обязательном** порядке сдаются в виде git-репозиториев. Можете разместить его на любом удобном Вам ресурсе: GitHub, GitLab, Bitbucket и так далее. Если Вы решите сделать репозиторий приватным - от Вас будет требоваться оперативное предоставление доступа на чтение сотрудникам из лаборатории для проверки решения.
59 |
60 | Важно:
61 | * README
62 |
63 | В корне репозитория **ОБЯЗАТЕЛЬНО** должен находиться файл `README.md`, в котором имеются следующие пункты:
64 | * Название проекта
65 | * Описание - суть, идея, замысел
66 | * Скриншоты проекта (за исключением backend)
67 | * Подробная инструкция по запуску: какие SDK нужны, на какой ОС можно запустить и все необходимое для самостоятельного запуска вашего проекта из исходного кода
68 | * Коммиты
69 |
70 | Сообщения к коммитам должны быть читаемыми и понятными. Крайне *желательно* писать их на английском языке. Не стоит заливать весь проект единственным коммитом, лучше постепенно наращивать функционал. Это позволит и Вам при необходимости откатиться к предыдущей версии, и сотрудникам лаборатории проследить ход Ваших мыслей при проверке.
71 |
72 | #### **Качество кода**
73 |
74 | При проверке любого решения будет уделяться внимание качеству написанного кода. Старайтесь избегать устаревших практик, копипаста, забытых ненужных файлов. Оставляйте только то, что относится к проекту и необходимо для его работы(разработки). Пишите комментарии, если считаете необходимым.
75 |
76 | Тестовые задания по направлению "Дизайн" сдаются согласно описанным в репозитории шагам.
77 |
78 | ### `Product-дизайн`, `Motion Capture`, `IoT`, `Управление роботом`
79 | Подробные критерии описаны в соответствующих разделах.
80 |
81 | ## **Материалы прошлых лет**
82 | * [Набор 2020 года](2020)
83 | * [Набор 2021 года](2021)
84 |
--------------------------------------------------------------------------------
/2022/requirements/back/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Backend`
2 |
3 | ## Цель
4 | Разработать Backend сервис, который позволит автоматизировать процесс работы небольшой пиццерии.
5 |
6 | ## Описание
7 | Представьте себе существующую, работающую исключительно в режиме ресторана пиццерию. Владелец, Ваш знакомый, хочет увеличить охват аудитории и обратился к Вам за помощью. Дальнейшие планы развития пиццерии и функционал системы Вы обсудили с ним, и знаете, что должен уметь сервис.
8 |
9 | ## Реализация
10 | Публичным интерфейсом для взаимодействия с системой **должен** выступать протокол HTTP и/или основанные на нём (WS, Server events, gRPC...). При записи видео ролика важно продемонстрировать работу сервиса при помощи каких либо инструментов по типу [Insomnia](https://insomnia.rest/), [Postman](https://www.postman.com/), [DataGrip](https://www.jetbrains.com/datagrip/) и прочих, способных наглядно показать, как работает Ваше приложение.
11 |
12 | При реализации Вы можете выбрать любой способ организации компонентов (монолит/сервисы/микросервисы/беcсерверная архитектура) и масштаб.
13 |
14 | ## Критерии
15 |
16 | * Целостность созданного сервиса
17 |
18 | Backend создается не просто так, им будут пользоваться конкретные клиенты, будь то сайты, мобильные приложения, кассовые автоматы или что угодно еще. При разработке и продумывании API важно обратить внимание на процессы, автоматизацию которых обеспечивает сервис.
19 | * Архитектурная составляющая
20 |
21 | В современных фреймворках приняты устоявшиеся подходы и практики, например использование MVC. Обоснование "сделано при помощи архитектуры N потому что я её знаю/захотелось попробовать" будет более чем достаточно, при этом если некоторая архитектура выбрана - важно её придерживаться.
22 | * Документация
23 |
24 | Описание того, как можно взаимодействовать с сервисом (Wiki, OpenAPI, Swagger...).
25 | * Грамотное использование ресурсов
26 |
27 | Стоит обратить внимание на то, как Вы используете вычислительные мощности. Например, отправлять 5 SQL запросов вместо одного сложного выгодно не всегда.
28 | Нет цели выдать 100500 запросов в наносекунду на Raspberry Pi. Помните, что "Преждевременная оптимизация – корень всех зол".
29 |
30 | ## Технологии
31 |
32 | Лимита на технологии **не предусмотрено**, при решении задания можно использовать любой стек.
33 |
34 | Сегодня в лаборатории для написания Backend сервисов используются следующие технологии:
35 |
36 | * Фреймворки
37 | * [ASP.NET Core](https://dotnet.microsoft.com/learn/aspnet/what-is-aspnet-core)
38 | * [Go (Gorilla, mux)](https://github.com/gorilla/mux)
39 | * [Node.JS (Express)](https://nodejs.org/en/)
40 | * [Spring Boot](https://spring.io/projects/spring-boot)
41 | * [Flask](https://flask.palletsprojects.com/)
42 | * [FastAPI](https://fastapi.tiangolo.com/)
43 | * [Django](https://www.djangoproject.com/)
44 |
45 | * Базы данных
46 | * [PostgreSQL](https://www.postgresql.org/)
47 | * [MongoDB](https://www.mongodb.com/)
48 | * [SQLite](https://www.sqlite.org/index.html)
49 | * [MySQL](https://www.mysql.com/)
50 |
51 | * Кеш
52 | * [Redis](https://redis.io/)
53 |
54 | * Очереди сообщений
55 | * [RabbitMQ](https://www.rabbitmq.com/)
56 | * [Redis](https://redis.io/)
57 |
58 | > _Желательно_ реализовывать проект с использованием технологий, описанных выше, для простоты дальнейшего встраивания в рабочий процесс. Но в рамках тестового задания **жестких ограничений на используемый стек нет**
59 |
60 | ## Окружение
61 |
62 | Будет полезно обратить внимание на следующее:
63 | * Тесты (Unit, e2e, integration...)
64 |
65 | Backend сервисы как правило используются перечнем клиентов, и тесты, подтверждающие функциональность системы, приносят пользу.
66 | * Docker
67 |
68 | Возможность запуска приложения в Docker позволяет оперативно встроить разработанное решение в существующие процессы.
69 | * База данных
70 |
71 | В рамках тестового задания нет необходимости использовать некую "боевую" базу данных, можно обойтись хранением данных в памяти, но по понятным причинам для "боевых" проектов такой подход практикуется не часто.
72 |
--------------------------------------------------------------------------------
/2022/requirements/design/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Product-дизайн`
2 |
3 | ## Цель
4 |
5 | Разработать дизайн-макеты цифрового продукта (мобильное приложение, веб-сайт), решающего проблему пользователя «*Интересно организовать досуг и посетить популярные/полезные мероприятия*».
6 |
7 | ## Описание
8 |
9 | Тематика продукта, его итоговое название и наполнение – это пространство для вашей креативности. Не бойтесь предлагать банальные или излишне оригинальные идеи.
10 |
11 | Дизайн-макеты должны отражать **минимум один** путь пользователя. Постарайтесь не забыть про онбординг (визуальную инструкцию по эксплуатации приложения). По возможности некоторые графические элементы (например, иконки, иллюстрации и/или логотип) нужно попробовать отрисовать самостоятельно.
12 |
13 | ## Критерии
14 | * Умение следовать дизайн-системам
15 | * Понимание потребностей пользователя и предполагаемой целевой аудитории
16 | * Насмотренность
17 | * Умение генерировать контент – наполнение приложения
18 | * Умение следовать порядку разработки дизайн-макетов (обязательно наличие wireframe и moodboard)
19 | * Навыки работы с специализированным прикладным ПО (Figma, Sketch, Adobe Illustrator, Adobe Photoshop...)
20 |
21 | Для сдачи дизайна в Sketch или Adobe XD, просьба выложить файл на облачное хранилище и отправить в форму сдачи заданий ссылку на него.
22 |
23 | При сдаче дизайна в Figma просьба отправить ссылку на конкретный проект. Убедитесь, что доступ на чтение по ссылке включен.
24 |
--------------------------------------------------------------------------------
/2022/requirements/engine/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Создание виртуальных приложений (Unity, UE, VR, AR…)`
2 |
3 | ## Цель
4 |
5 | Придумать и реализовать игру, в которой действия происходят как в 2D, так и в 3D измерениях.
6 |
7 | ## Описание
8 |
9 | Вашему начальнику очень понравилась игра [Super Mario Odyssey](https://youtu.be/_G7zimesCXM), особенно моменты, когда игра переходила из 3D в 2D. А недавно он предложил Вам новую должность. Поэтому Вам необходимо разработать игру со схожим замыслом перехода между измерениями (см. [референсы](#референсы)).
10 |
11 | При этом разрешается выбрать любой жанр/жанры и использовать любой игровой движок.
12 |
13 | ## Требования
14 |
15 | * 2D-зоны должны быть частью трехмерного окружения
16 | * Игры в обоих пространствах должны быть связаны по смыслу, при этом допустимо использование разных жанров
17 | * В команде разработчиков может быть до 2 участников
18 | * Полное копирование других игр не допускается, **необходимо** привнести зерно оригинальности
19 |
20 | ## Критерии
21 |
22 | * Геймплей 2D и 3D секций
23 |
24 | Насколько интересно и приятно играется, потенциал развития проекта.
25 |
26 | * Геймплейная реализация перехода между режимами и их связь
27 |
28 | Обоснованность смены измерений в игре, наличие достаточного числа общих и отличительных черт между пространствами.
29 |
30 | * Целостность проекта
31 |
32 | Насколько созданная игра готова к демонстрации неподготовленному игроку.
33 |
34 | ## Полезные материалы
35 |
36 | * Движки
37 | * [Unity](https://unity.com/ru)
38 | * [Unreal Engine 4](https://www.unrealengine.com)
39 | * [CryEngine](https://www.cryengine.com/)
40 | * [Babylon.JS](https://www.babylonjs.com/)
41 | * [AFrame](https://aframe.io/)
42 |
43 | * YouTube
44 | * [Уроки по UE4 на русском языке](https://www.youtube.com/channel/UCLbkGIcYJxxL0tciH9RVebg)
45 | * [Уроки по Unity на русском языке](https://www.youtube.com/watch?v=wiBYx7n6ey4&list=PL0lO_mIqDDFVNOKquWCHh4n-Ird5HRB_1)
46 |
47 | * 3D модели
48 | * [Free3D](https://free3d.com/ru/)
49 | * [Sketchfab](https://sketchfab.com/3d-models/popular)
50 |
51 | ## Референсы
52 | * [Super Mario Odyssey](https://youtu.be/_G7zimesCXM)
53 | * [Shadow Puppeteer: Release Announcement Trailer](https://www.youtube.com/watch?v=noR7MNATDOA)
54 | * [Пример подобной механики в учебном проекте](https://vk.com/video-169199183_456242302)
55 |
--------------------------------------------------------------------------------
/2022/requirements/front/README.md:
--------------------------------------------------------------------------------
1 | # Задание по направлению `Frontend`
2 |
3 | ## Цель
4 |
5 | Написать сайт для финансовой организации.
6 |
7 | ## Описание
8 |
9 | Представьте, что к Вам обратился знакомый, работающий в компании, где работа с капиталом является основным видом деятельности. Их организации срочно понадобился веб-сайт, а отдел веб разработки уже загружен до отказа. Из-за этого они просят сделать сайт именно Вас. Кроме того, знакомый сообщил, что в случае отличного результата его компания готова взять Вас на работу, поэтому стоит выложиться по полной.
10 |
11 | Так как это всё-таки Ваш знакомый, то и знаете Вы его лучше: как называется компания, чем она занимается, зачем ей нужен сайт и так далее.
12 |
13 | ## Допущения
14 |
15 | Для работы большинства сайтов требуется бэкенд, предоставляющий данные. В рамках выполнения данного задания нет необходимости создавать полноценный бэкенд. Можно, например, использовать [json-server](#json-server), [mockapi](https://mockapi.io/), попросить написать бэкенд знакомого, использовать статичные данные и так далее.
16 |
17 | В случае использования какого-либо бэкенда необходимо кроме ссылки на решение приложить ссылку на бэкенд и инструкцию, как им пользоваться.
18 |
19 | ## Критерии
20 |
21 | * Производительность
22 |
23 | К данному критерию относится cкорость работы сайта на устройствах пользователей. Сюда в том числе входит время отрисовки сайта, отсутствие зависаний и так далее.
24 |
25 | * Использование Best practices
26 |
27 | Frontend - это быстроразвивающаяся среда. Всегда приветствуется использование современных технологий и библиотек.
28 |
29 | * Оригинальность и цельность идеи
30 |
31 | Создаваемое решение не должно копировать уже существующие сайты, но при этом все его компоненты необходимо связать единой мыслью (проблематикой).
32 |
33 | * [Доступность](https://developer.mozilla.org/ru/docs/Learn/Accessibility/What_is_accessibility)
34 |
35 | ## Полезные материалы
36 |
37 | * Руководства по основам WEB
38 | * [Руководство по HTML5 и CSS3 Metanit](https://metanit.com/web/html5/)
39 | * [Курс по HTML от w3schools](https://www.w3schools.com/html/)
40 | * [Руководство по JavaScript Metanit](https://metanit.com/web/javascript/)
41 | * [The Modern JavaScript Tutorial](https://javascript.info/)
42 | * [Руководство по TypeScript Metanit](https://metanit.com/web/typescript/)
43 | * [TypeScript documentation](https://www.typescriptlang.org/docs/home.html)
44 | * [Дока](https://doka.guide/)
45 |
46 | * SPA фреймворки/библиотеки
47 | * [VUE.JS](https://vuejs.org)
48 | * [Angular 2+](https://angular.io/start)
49 | * [React](https://reactjs.org/docs/getting-started.html)
50 | * [Blazor WebAssembly](https://docs.microsoft.com/ru-ru/aspnet/core/blazor/?view=aspnetcore-6.0#blazor-webassembly)
51 |
52 |
53 | * Инструменты для разработки
54 | * [web.dev](https://web.dev/)
55 | * [Chrome DevTools](https://developer.chrome.com/docs/devtools/)
56 | * [Lighthouse](https://developers.google.com/web/tools/lighthouse)
57 | * [ESLint](https://eslint.org/)
58 | * [БЭМ](https://ru.bem.info/)
59 |
60 | ### Json server
61 |
62 | * [Документация](https://github.com/typicode/json-server)
63 | * [Туториал](https://medium.com/codingthesmartway-com-blog/create-a-rest-api-with-json-server-36da8680136d)
--------------------------------------------------------------------------------
/2022/requirements/iot/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `IoT`
2 |
3 | ## Цель
4 |
5 | Придумать и реализовать проект интернета вещей на тему умного дома.
6 |
7 | ## Описание
8 |
9 | Необходимо создать устройство на предложенном или собственном оборудовании и связать его с каким-либо клиентским интерфейсом. Выбор бизнес-модели процесса, для которого разрабатывается устройство, остается за Вами.
10 |
11 |
12 | ## Критерии
13 |
14 | В первую очередь оценивается подход к реализации и целостность решения, степень проработанности архитектурной и бизнес-составляющей.
15 |
16 | Дополнительным плюсом будет использование в проекте набора Wirenboard, системы домашней автоматизации nooLite или модулей XBee.
17 |
18 | ## Полезные материалы
19 |
20 | - [Справочная информация о наборе Wirenboard](https://wirenboard.com/wiki/Wb-demo-kit_v.2)
21 | - [Список доступного в техно-коворкинге оборудования](https://docs.google.com/spreadsheets/d/1c_Nkv76FgkRsr6o-WSc-48ektgt625eJfrqlk8D7THg/edit?usp=sharing)
22 |
--------------------------------------------------------------------------------
/2022/requirements/mocap/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Motion Capture`
2 |
3 | ## Цель
4 | Требуется создать видеоролик длительностью от 15 до 60 секунд на тему "Тяжелое испытание".
5 |
6 | ## Описание
7 |
8 | Стилистика и содержание остаются на Ваше усмотрение, креатив приветствуется.
9 |
10 | Ролик должен содержать одного или нескольких анимированных персонажей, ограничений по окружению или сюжетной составляющей нет.
11 |
12 | ## Критерии
13 |
14 | Критерии приведены в порядке убывания значимости.
15 |
16 | * Анимация
17 |
18 | Качество анимации определяется реалистичностью движений и правильностью расстановки ключевых кадров. Для анимации можно использовать любой софт на ваше усмотрение.
19 | Допускается использование только анимаций, созданных самостоятельно (а не взятых, например, с Mixamo).
20 |
21 | * Скелет модели
22 |
23 | Риг оценивается по качеству сделанного скиннинга, наличию управляющих костей, а также глубине его проработки.
24 |
25 | * 3D модель
26 |
27 | Вы можете использовать модели со стоков или создать их самостоятельно. Если Вы используете модели с 3D стоков – необходимо указать ссылки на источники при сдаче решения.
28 |
29 |
30 | Дополнительным плюсом будет:
31 | * Номинальная сложность скелета для модели (не гуманоидные, комплексные персонажи...)
32 | * Использование движков (realtime) для итоговой визуализации
33 | * Грамотная композиция и постановка кадра
34 | * Использование VFX (любой софт на выбор)
35 | * Наличие и креативность сюжетной составляющей
36 | * Навыки работы с Maya
37 |
38 |
39 | ## Представление результатов
40 |
41 | В качестве результата участникам необходимо предоставить:
42 | * Видеоролик с анимацией
43 | * Видеоролик с описанием процесса создания анимации и демонстрацией исходного материала
44 | * При отправке решения необходимо приложить список ссылок на сторонние материалы, если таковые использовались
45 |
46 | Суммарная длительность двух роликов не может превышать 15 минут. Видеоролики можно объединить в один при желании.
47 |
48 | ## ПО, используемое для 3D визулизации в лаборатории
49 |
50 | * 3D моделирование
51 | * Blender
52 | * 3Ds Max
53 | * Substance Painter
54 | * Cinema 4D
55 | * Zbrush
56 | * Fusion
57 | * Motion Capture
58 | * Vicon Shōgun
59 | * Faceware Studio
60 | * Игровые движки
61 | * Unreal Engine 4
62 | * Unity
63 |
64 | ## Популярные стоки
65 | * [sketchfab.com](https://sketchfab.com)
66 | * [cgtrader.com](https://cgtrader.com)
67 | * [turbosquid.com](https://turbosquid.com)
68 | * [3dexport.com](https://3dexport.com)
69 |
--------------------------------------------------------------------------------
/2022/requirements/robot-control/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Управление роботом`
2 |
3 | ## Цель
4 |
5 | Создать цифровой прототип робота, выполняющего поставленные перед ним задачи.
6 |
7 | ## Описание
8 |
9 | Вы узнали, что в Щербинке пройдёт ежегодная выставка достижений робототехники. Но возникла проблема: из-за статусности мероприятия билеты разошлись моментально. К вашей удаче на данном экспо заявлены ещё не все участники, и остаётся возможность попасть на него, собрав собственного робота для демонстрации на стенде. Решение принято молниеносно: участие в таком мероприятии в перспективе даёт возможность поработать с реальными промышленными образцами роботов.
10 |
11 | Дело за малым – надо всего лишь создать робота. Придумав идею, Вы разумно хотите сначала проверить её в симуляции и уже только потом браться за реальное железо.
12 |
13 | ## Критерии
14 |
15 | * Целостность идеи
16 |
17 | Разрабатываемый робот должен иметь чётко определённые варианты использования, что будет определять **полезность** робота.
18 |
19 | * Реализуемость
20 |
21 | Данный критерий отражает то, насколько на уровне текущего развития технологий существует возможность создания физического робота на основе представленного цифрового прототипа.
22 |
23 | * Расходование ресурсов
24 |
25 | Важно помнить, что робот - это не суперкомпьютер (как правило), он имеет вполне ограниченные вычислительные возможности.
26 |
27 | > В рамках задачи **не** требуется создание физического робота. Будет вполне достаточно его цифрового двойника в среде симуляции
28 |
29 | ## Технологии
30 |
31 | Для выполнения данного задания предлагается использовать среду [Webots](https://cyberbotics.com/), которая позволяет производить как моделирование роботов, так и их программирование и симуляцию:
32 | * [Официальный сайт](https://cyberbotics.com/)
33 | * [Документация](https://cyberbotics.com/doc/guide/index)
34 |
35 | Тем не менее никто не запрещает пользоваться любыми другими средствами, например:
36 | * [Gazebo](http://gazebosim.org/)
37 | * [PyBullet](https://pybullet.org/)
38 | * [SolidWorks](https://www.solidworks.com/ru)
39 | * [ROS](https://www.ros.org/)
40 |
--------------------------------------------------------------------------------
/2023/README.md:
--------------------------------------------------------------------------------
1 | # Набор в лабораторию 2023
2 |
3 | Чтобы стать сотрудником лаборатории, необходимо выполнить тестовое задание. На основании вашего решения будет проведен отбор, по результатам которого лучшие из лучших получат оффер.
4 |
5 | ## Общая информация
6 |
7 | В 2023 году большая часть заданий была составлена так, чтобы у вас была возможность реализовать задание по-своему, проявив креативность и инициативу. Будет приниматься во внимание ваша осведомленность о способах решения задачи, ответственность в подходе к организации решения.
8 |
9 | ## Направления набора
10 |
11 | * Создание виртуальных приложений на Unity ([подробно](requirements/engine/README.md))
12 | * Создание виртуальных приложений на Unigine ([подробно](requirements/engine/README.md))
13 | * Создание виртуальных приложений на Unreal Engine ([подробно](requirements/engine/README.md))
14 | * Геймдизайн ([подробно](requirements/gamedesign/README.md))
15 | * 3D-моделирование ([подробно](requirements/3d/README.md))
16 | * Backend ([подробно](requirements/backend/README.md))
17 | * Frontend ([подробно](requirements/frontend/README.md))
18 | * Мобильная разработка на Android ([подробно](requirements/mobile/README.md))
19 |
20 | Если у вас возникнут вопросы относительно формулировок и понимания заданий, обратитесь в [чат](https://t.me/rtuitlab_2023_enrollment), чтобы остальные участники могли увидеть ответы на популярные вопросы. Основная информация и объявления по набору также будут публиковаться в том же чате.
21 |
22 | В течение времени набора допускаются корректировки, проясняющие задания, но не меняющие их суть. Чтобы быть в курсе событий, советуем вам нажать кнопку `Watch` и выбрать `All Activity` на странице этого репозитория.
23 |
24 | Если у вас появится вопрос, который не хочется афишировать, вы всегда можете обратиться в [личные сообщения RTUITLab](https://vk.com/rtuitlab).
25 |
26 | ## Материально-техническая база для реализации тестового задания
27 | В этом году соискателям доступны мощности [Проектной зоны Центра молодежного техно-коворкинга РТУ МИРЭА](https://vk.com/rtu_tc). В нем можно собраться командой и/или применить интересные для вас технологии в реализации вступительного испытания. Из доступного оборудования имеется:
28 | * VR-перчатки Perception Neuron Motoin Capture Glove
29 | * VR-перчатки Senso Glove DK3-L
30 | * VR-перчатки Manus Prime II Haptic Edition
31 | * VR-очки HTC Vive
32 | * VR-очки HTC Vive Pro
33 | * AR-очки Epson Moverio BT-330
34 | * AR-очки Epson Moverio BT-35E
35 | * Смарт-очки Vuzix Blade
36 | * MR-очки Microsoft HoloLens
37 | * Ноутбуки для работы и многое другое
38 |
39 | ## Форма отправки
40 | Форма для отправки решений: [ссылка](https://forms.gle/yBzVWHbo2d2wKTE89).
41 |
42 | ## Порядок сдачи работ по направлениям
43 |
44 | ### Общее
45 | 1. По большей части направлений задание выполняется в индивиуальном порядке. \
46 | `Создание виртуальных приложений` допускается в команде до двух человек. \
47 | При работе над направлениями `Backend` и `Frontend` участники могут объединиться в команду, содержащую по одному участнику каждого из направлений.
48 |
49 | 2. Демонстрация вашего проекта
50 |
51 | Вместе с решением тестового задания необходимо приложить видео ролик длиной от 5 до 15 минут. Данный пункт является обязательным для возможности оперативного ознакомления с решением, которое вы создали. Формат записи видео при необходимости конкретизируется в соответствующих разделах. [OBS](https://obsproject.com/) вам в помощь 😊.
52 |
53 |
54 | ### `Backend`, `Frontend`, `Создание виртуальных приложений`, `Мобильная разработка на Android`
55 | #### **GIT**
56 |
57 | Все проекты в **обязательном** порядке сдаются в виде git-репозиториев. Можете разместить его на любом удобном вам ресурсе: GitHub, GitLab, Bitbucket и так далее. Если вы решите сделать репозиторий приватным - от вас будет требоваться оперативное предоставление доступа на чтение сотрудникам из лаборатории для проверки решения.
58 |
59 | Важно:
60 | * README
61 |
62 | В корне репозитория **ОБЯЗАТЕЛЬНО** должен находиться файл `README.md`, в котором имеются следующие пункты:
63 | * Название проекта
64 | * Описание - суть, идея, замысел
65 | * Скриншоты проекта (за исключением backend)
66 | * Подробная инструкция по запуску: какие SDK нужны, на какой ОС можно запустить и все необходимое для самостоятельного запуска вашего проекта из исходного кода
67 | * Коммиты
68 |
69 | Сообщения к коммитам должны быть читаемыми и понятными. Крайне *желательно* писать их на английском языке. Не стоит заливать весь проект единственным коммитом, лучше постепенно наращивать функционал. Это позволит и вам при необходимости откатиться к предыдущей версии, и сотрудникам лаборатории проследить ход ваших мыслей при проверке.
70 |
71 | #### **Качество кода**
72 |
73 | При проверке любого решения будет уделяться внимание качеству написанного кода. Старайтесь избегать устаревших практик, копипаста, забытых ненужных файлов. Оставляйте только то, что относится к проекту и необходимо для его работы (разработки). Пишите комментарии, если считаете необходимым.
74 |
75 | ### `3D-моделирование`, `Геймдизайн`
76 | Подробные критерии описаны в соответствующих разделах.
77 |
78 | ## Материалы прошлых лет
79 |
80 | * [Набор 2022 года](2022)
81 | * [Набор 2021 года](2021)
82 | * [Набор 2020 года](2020)
83 |
--------------------------------------------------------------------------------
/2023/requirements/3d/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `3D-моделирование`
2 |
3 | ## Цель
4 | Необходимо создать low-poly и high-poly модели персонажа.
5 |
6 | ## Описание
7 | Один ваш друг увлекается созданием игр. Сейчас для очередной игры ему нужна модель главного героя. Не найдя нужной модели на просторах интернета, ваш знакомый вспомнил, что вы умеете кое-что в 3D-моделировании, и обратился за помощью. Он рассказал вам, как должна выглядеть модель, как она будет использоваться. Теперь у вас есть всё для того, чтобы воссоздать её в объёме.
8 |
9 | ## Реализация
10 | Персонаж может быть роботом, живым существом или их гибридом. Также можно снарядить персонажа (оружием, транспортом и т.п.) и создать минимальное окружение для его подачи.
11 |
12 | ## Порядок выполнения задания
13 |
14 | 1. Создать low-poly модель персонажа, состоящую из не более чем 10 000 полигонов (Triangles).
15 | 2. Создать UV-развертку модели и сделать ее текстурную разметку.
16 | 3. Запечь текстуры для модели.
17 | 4. Оформить проект, логично назвать модели.
18 | 5. Создать high-poly модель персонажа, не ограничиваясь количеством полигонов.
19 | 6. Запечь текстуры для модели
20 | 7. Провести доработку UV-развертки и текстурной разметки.
21 | 8. Оформить проект, логично назвать модели.
22 | 9. Разработать Rigging (скелет) для модели, сделать привязку к костям и настроить скиннинг (переназначение весов).
23 | 10. Разработать анимацию для модели (1-3 простых анимации, например, бег, прыжок, атака).
24 | 11. Оформить проект, логично назвать модели, текстуры и рабочие фалы.
25 |
26 | ## Критерии
27 |
28 | * Качество выполненных low-poly и high-poly моделей
29 | * Качество UV-развертки
30 | * Оригинальность и качество текстур
31 | * Качество созданного Rigging (скелет) и анимации модели
32 | * Грамотность оформления проекта и логичность названия моделей
33 | * Общее впечатление о работе
34 |
35 | ## Требования к составу отправленного решения
36 |
37 | * Рабоче файлы используемых программ (`.blend`, `.max`, `.spp` и тд)
38 | * Файл модели low-poly персонажа в формате `.fbx`
39 | * Пакет текстур (BaseColor, Normal, AO, и др) в формате `.png`, с разрешением 2048х2048 px
40 | * 3-5 рендеров модели 1920х1080 px в формате `.png`
41 | * Видеозапись анимаций персонажа
42 |
43 | ## Примеры работ
44 |
45 | * [Пример 1](https://sketchfab.com/3d-models/robot-2-8e4a7dbbca1c4a54ab9c547091d04cdd)
46 | * [Пример 2](https://sketchfab.com/3d-models/fantasy-rpg-engineer-df6ac8a4828649eebbd8e424d738b9f9)
47 | * [Пример 3](https://sketchfab.com/3d-models/mech-tank-biped-e8d275f55c1844649bf0404e9c62c2d6)
48 | * [Пример 4](https://sketchfab.com/3d-models/anubis-boss-handpainted-lowpoly-55abc8f8817a4448ad2f58eb524bac1d)
49 |
--------------------------------------------------------------------------------
/2023/requirements/backend/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Backend`
2 |
3 | ## Цель
4 | Разработать Backend-сервис, который позволяет автоматизировать процесс отслеживания актуальных мероприятий в городе.
5 |
6 | ## Описание
7 | Отправившись отдохнуть в глубинку нашей родины, вы сблизились с одним из местных чиновников. Выяснилось, что администрация города проводит много мероприятий для жильцов, но у неё нет современного средства для оповещения граждан. Вы согласились помочь своему новому знакомому. Встретившись с ним ещё раз, вы обсудили лично, какой функционал от вас требуется, поэтому уже знаете, что должна уметь делать система.
8 |
9 | ## Реализация
10 | Публичным интерфейсом для взаимодействия с системой **должен** выступать протокол HTTP и/или основанные на нём (WS, SSE, gRPC...). При записи видео ролика важно продемонстрировать работу сервиса при помощи каких либо инструментов по типу [Insomnia](https://insomnia.rest/), [Postman](https://www.postman.com/), [DataGrip](https://www.jetbrains.com/datagrip/) и прочих, способных наглядно показать, как работает ваше приложение.
11 |
12 | При реализации вы можете выбрать любой способ организации компонентов (монолит/сервисы/микросервисы/беcсерверная архитектура) и масштаб.
13 |
14 | ## Критерии
15 |
16 | * Целостность созданного сервиса
17 |
18 | Backend создается не просто так, им будут пользоваться конкретные клиенты, будь то сайты, мобильные приложения, кассовые автоматы или что угодно еще. При разработке и продумывании API важно обратить внимание на процессы, автоматизацию которых обеспечивает сервис.
19 | * Архитектурная составляющая
20 |
21 | В современных фреймворках приняты устоявшиеся подходы и практики, например использование MVC. Обоснование "сделано при помощи архитектуры N потому что я её знаю/захотелось попробовать" будет более чем достаточно, при этом если некоторая архитектура выбрана - важно её придерживаться.
22 | * Документация
23 |
24 | Описание того, как можно взаимодействовать с сервисом (Wiki, OpenAPI, Swagger...).
25 | * Грамотное использование ресурсов
26 |
27 | Стоит обратить внимание на то, как Вы используете вычислительные мощности. Например, отправлять 5 SQL запросов вместо одного сложного выгодно не всегда.
28 | Нет цели выдать 100500 запросов в наносекунду на Raspberry Pi. Помните, что "Преждевременная оптимизация – корень всех зол".
29 |
30 | ## Технологии
31 |
32 | Лимита на технологии **не предусмотрено**, при решении задания можно использовать любой стек.
33 |
34 | Сегодня в лаборатории для написания Backend сервисов используются следующие технологии:
35 |
36 | * Фреймворки
37 | * [ASP.NET Core](https://dotnet.microsoft.com/learn/aspnet/what-is-aspnet-core)
38 | * [Go (Gin)](https://github.com/gin-gonic/gin)
39 | * [Node.JS (Express, NestJS)](https://nodejs.org/en/)
40 | * [Spring Boot](https://spring.io/projects/spring-boot)
41 | * [Flask](https://flask.palletsprojects.com/)
42 | * [FastAPI](https://fastapi.tiangolo.com/)
43 | * [Django](https://www.djangoproject.com/)
44 | * Базы данных
45 | * [PostgreSQL](https://www.postgresql.org/)
46 | * [MongoDB](https://www.mongodb.com/)
47 | * Кеш
48 | * [Redis](https://redis.io/)
49 | * Очереди сообщений
50 | * [RabbitMQ](https://www.rabbitmq.com/)
51 | * [Redis](https://redis.io/)
52 |
53 | > _Желательно_ реализовывать проект с использованием технологий, описанных выше, для простоты дальнейшего встраивания в рабочий процесс. Но в рамках тестового задания **жестких ограничений на используемый стек нет**
54 |
55 | ## Окружение
56 |
57 | Будет полезно обратить внимание на следующее:
58 | * Тесты (Unit, e2e, integration...)
59 |
60 | Backend сервисы как правило используются перечнем клиентов, и тесты, подтверждающие функциональность системы, приносят пользу.
61 |
62 | * Docker
63 |
64 | Возможность запуска приложения в Docker позволяет оперативно встроить разработанное решение в существующие процессы.
65 |
66 | * База данных
67 |
68 | В рамках тестового задания нет необходимости использовать некую "боевую" базу данных, можно обойтись хранением данных в памяти, но по понятным причинам для "боевых" проектов такой подход практикуется не часто.
69 |
70 | * Конфигурация
71 |
72 | Возможность конфигурации приложения позволяет не переписывать участки кода вручную при изменении требований.
--------------------------------------------------------------------------------
/2023/requirements/engine/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Создание виртуальных приложений`
2 |
3 | ## Цель
4 |
5 | Создать игру от первого лица со сражениями в случайно генерируемых подземельях.
6 |
7 | ## Описание
8 |
9 | Представьте ситуацию, когда ваш друг быстро проходит уровни в играх и стремится к их неограниченному количеству. Он также любит сражаться с врагами в подземельях. Друг обращается к вам с просьбой найти решение этой проблемы. Ваша задача — создать игру с авто генерирующимися уровнями и битвами в подземельях с сеттингом на свое усмотрение. Друг так же подумывает эту идею в будущем перенести в виртуальную реальность.
10 |
11 | ## Требования
12 |
13 | * **LFS**
14 |
15 | Внедрение и конфигурация LFS репозитория. Укажите расширения файлов и папки, потенциально занимающие много места или используйте конфиг, созданный для движка.
16 |
17 | * **Полноценность**
18 |
19 | После окончания проекта необходимо сделать его билд. Пользователь должен иметь возможность протестировать приложение без редактора.
20 |
21 | * **Интуитивность и доступность**
22 |
23 | Игра должна быть простой в освоении и использовании. Любой пользователь должен быстро понимать её основные механики и интерфейс.
24 |
25 | ## Критерии
26 |
27 | * **Процедурная генерация**
28 |
29 | Игра должна иметь алгоритм для генерации случайного уровня.
30 |
31 | * **Интерактивность**
32 |
33 | На уровне должны быть интерактивные предметы. Вы можете разложить по уровню оружие или усиления. Предметы могут находиться в любом месте уровня и даже в секретных тайниках.
34 |
35 | * **Завершённость**
36 |
37 | Игра должна иметь конец. Это может быть финальный босс, последняя комната или что-нибудь ещё.
38 |
39 | * **Визуальные эффекты**
40 |
41 | Игра должна придерживаться единого визуального стиля. В этом может помочь post processing, VFX.
42 |
43 | * **Интерфейс**
44 |
45 | Цельная игра состоит не только из экрана, где происходит игровой процесс. Игра должна иметь меню, позволяющее управлять ею.
46 |
47 | * **Сохранение прогресса**
48 |
49 | Можно реализовать обычное сохранение итогов игры, рекордов, а можно сделать сохранение прогресса прохождения уровня, инвентаря и так далее.
50 |
51 | ## Движки, которые можно использовать
52 |
53 | * Unreal Engine
54 | * Unigine
55 | * Unity
56 |
57 | По каждому из движков будет проходить отдельный конкурс.
58 |
59 | ## Работа в команде
60 |
61 | Работать в группе разрешено, но количество участников не должно превышать 4 человека. Имейте в виду: чем больше участников, тем строже оценка. Важно, чтобы было ясно какой вклад в результат внёс каждый из участников.
62 |
63 | ### Полезные материалы к Unreal Engine
64 |
65 | * [Unreal Engine: документация](https://docs.unrealengine.com/5.0/en-US/)
66 | * [Unreal Engine Marketplace](https://www.unrealengine.com/marketplace/en-US/store)
67 |
68 | ### Полезные материалы к Unity
69 |
70 | * [Unity: документация](https://docs.unity3d.com/ru/530/ScriptReference/index.html)
71 | * [Unity Asset Store](https://assetstore.unity.com/)
72 |
73 | ### Полезные материалы к Unigine
74 |
75 | * [Документация Unigine](https://developer.unigine.com/ru/docs/latest)
76 | * [Unigine Asset Store](https://developer.unigine.com/ru/docs/latest)
77 |
78 | ## Полезные материалы ко всем движкам
79 |
80 | * Список бесплатных игровых ассетов: https://www.freegameassets.com/
81 |
82 | ## Референсы
83 |
84 | * [Enter The Dungeon](https://store.steampowered.com/app/311690/Enter_the_Gungeon/)
85 | * [Battle Tallent](https://store.steampowered.com/app/1331510/Battle_Talent/)
86 | * [Ancient Dungeon](https://store.steampowered.com/app/1125240/Ancient_Dungeon/)
87 | * [Deep rock galactic](https://store.steampowered.com/app/548430/Deep_Rock_Galactic/)
88 |
--------------------------------------------------------------------------------
/2023/requirements/frontend/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Frontend`
2 |
3 | ## Цель
4 | Разработать web-приложение, которое позволит отслеживать актуальные мероприятий в городе.
5 |
6 | ## Описание
7 | Отправившись отдохнуть после очередной душной сессии, вы познакомились с одним представителем администрации местного городка. После непродолжительного общения вам рассказали, что администрация города проводит много мероприятий для жителей , но у неё нет современного средства для оповещения граждан. Ваш новый знакомый сказал, что у него на примете есть кое-кто, готовый разработать серверную часть, но с клиентской помочь можете только вы. Встретившись с ним ещё раз, вы обсудили лично, какой функционал от вас требуется, поэтому уже знаете, что должна уметь делать система.
8 |
9 | ## Требования
10 | Все требования к сервису вы узнали от своего знакомого, однако хочется напомнить несколько пунктов, которые он рекомендовал реализовать:
11 | * Видео-трансляции
12 |
13 | Для привлечения большего количества людей к мероприятию хочется иметь возможность вести стрим с места событий. Лучше один раз увидеть, как всё было, чем 10 раз прочитать об этом в газете.
14 |
15 | * Отображение мероприятий на карте
16 |
17 | Удобно искать ближайшие мероприятия на карте, когда вам не хочется тратить время на поездки.
18 |
19 | ## Допущения
20 | Для работы большинства сайтов требуется бэкенд, предоставляющий данные. В рамках выполнения данного задания нет необходимости создавать полноценный бэкенд. Можно, например, использовать [json-server](#json-server), [mockapi](https://mockapi.io/), попросить написать бэкенд знакомого, использовать статичные данные и так далее.
21 |
22 | Задания по frontend-разработке всегда привносили что-то новое в формат набора в лабораторию. Данное задание сделано на основе задания по backend-разработке, что позволяет вам скооперироваться с кем-то из бэкендеров. Такое решение будет выглядеть интереснее, так как продемонстрирует заодно и умение работать в команде.
23 |
24 | В случае использования какого-либо бэкенда необходимо кроме ссылки на решение приложить ссылку на бэкенд и инструкцию, как им пользоваться.
25 |
26 | ## Критерии
27 |
28 | * Производительность
29 |
30 | К данному критерию относится cкорость работы сайта на устройствах пользователей. Сюда в том числе входит время отрисовки сайта, отсутствие зависаний и так далее.
31 |
32 | * Использование Best practices
33 |
34 | Frontend - это быстроразвивающаяся среда. Всегда приветствуется использование современных технологий и библиотек.
35 |
36 | * Оригинальность и цельность идеи
37 |
38 | Создаваемое решение не должно копировать уже существующие сайты, но при этом все его компоненты необходимо связать единой мыслью (проблематикой).
39 |
40 | * [Доступность](https://developer.mozilla.org/ru/docs/Learn/Accessibility/What_is_accessibility)
41 |
42 | ## Полезные материалы
43 |
44 | * Руководства по основам WEB
45 | * [Руководство по HTML5 и CSS3 Metanit](https://metanit.com/web/html5/)
46 | * [Курс по HTML от w3schools](https://www.w3schools.com/html/)
47 | * [Руководство по JavaScript Metanit](https://metanit.com/web/javascript/)
48 | * [The Modern JavaScript Tutorial](https://javascript.info/)
49 | * [Руководство по TypeScript Metanit](https://metanit.com/web/typescript/)
50 | * [TypeScript documentation](https://www.typescriptlang.org/docs/home.html)
51 | * [Дока](https://doka.guide/)
52 |
53 | * SPA фреймворки/библиотеки
54 | * [VUE.JS](https://vuejs.org)
55 | * [Angular 2+](https://angular.io/start)
56 | * [React](https://reactjs.org/docs/getting-started.html)
57 | * [Blazor WebAssembly](https://docs.microsoft.com/ru-ru/aspnet/core/blazor/?view=aspnetcore-6.0#blazor-webassembly)
58 |
59 |
60 | * Инструменты для разработки
61 | * [web.dev](https://web.dev/)
62 | * [Chrome DevTools](https://developer.chrome.com/docs/devtools/)
63 | * [Lighthouse](https://developers.google.com/web/tools/lighthouse)
64 | * [ESLint](https://eslint.org/)
65 | * [БЭМ](https://ru.bem.info/)
66 |
67 | ### Json server
68 |
69 | * [Документация](https://github.com/typicode/json-server)
70 | * [Туториал](https://medium.com/codingthesmartway-com-blog/create-a-rest-api-with-json-server-36da8680136d)
71 |
--------------------------------------------------------------------------------
/2023/requirements/gamedesign/A-423.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2023/requirements/gamedesign/A-423.mp4
--------------------------------------------------------------------------------
/2023/requirements/gamedesign/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Геймдизайн`
2 |
3 | ## Цель
4 |
5 | Придумать и проработать игру, где основное действие происходит а локации Института ИТ.
6 |
7 | ## Описание
8 |
9 | Совершенно случайно в ваши руки попали секретные наработки сотрудников ИИТ. Это архив, содержащий 3D-модели разных аудиторий и лабораторий. Недолго думая вы решили, что хотите использовать их раньше остальных. Вам надо придумать игру! \
10 | Игра не должна быть очень большой или сложной в реализации. Малого количества механик будет вполне достаточно.
11 |
12 | ## Ссылки на пролёты по аудиториям
13 |
14 | * [Холл](https://www.artstation.com/artwork/kD5Yz0)
15 | * [А-421](https://www.artstation.com/artwork/X1e6Ly)
16 | * [А-423](A-423.mp4)
17 |
18 | ## Требования к решению
19 | * Концепт документ
20 |
21 | Разработайте концепт документ по своей идее. Он должен раскрывать особенности игры, её механики, правила, способ управления. Файл должен быть понятным и легко читаемым. Укажите референсы к другим играм, а также её USP. При необходимости укажите дополнительную информацию об игре.
22 |
23 | * Дизайн документ
24 |
25 | Составьте дизайн документ, детально описывающий механики, а также как они друг с другом работают. Объём документа не должен превышать 10 страниц.
26 |
27 | **Важно** \
28 | Вы можете создать прототип по своей идее. В таком случае необходимо пояснение, какую цель (цели) вы преследуете, создавая его. Прототип может быть реализован в любом формате (видео игра, настольная игра, проект в роблоксе или майнкрафте). \
29 | Прототип не даёт дополнительных баллов при оценке решения. Тем не менее он может продемонстрировать целесообразность тех или иных идей.
30 |
31 | ## Требования к игре
32 | * Длительность игры от 1 до 30 минут
33 | * Использование предложенных материалов в игре
34 | * Вовлечение игрока менее чем за 2 минуты
35 | * Возможность реализовать проект за 4 месяца с одним программистом и одним художником
36 | * Отсутствие дубликатов информации в дизайн документе
37 |
38 | ## Критерии оценивания
39 | * Лаконичность
40 | * Ясность изложения мыслей
41 | * Оригинальностей / уникальность идеи
42 | * Оформление концепт документа
43 | * Полнота описания проекта (затронуты все необходимые аспекты)
44 | * Оформление дизайн докмуента
45 | * Структура дизайн документа
46 |
47 | -----
48 |
49 | ## Дополнительные задания
50 |
51 | Выберите любое задание из предложенных и выполните его. В каждом из вариантов необходимо представить концепт документ и прототип при желании ([ссылка на требования](#Требования-к-решению)).
52 |
53 | ### Игра с локальным мультиплеером
54 |
55 | Продумайте идею игры со взаимодействием нескольких игроков по локальной сети. Игра должна иметь соревновательный или кооперативный режим, а у игроков должна быть возможность мешать друг другу. Количество игроков неограниченно, но вы должны учитывать возможности устройства ввода, чтобы всем было удобно играть.
56 |
57 | **Требования**
58 | * Длительность игровой сессии 1-3 минуты
59 | * Сильное взаимодействие между игроками
60 | * Ожидаемые эмоции: азарт и веселье
61 | * Возможность реализовать проект за 3 месяца с одним программистом и одним художником
62 |
63 | **Критерии**
64 | * Лаконичность
65 | * Ясность изложения мыслей
66 | * Оригинальностей / уникальность идеи
67 | * Оформление концепт документа
68 | * Полнота описания проекта (затронуты все необходимые аспекты)
69 |
70 | ## Анализ и улучшение существующей игры
71 |
72 | Ознакоьтесь с игрой [Дедлайн](https://kubirill.itch.io/deadline). \
73 | Вам необходимо выделить и обосновать текущие недостатки игры. Для каждого недостатка предложите решение для его устранения. Продумайте также новые идеи механик и геймплея для развития игры.
74 |
75 | В концепт документе к этому заданию вам также понадобится провести анализ текущей версии игры: какие в ней есть механики, геймплей и геймплейный цикл. Документ должен раскрывать недостатки игры, объяснять их причину, а также демонстрировать решение по их устранению. Затем необходимо предложить новые механики и обосновать как они впишутся и изменят основной геймплей.
76 |
77 | **Требования:**
78 | * Сохранение основного концепта игры. Приблизительно 40 % механик и геймплея игры должно остаться на месте.
79 | * Длительность одной игровой сессии не более 20 минут.
80 | * Наличие механик удержания. У игрока должен сохраняться интерес минимум на протяжении 14 игровых сессий.
81 |
82 | **Критерии оценивания**
83 | * Лаконичность
84 | * Ясность изложения мыслей
85 | * Выделение актуальных проблем и убедительность их обоснований
86 | * Качество предложенных решений
87 | * Оригинальность/уникальность идей по развитию игры
88 | * Оформление концепт документа
89 | * Полнота описания проекта (затронуты все необходимые аспекты)
90 |
91 | ---
92 | ## 3. Адаптация народных сказок для видеоигры
93 |
94 | Ознакомьтесь с сериалом [Гора Самоцветов](https://www.youtube.com/playlist?list=PL8XzBNh9xhcz8Rew8A-ywKuKCw8bYoZC3).
95 |
96 | Выберите любую народную сказку и предложите идею, адаптирующую её сюжет в игровом формате.
97 |
98 | **Требования:**
99 | * Близкое соответствие оригиналу
100 | * Планируемая итоговая длительность игры от 10 минут до 4 часов.
101 | * Возможность реализовать проект за 6 месяцев с одним программистом и одним художником
102 |
103 | **Критерии оценивания**
104 | * Лаконичность
105 | * Ясность изложения мыслей
106 | * Степень соответствия адаптации сюжета игровому формату
107 | * Нарративное обоснование механик
108 | * Оригинальность/уникальность идей
109 | * Оформление концепт документа
110 | * Полнота описания проекта (затронуты все необходимые аспекты)
111 |
112 | # Полезные материалы
113 | * [Процессы и документация для начинающих ](https://gdcuffs.com/pipeline-for-beginners/)
114 | * [Как написать концепт-документ игры?](https://yandex.ru/q/videogames/7461569025/)
115 | * [Как геймдизайнеру работать с художниками — концепт-документы и техническое задание](https://dtf.ru/gamedev/946186-kak-geymdizayneru-rabotat-s-hudozhnikami-koncept-dokumenty-i-tehnicheskoe-zadanie)
116 | * [Диздок-десятистраничник](https://habr.com/ru/articles/469971/)
117 | * [Лайфхаки ГДД](https://gdcuffs.com/lifehacks_gdd/)
118 | * [7 советов — Анализ гейм-дизайна игры ](https://gdcuffs.com/7tips-ant-gd/)
119 | * [Инструменты гейм-дизайнера ](https://gdcuffs.com/tools/)
120 |
--------------------------------------------------------------------------------
/2023/requirements/mobile/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Android-разработка`
2 |
3 | ## Цель
4 | Разработать криптовалютное offline-first приложение для поиска, изучения и просмотра исторических данных курса криптовалют.
5 |
6 | ## Требования
7 | * Просмотр информации о конкретной криптовалюте (инструменте)
8 | * Просмотр графиков курса криптовалюты по отношению к рублю или доллару
9 | * Добавление инструмента в избранное
10 | * Поиск криптовалюты по названию и [тикеру](https://currency.com/ru/what-is-ticker)
11 | * Обеспечить работу всех функций приложения без подключения к интернету на основе полученных ранее данных
12 | * Возможность попасть на некоторые страницы приложения с помощью скана QR-кода
13 |
14 | Тут могут быть различные варианты реализации:
15 | * можно сканировать QR-код в стороннем приложении;
16 | * а можно в дополнение к предыдущему встроить сканер в ваше собственное.
17 |
18 | Мы [подготовили](qr) несколько QR-кодов в удобном формате.
19 |
20 | * Подписка на уведомления о курсе выбранной криптовалюты в выбранное время дня
21 |
22 | Если у пользователя будет отсутствовать соединение, отправить после его появления.
23 |
24 | Реализация собственных идей, не описанных в задании, поощряется. Но помните о том, что качество в данном случае важнее количества.
25 |
26 | ## Источники данных
27 | Существует множество открытых API, посвящённых криптовалютным инструментам. Вы можете обращаться за данными в сервис [Coinpaprika API](https://api.coinpaprika.com/#section/Introduction), а можете выбрать любой другой. В поисках вам может помочь [открытый список публичных API](https://github.com/public-apis/public-apis#cryptocurrency).
28 |
29 | ## Критерии
30 |
31 | * Архитектура
32 |
33 | Важно обратить внимание на архитектуру разработываемого мобильного приложения, т.е. на набор правил кодовой базы, которые обеспечат максимальную [связность](https://ru.wikipedia.org/wiki/Связность_(программирование)) и минимальное [зацепление](https://ru.wikipedia.org/wiki/Зацепление_(программирование)) частей приложения. Важно придерживаться какой-то одной архитектуры приложения, выбор которой стоит обосновать в `README.md` репозитория с кодом.
34 |
35 | * Дизайн
36 |
37 | Используйте существующие гайдлайны дизайн-системы Android-приложений (Material Design). Если Вы решаете пользоваться другой дизайн-системой, она должна быть выверена и оптимизирована под использование на мобильном устройстве, а в `README.md` репозитория должна содержаться ссылка на её документацию.
38 |
39 | * Функциональность
40 |
41 | Ожидается наличие функций, дополняющих представленные в требованиях к выполнению заданий. \
42 | _**Важно.** Приложение не должно нарушать законодательство РФ, а значит сегодня постараемся обойтись без механизмов купли-продажи и обмена криптовалют._
43 |
44 | * Внимание к деталям
45 |
46 | Разработка качественного приложения - это забота и о пользователе, и о разработчике. Первому должно быть очевидно, как пользоваться приложением, а у второго не должно возникнуть вопросов, как поддерживать приложение.
47 |
--------------------------------------------------------------------------------
/2023/requirements/mobile/qr/README.md:
--------------------------------------------------------------------------------
1 | Информация в QR-кодах содержится в следующем формате:
2 | ```
3 | https://rtuitlab.dev/crypto/<тикер>-<название>
4 | ```
5 |
6 | Например:
7 | ```
8 | https://rtuitlab.dev/crypto/btc-bitcoin
9 | ```
10 | 
11 |
12 |
13 |
14 | ```
15 | https://rtuitlab.dev/crypto/doge-dogecoin
16 | ```
17 | 
18 |
19 |
20 |
21 | ```
22 | https://rtuitlab.dev/crypto/matic-matic
23 | ```
24 | 
--------------------------------------------------------------------------------
/2024/README.md:
--------------------------------------------------------------------------------
1 | # Набор в лабораторию 2024
2 |
3 | Чтобы стать сотрудником лаборатории, необходимо выполнить тестовое задание. На основании вашего решения будет проведен отбор, по результатам которого лучшие из лучших получат оффер.
4 |
5 | ## Общая информация
6 |
7 | В этом году задания разных направлений имеют как чётко прописанные уровни сложности, так и общее описание темы. Внимательно прочитайте условия перед началом выполнения. Будет приниматься во внимание ваша осведомленность о способах решения задачи, ответственность в подходе к организации решения и, конечно, креативный подход.
8 |
9 | ## Направления набора
10 |
11 | * Разработка игр на Unity ([подробно](requirements/unity/README.md))
12 | * Разработка игр на Unreal Engine ([подробно](requirements/unreal-engine/README.md))
13 | * Геймдизайн ([подробно](requirements/game-design/README.md))
14 | * 3D-моделирование ([подробно](requirements/3d/README.md))
15 | * Backend ([подробно](requirements/back/README.md))
16 | * Frontend ([подробно](requirements/front/README.md))
17 | * Мобильная разработка на Android ([подробно](requirements/mobile/README.md))
18 | * Дизайн цифровых продуктов ([подробно](requirements/design/README.md))
19 | * Интернет вещей ([подробно](requirements/iot/README.md))
20 | * Робототехника ([подробно](requirements/robot/README.md))
21 | * Машинное обучение ([подробно](requirements/ai/README.md))
22 |
23 | Если у вас возникнут вопросы относительно формулировок и понимания заданий, обратитесь в [чат](https://t.me/rtuitlab_2024_enrollment), чтобы остальные участники могли увидеть ответы на популярные вопросы. Основная информация и объявления по набору также будут публиковаться в том же чате.
24 |
25 | В течение времени набора допускаются корректировки, проясняющие задания, но не меняющие их суть. Чтобы быть в курсе событий, советуем вам нажать кнопку `Watch` и выбрать `All Activity` на странице этого репозитория.
26 |
27 | Если у вас появится вопрос, который не хочется афишировать, вы всегда можете обратиться в [личные сообщения RTUITLab](https://vk.com/rtuitlab).
28 |
29 | ## Материально-техническая база для реализации тестового задания
30 | В этом году соискателям также доступны мощности [Проектной зоны Центра молодежного техно-коворкинга РТУ МИРЭА](https://vk.com/rtu_tc). В нем можно собраться командой и/или применить интересные для вас технологии в реализации вступительного испытания. Из доступного оборудования имеются:
31 |
32 | - Шлемы виртуальной реальности Oculus Quest 1, Oculus Quest 2, Vive Pro и Valve Index.
33 | - Очки дополненной реальности Epson Moverio и Vusix Blade.
34 | - Очки смешанной реальности Microsoft Hololens.
35 | - Графический планшет XP-Pen.
36 | - Высокопроизводительные компьютеры (Intel Core i7 11700, RTTX 3060), которые потянут даже Unreal Engine 5.
37 | - Наборы микроэлектроники и IoT, которые потребуются для выполнения заданий по интернету вещей и помогут с задачами робототехники.
38 | - 3D-принтеры для выполнения заданий по робототехнике.
39 | - Комфортабельные рабочие места.
40 |
41 | ## Форма отправки
42 | Форма для отправки решений: [ссылка](https://forms.gle/AraTJeS91KsQWaTP8).
43 |
44 | ## Порядок сдачи работ по направлениям
45 |
46 | ### Общее
47 | 1. Задания по направлениям выполняются в индивидуальном порядке.
48 | 2. Все проекты в **обязательном** порядке сдаются в виде git-репозиториев
49 | 3. Демонстрация вашего проекта
50 |
51 | Вместе с решением тестового задания необходимо приложить видео ролик длиной от 5 до 15 минут. Данный пункт является обязательным для возможности оперативного ознакомления с решением, которое вы создали. Формат записи видео при необходимости конкретизируется в соответствующих разделах. [OBS](https://obsproject.com/) вам в помощь 😊.
52 |
53 |
54 | ### `Backend`, `Frontend`, `GameDev`, `Мобильная разработка`, `ML`
55 | #### **GIT**
56 |
57 | Все проекты в **обязательном** порядке сдаются в виде git-репозиториев. Можете разместить его на любом удобном вам ресурсе: GitHub, GitLab, Bitbucket и так далее. Если вы решите сделать репозиторий приватным - от вас будет требоваться оперативное предоставление доступа на чтение сотрудникам из лаборатории для проверки решения.
58 |
59 | Важно:
60 | * README
61 |
62 | В корне репозитория **ОБЯЗАТЕЛЬНО** должен находиться файл `README.md`, в котором имеются следующие пункты:
63 | * Название проекта
64 | * Описание - суть, идея, замысел
65 | * Скриншоты проекта (за исключением backend)
66 | * Подробная инструкция по запуску: какие SDK нужны, на какой ОС можно запустить и все необходимое для самостоятельного запуска вашего проекта из исходного кода
67 | * Коммиты
68 |
69 | Сообщения к коммитам должны быть читаемыми и понятными. Крайне *желательно* писать их на английском языке. Не стоит заливать весь проект единственным коммитом, лучше постепенно наращивать функционал. Это позволит и вам при необходимости откатиться к предыдущей версии, и сотрудникам лаборатории проследить ход ваших мыслей при проверке.
70 |
71 | #### **Качество кода**
72 |
73 | При проверке любого решения будет уделяться внимание качеству написанного кода. Старайтесь избегать устаревших практик, копипаста, забытых ненужных файлов. Оставляйте только то, что относится к проекту и необходимо для его работы (разработки). Пишите комментарии, если считаете необходимым.
74 |
75 | ### `3D-моделирование`, `Геймдизайн`, `Интернет вещей`, `Робототехника`, `Дизайн`
76 | Подробные критерии описаны в соответствующих разделах.
77 |
78 | ## Материалы прошлых лет
79 |
80 | * [Набор 2023 года](2023)
81 | * [Набор 2022 года](2022)
82 | * [Набор 2021 года](2021)
83 | * [Набор 2020 года](2020)
84 |
--------------------------------------------------------------------------------
/2024/requirements/3d/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `3D моделирование`
2 | Необходимо создать 3D модель твердотельного оптического квантового генератора на рубине (ОКГ, т.е. лазер) в стиле звёздных войн и рендер анимации работы ОКГ. Модель будет использоваться в образовательном VR приложении, разрабатываемом на Unity.
3 |
4 | # Рекомендуемые этапы работы
5 | 1. Разобраться в устройстве лазера на рубине, найти референсы;
6 | 2. Драфт модели;
7 | 3. Создать high-poly модель;
8 | 4. Создать low-poly модель;
9 | 5. Оформить проект, логично назвать модели;
10 | 6. UV развёртка модели;
11 | 7. Запечь текстуры для модели;
12 | 8. Создать текстуры модели;
13 | 9. Разработать анимацию работы лазера.
14 | 10. Сделать рендер анимации, показать процесс генерации лазерного излучения (анимация работы лазера в разрезе);
15 | 11. Оформить проект, логично назвать модели, текстуры и рабочие файлы.
16 |
17 | # Критерии оценивания работ
18 | 1. Качество выполненных low-poly и high-poly моделей (15 баллов);
19 | 2. Качество UV-развертки (15 баллов);
20 | 3. Реалистичность текстур (15 баллов);
21 | 4. Анимация (10 баллов);
22 | 5. Достоверность визуализации внутренней части лазера (15 баллов);
23 | 6. Грамотность оформления проекта и логичность названия моделей (15 баллов);
24 | 7. Общее впечатление о работе (15 баллов).
25 |
26 | # Как отправить работу на проверку
27 | Нужно прислать ссылку на архив со следующим содержанием:
28 | 1. Рабочие файлы (.blend, .max, .spp и тд);
29 | 2. Файл low-poly модели в формате .fbx, настроенный для импорта в Unity;
30 | 3. Пакет необходимых текстур (BaseColor, Normal, AO, и др) в формате .png, с разрешением 2048х2048 px;
31 | 4. 1-2 рендера модели 1920х1080 px в формате .png;
32 | 5. Видеозапись анимации.
33 |
34 | # Шкала оценок
35 | 80-100 баллов - отлично
36 | 60-79 баллов - хорошо
37 | 40-59 баллов - удовлетворительно
38 | 20-39 баллов – плохо
39 |
40 | Задание составлено так, чтобы каждый участник смог показать свои сильные стороны в процессе выполнения задания. Лаборатория не требует обучаться новым техникам и способам создания той или иной геометрии при выполнении данного задания (т.е. желательно выполнить все пункты задания, но необязательно). Однако способность учиться новому является большим плюсом.
41 | Первостепенная цель тестового задания - определить набор полезных навыков кандидата, способов его подхода к решению поставленной задачи, а также ознакомление с рабочими процессами внутри лаборатории.
42 |
43 | # Референсы
44 | 1. Внешняя часть: [мечи](https://www.google.com/search?q=%D1%81%D0%B2%D0%B5%D1%82%D0%BE%D0%B2%D0%BE%D0%B9%20%D0%BC%D0%B5%D1%87&tbm=isch&tbs=rimg:Cd1wNfINLQHsYTVf_1bEcfhEVsgIXCgIIABAAKAE6BAgBEAFAAUgBVeU1YD_1AAgDYAgDgAgA&hl=ru&sa=X&ved=0CBwQuIIBahcKEwjg1ZbQ4u6DAxUAAAAAHQAAAAAQFg&biw=1263&bih=889)
45 | 2. Внутренняя часть (лазер на рубине) – необходимо изучить самостоятельно.
46 |
47 | # Результат
48 | Данное задание позволит выявить множество навыков у студентов 1-2 курса института информационных технологий РТУ МИРЭА, в том числе:
49 | 1. Уровень владения программами для создания 3D-моделей.
50 | 2. Умение создавать low-poly и high-poly модели, что является важным навыком для создания 3D-моделей разной сложности и функциональности.
51 | 3. Навыки создания UV-развертки, что необходимо для правильного размещения текстур на поверхности модели.
52 | 4. Умение запекать текстуры (Normal, AO и т.д.), что позволяет ускорить работу с текстурами и облегчить процесс рендеринга.
53 | 5. Навыки грамотного оформления проекта, логичного называния моделей и правильного экспорта, что упрощает взаимодействие с другими членами команды и совместную работу над проектами.
54 | 6. Способность изучать и достоверно визуализировать функционал моделируемого объекта.
55 |
--------------------------------------------------------------------------------
/2024/requirements/ai/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Искусственный интеллект`
2 |
3 | ## Цель
4 | Выполнить базовое задание и одно из двух заданий по выбору: либо по машинному зрению, либо по обработке текста (либо оба).
5 | ## Базовое задание
6 | ### Описание
7 | Каждый раз, когда люди готовятся к отпуску, они исследуют варианты отелей для бронирования, а владельцы отелей стремятся предложить лучшие условия на рынке, делая свои гостиницы более привлекательными для клиентов и прибыльными для себя.
8 |
9 | Отмена бронирования номеров представляет собой потенциальную проблему для индустрии туризма, поскольку она влияет на рейтинг отелей и их финансовый доход.
10 |
11 | Применение алгоритмов машинного обучения может существенно повысить эффективность работы отелей, предварительно выявляя клиентов, склонных к отмене бронирования, и разрабатывая стратегии взаимодействия с такими клиентами.
12 |
13 | Вам предоставляется задача создать алгоритм машинного обучения, который позволит определять, отменит ли клиент своё бронирование или нет.
14 |
15 | ### Реализация
16 | Использовать методы машинного обучения для получения результата. Ограничений по использованию библиотек нет.
17 |
18 | ### Формат результата
19 |
20 | Результат должен включать в себя код решения задачи и файл с ответами.
21 | Файл с ответами содержит две колонки: `index` и `is_canceled` и должен быть в формате csv. Удалять строчки из тестового файла **нельзя**. Ответы должны быть получены по файлу test.csv.
22 |
23 | Формат файла с ответами:
24 |
25 | ```
26 | index,is_canceled
27 | 0,1
28 | 0,0
29 | ```
30 |
31 | ### Критерии
32 | * accuracy
33 |
34 | Будет оцениваться метрика accuracy, её значение должно быть не ниже, чем 0.8, но чем выше, тем лучше.
35 | * Работа с данными
36 |
37 | Отдельно будет оцениваться работа с данными: анализ, предобработка и т.д.
38 | * Качество кода
39 |
40 | Читаемость кода, эффективность, логичность.
41 |
42 | ### Данные
43 | [train.csv](datasets/train.csv)
44 | [test.csv](datasets/test.csv)
45 | ## Задание на машинное зрение
46 | ### Описание
47 | Есть семисегментный индикатор.
48 | 
49 | Требуется по фотографии определить, какое время демонстрирует семисегментный индикатор.
50 | ### Реализация
51 | На вход системы должна поступать фотография, на выходе система должна выдавать время, которое было распознано на фотографии. Если на индикаторе отображены числа, которые не формируют время, то система должна выдавать сообщение: "Not a time".
52 | Примеры:
53 | Вход:
54 | \
55 | Выход:
56 | "02:00" \
57 | Вход: \
58 | 
59 | \
60 | Выход:
61 | "Not a time"
62 |
63 | **Важно!** Не требуется реализовывать красивый или сложный интерфейс для взаимодействия с системой, однако какой-то **минимальный** интерфейс взаимодействия должен быть, чтобы пользователь мог запустить приложение и самостоятельно выбрать изображение, которое будет загружаться в систему, после чего получить результат на экране. *Допускается использование консольного интерфейса с указанием пути до изображения/директории с изображениями.*
64 | **Обязательно** отдельно реализовать возможность загружать одновременно несколько фотографий, и чтобы система записывала результат по каждому изображению в txt файл в следующем виде:
65 | ```
66 | названиефото.jpg
67 | Not a time
68 | фото.png
69 | 12:54
70 | ```
71 | Можно реализовать одним из следующих способов: либо указывать путь до директории с изображениями, либо загружать архив с фотографиями.
72 | ### Формат результата
73 | Необходимо представить:
74 | * Исходный код для самой системы, чтобы можно было оценить код;
75 | * Код обучения модели/моделей;
76 | * Веса модели/моделей;
77 | * Данные для обучения.
78 | Запуск системы не должен быть сложным. Необходимо предоставить пошаговую инструкцию для запуска, например, "установить зависимости Python из файла requirements.txt и запустить файл main.py".
79 | ### Технологии
80 | Лимита на технологии **не предусмотрено**.
81 | ### Критерии
82 | * Точность работы системы
83 |
84 | Будет оцениваться точность работы системы: загружаться датасет с фотографиями и сравниваться полученное время с исходным. Итоговая точность будет считаться по следующей формуле:
85 | Количество правильно распознанных фотографий / общее количество фотографий
86 | * Качество кода
87 |
88 | Читаемость кода, эффективность, логичность.
89 | * Архитектура системы
90 |
91 | Оценка всей архитектуры работы системы
92 | * Подготовка данных
93 |
94 | Сбор, разметка, анализ, чистка, предобработка данных
95 |
96 | ### Данные
97 |
98 | [Датасет с индикаторами](https://disk.yandex.ru/d/eszMW-sRgJaMHg)
99 |
100 | ## Задание на обработку текста
101 | ### Описание
102 | К вам пришёл друг-владелец IT-компании. Ему нужно набрать несколько человек на должности, но он хочет набрать людей по "холодным" резюме. Для этого он решил разработать систему с использованием искусственного интеллекта для определения, подходит ли человек по одной из его вакансий, или не подходит ни к чему. Вам требуется разработать такую систему.
103 | ### Реализация
104 | Дано резюме кандидата и список вакансий с их описанием. Необходимо определить, к какой вакансии подходит кандидат или он не подходит вовсе.
105 | На вход системы должен поступать текст резюме кандидата, на выход должно идти наименование вакансии, к которой подходит кандидат. Если он не подходит ни к одной вакансии, должно выводиться "None".
106 | [Список вакансий](datasets/vakansii.txt). \
107 | Пример в [файле](datasets/primery_rezyume.txt).
108 |
109 | **Важно!** Не требуется реализовывать красивый или сложный интерфейс для взаимодействия с системой, однако какой-то **минимальный** интерфейс взаимодействия должен быть, чтобы пользователь мог запустить приложение, вставить текст резюме, и по этому резюме система выдала вакансию, на которую человек может претендовать. *Допускается использование консольного интерфейса с указанием пути до файла/директории с файлами.*
110 | **Обязательно** отдельно реализовать возможность указать директорию с txt файлами с резюме, чтобы чтобы система записывала результат по каждому файлу в txt файл в следующем виде:
111 | ```
112 | названиефайла.txt
113 | None
114 | резюме1.txt
115 | Backend разработчик
116 | ```
117 |
118 | ### Формат результата
119 | Необходимо представить:
120 | * Исходный код для самой системы, чтобы можно было оценить код;
121 | * Код обучения модели/моделей;
122 | * Веса модели/моделей;
123 | * Данные для обучения.
124 | Запуск системы не должен быть сложным. Необходимо предоставить пошаговую инструкцию для запуска, например, "установить зависимости Python из файла requirements.txt и запустить файл main.py".
125 | ### Технологии
126 | Запрещено использовать большие языковые модели для решения задачи с помощью zero-shot и few-shot классификации. То есть нельзя использовать API от ChatGPT, GigaChat, модели семейства LLaMA и др. Можно использовать: модели семейства BERT, но ими не ограничено, главное ограничение указано выше.
127 | ### Критерии
128 | * Точность работы системы
129 |
130 | Точность будет оцениваться по f1 score.
131 | * Качество кода
132 |
133 | Читаемость кода, эффективность, логичность.
134 | * Архитектура системы
135 |
136 | Оценка всей архитектуры работы системы
137 | * Подготовка данных
138 |
139 | Сбор, разметка, анализ, чистка, предобработка данных
140 |
--------------------------------------------------------------------------------
/2024/requirements/ai/datasets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/ai/datasets/.gitkeep
--------------------------------------------------------------------------------
/2024/requirements/ai/datasets/primery_rezyume.txt:
--------------------------------------------------------------------------------
1 | Резюме:
2 | Знания и небольшой практический опыт C и C++, SQL(postgres, mongodb, sqlite). Понимание принципов ООП и принципов SOLID. Большой опыт в написании решений различных задач на Python. Опыт написания api. Умение работать с консолью Linux. Опыт практического использования MLFlow. Опыт написания веб-интерфейсов (HTML,CSS,JS). Опыт работы с AWS. Опыт работы с библиотеками для решения задач линейного и целочисленного программирования и оптимизации (PuLP, Google ortools, pyomo), разработка оптимизационных моделей. Опыт в машинном обучении, прохожу курс в Яндекс практикум. Также алгоритмы, Docker, torch, Postman, pandas, numpy, sklearn, Django, DRF, Flask.
3 | Английский язык intermediate.
4 | Люблю решать задачи связанные с разработкой и написанием программного кода. Готов к нестандартным задачам.
5 | Достоинства: обучаемость - целеустремленность, ответственность, ориентация на практический результат
6 | Вакансия:
7 | ML специалист
8 | Резюме:
9 | Умею писать на питоне, хорошо знаю английский, в школе изучал паскаль. Опыта работы нет. Достоинства: обучаемость - целеустремленность, ответственность, ориентация на практический результат, стрессоустойчивость, непоколебимость, прошёл всю серию игр Dark Souls.
10 | Вакансия:
11 | None
12 | Резюме:
13 | Обладаю всеми базовыми навыками разработчика - от верстки по дизайн-макетам до
14 | запуска рабочего сайта. Тем не менее, в развитии своих навыков делаю упор на backend. Вне работы предпочитаю активный отдых и интеллектуальные книги.
15 | Из личных черт отмечу любознательность, внимание к деталям и педантичность деловой, стрессоустойчивость и рациональный подход к решению вопросов и споров. Открыт ко всему новому.
16 | Вакансия:
17 | junior golang - разработчик
18 | Резюме:
19 | Имею трёхлетний опыт разработки на языке golang, имею навыки работы на языке php, работал с фреймворком laravel, работал с MySQL, Docker, Postman.
20 | Вакансия:
21 | junior golang - разработчик
22 | Резюме:
23 | Увлекаюсь 3D моделированием, 3D печатью, робототехникой. В свободное время играю в баскетбол.
24 | Есть опыт работы с микроконтроллерами STM32.
25 | Умение работать с UART/USART, CAN, SPI, I2C.
26 |
27 | Личные качества:
28 | Честность;
29 | Трудолюбие;
30 | Ответственность;
31 | Стремление к саморазвитию и повышению профессионального уровня;
32 | Аналитическое мышление.
33 | Также обладаю следующими навыками:
34 | Навык работы в CAD-системах(Solidwork, Blender, FreeCad)
35 | Знание основ микроэлектроники, навыки пайки
36 | Программирование микроконтроллеров stm32
37 | C/C++
38 | Git
39 | ARM
40 | Gitlab
41 | Умение разбираться в чужом коде
42 | Вакансия:
43 | Стажер программист микроконтроллеров (embedded-разработчик)
44 | Резюме:
45 | Аналитический склад ума, наличие навыков программирования на языках C/С++, Java, наличие базовых навыков работы с БД, в том числе написание sql-запросов, Работал с системой Make, знаю принцип работы интерфейса UART. Умею составлять блок-схемы для любых задач. Трудолюбивый, любознательный, старательный, готовность к обучению.
46 | Вакансия:
47 | Стажер программист микроконтроллеров (embedded-разработчик)
48 | Резюме:
49 | Влюбился в мир вэб технологий, сейчас осваиваю самый крутой язык,
50 | без которого этот мир был невозможен - JS.
51 | В свободное время от обучения, занимаюсь реализацией себя в спорте и Английском языке, обожаю решать карточки на платформе Memris.
52 | Занимаюсь бегом уже около 3 лет, в будущем первый марафон.
53 | Мои ключевые навыки:
54 | HTML5
55 | CSS3
56 | JavaScript
57 | ООП
58 | Git
59 | SQL
60 | MySQL
61 | Вакансия:
62 | Front-end разработчик
63 | Резюме:
64 | Интересуюсь IT, геймдевом, музыкой, программированием, антропологией, физикой, нейробиологией.
65 | За плечами работа с 6 игровыми проектами, 5 из которых в роли геймдизайнера, 3 из которых я сопровождал от начала и до конца. Все три проекта на данный момент выпущены в Steam. Работал с Unreal Engine, Unity, C++, C#, Git.
66 | Вакансия:
67 | Middle/Senior Unreal Engine 5 Developer
68 | Резюме:
69 | Разработчик мобильных приложений
70 | Рассматриваю предложения только удаленной или проектной работы.
71 | - Разработка приложений для Android
72 | - Разработка интерфейсов для приложений Android
73 | - Разработка приложений с OpenGL
74 | - Создание игр на Unity3d
75 | - Разработка технических спецификаций
76 | - Анализ и инспекия кода
77 | - Разработка схем тестирования приложений
78 | Вакансия:
79 | Разработчик мобильных приложений
80 |
--------------------------------------------------------------------------------
/2024/requirements/ai/datasets/vakansii.txt:
--------------------------------------------------------------------------------
1 | Стажер программист микроконтроллеров (embedded-разработчик)
2 |
3 | Условия работы:
4 | ✅От 30 часов в неделю;
5 | ✅Формат работы смешанный;
6 | ✅Расположение офис метро Румянцево;
7 | ✅Заработная плата 60 000 рублей gross при работе ✅40 часов в неделю.
8 |
9 | Требования:
10 | 📎 Опыт на работе не требуется
11 | 📎 Знание bare-metal программирование STM32 на языке C;
12 | 📎 Знание принципов работы интерфейсов UART, I2C, SPI (хотя бы одного);
13 | 📎 Знание принципов работы ШИМ- и ПИД-регуляторов (желательно);
14 | 📎 Знание сборочных систем на базе Make (обязательно) и CMake (желательно).
15 | 📎 Знание языков программирования: C (обязательно), C++ (желательно).
16 | 📎 Знание алгоритмов и умение составлять блок-схемы (желательно).
17 | -------------------
18 | junior golang - разработчик
19 |
20 | Что от Вас требуется:
21 | ✅ стаж на работе не требуется
22 | ✅ опыт работы с backend
23 | ✅ знание языка Golang или желание на него перейти
24 | ✅ знакомство с git
25 | ✅ умение работать с базами данных (реляционными и документоориентированными)
26 |
27 | Большим плюсом будет
28 | ✅ умение во frontend (мы работаем с Angular 2+)
29 | ✅ опыт работы с брокерами очередей
30 |
31 | 📎ЗП от 60 000 руб (полный рабочий день), график обсуждается🤝
32 | -------------------
33 | ML специалист
34 | Если вы хотите развиваться в сфере IT и вы желаете стать частью коллектива, создающего лучшие продукты для наших клиентов, то мы будем рады вам в нашей команде.
35 |
36 | Обязанности:
37 |
38 | Строить/улучшать модели для разных частей всего пайплайна. Основные - модели для прогнозирования конверсии, для определения ставки и для поиска ближайших соседей;
39 | Заниматься полным циклом DS/ML задач;
40 | Участвовать в создании и развитии платформы ранжирования рекламы;
41 | Улучшать процесс построения моделей (от выдвижения гипотез до мониторинга работы модели).
42 |
43 | Требования:
44 |
45 | - Опыт работы – 1-3 года
46 | - Знание классического ML и современных Deep Learning подходов;
47 | - Уверенный опыт разработки на Python, в том числе знание библиотек pandas, numpy, sklearn, torch;
48 | - Умение принимать решения на основании данных и аргументировать свою позицию;
49 | - Понимание принципов распределенной обработки данных, опыт работы со Spark;
50 | - Умение выходить за рамки jupyter ноутбука и не боитесь писать продакшн-код (pytest, airflow).
51 |
52 | Будет плюсом:
53 |
54 | - Опыт решения задач ранжирования или RTB;
55 | - Опыт разработки на Go.
56 | -------------------
57 | Front-end разработчик
58 | В связи с ростом компании и открытием новых проектов приглашаем талантливых специалистов присоединиться к нашей команде.
59 | Ищем как состоявшихся специалистов, так и амбициозных junior разработчиков. Заработная плата обсуждается индивидуально.
60 |
61 | Готовы рассмотреть кандидатов с небольшим опыт от 1 года до 3 лет, а также без опыта, главное осилить тестовое задние.
62 |
63 | Вы научитесь :
64 |
65 | Работать с ExtJS 6
66 | Вести разработку в Git
67 | Разрабатывать функционально нагруженные интерфейсы ( таблицы, деревья )
68 | Искать разные пути решения задачи
69 |
70 | Обязанности:
71 |
72 | - Анализ задач и проектирование под них UI.
73 | - Анализ задачи как в паре с back-end разработчиком, так и отдельно.
74 | - Проектирование UI под требования бизнес процесса.
75 | - Разработка компонентов фронтенда системы по заданным спецификациям.
76 | - Анализ собственного и чужого кода.
77 |
78 | Требования:
79 |
80 | - Знание JavaScript.
81 | - Знание CSS.
82 | - Знание MVC/MVVM.
83 | - Готовность развиваться, изучать новые технологии.
84 | - Готовность изучать ExtJS.
85 | - Неконфликтность.
86 | - Ответственность.
87 | Плюсами будет:
88 |
89 | - Опыт работы с JavaScript-фреймворками (приоритет ExtJS).
90 | - Опыт работы с RPC/REST.
91 | - Опыт верстки.
92 | - Опыт разработки RIA, SPA приложений.
93 | - Опыт работы с VCS (git, mercurial и т.д.)
94 | -------------------
95 | Middle/Senior Unreal Engine 5 Developer
96 | Игры для нас — не просто развлечение, а образ жизни. Поэтому мы ищем в свою команду таких же увлеченных людей, готовых работать над проектом с полной отдачей и страстью. Мы верим, что можем изменить индустрию игр и принести в нее что-то новое.
97 |
98 | На данный момент мы в поисках Unreal Engine Developer (Middle/Senior), который вольется в наш дружный коллектив, состоящий из 8 профессионалов в различных областях, чтобы творить вместе с нами.
99 |
100 | Чем предстоит заниматься:
101 |
102 | Оптимизация существующих подсистем игры и UMG виджетов;
103 |
104 | Разработка комплексной Save-системы, работа с системой визуальных и механических стейтов с учётом их перехода между уровнями;
105 |
106 | Разработка новых механик и фич
107 |
108 | Перевод Blueprint-прототипов в C++ код;
109 |
110 | Ожидаем от кандидата:
111 | - Уверенные знания C++ и Blueprints;
112 | - Релевантный опыт работы в геймдев студии (Требуемый опыт работы: 3–6 лет);
113 | - Понимание архитектуры, инструментов и ограничений Unreal Engine 5;
114 | - Знание основных паттернов проектирования, структур данных, алгоритмов;
115 | - Опыт работы с системами контроля версий;
116 | - Портфолио (GitHub, видео на YouTube и т.д.);
117 | - Умение работать в команде, дружелюбный настрой и позитив в общении с коллегами;
118 | - Увлеченность, желание вносить вклад в общее дело.
119 |
120 |
121 | Плюсом будет участие в проектах, которые дошли до релиза, любовь к играм и общая насмотренность.
122 | -------------------
123 | Разработчик мобильных приложений
124 | Компания приглашает в свою команду активного, опытного разработчика мобильных приложений на Android и iOS.
125 |
126 | Обязанности:
127 |
128 | - Разработка и поддержка мобильных приложений на Android и iOS или бэкэнда;
129 |
130 | - Работа c API, создание бэкэнда и Фронтенда;
131 |
132 | - Оптимизация кода, улучшение производительности;
133 |
134 | - Участие в обсуждении и реализации идей, повышающих конкурентоспособность продукта.
135 |
136 | Требования:
137 | - Опыт работы 1-3 года
138 | - Опыт разработки мобильных приложений на Android и iOS
139 | - Опыт работы с backend и frontend
--------------------------------------------------------------------------------
/2024/requirements/ai/img/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/ai/img/.gitkeep
--------------------------------------------------------------------------------
/2024/requirements/ai/img/1350.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/ai/img/1350.jpg
--------------------------------------------------------------------------------
/2024/requirements/ai/img/200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/ai/img/200.png
--------------------------------------------------------------------------------
/2024/requirements/ai/img/8888.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/ai/img/8888.jpg
--------------------------------------------------------------------------------
/2024/requirements/ai/img/camerus1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/ai/img/camerus1.png
--------------------------------------------------------------------------------
/2024/requirements/ai/img/camerus2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/ai/img/camerus2.png
--------------------------------------------------------------------------------
/2024/requirements/ai/img/camerus3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/ai/img/camerus3.png
--------------------------------------------------------------------------------
/2024/requirements/ai/img/schema.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/ai/img/schema.png
--------------------------------------------------------------------------------
/2024/requirements/ai/img/standart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/ai/img/standart.png
--------------------------------------------------------------------------------
/2024/requirements/back/img/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/back/img/.gitkeep
--------------------------------------------------------------------------------
/2024/requirements/back/img/1350.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/back/img/1350.jpg
--------------------------------------------------------------------------------
/2024/requirements/back/img/200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/back/img/200.png
--------------------------------------------------------------------------------
/2024/requirements/back/img/8888.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/back/img/8888.jpg
--------------------------------------------------------------------------------
/2024/requirements/back/img/camerus1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/back/img/camerus1.png
--------------------------------------------------------------------------------
/2024/requirements/back/img/camerus2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/back/img/camerus2.png
--------------------------------------------------------------------------------
/2024/requirements/back/img/camerus3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/back/img/camerus3.png
--------------------------------------------------------------------------------
/2024/requirements/back/img/schema.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/back/img/schema.png
--------------------------------------------------------------------------------
/2024/requirements/back/img/standart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/back/img/standart.png
--------------------------------------------------------------------------------
/2024/requirements/design/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Product-Дизайн`
2 | ## Цель
3 | Требуется создать дизайн мобильного приложения или сайта на тему «Студенческая жизнь».
4 |
5 | ## Описание
6 | Тематика продукта, его итоговое название и наполнение — это пространство для вашей креативности. Не стесняйтесь предлагать как стандартные, так и уникальные идеи, касающиеся тематики, окончательного названия и содержания продукта.
7 |
8 | Дизайн-макеты должны отражать минимум один путь пользователя. Обязательно включите визуальное руководство (онбординг), чтобы обеспечить пользователей инструкциями по использованию приложения. Если возможно, попробуйте создать некоторые графические элементы, такие как иконки, иллюстрации или даже логотип, своими силами.
9 |
10 | ## Критерии
11 | * **Внешняя привлекательность**
12 | Ваш проект должен быть не только функциональным, но и привлекательным внешне. Приветствуется следование трендам, однако внешняя эстетичность не должна мешать функциональности.
13 | * **Следование дизайн-системам**
14 | Если вы выбрали мобильное приложение, стоит продумать под какую ОС вы будете проектировать. Вам могут помочь Material Design или Human Interface Guidelines. Если же вы делаете сайт, то, возможно, вы захотите следовать дизайн-системе Ant, Bootstrap или любой другой. В любом случае, навык следования дизайн-системам приветствуется.
15 | * **Понимание потребностей пользователя и предполагаемой целевой аудитории**
16 | * **Насмотренность**
17 | * **Умение генерировать контент — наполнение приложения**
18 | В контенте экранов нельзя использовать "рыбы"/шаблоны по типу Lorem Ipsum.
19 | * **Умение следовать порядку разработки дизайн-макетов (обязательно наличие wireframe и moodboard)**
20 | * **Навыки работы с специализированным прикладным ПО (Figma, Sketch, Adobe Illustrator, Adobe Photoshop…)**
21 | * **Количество экранов**
22 | Минимум 5-6+ характерных экранов для мобильного приложения или 2-3+ экранов для сайта.
23 |
24 | Для сдачи дизайна в Sketch или Adobe XD, просьба выложить файл на облачное хранилище и отправить в форму сдачи заданий ссылку на него.
25 |
26 | При сдаче дизайна в Figma просьба отправить ссылку на конкретный проект. Убедитесь, что доступ на чтение по ссылке включен.
27 |
--------------------------------------------------------------------------------
/2024/requirements/game-design/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Game Design`
2 | ## Игра с локальным мультиплеером
3 | ### Описание
4 | Продумайте идею игры со взаимодействием нескольких игроков на одном экране (можно со сплит скрином). Игра должна иметь соревновательный или кооперативный режим, а у игроков должна быть возможность взаимодействовать друг с другом. Количество игроков неограниченно, но вы должны учитывать возможности устройства ввода, чтобы всем было удобно играть.
5 |
6 | ### Требования к игре
7 | * Длительность игровой сессии 1-3 минуты
8 | * Сильное взаимодействие между игроками
9 | * Ожидаемые эмоции: азарт и веселье
10 | * Возможность реализовать проект за 3 месяца с одним программистом и одним художником (2Д или 3Д)
11 |
12 | ### Требования к решению
13 | * Концепт документ
14 |
15 | Разработайте концепт документ по своей идее. Он должен раскрывать особенности игры, её механики, правила, способ управления. Файл должен быть понятным и легко читаемым. Укажите референсы к другим играм, а также её USP. При необходимости укажите дополнительную информацию об игре.
16 | * Документы загружаются в git-репозиторий.
17 | * Видео ролик, в котором будет рассказ о вашей идеи, возможно демонстрация референсов или материалов по проекту.
18 |
19 | ### Критерии оценивания
20 | * Соответствие требованиям
21 | * Оформление концепт документа
22 | * Структура концепт документа
23 | * Информативность
24 | * Ёмкость
25 | * Лаконичность
26 | * Полнота описания проекта (затронуты все необходимые аспекты)
27 | * Цельность элементов игры
28 | * Сочетаемость элементов игры
29 | * Оригинальностей идеи
30 | * Интересность идеи
31 | * Интенсивность взаимодействия между игроками
32 |
33 |
34 |
--------------------------------------------------------------------------------
/2024/requirements/iot/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Internet of Things`
2 |
3 | ## Цель
4 |
5 | Необходимо создать устройство, которое может стать полезным атрибутом на любом рабочем столе.
6 | ## Описание
7 |
8 | У вас есть друг, у которого есть всё. Через месяц у него день рождения и перед вами встала задача придумать нужный и необычный подарок, который сможет его порадовать. Друг - техногик и вы решаете подарить ему самодельное устройство. Но насколько проработанное устройство вы успеете собрать за этот месяц?
9 | #### Уровень 1
10 | Устройство состоит из адресные светодиодов, датчика температуры и четырёхразрядного семисегментного индикатора. Устройство должно иметь возможность отображения времени, начальное значение которого может быть задано из кода, и температуры в помещении. Светодиодный модуль должен отображать различные события с помощью анимации. К примеру, понижение комфортной температуры или влажности.
11 | #### Уровень 2
12 | То же устройство, но добавляется взаимодействие с сетью. Устройство должно иметь возможность отображения времени, начальное значение которого бралось бы с API, погоды на улице и температуры в здании. Светодиодный модуль должен отображать различные события с помощью анимации.
13 | #### Уровень 3
14 | К разработанному устройству добавляется возможность управления светодиодным модулем и отслеживания температуры через удалённый интерфейс (Сайт, мобильное приложение, IoT-платформа)
15 |
16 | 
17 |
18 | ## Требования к решению задания
19 |
20 | 1. Git-репозиторий с кодом проекта и описанием в `README.md`
21 | 2. Схемы сборки устройста в графическом отображении
22 | 3. Видео демонстрации работы устройства и рассказ о проекте
23 |
24 | ## Критерии
25 |
26 | * **Уровень устройства и его работоспособность** - Задание какого уровня было реализовано, как устройство функционирует в различных ситуациях.
27 |
28 | * **Потери** - При разработке проекта не сожжён ни один модуль или микроконтроллер.
29 |
30 | * **Качество и продуманность кода** - Обращается внимания на то, как реализовываются взаимодействия с модулями, обрабатываются запросы к API, создаются анимации для светодиодов.
31 |
32 | * **Глубина проработки отдельных компонентов системы** - То, как выглядит отображение информации на дисплее, анимации на светодиодном модуле, интерфейс управления
33 | ## Материалы и оборудование
34 |
35 | Для выполнения данного задания вам потребуется специфичное оборудование. От микроконтроллеров до светодиодных модулей. Всё необходимое для выполнения задания вы сможете брать в Техноковоркинге. Для работы над проектом из дома можно использовать среды симуляции. К примеру, Tinkerkad.
36 |
37 | [Информацио о техноковоркинге](https://www.mirea.ru/education/megalaboratories/tekhnokovorking/)
38 |
39 | [Среда симуляции Tinkerkad](https://www.tinkercad.com)
40 |
--------------------------------------------------------------------------------
/2024/requirements/iot/img/IoT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/iot/img/IoT.png
--------------------------------------------------------------------------------
/2024/requirements/mobile/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Android-разработка`
2 |
3 | ## Цель
4 | Разработать приложение для работы с MapKit от Yandex
5 |
6 | ## Описание
7 | Кругу путешественников, которые посещают различные места по всему миру, захотелось отмечать на картах точки, где они побывали и делиться этими метками друг с другом. Разработайте приложение с необходимым функционалом, чтобы путешественникам было легче общаться и оценивать изысканность посещенных мест.
8 |
9 | Приложение делит функционал на доступный гостям и функционал доступный только зарегистрированным пользователям.
10 |
11 | # Функционал (гость)
12 | * Просмотр меток на картах/списком
13 | * Создание метки на карте как гость (без указания авторства)
14 | * Поиск меток по автору, словам в тексте
15 | * Сортировка поиска по алфавиту авторов, лайкам
16 | * Фильтрация меток только с/без картинки
17 | * Регистрация
18 | * Вход зарегистрированного пользователя без ввода логина и пароля
19 | * Подписка на уведомления о публикации новой метки автором. Если у пользователя будет отсутствовать соединение, отправить после его появления.
20 |
21 | # Функционал (зарегистрированный пользователь)
22 | * Весь функционал доступный гостю
23 | * Поставить/Убрать лайк у метки
24 | * Создание метки на карте с указанием авторства
25 | * Удаление созданной метки
26 | * Обеспечить работу всех функций приложения без подключения к интернету на основе полученных ранее данных
27 |
28 | Реализация собственных идей, не описанных в задании, поощряется. Но помните о том, что качество в данном случае важнее количества.
29 |
30 | ## Источники данных
31 | Для данного задания был разработан дополнительный сервис, предназначеный для хранения меток. Воспользуйтесь им.
32 | Swagger - [https://maps.rtuitlab.dev/docs](https://maps.rtuitlab.dev/docs)
33 |
34 | [MapKit от Yandex](https://yandex.ru/maps-api/products/mapkit)
35 |
36 | ## Критерии
37 |
38 | * Архитектура
39 |
40 | Важно обратить внимание на архитектуру разработываемого мобильного приложения, т.е. на набор правил кодовой базы, которые обеспечат максимальную [связность](https://ru.wikipedia.org/wiki/Связность_(программирование)) и минимальное [зацепление](https://ru.wikipedia.org/wiki/Зацепление_(программирование)) частей приложения. Важно придерживаться какой-то одной архитектуры приложения, выбор которой стоит обосновать в `README.md` репозитория с кодом.
41 |
42 | * Дизайн
43 |
44 | Используйте существующие гайдлайны дизайн-системы Android-приложений (Material Design). Если Вы решаете пользоваться другой дизайн-системой, она должна быть выверена и оптимизирована под использование на мобильном устройстве, а в `README.md` репозитория должна содержаться ссылка на её документацию.
45 |
46 | * Функциональность
47 |
48 | Ожидается наличие функций, дополняющих представленные в требованиях к выполнению заданий.
49 |
50 | * Внимание к деталям
51 |
52 | Разработка качественного приложения - это забота и о пользователе, и о разработчике. Первому должно быть очевидно, как пользоваться приложением, а у второго не должно возникнуть вопросов, как поддерживать приложение.
53 |
--------------------------------------------------------------------------------
/2024/requirements/robot/img/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/robot/img/.gitkeep
--------------------------------------------------------------------------------
/2024/requirements/robot/img/1350.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/robot/img/1350.jpg
--------------------------------------------------------------------------------
/2024/requirements/robot/img/200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/robot/img/200.png
--------------------------------------------------------------------------------
/2024/requirements/robot/img/8888.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/robot/img/8888.jpg
--------------------------------------------------------------------------------
/2024/requirements/robot/img/camerus1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/robot/img/camerus1.png
--------------------------------------------------------------------------------
/2024/requirements/robot/img/camerus2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/robot/img/camerus2.png
--------------------------------------------------------------------------------
/2024/requirements/robot/img/camerus3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/robot/img/camerus3.png
--------------------------------------------------------------------------------
/2024/requirements/robot/img/robotics/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/robot/img/robotics/1.jpg
--------------------------------------------------------------------------------
/2024/requirements/robot/img/robotics/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/robot/img/robotics/2.jpg
--------------------------------------------------------------------------------
/2024/requirements/robot/img/robotics/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/robot/img/robotics/3.jpg
--------------------------------------------------------------------------------
/2024/requirements/robot/img/robotics/4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/robot/img/robotics/4.jpg
--------------------------------------------------------------------------------
/2024/requirements/robot/img/schema.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/robot/img/schema.png
--------------------------------------------------------------------------------
/2024/requirements/robot/img/standart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/2024/requirements/robot/img/standart.png
--------------------------------------------------------------------------------
/2024/requirements/unity/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Unity`
2 |
3 | ## Цель
4 |
5 | В рамках тестового задания Вам предстоит реализовать игру в жанре Tower defense в дополненной реальности.
6 | ## Описание
7 |
8 | У вас есть друг, который любит жанр tower defence и игры в дополненной реальности. Перерыв все игровые площадки и не найдя игры, сочетающей в себе его интересы, он обратился к вам за помощью.\
9 | Тестовое задание сосотоит из уровней, каждый из которых подразумевает определенную стадию развития проекта. Чем больше уровней реализовано, тем, соответственно, больше баллов можно получить. Однако не стоит гнаться за колличеством в ущерб качеству. Качественно сделанные 3 уровня вполне могут обойти 5 уровней, сделанных тяп-ляп.\
10 | При выполнении тестового задания можно использовать любые свободные ассеты. В качестве AR плагина необходим использовать AR Foundation.
11 | #### Уровень 1 - прототип
12 | * Запуск игры через кнопку «старт» на главном экране;
13 | * Размещение локации на полу в дополненной реальности;
14 | * Спавн противников и их перемещение по маршруту;
15 | * Клетки, при нажатии на которые, появляется турель, стреляющая лазером по противникам;
16 | * Перезапуск игры при поражении.
17 | #### Уровень 2 - минимальная рабочая версия
18 | * Монетки, которые выпадают из противников;
19 | * Установка турели теперь стоит определенное количество монеток;
20 | * Башня турели вращается, следуя за противниками;
21 | * Возможность улучшать турель за монетки;
22 | * Постепенное увеличение здоровья и частоты появления противников;
23 | * Меню поражения со счетом (количество убитых противников).
24 | #### Уровень 3 - развитие проекта
25 | * Специальные умения игрока (например: фаербол, молния и т.д.). Умения наводятся при помощи камеры, перезаряжаются со временем;
26 | * Разные виды турелей, с различной механикой стрельбы (4 – 6 видов, чем разнообразнее и интереснее – тем лучше);
27 | * При переключении между противниками турель поворачивается некоторе время;
28 | * Различные уровни, меню уровней. Разблокировка уровней по мере прохождения предыдущих.
29 | * Игра должна стать проходимой (число врагов ограничено, если всех уничтожить – победа);
30 | * Поражение происходит не при первом прошедшем противнике, допустимо пропустить несколько противников, от количества прошедших врагов зависит количество звезд за уровни;
31 | * Сохранение прогресса прохождения уровней.
32 | #### Уровень 4 - развитие проекта
33 | * Эффекты клеточек, усиливающие находящиеся на них турели;
34 | * Продолжительные эффекты на противниках (например: заморозка, горение и т.д.);
35 | * Различные виды противников, имеющие разную скорость, здоровье и различную защиту от различных турелей;
36 | * Особый вид «турелей», которые не атакуют противников, а добывают кристаллики. В случае успешного прохождения уровня кристаллики сохраняются на балансе игрока;
37 | * Количество умений теперь ограничено, их необходимо покупать за кристаллики.
38 | #### Уровень 5 - финальная версия
39 | * Дерево прокачки, которое позволяет игроку покупать различные улучшения за кристаллики. Желательно, чтобы умения были интересными (не просто увеличение урона или скорострельности);
40 | * Баланс настроенный так, чтобы игру было невозможно пройти без улучшений и возможно с ними;
41 | * На этом этапе игра должна иметь вид готового, законченного продукта.
42 |
43 | ## Дополнительные задания
44 |
45 | Также в дополнение к уровням предлагаются долнительные задания. За них можно получит доп баллы.
46 | * Мультиплеер. А что, если хочется поиграть с другом? В этом дополнительном заданиии предлагается реализовать многопользовательский режим. Игроки должны управлять обороной одного уровня. Для реализации мультиплеера использовать только open-source решения.
47 | * Процедурная генерация. Кончились уровни – не беда. В этом дополнительном заданиии предлагается сделать бесконечные уровни, генерируя их процедурно.
48 | * Красота и звук. Если получается в sfx и vfx, то эти навыки будут плюсом. В этом дополнительном заданиии предлагается проработать визуальную и звуковую составляющую игры. Например, локация может меняться визуально при приближении противников к концу их маршрута и многое другое.
49 |
50 | ## Критерии
51 | Итоговая оценка проекта будет осуществляться исходя из критериев оценивания:
52 | 1. Выполненные уровни: 5-25
53 | 1. Работа с пользовательским интерфейсом:0-10
54 | 1. Применение технологий дополненной реальности: 0-10
55 | 1. Реализация противников: 0-10
56 | 1. Реализация и сложность турелей: 0-15
57 | 1. Реализация модификаций для турелей: 0-5
58 | 1. Реализация умений: 0-5
59 | 1. Реализация и сложность прокачки: 0-15
60 | 1. Сохранение прогресса: 0-5
61 | 1. Структура проекта: 0-5
62 | 1. Понятность и читаемость кода: 0-40
63 | 1. Выполнение дополнительных заданий: 0-20
64 |
65 | ## Полезные материалы
66 |
67 | [Трекинг поверхностей в дополненной реальности](https://www.youtube.com/watch?v=lYDfV-GaKQA&t=494s&ab_channel=samyam)\
68 | [Ассеты](https://kenney.nl/assets) (можно взять отсюда, можно поискать что-нибудь дргуое)
69 |
--------------------------------------------------------------------------------
/2024/requirements/unreal-engine/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Unreal Engine 5`
2 |
3 | ## Цель
4 | Выполнить одно из трех тестовых заданий(по выбору): VR игру в жанре головоломок; хоррор игра с использованием технологии Lumen; Сетевой шутер по локальной сети.
5 |
6 | ## Описание
7 | ### Описание первого варианта задания
8 | Представьте ситуацию, когда ваш друг купил себе новые VR очки и его любимый жанр игр - головоломки. Ваша задача - создать игру с интересными головоломками. Их реализация ограничивается лишь вашим воображением.
9 |
10 | ### Описание второго варианта задания
11 | Ваш друг - большой фанат хоррор игр, и он посмотрел все фильмы и прошел все игры в этом жанре. Ваша задача - создать игру в жанре хоррор с использованием технологии Lumen.
12 |
13 | ### Описание третьего варианта задания
14 | От вас требуется реализовать на движке Unreal Engine 5 игру в жанре шутера для двух и более человек.
15 | ### Общая информация
16 |
17 | #### Требования
18 | * Сеттинг, визуальный стиль - на ваш выбор.
19 | * Проект должен быть выполнен на движке Unreal Engine версии 5.0 и выше.
20 | * Все использованные ассеты должны быть на момент подачи заявки бесплатными.
21 | * Проект должен иметь готовый билд shipping конфигурации, чтобы можно было протестировать игру без использования UE.
22 | * В конечном результате проект должен иметь: билд, ссылку на скачивание исходников, ГДД(при наличии), видео с демонстрацией проекта.
23 | * Проект может быть реализован как на С++, так и на BP.
24 | * Ограничений по плагинам нет.
25 |
26 | #### Критерии
27 | * Реализация основного задания
28 |
29 | Будет оцениваться, насколько хорошо реализована основная особенность проекта(VR/Lumen/Сетевая архитектура).
30 |
31 | * Реализация дополнительных механик
32 |
33 | Отдельно будут оцениваться другие механики проекта(интеракция с объектами/стрельба/головоломки).
34 |
35 | * Интерес геймплея
36 |
37 | Насколько хорошо все механики выглядят в связке друг с другом.
38 |
39 | * Целостность проекта
40 |
41 | Будет оцениваться общий вид игры: связь сеттинга с жанром, выбранный визуальный стиль и его реализация.
42 |
43 | * Качество кода
44 |
45 | Читаемость кода/блюпринтов, эффективность, логичность, оптимизация.
46 |
47 | * Отдельные "бонусные" параметры
48 |
49 | Использован ли VFX(Niagara/cascade), сюжет, конец игры, сохранение игры.
50 |
51 |
52 | ### Вспомогательные ссылки
53 | * https://www.unrealengine.com/marketplace/en-US/store
54 | * https://sketchfab.com/feed
55 | * https://docs.unrealengine.com
56 |
57 | ### Референсы
58 | #### Первое задание
59 | * The Room VR: A Dark Matte
60 | * I Expect You To Die
61 | * A Rogue Escape
62 | #### Второе задание
63 | * Layers of fear
64 | * Blair witch
65 | * Серия Amnesia
66 | #### Третье задание
67 | * The day before
68 | * RIPOUT
69 | * Remnant 2
70 |
71 | ### Важные пометки
72 | * Сеттинг, концепт - исключительно ваш выбор. При большом желании, в шутере вы можете сделать аналог портала.
73 | * Варианты тестовых можно комбинировать. Никто не запрещает сделать VR хоррор.
74 | * Ограничений по плагинам и используемым технологиям нет.
75 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Набор в лабораторию 2025
2 |
3 | Чтобы стать сотрудником лаборатории, необходимо выполнить тестовое задание. На основании вашего решения будет проведен отбор, по результатам которого лучшие из лучших получат оффер.
4 |
5 | ## Общая информация
6 |
7 | В этом году задания разных направлений имеют как чётко прописанные уровни сложности, так и общее описание темы. Внимательно прочитайте условия перед началом выполнения. Будет приниматься во внимание ваша осведомленность о способах решения задачи, ответственность в подходе к организации решения и, конечно, креативный подход.
8 |
9 | ## Направления набора
10 |
11 | * Разработка игр на Unity ([подробно](requirements/unity/README.md))
12 | * Разработка игр на Unreal Engine ([подробно](requirements/unreal-engine/README.md))
13 | * 3D-моделирование ([подробно](requirements/3d/README.md))
14 | * Backend ([подробно](requirements/back/README.md))
15 | * Frontend ([подробно](requirements/front/README.md))
16 | * Мобильная разработка на Android ([подробно](requirements/mobile/README.md))
17 | * Дизайн цифровых продуктов ([подробно](requirements/design/README.md))
18 | * Интернет вещей ([подробно](requirements/iot/README.md))
19 | * Робототехника ([подробно](requirements/robot/README.md))
20 | * Машинное обучение ([подробно](requirements/ai/README.md))
21 | * Разработка на C++ ([подробно](requirements/c++/README.md))
22 | * ИТ-инфраструктура ([подробно](requirements/it-infrastructure/README.md))
23 | * Социальные сети и SMM ([подробно](requirements/smm/README.md))
24 | * Квантовые вычисления ([подробно](requirements/quantum/README.md))
25 |
26 |
27 |
28 | Если у вас возникнут вопросы относительно формулировок и понимания заданий, обратитесь в [чат](https://t.me/rtuitlab_2025_enrollment), чтобы остальные участники могли увидеть ответы на популярные вопросы. Основная информация и объявления по набору также будут публиковаться в том же чате.
29 |
30 | В течение времени набора допускаются корректировки, проясняющие задания, но не меняющие их суть. Чтобы быть в курсе событий, советуем вам нажать кнопку `Watch` и выбрать `All Activity` на странице этого репозитория.
31 |
32 | Если у вас появится вопрос, который не хочется афишировать, вы всегда можете обратиться в [личные сообщения RTUITLab](https://vk.com/rtuitlab).
33 |
34 | ## Материально-техническая база для реализации тестового задания
35 | В этом году соискателям также доступны мощности [Проектной зоны Центра молодежного техно-коворкинга РТУ МИРЭА](https://vk.com/rtu_tc). В нем можно собраться командой и/или применить интересные для вас технологии в реализации вступительного испытания
36 |
37 | ## Форма отправки
38 | Форма для отправки решений: [ссылка](https://forms.yandex.ru/u/67a5fcc402848fc0e223482a/).
39 |
40 | ## Порядок сдачи работ по направлениям
41 |
42 | ### Общее
43 | 1. Задания по направлениям выполняются в индивидуальном порядке.
44 | 3. Демонстрация вашего проекта
45 |
46 | Вместе с решением тестового задания необходимо приложить видео ролик длиной от 5 до 15 минут. Данный пункт является обязательным для возможности оперативного ознакомления с решением, которое вы создали. Формат записи видео при необходимости конкретизируется в соответствующих разделах. [OBS](https://obsproject.com/) вам в помощь 😊.
47 |
48 |
49 | ### `Backend`, `Frontend`, `GameDev`, `Мобильная разработка`, `ML`, `C++`
50 | #### **GIT**
51 |
52 | Все проекты в **обязательном** порядке сдаются в виде git-репозиториев. Можете разместить его на любом удобном вам ресурсе: GitHub, GitLab, Bitbucket и так далее. Если вы решите сделать репозиторий приватным - от вас будет требоваться оперативное предоставление доступа на чтение сотрудникам из лаборатории для проверки решения.
53 |
54 | Важно:
55 | * README
56 |
57 | В корне репозитория **ОБЯЗАТЕЛЬНО** должен находиться файл `README.md`, в котором имеются следующие пункты:
58 | * Название проекта
59 | * Описание - суть, идея, замысел
60 | * Скриншоты проекта (за исключением backend)
61 | * Подробная инструкция по запуску: какие SDK нужны, на какой ОС можно запустить и все необходимое для самостоятельного запуска вашего проекта из исходного кода
62 | * Коммиты
63 |
64 | Сообщения к коммитам должны быть читаемыми и понятными. Крайне *желательно* писать их на английском языке. Не стоит заливать весь проект единственным коммитом, лучше постепенно наращивать функционал. Это позволит и вам при необходимости откатиться к предыдущей версии, и сотрудникам лаборатории проследить ход ваших мыслей при проверке.
65 |
66 | #### **Качество кода**
67 |
68 | При проверке любого решения будет уделяться внимание качеству написанного кода. Старайтесь избегать устаревших практик, копипаста, забытых ненужных файлов. Оставляйте только то, что относится к проекту и необходимо для его работы (разработки). Пишите комментарии, если считаете необходимым.
69 |
70 | ### `3D-моделирование`, `Интернет вещей`, `Робототехника`, `Дизайн`, `SMM`
71 | Подробные критерии описаны в соответствующих разделах.
72 |
73 | ## Материалы прошлых лет
74 |
75 | * [Набор 2024 года](2024)
76 | * [Набор 2023 года](2023)
77 | * [Набор 2022 года](2022)
78 | * [Набор 2021 года](2021)
79 | * [Набор 2020 года](2020)
80 |
--------------------------------------------------------------------------------
/requirements/3d/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `3D моделирование`
2 | Необходимо создать 3D модель маскота института информационных технологий (панда) и выполнить рендер анимации двух действий: приветсвие и одобрение.
3 |
4 | # Рекомендуемые этапы работы
5 | 1. Изучить референсы;
6 | 2. Выполнить драфт модели;
7 | 3. Создать high-poly модель;
8 | 4. Создать low-poly модель;
9 | 5. Оформить проект, логично назвать модели;
10 | 6. UV развёртка модели;
11 | 7. Запечь текстуры для модели;
12 | 8. Создать текстуры модели;
13 | 9. Создать анимацию приветсвия и одобрения;
14 | 10. Выполнить рендер анимаций;
15 | 11. Оформить проект, логично назвать модели, текстуры и рабочие файлы.
16 |
17 | # Критерии оценивания работ
18 | 1. Качество выполненных low-poly и high-poly моделей (20 баллов);
19 | 2. Качество UV-развертки (15 баллов);
20 | 3. Качество текстур (15 баллов);
21 | 4. Анимация (20 баллов);
22 | 5. Грамотность оформления проекта и логичность названия моделей (15 баллов);
23 | 6. Общее впечатление о работе (15 баллов).
24 |
25 | # Как отправить работу на проверку
26 | Необходимо прислать ссылку на архив со следующим содержанием:
27 | 1. Рабочие файлы (.blend, .max, .spp и тд);
28 | 2. Файл low-poly модели в формате .fbx, настроенный для импорта в Unity;
29 | 3. Пакет необходимых текстур (BaseColor, Normal, AO, и др) в формате .png, с разрешением 2048х2048 px;
30 | 4. 1-2 рендера модели 1920х1080 px в формате .png;
31 | 5. Видеозапись анимаций.
32 |
33 | # Шкала оценок
34 | 80-100 баллов - отлично
35 | 60-79 баллов - хорошо
36 | 40-59 баллов - удовлетворительно
37 | 20-39 баллов – неудовлетворительно
38 |
39 | Задание составлено так, чтобы каждый участник смог показать свои сильные стороны в процессе выполнения задания. Лаборатория не требует обучения новым техникам и способам создания той или иной геометрии при выполнении данного задания (т.е. желательно выполнить все пункты задания, но необязательно). Однако способность учиться новому является большим плюсом.
40 | Первостепенная цель тестового задания - определить набор полезных навыков кандидата, способов его подхода к решению поставленной задачи, а также ознакомление с рабочими процессами внутри лаборатории.
41 |
42 | # Референсы
43 | 1. [Панда](https://drive.google.com/file/d/16HQGS5vmskjmlC2ySiwCSAMKY-QPjPg1/view?usp=sharing) (желаемый результат в центре)
44 | 2. Анимации приветствия и одобрения необходимо выбрать самостоятельно.
45 |
46 | # Результат
47 | Данное задание позволит выявить множество навыков у студентов 1-2 курса института информационных технологий РТУ МИРЭА, в том числе:
48 | 1. Уровень владения программами для создания 3D-моделей.
49 | 2. Умение создавать low-poly и high-poly модели, что является важным навыком для создания 3D-моделей разной сложности и функциональности.
50 | 3. Навыки создания UV-развертки, что необходимо для правильного размещения текстур на поверхности модели.
51 | 4. Умение запекать текстуры (Normal, AO и т.д.), что позволяет ускорить работу с текстурами и облегчить процесс рендеринга.
52 | 5. Навыки грамотного оформления проекта, логичного называния моделей и правильного экспорта, что упрощает взаимодействие с другими членами команды и совместную работу над проектами.
53 | 6. Способность учиться новому.
--------------------------------------------------------------------------------
/requirements/ai/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Искусственный интеллект`
2 |
3 | ## Цель
4 | Выполнить базовое задание на кластеризацию, а также одно из двух заданий по выбору: прототип голосового помощника или модель компьютерного зрения (либо оба).
5 | ## Базовое задание
6 | ### Описание
7 | Нейрокомпьютерные интерфейсы — системы анализа электроэнцефалограммы (ЭЭГ) в реальном времени, позволяющих управлять компьютером или роботизированными системами без помощи мышц. Это один из самых передовых методов взаимодействия человека и техники.
8 |
9 | Одним из ключевых подходов является анализ ритмической активности мозга. Например, известно, что альфа-ритм усиливается в состоянии расслабления и ослабевает при напряжении. Это свойство можно использовать для управления устройствами: при регистрации увеличения мощности сигнала в диапазоне около 10 Гц можно, например, активировать определенную команду. Коммерческие устройства используют этот принцип, но страдают от шумов и артефактов, что снижает точность. Другой метод — интерфейсы, основанные на представлении движений, которые находят применение в реабилитации.
10 |
11 | Применение данных интерфейсов и возможностей машинного обучения позволяют создавать инновационные способы взаимодействия человека с техникой, в особенности доступности управления для людей с ограниченными возможностями.
12 |
13 | Вам требуется проанализировать данные ЭЭГ, провести их кластеризацию и сделать выводы.
14 |
15 | ### Реализация
16 |
17 | В рамках данного задания необходимо:
18 |
19 | - Провести кластерный анализ данных ЭЭГ;
20 | - Подготовить данные (очистка, нормализация, выделение ключевых признаков);
21 | - Применить методы кластеризации;
22 | - Визуализировать результаты и провести интерпретацию кластеров;
23 | - Привести выводы по результатам кластеризации.
24 |
25 | Ограничения: использование только базовых пакетов Python, Sklearn, Pandas и библиотек для визуализации данных
26 | ### Формат результата
27 |
28 | Результат должен представлять из себя Jupyter Notebook (.ipynb) с кодом выполнения, визуализацией и выводами о проделанной работе.
29 |
30 | ### Критерии
31 | - Используемые метрики
32 |
33 | silhouette_score и davies_bouldin_score из Sklearn.
34 | Семантический смысл исходных данных
35 |
36 | * Работа с данными и полученные выводы
37 |
38 | Отдельно будет оцениваться работа с данными: анализ, предобработка и т.д, а также сделанные выводы по результатам кластеризации.
39 | * Качество кода
40 |
41 | Читаемость кода, эффективность, логичность.
42 |
43 | ### Данные
44 |
45 | В представленом датасете находятся данные записи показаний нейросетевого интерфейса одного субъекта, который играл в разножанровые игры. Общая продолжительность записи 15 минут.
46 | [Датасет](https://disk.yandex.com/d/3Qtf6uY4W1Jzvg)
47 |
48 | ## Прототип голосового ассистента "Вика"
49 | ### Описание
50 | Голосовые ассистенты становятся неотъемлемой частью современных технологий, позволяя пользователям взаимодействовать с устройствами с помощью естественного языка. В рамках этого задания необходимо разработать прототип ассистента «Вика», главной задачей которого является активация из спящего режима по имени, аналогично тому, как это реализовано в «Алисе» или «Siri».
51 |
52 | Дополнительный функционал может быть реализован на усмотрение разработчика, без ограничений по используемым технологиям.
53 | ### Реализация
54 | В рамках задания необходимо:
55 |
56 | - Реализовать механизм активации ассистента по ключевому слову «Вика»;
57 | - Обеспечить корректное функционирование в фоновом режиме;
58 | - Реализовать дополнительный функционал (по выбору разработчика).
59 |
60 |
61 | ### Формат результата
62 | Необходимо представить:
63 | * Исходный код для самой системы, чтобы можно было оценить код;
64 | * Код обучения модели/моделей;
65 | * Скринкаст использования системы
66 | Запуск системы не должен быть сложным. Необходимо предоставить пошаговую инструкцию для запуска, например, "установить зависимости Python из файла requirements.txt и запустить файл main.py".
67 | ### Технологии
68 | Ограничений по используемым технологиям нет, допускается использование любых инструментов для реализации задачи (кроме использования API больших моделей, по типу DeepSeek и ChatGPT).
69 | ### Критерии
70 | * Качественное распознавания обращения к системе
71 | * Качество кода
72 |
73 | Читаемость кода, эффективность, логичность.
74 | * Архитектура системы
75 |
76 | Оценка всей архитектуры работы системы
77 | * Оценка дополнительного функционала
78 |
79 | Разнообразие и качество реализованного дополнительного функционала системы
80 |
81 | **Важно!!** Главная задача реализовать распознавание обращения к системе
82 |
83 | ## Модель распознавания компьютерных комплектующих
84 | ### Описание
85 | В последние годы технологии дополненной реальности (AR) активно развиваются, предлагая пользователям новый уровень взаимодействия с цифровым миром. Одним из перспективных направлений является применение AR для диагностики и ремонта компьютерного оборудования.
86 |
87 | В рамках данного задания необходимо разработать легковесную модель, способную в режиме реального времени детектировать и выделять определённые места на материнской плате и распознавать комплектующие для дальнейшего использования AR-очков совместно со смартфоном под управлением Android.
88 |
89 | ### Реализация
90 | В рамках задания необходимо:
91 |
92 | * Разработать модель машинного зрения, способную распознавать ключевые элементы материнской платы;
93 |
94 | * Реализовать систему детекции и классификации комплектующих на изображении в режиме реального времени.
95 |
96 | **Важно!** Не требуется реализовывать систему для запуска на смартфоне
97 | **Обязательно** Разработать функционал для тестирования программы в виде консольного приложения, которое принимает на вход путь до видеофайла и выводит его обработанную версию (с выделением требуемых комплектующих и метками классов)
98 |
99 | ### Формат результата
100 | Необходимо представить:
101 | * Исходный код для самой системы, чтобы можно было оценить код;
102 | * Код обучения модели/моделей;
103 | * Веса модели/моделей;
104 | Запуск системы не должен быть сложным. Необходимо предоставить пошаговую инструкцию для запуска, например, "установить зависимости Python из файла requirements.txt и запустить файл main.py".
105 | ### Технологии
106 | Ограничений по используемым технологиям нет, допускается использование любых инструментов для реализации задачи.
107 | ### Критерии
108 | * Точность работы системы
109 |
110 | Будет оцениваться качество детекции и классификации модели
111 | * Качество кода
112 |
113 | Читаемость кода, эффективность, логичность.
114 | * Архитектура системы
115 |
116 | Оценка всей архитектуры работы системы
117 | * Подготовка данных
118 |
119 | Сбор, разметка, анализ, чистка, предобработка данных
120 |
121 | * Характеристики используемых моделей
122 |
123 | Количество гиперпараметров и требуемые системные характеристики для работы системы.
124 |
125 | ### Данные
126 | В представленном датасете находятся размеченные фотографии целевой платы и комплектующих. При необходимости можно провести переразметку или перебалансировку train/test. Также приложен видеофайл для проверки эффективности приложения.
127 | [Датасет](https://disk.yandex.com/d/3Qtf6uY4W1Jzvg)
--------------------------------------------------------------------------------
/requirements/back/README.md:
--------------------------------------------------------------------------------
1 | # Задание по направлению `backend`
2 |
3 | ## Введение
4 | Впереди нас ждет новый семестр, а с ним и новое расписание.
5 | Как мы знаем, оно бывает не идеальным и может содержать некоторые "неудобства" для студентов и сотрудников.
6 | Например слишком большие окна или необходимость добежать из физкультурного комплекса до билбиотеки за 10 минут перемены.
7 |
8 | ## Задание
9 |
10 | Ваша задача - написать сервис, который будет искать такие неудачные места и выдавать информацию о них.
11 | Задание будет поделено на уровни, на каждом из которых вы будете создавать все более и более совершенную версию сервиса.
12 |
13 | ### Уровень 1
14 | На первом уровне вам будет необходимо разработать сам метод поиска таких мест и обернуть его в api. Также тут нужно будет разобраться с упаковкой вашего сервиса в docker, чтобы его можно было удобно запускать через docker compose файл.
15 |
16 | Требования:
17 | * Методы поиска "неудобств" в расписание. Нужно сделать обработку 2-ух - 3-ех типов подобных "узких мест", тут больше не значит лучше.
18 | * API для получения доступа к этим методам. Ручки должны принимать необязательный query параметр для фильтрации по названию группы / ФИО преподавателя, смотря кого этот метод исследует.
19 | * Сборка в docker образ, загрузка его на публичный dockerhub, создание docker-compose файла.
20 |
21 | ### Уровень 2
22 | Данные нужно уметь не только получать, но и хранить. На втором уровне вам предстоит сохранять результаты поиска "неудобств" в реляционную базу данных. Мы прекрасно понимаем, что в данном конкретном случае может быть сильно удобнее хранить информацию, используя формат jsonb (postgresql) или его аналоги в других субд, но в рамках тестового задания мы хотели бы увидеть ваши навыки работы с реляционными базами данных, так что ваша база данных должна находиться хотя-бы в первой нормальной форме.
23 |
24 | Требования:
25 | * В сервисе реализовать background работу, которая применяет разработанные вами методы к расписанию и сохраняет результаты работы в БД. Она должна запускаться при запуске сервиса, а также по определнному расписанию.
26 | * Результаты по запросу теперь получаются из имеющейся у вас БД, а не собираются по новой.
27 | * В качестве БД хотелось бы видеть СУБД серверного типа развертывания (не sqlite), в идеале - postgresql.
28 |
29 | ### Уровень 3
30 | Явное приемущество подхода с хранением данных в БД - почти моментальный ответ сервера, а главный недостаток - неактуальность данных. На этом этапе вам предстоит вернуть возможность получать актуальной состояние, как на уровне 1, но с некоторым усложнением. Как вы могли заметить запрос без фильтра по названию может выполняться долго, а иногда и прям очень долго. За такое время клиент вполне может отвалиться по таймауту. На современных ml-ных хакатонах такая проблема встает особенно остро, ибо какое-нибудь видео ml может жевать чуть-ли не несколько минут. Для того, чтобы решить эту проблему, применяется следующий подход: клиент на запрос данных не ждет полной обработки, а сразу получает некий идентификатор запроса, с которым в последствии раз в разумный промежуток времени ходит в сервис. Сервис же в это время запускает на фоне выполнение этого запроса и на вопрос клиента отдает статусы этого запроса: сначала идет статус в процессе, потом уже готово, с самим ответом.
31 | * Реализовать вышеописанный алгоритм.
32 |
33 | ## Комментарий к заданию
34 | При прочтении задания у вас мог возникнуть вопрос: "Откуда же брать расписание?". В целом, вы сами вправе выбирать источник данных, однако мы рекомендуем использовать api `https://schedule-of.mirea.ru` для получения расписания. Программисты на C# могут воспользоваться готовой [библиотекой](https://github.com/rtu-tc/RTU-TC.RTUScheduleClient).
35 |
36 | ## Дополнительные задания
37 | Если это задание показалась вам слишком простым и не позволяет в полной мере показать свео мастерство, то предлагаем вам несколько дополнительных заданий.
38 |
39 | ### Поиск отличий
40 | В этом доп задании вам предлагается модифицировать свой сервис, чтобы он хранил не только последнее состояние, но историю изменения расписаний со временем и позволял наблюдать за улучшениями.
41 |
42 | ### Настройка параллельности
43 | В этом доп задании вам предлагается модифицировать процесс "долгих запросов", разработанный на уровне 3. Нужно сделать так, чтобы сервис мог одновременно обрабатывать только один запрос, а остальные становились в очередь на ожидание. Клиентам соответственно по id такого запроса будет отдаваться статус "в очереди". В случае получения двух и более одинаковых запросов следует отдавать им один идентификатор, чтобы не выполнять одну и ту же операцию дважды.
--------------------------------------------------------------------------------
/requirements/c++/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `разработка на Qt под ОС Аврора`
2 |
3 | ## Цель
4 | Разработать приложение для работы с картами от Yandex, либо аналогичными сервисами
5 |
6 | ## Описание
7 | Кругу путешественников, которые посещают различные места по всему миру, захотелось отмечать на картах точки, где они побывали и делиться этими метками друг с другом. Разработайте приложение с необходимым функционалом, чтобы путешественникам было легче общаться и оценивать изысканность посещенных мест.
8 |
9 | Приложение делит функционал на доступный гостям и функционал доступный только зарегистрированным пользователям.
10 |
11 | # Функционал (гость)
12 | * Просмотр меток на картах/списком
13 | * Создание метки на карте как гость (без указания авторства)
14 | * Поиск меток по автору, словам в тексте
15 | * Сортировка поиска по алфавиту авторов, лайкам
16 | * Фильтрация меток только с/без картинки
17 | * Регистрация
18 | * Вход зарегистрированного пользователя без ввода логина и пароля
19 | * Подписка на уведомления о публикации новой метки автором. Если у пользователя будет отсутствовать соединение, отправить после его появления.
20 |
21 | # Функционал (зарегистрированный пользователь)
22 | * Весь функционал доступный гостю
23 | * Поставить/Убрать лайк у метки
24 | * Создание метки на карте с указанием авторства
25 | * Удаление созданной метки
26 | * Обеспечить работу всех функций приложения без подключения к интернету на основе полученных ранее данных
27 |
28 | Реализация собственных идей, не описанных в задании, поощряется. Но помните о том, что качество в данном случае важнее количества.
29 |
30 | ## Источники данных
31 | Для данного задания был разработан дополнительный сервис, предназначеный для хранения меток. Воспользуйтесь им.
32 | Swagger - [https://maps.rtuitlab.dev/docs](https://maps.rtuitlab.dev/docs)
33 | [MapKit от Yandex](https://yandex.ru/maps-api/products/mapkit)
34 | [Mfw карты](https://developer.auroraos.ru/doc/5.1.3/extended/mfw)
35 | [Получение геопозиции устройства с ОС Аврора](https://developer.auroraos.ru/doc/5.1.3/software_development/guides/positioning)
36 |
37 | ## Критерии
38 |
39 | * Архитектура
40 |
41 | Важно обратить внимание на архитектуру разработываемого мобильного приложения, т.е. на набор правил кодовой базы, которые обеспечат максимальную [связность](https://ru.wikipedia.org/wiki/Связность_(программирование)) и минимальное [зацепление](https://ru.wikipedia.org/wiki/Зацепление_(программирование)) частей приложения. Важно придерживаться какой-то одной архитектуры приложения, выбор которой стоит обосновать в `README.md` репозитория с кодом.
42 |
43 | * Дизайн
44 |
45 | Используйте существующие гайдлайны [дизайн-системы Аврора-приложений](https://developer.auroraos.ru/doc/5.1.1/ui_kit). Если Вы решаете пользоваться другой дизайн-системой, она должна быть выверена и оптимизирована под использование на мобильном устройстве, а в `README.md` репозитория должна содержаться ссылка на её документацию.
46 |
47 | * Функциональность
48 |
49 | Ожидается наличие функций, дополняющих представленные в требованиях к выполнению заданий.
50 |
51 | * Внимание к деталям
52 |
53 | Разработка качественного приложения - это забота и о пользователе, и о разработчике. Первому должно быть очевидно, как пользоваться приложением, а у второго не должно возникнуть вопросов, как поддерживать приложение.
--------------------------------------------------------------------------------
/requirements/design/README.md:
--------------------------------------------------------------------------------
1 | # Тестовое задание для направления `Дизайн цифровых продуктов`
2 | ### Цель
3 | Создать цифровой продукт на тему «Спорт или спортивная жизнь».
4 |
5 |
6 | ### Описание
7 | Ваша задача состоит в том, чтобы создать приложение на спортивную тематику. Это может быть мобильное приложение на IOS или Android, веб-приложение или приложение для смарт-часов. Функционал и область применения приложения остается на ваш выбор, здесь фантазия никак не ограничивается.
8 |
9 |
10 | ### Требования
11 | * **Создать 5-6+ экранов мобильного приложения, либо 2-3+ экрана веб-приложения, либо 6-7+ экранов для приложения на смарт-часы**
12 | * **Показать как минимум один пользовательский сценарий.**
13 | * **Включить краткое визуальное руководство (онбординг).**
14 | * **Действовать в соответствие с дизайн-процессом (double diamond, reverse double diamond, design thinking и т.п.)**
15 | * **Обязательно наличие moodboard и wireframe’ов.**
16 |
17 |
18 | ### Критерии
19 | * **Внешняя привлекательность**
20 | Ваш проект должен быть не только функциональным, но и привлекательным внешне. Приветствуется следование гайдлайнам и трендам, однако внешняя эстетичность не должна мешать функциональности.
21 |
22 | * **Количество экранов**
23 | Не стоит ограничиваться тем количеством экранов, которое было указано. Чем больше экранов вам удастся сделать, тем больше будут ваши шансы. Главное, чтобы приложение не теряло свое удобство и функциональность.
24 |
25 | * **Умение генерировать контент**
26 | Большое разнообразие контента и развитая насмотренность являются важным навыком. В контенте экранов нельзя использовать "рыбы"/шаблоны по типу Lorem Ipsum.
27 |
28 | * **Навыки работы с прикладным ПО (Figma, Sketch, Illustrator, Photoshop, XD, Spline)**
29 | Знание современных инструментов, технологий и практик является важным критерием для оценки эффективности дизайнера.
30 |
31 | * **Понимание контекста и потребностей пользователя**
32 | Вы должны провести исследование (гипотетическое или реальное) и сделать анализ результатов, чтобы объяснить и показать, как и почему вы пришли к данному решению.
33 |
34 |
35 | ### Дополнительные критерии
36 | * **Следование дизайн-системам**
37 | Если вы выбрали мобильное приложение, стоит продумать под какую ОС вы будете проектировать. Вам могут помочь Material Design или Human Interface Guidelines. Если же вы делаете сайт, то, возможно, вы захотите следовать дизайн-системе Ant, Bootstrap или любой другой. В любом случае, навык следования дизайн-системам приветствуется.
38 |
39 | * **Создание собственных иллюстраций и иконок**
40 | Умение создать и нарисовать иконки и иллюстрации собственными руками будет большим плюсом.
41 |
42 | * **Плавные и нативные анимации**
43 | Навык создания хороших и плавных анимаций будет приветствоваться.
44 |
45 | * **Создание 3D графики**
46 | Если вы умеете создавать 3D объекты, это будет большим преимуществом.
47 |
48 | * **Наличие дизайн-документа или описания приложения и его функционала**
49 | Создание такого документа упростит понимание вашей работы и объяснит ваши мысли и мотивацию.
50 |
51 | * **Знание и умение работы с компонентами и токенами**
52 | Если вы решите не использовать готовые дизайн-системы, то будет большим преимуществом показать, что вы понимаете как работать с компонентами, вариантами, пропсами и токенами.
53 |
54 | * **Грамотное оформление макетов для передачи разработчику**
55 | Правильное оформление рабочего пространства и макетов помогает разработчику лучше ориентироваться в файле и ускорить разработку.
56 |
57 |
58 | Для сдачи дизайна в Sketch или Adobe XD, просьба выложить файл на облачное хранилище и отправить в форму сдачи заданий ссылку на него.
59 |
60 | При сдаче дизайна в Figma просьба отправить ссылку на конкретный проект. Убедитесь, что доступ на чтение по ссылке включен.
--------------------------------------------------------------------------------
/requirements/iot/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Internet of Things`
2 |
3 | ## Цель
4 |
5 | Необходимо создать устройство, которое может стать полезным атрибутом на любом рабочем столе.
6 | ## Описание
7 |
8 | У вас есть друг, у которого есть всё. Через месяц у него день рождения и перед вами встала задача придумать нужный и необычный подарок, который сможет его порадовать. Друг - техногик и вы решаете подарить ему самодельное устройство. Но насколько проработанное устройство вы успеете собрать за этот месяц?
9 | #### Уровень 1
10 | Устройство состоит из адресные светодиодов, датчика температуры и четырёхразрядного семисегментного индикатора. Устройство должно иметь возможность отображения времени, начальное значение которого может быть задано из кода, и температуры в помещении. Светодиодный модуль должен отображать различные события с помощью анимации. К примеру, понижение комфортной температуры или влажности.
11 | #### Уровень 2
12 | То же устройство, но добавляется взаимодействие с сетью. Устройство должно иметь возможность отображения времени, начальное значение которого бралось бы с API, погоды на улице и температуры в здании. Светодиодный модуль должен отображать различные события с помощью анимации.
13 | #### Уровень 3
14 | К разработанному устройству добавляется возможность управления светодиодным модулем и отслеживания температуры через удалённый интерфейс (Сайт, мобильное приложение, IoT-платформа)
15 |
16 | 
17 |
18 | ## Требования к решению задания
19 |
20 | 1. Git-репозиторий с кодом проекта и описанием в `README.md`
21 | 2. Схемы сборки устройста в графическом отображении
22 | 3. Видео демонстрации работы устройства и рассказ о проекте
23 |
24 | ## Критерии
25 |
26 | * **Уровень устройства и его работоспособность** - Задание какого уровня было реализовано, как устройство функционирует в различных ситуациях.
27 |
28 | * **Потери** - При разработке проекта не сожжён ни один модуль или микроконтроллер.
29 |
30 | * **Качество и продуманность кода** - Обращается внимания на то, как реализовываются взаимодействия с модулями, обрабатываются запросы к API, создаются анимации для светодиодов.
31 |
32 | * **Глубина проработки отдельных компонентов системы** - То, как выглядит отображение информации на дисплее, анимации на светодиодном модуле, интерфейс управления
33 | ## Материалы и оборудование
34 |
35 | Для выполнения данного задания вам потребуется специфичное оборудование. От микроконтроллеров до светодиодных модулей. Всё необходимое для выполнения задания вы сможете брать в Техноковоркинге. Для работы над проектом из дома можно использовать среды симуляции. К примеру, Tinkerkad или Wokwi.
36 |
37 | [Информацио о техноковоркинге](https://www.mirea.ru/education/megalaboratories/tekhnokovorking/)
38 |
39 | [Среда симуляции Wokwi](https://wokwi.com/)
40 |
--------------------------------------------------------------------------------
/requirements/iot/img/IoT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/requirements/iot/img/IoT.png
--------------------------------------------------------------------------------
/requirements/it-infrastructure/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `ИТ-инфраструктура`
2 |
3 | ## Цель
4 | Необходимо развернуть топологию небольшой инфраструктуры для домашнего использования.
5 |
6 | ## Описание
7 | Разбирая по весне чердак на даче, вы нашли старый сервер, который лет десять назад туда убрал дед и забыл. И, о чудо, он работает (дед тоже, огород вот копает)! Кажется, в прошлой жизни эта железка была весьма крутой. Однако время идет, и ни на что иное, кроме как стать центром домашней лабы она не способна. С другой стороны, впереди еще все лето, и на даче с дедом и без сервера будет явно скучно. Надо сделать с ним что-нибудь этакое.
8 |
9 | ## Уровень 1
10 | Нужно подготовить стенд для виртуализации. Если вдруг под рукой есть своя железка, на которую можно невозбранно поставить полноценную среду виртуализации Proxmox VE— это прекрасно. Но если нет, не расстраивайтесь, хватит и обычного VirtualBox (если компьютер слабый — можно обратиться в Техноковоркинг).
11 |
12 | Внутри среды виртуализации необходимо создать виртуальную машину - клиент и запустить внутри нее ОС семейства Linux. Дистрибутив — любой, но дед больше любит Debian-подобные.
13 |
14 | ## Уровень 2
15 | Давайте разберемся с сетью. Просто виртуальная машина это здорово, но хотелось бы иметь независимую сеть на сервере. Создайте еще одну ВМ, выступающую в качестве шлюза. Дед что то говорил про VYOS и OPNSense, но если кажется, что это все для слабаков, можно применить и что то покруче) Сделайте так, чтобы ВМ из первой части оказалась во внутренней изолированной сети от сети, к которой подключен сервер, и при этом имела доступ в интернет везде, кроме https://attendance.mirea.ru/.
16 |
17 | **Примечание:** если сеть сделать не получилось, не расстраивайтесь и делайте следующие пункты, оставив статическую адресацию. На баллы по другим заданиям это не повлияет.
18 |
19 | ## Уровень 3
20 | Добавим еще одну виртуальную машину и сделаем на ней файлопомойку. Настоящую файлопомойку. В этом нам поможет Nextcloud или TrueNAS. Доступ к ней должен быть как из внутренней, так и из внешней сети для сервера.
21 |
22 | ## Уровень 4 (дед забыл принять таблетки)
23 | Надо же, нам все еще скучно! Ну хорошо, тогда задачка посложнее: нужно сделать виртуалку с gitflic! Теперь у нас есть свой git!
24 |
25 | ## Уровень 5
26 | Веселье продолжается: создаем виртуалку с docker и разворачиваем на ней пару контейнеров с Prometheus и Grafana. Заводим в них все развернутую красоту и наблюдаем как все работает! Теперь мы точно не пропустим, что что-то упало!
27 |
28 | ## Требования к решению задания
29 | 1. Репозиторий с набором VM и описанием в README.md сетевой топологии и последовательности развертывания.
30 | 2. Сетевая топология.
31 | 3. Видео демонстрации решения с запуском соответствующих команд, демонстрирующих корректную работу инфраструктуры и ее функциональность.
32 |
33 | ## Критерии
34 | - **Уровень развертывания инфраструктуры** - Задание каждого уровня дает +3 балла. Баллы начисляются по следующему алгоритму:
35 | - 1 балл — соискатель приступал к выполнению задания: создана ВМ и запущено необходимое ПО.
36 | - 2 балла — ПО сконфигурировано, так как написано в задании;
37 | - 3 балла — Сконфигурированы дополнительные опции (настроены dhcp, DNS, подключено управление пользователями).
38 | - **Глубина проработки отдельных компонентов системы** — Отдельно оценивается использование ПО, не описанного в задании, но выполняющего ту же функцию (или улучшающее предложенную инфраструктуру) — максимум +1 экстра балл за каждый уровень.
39 |
40 | ## Эталонная топология
41 | 
42 |
43 | ## Материалы и оборудование
44 | Для выполнения данного задания вам потребуется специфичное оборудование и ПО. При необходимости, компьютер для выполнения задания вы сможете запросить в Техноковоркинге.
--------------------------------------------------------------------------------
/requirements/it-infrastructure/img/top.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/requirements/it-infrastructure/img/top.png
--------------------------------------------------------------------------------
/requirements/mobile/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Android-разработка`
2 |
3 | ## Цель
4 | Разработать приложение для взаимодействия с LLM-моделью через API, включая поддержку шаблонов RAG (Retrieval-Augmented Generation) для удобства пользователей.
5 |
6 | ## Описание
7 | Пользователи приложения смогут взаимодействовать с LLM-моделью, отправляя запросы с контекстом, используя предустановленные шаблоны RAG. Шаблоны позволяют задавать параметры, такие как роль, цель и окружение, чтобы улучшить качество ответов модели. Приложение должно быть удобным, функциональным и поддерживать работу как онлайн, так и оффлайн.
8 |
9 | # Функционал
10 | * Отправка запросов к LLM-модели с возможностью ввода текста.
11 | * Использование шаблонов RAG для автоматического заполнения контекста (роль, цель, окружение).
12 | * Возможность создавать, редактировать и удалять шаблоны RAG.
13 | * Просмотр истории запросов и ответов.
14 | * Поиск по истории запросов по ключевым словам или параметрам.
15 | * Сортировка истории запросов по дате, популярности или другим критериям.
16 | * Уведомление пользователя зайти в приложение, чтобы спросить LLM (аля duolingo)
17 | * Сохранение избранных запросов и шаблонов для быстрого доступа.
18 | * Работа с историей запросов в оффлайн-режиме (кэширование данных).
19 |
20 | Реализация дополнительных идей, не описанных в задании, приветствуется, но важно соблюдать баланс между функциональностью и качеством реализации.
21 |
22 | ## Источники данных
23 | Для взаимодействия с LLM-моделью используется API сервиса. Документация API доступна по ссылке: [API Documentation](http://94.126.205.209:8000/docs).
24 |
25 | ## Критерии
26 |
27 | ### Архитектура
28 | При разработке приложения важно придерживаться выбранной архитектуры (например, MVVM, MVI или Clean Architecture), которая обеспечивает высокую связность и низкое зацепление компонентов. Выбор архитектуры должен быть обоснован в README.md репозитория.
29 |
30 | ### Дизайн
31 | Используйте современные дизайн-системы, такие как Material Design, для создания интуитивно понятного и эстетичного интерфейса. Если вы решите использовать другую дизайн-систему, убедитесь, что она оптимизирована для мобильных устройств, и укажите ссылку на её документацию в README.md.
32 |
33 | ### Функциональность
34 | Приложение должно включать все заявленные функции, а также может быть дополнено полезными фичами, улучшающими пользовательский опыт. Например:
35 | * Экспорт истории запросов в файл.
36 | * Передача шаблона через соц сети.
37 | * Поддержка нескольких языков интерфейса.
38 | * Ввод запроса голосом.
39 |
40 | ### Внимание к деталям
41 | Уделите внимание качеству реализации: плавность анимаций, обработка ошибок, корректная работа в оффлайн-режиме, оптимизация производительности. Пользовательский опыт должен быть приоритетом.
--------------------------------------------------------------------------------
/requirements/quantum/README.md:
--------------------------------------------------------------------------------
1 | # Вступительное испытание на направление `Квантовые вычисления`
2 |
3 | В этом треке будут оцениваться не только ваши знания, но и подходы к решению задач. При отправке решения обязательно приложите сканы, на которых будет подробно расписан процесс решения предложенных задач. Оценка будет проводиться по двухбалльной системе: один балл за правильный ответ и один балл за ход решения. Демонстрация уникального понимания и подхода к задачам будет приветсвоваться.
4 |
5 | ## Задача 1
6 | Найти все матрицы $X$, удовлетворяющие следующим условиям:
7 |
8 | ```math
9 | AX^2 + BX - A = O, \quad \det X = 1,
10 | ```
11 |
12 | где
13 |
14 | ```math
15 | A = \begin{bmatrix} 2 & 1 \\ 0 & 1 \end{bmatrix}, \quad
16 | B = \begin{bmatrix} 0 & 21 \\ 2 & 1 \end{bmatrix}, \quad
17 | O - \text{нулевая матрица}.
18 | ```
19 |
20 | ## Задача 2
21 | Пусть есть некоторый оператор $\hat{A}$, такой, что
22 |
23 | ```math
24 | \hat{A} \begin{bmatrix} a c \\ a d \\ b c \\ b d \end{bmatrix} =
25 | \begin{bmatrix} a c \\ b c \\ a d \\ b d \end{bmatrix}.
26 | ```
27 |
28 | Найдите такой оператор $\hat{A}$.
29 |
30 | Введем следующее обозначение:
31 |
32 | ```math
33 | \begin{bmatrix} a & b \\ c & d \end{bmatrix} \otimes
34 | \begin{bmatrix} e & f \\ g & h \end{bmatrix} =
35 | \begin{bmatrix}
36 | ae & af & be & bf \\
37 | ag & ah & bg & bh \\
38 | ce & cf & de & df \\
39 | cg & ch & dg & dh \\
40 | \end{bmatrix}.
41 | ```
42 |
43 | Найдите или опровергните существование таких операторов $\hat{\alpha}$ и $\hat{\beta}$, что
44 |
45 | ```math
46 | \hat{\alpha} \otimes \hat{\beta} = \hat{A}.
47 | ```
48 |
49 | ## Задача 3
50 | Найдите все комплексные числа $z$, удовлетворяющие следующему неравенству:
51 |
52 | ```math
53 | |z - 1| = |z + i|
54 | ```
55 |
56 | ## Задача 4
57 | Обоснуйте письменно принцип расчёта асимптотики поиска элемента в сбалансированном бинарном дереве.
58 |
59 | ## Задача 5
60 | Пусть монетка подбрасывается 49 раз. Если после очередного броска две последние монетки ОО, то из банка изымают 1 рубль. Если две последние монетки РР, то банк пополняют на 1 рубль. Иначе ничего не делают.
61 |
62 | Рассчитайте математическое ожидание баланса банка после 49 подбрасываний.
--------------------------------------------------------------------------------
/requirements/robot/img/robotics_1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/requirements/robot/img/robotics_1.jpg
--------------------------------------------------------------------------------
/requirements/robot/img/robotics_2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/requirements/robot/img/robotics_2.jpg
--------------------------------------------------------------------------------
/requirements/robot/img/robotics_3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/requirements/robot/img/robotics_3.jpg
--------------------------------------------------------------------------------
/requirements/robot/img/robotics_4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/requirements/robot/img/robotics_4.jpg
--------------------------------------------------------------------------------
/requirements/robot/img/robotics_5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/requirements/robot/img/robotics_5.jpg
--------------------------------------------------------------------------------
/requirements/robot/img/robotics_6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RTUITLab/Recruit/018e9154b76e21a56829f6bac54c83e683fd6c69/requirements/robot/img/robotics_6.jpg
--------------------------------------------------------------------------------
/requirements/smm/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Социальные сети`
2 | ## Цель
3 | RTUITLab требуется медийное сопровождение проектов, написание научно-популярных статей, создание видеороликов с рассказом о проектах. То есть необходимо медийное сопровождение деятельности лаборатории на различных платформах.
4 |
5 | ## Описание
6 | 1. Сформировать контент план публикаций (https://vk.com/rtuitlab) на ближайший месяц. Выполнить поиск доступных для студентов и лаборатории хакатонов, классифицировать их (основание классификации выбирается автором).
7 | 2. Выполнить оформление новости с сайта Университета в виде поста (https://www.mirea.ru/news/podvedeny-itogi-khakatona-mire-a-tom-organizovannogo-institutom-informatsionnykh-tekhnologiy-ano-kor/)
8 | 3. Выполнить создание статьи о том же мероприятии.
9 | 4. Смонтировать видеоролик по указанной новости продолжительностью до 3 минут.
10 | 5. Предложить план по настройке таргетированной рекламы указанных публикаций❗️
11 |
12 | При выполнении задания не допускается использование генеративной нейронной сети любой модели.
13 |
14 | ## Критерии
15 |
16 | Работа будет оцениваться по следующему набору критериев:
17 | 1. Креативность подхода и оформления
18 | 2. Учет деталей, которые не были указаны в задании. От исполнителя требуется самостоятельно выполнять поиск недостающей информации.
19 | 3. Количество выполненных мини-заданий
20 | 4. Владение инструментарием социальных сетей (vk, telegram)
21 |
22 | Работа сдается в виде ссылки на облако, где под каждое из мини-заданий создана отдельная папка с материалами.
--------------------------------------------------------------------------------
/requirements/unity/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Unity`
2 |
3 | ## Цель
4 | Выполнить одно из двух тестовых заданий(по выбору): Головоломка для двоих VR, AR игра в жанре лабиринт.
5 |
6 | ## Описание
7 | ### Описание первого варианта задания
8 | Вам требуется создать игру в жанре головоломок для 2-4 человек. Подразумевается, что на кооперативе и будет завязан геймплей.
9 |
10 | ### Описание второго варианта задания
11 | Ваша задача - создать AR игру в жанре лабиринт с шариком с использованием гироскопа телефона.
12 |
13 | ### Общая информация
14 |
15 | #### Требования
16 | * Сеттинг, визуальный стиль - на ваш выбор.
17 | * Проект должен быть выполнен на движке Unity
18 | * Ограничений на использование ассетов нет. Вы можете воспользоваться сервисом sketchfab / fab.com.
19 | * Геймплейный опыт - от 15 минут до часа.
20 |
21 | #### Критерии
22 | * Реализация основного задания
23 |
24 | * Реализация дополнительных механик
25 |
26 | * Интерес геймплея
27 |
28 | Насколько хорошо все механики выглядят в связке друг с другом.
29 |
30 | * Целостность проекта
31 |
32 | Будет оцениваться общий вид игры: связь сеттинга с жанром, выбранный визуальный стиль и его реализация.
33 |
34 | * Качество кода
35 |
36 | Читаемость кода/блюпринтов, эффективность, логичность, оптимизация.
37 |
38 | ### Вспомогательные ссылки
39 | * https://fab.com
40 | * https://sketchfab.com/feed
41 |
42 | ### Референсы
43 |
44 | #### Первое задание
45 | * Portal
46 | * Keep Talking And No One Explodes
47 | * Abode и Abode 2
48 |
49 | #### Второе задание
50 | * The Machines
51 | * Ticket to Earth
52 | * Splitter Critters
53 |
54 | ### Важные пометки
55 | * Сеттинг, концепт - исключительно ваш выбор.
56 | * Варианты тестовых можно комбинировать.
--------------------------------------------------------------------------------
/requirements/unreal-engine/README.md:
--------------------------------------------------------------------------------
1 | # Требования по направлению `Unreal Engine 5`
2 |
3 | ## Цель
4 | Выполнить одно из двух тестовых заданий(по выбору): головоломка с использованием технологии Lumen в открытой локации; Сетевая аркада в жанре 3D
5 |
6 | ## Описание
7 | ### Описание первого варианта задания
8 | Вам требуется создать игру в жанре головоломок. Основные задачи - проработка света и локации.
9 |
10 | ### Описание второго варианта задания
11 | Вы с друзьями переиграли во все игры на Земле. Вам хочется провести вечер забавно под какую-то игру. Ваша задача - создать игру, которая будет приносить удовольствие для всех игроков. Идея аркады не ограничивается.
12 |
13 | ### Общая информация
14 |
15 | #### Требования
16 | * Сеттинг, визуальный стиль - на ваш выбор.
17 | * Проект должен быть выполнен на движке Unreal Engine версии 5.1.1 - 5.4.
18 | * Ограничений на использование ассетов нет. Вы можете воспользоваться сервисом sketchfab / fab.com.
19 | * Проект должен иметь готовый билд Shipping конфигурации, чтобы можно было протестировать игру без использования UE.
20 | * Проект может быть реализован как на С++, так и на BP.
21 | * Ограничения по плагинам есть. Использование конкретного плагина требуется уточнить в специализированном чате.
22 | * Геймплейный опыт - от 10 минут до часа.
23 |
24 | #### Критерии
25 | * Реализация основного задания
26 |
27 | Будет оцениваться, насколько хорошо реализована основная особенность проекта(Lumen + проработка локаций/Сетевая архитектура).
28 |
29 | * Реализация дополнительных механик
30 |
31 | Отдельно будут оцениваться другие механики проекта.
32 |
33 | * Интерес геймплея
34 |
35 | Насколько хорошо все механики выглядят в связке друг с другом.
36 |
37 | * Целостность проекта
38 |
39 | Будет оцениваться общий вид игры: связь сеттинга с жанром, выбранный визуальный стиль и его реализация.
40 |
41 | * Качество кода
42 |
43 | Читаемость кода/блюпринтов, эффективность, логичность, оптимизация.
44 |
45 | * Оптимизация
46 |
47 | * Отдельные "бонусные" параметры
48 |
49 | Использован ли VFX(Niagara/cascade), Metahuman, Sequencer, сюжет, конец игры, сохранение игры.
50 |
51 |
52 |
53 | ### Вспомогательные ссылки
54 | * https://fab.com
55 | * https://sketchfab.com/feed
56 | * https://docs.unrealengine.com
57 |
58 | ### Референсы
59 |
60 | #### Первое задание
61 | * Limbo
62 | * The Room Three
63 | * Superliminal
64 |
65 | #### Второе задание
66 | * Fall guys
67 | * Keep Talking and Nobody Explodes
68 | * Backrooms
69 |
70 | ### Важные пометки
71 | * Сеттинг, концепт - исключительно ваш выбор.
72 | * Варианты тестовых можно комбинировать.
--------------------------------------------------------------------------------