개발자 도구 사용법
학습 목표
- 터미널에서 CLI를 사용하는 것이 GUI로 작동하는 것과 차이가 없음을 이해할 수 있다.
- 기본적인 unix/linux 명령어를 사용할 수 있다
- sudo : 관리자 권한으로 무언가 실행할 때 사용하는 명령어. 무언가 보안이 걸린 파일에 접근하거나 새로운 프로그램 설치 시 등. 그러나 권한 문제를 해결하는 솔류션은 아니며 필요한 경우에만 제한적으로 사용하는 것이 좋다. 가능하면 user 권한으로 해결할 수 있어야 한다. sudo 는 한번 인증하면 이후는 생략.
- ls : 리스트 라는 뜻 -> ls를 입력하면 쉽게 말하면 가지고 있는 폴더 리스트가 쫙 뜬다
- cd : 디렉토리로 이동 -> cd 가고싶은 곳 (Ex. cd Downloads) 하면 거기로 이동하고, pwd 는 현재 내 위치가 어디인지 경로를 full로 보여 준다.
디렉토리로 이동 명령어 몇가지
- cd ~ : 홈 디렉토리 (현재 사용자의 개인화 파일들이 있는 디렉토리)
- cd / : 루트 디렉토리 (시스템의 최상위 디렉토리)
- cd . : 현재 디렉토리
- cd .. : 부모 디렉토리
- pwd : 현재 디렉토리(위치) 확인
- mkdir : 디렉토리 생성 - mkdir [dir_name] : 쉽게 폴더 만드는 명령어라고 생각하면 됨
- rm : 삭제 명령어
-> 파일 삭제 : rm [filename]
-> 폴더 삭제 : rm -r [dirname]
-> 정말 삭제할 것인지 물어보지도 않고, 휴지통에 들어가는 것도 아니기 때문에 한번 삭제하면 끝!! 그러니 조심하자!!
- touch : 빈 파일 생성 - touch [file_name]
- cat : 텍스트 형태의 (내용) 파일 확인 - cat [file_name] -> 확인이 안 되는데,,,??
- mv : 파일 및 디렉토리 옮기기 - mv [file_or_dir][target_dir]
- mv : 파일 및 디렉토리 이름 바꾸기 (옮기기랑 동일하게 mv) : mv [file_or_dir][new_name]
- cp : 복사 - cp [file][target-dir] 또는 cp -r [folder] -> 요거도 잘 안됨;;;
- 명령어를 사용할 때, 현재 내가 위치한 디렉토리를 파악할 수 있다.
- 명령어를 사용할 때, 등장하는 키워드에 대해 이해할 수 있다
- 홈 디렉토리 ~ : cd ~ -> 홈디렉토리로 이동
- 루트 디렉토리 / : cd / -> root 폴더(최상위)로 이동
*cd 로 이동하려고 하는데, 파일 이름(폴더명)에 공백이 있을 땐?
- 앞에 한 두글자 치고 tab 하면 자동완성
- 띄어쓰기는 역 슬래쉬로 표기한다 Ex) cd My\ Documents
*command line interface 를 사용하는 이유
권한?
ls -al 의 상세 내용 (ls 뒤에 -al을 덧붙이면 평상시에 안 보이던 파일들까지 상세하게 보여 준다 : list all)

파일 소유권 변경 : 소유자가 누구인지가 굉장히 중요!!
chown owner:group file
(ex. sudo chown steve:staff testfile.txt)
GUI 프로그램의 실행도 간편하게 할 수 있다
- 현재 폴더를 macOS Finder 에서 보기 : open .
- 현재 폴더를 VS code 에디터로 열기 : code .
자주 사용하게 될 CLI 프로그램
- 버전 관리 시스템 git
- Package Manager (프로그램 추가/삭제) : Homebrew
- 텍스트 에디터 vim
- 클라우드 서비스 관리 AWS CLI
Git 안내
학습 목표
- 버전 관리 시스템의 필요성을 이해할 수 있다.
- git의 기본적인 개념에 대해 이해하고 사용할 수 있다.
- local/remote repository에 대한 개념
- fork, clone, commit, pull, push에 대한 개념 및 명령어 사용법
- commit 시에 메시지를 적어야하는 이유
- git 명령을 통해 git repository의 현재 상태 및 변경사항들을 확인할 수 있다.
- status, diff, log
- Staging Area에 파일을 추가하는 것의 의미를 이해할 수 있다
add
Why use version control?
- Storing Versions
- Restoring Previous Versions
- Understanding What Happened
- Collaboration
- Backup
Git 이용 과정
- fork : 오픈 소스로 나와있는 코드를 나의 repository (온라인상 ex:github 상에서 복사) 로 옮기는 것
- clone : local repository 로 옮기는 것. 즉 내 컴퓨터에 복사 하기
- work flow : 제일 master 에서 내 repository 로 옮겨서 내 컴퓨터에 다운받아서 고치고 push로 올리고, 온라인 상의 변경 사항이 발생하면 pull 로 다시 땡겨와서 업데이트 사항 적용하고 하면서 작업한다.


Key terms
-
clone (fork)
-
commit : 파일의 변경 사항이 생겼을 때 변경 사항을 .git이라는 파일에 메모해 놓는 과정. local 에만 해당 내용이 저장된다.
-
pull/push : remote repository 에 올리고 내리는 과정
-
Staging Area : 변경 사항을 적용하려면 일단 staging area 에 add 해서 staging area 를 한번 거쳐야 하고, commit 을 하면서 repository 에 올리는데 이때 commit 은 스샷 하나하나를 올리면서 변경 사항에 대해 코멘트도 함께 덧붙이는 것을 의미 한다.


-
Repository
작업 내용에 대한 기록과 흐름등 모든것을 포괄해서 의미하는 개념이 repository 이다.

-
Branching & Merging
-> Branching : 가지 치기
-> Merging : 가지 합치기
Master : 사용자들을 위한 최종 버전
Develop : 개발중인 버전. 여기서 버그도 수정하고 한다.
Feature : 하나 하나의 기능을 담고 있다.

Koans 풀면서..
Koans 를 다 풀었다면, 아래 주제들도 생각해 보기
- Array가 reference type이라는 것을 이해할 수 있다.
- scope와 closure에 대해서 이해할 수 있다.
- spread syntax와 rest parameter에 대해서 이해할 수 있다.
Method 공부 내용
- toBe : 하단 설명 참조
- toString : 특정 Number 를 문자열로 반환
(변환하고자 하는 숫자).toSting();
it('Matcher toBe를 사용해 일치 여부를 검사하는 법을 학습합니다.', function () {
let expectedValue = (2).toString(); // TODO
let actualValue = (1 + 1).toString(); // "2"
// toBe는 Matcher라고 합니다. 두 값을 비교하는 다양한 메소드 중 하나라고 생각하시면 됩니다.
// toBe()는 === 처럼, 대상의 'type'도 같은지 비교합니다.
expect(actualValue).toBe(expectedValue);
// 2 === '2' => false, 2 === 2 => true
});