Skip to content
 
 

Latest commit

 

History

509 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Week 1-1 강의 개요(강의계획서)

오픈소스소프트웨어 과목에서는 3가지 목표를 지향합니다.

  1. 오픈소스 소프트웨어 개발을 위한 기본 개념과 도구, 특히 소스 코드 버전 컨트롤과 패키지 관리, 프로젝트 빌드를 중점으로 배운다.
  2. 애자일 기반 소트트웨어 개발 방법인 짝 프로그래밍, 테스트 주도 개발, 행위 주도 개발, 클라우드 기반 데브옵스를 공부한다.
  3. 새로운/낯선 소프트웨어 개발 환경 및 도구를 스스로 배우는 태도를 배우는 것을 목적으로 한다.

역량 증진을 위한 수업 목표에 대한 수업 방법

  • 컴퓨팅사고 - 함수형 프로그래밍언어 스타일을 익힘
  • 융합 - LLM/ChatGPT를 새로운 프로그래밍을 배우는데 활용
  • 글로컬 - Git/Github를 통해 협업하는 방식을 배움, 영어 학습 자료를 공부함으로써 영어 활용 기회를 늘림
  • 소프트웨어 응용 문제해결능력 - 오픈소스 소프트웨어 기본 개념과 도구, 기초 함수형 프로그래밍 하스켈

Week 1-2 오픈소스소프트웨어 개요

오픈소스소프트웨어란 무엇인가?

소프트웨어 저작권 소유자가 모든 사람에게 소스 코드를 게시, 사용, 복사, 수정 및 배포할 권리를 부여한 소프트웨어

OSS License?

오픈소스 소프트웨어의 사용, 복제, 수정, 배포 권한의 범위를 지정

오픈소스 소프트웨어를 어떤 관점에서 볼 수 있는가?

  • commercialization View(싱용화 관점)
  • Philosophical View(OSS에 대한 철학적 관점)

Open Source Software License Examples?

  • GPL
  • LGPL
  • MIT License
  • BSD License
  • Apache License
  • MPL

라이센스를 구별할 수 있는 특성은 무엇인가?

  1. Linking with Proprietary SW
  2. Must publish Modification
  3. Patent Protection

Week 2-1 버전 관리 개요

Without VCS, you

  • Make a single backup copy
  • Add a version number or date
  • Use a shared folder so other people can see and edit files together

Version Control System은 무엇일까?

Track your files over time so that you can easily get back to a previous working version

VCS software example

  • CVS
  • SVN
  • Mercurial
  • Darcs
  • Git

General Actions in VCS

  1. Checkin - check in a gile and modify it over time
  2. Checkout and editing - check out, edit, and check in a file
  3. Diffs - the trunk has a history of changes as a file evolves.
  4. Branching - copy code into a separate folder so we can have a separate history of changes
  5. Merging - merge changes from one branch to another
  6. Conflicts - When changes overlap like an example below
  7. Tagging - Let you tag any revision for easy reference

TWO Main Types of VCS

  • Centralized VCS - one central repository with many users
  • Decentralized VCS - every user owns his or her local repository

Introduction to GIT(A distributed version control system)

  • Workspace: files you are working with
  • Index: files to be considered in the next commit
  • Local repository: files committed to the local repo
  • Remote repository: files pushed to the remote repo

Week 2-2 Git

Git이란 무엇일까?

Git 개발과정, 소스파일 등을 관리하는 도구

History 관리가 되어 개발되어온 과정, 역사를 볼 수 있고, 특정시점으로 복구가능


Git 실습 Stage 1: 초기화 및 첫 commit하기

  • stage1 요약: 현재 report_card.pdf 와 report_card.c 가 add하고 commit 되어진 상태

Git 실습 Stage 2: diff 사용과 추가 commit하기

  • stage2 요약: commit3 폴더에 있는 report_card.c와 commit4 폴더에 있는 report_card.c를 add하고 commit을 진행하였고 git log 명령어를 사용하여 지금까지 4개의 commit들을 확인

Git 실습 Stage 3: commit에 본인서명 포함하기

  • stage3 요약: commit5 폴더에 있는 report_card.c와 commit6 폴더에 있는 report_card.c를 add하고 commit –sm을 진행하여 Signed-off-by: JUNSEO KIM gongryong581@naver.com으로 서명되어 commit 확인.

Git 실습 Stage 4: 지금까지의 commit을 push하자

  • stage4 요약: git shortlog 명령어를 통해 지금까지한 6개의 commit들을 확인하였고 origin이라는 이름으로 제 Github remote repository를 등록하여 origin으로 6개의 commit들을 push

Git 실습 Stage 5: 커밋 수정하기

  • stage5 요약: commit 6-1에 있는 report_card.c를 가져온 뒤에 git diff 명령어로 차이점을 확인하고 add하고 commit. 이전과 다르게 commit을 할 때 git commit —amend 명령어를 사용하여 새로운 commit을 만드는 것이 아닌 가장 위에 있는 최근 commit을 수정. 하지만 이대로 git push를 하면 local repository와 Github에 있는 commit들이 일치하지 않아 충돌하여 error가 발생. 이럴때에는 git push —force 명령어를 사용하여 remote repository에 push.

Git 실습 Stage 6: add 한거 취소하기

  • stage6 요약: git add를 하여 index 영역으로 옮기고 git reset을 하여 옮긴 것을 취소.

Git 실습 Stage 7: commit 한거 없애기

  • stage7 요약: test.txt파일을 git add와 commit을 한 뒤에 push까지 하여 remote repository로 옮겼으나 잘못 push한 파일이라 git reset HEAD~1 명령어로 commit을 한 test.txt 파일을 지우고 git push origin master —force 명령어를 통해 다시 remote repository로 옮김.

Week 2-3 Github, fork, pull request

Image Github란 무엇인가? Github.com click

개발자들이 코드를 저장하고, 관리하며, 공유할 수 있도록 돕는 웹 기반 플랫폼. 이는 코딩 프로젝트의 파일과 각 파일의 수정 기록을 담고 있는 원격 저장소를 제공하며, 개발자들이 협업할 수 있도록 지원합니다.

Fork란 무엇인가?

다른 사람의 GitHub 저장소(repository)를 자신의 계정으로 그대로 복사해오는 것을 말함. 다른 프로젝트에 기여하고 싶을 때, 또는 다른 사람의 코드를 기반으로 새로운 프로젝트를 시작하고 싶을 때 사용됨.

Pull - reqeust란 무엇인가?

자신이 수정한 코드를 원본 저장소의 관리자에게 병합(merge)해달라고 요청하는 기능. Fork한 저장소에서 코드를 수정한 후, 그 변경 내용을 원본 프로젝트에 반영하고 싶을 때 사용.

Git 실습 Stage 8: pull-request 하기

  • stage8 요약: Taeung/git-training에서 fork를 한 뒤 git clone 명령어를 사용하여 저장소를 컴퓨터에 복제합니다. git checkout -b develop 명령어로 develop라는 새로운 브랜치를 만들고 그 브랜치로 전환합니다. git add 하고 commit 한 후에 push.

Git 실습 Stage 9: merge로 2개 브랜치 합치기

  • stage9 요약: git branch 명령어를 사용해서 현재 작업 중인 브랜치가 develop인지 확인합니다. git checkout -b test 명령어를 사용해서 test라는 새로운 브랜치를 만들고 test 브랜치로 이동합니다. git add 와 git commit을 해주고 git checkout develop 명령어로 develop 브랜치로 전환합니다. git merge test 명령어를 사용해서 test 브랜치에서 만든 변경 사항을 develop 브랜치에 합침.

Git 실습 Stage 10: rebase 하기

  • stage10 요약: git remote add upstream 명령어를 사용해서 원본 프로젝트(Taeung/git-training)를 upstream이라는 이름으로 추가합니다. git fetch upstream dev 명령어로 원본 저장소의 dev 브랜치에 있는 최신 commit을 가져옵니다. git rebase upstream/dev 명령어를 실행하여 upstream/dev 브랜치의 최신 커밋들 위에 develop 브랜치가 놓이도록 베이스를 업데이트를 진행.

Git 실습 Stage 11: 중간에 낀 commit 수정하기

  • stage11 요약: git rebase -i --root 명령어를 사용해서 최초 commit부터 commit 기록들을으로 수정할 수 있는 모드로 진입합니다. 편집기에서 수정하려는 commit의 맨 앞에 있는 pick이라는 단어를 edit으로 변 경한 후저장합니다. git commit를 해주고 git rebase --continue 명령어를 입력해 리베이스 과정을 계속 진행.

Week 2-4 Git: Advanced topics

Git을 쓰는 진짜 이유?

  • 협업과 현대적인, 선진화된 소스코드 개발과정의 필수도구로 Git을 쓴다.

VCS를 쓰는 배경

  • Software가 비가시성과 변경성, 제조가 아닌 개발이라는 특징을 가지고 있기 때문

commit 단위 개발

  • commit 단위 관리를 통해 코드를 수정한 이유가 명확.
  • commits을 통한 Review와 Discussion 그리고 적용.

Git의 가치

  • 개발과정 가시화 + 협업용이 + 유지보수 + 추적용이 + 소스코드 품질상승
  • Git을 활용하는 오픈소스가 대표적인 증명
  • 카카오, NHN 엔터테이먼트 등 SW 기업들의 Pull-request 방식도입

Week 3 Markdown

Markdown 개요

  • 마크다운은 일반 텍스트 편집기를 사용하여 서식이 지정된 텍스트를 만드는 데 사용되는 경량 마크업 언어
  • 2004년에 존 크루버와 아론 스워츠가 만듦.
  • GitHub의 README 파일에서 널리 사용됨.

Markdown 문법 examples

  • Headings : #을 통해 제목을 만듭니다.
  • ltalic, bold, etc : _사용하여 이탤릭체를 사용, **를 사용하여 굵은 글씨체 사용
  • List with bullets and numbers : *나 번호를 사용하여 목록을 만들어 사용
  • Links and images : []링크 형식으로 링크 첨부, ![]이미지 링크 형식으로 이미지 첨부 가능

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages