-
Notifications
You must be signed in to change notification settings - Fork 1
Week2 ‐ 데일리 스크럼
Yong edited this page Nov 16, 2023
·
10 revisions
주말에 한 일
- Android
- 오프라인 개발
- BE
- 웹소켓, WebRTC 학습
오전 스크럼 내용
- WebSocket, WebRTC에 대한 논의 필요
- WebRTC는 음성 통화를 적용하게 될 때 학습 및 구현하기로 결정
- P2P 방식으로 사용하면 사용자 간에 버전 차이가 발생할 수 있어 동기화 문제가 발생할 가능성 인식
- 서버를 통한 동기화 방식으로 결정
계획 회의
-
통합
- 칸반 관리를 위해 Github MindSync_Sprint 프로젝트 생성
- 기존 backlog와 상세 이슈를 따로 관리하기 위함
-
BE
- Node.js 서버 배포
- DB 서버 각각 배포
- MySQL, NoSQL 각각 배포 예정
- 개발 환경 설정
-
Android
- 마인드 맵 그리기
- 개발 환경 설정
-
간단한 계획 회의 후 각자 나눠서 상세 계획
티 타임 때 나눈 이야기
- 모든 보드들이 로딩되는 것에 대한 생각이 필요할 것 같다.
- 썸네일을 이미지화 하거나, 기본 이미지를 띄워주거나..?
- 개발자 플레이스토어 계정이 있어야 하는데 계정 검토와 앱 검토가 오래 걸릴 수 있어서 빨리 시도해야 할 것 같다.
- 상준님 계정이 있어서 계정 검토는 없을지도..?
안드로이드 - 마인드 맵 만들기
-
데이터 구조? 클래스 만들기? ex) Plane, Node, …
-
Node(val childNodes: List) { }
-
CanvasNode(val childNodes: List) : Node{
fun drawNode() {
각도 계산…
branch 위치 계산… 등등
}
}
-
-
노드 그리기
-
자기 자신그림
-
childNode를 그리는데
-
이때 childNode의 위치를 결정
- childNode.size = 8 일때
- 360 / 8 = 45
- 45 ⇒ 상/하/좌/우/우상/좌상/좌하/우하
⇒ 그래서 브랜치는 Node의 위치가 결정되면 그릴수 있다
- childNode.size = 8 일때
-
-
이때 childNode와 자기자신 사이에 branch 그림
- 노드의 한 변의 중앙 ( 이때, 한 변은 상하좌우 변 중 parentNode와 가장 가까운 변)과
- parent 노드 각도(ex-45도) 연결
-
마인드맵 글자입력
-
자동 정렬 ( 최대 하위노드 개수 제한 설정 )
-
-
가지 그리기
-
화면 확대 / 축소
-
자동 색상 ( depth 별로 )
-
노드 추가 / 삭제
-
뒤로가기,앞으로 가기
- 기술적 도전으로 빼기
- 노드 드래그
- 곡선
- 빼기버튼
Backend - 배포 및 CRDT
- 서버 배포
- Backend 서버
- NoSQL 서버
- MySQL 서버
- 방 연결
- 각 방마다 데이터를 연결 할 수 있도록 테스트
- CRDT 구현
- 학습 및 구현
- 만약 라이브러리 사용할 거면 왜? 를 찾고, 직접 구현 가능하면 직접 구현하도록.
- DB 저장(NoSQL)
- 생성
- 삭제
- 학습 및 구현
- Github Action
- 수요일 마스터 클래스 끝나고 적용 예정
- MySQL
- 테이블 생성
어제 한 일
- Android
- 개발 환경 세팅
- 공통 개발용 라이브러리 추가 (Hilt, Navigation, Retrofit2)
- Databinding, ViewBinding 추가
- 깃허브 Action labels 자동
- Typography 추가
- Colors 추가
- 개발 환경 세팅
- BE
- 노드 서버 배포
- git action에 관련된 자동화는 수요일에 수업 듣고 진행
- 도커 사용 고려
오늘 할 일
- Android
- BaseActivity, BaseFragment
- 오늘부터 마인드맵 기능 개발 시작
- 대면으로 2시
- BE
- DB 고려
- 직접 구현 해보기 전 소켓 및 CRDT 라이브러리 구조 파악
이슈 전달
- BE
- 서버 하나 당 비용이 굉장히 비쌈
- DB를 여러 개 쓰는 것에 대한 부담이 있을 듯
- Android
- GitHub Actions에서 ktlint가 Gradle 파일을 검사하는 문제
- 캔버스는 데이터가 Position, 색상, 두께, 도형 타입
- 마인드 맵 가지 개수 제한을 둬야 할 지, 데이터 형식은 어떻게 저장할지 토론해 봐야 할 듯
CRDT
- CRDT 알고리즘을 Kotlin에서도 구현해야 하고, Javascript에서도 구현해야 함.
- Javascript 코드를 사용하거나, 다 작성한 Javascript를 변환도 가능
- 마인드 맵 데이터가 어떤 식으로 오게 될 것인지, 서버 쪽에서 데이터를 가공해야 할 필요가 있을 것인가?
어제 한 일
- Android
- 샘플 데이터를 토대로 그려주는 마인드 맵 그리기
- 노드 클래스 변경
- 마인드 맵 클래스에서 color 컬럼은 없애고, 중심 점을 기반으로 높이와 세로를 저장하기로 변경
- 라인 커스텀 그리기
- 노드의 중심점 기반으로 라인 그리기
- 그림 그리는 알고리즘 고민 중
- BE
- 소켓 라이브러리와 CRDT 라이브러리를 통해 샘플 제작
- 돌아가는 구조를 이해하고, 제작하면 빠를 것 같아서 샘플을 우선 제작
- 소켓 라이브러리와 CRDT 라이브러리를 통해 샘플 제작
오늘 할 일
- Android
- 노드 생성 위치, 알고리즘 작성
- 노드 추가 시 depth 별로 움직이는 로직 작성
- 일단 오늘 개발 가능 시간은 4~5시간
- 3명이서 Issue 3개를 분담해서 하는게 좋을거 같음.
- 예상 이슈는 드로잉 알고리즘, 텍스트 입력, 화면 확대/축소/스크롤/화면크기고정
- 선아 - 드로잉 알고리즘
- 상준 - 화면 확대/축소/스크롤/화면크기고정
- 재한 - 텍스트 입력
- BE
- CRDT 학습 및 구현
CRDT
- CRDT 는 Backend에서 구현한 뒤, Android는 추후 코드 변환이 필요 할 듯
- 뒤로 가기를 할 때 어떻게 저장 할 것인지
- 뒤로 가기는 기본 기능 구현 후 추가 하기로 결정
화면 구현
- 양방향 마인드 맵으로 진행 할 듯
- 마인드 맵에서 부모가 자식 노드를 기억 하도록 데이터 구조를 잡을 듯
어제 한 일
- Android
- K027 - 확대하고 축소 될 수 있도록 구현
- 확대 했을 시 화면을 벗어나는 경우 기존 그림이 안보이는 문제가 있어서 해결 할 예정
- K023 - 자동 정렬 알고리즘
- 버블맵일 경우 복잡할 것 같은데, 양방향 마인드 맵일 경우에 x, y만 구하면 될 것 같다.
- 확대 축소를 했을 경우에 계산을 계속 해야되나 고민했었는데, 상준님 코드를 보니 다른 방식으로 접근할 수 있을 것 같다.
- K029 - 노드 텍스트 입력
- 더블 클릭으로 처리할지, 팝업 창을 띄울지 고민하다가 더블 클릭 방식이 어려운 것 같아서 팝업 쪽으로 고민해보고 있다.
- K027 - 확대하고 축소 될 수 있도록 구현
- BE
- CRDT 라이브러리에서 직접 작성한 코드로 변경
- Git Action 활용 방법 고민
오늘 할 일
- Android
- 오후 2시에 오프라인으로 같이 하기로
- 노드가 화면 크기에 벗어나는 경우 노드가 안보이는 문제 해결
- BE
- 도커 활용 및 자동화 배포, DB 설치
- 자동으로 밤에는 서버를 끌 수 있도록 가능한 지 확인
- 공통
- 멘토링 질문 적기