[Ep.S1] AI-REMEMBER (07.03)

권승민·2021년 7월 2일
0

♣ 이번 Episode는 이번 주 평일 이내에 아직 진행하지 않은 노드의 일부분을 다룹니다.
♣ Python Master 내용과 겹치는 부분은 최대한 편집하고 새로운 내용 위주로 다루었습니다.

<4.16~4.21 - 파이썬의 다양한 자료형>

  1. NoneType : 이 자료형에 속한 값은 None이 유일하다.
  2. 0과 None은 서로 다른 개념을 갖는다. 0은 휴지심은 있고 휴지만 없는 상태라면, None은 휴지심조차 없는 상태를 말한다.
  3. NoneType는 함수의 반환값으로 아무것도 정의하지 않을 경우에 나오는 오류이다.
  4. NoneType는 프로그램 런타임 안에 그 어떤 것으로도 정의되지 않는 유형을 정의하는 데 필요하다.
  5. Boolean : 이 자료형에 속한 값은 True, False 단 2개이다.
  6. (심화) print(not not True) = True이다. 'not not ~' 자체에 오류는 없다.
  7. 0, None은 Boolean에서는 False, 그 외에는 대부분 True
  8. append(), remove(), pop() 구문의 사용 방법 및 용도
  9. 딕셔너리가 주어졌을 때, 일반적으로 값만 단독으로 뽑아낼 수는 없다. 단, 키만 단독으로 뽑아낼 수는 있다. 혹은 items() 구문을 이용하여 키와 값을 모두 출력할 수 있다.

    10. (★★★) 총정리

<4.22~4.24 - 심화문제 풀이>

  1. 4.22~4.23 재귀함수와 치킨, 피보나치 : 피보나치 함수에 대한 값을 출력하는 방법이다. 여기서 프로그램 개발자는 임의의 정수 하나를 입력 받아서 주어진 코드를 거쳐 피보나치 함숫값을 출력해낸다.
  2. 4.24 더 빠르게!
    • 스코프(Scope) : 특정 위치에서 어떤 변수에 접근할 수 있는지, 한 곳에서 정의된 변수가 어디까지 유효한지 정의된 범위
    • 메모이제이션(memoization) : 프로그래밍에서 중간 계산값을 기억해 두었다가, 계산 과정에서 기억해둔 값을 그대로 읽어쓰며 계산에 걸리는 시간을 최소화하는 기법

<3.9~3.10절 - 리눅스 터미널, 프로세스 관리, 시스템 콜>

  1. 터미널 에뮬레이터 : 그래픽 환경에서 터미널을 모사하는 소프트웨어
  2. 터미널 : 컴퓨터에 정보를 입출력하는 소프트웨어 및 하드웨어로서의 역할을 하는 장치
  3. (참고) 우분투 18.04 이상에서는 로그인한 사용자의 그래픽 환경을 터미널에 2번 붙여둔다.
  4. 리눅스 프로세스 관련 명령어 : grep, sudo, kill
  5. grep : 입력으로 전달된 내용에서 특정 문자열을 포함한 줄만 선택해서 출력하는 명령어
  6. (참고) '|' 를 통해 다른 명령문 실행결과와 결합해서 사용
  7. sudo : 후위 명령을 최고 관리자 권한으로 실행
    • 유닉스 계열 운영체제에서 주로 사용
    • 일반 사용자가 잠시 최고 관리자 권한으로 작동할 수 있게 도와준다.
    • 매번 확인해야 하는 단점이 있으나 이를 통해 실수를 면하기 위한 기회를 준다.
    • 일부 권한만 허용할 수도 있어 보안상으로 좋다.
    • sudo 명령을 실행하기 위해, sudo라는 동일한 이름의 그룹에 속해있어야 한다.
  8. kill : PID에 해당하는 프로세스에 신호를 보내는 데 사용
  9. (참고) PID : Process ID 번호
  10. 시스템 콜 : 프로세스가 커널에게 요청을 전달하는 기능

<3.11~3.12절 - 리눅스 프로그램과 환경변수, 패키지 관리자>

  1. which 명령어 : 명령어의 전체 경로를 출력
  2. 환경변수 : 운영체제가 프로세스 단위로 사용하는 변수
  3. (명령어 해석) echo $PATH : PATH라는 이름의 환경변수의 값을 출력(echo)하라.
  4. export 명령어 : 셸의 변수나 함수를 현재 환경으로 내보낸다.
  5. env 명령어
    • 명령어 제공 : 해당 명령어를 새로운 환경에서 실행
    • 명령어 미제공 : 현재 환경의 정보를 출력
  6. 패키지 관리자 : 공인 저장소에 있는 프로그램과 라이브러리를 패키지단위로 설치, 관리할 수 있도록 하는 프로그램
  7. apt-get 명령어 : APT 패키지 관리자를 통해 공인 저장소에서 패키지를 가져다 설치하거나 제거할 수 있다.

<3.13절 - 리눅스 사용자와 권한>

  1. cat 명령어 : 하나 이상의 텍스트 파일을 순서대로 출력
  2. chown 명령어 : 대상 파일의 소유 사용자와 그룹 변경
  3. d, r, w, x?
  4. chmod 명령어 : 대상 파일의 권한을 변경

<3.14~3.16절 - 간단한 하드웨어>

  1. (참고) CPU 칩이 만들어지는 과정
    [https://www.youtube.com/watch?v=6-tKOHICqrI]
  2. 기계어 : CPU 칩이 처리할 수 있는 명령어
  3. 기계어로 직접 프로그램을 짜는 것은 꽤 복잡하여 비효율적이다.
  4. 컴파일(Compile) : Python 등과 같이 인간이 이해할 수 있는 언어로 짠 프로그램을 CPU에서 실행할 수 있는 기계어로 번역하고 최적화하는 과정
  5. 명령어 집합 : 지원하는 연산 set, 데스크탑 CPU에서 호환성이 높다.
  6. 클럭(clock) : 초당 처리속도의 기준으로 CPU 성능을 판단하는 척도에 속한다.
  7. GPU(Graphical Processing Unit) : CPU에 비해 이해할 수 있는 명령어는 적지만 코어의 수를 늘리는 방법으로 다차원의 행렬 연산에 특화
  8. (★★★) 딥러닝에서는 그래픽 연산과 유사하게 다차원 행렬 계산이 필요한 부분이 있어서 GPU를 많이 사용하지만, 구글의 딥러닝 전용으로 개발된 TPU(Tensor Processing Unit)와 같은 전용 칩이 개발되고 있다.
  9. RAM : 컴퓨터의 주 저장장치. 비싼데다 용량 늘리기도 어렵고 휘발성이다.
  10. HDD, SSD(Solid State Drive) : 컴퓨터의 보조 저장장치. 비교적 저렴하고 비휘발성으로 데이터가 보존된다.
  11. (참고) 딥러닝에서 데이터를 읽어오는 데 시간이 많이 걸린다면?
    • 저장장치를 SSD로 변경
    • 여러 개의 스레드를 사용하여 RAM 메모리에 올려두기
  12. 클라우드 컴퓨팅 : 인터넷상의 서버를 통하여 데이터 저장, 네트워크, 콘텐츠 사용 등 IT 관련 서비스를 한 번에 사용할 수 있는 컴퓨팅 환경 (출처 : 네이버 사전)
    • 관련 참고 및 검색해보기 : Amazon Web Services
  13. 가상화(Virtualization) : 하나의 컴퓨터를 쪼개 여러 대의 컴퓨터가 있는 것처럼 사용하는 기술
    • 호스트(Host) : 실제 물리적 서버
    • 게스트(Guest) : 호스트 내부 가상 서버
  14. 가상화의 종류 : 가상머신 가상화, 컨테이너 가상화
    • 가상머신 가상화 : 게스트 자체에 운영체제가 돌아감
    • 컨테이너 가상화 : 호스트의 운영체제 커널만을 공유, 프로세스나 자원 등은 서로 격리되어 서로 간섭할 수 없도록 하는 것

<3.17~3.18절 - 셸 심화 I : 편리한 기능 및 셸 스크립트>

  1. sort 명령어 : 입력된 텍스트를 줄 단위로 정렬
  2. 셸 텍스트 처리 관련 필수 명령어들
    • echo : 뒤이어 입력한 내용을 출력
    • cat : 하나 이상의 텍스트 파일을 순서대로 출력
  3. 셸 파일 제어 및 이동 관련 필수 명령어들
    • ls : 현재 디렉토리 내의 파일 및 폴더들을 출력
    • cd : change directory, 뒤따라오는 폴더로 현재 있는 셸의 위치를 이동
    • cp : 파일 복사
    • mv : 파일 이동
    • rm : 파일 삭제 (폴더 삭제 시 rm -r / 내부까지 모두 삭제 rm -f)
  4. 셸 시스템 및 프로세스 제어 관련 필수 명령어들
    • sudo : 이어지는 명령을 최고 관리자 권한으로 실행
    • apt-get : APT 패키지 관리자를 통해 공인 저장소에서 패키지를 가져다 설치하거나 제거
  5. 셸 기타 필수 명령어들
    • ssh : 원격으로 셸에 접속
    • watch : 이어지는 명령을 주기적으로 실행하고 표시
profile
날개를 달고 날아오르자!

0개의 댓글