본 글은 위 책을 읽고 기초적인 IT 내용을 정리한 글
목차
비전공자를 위한 이해할 수 있는 IT 지식 내용 정리
본문내용넣기
1. 프로그래밍 언어 & 운영체제 [OS]
1) 프로그래밍 언어란
ⓐ. 사람이 컴퓨터에게 일을 시키고 싶어 함.
ⓑ. 컴퓨터는 0과 1만 알아들음.
ⓒ. 프로그래밍 언어로 문서 작성
→ 작성된 문서를 컴파일러를 통해 0과 1로 변환
→ 컴퓨터가 인식하고 작동.
2) 개발자가 하는 일
일어나는 모든 과정을 프로그래밍 언어로 작성
어떤 프로그램이 프로그래밍 언어로 작성하는 것은 서포트함.
→ 'IDE'(integrated Development environment): 통합 개발 환경, 코딩에 필요한 다양한 기능 제공
ex) 안드로이드 애플리케이션 개발 용도의 IDE : Android Studio
3) 프로그래밍 언어가 많은 이유
답) 사람들의 생각이 모두 다르기 때문
각 언어마다 장점/단점이 다양함 → 대다수가 사용하는 언어가 주로 활용됨.
3-1) 언어의 수준도 다양함
저수준 : 컴퓨터 친화적
컴퓨터 입장에선 알아듣기 쉬우니 저사양에서도 원활히 작동.
고수준 : 인간친화적
유지, 보수가 인간입장에서 편함.
컴퓨터가 생각해야 하니 저수준 언어보다 작동이 느림.
현재는 다양한 수준의 언어들이 사용되고 있음.
4) 컴퓨터의 구성 요소
CPU : 컴퓨터의 머리
보조기억장치(HDD, SDD): 창고
상세설명
CPU에서 어떤 처리를 하기 위해 보조기억장치에게 처리할 데이터를 달라고 요구
그러나 창고에는 너무 많은 데이터가 존재하여 찾는데 시간이 걸림 → 속도가 느림
그래서 메모리라는 CPU의 개인 작업 공간을 마련해줌.
→ 큰 데이터들을 메모리에 전달해주고 이 쪽에서 작업을 해줌.
프로그램 작동 원리 정리
1. CPU가 이 프로그램 작동할꺼야라는 신호를 보냄
2. 보조기억장치에서 큰 데이터들을 메모리로 넘김
3. 메모리에서 찾아서 CPU에게 넘겨줌.
4. 작동
5) 운영 체제
운영체제 [OS] : 하드웨어를 관리해주는 소프트웨어
ex. 보조기억장치의 용량을 알 수 있는 것도 OS의 서포트가 있기 때문임.
2. 네트워크, 클라이언트, 서버
1) LAN
LAN(Local Area Network) : 컴퓨터로 연결된 작은 지역
MAN, WAN으로 확장되어 연결되어짐.
2) IP 주소
해당 컴퓨터가 위치해있는 주소
3) 클라이어트, 서버
클라이언트 : 파일을 달라고 보채는 컴퓨터
서버 : 파일을 주는 컴퓨터
→ 여러 클라이언트에서 신호가 오는 게 많으니 여러 개의 컴퓨터를 합쳐서 사용.
4) 우분투
리눅스 : 일종의 운영체제, 무료임
리눅스 위에서 '서버 프로그램'을 돌림, 서버용이니 보통 그래픽 데이터는 필요치 않음. 명령어로만 작동.
'로그인을 시켜줘'(아이디와 비밀번호라는 데이터가 클라이언트에서 넘어옴)
↓
'이 아이디가 존재하나?', '존재한다면 이 비밀번호가 맞나?'
우분투 : 리눅스 버전 중에 대표적인 것 중 하나
3. API와 JSON
1) API
API : 클라이언트의 요청을 구분할 수 있도록 하는 체계
①. 요청을 보내는 쪽과 응답을 주는 쪽으로 나뉘어짐.
1. 클라이언트가 이미지 파일을 달라는 요청을 함.
2. API가 이 요청을 받고 이미지 파일을 처리하는 서버의 주소로 해당 신호와 데이터를 보냄.
3. 처리된 데이터를 클라이언트에게 보냄.
1-1) CRUD
Create : 데이터를 올림
Read : 데이터를 불러들임
Update : 데이터를 바꿈
Delete : 데이터를 삭제함
1-2) RESTful API
CRUD별로 주소가 생김.
→ 너무 많고 관리하기가 어려워짐.
→ 조금 더 체계적인 API가 필요
Create : POST
Read : GET
Update : PUT(전체)/PATCH(일부)
Delete : DELETE
서버의 관점)
클라이언트의 요청에 대해서 코딩된 대로 판단
판단 결과가 두 가지 종류로 나타남.
1. 잘 됐어
2. 잘 안 됐어
잘 됐어의 경우에서 언어를 통일시키기 위해 200번대 코드를 활용
잘 안 됐어의 경우에 400번대, 500번대 코드를 활용
1-3) API 체계의 확장
한 컴퓨터의 여러 소프트웨어가 존재함.
한 소프트웨어에서 다른 소프트웨어의 특정 기능을 활용하고 싶음.
→ 서로 다른 시스템의 기능을 활용하기 위해 API가 필요.
→ SDK라는 개념이 등장
SDK : API를 제공해주는 다른 소프트웨어
2) JSON
클라이언트가 서버로 요청을 보낼 때 여러 데이터 및 주소가 혼합된 '형식'으로 전달
이러한 '형식'은 무한하게 존재 가능
→ 유명한 형식을 다 같이 쓰자
→ 현재 가장 유명한 형식은 JSON, 과거엔 XML
큰 맥락에선
클라와 서버는 API라는 체계를 통해 요청과 응답을 주고받고, 그때 필요한 데이터들을 JSON 형식으로 주고받는다.
4. 웹
1) HTML
운영체제나 프로그램에 상관없이 일정한 형식이 언제나 동일하게 보이도록 하기 위한 문서
프로그래밍 언어가 아님.
브라우저가 볼 수 있는 문서를 적는 언어
※ 태그 : HTML에서 정보를 표현하기 위한 코드
ex. <h> : Header(대제목)
<p> : Paragraph(문단)
<ol> : Ordered List(순서가 있는 목록)
<ul> : Unordered List (순서가 없는 목록)
<a> : 한 HTML 문서에서 다른 HTML 문서로 이동하는 링크의 개념
※ 마크업 : HTML 작업
2) CSS(Cascading Style Sheets)
HTML에 디자인을 입힐 수 있는 코드
HTML 코드는 정보만 표현 / CSS 코드는 디자인만 표현
HTML + CSS → 퍼블리싱
3) JavaScript
HTML과 CSS로는 구현이 힘든 기능들을 구현하기 위한 웹 프로그래밍 언어
★ HTML, CSS, JavaScript 완성본은 서버에 존재
클라이언트의 HTML CSS, js는 '사본'
*웹과 애플리케이션의 차이
웹 : 수정이 용이 → 서버에 있는 원본만 수정하면 빠르게 반영이 가능
애플리케이션 : 클라이언트에게 파일이 존재하므로 수정이 용이하지 않음.
But 웹은 항상 새로 고침을 해야함. → HTML, CSS, JavaScript를 계속 다시 다운로드 받아야 함.
→ 웹은 네트워크 영향을 크게 받음.
4) 브라우저의 역할
HTML, CSS, JavaScript를 받아서 읽음
그 데이터에 해당하는 정보, 이미지, 적혀있는 대로 동작하는 게 브라우저의 역할.
ⓐ. 브라우저는 애플리케이션이며 종류도 다양함.
ⓑ. HTML, CSS, Javascript도 새로운 기능들이 추가됨.
→ 각 브라우저 버전마다 호환되거나 호환되지 않는 것이 존재할 수 있음.
→ '브라우저 버전의 파편화'
→ 파편화를 잡는 이 과정이 웹 쪽에서의 어려움.
5) 반응형 웹
브라우저의 가로 넓이에 '반응'하여 구성 요소가 변하는 웹
6) 하이브리드 애플리케이션
운영체제 안에 브라우저가 내장되면서 새롭게 개발이 가능해짐.
→ 애플리케이션 특정 부분에 '브라우저'를 올리는 방식
→ HTML 파일을 불러올 URL을 설정하면 HTML, CSS, JavaScript로 구성된 걸 불러올 수 있음.
→ 웹과 애플리케이션이 혼합된 애플리케이션을 하이브리드 애플리케이션이라고 함.
5. 데이터베이스와 이미지 처리
데이터는 단 1%의 결점이 없어야 하고 그래서 관리를 하는 게 어려움.
→ 데이터의 '무결성'
1) '관계형 데이터베이스' : 데이터가 하나 이상의 열과 행의 테이블(또는 '관계')에 저장되어 서로 다른 데이터 구조가 어떻게 관련되어 있는지 쉽게 파악하고 이해할 수 있도록 사전 정의된 관계로 데이터를 구성하는 정보 모음
2) 데이터는 어디에?
답) 모든 데이터가 서버에만 있는 것도 아니고 클라에만 있는 게 아님.
회사 사정에 따라, 기능의 특성에 따라, 여러 요소들에 따라서 데이터가 어디에 데이터가 있는지가 다름.
이를 명확하게 알기 좋은 문서가 'API 문서'
3) 이미지 처리
*이미지 파일도 클라에 있을 수도 있고 서버에 있을 수 있음.
→ 이미지의 성격에 따라 위치하는 바가 다름.
Why?
1. 가격 정책 이미지가 클라이언트에 있다고 하면 클라이언트가 업데이트를 안하면
클라이언트는 가격 정책이 변경된 걸 모를 수도 있음. 이런 이미지는 서버에 있어야 함.
2. 그렇다고 이미지를 모두 서버에 위치하면 일일히 불러오는 데 속도가 느림.
결론 : 데이터 찾을 때 가장 확실한 방법은 'API 문서'
6. 프레임워크와 라이브러리
1) 프레임워크 : 소프트웨어 어플리케이션이나 솔루션의 개발을 수월하게 하기 위해 소프트웨어의 구체적 기능들에 해당하는 부분의 설계와 구현을 재사용 가능하도록 협업화된 형태로 제공하는 소프트웨어 환경
2) 라이브러리 : 단순 활용가능한 도구들의 집합, 프레임워크보다 더 작은 개념
Git : 소스 코드의 버전 관리를 도와주는 프로그램.
커밋(commit) : 개발자들이 개발 단계별로 '깃발'을 꽂는 행위
브랜치(Branch) : 새로운 방향의 개발을 추가해야 할 때 새롭게 가지를 쳐서 작업
머지(Merge) : 각각의 브랜치에서 작업한걸 병합하는 기능
'IT > 컴퓨터' 카테고리의 다른 글
[Git] 생활코딩 Visual Studio Code에서 Git으로 협업하기 내용정리 (0) | 2023.03.17 |
---|---|
[Git] 생활코딩 Visual Studio Code 내용 정리 (기본 사용법, Git) (0) | 2023.03.17 |
[Git] 생활코딩 Git1 내용정리 (Git은 무엇인가?) (0) | 2023.03.16 |
댓글