From 9853404824b148f2c80f5390e75815e66fb1e60b Mon Sep 17 00:00:00 2001 From: Cotidie Date: 2023年7月31日 13:31:53 +0900 Subject: [PATCH 01/22] =?UTF-8?q?docs:=202=EB=8B=A8=EA=B3=84=20=ED=8B=80?= =?UTF-8?q?=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 43 +++++++------------------------------------ 1 file changed, 7 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index fcd44c6..a57c0f6 100644 --- a/README.md +++ b/README.md @@ -1,38 +1,9 @@ -# Git Study -- [1️⃣️ Git 기초](#1️⃣️-git-기초) -- [2️⃣️ Git 협업](#2️⃣️-git-협업) -- [3️⃣️ 협업 중 문제상황](#3️⃣️-협업-중-문제상황) -- [4️⃣️ 동아리 협업](#4️⃣️-동아리-협업) -- [🔗️ 참조](#️-참조) +# 2️⃣️ Git 협업 +![git-collaboration](https://media.licdn.com/dms/image/C4E0DAQGYq7DdDvIr6g/learning-public-crop_288_512/0/1568669538450?e=2147483647&v=beta&t=jbk5EPqUfoeQQbGBYFVVpO6_iW_0ZMskzP2qIx4MtnQ) +앞서 학습한 git 커맨드를 이용해 간단한 계산기를 함께 만들어봅시다. 이 과정에서 작업내용을 되돌려보기도 하고, 충돌도 해결해보고, 자신의 브랜치를 최신 상태로 업데이트해보기도 합니다. +## 시나리오 +어떤 상황들을 미리 준비해둘까요? -![learn-git](https://i0.wp.com/blog.nextstacks.com/wp-content/uploads/2021/11/Reasons-to-Learn-Git-as-a-Developer-New.png?fit=1280%2C720&ssl=1) - 동아리 Git 스터디/워크샵을 위한 리포지토리입니다. 스터디는 실습 형식으로 총 4단계로 구성되어 있으며 2~3일에 걸쳐 진행합니다. git 커맨드라인 환경에서 진행하므로 사전에 [동아리 개발환경 설정](https://github.com/ApptiveDev/.github/blob/main/docs/Dev%20Environment%20Setup.md) 문서를 따라주시기 바랍니다. 또, 스터디를 진행하면서 부족한 부분은 계속 보완해주시기 바랍니다. -- 개인의 선호에 따라 GUI 툴 활용 가능 (GitKraken, SourceTree, Github GUI 등) - -## 1️⃣️ Git 기초 -### 🎯️ 목표 -git과 github의 차이점, git이 동작하는 과정, git 기본 명령어를 알아봅시다! -### 📜️ 진행 -- `step-1` 브랜치로부터 자신의 브랜치를 생성합니다. -- `README`에 주어진 키워드를 조사하고 본인의 README를 작성합니다. -- 작성 후 `step-1` 브랜치로 Pull Request를 올립니다. - -## 2️⃣️ Git 협업 -### 🎯️ 목표 -앞서 익힌 git 명령어를 활용해 간단한 협업을 진행해봅니다. - -### 📜️ 진행 - -## 3️⃣️ 협업 중 문제상황 -### 🎯️ 목표 -협업 중 맞닥뜨릴 수 있는 다양한 문제상황을 git 명령어로 해결해봅니다. -### 📜️ 진행 - -## 4️⃣️ 동아리 협업 -### 🎯️ 목표 -[동아리 브랜치 관리전략](https://github.com/ApptiveDev/.github/blob/f9a2f448b57225c3921dc774e8b7800c3289e878/docs/CONTRIBUTING.md)을 지키며 협업을 진행해봅니다. -### 📜️ 진행 - -## 🔗️ 참조 -- [누구나 쉽게 이해할 수 있는 Git 입문](https://backlog.com/git-tutorial/kr/) +## 진행 +스터디를 어떻게 진행할까요? From 7dbc800f11dff49d87cab7ff6c275fdc73320b65 Mon Sep 17 00:00:00 2001 From: Mingi Cho <81455273+chomingi@users.noreply.github.com> Date: Tue, 1 Aug 2023 21:48:13 +0900 Subject: [PATCH 02/22] Update step2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit step3에서 다뤄야하는 내용이 조금 포함된것 같습니다. 리뷰 부탁드립니다. --- README.md | 132 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 130 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a57c0f6..de4f8f5 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,137 @@ # 2️⃣️ Git 협업 + ![git-collaboration](https://media.licdn.com/dms/image/C4E0DAQGYq7DdDvIr6g/learning-public-crop_288_512/0/1568669538450?e=2147483647&v=beta&t=jbk5EPqUfoeQQbGBYFVVpO6_iW_0ZMskzP2qIx4MtnQ) 앞서 학습한 git 커맨드를 이용해 간단한 계산기를 함께 만들어봅시다. 이 과정에서 작업내용을 되돌려보기도 하고, 충돌도 해결해보고, 자신의 브랜치를 최신 상태로 업데이트해보기도 합니다. ## 시나리오 -어떤 상황들을 미리 준비해둘까요? + +### [사칙연산] + +1. 팀리더가 GitHub에 'simple-calculator'라는 저장소를 생성합니다. +2. 초기 파이썬 프레임워크가 메인 브랜치에 준비되어 있으니 팀 리더는 이를 메인 브랜치에 올려놓습니다. +3. 참가자들은 각자의 기능(사칙연산)을 개발하고 이를 메인 브랜치에 합치려 합니다. + +- 이때 5명 이상인 팀은 사칙연산 + 나머지 구하기를 진행합니다. + +4. 나눗셈을 맡은 참가자들은 일부러 분모에 0일 경우를 고려하지 않고 코드를 작성하고 이슈를 발생시킵니다. ## 진행 -스터디를 어떻게 진행할까요? + +1. Fork와 클론 + +각 참가자는 'simple-calculator' 저장소를 Fork하고, 자신의 로컬 환경으로 Clone합니다. + +2. 브랜치 생성 및 작업 시작 + +각 참가자는 자신의 기능에 맞는 브랜치를 생성하고, 해당 브랜치에서 기능을 완성합니다. + +3. 오류 코드 작성 + +나눗셈과 나머지를 맡은 참가자들은 일부러 오류를 고려하지 않은 코드를 작성하고 커밋합니다. + +4. 커밋 및 Push + +모든 참가자들은 완성된 기능 혹은 오류를 포함한 코드를 커밋하고, Fork한 저장소로 Push합니다. + +5. Pull Request 생성 + +원본 저장소에 PR을 생성합니다. 다른 참가자들은 해당 PR을 리뷰하고 피드백을 제공합니다. + +- PR 예시 형식 + +6. 머지 및 이슈 발생 + +리뷰가 완료되면 PR이 머지됩니다. 오류나 문제가 발견되면, 이슈를 생성합니다. + +7. 이슈 해결 + +이슈를 확인한 참가자는 새로운 브랜치를 생성하여 이슈를 해결하고 커밋합니다. "Fixes #이슈번호"를 포함하여 커밋합니다. + +8. PR 재생성 및 머지 + +오류 해결 후 원본 저장소에 다시 PR을 생성합니다. 리뷰 후 PR이 머지됩니다. 9. 이슈 확인 및 종료 + +해당 이슈는 "Fixes #이슈번호"를 포함한 커밋으로 인해 자동으로 닫힙니다. +참가자들은 이 과정을 통해 GitHub 협업, 이슈 관리, PR 생성 및 머지, 그리고 충돌 해결의 전체적인 과정을 경험하게 됩니다. + +## 상세 + +### 저장소 생성(팀 리더) + +``` +# 저장소 생성 +mkdir simple-calculator +cd simple-calculator + +# git 저장소 초기화 +git init + +# 초기 코드 작성 (IDE로 작성하셔도 됩니다!) +echo "코드">> calculator.py + +# 깃에 추가하기 +git add calculator.py + +# 깃에 커밋하기 +git commit -m "Initialize calculator with add function." + +# GitHub에 원격 저장소 생성 후 연결 (GitHub에서 생성한 후) +# 혹은 먼저 생성후에 clone +git remote add origin [GitHub 저장소 URL] +git push -u origin master + +``` + +### 기능 구현 (4명) + +``` +# 저장소 클론 +git clone [GitHub 저장소 URL] +# 디렉토리 이동 +cd simple-calculator + +# 브랜치 생성 및 이동 +# 브랜치 생성전략 참조 +git checkout -b feature-[구현할 기능명] + +# 코드 작성 (IDE로 작성하셔도 됩니다!) +echo "코드">> calculator.py + + +# 커밋 및 Push +git add calculator.py +git commit -m "Feature [구현한 기능명]" +git push origin [자신의 브랜치명] + +# GitHub에서 PR 생성 +# PR 명명 전략 참조 +``` + +### 코드 리뷰 및 merge (팀 리더 or 코드리뷰어) + +팀 리더는 GitHub에서 개발자 A와 B의 PR을 확인하고 리뷰합니다. + +오류가 존재한다면 PR에서 이를 comment로 남깁니다. + +### 이슈 생성 (팀 리더 or 코드리뷰어) + +GitHub의 'Issues' 탭에서 새로운 이슈 생성: + +제목 예시: "나눗셈 기능 구현에서 분모 0으로 나누는 문제 발생" +내용: "0으로 나누었을 시에는 오류 메세지가 출력되도록 변경 요청 드립니다." + +### 이슈 해결 + +``` +# 오류가 발생한 브랜치로 이동 +git checkout [브랜치명] + +# 코드 수정 (IDE로 작성하셔도 됩니다!) +echo "코드">> calculator.py + +# 커밋 및 Push +git add calculator.py +git commit -m "Fix 나눗셈 분모 0으로 나누는 이슈. Fixes #1" +#하고 숫자들 제목에 작성하게 된다면 이슈번호 1을 해결한다는 내용이 포함된다. +git push origin [브랜치명] +``` From 27697e1ee5e952ea8b6f26b71afd3dca83c7918b Mon Sep 17 00:00:00 2001 From: Mingi Cho <81455273+chomingi@users.noreply.github.com> Date: Tue, 1 Aug 2023 21:53:38 +0900 Subject: [PATCH 03/22] Update README.md --- README.md | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index de4f8f5..cf479fa 100644 --- a/README.md +++ b/README.md @@ -17,42 +17,44 @@ ## 진행 -1. Fork와 클론 +### 1. Fork와 클론 -각 참가자는 'simple-calculator' 저장소를 Fork하고, 자신의 로컬 환경으로 Clone합니다. +- 각 참가자는 'simple-calculator' 저장소를 Fork하고, 자신의 로컬 환경으로 Clone합니다. -2. 브랜치 생성 및 작업 시작 +### 2. 브랜치 생성 및 작업 시작 -각 참가자는 자신의 기능에 맞는 브랜치를 생성하고, 해당 브랜치에서 기능을 완성합니다. +- 각 참가자는 자신의 기능에 맞는 브랜치를 생성하고, 해당 브랜치에서 기능을 완성합니다. -3. 오류 코드 작성 +### 3. 오류 코드 작성 -나눗셈과 나머지를 맡은 참가자들은 일부러 오류를 고려하지 않은 코드를 작성하고 커밋합니다. +- 나눗셈과 나머지를 맡은 참가자들은 일부러 오류를 고려하지 않은 코드를 작성하고 커밋합니다. -4. 커밋 및 Push +### 4. 커밋 및 Push -모든 참가자들은 완성된 기능 혹은 오류를 포함한 코드를 커밋하고, Fork한 저장소로 Push합니다. +- 모든 참가자들은 완성된 기능 혹은 오류를 포함한 코드를 커밋하고, Fork한 저장소로 Push합니다. -5. Pull Request 생성 +### 5. Pull Request 생성 -원본 저장소에 PR을 생성합니다. 다른 참가자들은 해당 PR을 리뷰하고 피드백을 제공합니다. +- 원본 저장소에 PR을 생성합니다. 다른 참가자들은 해당 PR을 리뷰하고 피드백을 제공합니다. - PR 예시 형식 -6. 머지 및 이슈 발생 +### 6. 머지 및 이슈 발생 -리뷰가 완료되면 PR이 머지됩니다. 오류나 문제가 발견되면, 이슈를 생성합니다. +- 리뷰가 완료되면 PR이 머지됩니다. 오류나 문제가 발견되면, 이슈를 생성합니다. -7. 이슈 해결 +### 7. 이슈 해결 -이슈를 확인한 참가자는 새로운 브랜치를 생성하여 이슈를 해결하고 커밋합니다. "Fixes #이슈번호"를 포함하여 커밋합니다. +- 이슈를 확인한 참가자는 새로운 브랜치를 생성하여 이슈를 해결하고 커밋합니다. "Fixes #이슈번호"를 포함하여 커밋합니다. -8. PR 재생성 및 머지 +### 8. PR 재생성 및 머지 -오류 해결 후 원본 저장소에 다시 PR을 생성합니다. 리뷰 후 PR이 머지됩니다. 9. 이슈 확인 및 종료 +- 오류 해결 후 원본 저장소에 다시 PR을 생성합니다. 리뷰 후 PR이 머지됩니다. -해당 이슈는 "Fixes #이슈번호"를 포함한 커밋으로 인해 자동으로 닫힙니다. -참가자들은 이 과정을 통해 GitHub 협업, 이슈 관리, PR 생성 및 머지, 그리고 충돌 해결의 전체적인 과정을 경험하게 됩니다. +### 9. 이슈 확인 및 종료 + +- 해당 이슈는 "Fixes #이슈번호"를 포함한 커밋으로 인해 자동으로 닫힙니다. +- 참가자들은 이 과정을 통해 GitHub 협업, 이슈 관리, PR 생성 및 머지, 그리고 충돌 해결의 전체적인 과정을 경험하게 됩니다. ## 상세 From e053d4ecf69615d3f39c519cb77d921851f2b37c Mon Sep 17 00:00:00 2001 From: Mingi Cho <81455273+chomingi@users.noreply.github.com> Date: Sun, 6 Aug 2023 14:24:43 +0900 Subject: [PATCH 04/22] Add base code --- calculator.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 calculator.py diff --git a/calculator.py b/calculator.py new file mode 100644 index 0000000..5392a2c --- /dev/null +++ b/calculator.py @@ -0,0 +1,31 @@ +def add(a, b): + pass + + +def subtract(a, b): + pass + + +def multiply(a, b): + pass + + +def divide(a, b): + pass + + +def pow(a, b): + pass + + +def abs(a): + pass + + +def mod(a, b): + pass + + +if __name__ == "__main__": + # 간단한 테스트 코드 + pass From 27d82c43f725ad8ea8c60b4c74225db637eab184 Mon Sep 17 00:00:00 2001 From: Cotidie Date: Mon, 7 Aug 2023 10:07:08 +0900 Subject: [PATCH 05/22] Change to use branch than fork on step 2 --- README.md | 81 ++++++----------------- calculator.py => lab/202308/calculator.py | 0 lab/calculator.py | 31 +++++++++ 3 files changed, 51 insertions(+), 61 deletions(-) rename calculator.py => lab/202308/calculator.py (100%) create mode 100644 lab/calculator.py diff --git a/README.md b/README.md index cf479fa..9e12f5f 100644 --- a/README.md +++ b/README.md @@ -7,85 +7,49 @@ ### [사칙연산] -1. 팀리더가 GitHub에 'simple-calculator'라는 저장소를 생성합니다. -2. 초기 파이썬 프레임워크가 메인 브랜치에 준비되어 있으니 팀 리더는 이를 메인 브랜치에 올려놓습니다. -3. 참가자들은 각자의 기능(사칙연산)을 개발하고 이를 메인 브랜치에 합치려 합니다. - -- 이때 5명 이상인 팀은 사칙연산 + 나머지 구하기를 진행합니다. - -4. 나눗셈을 맡은 참가자들은 일부러 분모에 0일 경우를 고려하지 않고 코드를 작성하고 이슈를 발생시킵니다. +1. 스터디장은 `/lab/<진행 년월>` 폴더를 만들고 `calculator.py`를 복사합니다. +2. 참가자는 `step-2` 브랜치로부터 자신의 브랜치를 생성합니다. +3. 참자가는 자신의 브랜치에서 자신의 기능을 개발하고 `step-2`에 Pull Request를 올립니다. +4. 나눗셈을 맡은 참가자는 일부러 분모에 0일 경우를 고려하지 않고 코드를 작성하고 이슈를 발생시킵니다. ## 진행 -### 1. Fork와 클론 - -- 각 참가자는 'simple-calculator' 저장소를 Fork하고, 자신의 로컬 환경으로 Clone합니다. - -### 2. 브랜치 생성 및 작업 시작 +### 1. 브랜치 생성 및 작업 시작 - 각 참가자는 자신의 기능에 맞는 브랜치를 생성하고, 해당 브랜치에서 기능을 완성합니다. -### 3. 오류 코드 작성 - -- 나눗셈과 나머지를 맡은 참가자들은 일부러 오류를 고려하지 않은 코드를 작성하고 커밋합니다. +### 2. 오류 코드 작성 -### 4. 커밋 및 Push +- 나눗셈(divide)와 나머지(mod)를 맡은 참가자들은 일부러 오류를 고려하지 않은 코드를 작성하고 커밋합니다. -- 모든 참가자들은 완성된 기능 혹은 오류를 포함한 코드를 커밋하고, Fork한 저장소로 Push합니다. +### 3. 커밋 및 Push -### 5. Pull Request 생성 +- 모든 참가자들은 완성된 기능 혹은 오류를 포함한 코드를 커밋하고, Push 합니다. -- 원본 저장소에 PR을 생성합니다. 다른 참가자들은 해당 PR을 리뷰하고 피드백을 제공합니다. +### 4. Pull Request 생성 -- PR 예시 형식 +- `step-2`로 PR을 생성하고, 다른 참가자들은 해당 PR을 리뷰하고 피드백을 제공합니다. -### 6. 머지 및 이슈 발생 +### 5. 머지 및 이슈 발생 - 리뷰가 완료되면 PR이 머지됩니다. 오류나 문제가 발견되면, 이슈를 생성합니다. -### 7. 이슈 해결 +### 6. 이슈 해결 - 이슈를 확인한 참가자는 새로운 브랜치를 생성하여 이슈를 해결하고 커밋합니다. "Fixes #이슈번호"를 포함하여 커밋합니다. -### 8. PR 재생성 및 머지 +### 7. PR 재생성 및 머지 - 오류 해결 후 원본 저장소에 다시 PR을 생성합니다. 리뷰 후 PR이 머지됩니다. -### 9. 이슈 확인 및 종료 +### 8. 이슈 확인 및 종료 - 해당 이슈는 "Fixes #이슈번호"를 포함한 커밋으로 인해 자동으로 닫힙니다. - 참가자들은 이 과정을 통해 GitHub 협업, 이슈 관리, PR 생성 및 머지, 그리고 충돌 해결의 전체적인 과정을 경험하게 됩니다. ## 상세 -### 저장소 생성(팀 리더) - -``` -# 저장소 생성 -mkdir simple-calculator -cd simple-calculator - -# git 저장소 초기화 -git init - -# 초기 코드 작성 (IDE로 작성하셔도 됩니다!) -echo "코드">> calculator.py - -# 깃에 추가하기 -git add calculator.py - -# 깃에 커밋하기 -git commit -m "Initialize calculator with add function." - -# GitHub에 원격 저장소 생성 후 연결 (GitHub에서 생성한 후) -# 혹은 먼저 생성후에 clone -git remote add origin [GitHub 저장소 URL] -git push -u origin master - -``` - ### 기능 구현 (4명) - ``` # 저장소 클론 git clone [GitHub 저장소 URL] @@ -93,13 +57,8 @@ git clone [GitHub 저장소 URL] cd simple-calculator # 브랜치 생성 및 이동 -# 브랜치 생성전략 참조 git checkout -b feature-[구현할 기능명] -# 코드 작성 (IDE로 작성하셔도 됩니다!) -echo "코드">> calculator.py - - # 커밋 및 Push git add calculator.py git commit -m "Feature [구현한 기능명]" @@ -109,18 +68,18 @@ git push origin [자신의 브랜치명] # PR 명명 전략 참조 ``` -### 코드 리뷰 및 merge (팀 리더 or 코드리뷰어) +### 코드 리뷰 및 merge -팀 리더는 GitHub에서 개발자 A와 B의 PR을 확인하고 리뷰합니다. +스터디장은 GitHub에서 개발자 A와 B의 PR을 확인하고 리뷰합니다. 오류가 존재한다면 PR에서 이를 comment로 남깁니다. -### 이슈 생성 (팀 리더 or 코드리뷰어) +### 이슈 생성 GitHub의 'Issues' 탭에서 새로운 이슈 생성: -제목 예시: "나눗셈 기능 구현에서 분모 0으로 나누는 문제 발생" -내용: "0으로 나누었을 시에는 오류 메세지가 출력되도록 변경 요청 드립니다." +**제목 예시**: "나눗셈 기능 구현에서 분모 0으로 나누는 문제 발생" +**내용 예시**: "0으로 나누었을 시에는 오류 메세지가 출력되도록 변경 요청 드립니다." ### 이슈 해결 diff --git a/calculator.py b/lab/202308/calculator.py similarity index 100% rename from calculator.py rename to lab/202308/calculator.py diff --git a/lab/calculator.py b/lab/calculator.py new file mode 100644 index 0000000..5392a2c --- /dev/null +++ b/lab/calculator.py @@ -0,0 +1,31 @@ +def add(a, b): + pass + + +def subtract(a, b): + pass + + +def multiply(a, b): + pass + + +def divide(a, b): + pass + + +def pow(a, b): + pass + + +def abs(a): + pass + + +def mod(a, b): + pass + + +if __name__ == "__main__": + # 간단한 테스트 코드 + pass From 2bd2aebc53164f60ad6643ade3d6847be38127a6 Mon Sep 17 00:00:00 2001 From: Cotidie Date: Mon, 7 Aug 2023 16:11:13 +0900 Subject: [PATCH 06/22] =?UTF-8?q?docs:=20lab=20->=20playground=EB=A1=9C=20?= =?UTF-8?q?=ED=8F=B4=EB=8D=94=EB=AA=85=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- {lab => playground}/202308/calculator.py | 0 {lab => playground}/calculator.py | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename {lab => playground}/202308/calculator.py (100%) rename {lab => playground}/calculator.py (100%) diff --git a/README.md b/README.md index 9e12f5f..a87490a 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ ### [사칙연산] -1. 스터디장은 `/lab/<진행 년월>` 폴더를 만들고 `calculator.py`를 복사합니다. +1. 스터디장은 `/playground/<진행 년월>` 폴더를 만들고 `calculator.py`를 복사합니다. 2. 참가자는 `step-2` 브랜치로부터 자신의 브랜치를 생성합니다. 3. 참자가는 자신의 브랜치에서 자신의 기능을 개발하고 `step-2`에 Pull Request를 올립니다. 4. 나눗셈을 맡은 참가자는 일부러 분모에 0일 경우를 고려하지 않고 코드를 작성하고 이슈를 발생시킵니다. diff --git a/lab/202308/calculator.py b/playground/202308/calculator.py similarity index 100% rename from lab/202308/calculator.py rename to playground/202308/calculator.py diff --git a/lab/calculator.py b/playground/calculator.py similarity index 100% rename from lab/calculator.py rename to playground/calculator.py From f74f79c1743795592c08498101af8366c65a5ecb Mon Sep 17 00:00:00 2001 From: Cotidie Date: 2023年8月11日 23:54:59 +0900 Subject: [PATCH 07/22] =?UTF-8?q?docs:=20=ED=8F=B4=EB=8D=94=20=EA=B7=9C?= =?UTF-8?q?=EC=B9=99=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 ++++---- playground/202308/calculator.py | 31 ------------------------------- 2 files changed, 4 insertions(+), 35 deletions(-) delete mode 100644 playground/202308/calculator.py diff --git a/README.md b/README.md index a87490a..4f0656d 100644 --- a/README.md +++ b/README.md @@ -7,10 +7,10 @@ ### [사칙연산] -1. 스터디장은 `/playground/<진행 년월>` 폴더를 만들고 `calculator.py`를 복사합니다. -2. 참가자는 `step-2` 브랜치로부터 자신의 브랜치를 생성합니다. -3. 참자가는 자신의 브랜치에서 자신의 기능을 개발하고 `step-2`에 Pull Request를 올립니다. -4. 나눗셈을 맡은 참가자는 일부러 분모에 0일 경우를 고려하지 않고 코드를 작성하고 이슈를 발생시킵니다. +1. 스터디원은 `step-2` 브랜치로부터 자신의 브랜치를 생성합니다. +2. 스터디원는 자신의 브랜치에서 맡은 기능을 개발하고 `step-2`에 Pull Request를 올립니다. +3. 나눗셈을 맡은 참가자는 일부러 분모에 0일 경우를 고려하지 않고 코드를 작성하고 이슈를 발생시킵니다. +4. 실습 후 스터디장은 브랜치를 실습 이전의 상태로 복구합니다. ## 진행 diff --git a/playground/202308/calculator.py b/playground/202308/calculator.py deleted file mode 100644 index 5392a2c..0000000 --- a/playground/202308/calculator.py +++ /dev/null @@ -1,31 +0,0 @@ -def add(a, b): - pass - - -def subtract(a, b): - pass - - -def multiply(a, b): - pass - - -def divide(a, b): - pass - - -def pow(a, b): - pass - - -def abs(a): - pass - - -def mod(a, b): - pass - - -if __name__ == "__main__": - # 간단한 테스트 코드 - pass From e58d505ddc4b12533a5f4fab5a12dc469ce5afe8 Mon Sep 17 00:00:00 2001 From: junhyeong Park <64734115+pnu201924480@users.noreply.github.com> Date: 2023年8月13日 20:25:11 +0900 Subject: [PATCH 08/22] Feature [sub] (#19) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # 변경점 👍 새로 구현한 기능 및 주요 변경점 # 버그 해결 💊 해결한 버그 # 리팩토링 🛠 리팩토링 내역 # 스크린샷 🖼 변경된 부분에 대한 스크린샷 # 비고 ✏ 리뷰어에게 전하는 말 등
사용하지 않은 항목은 모두 지워주세요. --- playground/calculator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/playground/calculator.py b/playground/calculator.py index 5392a2c..82659f2 100644 --- a/playground/calculator.py +++ b/playground/calculator.py @@ -3,7 +3,7 @@ def add(a, b): def subtract(a, b): - pass + return a-b def multiply(a, b): From 48507f7dfa5a377f0be3cc9beee438b6f26475cc Mon Sep 17 00:00:00 2001 From: k-kmw <100478309+k-kmw@users.noreply.github.com> Date: 2023年8月13日 20:28:53 +0900 Subject: [PATCH 09/22] Feature divdie (#20) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # 변경점 👍 나눗셈 구현 --- playground/calculator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/playground/calculator.py b/playground/calculator.py index 82659f2..a84efac 100644 --- a/playground/calculator.py +++ b/playground/calculator.py @@ -11,7 +11,7 @@ def multiply(a, b): def divide(a, b): - pass + return a/b def pow(a, b): From 8c0b792a403e916fb9699a343e74adc11222b537 Mon Sep 17 00:00:00 2001 From: wona825 Date: 2023年8月13日 20:34:12 +0900 Subject: [PATCH 10/22] =?UTF-8?q?feat:=20add=20=EA=B8=B0=EB=8A=A5=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- playground/calculator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/playground/calculator.py b/playground/calculator.py index a84efac..83495a8 100644 --- a/playground/calculator.py +++ b/playground/calculator.py @@ -1,5 +1,5 @@ def add(a, b): - pass + return a + b def subtract(a, b): From 018cbbb145fede793e67db64ca2228c98484a96a Mon Sep 17 00:00:00 2001 From: Cla6Shade <111969754+cla6shade@users.noreply.github.com> Date: 2023年8月13日 20:36:18 +0900 Subject: [PATCH 11/22] Feature multiply (#22) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # 변경점 👍 곱셈 기능 추가 --- playground/calculator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/playground/calculator.py b/playground/calculator.py index a84efac..6369f06 100644 --- a/playground/calculator.py +++ b/playground/calculator.py @@ -7,7 +7,7 @@ def subtract(a, b): def multiply(a, b): - pass + return a*b def divide(a, b): From 7ecd7a8dff68a0a7142f6f0c53cf2a0e84141f4a Mon Sep 17 00:00:00 2001 From: mong3125 Date: 2023年8月13日 20:40:55 +0900 Subject: [PATCH 12/22] =?UTF-8?q?fix:=20divided=20by=200=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- playground/calculator.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/playground/calculator.py b/playground/calculator.py index 36944e1..7adc97c 100644 --- a/playground/calculator.py +++ b/playground/calculator.py @@ -11,6 +11,8 @@ def multiply(a, b): def divide(a, b): + if b == 0: + return return a/b From e781e80f9b6402c263bc3fcd8ad2255eb3372ec2 Mon Sep 17 00:00:00 2001 From: mong3125 Date: 2023年8月13日 20:42:10 +0900 Subject: [PATCH 13/22] fix: divided by 0 --- playground/calculator.py | 1 + 1 file changed, 1 insertion(+) diff --git a/playground/calculator.py b/playground/calculator.py index 7adc97c..fb050b9 100644 --- a/playground/calculator.py +++ b/playground/calculator.py @@ -12,6 +12,7 @@ def multiply(a, b): def divide(a, b): if b == 0: + print("divide by 0") return return a/b From 0ed38a7af62aee222943f27528ea00363da19f60 Mon Sep 17 00:00:00 2001 From: Cotidie Date: 2023年8月17日 13:06:29 +0900 Subject: [PATCH 14/22] =?UTF-8?q?=EC=9D=B4=EC=8A=88=20=EC=83=9D=EC=84=B1?= =?UTF-8?q?=20=EB=B6=80=EB=B6=84=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 이슈 생성은 step-4에서 진행하고자 합니다. --- README.md | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/README.md b/README.md index 4f0656d..c6e2535 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,7 @@ 1. 스터디원은 `step-2` 브랜치로부터 자신의 브랜치를 생성합니다. 2. 스터디원는 자신의 브랜치에서 맡은 기능을 개발하고 `step-2`에 Pull Request를 올립니다. -3. 나눗셈을 맡은 참가자는 일부러 분모에 0일 경우를 고려하지 않고 코드를 작성하고 이슈를 발생시킵니다. -4. 실습 후 스터디장은 브랜치를 실습 이전의 상태로 복구합니다. +3. 실습 후 스터디장은 브랜치를 실습 이전의 상태로 복구합니다. ## 진행 @@ -34,18 +33,6 @@ - 리뷰가 완료되면 PR이 머지됩니다. 오류나 문제가 발견되면, 이슈를 생성합니다. -### 6. 이슈 해결 - -- 이슈를 확인한 참가자는 새로운 브랜치를 생성하여 이슈를 해결하고 커밋합니다. "Fixes #이슈번호"를 포함하여 커밋합니다. - -### 7. PR 재생성 및 머지 - -- 오류 해결 후 원본 저장소에 다시 PR을 생성합니다. 리뷰 후 PR이 머지됩니다. - -### 8. 이슈 확인 및 종료 - -- 해당 이슈는 "Fixes #이슈번호"를 포함한 커밋으로 인해 자동으로 닫힙니다. -- 참가자들은 이 과정을 통해 GitHub 협업, 이슈 관리, PR 생성 및 머지, 그리고 충돌 해결의 전체적인 과정을 경험하게 됩니다. ## 상세 From 3cc3bc9bd5ee8a512a6e5ab0dea8b843f27c6521 Mon Sep 17 00:00:00 2001 From: Cotidie Date: 2023年8月17日 13:08:22 +0900 Subject: [PATCH 15/22] =?UTF-8?q?=EC=8B=A4=EC=8A=B5=20=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=20=EB=A6=AC=EC=85=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- playground/calculator.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/playground/calculator.py b/playground/calculator.py index fb050b9..c322b27 100644 --- a/playground/calculator.py +++ b/playground/calculator.py @@ -1,20 +1,17 @@ def add(a, b): - return a + b + pass def subtract(a, b): - return a-b + pass def multiply(a, b): - return a*b + pass def divide(a, b): - if b == 0: - print("divide by 0") - return - return a/b + pass def pow(a, b): From 7f535ba4592750b65fa2cee11f6ef06ee2797a8d Mon Sep 17 00:00:00 2001 From: junhyeong Park <64734115+junhyeong-99@users.noreply.github.com> Date: 2024年3月18日 23:03:04 +0900 Subject: [PATCH 16/22] =?UTF-8?q?=EC=97=90=EB=9F=AC=20=EC=83=9D=EC=84=B1?= =?UTF-8?q?=20=EB=B6=80=EB=B6=84=20=EC=82=AD=EC=A0=9C=20=EC=9D=B4=EC=8A=88?= =?UTF-8?q?=20=EC=83=9D=EC=84=B1=20=EB=B6=80=EB=B6=84=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index c6e2535..88b4c39 100644 --- a/README.md +++ b/README.md @@ -17,19 +17,15 @@ - 각 참가자는 자신의 기능에 맞는 브랜치를 생성하고, 해당 브랜치에서 기능을 완성합니다. -### 2. 오류 코드 작성 - -- 나눗셈(divide)와 나머지(mod)를 맡은 참가자들은 일부러 오류를 고려하지 않은 코드를 작성하고 커밋합니다. - -### 3. 커밋 및 Push +### 2. 커밋 및 Push - 모든 참가자들은 완성된 기능 혹은 오류를 포함한 코드를 커밋하고, Push 합니다. -### 4. Pull Request 생성 +### 3. Pull Request 생성 - `step-2`로 PR을 생성하고, 다른 참가자들은 해당 PR을 리뷰하고 피드백을 제공합니다. -### 5. 머지 및 이슈 발생 +### 4. 머지 - 리뷰가 완료되면 PR이 머지됩니다. 오류나 문제가 발견되면, 이슈를 생성합니다. From 0df5431554b77392e5286fe4a645f2cd9157237f Mon Sep 17 00:00:00 2001 From: Wonseok Date: 2024年3月22日 23:12:30 +0900 Subject: [PATCH 17/22] =?UTF-8?q?docs:=20=EB=B8=8C=EB=9E=9C=EC=B9=98?= =?UTF-8?q?=EB=AA=85=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 88b4c39..5129135 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ git clone [GitHub 저장소 URL] cd simple-calculator # 브랜치 생성 및 이동 -git checkout -b feature-[구현할 기능명] +git checkout -b [팀명]-feature-[구현할 기능명] # 커밋 및 Push git add calculator.py From d809fc1d678041aae3a2c25dfab926290ff7144b Mon Sep 17 00:00:00 2001 From: Wonseok Date: 2025年3月15日 13:35:46 +0900 Subject: [PATCH 18/22] =?UTF-8?q?feat:=201=EC=A1=B0=20=EC=9E=A5=EC=9B=90?= =?UTF-8?q?=EC=84=9D=20add=20=EA=B5=AC=ED=98=84=20(#112)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # 변경점 👍 새로 구현한 기능 및 주요 변경점 # 버그 해결 💊 해결한 버그 # 리팩토링 🛠 리팩토링 내역 # 스크린샷 🖼 변경된 부분에 대한 스크린샷 # 비고 ✏ 리뷰어에게 전하는 말 등
close #111 사용하지 않은 항목은 모두 지워주세요. --- playground/calculator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/playground/calculator.py b/playground/calculator.py index c322b27..b36f635 100644 --- a/playground/calculator.py +++ b/playground/calculator.py @@ -1,5 +1,5 @@ def add(a, b): - pass + return a+b def subtract(a, b): From c6e112e782f2652b292c26c6060fe6fa76d6587e Mon Sep 17 00:00:00 2001 From: gykim_kr Date: 2025年3月15日 14:15:16 +0900 Subject: [PATCH 19/22] =?UTF-8?q?=EC=B4=88=EA=B8=B0=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- playground/calculator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/playground/calculator.py b/playground/calculator.py index b36f635..c322b27 100644 --- a/playground/calculator.py +++ b/playground/calculator.py @@ -1,5 +1,5 @@ def add(a, b): - return a+b + pass def subtract(a, b): From 2a44c8e5c4c40578c9056baab670a57c8b6e229e Mon Sep 17 00:00:00 2001 From: Cotidie Date: 2025年3月18日 10:18:31 +0900 Subject: [PATCH 20/22] =?UTF-8?q?Github=20Flow=20=EB=8F=84=EC=9B=80=20?= =?UTF-8?q?=EA=B7=B8=EB=A6=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + images/github-flow.png | Bin 0 -> 18910 bytes 2 files changed, 1 insertion(+) create mode 100644 images/github-flow.png diff --git a/README.md b/README.md index 5129135..e4e79b1 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ 3. 실습 후 스터디장은 브랜치를 실습 이전의 상태로 복구합니다. ## 진행 +![github-flow](./images/github-flow.png) ### 1. 브랜치 생성 및 작업 시작 diff --git a/images/github-flow.png b/images/github-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..d5dd4824a0f165b09cb0731fdd20c56e83c2ef08 GIT binary patch literal 18910 zcmYIwWmuF^w>C2jCDJ9`p_FuoAOa%Yjg)kEkD^GIbP7m!H={_GbPOfkDLKUV%=^9P zoa>rD1Dn0qUcJ}47vX9u@;FZ@o}i$h;3z7*)<8i4%cg!xh%wqdpu~gn@s&j4p(wt7 zrR8ICn1zw5J$=!%!Y3OagUL2mgPr$<%jp#a8^en^|mkwo;_%z10p{#5ysz67_IpiSF;K>0v6JyFlAqeYEEY>Fo z<8c_o>g5SX_0NGT!>h+J)b(?=#4m)vMWN+HajxGy3-;6?yvV;ld^%kA2ObThK6Y-`R)KL6Z(faHlK zxRwBhb#&zj-NXtOLu;m)!@I`ydFlg7U9YTpmKWAYxZ)wMmY?9*VA|4Ip3zbn9GO;% zH|%Ee5&`Fdh3*vV@{xcDFi}C|^6&p7SVj>-OQRV1q%T1Z@KVldbeqkm6zhpGu9k-H z@wC9R;xbEo{4ocYJks2=V>uy@s5FpDm&Xs##gsRSE$L;LU!{dH`-Pu`WiwfMU@{TK zb%2GjeV9Q?rM>FdtL(X?)dbC0sZTO7^&HgOdsK5gQHSk4;}M_8b&kcj<9z~uy$l@x zS1odDD7(dtRZ*Carn1O=%kuLLMzkQW={O*kRG;NE6Zl?05_n=r+lb7stj(y5aqmW! z9_3+c;cFu*zp}oqibT+k2%+wIT|I8;`@!!Qz1fSV4|amrNOP9fP)X~EyQE&UPK(P) zLu6#6d({<)nrysxb89e<1ab5#m#_h8clmw4vk-)c_skqxg!|8x*l)dHu>Jdi}GSP?e&V`-7aIkL`Kqr#h+qLiVYB<3+(3yepumvedg znd_u@{f%=!CYK%?&?OaD7f_#N$gTH3ZT*gQpP~Dr6GwMrZ|WbQ&c74@nw~YVq(!Dl zd-leU1hTl~eyWx_DH$@NUg>Owyc|<&zsg)g9m{n7yizf}rwe}5c4jehe?vlc>^Cs) z-S=pm-UHEs+F1Wd(Z2jNY+m#qtE6)Q$V5|NCS+TKl=8)-gG`$lPrnR;%ep-0Yb(mX zHvB#mJbxL8ni}?eT$mSikKige`Omm{+}emal%rpivR8d=w;oMeX|{^o)N9dH8EKVZ zd4SYaEe0rq3f;JHEhILX9-iKzdpMQisD8Nj;A|j6EqKn9CO?qA$s-D1@<%m;tb`0$ zQ3<$vv2y&8p(()qaim=pbx|2|pprgygoaifyymqry0fcjsm~r?q9u6+1p)z+k_qhd zC6@l7P@q7huvMQ9sugAwJ0+>|v_7^%v{<0|=`43q4zjyoaxxbjnk&y{kcvnrl*qx& z3LeKcXaU?np=|~?cpZkNMb&4B7ドルpFV_3p z#WFH=ZED3d9&?`b4>MZSyzXl)pWbSyVZ8Oy;0S_rnSXH@GX970;dg3{8*Me_v!mO_ z_BY7_V%qEd6HkrSkLoBKwgw`E_-57=St^cwj+iP?kp2x50vH%n?Ncb=pNQsggy(t~ z^?mW!sR^CKLG#vn%q$thZMhU`NWPva1AOfaw-+bCLyPlA(*+)_rE%=$ zldEo()N;(OV8~i3(j&ds4L#tIq%s8}Fd@;>&tGEgw3GaNNT?Pd<-ck$#rztaxe*l- zm7n=tyN?0i2aFS9Z~Sh8M%vgcsVvM|{t%-r(E*zC6+(>kP7VO8zbU8hDgBSvrTd3e zZ%prFUaNjic?S;FR^+imQFYx!@(`bb@O zw|#n9!6%jvSPDWnA1Vpt=!%g_sLhv9R*V_7KiiaYj3`?7Wo7yHa6L~Ic$bttra+s$ zFW^v6E5H4oL_x?mq@4aWoh6cjckc;>j3B*P0Ww9;#5a6R5X~DG8A3%~>y9PHRWt&7 zQ}54PJstGwzTga{)ZDg(ddPN4H9#KEEWSk7*3#JNv(PPBk{7oUK^Yk6){DP>D=C45 zg*c86M>|q%_-5K`Ogpwxi+LZso0PaJv<_s~gwctw`w2vd4_io{+b!3pqsv&jtb?it zENO(-=9})ah*3>PViNNKGVLih9;u*%^k#c#V81obhk7+o@|(pn#^l~SIKq_v9+F1Z z>?EpQ-&F|BHQSMNj{QqWoo(wI;%2q3XZ`ku5L!+6 z%zZ*pEXk+F)~DX4esYxR&*QhViaL)B$Cf~T2Tb;@(Vo5>)7o$@i8nw@wXu6n80Vw` zDIAic`vq`IPVXk&&kHL`Y%A3-=u_+D>6|kH71wNKIq*c|lvJBO<`@wmyr9xpay35ドル zK$XI`VS$#{vcL74*xX7O8}d;iX*)geTuEjk-E5p!t+X&5Rg1?j|}< z^M&7al}BCW_$Mcwck-axYK?toMEI@B6M97?CjWm*q#-~&m&5l2$AXW+s-TR?&!-Cm zfn#Ul+4F_!77L~)Wl@b2r3vrPZ#~}yd*D;*RD4VgwjTS-n4_w@9Jk226#817P!kdn z4d|}N{$*e6HBhPSuNTHHprJ=+1- zYuKc@_r7EA880vClI>{eTTNQA;%k{oF^P$gA}dfHVWtLaLSwLm464s_P|gjQteB#Y zXRlJ9McMyxlV8a44ie=p@ED8gqqVrmbAAq`>3d4eBl#nv+q1@lh$~RhfPjqxa2yeD zlF}8@A%q=7;l>;&N9gEa%EpHRmbMJicMve z1B&J9Jv>5H#zO^&NAtgPN`6l%$IHK>*8RxHa1!@sKTRt3Ea!r z;t&UsH&PE9%l6m^vKHi~WM-2Ie8SLjkdOFv_?oeCWX4p-}LZ8)yp;eI1o;$L)S z4RSs5^-UCKXdR$b#bE+}rUMKHe@ehQ4wDIi5;Nprl7|TC0@?Rw2mDg^Sq>$|p!qG? zcQFcYe?Sb{bl#t!w%67&`nQWOY^g;lw?2PUVW+}?4+fYelgkvIDggFJ@GQIknCF*59mLH>1moepxaJUohZNH@84iNRWO?>F-gHIy{eTTHc6_mHJtib0>85>9a?u%%1hpw}IsE=U+@@ zOWzByp zQ;gr~IO&0OBnU`H;z?hpVr7EoQ0w!wYe{`De6Ujwp5|4RrrMOca(bDMxY4D_oBg%F zzs=lG=XGf7xcVCsbbsD^w*H;F#^=&OJcr2tDJ2hsGwQZC-7ZU4yFfbNw1MnaL5V&J zGK%5^xm3juA~4(J|ALyRk*ZaTwTX+(o_rD7pM-f3JG5b@T9h0f*wxW(2$DGr>9~ zRw*ATO5G|JQuckfgOhQchk|Dr9-2`G)0wa7AV|k7tw`vK4eic?);fcU&ez1V@?L%W zTHlIs^2D2WM5TD%Yf*J!p zn=i=Fc1IRou6M_*rid`^ZtcDGD?lkUzvtp>A6ByL)zzR$tGQPZrfp~46L5SJhRyvk zA%Xad>Z!)chlTvuYOhm5b`gISz*%K0)`Yz@=2{9>G)&NjM0^FD6@!K~fy$;*L?f&{riCCKi4drN$anGi0j`i`#R{^}=l47t;sC-?Fs2KfHH1{IV1q zc-T-e6Nr724iH=^9nKAY&kRKO@^p5m7A0sGShv}>bLVNkvPf!U4~H@;hra2;eXPW8 zC?DHtcA2_=hTF0F;hX4MuDvfw?5Phsbb`)vA!O&O`#b>~QgxCF)uP{=KK{T{WCX_} zlLp>W+>zIg$_uh9qdf>1C+zTjT#!RoXE(>JMu+u?ZSc>kleZ(iLn@Ju%ftSkXg`cx ztx$fW@Awi^&5v%U2*jKO$d4gFPJ=*7Fd>6U0b)P6rDUDz;VM%5V_B}1J>Exa+Vtiy z!CRsoHNDBHJ19^EcFr3dc~kQ&Cx&9cJ7>7o^+WHB!;aAg+*W_K$s_SUFQbTb>8+ea zxoG*sAwK8|>QyrjXY4rbxp+`-xAIQ#9hX(jg!ieTFkgoN zJ7cnmKs2eIWIol4`F{Um=r#365v><%b3v@xt3+)}yjjc2q_jnoj*uyn2a=zx`j;jk zCQaGV_PTXWySy_2kH+Rwd_O7wxbF-xc8fmJ4RJ0(^u-dCAy1S5cD%o_|3@3q+ZpkL zKh)G(4V|f)Bk%-p?K0daDp%rPdn62I4+H1Q{t;}EO`{uEh_bV38HS1pa^k8 zzBZ2LO1Jm0=G5<@m0t6eu-zn6at10&gvp0)ql<&ac3N`h2yW4vR$}Ak41ドルc_VWB&>W&_ zyL~b+9%>4993~_VRsxHJVZ+El-&7gGf$ide?Wlff&n6L8Yh0|L!ok$g-8CjKh{=WU z<I`y5vHnvA9QqpR$uOUbp=dT-SWjy?DpgRP zsGwLTU?Q`Ovd>raFNuWpz5XY6| z(j+cSOwdqFV68t6-q&}8K)H$z4~UDKpxQ5NtS52UzdNy-HQynFC9+b&ZP;Z8s1X6u z`7%V{!ub0@eJJ-vBc&)`nFwB+l|d@O4{Ii~Uy}eic>r>Xh^fSunB;~o5ic6p2-w^a zW9lh4q(BK^;m;R~l#nG16@dNyB+nR54?WT=n%=+$@dr57^OaVmbtQkRR8SKeKTU7J zd>sqiZ)dk1pU>$j2dW^b;R$_6FENxKQxB}51hGx4-7j?Qav}g;sm}q9(Q6y^|6V3a z%@@_CpG^NP09G>ozEN0dQ(Fuu_y2e#6wQOD??4Zz_1Gcegs&h8%qKKv@E> zMf-qa$h-q6`p-(W(i;xzdjh}|x6}cd{`UFsAv(xgYP8`)|RKnQ0$OCXi>;{LYtg!xHKJRCZ0Gb3jG!$ z!+-_6gX7!*op6iMLq$me1!JItQzE`%hJFnp$!^HM!w#XAWomj2)VcbR4)y8k?o0vJ z9qu*z35uCiS-7+w<~njmxgulrmrf6*b?9nu0_hk6y;}kv!lz8|aab&mx^&fyaf~|2 z!J*!2!%HkKedH=+-B7}*m0bYb)NH1M)==21tc&p}#1RWVQysyAAxoPe193x&Xq3Pn zW!3A-Y`j};2*|{O(8ST7VyNJ*LzwCSQQH9;^P^Wuw@98Yh-x9`^-78fS*sG{$s5>S zX$M{a+JVW-=ls>c!eylGQtm0>{S#VsyYdsBVB)`dNvQC2aGBb|&TS%rwh{FYlM-wTY2;D3(a1IIrgh0)Sh`rKpjJlp|{fZFkH%Fz?TpsUtw~Ee^6Am z6<3w`ho$ovhwl+)>#oxqMWNPrNcZ}Gi0ドル+L!4)P>C6>NnO2905n=58^)5>uik7k|n zV*y%82AHHEu;0%aRUU<=@hpux$fblcfx>0<&mafx?p)pge};odB1LxNiDu5pgL;5lN%2w+rxL5W1*jPjul5R0G7oL|-gunN174CkO zE&wDEQGe?$>N^zGK~an|*L2|QE}AY%2E8MiBe{M$SO;qYS#O#`qS*i)z((r8EA2oE zXf_wkI<^@ejpq(~+03w)45b^i80is{o{afa2hExxuF33h;~k--J*Hg6aVII;bd2B*a%4DdhigS!Uyh|3*(?%CIa@ zvSwbmbR#CxS5!mh`tCC-I;Vk}nshc&1NlxcpMJ<@k#&?gil$!j3dew!|qZAZ&#k|eX5bEum-Oguv2k||0C4f4FBDD+u1t*Ll zW7Y;&4Xn2thX>{;drbs2!f&Q*p7DK$=hb8D&J%MBRO$X3<|%(x_5u1dfth{}yn|;j zQt}fezeYRZa(Py*s0Uo;7cww6|0A)qRRw<0ドルbqx!p+goc&h&o0x(e5k7lk{8%;cd- zUG@wBNy7n2TV>erBg&2&C%sT;P`M&l&_@g)jrcoH-?^R2ccDG72m*}!i;P>bt#(VT zo)wOJLPrK`8|Ow6ドルPJeKPT$jd{yu8)Ro_?<_&3rak&gppr|(oxi8b1el>TZ9Mn;iVQEpa z>J`T6`WS{ENA0SDy8BAK>bTnTmF`U{KWOlvADH*}q)$r!i2Mg5ODF^DBEY=ihGfL?8cQ7t$b$Bq7+<{zd&c&nluk zxFZ})3)T_+Y0i%8y%OUtt!2FRN&5ASqokS+RX1Ut8ASI$V%Jb@^R8D@7F^OEJ7C?7f>XJP zZ%Nk&OrYQN8RAHbqAEHTkGF_+*JX~7`R=LJ&#ZH2@#qkk<;z2jt9*yw8o0i}y2< z)OZ%4{19$@x5$_MzDOm@D2YU3xk@rX`$nP&dc^<2wyed|ye1rx2d2wldgji0qmp^*?&&9mq+lqy*(cihb0u)$l zSFDQ=zb^AUwe%i(B>j3WJWm_EHKaam@9$}|`~1t!NIegiFiqROp@geuiF&GM<^w5u zMRB7ed8m=arwj$yyCIxbl9_D7|{p&;x^I(XIe6%j9qZ+(o$_aF9} z%xbQISr_~J&qscpHvk)dpy`aXeWY;~$W%h#=@3E8aa;sXv(9N+0_mMpNBt8x1-q*55Kc zrz-iJB27HwsMavKV3n}a?N~8Sn&H^6i3rTXku;E>&n=cLWvI3aJnZzguk5`4UjFQj zVRlu9kozObRlsLNk!qSx62KSEUfe8Pi6QpCX@}{Du!}26l@33g+Ntx{rE=qr1hLAN zkWD3y12(U%`sc^uITx>999MJAg^P`P2M19Llc+_hXA`Rpyo_y~AXWu!uDDIu%5^$T zzDhXuKj^sd_Wr%n+nCqTHIz>_P&=mz8cuAWUmCEd{-IR4b3F8L+q&(#H$C=nKCKeH za)Y4FuBv%<|kvmhaq%xhb+8XifrCs+jW(>NZu1ht27TL+qF=(FW^X zG>*E!Qo~CFc@Z6ruWfjnx8TP%TTPb3xCmFvFY)9Gr#h&5I`k#)JEIu=i5{Q-Ezkm@ zdYeiZm8OA)sMA%)(QWtVfb&glm`zk8yjWvkylqLle9zQFSvb_20;&Ua(e8oh&5t*HDKSS6O-zQ#Z| zuW9eN8!QGIxEd2r<{;p?v*;mn?msh#t;ywc>uy|q8$u?3=Yv!E`e=n62bs<(ex$_b zx1cUJ6D&i@OOWl4R|h}acnwiYa-y)9{9*{j3{e&jpTaAg5{buKN1j>3M5|@-f;|jp zFKPHKuC%usnt~H~gAy|}*Mtzi4ToR)&yy>bHO{2Ws3#QU`|8ik%%*j9##G(}c1mVN zxz3E>HLYRH*G9xdG}g@D*T{u1fD~-WL@qfsJ!ZR zy18DHNSM(oh(o)VdDM{h@vdRaJW_z4`@vs7uBtRlx80sE;Z57gXA%Q>eL9*7uG+@V z2XP;dH+`3hJ=s7YNQ`pjClvna8AN~5j1Zx5{zrO(ePvbwbpN*&e_f(9-U;hyO~-^7 ziUuN1R5)rEu$w7tF!&({l#y0uf@7ZpBWtX!gv*WOdaQXDP?r}jM ~RAK?Va zf5zxQlYE7ドルvXGxRgr}oDP2+K~;gz2f^AvU9?)sgxWS1j&_n;D4Hmur)XjQttJy$(7 zUtZQMdhl0?$Y0bJ!en(D5wq2l|KJaFz{$->$r79I$!Otgya(OPL3iTg!s*+CW^)aupsj_p0Tluxh>QWXp{IgP`%Ju=r*zb=jnCcH239q zBWX2}O*hrLLwHG$n>?NVIvW?1yyL3n$*DcK)5%?)^G?F>jUQja0bjE@$lf1+{=-U9 z2>IK~TSzs2XsJOhUe)#erM`n{#8?fgn1TFXQ#Fz7S6(x-@f{-jwRcjciKkR)u9i?g zvNjludP!E0Ce#0$f3*&O%&?}#&(Il;urM^djM-mC_ggHDshI3~c7YiLRy2(M7H}R{ zKC^>Qt8&{|wR3r&mM}h|Va2*!8T`717MH^Nq(O3t^#G53eC zQeO#xW%wn|wlgQUjDL(TbEIzbxF`80?)CaubI036eAls|$tvKdlB#$=cI?tv6ZTeM zr|l#Q;-t=p9`VKYaUrbG_tU{uX}a&^FyP@&NWB{APhw929DRPr;<5!r-jw-cr>g^%=;6iv zrM*Pqt96#(fvZ~z-s@M(ex5cH*^KODr%@SyB}XSM;A)rFbp;{T!&(4GW#4DhoNqBv zQ0kZ#x6_sJ1q@f$yl}aE?~LcD1hZUGIr#3}H+?u_%rkFh1)3)fwx}UxhAEBqN3i!a zh96L-4A_53LnC9QklzxhG28fNfEW#1R$FuZFqSx4I7aRj!X@SS+x?TzYK*;pLv8KL zkh}g|^abm= zJpU)&^1z+%!VTV_L4Q2e!-FI4*=-hLzdcALIv@yt{fksaJ%F+KK+0}8A}+w%;zJ^) z;gFryT%(~c-PnUS-z4suiS7MvGe7~;8RX}mToZ;0L}A_MnU^0wJ5D$+V<&{y^)@7ldmav8a~sflH)xXF8S=xSTr~dbDQ5eN zjWn=rb-JqSZn3?`u7%ZXW%V$!EO0A5rN48a@3BGekB5YO-Q|4I#ZYuQe@hAezRmET zq7nCpy|c}s`WUyaFQpVey}S=@OnI~zk1Fc7{aXdDH)`Ip+TCqzI08BFRr9X*i@yza{}~2ドルWg6)k&ML-NymeS}D4;~>@#XwZ zOX~}ov!O=4PuZ|AFWEA-VmT2u7p?YB;aZ7+$fCC;fWNq48e=E-G7FP!*=QBhY!yn3 zq-{ZvDJJCvm-JGl{d5qCD;MvPses#XCRYp#PN(AU4|dk4yFNf? z)GcS@dukTk`x>n(=2K2z9pxtVv;a2GDYjp>{(Vz!@qBu1Y}V2u2A~6PG>z*Gn-k7L z_)D=pePGe445^eQ5?iyn(74S(+P{`kK0m+<*ngh@f8<;5=^ur6e}tohblvtjq&2m= z7OrKIt!j=uq<4`ocucyw%|w+l`l3j4f2zxjhe9iy)nabst^jqtpemv(qpk{tmf5f9 zFQr6t#aBow-|ia82&p>j zb?8%)zIHU5HQ?@EgPn?i>3Nk)SmC`(;WFNHxKv8<&(__a2{x-|zub}=b~nm<=4vww zCG9+RF8`Y(kj-oLRwK>9oju8Kj1RgO#fbfeuc{(T4KZ)aTmcuiXK(IiK0is{i8<-( ze$hDmW}mG&VkF*Dx7p3Ok;Hy9bdtSby+qjIa%NVR`;SA|qLgV@mQ)J7vObzgr)W)t zcfH5R`qa9pyL>pbVNhKDQh8bftoJTnJGarEyh-bF_o72v8_Yiu|(h8aw`Wa zeO4eXr9Aw5A$gcrCQ>dhKCKax%yP0-#?9kVJq@+m03N*VQf5bmdD)Y!YDun^$IL_6 z)+<|$+4fk)f`px^?jn-axdjijfxzpb^l2|lbp)l_@hkkpkdj&`loio|8zscwx)jt< zUR?CDbMqVwgmF|{FqS-%N2hZ-nH4ドルHJw4w~B9|wP{pT+~B3VD8V7IOk)f0QA|1t&5 zGh-XDF>PuDpL1-B$NGr*ml)OS`@od16Sac|)eTujWpf9i=_LDiu?ShOsCB(W|%Z ztOf_|VnWM8sR@K)94Q%F2+1Z>Pu!JJM7rLv)Q8?F#Z#it7IL)?^d#w?1v}EF4<-!$ zsw|s|2f3bwA|dUjd!5pi+rcWFN@ANb%-e5y&*_d;W;=4gImzSe!`hmcI_v8ICxQar1X zqmFssOpd~Vr=sVt=fm56bJXhd#9S`Ak1fCj;eWC5s(vt+if;5Tix~d&n&?w0y{UGY zzryx@Jg6IMG>~Hd@UeJZhDhNb)%}dGf~EnsLDOfQ_jJ9gch=6Y5-(TbrF}JdQwH+T zKNeh{cb?4c((-w5^v=C7XM)Q#bh5>oZXx9+MOg6b=?HEQfr{Oa}c*09}*>R-Ms)y<(i z8u@#Ek$$e%0nMfD?Zufhlpyh-0@Z)er7bNRd6OT=mzq&wZl1xY zPQE$nyfh~buy`JQM?YEkuJ&^&3z(ef50LMF7iD|=SUlFnV1!A!cuTp>DVi5|4zKO> zTKcqq9Q191LO-C>X|aE4)^zw|i|O3uR0Ch(yZX4?7pi3>39@W`PP3K9O9|5o-mP;Do!M7ldy7j%L{+;nJg&}UG>^z^=|utUr?l7MYY-BXF_ zb61o7tYb=o!Ezf-{hWIjYRkrgSn(_@VX|;`rrhA?%A*gp>FCYxr}=0#(I$wi<&5u( zNygpig0{SO())sg3uDWR4KcNSyeJa$KUu_#gS=%#vpz;7HFsVvJW6xjc2iG{t=_cy zO+R_~n_YGN5MWM;mnrC&PEEt^4D`6lk3O||IqEZRMW3H6=(+V1jkSheF2(#hPmrgM z>`6Tx-H-CQB}nErbO4zjJ9C9!1U+VXAN-6=-eZVF&yI@J@Cd3PY~J z!3?X82bbQ0vj~`%(Mm)73Q(gsENfb6{GDXS5XT2LXcCd7EQx7|k*PYu04ZJD6!me+ zDdaAU&CGJOO?K!?EqLv`?XHk8P2u|ci9GRoHud{v-$j`}vJ~}w0q!mO4>Gpy6)78m zSGQj2|HlJCZ9C^F=uB<9ue<3mehxx^yai5vqq8l;$to`v1o^rqfwhqtq7 zdw;e>!qkdt(`4NQp< zsLG;GHugfP`s1kK%;6x(kbZ+38V-eE-h0L}PRBB>eI5Jax8U15?Af(yUgKm2OO8M6 zkUZU65$%%2=Rqn1!h`vjobL_t4;!Tle&@Fw`zk91Q1pohqtztzm|$VgRvL*~&6Mj? zp0g!~ z;k`%Tc=_)u3ahh#Bv)dJX(crPaSHXZ_AUGCrA^0_fDcq}=jqJgHeM79c1Z>mlL~z; z0P}kjG-w&{slh4WN0%y7`40=}C78q#Aa*S4%?<~{ktz>G})a#fS3V8^bUWoKabS1XEus>sn;{{>=2?AC7g!?80q-=zvjZUC1(WK@9c3yC6%kd< z6ZY_^{9k9YI}G@5z;)15ドルL75$w=igc1I$qU88#1_gssCqubm-L`36`37fT3zD6g6S zpgzml8)-EGO7?0HC$JL+I!Y7z+gk7w#`WTm6M=f5p%!A*CrMqc!Jzut0~dg=yJ~irPb_z+onM>u!!MNR8rKD-*0;3|08N^$XZLx9;!X>{#$QA z9f-e%{8&#dfy7A_agV7(bqcc zceZ4L9$)IgU*yC^lzN8-=-7WG5~lJQB1t?laIpn50bLf9=dyWUrN092+J-Lhrw}EX z|KAtBj+a(l6@bN@&@#W20@{!T(?}WOf`%f^Z`6mGSD3SKJ&=8$pIHCUOlAfqbM{~L zs{foVgy2Kf2yJjV+d?dliyUV=GU64!)$y0aM8UPAXqdmr;b^z&wc%kBg zCD|?q?1C87LLs9V*)CQgfMnAD1JHW~2*wy3+xlWT7^S@6D*)V+ZpOS@pf2`-G;|($eD@%$xmf1Z3&l-C;XZMuI(lPdeq|b2B?6#kQ3T~IY5Fa z(TiQ=UL|nAEY1{G(N|SgV`0(0R6-}Rfcf~4C`uDx@`Hvd?e)E4y^3bRoaLbaYT_CT zY6yMYHff3+i3R#XwgN!Y&{76w9$g7~cxsfQDBr3JP9JTIj1!ODuS39dz;VIeEcvnyx{*^CuPfcXLb9J(Ib6p8`Js~tH-Kt}~Z zNA(I_F;V?2yK$%Rd`vw^*q)ex%^I8!T@LBt(7XGHWP~v09g#5F4&GCou>PBPjo$xV z#R}>UL4&D;m<}gsftt$giregp+brvfsn4cnwDPK0E{~bO?DBBE>=JL0?uO!qtg{SU(}XY|1(}C0XUV3kWINb%*J9MR{Uh2idBJ) z>an6wV_d7SY_Bv5ga(CQX!O__FsPY2&AQ;d#$SBJqv`F{cZ4FY(%UYrz3M4STw zTB`L_06*R2V71nUieNF`ML1gUmL10hJ0M(fkiV({hZ%XU#a)t1qU*Oi^9khKRteEH zkxLf)yRyTEsheF~f_^lRSgZ40&x7RqXnkIJiZt6HlptD|O-2G4c@ zhJ0yzLjo-(Xr^f%>Jg^GX(tgtNw30$goa35rGTPCK7rVuRp|U@0uBpcLjZvf)(&1d zM6`JV?S{f|9XR<;iv4vtxgn>^8yheQ2Lu%)#)TW)01Y2~Sxd-xxF|Fi5MAX8uwhkj z)!Gc-B|HR>7;-?4O&n?sbSAM^saI2+$|_D06u|^v(V@H2{<(nbmjy5@0+y|eevh2j z22Qbj13RNlGh7*r(iqgAHcw=}&iVOjn@iLe(%VoQf*Gqw0 zQI&Z2)P(@ot|bTKeIJZd58=X~AuTOMs@WcrXeMZWCPoR@3Aqd8M42A#$>bcW$)4#@ zS(~G7K$Xa~@~Lf9pW6v(idti_!&1ZmstS26&pY=g`Q`NE-Dp6xr0{<0decz%tgm#r zfm#|;%3#K$unxkWF*%5sS~#}T#&7nVl552A74>2Dqq!&pZyGK@R%jKm#+D`!>Sezw zljXql6Q3mZAF&S(6C@4JA9!9K!M6g>lDY*7iFt`{U%#Zd!b6p9)mgoicofNi%>3to4mIK!vrz2Y!* zh7ドルM9{O_x%ar3O!b*3t9#S)U5E;44S&2CZxI&E0kXE`~$`on%cv|6RuwQ+iOgz4d( zt|OAycao<*&~%6alod|x={1;;esn8bb{!h0kzyu)ptwu6p;4^qwhhynqhra7%hpva zXoSmn{zv#>4AbN3;rjW=#C!n1H=*^*zlg~pyOhh$hCW8GazjomF#SyT-%6v{o@Z%c zIyG+;cf@YIbqTX}36T>|{e&R638H8y&(YZ6>4X5RPk&E}cNX^2|}2RfuuwYAMEwdCnQqh1;`x8nW8JXv|fb{&gNc4iM1`aM#JA>ICmL0!c%bD zXmLzPC2Iq7c1@!`98Em_MFdQk-Pc~~=I~k?cW#k1y2_Me_>V<_{7{bd((t?hrf-0u ze~EDp#CxP6$DRu0bEB1vW+#`N@Xorx!7pZh$D`hXn3s2MEF{LnS{3i9cRHOP51zfj z%{}hBo(&GGD_H!r5!>2wl^-ZkC5~^x36<`@ah%?p48o(r6h{UA$>a=PAxpXz8 z95*9ywNKTK(;Ku%n)6TYy&RnPHXqi;)v~$eVbyw=q%`{LDyK%%M!rELEB%K~olu*j z#k`-%!aGW33vR=16(+-TVf0@SZsn%0ug+{JA?ca{Tfmu*rqN36yN ztJ3~;oxR}7>GNw^^bZk&HF8CMm(#}!b~(m_CpQWRS3e_8KNbP-FhZ`;tbmik0snxV z!m2<+wbyls2*t^ia;?|#{kz{kif98mj?gqft`z#Mu~p#$-qa= zvJS~f?B&!8@X%~f?DpjPmgJ`h<{n9`i5ドル@g^j>WVnR5QvtUE0wByNyDcb61!oYDj~ zn^8<+xdh!it(o~)kvgzdq>tf7u6cb7t_s*kE%3m|6+5+qihOR0jlafIPFMMJ6}t~2 zWB}6T!|AfF^D5#2W_T-Zm;J@uMt!myRQYu5NSfRQ!=(+;^6X#Q74lkQZa7Hr5+fLn zQY0)}qWPI;i{;tdi&>CCFgRB_0e)ZUCzhHeehX_%=IvQ3nkVo?1;6%0Iy)b*Jkv9!WQyEc>-pvpHD1O6m9Dg=UG^(pix+9h2eKl| zDI`*DV^$DTcLX~b^(JCDbSb@|aLGxYh0jE%()V}>E1=<8q(vexvPZqhw!l>N7ap)Vj`_?WLCoeveqwpPrQEi5@XyerF&wRvBKYa^q#D$>w)4i z$abrL?89hAnhxvF)&aXehslKsLZ%mUyGl(}}Gwoww_a0f;*^9JzEwbuWXY7#ZuC*@Ht*BBD>-+xcPh;1mu9LUHcGKlJ z7{}IP&>P#wn=_o{0DExamyrO^QU7!6jSo|qF$v+@JMl`i!n;Gs73s^ym=f(5m;1xd zt_Gx}0ubjZph)Gq3f&<$$den0zqfv&tp@1pb?<~wh1hufsoabp0a*_dw&y>%xuJV9 z>Mj@iu?vDdC36GuP)!!dRa9ZkO{;qwXMF^ z#f9w}b76EYi4DgK;%#YQluolM9SM7WkEwN~)@U)KgFUKJtnb*IQ{UA-)iqk`NWpz2 zUZpeExUEs;m7h6gesOCRh1eli0=LxsyxokhlC=8o0FgJU0$z&+WjK(B%gKzS7XX`P zV`^QfnSdAZ#8Ju@(m9%|DsXh|6`9-=X-GubDy-8jeQKE#Ca=oFvsat2*GpHl*Y&H)Psj!dV>l9% z%fFiZx&Z*n@u9Ra7qgr<-&=1%vnxv7f%^cxdl3+s9ドル<`njw98us<$gl?(hjmql=f_ zgPGZwe{r4#-*;Y~dmFG7K1UA4y`~F*phtE3q!8vHXMXB~lv)owsT%C26#W?}g{s!G z=JWMht>e+mxQo???1L@FUg_|uII=?u!ge_E$mPc;TdaYa3O)n4DXKl!N>MS|m8QOC zBM#$WF)6F5j?iTwH~?`SQ0E~?JCdc9eL#?NHFP)9;Vkht9F1N^T}}N**vGXo#Ogp- z+Zk6nI&w%FMDP;a*sy-{a1NBe&AQ+`j}lE%Uz4K^)!Pb_{L0$X=A=(N>gm)wY~vLLA(9%`rle+`q0c7ALlA;>YQeGt%DTwfv09g zLyl~h(yt)FwwEJl@e;W3ayPn^A&kVZ)217KzI1u+P62{TE z4K?9+3<dm{v=10!KiATp$YI0E%!q#wK?GjRqr@X~1gx zz$&*UkY!*b(gYN73b;N4ss}h&2-;t>Vb#P0xCm_f=`xTWk$DZGTi;G;k>G8(>KQZr zrD|@&wgaDMmM!`1ssLJFZlt>6H#p7AVQET|iB!F7-Ebect!6*Bx}RsP4{$I;bh4SL zI4BA|<~b}x{gza7raboabj0wxpymre&a%}l^-t(2u?t~;+C8Q!xzR`Ox%qZ^P+PCS$o=V!{@vA>o|MZvqBrM@yuJ^7$fPf zz3|V^w1ZEsojGA8?~%%PF-CM&sU>LakOLHu0=`TqSyHw$>?^HkV^(LfE71O6bwTon zZ~(Ie*O&6^ens=7jDz%;?aKGxfBx?uTY<<1?hd)%dv3owb^h`jg;7d6piew`wd~=* zo1R_u%pm8jcG^4*c3O*|8gPZ%l{1o_z%>;IR&w6?_l{@5*#l(_k}kiQ*mtkp5-zlE zYp&sEn_8|n@Bh_j8@kVwa1UqTSM8bmN=9jqiAgE!AQuJTM(Whr)Q|hda?E|f5 z`0j38a7I`pU+m1@?Z1}-w;&z5pCf(x-+JW&iwo!e=K3A7-D%XfCcfLfYkSFafwNZy zKSrLm==#BQ;R`V8l)M$D&RBd|sA#$kj&3T5;8j*D>-HKIbE2rEmmRp>%{VE&t^PL;NF{bUF?;U%8+u87&nWnqXZ2K`y z?ZnJeGK+SpndG}W%v0871*O0awZ@Ph<V_%5Rc^ns z9ドルLORG3Iq8JGOSoL1A+svtA8~=EvmAsv~sBj9< zA3K#yUh9HJ1`R>k*ujKzNtVn^!{me4p8Z@2nij4s`^S7EZ2D8@F7d5f8S_6j*w}tdV|*0OJk9IDeuu+c%u#P9_EtU!+jdo}s&7qq3NS83 z7XqUaa^O#6hp@+03!@loCUfTFOw%%N^+=tTPx*TNOh>2r@7s3|80rZwo|{*FPSQQ? zM+ETTkYf92n+c-xw<_dz3vxi;6lc)e+=9*b&)zuv3|x?ypjny)48$u+`)n53)>if{ zT3de>IH(S+ZGdP26DZ>d!Al_ETmf*$#I$B;p#}6abeshgz@RV&?tU!>56?hKJ_V*v zGMT)fpn)Rjm@L%50A0r1)uG)U;xK6rm(BzK+3(0UZM#(&+s^<5p00i_>zopr0C@<0 ALI3~& literal 0 HcmV?d00001 From 88eff02657e20304f29d2c0003cfee5e49bbfce4 Mon Sep 17 00:00:00 2001 From: Cotidie Date: 2025年3月18日 11:54:42 +0900 Subject: [PATCH 21/22] =?UTF-8?q?docs:=20README=20=EC=A0=88=EC=B0=A8=20?= =?UTF-8?q?=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 71 ++++++++++++------------------------------------------- 1 file changed, 15 insertions(+), 56 deletions(-) diff --git a/README.md b/README.md index e4e79b1..bb98473 100644 --- a/README.md +++ b/README.md @@ -14,69 +14,28 @@ ## 진행 ![github-flow](./images/github-flow.png) -### 1. 브랜치 생성 및 작업 시작 +### 1. ISSUE -- 각 참가자는 자신의 기능에 맞는 브랜치를 생성하고, 해당 브랜치에서 기능을 완성합니다. +- 각 참가자는 calculator.py의 한 함수를 맡아 이슈를 생성합니다. +- [Issues] -> [New Issue] -> [할일 목록] +- 제목은 'Calculator - <함수> 꾸현'으로 적습니다. +- Assignee에 자기 자신을 붙입니다. -### 2. 커밋 및 Push +### 2. BRANCH & PUSh -- 모든 참가자들은 완성된 기능 혹은 오류를 포함한 코드를 커밋하고, Push 합니다. +- 모든 참가자는 `step-2/이름/함수명`으로 브랜치를 생성합니다. +- 로컬에서 구현 후 add, commit, push합니다. -### 3. Pull Request 생성 -- `step-2`로 PR을 생성하고, 다른 참가자들은 해당 PR을 리뷰하고 피드백을 제공합니다. +### 3. PULL REQUEST -### 4. 머지 +- 구현한 함수에 대해 Pull Request를 올립니다. +- PR 본문에 'close #이슈번호'를 달아 Merge와 동시에 이슈를 닫도록 합니다. -- 리뷰가 완료되면 PR이 머지됩니다. 오류나 문제가 발견되면, 이슈를 생성합니다. +### 4. MERGE +- 조장은 PR을 리뷰한 후 머지합니다. -## 상세 +### 5. PULL +- 모든 참가자는 최신 레포지토리를 로컬로 불러와(PULL) 변경내역을 확인합니다. -### 기능 구현 (4명) -``` -# 저장소 클론 -git clone [GitHub 저장소 URL] -# 디렉토리 이동 -cd simple-calculator - -# 브랜치 생성 및 이동 -git checkout -b [팀명]-feature-[구현할 기능명] - -# 커밋 및 Push -git add calculator.py -git commit -m "Feature [구현한 기능명]" -git push origin [자신의 브랜치명] - -# GitHub에서 PR 생성 -# PR 명명 전략 참조 -``` - -### 코드 리뷰 및 merge - -스터디장은 GitHub에서 개발자 A와 B의 PR을 확인하고 리뷰합니다. - -오류가 존재한다면 PR에서 이를 comment로 남깁니다. - -### 이슈 생성 - -GitHub의 'Issues' 탭에서 새로운 이슈 생성: - -**제목 예시**: "나눗셈 기능 구현에서 분모 0으로 나누는 문제 발생" -**내용 예시**: "0으로 나누었을 시에는 오류 메세지가 출력되도록 변경 요청 드립니다." - -### 이슈 해결 - -``` -# 오류가 발생한 브랜치로 이동 -git checkout [브랜치명] - -# 코드 수정 (IDE로 작성하셔도 됩니다!) -echo "코드">> calculator.py - -# 커밋 및 Push -git add calculator.py -git commit -m "Fix 나눗셈 분모 0으로 나누는 이슈. Fixes #1" -#하고 숫자들 제목에 작성하게 된다면 이슈번호 1을 해결한다는 내용이 포함된다. -git push origin [브랜치명] -``` From 4181a58cd42660bd2f15e4cccbab66f57a93e0bf Mon Sep 17 00:00:00 2001 From: Cotidie Date: 2025年3月19日 11:52:34 +0900 Subject: [PATCH 22/22] =?UTF-8?q?docs:=20=EC=98=A4=ED=83=80=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bb98473..1214997 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ - 제목은 'Calculator - <함수> 꾸현'으로 적습니다. - Assignee에 자기 자신을 붙입니다. -### 2. BRANCH & PUSh +### 2. BRANCH & PUSH - 모든 참가자는 `step-2/이름/함수명`으로 브랜치를 생성합니다. - 로컬에서 구현 후 add, commit, push합니다.

AltStyle によって変換されたページ (->オリジナル) /