Github Project 포트폴리오
Page content
개요
- 본 포스트는 깃허브 프로젝트 관리에 관한 것이다.
I. 프로필 작성하기
- 이력서에 준하는 프로필 또는 유니크한 것을 살리는 것이 좋다.
- 깔끔한 정장을 입고, 이쁘게 화장을 하고, 면접을 보러가듯이 인사담당자가 보는 이로 하여금 좋은 인상을 심어줘야 한다.
- 성명, 이메일, 전화번호 등은 가급적 자세하게 기록해두는 것이 좋다.
- 프로젝트는 현재 진행중인
Pinned Repositories
상위3~4
개 정도 올려 놓는 것이 좋다.
- 만약에 현재 기여하는 오픈 소스 리퍼지토리가 있다면 반드시 메인 화면에 고정시킨다.
II. 깃허브 설치 및 연동
- 잔디밭은 일종의 열정과 성실함을 보여준다.
- 데이터 싸이언티스트(=개발자)는 매일마다 새로운 것을 배우고 성장해야 한다. 이 업종을 떠나기 전까지는 우리는 매일 조금씩이라도 코딩하고 꾸준히 커밋하는 습관을 길러야 한다.
- 그런데, 깃허브가 처음이라면 어떻게 해야할까요?
(1) 깃허브 가입하기
(2) 저장소 추가하기
- 저장소 추가하는 방법은 왼쪽 상단
[create repository]
를 선택한다.
Repository name
: 프로젝트명을 기재한다.- 특별한 이유가 없다면,
[x] Initialize this repository with a README
클릭 후,[create repository]
버튼을 클릭해서 저장소를 추가한다.
(3) 깃 설치
- 깃을 설치하는 방법은 여러가지가 있다.
- 사전에
터미널 환경
에서~$ git --version
을 검색해서git version 2.23.0
과 같이 출력되는지 확인한다. - 만약, 설치가 되어 있지 않다면,
git
을 다운로드 하고 설치 한다.- 링크 : http://www.git-scm.com/
- 설치 시,
OS
에 주의한다.
(4) 깃 연동
git
을 설치했다면, 터미널 명령어를 통해서git
시스템과 연동한다.
$ git config --global user.name "your_name"
$ git config --global user.email "your_email"
- 예를 들면 아래와 같이 작성한다.
your_name
에 깃허브 계정의 이름,your_email
은 깃허브 계정의 이메일을 한다.
$ git config –global user.name my_name
$ git config –global user.email my_name@hanmail.net
(5) 프로젝트 폴더 다운로드
- 이제 프로젝트 폴더를 다운로드 받는다.
cd
를 활용하여 해당 폴더로 이동한 뒤 아래와 같이 코드 작성 후 실행한다.
$ cd /Users/your/folder/
$ mkdir git_project # 'git_project'라는 폴더를 만든다.
$ cd git_project/ # 해당 폴더로 이동한다.
$ git clone https://github.com/rain0430/project_temp.git
(6) 소스코드 파일 작성
- 간단하게
.py
파일을 작성해보자. - 파일명은
temp.py
로 작성한다. - 그리고 아래와 같이 소스코드를 작성한다. (예)
# -*- coding: utf-8 -*-
from time import sleep
print("프로젝트 파일 작성의 모범 답안입니다.")
def process_data(data):
print("1단계: 데이터 전처리 함수를 실행합니다. ")
modified_data = "3단계: " + data + "가 수정 완료 되었습니다."
sleep(3)
print("2단계: 데이터 전처리가 끝났습니다.")
return modified_data
def main():
data = "빅쿼리에서 온 데이터"
print(data)
modified_data = process_data(data)
print(modified_data)
if __name__ == "__main__":
main()
- 터미널에서 아래와 같이 실행한다.
$ python3 temp.py
프로젝트 파일 작성의 모범 답안입니다.
빅쿼리에서 온 데이터
1단계: 데이터 전처리 함수를 실행합니다.
2단계: 데이터 전처리가 끝났습니다.
3단계: 빅쿼리에서 온 데이터가 수정 완료 되었습니다.
- 해당 프로세스가 완료되었다면, 다음에는 커밋의 방법에 대해 살펴본다.
(7) docstrings in Python
-
함수에 문서화를 진행하는 것이다.
- 필자가 소개하는 것보다는 여기 자료를 참고하는 것을 추천한다.
- ref. https://wikidocs.net/16050
-
간단하게 표현하면 아래와 같이 진행할 수 있다.
def string_reverse(str1):
'''
Returns the reversed String. (본 함수의 제목과 같다. )
Parameters:
str1 (str): str1에 대해 설명하는 문구를 작성한다.
Returns:
reverse(str1): 반환값에 의미에 대해 설명하는 문구를 작성한다.
'''
reverse_str1 = ''
i = len(str1)
while i > 0:
reverse_str1 += str1[i - 1]
i = i- 1
return reverse_str1
print(string_reverse.__doc__)
Returns the reversed String. (본 함수의 제목과 같다. )
Parameters:
str1 (str): str1에 대해 설명하는 문구를 작성한다.
Returns:
reverse(str1): 반환값에 의미에 대해 설명하는 문구를 작성한다.
help(string_reverse)
Help on function some_function in module __main__:
some_function(argument1)
Summary or Description of the Function
Parameters:
argument1 (int): Description of arg1
Returns:
int:Returning value
- 그런데, 약간의 스타일이 존재하니, 본인만의 스타일로 구축해서 작성하는 것을 권한다.
III. 올바르게 커밋하기
- 커밋은 개발자로서 일하는 모습과 태도를 보여주는 객관적인 지표이다.
(1) 커밋의 단위
- 지양: 한꺼번에 모든 파일과 코드를 커밋하는 것
- 지향: 작은 단계로 커밋하여 코드 개발 과정을 가시적으로 보여줄 것
- 새로운 메서드 또는 클래스 추가시 마다 진행
- 실험 또는 성능 튜닝시에도 커밋
- 문서화 작업이 완료될 때에도 커밋
(2) 커밋 파일 추가
- 보통은
git add .
orgit add *
형태로 작성한다.
$ git add *
(3) 커밋 메시지 추가
- 여기서부터 실질적인 문서화의 핵심이다.
- 먼저 커밋 메시지를 작성하는 방법은 다음과 같다.
$ git commit -m "your message"
-
이 때 메시지를 입력하는 방법에 대해 소개한다.
- Add: 새로운 기능을 추가할 경우
- Fix: 버그를 고친 경우
- docs: 문서 수정한 경우
- style: 코드 포맷 변경, 세미 콜론 누락, 코드 수정이 없는 경우
- refactor: 프로덕션 코드 리팩터링 # 클린코드
- test: 테스트 추가, 테스트 리팩터링 (프로덕션 코드 변경 없음)
- chore: 빌드 테스크 업데이트, 패키지 매니저 설정할 경우 (프로덕션 코드 변경 없음)
- Document: 문서 정리 또는 추가
-
새로운 기능을 추가했다고 가정해보자.
$ git commit -m "Add: new function process_data created"
- 위 코드 작성이 끝난 뒤에는 아래와 같이 마지막으로
push
하면 된다.
$ git push origin master
- 그 외에 깃허브의 다양한 기능을 확인하시려면 책을 구매할 것을 권한다.
Git 교과서 (이호진 지음)
IV. 프로젝트 소개 글 작성하기
-
참고하면 좋은 프로젝트는
package 문서
들임.- 판다스 깃허브: https://github.com/pandas-dev/pandas
- dplyr 깃허브: https://github.com/tidyverse/dplyr
-
Awesome-Readme에는 프로젝트를 보다 이쁘게
큐레이션
할 수 있도록 만들어 놓고 있다. -
목차 작성하기
- 이 부분은 사실 개인이 어떻게 할 것인지에 따라 다르기는 하다.
- 다만, 강사가 생각하는 목차는 아래와 같이 서슬하는 게 좋다고 본다.
(1) 목차 구성하기
-
경진대회 소개 및 개요
- 주제
- 상금
- 참여인원: 성명/역할
- 등수 / 참여인원
-
경진대회 데이터 정의서
- 데이터셋_1
- 데이터셋_2
-
파일 구성 (예)
.
└── temp.py
- 경진대회 주요 이슈 및 해결
2020-07-03, 데이터 다운로드 및 DB 연동 완료
2020-07-04, 베이스라인 코드 작성 및 1차 제출 완료 (Score: 15.xxx)
2020-07-05, EDA 분석 시작 1일차 - 업종별 데이터 분석, 그런데 지역별 데이터 중 2개 업종 데이터 누락됨, (추가 확인 필요)
2020-07-06, (데이터 누락 건, 전처리 실수, 바로 잡음)
...
...
-
개발환경 Spec
- Linux 16.04 LTS, Anaconda, etc ..
- sklearn
-
주요 참고자료
- 논문, 뉴스, 기타 자료 등등
-
해당 프로젝트 코드 예제 (옵션)
$ git clone ~~
(2) 라이센스
- LICENSE.txt 작성 후, 라이센스를 명시한다.
- 오픈 소스 라이센스(영문), 오픈소스 SW 라이센스 종합시스템(국문) 라이센스 목록을 확인 후 기재한다.
- 라이센스를 등록하는 방법은 Github 저장소에 라이선스를 달아보자.
(3) 연락처
- 프로젝트의 신뢰성 제공
- 프로젝트 진행 상황과 업데이트 소식을 통해 적극적으로 내 프로젝트 홍보.
V. 오픈 소스 기여하기
- 오픈 소스란 무엇인가?
- 우리 모두는 사용자이면서 도한 공급자이어야 함
- 자유 배포, 소스 코드 공개, 2차적 저작물 등의 항목이 있음
- 처음 시작하는 사람에게 코드개발은 어려울 수 있다. 그 외에 다양한 활동이 존재
- 이슈 고치기
- 오탈자 고치기
- 이슈 제기하기
- 번역하기 - 공식문서와 도움말을 한국어로 번역함
- 이 부분은 처음 프로그래밍을 접하는 사람에게 큰 도움이 된다고 생각함
VI. What’s Next
- 이제, 경진대회가 마무리 된 뒤에는 시간을 들여서, 그 다음에는 코드 정리, 프로젝트 정리하는 데 또한 많은 시간을 할애해야 한다.
Good Code is its own documentation. Steve McConnell