15주차에는 본격적으로 프로젝트가 시작되었습니다.
월요일에는 최종 프로젝트 팀 발표와 함께 아이디어 구상을 위한 회의가 주어졌습니다!
처음 팀이 발표되었을때 살짝의 헤프닝이 있었는데요 .. 예상과 다른 팀으로 발표가 되었고 살짝 기쁠 뻔 했지만 얼굴이 허옇게 질린 정근 쨔응의 분주한 노력으로 인해 팀은 정상화되었습니다.
한화 비전 체험관에서는 현재 한화비전의 기술력과 타겟 국가 및 서비스를 위주로 체험해 볼 수 있었는데요 ... 주제를 정하면서 많은 도움이 되었던 것 같습니다. 상세한 체험기는 또 기밀이라 이게 암튼 크흠 ..ㅠ
15주차에는 주로 기획 위주로 팀원들과 많은 얘기를 나누었습니다. 처음에는 그냥 해보고 싶은 아이디어 위주로 제가 많은 의견을 제시했지만 VEDA PM님께 피드백을 받으며 양쪽 어깨가 다 부서져버렸습니다.🤪🤪
AI개발이 아니면서 한화 비전의 CCTV를 활용할 수 있는 프로젝트 .
그러면서 임베디드 교육 목적에 충실하게 임베디드 요소를 녹여낼 수 있는 무언가 .
사실상 6회차의 조들 중에서는 가장 주제를 늦게 선정한 팀이었습니다.
주제는 다음 주차 기록에 공개하겠으니 궁금한 사람은 1주일 기다리시라!!!
아무튼 재미있는 요소들과 조금은 구현이 힘들 것 같은 요소들을 섞어서 기획서를 제출하고 나니 이번주는 다소 내용이 빈약하다고 할 것 같습니다.
그래서 협업을 위한 깃허브 사용법을 정리해보도록 하겠습니다.
반응이 좋다면 Jira 까지도 ...
처음에는 각자 repo를 따로 만들었습니다.
(QT Client repo, Server repo, STM32 repo…).
근데 실제로 코드를 통합 테스트하려면 repo 4개를 다 클론해야 하고, 공통 프로토콜 바뀌면 4개의 코드를 모두 변경해야한다는 문제가 발생할 수 있었습니다.
그래서 결정했습니다.
하나의 monorepo로 통합하자!
현재 repo 구조 예시:
Project/
├── hardware/
│ └── stm32-rfid-laser/ # STM32CubeIDE 프로젝트
├── server/ # Raspberry Pi Python 서버 + OpenCV
├── client/ # QT C++ 클라이언트
├── shared/ # 공통 프로토콜, config, utils
├── docs/ # 기획서, 아키텍처 다이어그램
├── tests/ # 통합 테스트
└── .github/workflows/ # CI/CD
하나의 repo에서 전체 시스템을 볼 수 있어서 디버깅도, 리팩토링도 훨씬 수월해졌습니다.
팀이 작아서 복잡한 브랜치 전략을 적용하기로 했습니다.
main 브랜치 = 항상 배포 가능 + protected (직접 push 금지)
모든 작업은 새 브랜치에서 시작
브랜치 이름 형식: {type}/{이슈번호}-{짧은-설명}
| 타입 | 예시 |
|---|---|
| feature/ | feature/123-camera-age-gender-analysis |
| fix/ | fix/89-server-uart-timeout |
| refactor/ | refactor/67-simplify-rtsp-handler |
| docs/ | docs/112-update-architecture-diagram |
| chore/ | chore/15-setup-github-actions |
커밋 메시를 통일해 팀원간의 원활한 git code 리뷰를 위해서 Conventional Commits를 도입했습니다.
<type>[scope]: <짧은 설명>
[본문 - 자세한 설명]
[footer - Closes #123 등]
feat(server): implement age-gender validation logic
- Load pre-trained AgeNet & GenderNet models
- Compare RFID card type with camera result
- Add configurable threshold in config.yaml
Closes #123
chore 예시 (monorepo 초기 세팅):
chore(repo): bootstrap SFEPS monorepo
Initialize directory structure for hardware, server, client, shared, docs, tests.
Add CONTRIBUTING.md with branch & commit rules.
Create .github/workflows skeleton.
GitHub Settings → Branches → Add branch protection rule
main은 최대한 보호호가 위해서 protection rule을 설정했습니다.
앞으로 프로젝트를 진행해나가면서 어떤 어려움이 있는지 가장 어려운 것은 무엇인지 git으로 협업하는 방법을 더 업데이트하도록 하겠습니다.
미우나 고우나 팀원이겠죠.....?
프로젝트가 시작한지 2주차를 접어들어가는 이 시점에도 묵묵히 git을 공부하는 한 친구가 있습니다. .. 미운 놈 떡하나 더 준다고...
내일은 그에게 떡을 줘야겠어요. 😩😩
누군지 모르겠지만 팀을 위해 git을 열심히 공부하는 모습. 멋있네요