- 😈 표시는 아직 팀원들 간 세부적인 협의가 더 필요한 부분이랍니다.
- 👽 표시는 조금 더 구체화가 필요한 부분이랍니다.
- 국혜경 (Hyekyung_Guk)
- 김고운 (GounKim)
- 박동석 (pds0309)
- 👽 최소 프로그래머스 2단계 통과 (다양한 알고리즘 문제들을 이해하고 알맞은 방법으로 접근할 수 있는 수준)
Daily Study
-
한 주동안 풀이할 알고리즘 문제 들이 정해지고
주차 별 issue에 올라오면 목요일 수업전까지 자유롭게 풀이하여 올린다. -
토요일 전까지 팀원들은 다른 사람이
PR(Pull Request)한 문제 풀이 코드를 확인한다.- 반드시 팀원들 중 한 명 이상이
Review해야master브랜치에Merge될 수 있다. - 개선 사항, 오류를 발견하면 자유롭게 코멘트와 함께 리뷰하도록 한다.
- 반드시 팀원들 중 한 명 이상이
-
풀지 못한 문제, 풀었지만 풀이과정에 도움이 필요한 문제가 있다면
주차 별 issue에 댓글을 남긴다. -
풀면서 공부하게 된
Tip또는알고리즘 지식등은 자유롭게PR하여 공유하도록 한다. -
issue나PR이 올라오는 부분은 가능하다면slack채널과 연동해 알림을 주도록 설정할 예정 -
기타 질문, 제안, 공유 등은
slack채널을 자유롭게 활용한다.
Weekly Study
-
매 주 토요일 화상 스터디를 2시에 진행하며 반드시 1시간 이상 진행한다.
-
👽
주차 별 issue의 댓글에 올라온 문제에 대해 다룬다. -
풀었던 문제들에 대해서 자유롭게 대화를 나누고 질의 및 응답하는 시간을 가진다.
-
이번 주 문제를 풀면서 추가적으로 공부했거나 공부가 필요하다고 느꼈던
배경지식 (문법 , 알고리즘, 자료구조, 수학적 지식 등)들에 대해 대화한다. -
다음 주까지 학습해오고 싶은
배경지식에 대해 논의하고 선정한다. -
다음 주까지 풀고 싶은 알고리즘 문제, 풀어야만 할 것 같은 알고리즘 문제를 선정한다.
-
😈 문제를 풀지 못했을 경우 시도한 부분까지는 올리고 다음 주간 스터디 전까지 다시 꼭 풀어서 제출 하도록 한다.
-
Commit 규칙 반드시 지킨다.!
-
풀이 시 시간을 체크해본다.
- 생각하는데 얼마나 걸렸는가? , 생각을 코드로 구현하는데 얼마나 걸렸는가? 등
-
어려우면 솔루션을 찾아보자.
- 나는 어떻게 시도 했고 솔루션은 어떻게 했는지를 주간 스터디에서 발표를 해보는게 어떨까?
-
프로그래머스 문제
- 주차_이름의_띄어쓰기는_언더바로_이니셜.java
- EX) w1_주차_소수_찾기_PDS.java
- 주차_이름의_띄어쓰기는_언더바로_이니셜.java
-
백준 문제
- 주차_문제번호_문제이름_이니셜.java
- EX) w3_2577_숫자의_개수_PDS.java
- 주차_문제번호_문제이름_이니셜.java
-
기타 문제
- 추가로 풀게 될 시 협의
-
팁 or 알고리즘 지식
- 자유롭게 명명하고 파일형태도 자유(hwp 제외)
-
예상 파일 구조로 내부 파일은 예시이다.
-
백준은 단계별 문제 테마를 디렉터리로, 프로그래머스는 레벨, 고득점 kit 테마를 디렉터리로 한다.
├── algorithm
│ ├── 힙.md
│ └── 스택과큐에대해알아보자.txt
├── tip
│ ├── 자바입출력.txt
│ └── 이런게좋다더라.pdf
├── programmers
│ ├── lv1
│ ├── lv2
│ └── lv3
├── baekjoon
│ ├── 입출력과_사칙연산
│ ├── for문
│ ├── 재귀
│ └── 브루트_포스내 문제풀이 올리는 방법
-
우리가 사용할 이 저장소에
branch는master를 제외하고 인원 수 만큼 두게 될 것입니다. -
먼저 해당 저장소를 자신의 로컬 컴퓨터 원하는 경로에
clone합니다. -
그다음 로컬에서 자신의
branch가 없다면 만들고 있다면 선택한 뒤 변경사항을 추가한 다음commit & push합니다. -
우리가 공통적으로 사용하는 이 저장소에 와서
master브랜치에Pull Request를 합니다. -
commit은 반드시 한 문제 단위로 합니다. 한번Pull Request해두면push할 때 마다Pull Request에 커밋 이력이 쌓일 것입니다.
Commit 메시지 이름 규칙
-
문제 풀고 처음 올릴 때
-
설명은
.txt또는.md형식으로 올리고 싶으면 코드와 함께 커밋해서 자유롭게 올리기 -
add [코딩사이트] 문제 이름 / 이름- EX) add [프로그래머스] 전화번호 목록 / 박동석
- EX) add [백준] 아스키 코드 / 박동석
-
-
아차차! 푼 문제를 수정하고 싶어요
PR이Merge되지 않았을 경우commit & push하면 알아서PR에 등록됩니다.fix [코딩사이트] 문제 이름 / 이름 / 변경내역 간단 요약- EX) fix [백준] 아스키 코드 / 박동석 / 변수명 변경
-
팁 or 알고리즘 이론 등 기타파일 올리거나 수정할 때
- 올릴 때 수정할 때
add,fix붙여주는 것 동일 - `add 파일제목 / 이름
- EX) add BFS란? / 박동석
- EX) fix BFS란? / 박동석 / 일부 내용 수정
- 올릴 때 수정할 때
Pull Request 이름 규칙
- [1주차] 이름
😃 [Git 간단설명 및 설치 , 환경설정]
로컬 에서 관리되는 버전 관리 시스템이다.
클라우드 방식 으로 관리되는 버전 관리 시스템이다.
우리는 앞으로의 스터디를 깃허브 에서 관리될 지금의 이 원격 저장소를
자신의 로컬 컴퓨터 환경으로 가져와서 자신의 변경 사항(문제 풀이 추가)을 반영한 뒤
원격 저장소에 자신의 변경내용에 대한 반영을 요청 하는 방법으로 진행하게 될 것입니다.
로컬에서 이 원격 저장소를 불러와 사용하기 위해 링크 에서 Git 을 먼저 설치합니다.
-
3시방향 Download for Windows 버튼을 누르면 알아서 다운로드 됩니다.
-
아무 변경사항 없이 Next 를 눌러 설치해줍니다. 설치에 성공하면 git bash가 설치되어있을 것입니다.
git bash 에 들어가서 다음과 같이 입력했을 때 버전 정보가 나오는지 확인합니다.
$ git version
먼저 git 사용자를 등록해주어야 합니다.
$ git config --global user.name "yourgithubname"
$ git config --global user.email "yourgithub@email"
$ git config --global core.quotepath false다음과 같은 명령어로 변경을 확인합니다.
$ git config --list
😃 [간단 용어 정리]
원격 저장소(Remote Repository)
- 우리가 지금 보고 있는 이 Github 상의 저장소를 말합니다.
로컬 저장소(Local Repository)
- 내 PC에 파일이 저장되어 있는 개인 저장소를 말합니다.
git clone
- 원격 저장소를 복제 해 내 로컬 저장소로 가져오는 것을 말합니다.
git commit
- 파일 또는 폴더에 대해 의미 있는 한 단위의 변화를 완료했음을 기록하는 행위입니다.
git push
원격저장소로commit내역들(변경 내역)을 업로드하는 행위입니다.- 나의 로컬 저장소에서 작업 후
commit & push하게 되면 나의 변경 이력이 모두가 공유하는 이 원격 저장소에 반영되는 것입니다.
branch
- 이 공유 원격저장소에 존재하는
나만의 작업공간이라고 우선 알아둡시다. - 로컬 저장소에서 내 이름의 브랜치를 만들고 거기서 작업 한 뒤
push도 원격 저장소의 내 이름으로 된 브랜치에 하게 될 것입니다.
Pull Request(PR)
-
그렇다면 내 작업물들이 포함된
내 이름으로 된 브랜치가 4개가 있겠네요! 우린 4명이거든요 -
각 브랜치에는 자기 자신의 코드만 있을 겁니다.
-
하지만 우리의 원격 저장소에는 하나의 브랜치가 더 존재합니다. 바로
master브랜치이죠 -
자기 자신의 브랜치와는 다르게
master브랜치에는 우리 모두의 문제 풀이가 들어있을 예정입니다. -
그러기 위해 필요한 과정이 pull request입니다.
-
내가 내 브랜치에서 내 문제를 모두 풀었으니 팀원 분들이 검토해주시고 문제 없으면
master브랜치로 합쳐 주세요!
라고 요청을 한다고 생각하면 됩니다.
merge
- PR 했던 나의 브랜치의 변경 내역들이
master브랜치로 합쳐지는 것을 의미합니다.
스터디에 필요한 용어는 언제든지 추가될 수 있습니다.
용어 추가나 잘못된 내용 수정은 새 브랜치 만들어서 언제든지 PR 하세요!
😃 [제 코드를 올리고 싶어요!]
먼저 앞으로 Git Bash 에서 활용할 리눅스 명령어 2개에 대해서 간단하게 알아봅시다.
$ ls : 현재 디렉터리의 모든 파일과 폴더 목록을 보여줍니다.
$ cd .. : 현재 디렉터리 기준 바로 이전 디렉터리로 이동합니다.
$ cd /경로/경로 : /경로/경로 디렉터리로 이동합니다.
- 원격 저장소 주소를 복사합니다.
Git bash를 실행시키고 원하는 디렉토리로 이동합니다. 저는 C드라이브의 algostudy 폴더로 하겠습니다.
$ cd /c/algostudy/git clone명령어를 통해원격 저장소로부터로컬 저장소를 생성합니다.
$ git clone https://github.com/WCDI-DGHG/algo-study.git 이런식으로 메시지가 나올겁니다.
Cloning into 'algo-study'...
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 9 (delta 1), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (9/9), 6.09 KiB | 692.00 KiB/s, done.
Resolving deltas: 100% (1/1), done.ls 명령어로 algo-study 폴더가 생성되었음을 확인합니다.
cd 명령어로 로컬 저장소 인 algostudy 폴더로 이동해봅시다.
위 사진처럼 (master) 라는 것이 보이시나요? 이게 branch 입니다.
현재 로컬저장소에서 master 브랜치하에 있다는 소리입니다.
위에서 각자 자신의 브랜치를 만들어 풀이를 올린다고 했었습니다.
자신만의 브랜치를 만들고 그 브랜치로 이동해봅시다.
브랜치 생성 - 이니셜로 합시다.
$ git branch pds브랜치 확인 - 방금 만든 브랜치가 나오면 성공
$ git branch 브랜치 이동 - 내 브랜치로 이동해줍니다.
$ git checkout pds이번에 풀었던 프로그래머스 짝수와 홀수 문제를 예시로 올려보겠습니다.
디렉터리 구조 규칙에 따라 /programmers/lv1 폴더에 문제를 올릴 것입니다.
다시 Git Bash 로 돌아와서 git status 명령어를 쳐줍시다
$ git status 뭔가 추가되었다는 것을 보여줍니다.
지금은 programmers 라는 폴더 자체도 처음 만들기 때문에 저런식으로 나오지만 앞으로는 내가 추가하고 수정한 파일들에 대해서 잘 보여줄 것입니다.
이미지 밑부분을 보면 git add 를 하라고 되어있습니다. git add 를 해봅시다
우리가 커밋할 파일을 추가해주는 작업입니다.
경로를 하나하나 입력할 필요는 없습니다 Tab 키를 잘 활용해보세요
git add programmers/lv1/짝수와_홀수_PDS.java.java위와 같이 add 할 파일을 직접 지정해줄 수도 있고 git add . 으로 변경사항이 있는 모든 파일을 추가할 수도 있습니다.
git status 명령어를 다시 한번 사용해볼까요?
커밋될 파일이 준비가 된 것입니다.
git commit 명령어로 커밋해줍니다.
git commit -m "커밋 메시지"
$ git commit -m "add [프로그래머스] 짝수와 홀수 / 박동석"git push 명령어로 원격 저장소에 업로드 해줍니다.
git push 원격저장소(origin) 브랜치
$ git push origin pds 최초로 pds 브랜치를 만들고 push했기 떄문에 원격저장소에 pds 브랜치가 생성되었다는 것을 확인할 수 있습니다.
원격저장소로 와보면 pds 브랜치가 생성되어있음을 확인할 수 있습니다.
이제 우리는 문제풀이를 추가한 내역을 Pull Request 를 통해 master 브랜치에 merge 요청을 하면 됩니다.
😃 [제 코드를 올리고 싶어요! - 코드 요약본]
위의 과정을 통해 clone 하고 branch 생성에 성공했다면 앞으로는 이 부분만 참고해서 코드를 올리면 될 것 같습니다.
- Gitbash 의 원격저장소에 와서 내 브랜치로 되어있는지 확인한다.
$ git checkout 브랜치이름-
코드를 적절한 디렉토리에 추가/수정한다.
-
git add명령어 수행
$ git add .git commit -m "메시지"로 변경 commit!
$ git commit -m "add [프로그래머스] 문제 이름 / 내이름" git push명령어를 통해 원격 저장소에 업로드
$ git push origin 브랜치이름 😃 [Pull Request 하기]
commit & push 하여 원격저장소 나의 브랜치에 문제풀이를 올렸다면
master 브랜치에 병합 요청을 해보겠습니다.
-
Pull request 내역을 통해 문제풀이를 팀원들과 공유하여 코드리뷰를 하기 위해
-
내 브랜치에는 내 코드만, matser 브랜치에는 우리 모두의 코드를 한눈에 보기 위해
저장소의 Pull Request 항목으로 와서 빨간박스 둘 중 하나 아무거나 클릭해줍니다.
밑으로 내리다 보면 다음과 같이 변경 내역을 모두 확인할 수 있습니다.
어디에서 어디로 Pull Request 하는지 잘 확인하고 해줍니다.
Pull Request 끝! 쉽죠? 그나저나 커밋 메시지 규칙이랑 풀리퀘스트 이름 규칙 틀렸네요
Pull Request 는 한 주간 한 번 하시면 됩니다. 커밋 푸쉬한 내 코드들은 알아서 여기 쌓일 것입니다.
😃 [ETC]
😃 [주간 스터디 후 꼭 해야 할 것!!!!!!!]
우리는 주간 스터디 후 각자 PR(Pull Request) 한 코드들을 master 브랜치에 합칠 것입니다.
그렇다면 우리가 원격 저장소로부터 clone 해서 만들었던 로컬 저장소는?
알아서 업데이트될까요?? 아닙니다.
따라서 주간 스터디 후 첫 문제 풀고 commit 하기 전에 다음과정을 꼭 진행해주셔야 됩니다
master 브랜치로 작업공간을 옮긴다.
$ git checkout master원격 저장소의 master 브랜치 내용으로 내 master 브랜치의 내용물들을 업데이트한다.
$ git fetch
$ git pull origin master이렇게 하면 로컬에서도 내 브랜치로는 내 코드들을 보고 , 작업하고
마스터 브랜치로 작업공간을 옮기면 스터디원들의 코드도 모두 볼 수 있게 됩니다.
단 마스터 브랜치로 직접 작업하시면 안됩니다.