[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가 활용되기도 함
댓글남기기