[부스트캠프 웹·모바일 8기] 챌린지 2일차 학습 정리

허지예·2023년 7월 11일
post-thumbnail

피어 세션 관련

  • 새롭게 알 게 된 것
    • + 를 문자열 앞에 붙이면 간단하게 형변환을 할 수 있다.
  1. function 함수 선언은 그 선언을 둘러싼 함수의 최상부나 전역 범위로 끌어올려진다. vs const 상수에 화살표 함수는 끌어올려지지 않음
func1(); // 사용 가능
func2(); // type error

function func1() {}
const func2 = () => {};
  1. 화살표 함수는 몇 가지 제한 점이 있다.
  • 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"
  • 변수

    #변수 선언, 대소문자 구분 및 =사이에 공백 X
    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[조건]; then ... elif[조건]; then ... else ... fi 문
    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((산술연산)); then ... elif((산술연산)); then else ... fi문
    if (( ${num} > 3 )); then
        echo "number is greater than 3"
    else
        echo "number is not greater than 3"
    fi
  • 반복문

    #while문
    num=0
    
    while (( "${num}" < 5 )); do
        echo "${num}"
        (( num = "${num}" + 1 )) 
    done
    
    #for문
    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

시간이 된다면 한번 세팅해보기...


profile
대학생에서 취준생으로 진화했다가 지금은 풀스택 개발자로 2차 진화함

0개의 댓글