개발자로서 갖춰야할 기본 기술들을 배워보자
I/O
우리는 컴퓨터를 보통 키보드와 마우스로 GUI를 조작해 사용한다. 마우스, 키보드로 조작하는 입력 소스(Input), 시각적(모니터), 청각적(스피커) 출력과 명령을 출력해 기계를 조작시키는 등의 출력 소스(Output)가 있음 줄여서 I/O
그런데 AWS 같은 클라우드 서비스의 서버들은 몇십개의 데이터 센터가 있고 그 안에 5만개의 컴퓨터가 있다. 여기에 하나하나 GUI를 적용해 I/O(모니터,마우스 등)을 부착하는게 사실상 불가능하기에 서버로 접속 요청을 해 CLI로 소통하게 됐다!
이제 CLI의 실행과 명령에 대해서 알아보자
pwd
print working directory, 현재 위치 확인 명령어
mkdir 이름
make directories, 새로운 폴더 생성
ls
- list, 현재 위치에서 있는 파일과 폴더 리스트를 펼침
- ls -a, ls -l, ls -al(la) 같이 옵션을 사용할 수 있음, a는 숨겨져있는 파일, 폴더를 볼 수 있고, l은 그 상세정보까지 알려줌
open .
현재 위치를 열어 내 GUI로 실행함, 우분투는 nautilus .
cd 경로
- change directory, 현재 위치에서 다른 폴더로 위치 변경
- pwd로 현재 위치 파악, ls로 폴더 파악, cd로 진입 이렇게 가능
touch 파일이름
파일(file)은 서류, 서류를 만진다라는 뜻으로 파일을 생성하는 명령어
cat 파일이름
파일 내용을 출력
rm 이름
- remove, 파일 및 폴더 삭제
- 폴더를 삭제하려면 -rf 옵션 사용 必
- 옵션은 각각 recursive, force이다. 전자는 폴더를 지울때, 후자는 질문을 받지 않고 지울 때 사용!
- 이렇게 파일 및 폴더를 제어할 명령어를 쓸 땐 ls를 자주 써주는 것이 좋다
mv 이름 도착폴더이름 or mv 이름 변경이름
- move, 폴더 및 파일 위치와 이름 바꾸기 명령어
- mv test.text User/ : 텍스트파일을 User폴더로
- mv test.text Hi.text : 텍스트파일의 이름을 Hi로
cp 이름 복사될파일폴더의이름
- copy, 파일 및 폴더를 복사
- rm에서 사용되는 옵션이랑 동일(cp -rf buy hi)
⭐️sudo
- 관리자(root) 권한을 획득하는 명령어, OS 관련 파일에는 주의해서 사용할 것
- sudo mv ~ 처럼 보통 맨 앞에 써줌
자 이제 CLI하고 친해졌으니 CLI를 이용해 모듈과 패키지를 관리하고 사용하는 NPM과 노드를 사용해보자! 근데 나는 맥 세팅할 때 이미 다 깔아서 거의 안함
즉! JS는 브라우저에만 실행 가능했는데 Node.js를 통해 CLI 등 웹브라우저가 아닌 곳에도 실행이 가능해졌다@!!@
package.json
: 패키지 관리를 할 수 있는 파일, npm 모듈을 활용하기 위해 해당 모듈에 대한 정보를 담은 파일, 즉, 프로젝트 전반에 관한 정보를 담고있음!node_modules
폴더에 저장"scripts"
부분은 npm run Key
를 입력해 모듈을 실행시킴range
모듈을 불러와 짝수 생성기를 JS 파일에 만들어 node로 불러오는 작업을 할 것이다!range
모듈을 사용했다, 이렇게 모듈들의 사이트가 있어서 사용법도 알 수 있다! 좋다!!// 모듈 불러오기, range 모듈은 객체데이터임
// 1. range(X, X ...), 객체의 구조분해 할당으로 range()만 써줘도 함수 적용 가능
const { range } = require("range");
// 2. range.range(x, x ...), 객체이므로 변수.함수로 불러오는 형태
// const range = require("range");
function getListMultiplesOfTwo(upTo) {
// TODO
return range(2, upTo + 1, 2);
}
module.exports = getListMultiplesOfTwo;
- 변경 이력 저장
- 변경 이력이 있어 되돌아갈 수 있음
- 누가 어떻게 수정, 추가, 삭제했는지 알 수 있음
- Git으로 간 파일은 Github같은 원격저장소를 이용해 백업, 협업에 용이
프로젝트가 특정 시점에 수정되면 변경 사항을 기록한 '스냅샷'이라는 백업 복사본이 생긴다. 이 것을 'Commit한다.'라고 한다.
- Git Repository를 관리할 수 있는 클라우드 기반 서비스 - Remote Repository
- 깃헙을 통해 Git으로 관리된 폴더를 공유하고 접근할 수 있음 - 개발자의 SNS
- 여러 오픈소스들도 GitHub을 통해 배포되고 관리됨
- 용어
1.Fork : 어떤 원격 저장소에서 내 원격 저장소로 가져오는 작업
2.Clone : Fork해서 가져온 Repository를 내 로컬레포지토리(걍 컴터)로 가져옴
3.Push : 소스 코드 변경 작업을 끝낸 뒤 내 레포지토리에, 가져온 원격 저장소에 다시 넣어 커밋하는 것, Pull request를 통해 반영 여부를 요청할 수 있다. 반대는 Pull