[Day 02] Git + 정보의 표현 + 컴퓨터 구조

Git

버전 관리 시스템 (VCS)

  • 시간에 따른 코드의 변화를 체계적으로 관리하는 소프트웨어
    • 소스코드가 언제 바뀌었는지
    • 소스코드가 어떻게 바뀌었는지
    • 소스코드를 누가 바꾸었는지
    • 소스코드를 바꾸었는지

버전 관리 시스템을 사용하면

  • 시간의 흐름에 따른 작업 내역을 확인할 수 있음
  • 이전 버전으로 쉽게 돌아갈 수 있음
  • 다른 사람들에게 영향을 미치지 않고 코드를 변경해볼 수 있음
  • 소스코드의 특정 부분을 누가 언제 변경했는지 쉽게 확인할 수 있음
  • 실수로 파일을 삭제하더라도 쉽게 복구할 수 있음

Git

  • 사실상 표준으로 사용되는 VCS
  • 커맨드라인 명령어를 통해 사용하거나,
  • 여러 GUI 프로그램을 통해 사용할 수도 있음

Git 초기 설정

  • git config --global user.name "<이름>"
    • 영문 이름을 써주세요!
  • git config --global user.email "<이메일 주소>"

Git 저장소(Repository)

  • Git에 의해 관리되는 디렉터리
  • git init 명령을 통해 특정 디렉터리를 Git 저장소로 만들 수 있음
    • 이 때 .git 디렉터리가 하위에 생성됨

저장소의 현재 상태 확인하기

  • git status

Git에서 관리하는 세 영역

  • 작업 디렉터리(working directory )

    • 현재 편집 중인 파일이 저장되는 영역

      ↓ <git add>

  • 스테이징 영역(staging area)

    • 저장소에 저장할 변경 사항을 보관하는 임시 저장소

      ↓ <git commit>

  • .git디렉터리(repository)

    • 모든 작업 내역이 영구히 저장되는 저장소

작업 흐름

  • 소스 코드를 편집한 후…
  • git add <경로>
    • 작업 디렉터리의 특정 변경 사항을 스테이징 영역에 등록
  • git commit
    • 스테이징 영역에 올라온 변경 사항을 영구히 보관
  • 위 과정을 반복!

실습

  • 디렉터리 및 파일 생성
  • git init
  • git add .
  • git commit -m "첫 커밋"
  • git log

매 과정마다 git status 명령을 실행해서 저장소의 현재 상태를 확인.


Commit?

  • Commit 이라는 단어는 때에 따라 두 가지 의미를 가짐.
    • 스테이징 영역에 올라온 변경 사항을 영구히 보관하는 행위
    • 여러 파일에 대한 변경 사항을 하나로 묶어주는 단위
  • Commit을 통해 실제로 저장되는 정보는 변경 사항이다. 파일이 아님.

Github

  • 클라우드 형태의 Git 저장소를 제공하는 서비스
  • 웹 브라우저를 통해 Git 저장소를 관리할 수 있음
  • Git에는 내장되어 있지 않은 다양한 편의기능 제공

Github 초기 설정

  • ssh-keygen 명령 실행
  • ~/.ssh/id_rsa.pub 내용 복사
  • Github 설정에서 SSH Key 등록

Git 원격 저장소 (Remote Repo)

  • Git 저장소에 다른 Git 저장소의 주소를 등록하고 이 저장소와 정보를 주고받을 수 있음
  • 파일 업로드/다운로드와 유사하나, Git 저장소끼리 주고받는 정보는 파일이 아니라 커밋!

Git Push

  • 내 컴퓨터의 변경사항을 원격 저장소에 보내는 명령
  • Push 절차
    • Github 저장소 생성 후
    • git remote add origi n <Github 저장소 주소>
    • git push -u origin master
    • 한번 git push -u origin master하고 나면 이후에는 git push만 입력해도 된다.

Git pull

  • 원격 저장소의 변경사항을 내 컴퓨터로 가져오는 명령
  • Pull 절차
    • Github에 새로운 변경사항 등록
    • git pull

그 밖의 기능

  • Git
    • 브랜치(branch, checkout, merge, rebase)
    • 되돌리기 & 임시저장(reset, revert, stash)
  • Github
    • Pull Request & Issues & Project

정보의 표현

컴퓨터의 역사

  • 전기-기계식 컴퓨터
    • 릴레이 : 컴퓨터를 동작시키는 핵심 부품, 전기로 동작 시키는 스위치
  • 전자식 컴퓨터
    • 진공관
    • 트랜지스터
    • 집적 회로

릴레이, 진공관, 트랜지스터

  • 전기를 이용해 꺼진 상태, 켜진 상태를 나타낼 수 있음
  • 작동 원리는 다르지만 진공관, 트랜지스터 모두 같은 역할을 함

컴퓨터는 0과 1밖에 모른다

  • 스위치가 꺼진 상태는 0, 켜진 상태는 1로 간주
  • 0과 1만을 가지고 어떻게 정보를 표현할 것인가?
    • 인코딩(Encoding)과 디코딩(Decoding)

0과 1로 정보 표현하기

    • 이진법
    • 부동소수점
  • 문자
    • 아스키 코드
    • 유니코드

정보의 크기를 나타내는 단위

  • 1 비트(bit) = 0과 1 = 두 가지 경우의 수
  • 1 바이트(byte) = 8 비트 = 256 가지 경우의 수

컴퓨터 구조

컴퓨터 구조


CPU (Central Processing Unit)

  • 컴퓨터 시스템 전체를 제어하는 장치 - 두뇌!
  • 실질적인 계산을 담당
  • 기계어로 작성된 프로그램을 실행시킬 수 있음

기억 장치의 구분

  • 주 기억 장치 (Main memory)
    • 실행 중인 프로그램 및 그 프로그램이 필요로 하는 데이터가 저장되는 기억 장치
    • 보통 RAM(Random Access Memory)이 사용됨
    • 빠르다 / 비싸다 / 용량이 작다 / 휘발성이다
  • 보조 기억 장치 (Secondary memory)
    • 실행 중이 아닌 프로그램데이터가 저장되는 기억 장치
    • 보통 HDD 혹은 SSD가 사용됨
    • 느리다 / 저렴하다 / 용량이 크다 / 비휘발성이다

Tip - 듀얼 코어? 쿼드 코어?

  • CPU에는 프로그램 실행을 위한 처리 장치, 즉 코어(core)가 여러 개 내장되어 있을 수 있고, 이런 CPU를 멀티 코어라고 합니다.
  • 코어의 개수만큼 동시에 실행할 수 있는 프로그램의 개수가 늘어나므로, 성능 향상에 도움이 됨.

Tip - 32비트, 64비트?

  • CPU가 한 번에 연산할 수 있는 데이터의 크기
  • 비트 수가 늘어나면 프로그램을 실행하는 데 필요한 연산 횟수를 줄일 수 있으므로, 성능 향상에 도움이 됨.

Tip - GPU?

  • “Graphics Processing Unit”
  • 화면을 그리기 위한 수치 연산에 특화된 연산 장치
  • 최근 출시되는 고성능 GPU의 코어 개수는 수백~수천개
  • CPU 안에 내장되기도 하고, 별도의 그래픽 카드로 사용되기도 함
  • 최근에는 빠른 수치 연산이 필요한 분야(머신 러닝 혹은 코인 채굴)에서 GPU가 활용되기도 함

태그: , ,

업데이트:

댓글남기기