비전공자를 위한 이해할 수 있는 it 지식
# '누군가'를 이해시키기 위해 쓰는 리뷰가 아닌, 단순히 '내가' 기억하기 위한 키워드 중심으로 쓴 글.
1. 컴퓨터에 대한 이해
#COM -------------------------- HUMAN
언어는 컴퓨터에 친숙한 언어일수록 우리가 쓰기 어렵고, 인간친화적일수록 우리가 쓰기 쉬운 반면 기계가 이해하기 어려우므로 동작이 느리다.
COM에 가까운 언어 c,c++ 따라서 스피커나 라이도 등 하드웨어 쪽으로 많이 쓰이는 편
HUMAN에 가까운 언어는 python,java 주로 스마트폰에 쓰임
# 메인보드
메인보드에서 기억할 것 1. CPU 2. 보조기억장치(HDD, SSD) 3. RAM
old : CPU -> HDD or SSD
new : CPU -> RAM ( <---HDD or SSD) 보조기억장치의 데이터를 다 가져오지 않고 필요한 것만 RAM에 저장 후 실행
2. 운영체제 ( OS )
# 운영체제 : 하드웨어 (CPU,HDD,SSD,RAM....)관리
Window | Mac OS / IOS | Android |
Microsoft | Apple | |
C#, C++, JS | Objective-C, Swift | Java,Kotlin |
자바 프로그램을 만든 후, 맥에서 돌아가도록 하고 싶다면? ->
JVM |
Java Program |
하지만 이 방법은 모바일 분야에선 적용되지 않는다. 모바일은 PC보다 부품과 크기가 작기 때문에 성능이 뒤떨어지므로 프로그램 위에 프로그램을 실행시켰을 때 속도가 느리기 때문이다.
ps) 우리가 보통 안드로이드 개발자라고 하면 안드로이드(운영체제에서 돌아가는 소프트웨어) 개발자라고 이해하면 된다.
3. LAN
# LAN : Local Area Network
컴퓨터가 연결된 작은 지역 // 컴퓨터 실습시간에 하던 스타크래프트 LAN을 생각하면 된다.
LAN 연결하는 선 -> LAN 선
지역 : LAN + LAN + ···· + LAN ==
도시 : MAN + MAN +MAN ==
나라 : WAN ( WIFI)
# 서버에는 네트워크와 클라이언트 서버가 있다.
# SP ---> WAN ----> APPLE
SP -> HDD or SSD (저장) --> 실행 --> RAM --> CPU가 처리
# IP 주소 :
ICANN (국제) --> APNIC ( 아시아 태평양) --> KRNIC (한국)
계속해서 길고 긴 IP주소를 사용할 수 없으므로 도메인 처리
# 클라이언트와 서버
Client (서비스 유저의) 컴퓨터 ----(파일 요청)-----> Server ( apple, kakaotalk 같은 회사의 ) 컴퓨터
<----(요청 데이터)-----
// 서버는 24시간 안전하게 돌아가는 게 목표
// 서버가 데이터를 주려면 프로그램이 필요하다.
// 프로그램 필요 -> 운영체제 필요 -> 그중 리눅스 운영체제가 좋다.
서버 프로그램 |
Linux OS |
# 집, 서버 운영 ---> 호스팅 업체, 즉 서버를 제공하는 기업 ex) Cafe 24, AWS
4. API & JSON
# API란?
- 클라이언트, 서버와 같은 서로 다른 프로그램에서 요청과 응답을 주고받을 수 있게 만든 체계이다. 서버 개발자가 개발하고 클라이언트가 사용한다.
#CRUD ( Create Read Update Delete) ex) Instagram
사진 올리기, 읽기(불러오기), 바꾸기, 지우기 // 각각 주소를 가진다.
old : Com -> CRUD 요청 -> 주소가 많아서 관리가 힘들고 체계가 필요
new : REST, RESTful API ( CRUD를 하나의 주소로 관리, 절대적이지 않고 회사마다 다르다)
RESTful API 요청 + 메소드 // C - POST, R - GET, U - PUT/PATCH, D - DELETE
# 서버의 응답
잘 됐어 : 200 ····
잘 안됐어 :
1) 클라이언트 요청 문제 : 400 ····
2) 서버 문제 : 500 ····
# SDK ( Softare Development Kit)
내 소프트웨어(API) <-------- 다른 소프트 웨어 ( 기능1, 기능2, 기능3)
ex) 내가 만든 웹페이지에서 구글 지도 활용하는 방법
Homepage --(요청)--> 구글 지도 SDK
<----(응답)----
# JSON ( 요청과 응답을 주고받는 형식)
- XML -> JSON
- 보내줘, 보내, 전송해줘, 전송, 요청해줘 ···· => 다양한 요청 형식을 관리하기 힘드므로 탄생
-
ex) { 'id' : 'song' {'category : '음료' 'sort' : 'desc'
'pw' : '12345'} 'items' : '[카페모카, 아이스 아메리카노 ···· ]' }
# API 문제 살펴보기
*IP주소 (176.168.222.....) -> 도메인 네임 (naver.com)
5. 애플리케이션
# 웹 ( 네이버 자동완성)
a 입력 --> (서버에 자동완성 API 요청) GET ---> 서버
<----(JS -> HTML ) <---- JSON응답<---
6. 데이터 베이스
관계형 데이터베이스 - 수많은 데이터들을 효율적으로 관리하는 방법
송재현 -> User 1
UserTable - > ProductTable
# 개발자가 파일을 만들고 수정하고 삭제하는 법 : 관계형 데이터 베이스 시스템 (RDBMS)
-> MS SQL, Oracle DB, ····
클라이언트 | 서버 |
DataBase | DataBase |
- 정확한 요청을 위해 Data가 어떤 DB에 있는지 알아야 한다.
- 클라 DB : 알람 같은 어플, 인터넷 연결 X
- 서버 DB :
---네트워크 // 이미지 공유(주소)-> 클라이언트 // 이미지 불러오기 (파일 다운)
if 이미지가 클라이언트에 있다면 다운 x , 빠르지만 고객이 업데이트해야 한다.
7. 프레임워크와 라이브러리
# 프레임워크 : 자동차 // 라이브러리 : 망치, 가위,
도넛가게 열기 --> 던킨도너츠 ( 도넛 기계, 포스기, 제품 만드는 법 ···· )
언어 | 프레임워크 | |
애플 | Swift, Objective - C | Cocoa |
구글 | Java, Kotlin | Android Framework |
웹 | JavaScript | React, Vue, Angular |
서버 | Java, Python, JavaScript | Spring, Express.js, Django |
8. GIT
(ver.)
1.0.0 ----> 1.1.0 // Branch ----------> 1.2.0 ---- Merge(1.2.0 + 2.0.1 )------> New version
커밋 ----> 2.0.0 ----> 2.0.1