Форум программистов, компьютерный форум, киберфорум
Разработка и тестирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
0 / 0 / 0
Регистрация: 16.05.2021
Сообщений: 24

Обеспечение удаленной работы программиста

08.08.2025, 14:04. Показов 1711. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!

Необходимо обеспечить удаленную работу программистов над C++ проектом. Никогда не сталкивался с такой задачей, поэтому решил задать вопрос в надежде, что кто-то уже имеет опыт такой работы и направит на самое простое решение.

Итак, имеется продукт для проведения инженерных расчетов, написанный на GNU C++. Он представляет собой один exe-файл с несколькими файлами данных. Запускается на локальном компьютере. Необходимо привлекать программистов для удаленной работы над отдельными кусками кода. Идеальное решение выглядело бы так:

1. На сервере под Linux разворачивается система, обеспечивающая работу удаленных программистов.
2. Для каждого программиста создается отдельный экземпляр проекта. Программист имеет доступ только к тем файлам, которые касаются его работы. Остальное строго засекречено.
3. Программист любым способом редактирует эти файлы и обновляет их на сервере.
4. Компиляция проекта происходит на сервере.
5. Скопмилированная программа скачивается и запускается на программистом на своем компьютере.

Как проще всего развернуть работу такой системы? Есть ли готовые решения?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.08.2025, 14:04
Ответы с готовыми решениями:

Программное обеспечение организации: бизнес-процесс в BPWin
смоделировать бизнес-процесс программного обеспечения организации в BPwin

Docker-compose на удаленной машине
Подскажите, как правильно производить развертывание приложения с использованием докер. Есть...

Git: работать локально с репозиторием, который доступен с удаленной машины
Всем доброго времени. Помогите настроить правильно port forwarding через ssh, например для того,...

23
 Аватар для Pphantom
2290 / 1549 / 718
Регистрация: 17.03.2022
Сообщений: 4,976
08.08.2025, 14:37
Странные у вас, скажем так, запросы.
Цитата Сообщение от steevis Посмотреть сообщение
1. На сервере под Linux разворачивается система, обеспечивающая работу удаленных программистов.
Любая машина с доступом по SSH.
Цитата Сообщение от steevis Посмотреть сообщение
2. Для каждого программиста создается отдельный экземпляр проекта. Программист имеет доступ только к тем файлам, которые касаются его работы. Остальное строго засекречено.
А мы на форуме обсуждаем, как писать ПО для управления ядерным оружием? Пожелание несколько диссонирует с уровнем всего остального.

Но так-то то же самое - любая машина с доступом по SSH. С остальными пунктами то же самое, кроме
Цитата Сообщение от steevis Посмотреть сообщение
5. Скопмилированная программа скачивается и запускается на программистом на своем компьютере.
Без проблем, если у него там та же ОС, что и на сервере. Иначе это бесполезная трата сил и ресурсов, проще компилировать локально.

Если более серьезно - поставить на той же машине git-сервер. Но для начала лучше убрать откровенные нелепости из техзадания.
0
0 / 0 / 0
Регистрация: 16.05.2021
Сообщений: 24
08.08.2025, 14:39  [ТС]
Спасибо за помощь
0
1 / 1 / 0
Регистрация: 06.06.2023
Сообщений: 5
10.08.2025, 12:15
Цитата Сообщение от steevis Посмотреть сообщение
Программист имеет доступ только к тем файлам, которые касаются его работы. Остальное строго засекречено.
При таком подходе вполне возможно возникнет проблема, если разным людям выдавать только по одному куску кода. Мне тут кажется, что никакой магии не произойдёт, и когда 5 разным людям дать 5 разных кусков одного проекта, то при завершении работы получится 5 разных конфликтующих частей кода из-за того, что не было согласовывании между программистами и у них не было видения общей картины.

Насчёт остального - посмотрите в сторону DevOps практик: CI/CD, приватные репозитории Github/Gitlab
0
0 / 0 / 0
Регистрация: 16.05.2021
Сообщений: 24
10.08.2025, 14:43  [ТС]
Спасибо за ответ.
А вы имеете опыт установки и настройки чего-то типа Jenkins? Дело в том, что я сильно ограничен в возможностях что-либо изучать. Я был бы очень рад пройти краткое обучение и получить помощь в развертывании такой системы. Не за спасибо, конечно.
0
35 / 60 / 2
Регистрация: 23.11.2024
Сообщений: 757
10.08.2025, 16:44
Цитата Сообщение от Pphantom Посмотреть сообщение
Без проблем, если у него там та же ОС, что и на сервере. Иначе это бесполезная трата сил и ресурсов, проще компилировать локально.
Если это программа для клиентов, то у неё есть конкретные целевые платформы, для которых организуется сборка.
У программиста должна быть одна из них, нет в этом ничего особенного.

Добавлено через 1 минуту
Цитата Сообщение от steevis Посмотреть сообщение
я сильно ограничен в возможностях что-либо изучать.
Нанимайте админов, знающих нужный вам софт.
Или студентов, которые будут разбираться.

Добавлено через 7 минут
Цитата Сообщение от tsvt Посмотреть сообщение
возможно возникнет проблема, если разным людям выдавать только по одному куску кода.
Надо делать программу по плагинной архитектуре. Один плагин - один репозиторий. Права на уровне репозиториев gitblit умеет.
gitblit тут при том, что у него Jenkins на Java
0
1 / 1 / 0
Регистрация: 06.06.2023
Сообщений: 5
10.08.2025, 16:46
Цитата Сообщение от steevis Посмотреть сообщение
А вы имеете опыт установки и настройки чего-то типа Jenkins? Дело в том, что я сильно ограничен в возможностях что-либо изучать. Я был бы очень рад пройти краткое обучение и получить помощь в развертывании такой системы
Для себя я могу что-то набросать, но за организацию работы команды не стал бы браться.
Могу лишь посоветовать поискать/самому опубликовать объявление на фриланс-сайтах по ключевому слову "DevOps".

А перед этим можете сами, например, зарегистрироваться на gitlab.com, создать там один или несколько приватных репозиториев, загрузить туда код, затем через CI/CD (jobs/pipelines) настроить автоматическую компиляцию этого кода на сервере gitlab или на своём (возможно, это уже как раз отдельная конкретная задача), также настроить и защитить главную git-ветку (копию) проекта от записи, и разрешить вносить изменения только в отдельные ветки.

Если всё это настроить, то большая часть перечисленных требований выполняется:
- каждый программист имеет доступ к общей главной ветке и может скачивать код, но не может редактировать
- также он может создавать свои ветки с полной копией проекта и их редактировать
- каждое редактирование запускает автоматическую компиляцию на сервере, результат которой можно скачать
Но при таком подходе не выполняется условие с засекреченной частью. Возможно, что-то можно придумать и использовать несколько приватных репозиториев.
0
0 / 0 / 0
Регистрация: 16.05.2021
Сообщений: 24
10.08.2025, 18:04  [ТС]
Спасибо!

Условие с засекреченной частью самое важное из всех. Без него все теряет смысл.
Особенности проекта таковы, что все исходники и компиляция должны быть на нашем серваке. А пользователь мог бы только удаленно менять открытые ему файлы в одной из веток.

Организация работы не нужна, это все сделаем сами. Нужно вместе разобрать простейший пример (скажем, через ZOOM). Что-то типа:
1. Вот ставим Git.
2. Вот ставим Jenkins или что-то такое (не разбираюсь пока).
3. Вот создаем проект Hello World на C++.
4. Вот мы загрузили проект в нашу систему.
5. Создаем пользователя-программиста и разрешаем ему править вот эти файлы.
6. Из под него запускаем компиляцию, скачиваем экзешник.
7. Все.
0
35 / 60 / 2
Регистрация: 23.11.2024
Сообщений: 757
10.08.2025, 18:33
это надолго, в смысле много времени займёт.

Во-первых, если у вас пользователи в разных местах, вам нужен VPN.
Во-вторых, чтобы пользователи были нужен LDAP.
В-третьих, надо делать SSO, чтобы пользователю давались права во всех этих приложениях.
И наверное Kerberos тоже (к нему NTP).
Ещё вам понадобится багтрекер,
какое-нибудь средство накопления знаний типа библиотеки для .pdf-ок отчётов, или wiki-статей в knowledge base
хорошо бы какой-нибудь мессенжер на XMPP для созвонов голосом и передачи файлов
Это в общем и целом НИОКР, у него этапы, документы в качестве результатов (интеллектуальной деятельности).

Интересно, продают ли такое в виде преднастроенных серверов? Поисковые сервера же продают.
0
0 / 0 / 0
Регистрация: 16.05.2021
Сообщений: 24
10.08.2025, 19:08  [ТС]
В принципе, вариант с SSH, предложенный Pphantom, вполне рабочий. Только графической оболочки в нем нет.
Можно, конечно, что-то простейшее накидать...
VPN уже есть.
Все основное ядро пишется одним человеком. Он координирует проект. Удаленные программисты совместно с инженерами будут работать только над расчетными модулями, так что отладчики здесь не особо нужны. Они будут оценивать свою работу по тем цифрам, которые они получают.

Добавлено через 1 минуту
Цитата Сообщение от Tupiel Reuschin Посмотреть сообщение
Интересно, продают ли такое в виде преднастроенных серверов? Поисковые сервера же продают.
Вот и я ищу ответ на этот вопрос...
0
Модератор
Эксперт функциональных языков программирования
3135 / 2282 / 469
Регистрация: 26.03.2015
Сообщений: 8,884
03.09.2025, 13:49
Цитата Сообщение от steevis Посмотреть сообщение
Он представляет собой один exe-файл с несколькими файлами данных. Запускается на локальном компьютере. Необходимо привлекать программистов для удаленной работы над отдельными кусками кода.
Выделить отдельные "куски кода" ("расчёты") в отдельные проекты. Подключать их к основному проекту, используя какой-нибудь менеджер пакетов - Conan или что там есть для С++ - спросите в разделе форума по С++ (аналог дотнетовского nuget для С++).

Каждый пакет поместить в отдельный репозиторий и давать к нему доступ только тому, кто правит. Если есть какой-то общий код, то его можно вынести в отдельный пакет, который будут подключать другие пакеты (расчётные модули).
0
334 / 93 / 5
Регистрация: 19.07.2024
Сообщений: 516
03.09.2025, 14:33
Цитата Сообщение от steevis Посмотреть сообщение
Он представляет собой один exe-файл с несколькими файлами данных.
Цитата Сообщение от steevis Посмотреть сообщение
Программист имеет доступ только к тем файлам, которые касаются его работы. Остальное строго засекречено.
И как же по вашему каждый отдельный ограниченный программист будет компилировать и отлаживать этот самый exe-шник?

И самое весёлое начнётся, когда программа будет внезапно падать из-за неизвестного бага. И каждый программист будет заявлять: "Баг не у меня. У меня всё работает!"
Без код-ревью - никак. А значит - все программисты (отлаживающие exe-шник) должны видеть весь код - и свой и чужой.

Добавлено через 3 минуты
Цитата Сообщение от tsvt Посмотреть сообщение
когда 5 разным людям дать 5 разных кусков одного проекта, то при завершении работы получится 5 разных конфликтующих частей кода из-за того, что не было согласовывании между программистами и у них не было видения общей картины.
Точно!
Народная мудрость гласит: "У победы множество отцов, а неудача всегда сирота."
Так и с программингом: Баг всегда будет ничьим. Если у продукта более одного автора, то все будут валить друг на друга. Без возможности код-ревью кода соседа.
0
Модератор
Эксперт функциональных языков программирования
3135 / 2282 / 469
Регистрация: 26.03.2015
Сообщений: 8,884
03.09.2025, 16:58
Цитата Сообщение от jcxz Посмотреть сообщение
И как же по вашему каждый отдельный ограниченный программист будет компилировать и отлаживать этот самый exe-шник?
А ему и не нужно этот exe-шник отлаживать. У него есть модуль расчёта. Упрощённо - функция, которая принимает данные и возвращает данные. Ему достаточно убедиться, что функция делает это правильно. Для этого рядом можно положить (в тот же репозиторий) проект с юнит-тестами.
0
334 / 93 / 5
Регистрация: 19.07.2024
Сообщений: 516
03.09.2025, 18:07
Цитата Сообщение от Shamil1 Посмотреть сообщение
Ему достаточно убедиться, что функция делает это правильно. Для этого рядом можно положить (в тот же репозиторий) проект с юнит-тестами.
...И потом получается, что "функция это делает правильно" и вообще работает чудесно... в компе у автора... а как вставляешь её вызов в рабочее приложение - начинаются проблемы у других функций.
...потому как она оказывается портит чужие данные ...иногда.

Только - кого же это волнует? Автор говорит "У меня всё работает! А остальное - ваши проблемы, выпрямляйте руки!"
0
108 / 72 / 6
Регистрация: 08.08.2025
Сообщений: 716
03.09.2025, 19:56
Странная тема. Очень похоже на то, чтобы бесплатно привлекать людей и подсовывать им тест, вот мол решай, возьмем на работу. Потом их футболят.
И как-то наивно написано. Не исключаю, то это студент, которому надо написать проект. Или контрольные решать.
1
0 / 0 / 0
Регистрация: 16.05.2021
Сообщений: 24
03.09.2025, 22:10  [ТС]
Спасибо за участие.
Решение нашей задачи ближе всего к тому, что говорит Shamil1. Расчетные модули, которыми программист совместно с инженером занимаются дистанционно, действительно слабо связаны с остальной частью программы (в нашем случае). Для их отладки вполне достаточно решения тестовых задач с известными исходными данными и результатом.
В настоящее время сервер подключен к VPN, на нем установлены Git и кросс-компилятор C++. С помощью doxygen создана часть документации. Начинаем работы по созданию своего небольшого SDK. Дописываем простенькую пару "клиент-сервер", которая работает через командную строку, заливает рабочие файлы программиста в общий проект на сервак, запускает кросс-компилятор и скачивает полученный exe-шник.
Мысль о том, что это студент или кто-то хочет кого-то футболить очень странная.
Да, возможно, тема наивная и не очень корректная. Но я больше инженер, чем программист. Поэтому решаю свои задачи, как могу.
0
Windows must die
672 / 851 / 103
Регистрация: 23.11.2021
Сообщений: 5,000
Записей в блоге: 17
03.09.2025, 22:20
Цитата Сообщение от steevis Посмотреть сообщение
exe-шник
То бишь у вас там еще и для форточек что-то пишется из-под линукса?
// если что, в линуксе не существует "exe-шников"…
0
0 / 0 / 0
Регистрация: 16.05.2021
Сообщений: 24
03.09.2025, 22:35  [ТС]
Продукт кроссплатформенный. Есть сборки под Windows, есть под разные дистрибутивы Linux. Ядро продукта пишется, преимущественно, в IDE под Windows. Потом версии компилируются и тестируются под разными Linuxами. С этим проблем нет, все отлажено, все работает.
Задача - привлечь к работе над узкоспециализированными расчетными модулями специалистов и программистов. Каждый такой модуль весьма дорого стоит в плане денег, усилий и наличия эксклюзивных фишек, поэтому отдавать исходники проекта всем никак нельзя.
Так как большинство программистов, скорее всего, будет работать под виндой, то используем кросс-компилятор. С этим тоже проблем нет.
0
108 / 72 / 6
Регистрация: 08.08.2025
Сообщений: 716
04.09.2025, 06:22
Цитата Сообщение от steevis Посмотреть сообщение
я больше инженер, чем программист. Поэтому решаю свои задачи, как могу
Цитата Сообщение от steevis Посмотреть сообщение
это все сделаем сами
Цитата Сообщение от steevis Посмотреть сообщение
Условие с засекреченной частью самое важное из всех. Без него все теряет смысл.
А что за фирма ? Тоже секрет ? И это МЫ и Я очень странно.
Хотя бы направление какое указать, вычисления разные бывают, там много нюансов и обычно узкие спецы работают. Для таких случаев сразу много условий заранее говорится, особенно по оптимизации и ускорению вычислений.
Про засекреченность самое смешное.
И можно озвучить зарплату для тех, кто будет писать код? Наверное бесплатно. Понятно.
0
Модератор
Эксперт функциональных языков программирования
3135 / 2282 / 469
Регистрация: 26.03.2015
Сообщений: 8,884
04.09.2025, 10:05
Цитата Сообщение от jcxz Посмотреть сообщение
...И потом получается, что "функция это делает правильно" и вообще работает чудесно... в компе у автора... а как вставляешь её вызов в рабочее приложение - начинаются проблемы у других функций.
Проблем не будет, если "функция" не использует общее состояние. У нас, например, ничего не ломается, когда мы в приложение с UI подключаем nuget пакет для решения каких-то задач.

Цитата Сообщение от a380 Посмотреть сообщение
И можно озвучить зарплату для тех, кто будет писать код? Наверное бесплатно. Понятно.
Непонятно, откуда такой интерес к чужой зарплате. Ещё более непонятно, на чём основаны Ваши предположения о бесплатной работе. Если я отдаю на аутсорс какую-то конкретную задачу, зачем мне давать им доступ к исходному коду всей системы?

Упрощённый (надуманный) пример.
Я пишу Excel и хочу в язык добавить функции для вычисления дисперсии, корреляции и т.п. Разумно, если эту работу будут выполнять специально обученные люди, а не программисты, которые пишут GUI. Разумно, отдать эту работу на аутсорс, а не нанимать специалистов в штат на несколько месяцев. И было бы странным выдать этим сторонним специалистам исходный код всего Excel.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.09.2025, 10:05
Помогаю со студенческими работами здесь

Как из контейнера docker подключиться к внешней удалённой базе данных?
Изучаю докер и пытаюсь подключиться из контейнера к внешней базе данных, пока безуспешно. В...

Литература по тестированию программного обеспечения
Здравствуйте, уважаемые форумчане! Не могли бы Вы посоветовать литературу, посвященную...

инвестиционный проект программного обеспечения
Всем привет! Где можно найти расписанный инвестиционный проект какого нибудь программного...

Архитектура программного обеспечения
С самого начала прошу прощения за вероятно глупый вопрос. Возможно невероятно глупый. :D Не...

Конструирование программного обеспечения
Вместе с языком программирования хотел бы узнать как грамотно строить программы. Есть ли книжки на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru