[하드웨어]
하드웨어 : 컴퓨터를 물리적으로 구성하는 요소, 컴퓨터에 연결되어 추가적인 기능을 수행
컴퓨터의 하드웨어는 크게 중앙처리장치(CPU), 기억장치(RAM, HDD, SSD), 입출력장치로 구성된다.
중앙처리장치(Central Processing Unit, CPU)는 프로세서라고 불리기도 하며 입력장치에서 받은 명령을 실제로 처리하는 역할을 수행한다. CPU의 단위는 GHz(CPU가 1초에 얼마나 많은 연산을 할 수 있는지 속도로 측정)
기억장치는 입력된 명령이나 데이터를 저장하는 공간으로, 주기억장치와 보조기억장치가 있다. RAM은 주기억장치로 응용 프로그램을 일시적으로 불러오거나 데이터를 일시적으로 저장하는데 사용되는 임의 접근 기억 장치이다. RAM의 단위는 GB(RAM이 메모리에 얼마나 많은 양의 정보를 저장할 수 있는지 측정)
보조기억장치로는 HDD, SSD가 있다. 하드디스크(Hard Disk Drive, HDD)는 원판 모양 플래터를 회전시켜 드라이브에 데이터를 읽고 쓰는 방식이며 영구적으로 데이터를 저장한다. 단위로는 GB나 TB를 쓴다.
SSD(Solid State Drive)는 HDD보다 더 빠른 속도로 데이터를 읽고 쓰는 대신 가격이 비싸며 수명이 짧다. 단점으로는 자연적인 방전으로 인한 데이터 손실 위험이 있다고 한다.
입출력장치로는 마우스, 키보드, 스캐너, 모니터, 프린터 등이 있다. 사용자가 입력한 자료를 컴퓨터가 이해할 수 있는 형태로 변환하는 장치이다.
CPU는 한 번에 처리할 수 있는 양이 작다. 하지만 굉장히 빠른 속도로 처리할 수 있다. 컴퓨터가 계산을 수행하기 위해서는 비트와 바이트 형태로 기억장치에 저장할 수 있어야 한다. 하드디스크에 있는 프로그램을 더블클릭하면 RAM에 적재되고 컴퓨터가 입력에 반응하기 위해 CPU에서 비트가 흘러 들어간다.
하드디스크는 많은 양의 데이터를 저장할 수 있으나 데이터 읽고 쓰는데 많은 시간이 소요된다.
RAM은 하드디스크보다 훨씬 빠르게 데이터를 읽고 쓸 수 있어서 실행 중인 프로그램이나 열려있는 파일들이 더 빨리 접근될 수 있도록 메모리를 저장하는데 사용된다.
L1, L2, L3 Cache는 RAM보다 더 빠르게 정보를 읽고 쓰는 반면 기억장치 용량이 작다.
따라서 속도가 가장 빠른 기억장치를 물으면 CPU 캐시 메모리라고 할 수도 있다.
기억장치는 용량과 속도가 반비례한다고 이해하면 편하다.
[비트, 2진수, 16진수]
비트(Bit)는 정보량을 나타내는 최소 기본단위로 0과 1, 두 가지 값만 가질 수 있는 이진수이다.
바이트(Byte)는 8비트이다. 보통 1KB를 많이 쓰며, 1KB는 1024바이트이다.
10진수(100 10 1)
123 -> 1*100 + 2*10 + 1*1
2진수(32 16 8 4 2 1)
1을 2진수로 -> 0 0 1
2를 2진수로 -> 0 1 0
3을 2진수로 -> 0 1 1
4를 2진수로 -> 1 0 0
7을 2진수로 -> 1 1 1
32를 2진수로 -> 1 0 0 0 0 0
ASCII(아스키)는 문자를 컴퓨터가 이해할 수 있는 이진 데이터(0 또는 1)로, 혹은 그 반대로 변환하는 표준 방법
컴퓨터에서 대문자 A를 저장하고 싶다면 숫자 65를 이진수로 저장해야 한다(1000001)
16진수(Hexadecimal) : 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
4bit와 대응되기 때문에 유용하다. 0x를 앞에 붙여서 16진수임을 표시
ex) 255 -> 11111111 -> 1111 / 1111로 4비트씩 나눠 생각하기 -> 1111은 15이므로 f -> ff -> 0xff 가 된다.
ex) 1001100 -> 100 / 1100 으로 나누기 -> 0x4c
[이미지]
이미지 파일 형식으로는 비트맵(BMP), JPG, PNG, GIF 등이 있다. 저장되는 형식에 따라 파일 안에 들어가 있는 비트 데이터들의 구조가 달라진다. 각각 이미지 파일은 보통 첫 부분에 파일을 구분할 수 있는 구분자를 넣는다.(JPEG의 경우 255 216 255)
[가상현실과 증강현실]
가상현실(Virtual Reality) : 가상의 환경이나 상황을 만들고 실제로 그 상황에 들어와 있는 것처럼 느끼고 상호작용할 수 있도록 만드는 인터페이스
증강현실(Augmented Reality) : 사용자에게 기존의 주변환경과 분리된 전혀 다른 환경을 경험하게 하지 않고, 현재의 환경 위에 영상, 게임 등의 효과를 입히는 기술
가상현실 원리 : 인간은 양안시차를 통해 원근감을 느끼고 입체적으로 인식 가능하다. 이를 이용하여 VR기기의 양 렌즈에서는 사람의 양안시차만큼 다른 각도로 촬영된 영상이 재생되서 입체감을 느낄 수 있다. 또한 모션 트래킹 센서를 이용하여 사람이 바라보는 방향에 따라 영상을 바꾼다.
증강현실 원리 : 스마트폰과 같이 카메라와 디스플레이가 함께 있는 기기가 필요하다. VR과 마찬가지로 위치와 기울기 측정하는 센서 필요하다.
[인공지능]
자연어란 인간이 일상적으로 사용하는 언어이다. 컴퓨터가 사람의 언어를 기계적으로 분석하여 컴퓨터가 이해할 수 있는 형태로 바꾸어 처리하는 것을 자연어 처리라고 한다.
음성인식 기술은 마이크와 같은 소리 센서를 통해 입력된 음향 신호를 단어나 문장 등으로 변환하는 기술이다.
머신러닝은 인공지능을 구현하기 위한 하나의 분야이다. 머신러닝을 통해 컴퓨터는 많은 데이터를 스스로 학습하여 그 데이터에 대한 패턴을 파악할 수 있다.
[인터넷]
인터넷 연결 단계 : 무선 장치(노트북이나 휴대폰) - AP(Access Point) - 스위치 - 라우터 - 인터넷
IP 주소(Internet Protocol Address) : 인터넷상에 있는 장치들이 할당받는 것, 인터넷에 연결된 장치들을 식별할 수 있게 해준다.
IPv4 : 마침표로 구분된 4개의 10진수로 표현
#.#.#.# -> 각 IPv4 주소는 32bit이며, 최대 2^32개의 주소 존재
127.0.0.1 -> 자신의 컴퓨터(로컬호스트)
IPv6 : 콜론으로 구분된 8개의 16진수로 표현
#:#:#:#:#:#:#:# -> 0이 연속으로 오면 생략하고 ::으로 표현
사설 IP : 로컬 네트워크에 있는 컴퓨터들은 사설 IP 주소를 이용하여 다른 컴퓨터와 통신할 수 있지만, 이 네트워크 밖에 있는 컴퓨터들은 접근할 수 없다.
DHCP(Dynamic Host Configuration Protocol) : 동적 호스트 구성 프로토콜, 컴퓨터에 IP 주소를 할당하는 작업을 수행
URL(Uniform Resource Locator) : 도메인 주소, IP 주소 대신해서 웹 브라우저에 입력
DNS(Domain Name System) : URL을 받아서 IP 주소로 변환하는 작업을 수행
절차 : 웹 브라우저에 URL 입력 -> 컴퓨터가 DNS 서버에 접속 -> 최상위 도메인 및 서브 도메인을 보고 IP 주소 검색
라우터 : 데이터를 다양한 네트워크로 전송하는 것을 도움, 인터넷상 모든 컴퓨터들은 패킷이라는 데이터 단위로 라우터를 통해 인터넷을 거쳐 전송한다. 라우팅 테이블에 어디로 보내야 하는지 정보 저장되어 있다.
TCP(Transmission Control Protocol) : 전송 제어 프로토콜, 인터넷으로 보내진 모든 데이터 패킷이 전송되도록 보장, 데이터를 순서 있는 패킷들로 분해하여 번호를 매김, 데이터에 포트 번호를 할당
IP(Internet Protocol) : 정보가 한 컴퓨터에서 다른 컴퓨터로 어떻게 전송되는지에 대한 규칙을 모아놓은 것
TCP/IP : TCP는 각 패킷에 포트 번호와 패킷 번호를 매기고 IP가 패킷의 목적지를 알려주면 라우터를 통해 데이터 전송된다.
HTTP(HyperText Transfer Protocol) : 웹 브라우저가 웹 서버와 통신하기 위한 프로토콜
HTTPS : HTTP와 SSL을 결합한 인터넷 통신 프로토콜
* HTTP 프로토콜 특징
- Connectionless: 하나의 요청에 하나의 응답을 한 후 연결을 종료하는 것을 의미
- Stateless: 통신이 끝난 후 상태 정보를 저장하지 않는 것을 의미
- 이에 따라 상태 유지를 위한 쿠키가 생겨남
동일 출처 정책(Same Origin Policy, SOP)
- 현재 페이지의 출처가 아닌 다른 출처로부터 온 데이터를 읽지 못하게 하는 브라우저의 보안 메커니즘
- 오리진은 프로토콜(Protocol), 호스트(Host), 포트(Port)로 구성됨
> 확인방법: 개발자도구에서 location 입력해보기
- 구성 요소가 모두 일치해야 동일한 오리진이라고 인식
* Same Origin: 현재 페이지와 동일한 출처
* Cross Origin: 현재 페이지와 다른 출처
교차 출처 리소스 공유(Cross Origin Resource Sharing, CORS)
- 다른 출처의 데이터도 받아들여 처리해야 하는 경우 사용
> 예) https://mail.redstone.io 를 https://redstone.io에서 출력하고 싶은 경우 등
- SOP의 제한을 받지 않고 Cross Origin의 데이터를 처리 할 수 있도록 해주는 메커니즘