You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
353 lines
10 KiB
353 lines
10 KiB
# 초보자를 위한 데이터 과학 기여하기
|
|
|
|
초보자를 위한 데이터 과학 커리큘럼에 관심을 가져주셔서 감사합니다! 커뮤니티의 기여를 환영합니다.
|
|
|
|
## 목차
|
|
|
|
- [행동 강령](../..)
|
|
- [어떻게 기여할 수 있나요?](../..)
|
|
- [시작하기](../..)
|
|
- [기여 지침](../..)
|
|
- [풀 리퀘스트 프로세스](../..)
|
|
- [스타일 지침](../..)
|
|
- [기여자 라이선스 계약](../..)
|
|
|
|
## 행동 강령
|
|
|
|
이 프로젝트는 [Microsoft 오픈 소스 행동 강령](https://opensource.microsoft.com/codeofconduct/)을 채택했습니다.
|
|
자세한 내용은 [행동 강령 FAQ](https://opensource.microsoft.com/codeofconduct/faq/)를 참조하거나 추가 질문이나 의견이 있는 경우 [opencode@microsoft.com](mailto:opencode@microsoft.com)으로 연락하세요.
|
|
|
|
## 어떻게 기여할 수 있나요?
|
|
|
|
### 버그 신고
|
|
|
|
버그 신고를 작성하기 전에 기존 문제를 확인하여 중복을 피하세요. 버그 신고를 작성할 때 가능한 많은 세부 정보를 포함하세요:
|
|
|
|
- **명확하고 설명적인 제목 사용**
|
|
- **문제를 재현하는 정확한 단계 설명**
|
|
- **구체적인 예 제공** (코드 스니펫, 스크린샷)
|
|
- **관찰한 동작과 기대했던 동작 설명**
|
|
- **환경 세부 정보 포함** (운영 체제, Python 버전, 브라우저)
|
|
|
|
### 개선 사항 제안
|
|
|
|
개선 사항 제안을 환영합니다! 개선 사항을 제안할 때:
|
|
|
|
- **명확하고 설명적인 제목 사용**
|
|
- **제안된 개선 사항에 대한 상세한 설명 제공**
|
|
- **이 개선 사항이 왜 유용한지 설명**
|
|
- **다른 프로젝트에서 유사한 기능이 있다면 목록 작성**
|
|
|
|
### 문서 기여
|
|
|
|
문서 개선은 항상 환영합니다:
|
|
|
|
- **오타 및 문법 오류 수정**
|
|
- **설명의 명확성 향상**
|
|
- **누락된 문서 추가**
|
|
- **오래된 정보 업데이트**
|
|
- **예제나 사용 사례 추가**
|
|
|
|
### 코드 기여
|
|
|
|
다음과 같은 코드 기여를 환영합니다:
|
|
|
|
- **새로운 레슨이나 연습 문제**
|
|
- **버그 수정**
|
|
- **기존 노트북 개선**
|
|
- **새로운 데이터셋이나 예제**
|
|
- **퀴즈 애플리케이션 개선**
|
|
|
|
## 시작하기
|
|
|
|
### 사전 준비
|
|
|
|
기여하기 전에 다음을 준비하세요:
|
|
|
|
1. GitHub 계정
|
|
2. 시스템에 Git 설치
|
|
3. Python 3.7+ 및 Jupyter 설치
|
|
4. Node.js 및 npm (퀴즈 앱 기여를 위한)
|
|
5. 커리큘럼 구조에 대한 이해
|
|
|
|
자세한 설치 지침은 [INSTALLATION.md](INSTALLATION.md)를 참조하세요.
|
|
|
|
### 포크 및 클론
|
|
|
|
1. GitHub에서 **저장소를 포크**하세요.
|
|
2. 로컬에 **포크를 클론**하세요:
|
|
```bash
|
|
git clone https://github.com/YOUR-USERNAME/Data-Science-For-Beginners.git
|
|
cd Data-Science-For-Beginners
|
|
```
|
|
3. **업스트림 원격 추가**:
|
|
```bash
|
|
git remote add upstream https://github.com/microsoft/Data-Science-For-Beginners.git
|
|
```
|
|
|
|
### 브랜치 생성
|
|
|
|
작업을 위한 새 브랜치를 생성하세요:
|
|
|
|
```bash
|
|
git checkout -b feature/your-feature-name
|
|
# or
|
|
git checkout -b fix/your-bug-fix
|
|
```
|
|
|
|
브랜치 명명 규칙:
|
|
- `feature/` - 새로운 기능 또는 레슨
|
|
- `fix/` - 버그 수정
|
|
- `docs/` - 문서 변경
|
|
- `refactor/` - 코드 리팩토링
|
|
|
|
## 기여 지침
|
|
|
|
### 레슨 콘텐츠에 대한 기여
|
|
|
|
레슨을 기여하거나 기존 레슨을 수정할 때:
|
|
|
|
1. **기존 구조를 따르세요**:
|
|
- README.md에 레슨 콘텐츠 포함
|
|
- 연습 문제를 포함한 Jupyter 노트북
|
|
- 과제 (해당되는 경우)
|
|
- 사전 및 사후 퀴즈 링크
|
|
|
|
2. **다음 요소를 포함하세요**:
|
|
- 명확한 학습 목표
|
|
- 단계별 설명
|
|
- 주석이 포함된 코드 예제
|
|
- 연습 문제
|
|
- 추가 자료 링크
|
|
|
|
3. **접근성을 고려하세요**:
|
|
- 명확하고 간단한 언어 사용
|
|
- 이미지에 대체 텍스트 제공
|
|
- 코드 주석 포함
|
|
- 다양한 학습 스타일을 고려
|
|
|
|
### Jupyter 노트북에 대한 기여
|
|
|
|
1. **모든 출력 지우기**:
|
|
```bash
|
|
jupyter nbconvert --clear-output --inplace notebook.ipynb
|
|
```
|
|
|
|
2. **설명이 포함된 마크다운 셀 추가**
|
|
|
|
3. **일관된 포맷 사용**:
|
|
```python
|
|
# Import libraries at the top
|
|
import pandas as pd
|
|
import numpy as np
|
|
import matplotlib.pyplot as plt
|
|
|
|
# Use meaningful variable names
|
|
# Add comments for complex operations
|
|
# Follow PEP 8 style guidelines
|
|
```
|
|
|
|
4. **노트북을 완전히 테스트**한 후 제출
|
|
|
|
### Python 코드에 대한 기여
|
|
|
|
[PEP 8](https://www.python.org/dev/peps/pep-0008/) 스타일 지침을 따르세요:
|
|
|
|
```python
|
|
# Good practices
|
|
import pandas as pd
|
|
|
|
def calculate_mean(data):
|
|
"""Calculate the mean of a dataset.
|
|
|
|
Args:
|
|
data (list): List of numerical values
|
|
|
|
Returns:
|
|
float: Mean of the dataset
|
|
"""
|
|
return sum(data) / len(data)
|
|
```
|
|
|
|
### 퀴즈 앱 기여
|
|
|
|
퀴즈 애플리케이션을 수정할 때:
|
|
|
|
1. **로컬에서 테스트**:
|
|
```bash
|
|
cd quiz-app
|
|
npm install
|
|
npm run serve
|
|
```
|
|
|
|
2. **린터 실행**:
|
|
```bash
|
|
npm run lint
|
|
```
|
|
|
|
3. **성공적으로 빌드**:
|
|
```bash
|
|
npm run build
|
|
```
|
|
|
|
4. **Vue.js 스타일 가이드** 및 기존 패턴 따르기
|
|
|
|
### 번역 기여
|
|
|
|
번역을 추가하거나 업데이트할 때:
|
|
|
|
1. `translations/` 폴더의 구조를 따르세요.
|
|
2. 언어 코드를 폴더 이름으로 사용 (예: 프랑스어는 `fr`)
|
|
3. 영어 버전과 동일한 파일 구조 유지
|
|
4. 퀴즈 링크에 언어 매개변수 추가: `?loc=fr`
|
|
5. 모든 링크와 포맷을 테스트
|
|
|
|
## 풀 리퀘스트 프로세스
|
|
|
|
### 제출 전
|
|
|
|
1. **최신 변경 사항으로 브랜치 업데이트**:
|
|
```bash
|
|
git fetch upstream
|
|
git rebase upstream/main
|
|
```
|
|
|
|
2. **변경 사항 테스트**:
|
|
- 수정된 모든 노트북 실행
|
|
- 퀴즈 앱 테스트 (수정된 경우)
|
|
- 모든 링크 확인
|
|
- 철자 및 문법 오류 확인
|
|
|
|
3. **변경 사항 커밋**:
|
|
```bash
|
|
git add .
|
|
git commit -m "Brief description of changes"
|
|
```
|
|
|
|
명확한 커밋 메시지 작성:
|
|
- 현재 시제 사용 ("Add feature" 대신 "Added feature" 사용하지 않음)
|
|
- 명령형 사용 ("Move cursor to..." 대신 "Moves cursor to..." 사용하지 않음)
|
|
- 첫 줄은 72자 이내로 제한
|
|
- 관련 문제 및 풀 리퀘스트 참조
|
|
|
|
4. **포크에 푸시**:
|
|
```bash
|
|
git push origin feature/your-feature-name
|
|
```
|
|
|
|
### 풀 리퀘스트 생성
|
|
|
|
1. [저장소](https://github.com/microsoft/Data-Science-For-Beginners)로 이동
|
|
2. "Pull requests" → "New pull request" 클릭
|
|
3. "compare across forks" 클릭
|
|
4. 포크와 브랜치 선택
|
|
5. "Create pull request" 클릭
|
|
|
|
### PR 제목 형식
|
|
|
|
다음 형식을 따르는 명확하고 설명적인 제목 사용:
|
|
|
|
```
|
|
[Component] Brief description
|
|
```
|
|
|
|
예시:
|
|
- `[Lesson 7] Fix Python notebook import error`
|
|
- `[Quiz App] Add German translation`
|
|
- `[Docs] Update README with new prerequisites`
|
|
- `[Fix] Correct data path in visualization lesson`
|
|
|
|
### PR 설명
|
|
|
|
PR 설명에 포함할 내용:
|
|
|
|
- **무엇**: 어떤 변경을 했는지
|
|
- **왜**: 이러한 변경이 왜 필요한지
|
|
- **어떻게**: 변경을 어떻게 구현했는지
|
|
- **테스트**: 변경 사항을 어떻게 테스트했는지
|
|
- **스크린샷**: 시각적 변경 사항이 있다면 스크린샷 포함
|
|
- **관련 문제**: 관련 문제 링크 (예: "Fixes #123")
|
|
|
|
### 리뷰 프로세스
|
|
|
|
1. **자동화된 검사**가 PR에서 실행됩니다.
|
|
2. **유지 관리자가 기여를 검토**합니다.
|
|
3. **피드백을 반영**하여 추가 커밋 작성
|
|
4. 승인되면 **유지 관리자가 PR을 병합**합니다.
|
|
|
|
### PR 병합 후
|
|
|
|
1. 브랜치 삭제:
|
|
```bash
|
|
git branch -d feature/your-feature-name
|
|
git push origin --delete feature/your-feature-name
|
|
```
|
|
|
|
2. 포크 업데이트:
|
|
```bash
|
|
git checkout main
|
|
git pull upstream main
|
|
git push origin main
|
|
```
|
|
|
|
## 스타일 지침
|
|
|
|
### 마크다운
|
|
|
|
- 일관된 제목 수준 사용
|
|
- 섹션 간 빈 줄 포함
|
|
- 언어 지정이 포함된 코드 블록 사용:
|
|
````markdown
|
|
```python
|
|
import pandas as pd
|
|
```
|
|
````
|
|
- 이미지에 대체 텍스트 추가: ``
|
|
- 줄 길이는 적당히 유지 (약 80-100자)
|
|
|
|
### Python
|
|
|
|
- PEP 8 스타일 가이드 준수
|
|
- 의미 있는 변수 이름 사용
|
|
- 함수에 docstring 추가
|
|
- 적절한 경우 타입 힌트 포함:
|
|
```python
|
|
def process_data(df: pd.DataFrame) -> pd.DataFrame:
|
|
"""Process the input dataframe."""
|
|
return df
|
|
```
|
|
|
|
### JavaScript/Vue.js
|
|
|
|
- Vue.js 2 스타일 가이드 준수
|
|
- 제공된 ESLint 구성 사용
|
|
- 모듈화된 재사용 가능한 컴포넌트 작성
|
|
- 복잡한 로직에 주석 추가
|
|
|
|
### 파일 구성
|
|
|
|
- 관련 파일을 함께 유지
|
|
- 설명적인 파일 이름 사용
|
|
- 기존 디렉토리 구조 따르기
|
|
- 불필요한 파일 커밋 금지 (.DS_Store, .pyc, node_modules 등)
|
|
|
|
## 기여자 라이선스 계약
|
|
|
|
이 프로젝트는 기여와 제안을 환영합니다. 대부분의 기여는 기여자 라이선스 계약 (CLA)에 동의해야 하며, 이를 통해 기여자가 기여를 사용할 권리를 가지고 있음을 선언합니다. 자세한 내용은 https://cla.microsoft.com을 참조하세요.
|
|
|
|
풀 리퀘스트를 제출하면 CLA 봇이 자동으로 CLA 제공 여부를 결정하고 PR에 적절히 표시합니다 (예: 라벨, 댓글). 봇이 제공하는 지침을 따르세요. 이는 CLA를 사용하는 모든 저장소에서 한 번만 수행하면 됩니다.
|
|
|
|
## 질문이 있나요?
|
|
|
|
- [Discord 채널 #data-science-for-beginners](https://aka.ms/ds4beginners/discord)를 확인하세요.
|
|
- [Discord 커뮤니티](https://aka.ms/ds4beginners/discord)에 참여하세요.
|
|
- 기존 [문제](https://github.com/microsoft/Data-Science-For-Beginners/issues) 및 [풀 리퀘스트](https://github.com/microsoft/Data-Science-For-Beginners/pulls)를 검토하세요.
|
|
|
|
## 감사합니다!
|
|
|
|
여러분의 기여는 이 커리큘럼을 모두에게 더 나은 것으로 만듭니다. 기여해 주셔서 감사합니다!
|
|
|
|
---
|
|
|
|
**면책 조항**:
|
|
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다. |