-
교과목명: 오픈소스 소프트웨어 (SAI0003-2)
-
이 과목은 3가지 목표를 지향한다.
오픈소스 소프트웨어 개발을 위한 기본 개념과 도구, 특히 소스 코드 버전 컨트롤과 패키지 관리, 프로젝트 빌드를 중점으로 배운다.
애자일 기반 소프트웨어 개발 방법인 짝 프로그래밍, 테스트 주도 개발, 행위 주도 개발, 클라우드 기반 데브옵스를 공부한다.
새로운/낯선 소프트웨어 개발 환경 및 도구를 스스로 배우는 태도를 배우는 것을 목적으로 한다.
- 평가비율
-
시험일정
- 중간고사: 7주차
- 기말고사: 15주차
Week1-2 오픈소스소프트웨어 개요 (강의자료)
소프트웨어 저작권 소유자가 모든 사람에게 소스 코드를 게시, 사용, 복사, 수정 및 배포할 권리를 부여한 소프트웨어
-
- 개별 이용허락
- 로열티 지급
- 실행 바이너리만 제공
- 복제, 배포, 수정 불가
- 사용 기간과 목적 제한
-
- 일괄 사전 이용허락
- 로열티 없음
- 소스 코드 제공
- 복제, 배포, 수정 허용
- 기간/목적 제한 없음
-
- Richard Stallman – Creator of GNU Project
- FSF (Free Software Foundation, 1984~)
- GPL 1.0 (1989), GPL 2.0 (1991), GPL 3.0 (2007)
- Copyleft (No SW patent, No DRM)
-
- Eric S. Raymond – Author of 'The Cathedral and the Bazzar (성당과 시장)'
- OSI (Open Source Initiative, 1998~)
- Ambiguity of `free’
- Combination of OSS and Closed Source SW
- License under law
오픈소스 소프트웨어의 사용, 복제, 수정, 배포 권한의 범위를 지정
Week2-1 버전 관리 개요 (강의자료)
- Track your files over time so that you can easily get back to a previous working version
- VCS software
- CVS (Concurrent Version System)
- SVN (Subversion)
- Mercurial
- Darcs
- Git
- Repository or Repo (저장소)
-
- Check in a file and modify it over time
-
- Check out, edit, and check in a file
-
- The trunk has a history of changes as a file evolves
-
- Copy code into a separate folder so we can have a separate history of changes
-
- Merge changes from one branch to another
-
- When changes overlap like an example below
-
- Let you tag (label) any revision for easy reference
-
- One central repository with many users
- Ex) CVS, SVN, Darcs
- One central repository with many users
-
-
Every user owns his or her local repository
-
A separate remote (central) repository
- Sometimes, more than one remote (central) repositories
-
Two new actions (with remote repositories): fork pull request
- Ex) GIT, Mercurial
-
Week2-2 Git (강의자료)
- Linus Torvalds
- For collaboration of development of Linux kernel
- A distributed version control system
- Workspace : files you are working with
- Index: (staged) files to be considered in the next commit
- Local repository : files committed to the local repo
- Remote repository : files pushed to the remote repo
Git-based Source Code Hosting for Social Coding
2. Fork (참고한 자료)
If you want to contribute to an existing project to which you don’t have push access, you can “fork” the project
the same project in your own namespace, allowing you to make changes to a project publicly as a way to contribute in a more open manner
- 다른프로젝트에 내가 만든 commit을 제출한다는 의미
- 실제 전송단위는 branch
- fork한 github 프로젝트를 토대로 새로운 commit 내용들을 제출 가능
- git checkout 현재브랜치명
- git merge 합칠 브랜치명
한 브랜치에서 변경된 사항을 다른 브랜치에 적용 가능
- git rebase -i --root
- git commit --ammend -sm "커밋 메시지"
- git rebase --continue
- git blame 파일명
- git show 커밋아이디
Week3: Markdown (실습링크)
- 이탤릭체: 문장 처음과 끝에 '_' 붙여서 사용
- ex) a , b
- 볼드체: 문장 처음과 끝에 '**' 붙여서 사용
- e 63E9 x) a, b
- 둘이 동시 적용도 가능
- ex) a, b
- 문장의 앞에 ‘#’ 붙여서 사용
- #을 1개부터 6개까지 추가해 사용 가능
- 많이 추가할수록 글씨의 크기 감소
- 제목, 부제를 나타낼 때 사용
- 인라인 링크 "[텍스트] (링크주소)"
- 참조 링크
- "[태그][참조]"
- "[참조]: 링크"
- 맨 앞에 ! 붙여줘야함 (나머지는 링크와 동일)
- 문장 앞에 > 추가해 사용
인용
- 순서가 있는 리스트
- 순서대로 1. 2. 3. ... 붙여서 사용
- 순서가 없는 리스트
- *붙여서 사용
- 공백 개수로 세부단계 구분
- 개행 나눔
- 개행으로 단락 구분
- 줄 나눔
- 문장의 끝에서 스페이스 2번 눌러 구분