- 작업 수행은 쉬우나, 작업순서에 대한 정리가 필요함! 반복해서 정리를 하는 과정이 될 듯.
- 걔념만 이해하면 정말 쉬운 모듈
shell, vim commands 복습
Shell 운영체제의 커널과 사용자를 이어주는 소프트웨어 - shell에 명령을 내리면 커널에 전달을 해줌 : 커널에서 결과물을 다시 사용자에게 전달 : 커뮤니케이션 도구 - sh(Bourne Shell): AT&T Bell 연구소의 Steve Bourne이 작성한 UNIX 쉘 - csh: 버클리의 Bill Joy가 작성한 UNIX 쉘 - bash(Bourne Again Shell): Brian Fox가 작성한 UNIX 쉘 - 다양한 운영체제에서 기본 쉘로 채택 : 가장 많이 사용 - zsh: Paul Falstad가 작성한 UNIX 쉘 : mac os에서 기본으로 채택
windows : git bash 사용하여 실습함
- aaaaaa @ DESKTOP : DESKTOP에 aaaaa라는 유저가 접속되어있다
명령어
pwd : 현재 작업중인 위치
ls : 현재 디렉터리에 있는 파일과 폴더의 목록 - ls -a : 현재 디렉터리의 모든 파일과 폴더 - ls -l : 파일과 폴더의 상세 정보 - ls -al : 숨김 파일까지 포함된 파일 목록을 상세 정보
cd : 디렉터리 이동 - cd document : 다큐먼츠 디랙터리 이동 - cd .. :현재 디렉터리의 상위 디렉터리로 이동하는 명령어 - ..이 상의 디렉터리를 의미
mkdir dev : "make directory"의 약자로, 새 디렉터리를 만드는 명령어 - dev : 생성할 디렉터리의 이름
touch : 파일의 생성 / 수정 시간을 갱신 - touch README.md : 프로젝트 설명을 담는 README.md 파일을 생성 - touch hello.py / touch hello.c / touch hello.txt / touch report_final.docx / touch main.java / touch main.go / - touch ./src/hello.py : ./src/ 디렉터리 내에 hello.py 파일을 생성
mv : 파일이나 디렉터리를 이동 / 이름 변경 - mv hello.c src : hello.c 파일을 src 디렉터리로 이동 - mv ../hello.txt ./ :상위 디렉터리에 있는 hello.txt 파일을 현재 디렉터리로 이동 - mv main.go scr/main.cs : 현재 디렉터리에 있는 main.go 파일을 src 디렉터리로 이동하고, 이름을 main.cs로 변경 (이름울 변경하며 위치를 옮김) - mv main.cs main_copy.go :현재 디렉터리에 있는 main.cs 파일의 이름을 main_copy.go로 변경 (이름만 변경) - mv hello.* .. : hello라는 이름을 가진 모든 파일을 상위 디렉터리로 이동하라
cp : 파일을 복사하는 명령어 - cp hello.txt hello_copy.txt : 현재 디렉터리에 있는 hello.txt 파일을 복사하여 hello_copy.txt라는 새로운 파일을 생성
rm : 파일이나 디렉터리를 삭제하는 명령어 * 삭제된 파일은 복구가 불가능하기 때문에 매우 주의해서 사용 - rm main.java : main.java를 삭제해라 - rm hello* / rm hello.* : hello 이라는 이름을 가진 모든 파일을 삭제해라 - rm -rf src : src 디렉터리와 그 안의 모든 파일 및 하위 디렉터리를 강제로 삭제하는 명령어 - rm -rf / : 시스템의 루트 디렉터리(/)와 그 아래 모든 파일 및 디렉터리를 강제로 삭제 ( 매우 위험한 명령어) - rm ./* : 현재 디렉터리(./)에 있는 모든 파일을 삭제하는 명령어
Vim - Free and Open source text editor - Bill Joy의 vi 확장판 - CLI 기반의 text editor - nano, emacs, gedit 등 - Neovim, Macvim 등 다양한 확장판 - vundle(지원중단), vim-plug 등의 확장기능 설치 관리자 제공 - 모드 기반의 마우스 입력 대체 - 마우스 없이 해야해서 모드들이 많음 : 그게 좀 어려움 - normal mode(default): 모든 키가 명령으로 동작 - insert mode(i): 입력, 수정 모드 - - visual mode(v): 블록설정 - command-line mode(:): 패턴 검색, 필터, 줄이동, 종료 등의 액션 수행 모드
- VS보다 가벼워서 많이 사용함 / 파이썬 개발환경은 쓸 만함
- vim은 한글로 동작불가 - git을 위한 vim에서는 insert만 왔다갔다함
vim hello.md : hello.md 파일을 Vim 텍스트 편집기로 열어 편집
제목 텍스트는 #을 쓰고 # 제목 / ##소제목 / ###소제목의 소제목 이렇게 한다
일반적인 문단을 작성할때는 기호 없이 작성하면 됩니다. - 엔터를 쳐도 다음 문단일 것 같지만 이 문장은 윗문단에 포함된 문장 - 새 문단을 열때는 엔터를 두 번 쳐야한다. - 문법간의 구분도 엔터를 두 번 쳐야한다.
vim mode - normal mode: 어느 모드에서건 esc를 누르면 이동 - insert mode: i on normal mode - visual mode: v on normal mode - command mode: : on normal mode
커멘드 모드에서 - : 하고 숫자하면 해당 라인으로 이동을 할 수 잇음 - :w : 저장 - :wq : 저장하고 나가겠다. - :q : 나가겠다 - :q! : 모든걸 무시하고 나가겠다
cat hello.md : hello.md에 있는 걸 읽어오겠다
git
git 분산형 버전관리 시스템(distributed Version Control System) - Linus Torvalds가 Linux 커널 관리를 위해 1주일만에 만든 버전관리 시스템 - 압도적 업계 1위 : 단순한 구조와 빠른 속도 - 분산형 저장소 지원 - 비선형적 개발(수천개의 브랜치) 가능 : 멀티버스처럼 다른 시간선에서 일을 할 수 있음_다른사람 신경X 합쳐질때 정리가능 - 소스코드 주고받기 없이 동시작업이 가능해져 생산성이 증가 - 수정내용은 commit (각각 일을 한 것, save 파일) 단위로 관리, 배포 뿐 아니라 원하는 시점으로 Checkout 가능 - 새로운 기능 추가는 Branch로 개발하여 편안한 실험이 가능하며, 성공적으로 개발이 완 료되면 Merge하여 반영 - 인터넷이 연결되지 않아도 개발할 수 있음
- Cloud Platform에서 관련 작업을 위해서는 CLI가 필수 : 반드시 CLI를 알아야한다. GUI가 쉬움 - CLI에 익숙해지면 GUI를 사용하기 위해 필요한 것은 도구에 대한 적응 뿐 - 익숙하지 않은 Shell command에 익숙해지는데에도 도움
git의 구조 - Blob: 파일 하나의 내용에 대한 정보 - Tree: Blob이나 subtree의 메타데이터(디렉토리 위치, 속성, 이름 등) - Commit: 커밋 순간의 스냅샷
git의 단위
- Local Repository (로컬 저장소) : 사용자의 컴퓨터에 저장된 Git 저장소 - 모든 변경 사항을 커밋할 수 있고, 자신의 로컬 저장소에서 모든 히스토리를 관리 - 다른 사람이 관여하지 않고, 자신의 개발 환경에서 작업하는 공간
- Remote Repository (원격 저장소) : 원격 저장소는 GitHub, GitLab, Bitbucket과 같은 원격 서버에 위치한 저장소
- 혼자 깃을 쓸 때는 add commit push만 할 줄 알면 됨 - add commit을 하면, 글씨가 쓰이고, push를 하면 remote로 넘어감
git과 git hub의 차이
- git : 분산형 버전 관리 시스템 - 코드의 변경 사항을 기록하고 관리하는 도구 - 로컬 저장소에서 주로 사용되며, 사용자 컴퓨터에서 소스 코드를 관리
- git hub : Git 저장소 호스팅 서비스 (Hosting Platform) - Git을 사용하는 소스 코드 호스팅 플랫폼 - Git 저장소를 원격으로 저장하고 관리
- gitlab : 보완이 좋아서, 주로 금융권에서 주로 사용이 됨 - Bitbucket : 다른 엔지니어, 디자인업체랑 협업을 할 때 많이 사용이 됨
$ git config --list : Git 설정 정보 목록을 출력 전역 설정(global configuration) - $ git config --global user.name “{username}” : Git에서 사용할 사용자 이름을 설정 - $ git config --global user.email “{emailaddr}” ; Git에서 사용할 사용자 이메일을 설정 - $ git config --global core.editor “vim” : 기본으로 사용할 텍스트 편집기를 vim으로 설정 - $ git config --global core.pager “cat” : Git 출력 내용을 페이저(pager) 없이 바로 출력
- git config —global alias.lg “log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit” - 의미 - git config --global alias.lg: Git에서 전역으로 lg라는 별칭을 설정하는 부분 - log --color --graph: log: 커밋 로그를 표시하는 명령어입니다. --color: 로그를 출력할 때 컬러를 사용해 가독성을 높입니다. --graph: 커밋 내역을 그래프로 시각화해서 브랜치 및 머지 내역 등을 표시합니다.
--pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit” 로그의 출력 형식을 지정 %Cred%h%Creset: 짧은 커밋 해시를 빨간색으로 표시합니다. %C(yellow)%d%Creset: **참조(HEAD, 브랜치, 태그 등)**를 노란색으로 표시합니다. %s: 커밋 메시지. %Cgreen(%cr): 커밋이 언제 발생했는지를 녹색으로 표시합니다 (상대 시간). %C(bold blue)<%an>%Creset: 커밋 작성자의 이름을 굵은 파란색으로 표시합니다. --abbrev-commit: 커밋 해시를 짧게 표시합니다.
git 사용하기
원격 저장소 생성 0. + 로 해서 새 저장소 생성하기 1. 이름 저장하고 - 설명은 생략가능 - public, private 중 private를 하면 좀 잠김 : public으로 하는 게 좋음 2. add readme.md 하기 3. license 꼭!!! 설정하기!!!! - 단체나 팀에 속해서 일할 때 반드시 필요 - 오픈소스라고 해서 공짜가 아님. : MIT 라이센스 : 가장 열려있는 라이센스, 나머지는 제한사항이 있음 - GNU GPL (조심해야함) GPL이 붙어있는 라이브러리를 쓰면, 코드는 무조건 오픈소스가 되어야함 - 아니면 법적문제 - 상용/보완이 필요한 곳에는 절대 쓰지 않기
원격 저장소에서 로컬로 프로젝트를 복사(clone) - 초록색 버튼 눌러서 local에서 url을 복사해서 가져옴 - git창에서 pwd로 위치가 dev인걸 확인한 뒤에, - git clone (url 복사) 하기
만든 원격저장소에 hello.py 파일 만들기 - cd (저장소 이름) 을 해서 저장소로 들어가기 - touch hello.py - ls 로 해서 hello.py가 만들어진지 확인 - git status로 현재 상태 확인 : 로컬 저장소의 작업 트리와 스테이징 영역의 상태를 확인 - 처음 상태는 hello.py가 추척되지 않는 파일로 표시됨 - 이 파일은 처음 추가된 파일이며, 커밋되기 전에 추가(Git의 관리하에 두기) 작업이 필요 - git add hello.py를 해서 스테이징 영역에 추가한 것 - 다시 git status로 상태 확인 - hello.py가 Changes to be committed 아래에 표시 - 이 파일이 스테이징 영역에 올라갔다는 것을 의미하며, 이제 커밋 준비가 된 상태
만든 hello.py에 들어가서 작업하기 - git commit 으로 hello.py안에 들어가기 - vim으로 들어가게 됨 - vim에서 배운 내용 - i를 눌러서 insert 모드로 바꾸어주기 - 내용을 작성 - esc로 노멀모드로 나와서 - :wq +enter 해서 g하면 커밋이 완성됨
토큰 세팅하기 -https://github.com/settings/tokens 로 들어가기 > Generate new token(classic) - note는 personalToken : 구분할때 쓰는 이름, 아무거나 써도 괜찮음. 나중에 알아볼 수 있게 쓰긴 하기 - expiration : 만료기한 : 혼자 사용때는 no expiration으로 가능 : 컴퓨터를 바꿀때 다시 줘야함 - Select scopes 내용 모두 누르기 - generate 해주기 - 토큰값을 복사해서 사용 : 새로고침 금지..! : 새로고침하면 토큰을 잃어버림-새로 만들어야함 - 토큰은 매번 생성X , 1번만 만들면 됨.
git push origin main - 로컬 저장소의 main 브랜치에서 원격 저장소(origin)로 변경 사항을 푸시(push) - main 브랜치의 최신 커밋들이 원격 저장소의 main 브랜치로 푸시 - 로컬 main 브랜치의 변경 사항을 원격 저장소(origin)의 main 브랜치로 푸시
git remote -v - 현재 로컬 저장소와 연결된 원격 저장소의 URL 목록을 보여줌.
git헙에 올리기 - pwd와 ls로 현재 위치 상황 확인 - git status로 현재 확인하기 - vi README.md 로 README 내부 내용 수정 - git add README.md 를 올리기
Conventional Commits - commit의 제목은 commit을 설명하는 문장형이 아닌 구나 절의 형태로 작성 - importanceofcapitalize `Importance of Capitalize` - prefix 꼭 달기 - feat: 기능 개발 관련 - fix: 오류 개선 혹은 버그 패치 - docs: 문서화 작업 - test: test 관련 - conf: 환경설정 관련 - build: 빌드 작업 관련 - ci: Continuous Integration 관련 - chore: 패키지 매니저, 스크립트 등 - style: 코드 포매팅 관련 - template - {type}: {description} 작업단위 축약(breaking change가 있다면 type 뒤에 !) - {body} 작업 상세 기술 - {footer} 부가정보(ex) BREAKING CHANGE: Drop email sign up support)
- vi hello.py : hello.py의 코드 내용을 수정
-commit hello.py ; hello.py의 부연설명 수정
진행하는 방법
0. 상위 폴더에서 하위 폴더로 찾아가기
- pwd : 현재 위치 확인
- ls로 내부 폴더 찾기
- cd 폴더 경로로 계속 해서 찾아가기
1. 폴더 이동 및 위치 확인: - cd [폴더 경로]: 작업할 폴더로 이동. - pwd: 현재 위치 확인 (작업 위치가 dev 폴더 안인지 확인).
2. 파일 생성 및 확인: - touch hello.py: hello.py 파일 생성. - ls: 파일이 생성되었는지 확인.
3. 파일 수정: - vi hello.py: 파일 열어서 코드 작성. - :wq: 작성 후 저장하고 종료.
4. 파일 실행 및 확인: - python hello.py: 작성한 Python 파일 실행해 코드가 제대로 작동하는지 확인.
5. Git에 파일 추가 및 커밋: - git add hello.py: 파일을 스테이징 영역에 추가. - git commit : 커밋 메시지와 함께 파일을 커밋.
6. 원격 저장소로 푸시 (옵션): - git push origin main: 로컬 커밋을 원격 저장소에 업로드.
README.md 에 적을 것
가장 기본적인 틀
# ProjectName : 프로젝트 이름을 적는 곳 This is Abstract. See [Demo](Demo link) : 프로젝트에 대한 간단한 설명과 데모 링크를 제공 Project badges(CI/CD, gh stars, ..) : 뱃지: CI/CD 상태, GitHub 스타 수 등 프로젝트 상태를 나타내는 뱃지들
## Prerequisites : 프로젝트를 실행하기 위한 필수 조건 (예: 설치해야 할 프로그램, 환경 설정). ## How to Start : 프로젝트를 시작하는 방법을 설명 ## Installation : 프로젝트 설치 방법에 대한 구체적인 절차를 작성 ## Features : 프로젝트에서 제공하는 주요 기능을 나열 ## Run Tests(optional) : 테스트 실행 방법을 설명 ## Credit ; 프로젝트에 기여한 사람들이나 참고 자료를 기재
바꾸는 방법 1. 파일 수정: - vi README.md: 파일 열어서 작성. - :wq: 작성 후 저장하고 종료.
2. Git에 파일 추가 및 커밋: - git add hello.py: 파일을 스테이징 영역에 추가. - git commit : 커밋 메시지와 함께 파일을 커밋.
3. 원격 저장소로 푸시 (옵션): - git push origin main: 로컬 커밋을 원격 저장소에 업로드.
gitignore : 특정 파일이나 디렉토리를 추적하지 않도록 명시하기 위한 파일 - 비밀번호, api키 같은 것 등을 git에 넣지 않기 위하여 쓰는 것 - https://www.toptal.com/developers/gitignore/ - 운영체제, 언어, 등등을 넣고 생성 - 텍스트를 전체 선택 복사 (ctrl + a / ctrl+c) - 터미널로 와서, - touch .gitignore로 해서 숨김파일을 만듬 ( 앞에 .이 붙어있으면 숨김 파일, ls하면 안 보임, ls -a 해야 보임 - 마우스 우클릭+paste 하여서 붙여넣기 :wq로 저장하고 나오기 - git status 로 상태 확인 - git add .gitignore로 올려주고 - git commit으로 commit 작성해주기 - git push origin main으로 올리기
- nbconvert로 .py or .html 파일 단위로 변환하여 변경사항 추적 - 3rd-party https://www.reviewnb.com/ 로 렌더링 된 ipynb의 변경사항 추적 - github에서 바로 변경사항 추적 가능
git은 습관이 중요함 - TIL(Today I Learned..) repository에 오늘 배운 것을 정리 - 매일 git으로 업로드를 해야하기 때문에 강제 커맨드 학습 가능 - github blog - hexo 로 정적 블로그를 만들어 정리하는 습관을 만들고 Markdown과 친해지기 - Side Project - 짧은 단위의 프로젝트를 자주 수행하여 생성-완성까지의 과정을 자주 반복
Static Site Generator 정적 페이지를 생성해주는 도구 - github pages는 파일 저장소이기 때문에 완성된 페이지만 제공 가능 - 모든 페이지가 독립적으로 존재해야함 -> 컨텐츠 관리의 어려움 발생 - jekyll( https://jekyllrb-ko.github.io/ ): Ruby 기반 정적 사이트 생성기 - 설치와 사용이 쉬움(많은 튜토리얼) -사용자가 많았음 - Hugo( https://gohugo.io/ ): Go 기반 정적 사이트 생성기 - 빠른 속도로 사이트 빌드 가능 - 사용자 증가 중 - Hexo( https://hexo.io/ko/index.html ): node.js 기반 정적 사이트 생성기 - 쉬운 사용성과 사용자 개인화 - Next.js, Gatsby, ..
hexo 사용하기 - 시작 위치는 dev 폴더 - hexo 명령어 : 정적 사이트 생성을 하라는 의미 - hexo init [폴더 이름] : 새로운 Hexo 프로젝트를 초기화
- npm install 명령어로 package.json 파일에 정의된 **모든 의존성(dependencies)**을 설치하는 명령어
- hexo init [폴더 이름]을 하면 https로 시작하는 url 주소가 뜸 -> 미리보기 가능 - hexo server 를 하면, http://localhost:4000/ 의 사이트에서 미리보기가 가능
- $ hexo new post "제목" 를 하여 새로운 포스트 생성 - vi source/_posts/[제목.md]를 내용 수정
- $ hexo clean && hexo generate : Hexo 블로그를 빌드하는 과정에서 자주 사용하는 명령어 조합 - hexo clean: 캐시와 이전에 생성된 파일들을 삭제 - hexo generate (또는 hexo g): 정적 웹사이트 파일들을 생성 - hexo server 를 하면,http://localhost:4000/ 의 url에서 아까 내용 수정한 게 바뀌었는지를 확인하기
- vi _config.yml 명령어는 _config.yml : 파일을 vi 편집기로 열어 수정 - title, subtitle 변경 - author 변경, url 변경 - theme : next로 변경 - type : git - repo - hexo deploy만 치면 보낼 수 있게끔 - git hub에서 새 레포스토리를 만듬 - Repository name에 https://username.github.io 로 넣기 - v퍼블릭으로 크리에이트하기 - 여기서Quick setup— if you’ve done this kind of thing before에 나오는 url을 복사해서 터미널에 - 터미널로 와서 repo를 만들어서 붙여넣기
- npm install hexo-deployer-git --save 설치 - hexo clean && hexo generate으로 한번 끊어주기 : 어떤 작업을 하면 항상 이렇게 클린이랑 generation을 해줌 - hexo server 의 http://localhost:4000/에서 한번더 확인하기
- $ hexo clean && hexo deploy 를 하면 전송이 바로 됨 - 깃허브에 올라와있는지 확인하기