피어 세션 관련
- 새롭게 알 게 된 것
+ 를 문자열 앞에 붙이면 간단하게 형변환을 할 수 있다.
- 더 추가적으로 알아봐야 할 것
- const 상수에 화살표 함수 할당하기 vs function 함수 선언하기
- function 함수 선언은 그 선언을 둘러싼 함수의 최상부나 전역 범위로 끌어올려진다. vs const 상수에 화살표 함수는 끌어올려지지 않음
func1();
func2();
function func1() {}
const func2 = () => {};
- 화살표 함수는 몇 가지 제한 점이 있다.
- this, arguments나 super에 대한 자체 바인딩이 없고, methods로 사용해서는 안됩니다.
- new.target키워드가 없습니다.
일반적으로 스코프를 지정할 때 사용하는 call, apply, bind methods를 이용할 수 없습니다.
- 생성자(Constructor)로 사용할 수 없습니다.
- yield를 화살표 함수 내부에서 사용할 수 없습니다.
const func = function () {};
리눅스와 유닉스의 역사
유닉스 (Unix)
- 1960년대 후반 MIT 대학과 벨 연구소에서 개발을 시도했던 운영체제인 멜틱스(Multics)가 기원이다.
- 멜틱스(Multics)가 미니컴퓨터에서도 돌아갈 수 있도록 기능을 축소하고 단순화 시킨 운영체제를 개발한 것이 유닉스(Unix)
- +) 애플이 사용하는 OS에서 유닉스를 이용한다.
리눅스 (Linux)
- 대학생이었던 리누스 토르발스에 의해 개발된 운영체제
- 직접 커널을 만들며 여러가지 기능을 추가했고, 운영체제에 가까울 정도로 기능이 늘어났다.
- 초기에는 불완전한 운영체제였는데, *GNU 프로젝트에서 이 리눅스 커널에 관심을 갖게 되고 이후 결합하면서 완전한 운영체제로 거듭났다.
- *GNU 프로젝트
- 리처드 스톨만이 시작
- GNU는 유닉스와 호환되는 자유 소프트웨어를 개발하는 프로젝트.
- GNU 선언문
- +) 리누스 토발즈의 자서전: 리눅스 그냥 재미로
유닉스 vs 리눅스
- 리눅스가 유닉스에서 파생된 운영체제이다.
- 리눅스는 리눅스 운영체제 소스코드를 무료로 배포했기 때문에 레드햇, 우분투, centOS 등 다양한 리눅스 배포판들이 생겨났다.
- 리눅스는 오픈소스이기 때문에 버그가 발생하면 많은 기관과 사용자들이 나서서 보완한다.

- 유닉스는 운영체제 코드가 공개되어 있지 않기 때문에 버그 이슈는 IBM사에서 일괄적으로 관리한다.
+) vs windows
원도우는 유닉스 계열 OS에 비해 상대적으로 신뢰성이 낮다. 해킹이나 버그가 많다.
또한, 대량의 네트워크 부하를 감당하기 힘들기 때문에 네트워크 솔루션으로 사용하기 적합하지 않다.
shell에 대해서...
참고 블로그
shell이란

- 커널과 사용자간의 다리 역할을 하는 것
- 사용자로부터 명령을 받아 그것을 해석하고 프로그램을 실행한다.
- 명령어 해석기 기능, 프로그래밍 기능, 사용자 환경 설정 기능을 가지고 있다.
여러가지 shell의 종류

- Bourne shell
- /bin/sh
- 단순하고 처리 속도가 빠름.
- 시스템 관리 작업을 수행하는 많은 쉘 스크립트는 bourn shell을 기반으로 함.
- C shell
- /bin/csh
- Bourne shell에 없던 alias, history 같은 사용자 편의 기능을 포함
- 셸 스크립트 작성을 위한 구문 형식이 C언어와 같아 C shell이라고 함.
- Korn shell
- /bin/ksh
- C shell과 달리 Bourne shell과의 호환성 유지.
- alias, history 같은 사용자 편의 기능을 포함하면서 처리 속도가 빠름.
- bash shell
- /bin/bash
- Bourne shell을 기반으로 개발
- Bourne shell과의 호환성 유지하면서 사용자 편의 기능을 포함
- bash shell의 모든 버전은 GPL 라이선스에 의거하여 자유롭게 사용 가능
- 리눅스의 기본 셸로 제공됨
- tcsh
- C shell의 기능 + 명령어 완성 기능을 추가해서 만든 퍼블릭 도메인 버전
- 다른 셸과 달리 스크립트 안에 함수를 정의할 수 없다고 한다.
C shell with file name completion and command line editing
(https://www.tcsh.org/)
- zsh
- bash shell이 등장하고 나서 대학생이 개발
- bash에서 제공하는 전반적인 상호작용은 동일.
- oh-my-zsh에서 제공하는 많은 플러그인, 테마를 추가해서 사용할 수 있음
Oh My Zsh is a delightful, open source, community-driven framework for managing your Zsh configuration. It comes bundled with thousands of helpful functions, helpers, plugins, themes, and a few things that make you shout...
(https://ohmyz.sh/)
쉘 기본 사용법
쉘 명령 종류 (우선 순위 순)
- alias: 특정 명령을 옵션과 함께 짧은 별칭으로 정의
- 쉘 예약어: 셸 스크립트 작성 시 사용되는 do, while, case와 같은 예약어
- 함수: 쉘의 일련의 명령을 함수로 정의한 것
- 내장 명령: 쉘 자체에 포함된 built-in 명령.
- cd, echo, pwd 등
- man builtin 명령 혹은 help builtin-command 명령으로 쉘 내장 명령의 사용법 확인이 가능하다.
- 일반 명령: 파일 시스템에 실행 파일로 존재하는 명령
※ type 명령어로 리눅스의 특정 명령이 어떻게 해석되는지 확인할 수 있다.
+) 리눅스의 다양한 명령어와 옵션들 알아보기...
쉘 스크립트에 대해서...
[참고]
https://minkwon4.tistory.com/159
https://jwkim96.tistory.com/199
쉘 스크립트란
쉘에서 사용할 수 있는 명령어들의 조합을 모아서 만든 배치파일이다. 즉, 운영체제의 Shell을 이용하여 한줄씩 순차적으로 읽으면서 명령어들을 실행시켜주는 인터프리터 방식의 프로그램이다.
쉘 스크립트를 활용해서 묶어진 명령어 조합을 수행하거나 반복적인 명령어를 단일 명령으로 쉽게 사용할 수 있다.
쉘 스크립트 기본 문법
-
출력
echo "Echo command"
printf "printf command\n"
-
변수
num=100
str="hello"
echo "$num"
echo "$str"
echo "${num}"
echo "${str}"
-
배열
arr=("ab" "de" "ef")
echo "${arr[0]}"
echo "${arr[@]}"
arr+=("gh")
-
if문
num=5
if [ "${num}" -eq 2 ]; then
echo "num is 2"
elif [ "${test_num}" -eq 3 ]; then
echo "num is 3"
else
echo "num is not 2 or 3"
fi
if (( ${num} > 3 )); then
echo "number is greater than 3"
else
echo "number is not greater than 3"
fi
-
반복문
num=0
while (( "${num}" < 5 )); do
echo "${num}"
(( num = "${num}" + 1 ))
done
arr=(1 2 3 4 5 6 7)
for i in ${arr[@]}; do
echo "$i"
done
for (( i = 0; i < 10; i++)); do
echo "$i"
done
쉘 스크립트의 활용
-
디스크 상태 및 파일 시스템 점검
디스크의 상태 점검 작업을 통해 디스크 fault로 발생할 수 있는 장애를 사전에 대처함
-
주요 설정파일 권한 점검
시스템, 혹은 애플리케이션과 중요한 설정파일의 권한이 올바르게 설정되어 있는지 확인
-
프로세스 점검
애플리케이션과 관련된 서비스가 정상적으로 동작하고 있는지 확인
-
서비스 배포
애플리케이션 배포를 자동화 하여, 단순 반복을 줄여줌
리눅스 디렉토리 권한 관련
리눅스 디렉토리 권한의 종류
- 읽기
- 파일을 읽거나 복사할 수 있다.
- ls 명령으로 디렉터리 명령을 볼 수 있다. (ls 명령의 옵션은 실행 권한이 있어야 볼 수 있다.)
- 쓰기
- 파일을 수정, 이동, 삭제할 수 있다. (디렉터리에 쓰기 권한이 있어야 한다)
- 파일을 생성하거나 삭제할 수 있다.
- 실행
- 파일을 실행할 수 있다. (쉘 스크립트나 실행 파일의 경우)
- cd 명령을 사용할 수 있다. 파일을 디렉터리로 이동하거나 복사할 수 있다.
접근 권한의 표기 방법
읽기 쓰기 실행을 각각 r, w, x로 나타낸다.
사용자 카테고리 별로 세 가지 권한의 부여를 rwx 세 문자를 묶어서 표기됨

접근 권한 관련 명령어
chmod
chmod [-R] 권한 모드 파일 또는 디렉토리명
- 기호 모드 / 숫자 모드가 있음
- 옵션 -R: 하위 디렉토리까지 모두 변경
chmod (기호 모드)

chmod (숫자 모드)

- 각 사용자 카테고리 별로 rwx에서 권한의 유무를 0/1으로 변환하여 2진수 -> 10진수로 변환한다.
예시
- rwx -> 111 -> 7
- rw- -> 110 -> 6
- 764 -> 111 | 110 | 100 -> rwxrw-r--
가상 환경 설정하기 & SSH로 접속하기
이 부분은 따로 정리
crontab
crontab 이용해서 일정 시간마다 js 파일 실행하기
-
node 파일을 실행하는 쉘 스크립트 작성 (절대 경로로 작성!)
/usr/bin/node [js 파일]
-
crontab 설정
crontab -e
이후 뜨는 text 편집에서 다음과 같이 수정
SHELL=/bin/bash
* * * * * source [위에서 작성한 쉘 스크립트 파일]
※ 바로 적용되지 않고, 적용되는 시간이 좀 걸린다.
윈도우에서 리눅스 환경 만들기 (WSL)
Linux 배포 관리 | Microsoft Doc
Windows Subsystem for Linux
별도의 가상 머신이나 이중 부팅 없이 Liunx 환경을 실행할 수 있도록 하는 Windows의 기능이다.
WSL 설치하기
관련 공식 문서가 있다.
WSL 개발 환경 설정 | Microsoft Docs
시간이 된다면 한번 세팅해보기...