[TIL] 23.03.28

Minkyu Shin·2023년 3월 28일
0

TIL

목록 보기
2/44
post-thumbnail

오늘의 나는 무엇을 잘했을까?

비록 늦잠을 자서 늦게 공부를 시작했지만, 주어진 시간에 집중을 열심히 했다.

오늘의 나는 무엇을 배웠을까?

Unix command line

1. CLI vs. GUI

  • Command Line Interface는 command를 통해 시스템과 상호작용
  • Graphical User Interface는 이미지, 아이콘 등이 포함 된 그래픽을 사용하여 시스템과 상호작용
  • CLI는 정확하지만 일반 사용자가 사용하기 어렵고, GUI는 사용이 용이하지만 정밀도가 부족한 장단점을 각각 가지고 있음

2. Unix

  • 1970년대 초반에 개발된 운영 체제로써
  • 소프트웨어를 개발/실행하는데 편리한 플랫폼
  • 쉽게 수정하여 다른 컴퓨터에 적용이 가능
  • 이를 기반으로 한 다양한 OS 등장

3. command 사용하기

3-1. 기초 용어

  • terminal : input을 받고 output을 출력해 주는 프로그램
  • shell : command를 해석해 주는 프로그램, command를 컴퓨터가 이해할 수 있는 형태로 바꾸어 줌 (e.g. bash, zsh)

3-2. command의 기본 형태

  • command -option argument
  • option : command를 어떻게 실행할지
  • argument : command의 대상

3-3. 매뉴얼 확인하기

  • man command 사용
  • man argument
  • 방향키 / f, b 사용하여 아래 위로 이동

3-4. terminal 사용 팁

  • 위쪽 방향키 : 이전에 실행된 command 자동입력

  • 커서 이동
    ctrl + A / E : 줄 가장 앞 / 뒤로
    option + 방향키 : 단어별 이동

  • 입력 취소 or 커맨드 실행 종료 : ctrl + c

  • terminal 화면 지우기 : clear

  • 단어 자동완성 : Tab

4. 디렉토리와 파일 다루기

4-1. Unix 디렉토리 구조

  • 뒤집어진 나무와 같은 모양

  • root 디렉토리로부터 내가 찾고자 하는 파일 경로를 쭉 작성

  • 현재 사용자의 홈 디렉토리 : ~ = /Users/user_name

  • 절대경로 또는 상대경로로 작성

  • 상대경로 : 현재 위치한 디렉토리 기존으로 경로 나타내는 방법, 현재 디렉토리 . 상위 디렉토리 ..

  • 파일이나 디렉토리 이름에 공백이 있을 경우 따옴표로 감싸 주거나 \ back-slash 사용

  • 이름에는 애초에 공백을 사용하지 않는게 바람직함

4-2. command

  • pwd : 현재 디렉토리 경로 확인
  • cd : 다른 디렉토리로 이동, argument로 이동할 디렉토리 작성
  • ls : 디렉토리 내용물을 list-up
    ls의 다양한 옵션들
    -a : 모든 파일과 디렉토리를 보여줌
    -l : 파일과 디렉토리에 대한 구체적인 정보
  • mkdir : 새 디렉토리 생성, argument로 새로 만들 디렉토리 경로 작성, 여러 argument 주면 여러 디렉토리 생성
  • touch : 새 파일 만들기 or 파일의 마지막 접근 시간 또는 수정 시간 update, 여러 argument 주면 여러 파일 생성
  • cat : 파일을 조회할 때
  • mv : 디렉토리나 파일 이름 변경 or 이동, argument로 작업할 대상 경로 / 이동할 목적지
    또는 변경할 이름 2개를 받음
  • cp : 디렉토리나 파일 복사 붙여넣기, argument로 복사할 대상 경로 / 복사할 위치 2개 받음
  • mvcp 모두 안전하게 사용하고 싶다면 -i 옵션을 사용하는 것 추천
  • rm : 디렉토리나 파일 삭제, 여러 개의 argument 줄 수 있음
    -f : 어떤 상황에서도 확인 없이 삭제하는 옵션
  • cprm 모두 디렉토리를 다룰 때는 -r 옵션 사용 필요
  • sudo : 일시적으로 일반 유저에게 권한을 부여함
    sudo 커맨드란?

4-3. vim

  • CLI의 텍스트 에디터
  • 4가지 사용 모드가 있음
    일반 모드 : 기본 모드로써 모드 전환 시 반드시 거침, 다른 모드에서 esc 로 돌아옴
    입력 모드 : i 로 이동
    명령 모드 : : 으로 이동
    비주얼 모드 : v 또는 V 로 이동
  • vim 단축키 모음

JavaScript

1. 자료형

1-1. typeof 연산자

  • typeof 값 형태로 사용
  • 값의 자료형을 확인해 주는 연산자
  • 해당 자료형을 문자열로 돌려줌

1-2. 연산자 우선순위

  • 수학 사칙연산처럼 JS 연산자도 우선순위를 갖음
  • 이를 잘 이해해야 프로그램에 이상한 문제가 생기지 않음
  • 연산자 우선순위

1-3. 형 변환 (type conversion)

  • 값에 정해진 자료형을 다른 자료형으로 바꿀 때

  • JS 기본제공 Number() , Stirng() , Boolean() 사용

  • falsy value
    Boolean 함수 사용 시 false 가 리턴되는 값 : '' , 0 , NaN , null , undefined 등 ...

  • 자동 형변환 되는 경우도 있음

  • 산술연산자 (+, -, *, /, %, **)
    연산되어 지는 피연산자들을 숫자형으로 변환
    단, + 의 경우 한쪽이라도 문자열이 있다면 문자열로 변환
    NaN 값은 어떤 값고 연산해도 NaN

  • 관계 비교 연산자 (<, <=, >, >=)
    특별한 경우 제외 숫자형으로 변환

  • 같음 비교 연산 (===, !==, ==, !=)
    ===, !== 의 경우 형 변환이 일어나지 않고,
    ==, != 숫자형으로 변환

1-4. 템플릿 문자열

  • 일정한 틀을 가진 문자열
  • 템플릿 문자열을 사용할 떄는 `` 백틱과 ${}를 사용해서,
    let name = 'name'
    let age = 10
    console.log(`내 이름은 ${name}, 나이는 ${age} 입니다.`)
    와 같이 나타냅니다.

2. 추상화

2-1. 할당 연산자 (assignment operators)

  • = 오른쪽의 피 연산자를 왼쪽의 피연산자에 할당
  • e.g. x = x + 2
  • 할당 연산자의 오른쪽부터 계산되는 순서가 있음

2-2. 복합 할당 연산자와 증가/감소 연산자

  • 복합 할당 연산자 : 할당 연산자와 결합해서 자주 쓰이는 표현을 간략하게 해 주는 연산자
    += -= *= /= %=
  • 증가/감소 연산자 : 변수의 값을 1씩 증가/감소 시킬 때
    ++ --

2-3. return 문

  • 함수를 호출한 코드에 값을 반환해 줌
  • 함수의 실행을 중단시키고 호출한 코드로 되돌아감
  • 함수에 return 값이 없다면 암묵적으로 undefined 반환

2-4. return 과 console.log의 차이

  • return : 함수 실행을 종료, 값을 함수 호출 코드에 반환
  • console.log : 웹 콘솔에 메세지를 출력하는 메소드

2-5. 변수 Scope

  • Scope(유효범위)는 참조 대상 식별자를 찾아내기 위한 규칙
  • Scope는 식별자 이름의 충돌을 막아줌
  • 전역 변수 : 코드 어디에서든 참조 가능한 변수
  • 지역 변수 : 함수 내부에서 선언된 변수, 그 지역과 그 지역의 하부 지역에서만 참조 가능
  • JS는 기본적으로 함수 레벨 scope를 따름
    -> 함수 코드 블록 내에서만 유효, 함수 외부에서는 유효하지 않음
  • 단, ES6에서 도입된 let , const keyword의 경우 블록 레벨 스코프로 사용 가능
  • 선언되지 않은 변수에 값을 할당하면 전역 객체의 프로퍼티가 됨 -> 암묵적 전역, 변수 선언이 된 것이 아니다. 전역 객체 프로퍼티에 추가 됐을 뿐
  • Scope에 대한 이해가 매우 중요하므로, 추가 공부 후 내용을 추가하려 한다.
    Scope
    JS Scope

2-5. 상수 (constant)

  • const keyword로 선언
  • 값의 재할당이 불가능
  • 반드시 선언과 동시에 값을 할당해 줘야 함

오늘의 나는 어떤 어려움이 있었을까?

늦잠을 잤다. 시간에 맞춰 잘 일어나자.

내일의 나는 무엇을 해야할까?

  • Git 강의 수강
  • JavaScript 토픽 마저 수강
  • CS50 CH.3-4까지 수강
profile
개발자를 지망하는 경영학도

0개의 댓글