발표자료 - 2021community/Algorithm-skills GitHub Wiki

1. TEAM INTRODUCTION

2조

👑 김지혜 윤상은 이예진 최문형
김지혜 윤상은 이예진 최문형
소프트웨어학과 4학년 소프트웨어학과 4학년 소프트웨어학과 4학년 소프트웨어학과 2학년
2018038034 2018038021 2018038008 2020039004




2. WHAT ABOUT OUR PROJECT

알고리즘 코딩테스트 합격을 위한 로드맵

주제 선정사유

팀원 4명 중 3명이 취업을 준비하고 있는 4학년 이기때문에 가장 공감이 가는 알고리즘 코딩테스트를 위한 로드맵을 주제로 선정하였다.

내용 구성

  1. 프로그래밍 언어
  2. 자료구조
    • 기초
    • 심화
  3. 알고리즘
    • 기초
    • 심화
    • 이것만은 꼭!
  4. 코딩 테스트
    • 해외
    • 국내




3. OVERALL WAY of WORKING

작업 순서도

작업 순서도
역할 김지혜
(총관리자)
윤상은 최문형 이예진
프로그래밍 언어
자료구조 기초
심화
알고리즘 기초
심화
이것만은 꼭!
코딩 테스트 국내
해외
README
리펙토링




👀 Policies

  • PR을 merge하기 위한 최소 approve 갯수
    • develop -> main release PR = 3개(모든 참여자의 동의 필요)
    • 위 경우를 제외한 모든 PR = 2개
  • approve 이후에 new commit이 있으면 기존의 approve는 취소된다.
  • 총관리자인 김지혜만 develop 브랜치에 머지 및 접근 가능하다.
  • 아무도 main 브랜치에는 직접적으로 접근할 수 없다. (PR을 통해서만 접근 가능)
  • 총관리자인 김지혜만 main 브랜치에 머지(릴리즈)할 수 있다.

🌊 git flow

feature/bugfix -> develop -> main
hotfix -> main




5. CONVENTIONS

  • feature - 기능적인 부분
  • hotfix - 급한 버그 수정
  • bugfix - 버그 수정
main
develop
feature/#{issue_number}
bugfix/#{issue_number}
hotfix/#{issue_number}
예외) README를 작업할 때에는 
 - base 브랜치를 'feature/#47' 로 한다.
 - 그리고 이 브랜치에서 'featrue/#47-{이름}' 으로 분기를 나눠 작업을 진행하도록 한다.
스크린샷 2021-09-06 오후 11 16 08

커밋 메세지

[{분류}] {분야} - {내용} (#{issue-number})

또는

[{분류}] - {내용} (#{issue-number})

형식으로 커밋메세지를 작성한다.

⋇ {분야} = 알고리즘, 자료구조, 언어, 코딩 테스트

예시

[블록 추가] {분야} - {이름} 블록 추가 (#{issue-number})
[블록 수정] {분야} - {내용}

[분류 추가] {분야} - 대/소분류 추가 (#{issue-number})
[분류 삭제] {분야} - {이름} 삭제 (#{issue-number})

[삭제] - {내용} (#{issue-number}) 
[수정] - {내용} (#{issue-number})
[추가] - {내용} (#{issue-number})

[리드미 수정] - {내용} (#47)
[리드미 추가] {분야} - {내용} (#47)
스크린샷 2021-09-06 오후 10 45 12 스크린샷 2021-09-06 오후 11 14 14




6. TEMPLATES

feature_request

기능 관련 이슈 생성 시 사용하는 템플릿

### **이런걸 할겁니다.**
어떤 작업을 할건지 간단하게 서술한다.

ex) '알고리즘'/'기초' 에 블록들을 추가할겁니다.

### **상세한 작업리스트**
어떤 작업을 할건지 상세하게 서술한다.

ex)
- [ ] 이진탐색
- [ ] 순차탐색
블록을 추가할 것입니다.

### **기타**
기타 참고사항(참고자료, 참고사진 등)이 있으면 첨부한다.
스크린샷 2021-09-06 오후 10 42 49

bug_report

버그 관련 이슈 생성 시 사용하는 템플릿

### **어떤 버그인가요?**
어떤 버그인지 간략하게 서술한다.

ex) 문자열 블록의 위키백과 설명 링크가 유실되었습니다.

### **어떻게 버그가 발견됐나요?**
어떻게 버그가 발생했는지, 어떤 경로로 발생했는지 상세하게 서술한다.

ex)
1. 메인페이지에서
2. '알고리즘' 대분류의
3. '심화' 소분류의 
4. '문자열' 블록의
5. 위키백과 링크가 유실되어 없는 페이지(not found 404)라고 뜹니다.

### **이렇게 해결해주세요.**
수정해야될 방향이나 해결방법을 제시한다.

ex)
유실된 링크 확인해주시고 정상적인 링크로 바꿔주세요.

### **참고 스크린샷**
버그 발생 상황에 대해 설명할 사진이나 영상 등을 첨부한다.

### **기타**
기타 참고사항 등을 적는다.
스크린샷 2021-09-06 오후 10 47 27 스크린샷 2021-09-06 오후 10 41 49
### **간략한 작업 요약**
어떤 작업을 했는지 간단하게 작업 내용을 요약해서 서술한다.

ex) '알고리즘'-'기초'에 블록들을 추가했습니다.

### **상세한 작업 내용**
어떤 작업을 했는지 상세하게 서술한다.

ex)
* 이진탐색
* 순차탐색
블록을 추가했습니다.

***
### **스크린샷**
리뷰어들이 작업 내용을 확인할 수 있도록 작업내용에 대해 스크린샷을 찍어 첨부한다.
(없을 경우 삭제한다.)

***
### **리뷰어들이 꼭 체크해야 하는 것**
리뷰어들이 꼭 체크해야하는 체크리스트로 이 체크리스트가 모두 체크된 경우에만 approve를 한다.

- [ ] 내용 중 오타가 있는지 확인했나요?
- [ ] 알맞은 이슈와 연결되어 있나요?
- [ ] 이슈의 기능이 구현되었나요?/버그가 해결되었나요?
- [ ] 커밋메세지가 바르게 올라왔나요?
- [ ] `feature/#47-{이름}`브랜치가 base 브랜치인 `feature/#47`로 병합되도록 해놨나요?(#47번 이슈에 대한 풀리퀘스트에만 추가)
스크린샷 2021-09-06 오후 10 44 59

💡 Side Bar

체계적으로 구분된 작업과 효율적인 협업을 위해 Side Bar의 정보들을 꼭 지정한다.

Assignees

이슈를 해결할 사람으로 지정한다.

Labels

작업내용에 해당되는 Label을 지정한다.

Label 내용
enhancement 새로운 기능
block 블록 추가/삭제/수정
documentation 문서
help wanted 도움이 필요함
question 질문 요청
refactoring 리팩토링
wonfix 기능의 문제나 오타 발생 - 수정 요청
bugfix 버그 수정 필요
hotfix 빠른 버그 수정 필요

Project

현재 진행중인 프로젝트인 2021년 커뮤니티 프로젝트로 지정한다.

Milestone

알고리즘 스킬스로 지정한다.




버전 포맷

release v<주번호>.<부번호>.<패치번호>[-<상태코드><수정카운트>]

  • 주 번호
    • Major 업데이트
    • 이하 버전 초기화 (e.g. v1.3.5 -> v2.0.0)
  • 부 번호
    • Minor 업데이트
    • 호환되는 신규 기능 추가 등
    • 이하 버전 초기화 (e.g. v1.3.5 -> v1.4.0)
  • 패치번호
    • 버그 수정, 기능 추가 등
    • 기능이 대폭 추가 또는 개선되거나 예정된 제거 기능 표시가 포함되는 경우 부 버전으로 올릴 수 있습니다. 유동적으로 상황에 따라 반영합니다.
  • 상태코드 (optional)
    • 알파 버전 (alpha)
      • 내부 개발 테스트 버전입니다.
    • 베타 버전 (beta)
      • 개발 최종 완성 전에 검사를 하기 위한 버전입니다.
    • 수정카운트 (optional)
      • 상태코드 뒤에 증가

버전 표기 예시

# 프로젝트 시작
release v0.1.0-alpha (iteration 1 종료)
release v0.1.0-alpha2 (iteration 2 종료)
release v0.1.0-alpha3 (iteration 3 종료)

# 베타 테스트 시작
release v0.1.0-beta (latest alpha)
release v0.1.0-beta2 (bug fix)

# 배포
release v0.1.0




8. TRIAL AND ERROR

feature/#19 브랜치

#19 브랜치에 팀원 모두가 접근해서 작업해야 하기때문에 feature/#19/sangeun 이런 식으로 브랜치 컨벤션을 정해서 사용했었다.
하지만 위와 같은 방법은 feature/#19 브랜치를 디렉토리와 같이 취급을 해버린거라서 feature/#19 브랜치에 접근할 때 에러가 발생했다.
따라서 공동작업을 하는 브랜치에 대한 컨벤션을 feature/#19-sangeun 이런 식으로 바꿔서 feature/#19 와 별개의 브랜치로 취급할 수 있게 하였다.

잘못된 분기점

develop 브랜치로 PR을 보내고 나면 관련없는 commit 들이 같이 올라가는 경우가 생겼다.
원격과 동기화시키지 않은 상태에서 작업을 하거나, 브랜치를 잘못 분기해서 생기는 일이었다.
항상 브랜치를 분기하기 전에 현재 develop에 위치하고 있는지, develop이 최신 상태인지 확인하는 습관을 들이기로 했다.

Release

릴리즈를 할 때 스쿼시 머지로 진행했는데 알고보니 main 브랜치는 중요한 브랜치기도 하고, 공동으로 사용하는 브랜치에는 rebase, squash 머지보단 일반 머지를 사용하는 경우가 많다고 하셔서 리버트하고 다시 머지를 진행했다.




9. RESULT

2주간의 대장정

스크린샷 2021-09-06 오후 10 34 12

스크린샷 2021-09-06 오후 11 20 29

스크린샷 2021-09-06 오후 10 31 41

Algorithm Skills 웹페이지

Web Skills Demo




10. ETC

⚠️ **GitHub.com Fallback** ⚠️