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을 다운로드 하고 설치 한다.

(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

  • 함수에 문서화를 진행하는 것이다.

  • 간단하게 표현하면 아래와 같이 진행할 수 있다.

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 . or git add * 형태로 작성한다.
$ git add *

(3) 커밋 메시지 추가

  • 여기서부터 실질적인 문서화의 핵심이다.
  • 먼저 커밋 메시지를 작성하는 방법은 다음과 같다.
$ git commit -m "your message"
  • 원문: Udacity Git Commit Message Style Guide

  • 이 때 메시지를 입력하는 방법에 대해 소개한다.

    • 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 문서들임.

  • 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) 라이센스

(3) 연락처

  • 프로젝트의 신뢰성 제공
  • 프로젝트 진행 상황과 업데이트 소식을 통해 적극적으로 내 프로젝트 홍보.

V. 오픈 소스 기여하기

  • 오픈 소스란 무엇인가?
    • 우리 모두는 사용자이면서 도한 공급자이어야 함
    • 자유 배포, 소스 코드 공개, 2차적 저작물 등의 항목이 있음
  • 처음 시작하는 사람에게 코드개발은 어려울 수 있다. 그 외에 다양한 활동이 존재
    • 이슈 고치기
    • 오탈자 고치기
    • 이슈 제기하기
    • 번역하기 - 공식문서와 도움말을 한국어로 번역함
      • 이 부분은 처음 프로그래밍을 접하는 사람에게 큰 도움이 된다고 생각함

VI. What’s Next

  • 이제, 경진대회가 마무리 된 뒤에는 시간을 들여서, 그 다음에는 코드 정리, 프로젝트 정리하는 데 또한 많은 시간을 할애해야 한다.

Good Code is its own documentation. Steve McConnell