{"id":49791538,"url":"https://github.com/reo7sp/practicum-cpp-project7","last_synced_at":"2026-05-12T05:03:31.014Z","repository":{"id":351298308,"uuid":"1209848423","full_name":"reo7sp/practicum-cpp-project7","owner":"reo7sp","description":null,"archived":false,"fork":false,"pushed_at":"2026-04-14T11:41:50.000Z","size":156,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"initial","last_synced_at":"2026-04-14T13:29:41.632Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/reo7sp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-13T20:58:03.000Z","updated_at":"2026-04-14T11:41:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/reo7sp/practicum-cpp-project7","commit_stats":null,"previous_names":["reo7sp/practicum-cpp-project7"],"tags_count":null,"template":false,"template_full_name":"Yandex-Practicum/cpp-middle-project-sprint-7","purl":"pkg:github/reo7sp/practicum-cpp-project7","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reo7sp%2Fpracticum-cpp-project7","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reo7sp%2Fpracticum-cpp-project7/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reo7sp%2Fpracticum-cpp-project7/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reo7sp%2Fpracticum-cpp-project7/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/reo7sp","download_url":"https://codeload.github.com/reo7sp/practicum-cpp-project7/tar.gz/refs/heads/initial","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reo7sp%2Fpracticum-cpp-project7/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32924388,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-11T17:09:15.040Z","status":"online","status_checked_at":"2026-05-12T02:00:06.338Z","response_time":102,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-12T05:03:26.091Z","updated_at":"2026-05-12T05:03:31.009Z","avatar_url":"https://github.com/reo7sp.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cpp-middle-project-sprint-7 \u003c!-- omit in toc --\u003e\n\n- [До начала использования Docker контейнера: Настройка переменных окружения](#до-начала-использования-docker-контейнера-настройка-переменных-окружения)\n- [Начало работы](#начало-работы)\n- [Сборка проекта и запуск тестов](#сборка-проекта-и-запуск-тестов)\n  - [Команды для сборки проекта](#команды-для-сборки-проекта)\n  - [Команды для запуска приложения](#команды-для-запуска-приложения)\n  - [Команда для запуска тестов](#команда-для-запуска-тестов)\n  - [Команда для запуска clang-format — обязательное требование перед сдачей работы на ревью](#команда-для-запуска-clang-format--обязательное-требование-перед-сдачей-работы-на-ревью)\n  - [Команды для запуска отладчика](#команды-для-запуска-отладчика)\n- [Дополнительно](#дополнительно)\n\nШаблон репозитория для практического задания 7-го спринта «Мидл разработчик С++»\n\n## До начала использования Docker контейнера: Настройка переменных окружения\n\nДля корректной работы контейнера добавьте в ваш bash-профиль две переменные окружения и обновите его, выполнив следующие команды:\n\n```bash\n# Set USER_UID and USER_GID\necho -e '\\nexport USER_UID=$(id -u)\\nexport USER_GID=$(id -g)' \u003e\u003e ~/.bashrc\n\n# Update bash-profile\nsource ~/.bashrc\n```\n\nПеред началом работы с Docker контейнером, убедитесь, что переменные окружения доступны, внутри используемой вами IDE (например в терминале внутри VS Code):\n\n```bash\nprintf \"\\nUSER_UID=${USER_UID=}\\nUSER_GID=${USER_GID}\\n\\n\"\n```\n\n## Начало работы\n\n1. Убедитесь, что переменные окружения из предыдущего шага доступны внутри вашей IDE\n2. Нажмите зелёную кнопку `Use this template`, затем `Create a new repository`.\n3. Назовите свой репозиторий.\n4. Склонируйте созданный репозиторий командой `git clone your-repository-name`.\n5. Создайте новую ветку командой `git switch -c development`.\n6. Откройте проект в `Visual Studio Code`.\n7. Нажмите `F1` и откройте проект в dev-контейнере командой `Dev Containers: Reopen in Container`.\n\n![Reopen in container](misc/reopen_in_container.png)\n\n## Сборка проекта и запуск тестов\n\nДанный репозиторий использует следующие инструменты:\n\n- **cmake** — генератор систем сборки для C и C++. Позволяет создавать проекты, которые могут компилироваться на различных платформах и с различными компиляторами. Подробнее о cmake:\n  - https://dzen.ru/a/ZzZGUm-4o0u-IQlb\n  - https://neerc.ifmo.ru/wiki/index.php?title=CMake_Tutorial\n  - https://cmake.org/cmake/help/book/mastering-cmake/cmake/Help/guide/tutorial/index.html\n\n- **VS Code Dev Docker container** - Docker контейнер, который содержит полностью настроенное окружение для выполнение задания. Подробнее об этой функциональности:\n  - https://habr.com/ru/articles/822707/ - \"Почти все, что вы хотели бы знать про Docker\"\n  - https://code.visualstudio.com/docs/devcontainers/containers - официальная документация VS Code\n  - https://www.youtube.com/watch?v=p9L7YFqHGk4 - \"Docker container for VS Code\"\n  - https://www.youtube.com/watch?v=pg19Z8LL06w\u0026t=174s\u0026pp=ygUPRG9ja2VyY29udGFpbmVy - \"Docker in 1 hour\"\n\n### Команды для сборки проекта\n\nИспользуйте `F5` для выполнения следующих шагов:\n- Создания папки `build`\n- Вызова `cmake` команд для запуска процесса сборки\n- Запуска `lldb` отладчика\n\nТакже, вы можете запустить только команду построения проекта. Для этого:\n\n- вызовите командное окно, нажав `F1`\n\n- Выберите команду `Tasks: Run Task`\n\n![](misc/select_vscode_tasks.png)\n\n- Выберите команду сборки проекта, например `GCC: Build Debug app`\n\n![](misc/select_concrete_task.png)\n\n### Команды для запуска приложения\n\n```bash\ncd build\n\n./AsyncHttpProxy 5555 \u0026\n\npython3 -c 'print(\"HTTP/1.1 200 OK\\r\\nContent-Type: text/html\\r\\nContent-Length: 4096\\r\\n\\r\\n\" + \"A\"*4096, end=\"\")' | nc -l 127.0.0.1 -p 8000 \u0026\n\nwget -e use_proxy=yes -e http_proxy=127.0.0.1:5555 127.0.0.1:8000\n\n```\n\n### Команда для запуска тестов\n\nДля запуска тестов вы можете воспользоваться удобным расширением `C++ TestMate`:\n\n![](misc/test_mate.png)\n\n### Команда для запуска clang-format — обязательное требование перед сдачей работы на ревью\n\nВ этом репозитории настроен автоматический запуск clang-format (файл конфигурации — .vscode/settings.json) при сохранении любого файла с кодом.\n\nУбедитесь, что эта функциональность работает:\n- Добавьте несколько пустых линий в любой файл.\n- Сохраните файл.\n- Если пустые линии были удалены, всё работает, если нет — убедитесь, что clangd работает (при открытии файла с кодом в самом низу VS Code на голубой полоске должно быть написано clangd: idle). Для этого:\n    - нажмите `F1` и выполните команду `clangd: Download language server`;\n    - нажмите `F1` и выполните команду `clangd: Restart language server`;\n    - нажмите `F1` и выполните команду `Developer: Reload Window`.\n\n### Команды для запуска отладчика\n\nВ Visual Studio Code настройки параметров для запуска отладчика находятся в файле .vscode/launch.json. Поскольку в этом файле для запуска приложения уже есть одна конфигурация `Launch *`, то для запуска отладчика достаточно нажать F5 или открыть окно Run and Debug комбинацией клавиш `Ctrl+Shift+D`.\n\n## Дополнительно\n\nДля настройки автодополнения `Ctrl + Space` нажмите `F1` и выполните команду `clangd: Download language server`. VS Code сам предложит установить подходящую версию clangd (всплывашка в правом нижнем углу). После завершения установки перезагрузите окно кнопкой перезапуска справа снизу или с помощью `F1` и выполните команду `Developer: Reload Window`.\n\nЕсли всё сделали правильно, то после успешной сборки проекта вы сможете использовать автодополнение.\n\n![Скриншот 2](misc/clangd_1.png)\n\n![Скриншот 3](misc/clangd_2.png)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freo7sp%2Fpracticum-cpp-project7","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freo7sp%2Fpracticum-cpp-project7","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freo7sp%2Fpracticum-cpp-project7/lists"}