💡 이번에 배운 내용
- Section1.
웹 프론트엔드 개발의 기초지식을 기반으로 스스로 단순한 Web App을 만들 수 있다.- Unit8. Linux/Git 기초 : 개발자에게 필요한 CLI, 터미널, 패키지 매니저 등에 대해 배우고 git에 대해 실습해 본다.
오늘은 개발자에게 필수인 터미널 사용법과 패키지 사용, node 등에 대해 배웠다. 매우 중요한 내용을 하루에 몰아서 배운 느낌이다. 유난히 정리할 내용도 많았다. 시간이 모자랄 정도로 공부량도 많았고 실습할 내용도 많았다.
내용 공부를 어느 정도 진행한 뒤에는 모듈을 설치하고 모듈을 이용해 간단한 기능을 만들고 테스트해보는 실습을 했다.
이 모든 과정을 터미널에서 npm, node.js 를 통하여 수행해야 했는데 페어와 여러 시행착오를 거친 뒤에 4분을 남기고 과제를 완료할 수 있었다.
저작권과 여러 이유로 과제를 공개할 수는 없지만 과제를 통해 다음을 배울 수 있었다.
시간도 걸리고 우왕좌왕 했지만 정말로 재밌었다! 어려운 걸 해낸 느낌이라서 더 뿌듯한걸까? 배울수록 개발이 재밌어서 다행이라는 생각이 든다.
오늘도 흡족한 마음으로 하루를 마무리하며 눈을 감을 수 있다 ☺️
CLI, 터미널, 패키지, 패키지 매니저, nano, nvm, node.js, brew, package.json, 버전 관리, 버전 관리 시스템, git
컴퓨터를 조작하기 위해서는 입력(input)과 출력(output)이 필요하다. 키보드와 마우스 등을 통해 사용자가 명령을 입력하면 컴퓨터는 그 명령에 맞게 출력한다. 이 입출력을 I/O(Input/Output)라고 한다.
GUI(Graphic User Interface)이 등장하기 전에는 CLI를 이용해 텍스트로 컴퓨터와 소통했다.
대부분의 서버 컴퓨터에는 무료 운영체제인 Linux를 사용하므로 Linux환경에서의 CLI를 학습해야 한다.
(내 컴퓨터는 mac OS이기 때문에 mac 위주로 작성하였다.)
(mac OS에서는 terminal 프로그램을 이용한다.)
터미널은 CLI로 텍스트로 된 I/O명령을 수행한다. 터미널을 사용하기 위해서 기본적인 명령어를 알아야 한다.
터미널을 사용하면 한줄씩 명령어를 입력할 수 있는데 이 한줄을 프롬프트(prompt)라고 한다. 프롬프트에 명령어를 입력한 후 enter를 눌러 명령어를 실행한다.
만약 폴더나 파일 명에 띄어쓰기가 있을 경우 백슬래시()를 이용해 표현할 것
ex. hey\ guys
경로
명령어
루트 폴더는 '/'로 표시되며 리눅스 환경에서는 관리자가 아닌 일반 사용자에게 루트 폴더 권한을 부여하지 않는다. 만약 관리자 영역을 함부로 변경할 경우 운영체제에 영향이 생겨 다시 설치해야할 수 있으니 주의한다.
또한 ls -l을 입력하면 해당 파일의 소유자가 나오는데 관리자일 경우 root가 표시된다.
프로그램을 설치, 변경, 삭제하기 위해서는 관리자 권한이 필요하다.
텍스트 파일을 편집해야하는 경우 사용하며 대부분의 리눅스 환경에는 nano가 설치되어 있다.
nano 또는 nano '파일명' 으로 nano를 실행한다.
nano를 실행하면 하단에 Ctrl과 조합하여 사용하는 단축키가 표시된다.
저장은 Writout, 열기는 Read file 로 표시되어 있다.
리눅스에서 패키지는 여러 파일을 하나의 파일로 모아 압축한 파일을 의미한다.
말그대로 포장한 것이다.
패키지 매니저는 복잡한 패키지 설치, 변경, 삭제 등을 편리하게 해주는 도구다.
터미널에서 아래와 같은 순서로 설치한다.
1) xcode-select 설치: 터미널에 xcode-select --install 입력
2) Homebrew 설치: Homebrew사이트에서 터미널에 들어갈 내용을 복사하여 붙여넣기 한다.
3) 비밀번호 입력: 컴퓨터 시작시 입력하는 비밀번호를 입력한다.
Node.js는 javascript 런타임(runtime) 중 하나로 웹 브라우저가 아닌 곳(터미널 등)에서도 javascript를 실행할 수 있는 프로그램이다.
런타임이란 프로그래밍 언어가 실행되는 환경을 뜻한다. 예를 들면 웹 브라우저는 javascript의 주요 런타임이다.
node.js를 사용하면 서버를 구축하는 등 웹 브라우저를 사용하지 않고도 넓게 javascript를 사용할 수 있다.
NVM(Node Version Manager)은 패키지 매니저처럼 node.js의 버전을 관리해준다. 따라서 node.js를 설치하기 위해 nvm을 먼저 설치해야 한다.
터미널에 wget을 사용해 최신버전의 nvm을 설치한다. (wget은 url만 있으면 쉽게 설치하는 프로그램으로 brew를 이용해 파일명 wget만 알면 쉽게 설치할 수 있다.) 최신버전의 install URL은 nvm 공식문서에서 확인할 수 있으며 'wget -q0- [url] | bash' 형식으로 되어있다.
설치하면 터미널을 새로 시작하라고 뜬다.
설치가 완료되면 nvm이 설치된 곳에서 nvm --version 로 버전을 확인할 수 있다.
nvm은 위에서 설명했듯이 node.js의 버전 관리가 용이하다.
때문에 여러 버전을 삭제업이 설치할 수 있고, 골라서 사용이 가능하다.
방법은 아래와 같이 매우 간단히 터미널에서 설치할 수 있다.
nvm install 12.17.1 #특정 버전 설치
nvm use 12.17.1 #특정 버전 사용
nvm ls #설치된 버전 확인
nvm install --lts
이 한줄로 터미널에서 간단하게 설치하고 node -v 로 버전을 확인할 수 있다.
만약에 nvm과 node의 버전이 제대로 확인되지 않거나 실행되지 않는다면 아래 출처대로 해보면 좋다. 저자께 참 감사드린다!!
문제 해결 방법 출처: palette.log - zsh: command not found: nvm 오류해결법
CLI명령어를 사용하여 원하는 곳에 JS파일을 저장하고, 터미널 어디서든지
node '파일명'
으로 파일을 실행해보면 javascript가 실행되는 것을 알 수 있다.
JS파일을 터미널로 작성할 때는 위의 nano를 사용해서 작성하고 저장하면 된다.
npm(Node package Manager)로 node.js의 모듈을 쉽게 설치해주는 패키지 매니저이다. 모듈이란 프로그램을 실행하기 위한 만들어진 코드를 뜻한다.
package.json은 프로그램 사용시 필요한 이런 모듈들을 모아놓은 파일로 프로젝트 전반에 필요한 내용이 모여있다. 다만 어떤 파일이 필요한지만 적혀있을 뿐 그 자체로 내용이 담겨있지는 않다.
npm install --save-dev
--save-dev는 옵션으로 npm으로 설치시 모듈이 자동으로 devDependencies에 추가된다.
//그저 예시입니다.
{
"devDependencies": {
"@mochajs/json-file-reporter": "^1.2.x",
"chai": "^x.1.0",
"mocha": "^7.x.0",
"sinon": "^x.0.2"
}
}
//그저 예시입니다.
{
"dependencies": {
"react": "^1x.x.0",
"react-dom": "^1x.x.0"
"range": "^0.0.x"
}
}
아래와 같이 쉽게 설치할 수 있으며
npm install react
npm install --save react
--save는 옵션으로 모듈을 자동으로 dependencies에 추가해준다.
//그저 예시입니다.
"scripts": {
"start": "node script.js",
"test": "mocha myFunction.test.js --sort",
"lint": "eslint"
}
//start : node.js로 해당 파일 실행 -> npm run start
//test : test 실행 -> npm run test
//lint : 코드 검사 -> npm run lint
git은 대표적인 버전 관리 시스템이다.
프로젝트 결과물(소스 코드 등)을 각 버전별로 저장하는 것을 말한다. 만약 이전 버전으로 돌아가야 하거나 어떤 점이 추가, 변경, 삭제 되었는지 알아보기 위해서 각 버전이 있으면 용이하다. 이 버전 관리를 쉽게 해주는 시스템을 버전 관리 시스템이라고 한다.
git은 코드를 효율적으로 관리할 수 있는 '분산형 버전 관리 시스템'이다.
git repository를 관리할 수 있는 클라우드 기반 서비스로 컴퓨터에서 git으로 관리하는 프로젝트를 올려둘 수 있다. 여러 사람이 공유하고 접근할 수 있으며 이를 활용해 여러 오픈 소스들이 존재한다.
오픈 소스의 경우 여러 사람이 코드를 수정하거나 추가할 수 있는데 이를 기여(contribute)라고 한다.
버전 관리를 위해 git으로 관리되는 디렉토리를 git repository라고 한다.
크게 local repository와 remote repository로 나뉜다.
아래 사이트를 따라 터미널로 git 최초 설정을 할 수 있다.
참고: Git 최초 설정
1. drwxr-xr-x 랑 -rw-r--r-- 이건 뭘까?
디렉토리, 파일과 그 권한을 나타낸다.
맨 앞 자리 한 자리는 파일 및 디렉토리의 종류를 나타내고,
(d는 디렉토리, -는 파일)
그 뒤는 세자리씩 각각 소유자, 그룹 사용자, 그 외 사용자에 대한 권한을 나타낸다.
각 권한의 의미는 다음과 같다.
문자 | 의미 | 숫자 | 의미 |
---|---|---|---|
r | read | 4 | 읽기 권한 |
w | write | 2 | 쓰기 권한 |
x | execute | 1 | 실행 권한 |
정리하자면
drwxr-xr-x : 디렉토리,
소유자에게 읽기,쓰기,실행 권한,
그룹 사용자에게 읽기,쓰기 권한,
그 외 사용자에게 읽기,쓰기 권한 있음
-rw-r--r-- : 파일,
소유자에게 읽기,쓰기 권한,
그룹 사용자에게 읽기 권한,
그 외 사용자에게 읽기 권한 있음
리눅스 CLI 권한 참고:
https://bamdule.tistory.com/169
https://flatlifer.com/30
https://velog.io/@wmc1415/%EB%A6%AC%EB%88%85%EC%8A%A4-%EA%B6%8C%ED%95%9Cpermisson-%EC%84%A4%EC%A0%95chmodchown1