{"id":25980025,"url":"https://github.com/gogosan1/odesolverservice","last_synced_at":"2026-04-08T23:33:34.672Z","repository":{"id":275426087,"uuid":"925070720","full_name":"Gogosan1/ODESolverService","owner":"Gogosan1","description":"Выпускная квалификационная работа бакалавра. Разработка программного обеспечения для расчета поведения динамических и гибридных систем.","archived":false,"fork":false,"pushed_at":"2025-03-04T05:15:28.000Z","size":215,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-04T06:22:43.852Z","etag":null,"topics":["cmake","cpp","docker-compose","env","java","julia","maven","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Gogosan1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2025-01-31T06:59:54.000Z","updated_at":"2025-03-04T05:15:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"e94ffd8e-a870-4248-84a3-854bc5817553","html_url":"https://github.com/Gogosan1/ODESolverService","commit_stats":null,"previous_names":["gogosan1/odesolverservice"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gogosan1%2FODESolverService","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gogosan1%2FODESolverService/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gogosan1%2FODESolverService/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gogosan1%2FODESolverService/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Gogosan1","download_url":"https://codeload.github.com/Gogosan1/ODESolverService/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241985067,"owners_count":20053021,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["cmake","cpp","docker-compose","env","java","julia","maven","spring-boot"],"created_at":"2025-03-05T07:25:54.247Z","updated_at":"2026-04-08T23:33:34.665Z","avatar_url":"https://github.com/Gogosan1.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Spring](https://img.shields.io/badge/spring-%236DB33F.svg?style=for-the-badge\u0026logo=spring\u0026logoColor=white)\n![Java](https://img.shields.io/badge/java-%23ED8B00.svg?style=for-the-badge\u0026logo=openjdk\u0026logoColor=white)\n![C++](https://img.shields.io/badge/c++-%2300599C.svg?style=for-the-badge\u0026logo=c%2B%2B\u0026logoColor=white)\n![Julia](https://img.shields.io/badge/-Julia-9558B2?style=for-the-badge\u0026logo=julia\u0026logoColor=white)\n![RabbitMQ](https://img.shields.io/badge/Rabbitmq-FF6600?style=for-the-badge\u0026logo=rabbitmq\u0026logoColor=white)\n![CMake](https://img.shields.io/badge/CMake-%23008FBA.svg?style=for-the-badge\u0026logo=cmake\u0026logoColor=white)\n![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge\u0026logo=docker\u0026logoColor=white)\n![Grafana](https://img.shields.io/badge/grafana-%23F46800.svg?style=for-the-badge\u0026logo=grafana\u0026logoColor=white)\n\n# Выпускная квалификационная работа бакалавра\n\n_Тема: Разработка программного обеспечения для расчета поведения динамических и гибридных систем._\n\n### Оглавление\n\n## Описание\n\n**Цель работы** — разработка и реализация алгоритма для получения универсального доступа к различным библиотекам численных решателей.\n\nРезультатом работы будет являтся программный модуль, к которому возможно подключать любые разработанные библиотеки численных решателей.\n\n![Схема системы ПО](https://github.com/user-attachments/assets/c7f7c626-b0f3-4fba-bd4f-3392707898cb)\n\n\u003e [!NOTE]\n\u003e\n\u003e - **Цветом выделена та часть системы, которая реализована мной**\n\u003e   - Зеленым на схеме отображен сам модуль\n\u003e   - Желтым отображены подключенные численные решатели\n\nПри разработке программного обеспечения было принято решение делать его через **микросервисную архитектуру**.\nВ качестве брокера сообщений используется rabbitMQ сконфигурированный на api шлюзе.\n\n**Структура проекта:**\n\n```\nODESolverService/\n├── API_gateway/ #Содержит код шлюза API, написанный на Java с использованием Spring Boot.\n│ ├── src/\n│ │ ├── main/ #Основной код шлюза\n│ │ └── test/ #Тесты для шлюза\n│ ├── pom.xml #Maven файл для конфигурации\n| |── Dockerfile #Докер образ для шлюза\n|\n├── Julia_server/\n│ ├── server.jl #Основной код решателя ОДУ на julia\n│ └── Dockerfile #Докер образ для julia server\n|\n├── cpp_GSL_server/\n│ ├── src/ #Исходный код сервера решателя на C++\n│ ├── CMakeLists.txt #Файл конфигурации для сборки проекта с помощью CMake.\n│ └── Dockerfile #Докер образ для C++ server\n|\n├── .env.example #Пример файла окружения с переменными среды.\n├── README.md\n├── compose.yaml #Файл конфигурации для Docker Compose, описывающий, как запускать многоконтейнерное приложение.\n```\n\n\u003c!--**Основные возможности:**--\u003e\n\n## Сборка и запуск\n\n1. Установите Docker на свое устройство.\n2. Клонируйте репозиторий с кодом приложения.\n3. Откройте терминал в папке приложения и выполните команду:\n\n```bash\n    docker compose up --build\n```\n\nСборка занимает значительное время, минут 30-40. Основное время, 25-30 минут, собирается образ для сервера на языке julia.\n## Описание API шлюза\n\n**spring boot server (API GATEWAY)**\n\n- [ ] добавить описание api\n- [ ] добавить описание json шаблонов для отправки по api\n- [ ] добавить мониторинг взаимодействия микросервисов\n- [x] ~~создать docker image~~\n- [x] ~~Внедрить .env файл для общей конфигурации подключений и названия очередей~~\n\n## Описание доступных методов решения систем ОДУ CPP сервера и корректного JSON файла\n\n**CPP server (GSL)**\n\n- [x] ~~написать функцию решателя~~\n- [x] ~~реализовать выбор возможных методов решения~~\n- [x] ~~реализовать парсер, для извлечения уравнений из строкового формата~~\n- [x] ~~реализовать асинхронную обработку задач~~\n- [ ] реализовать отправку решения частями\n- [ ] реализовать механизм отладки (возвращения на предыдущий шаг) через сохранение состояний в промежутках\n- [x] ~~создать docker image~~\n- [x] ~~написать CMake~~\n\n## Описание доступных методов решения систем ОДУ Julia сервера и корректного JSON файла\n\n**julia server (DifferentialEquations)**\n\n- [x] ~~написать функцию решателя~~\n- [x] ~~реализовать выбор возможных методов решения~~\n- [x] ~~реализовать парсер, для извлечения уравнений из строкового формата~~\n- [x] ~~реализовать асинхронную обработку задач~~ реализована многопроцессорная обработка\n- [ ] реализовать отправку решения частями через callback функцию\n- [x] ~~создать docker image~~\n\n**Selfwrite solver server**\n\n- [ ] интегрировать в систему код сервера Алексея\n- [ ] возможно добавить в код логику парсера из CPP server\n\n## Рекомендации по применению методов (Руководство пользователя)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgogosan1%2Fodesolverservice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgogosan1%2Fodesolverservice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgogosan1%2Fodesolverservice/lists"}