[비전공자를 위한 이해할 수 있는 IT지식] / (컴파일러, 하드웨어, API, RESTful API, 컴파일러 , SDK, 리눅스, 컴파일, JSON )

2021. 3. 6. 17:19·📂 Reflections/Lessons Learned
728x90
반응형

컴파일러

친구와 일본에 놀러가서

일본인과 대화를 하고 싶은데

일어를 못한다!!

 

(일상생활에서의)번역은

             ↓

ex) 일어 못하는 한국인 -> 일어 할 줄 아는 한국인 -> 일본인 

이런 식으로 번역을 할 것이다.

 

사람이 컴퓨터한테

말을하고 싶은데

컴퓨터가 사람말을

못알아 먹는다!!

 

자 그러면 (컴퓨터에서의) 번역은?

                         ↓

사람(프로그래밍 언어) -> 컴파일러(변환) -> 컴퓨터(2진수 언어)

 

이런 식으로 전달한다.

 

자바, 파이썬, 루비 등 영어로 되어 있는 프로그래밍 언어를 사용해 컴파일러에게 명령을 전달

-> 명령을 기계어인 0과 1로 변환해 컴퓨터에 전달한다.

 

컴퓨터 부품들 

CPU가(머리) HDD, SSD(저장 창고)에게 처리할 데이터를 요구 ->

CPU보다 HDD, SSD는 속도가 매우 느려 CPU가 기다려야 했음 ->

속도 저하 -> 이를 분리 하기 위 '메모리' 개념이 나옴 

 

CPU에서 처리할 데이터 요구 HDD, SSD에서 데이터를 메모리로 보냄->

메모리라는 개인 작업 공간에서 CPU가 데이터 처리

 

 

CPU: 데이터 처리

메모리: CPU의 개인 작업 공간

 

어플을 다운로드하는 과정

나의 스마트폰 -> 1. 카카오톡 설치 파일을 보내줘! ->  컴퓨터가 연결되어 있는 네트워크에 요청

네트워크 -> 2. 스마트폰 IP주소로 설치 파일을 보내줘   ->  애플, 구글이 켜놓은 컴퓨터에 요청

애플, 구글이 켜놓은 컴퓨터 응답 -> 3. 파일 받아 -> 네트워크 

네트워크 응답 -> 4. 파일 받아 -> 나의 스마트폰 

다운

 

리눅스

 

웹 개발 과정을 배우며 리눅스에서 서버 배포를 했는데 왜 리눅스를 이용했는지 알려주지 않아 궁금했다. 

 

간단정리: 

리눅스 코발트가 만듦

-리눅스 운영체제와 형상관리를 위해 요즘 가장 많이 쓰는 git을 만든 사람.

그리고 이것을 IT를 공부하는 사람들을 위해 무료로 배포한 사람.

 

서버 프로그램을 돌리기 적합한 OS

-그래픽 UI가 필요 없음 -> 저렴 or 무료

리눅스에는 다양한 버전이 존재(ex: windowxp, window7, window10처럼)

-우분투 (가장 많이 씀 무료)

-레드헷 등등

-안드로이드(구글이 리눅스를 개량해서 발전)

 

장점: 

윈도우, 맥 OS도 있는데 왜 리눅스를 사용할까

-무료이기 때문 

무료 운영체제이다 보니 다양한 사람들이 운영체제를 발전 시킴

-버그에 대해 피드백이 빠르다.

 

호스팅

대표적 회사

-가비아

-Cafe 24

-AWS(Amarzon Web Services)

 

호스팅을 하는 이유

- 서버 컴을 구입해 24시간 365일 돌리면 전기세가 많이 듬

- 서버 컴이 고장 나거나 다운될 시 복구하는데 큰 문제가 생김(잠정적 중단 시 서비스 불가)

- 그래서 생겨 난 것이 호스팅 업체

 

API

API란 클라이언트, 서버와 같은 서로 다른 프로그램에서 요청과 응답을 주고받을 수 있게 만든 체계

API의 진행

- 요청을 보내는 쪽과 응답을 주는 쪽이 나뉘어 있다.

- ex) 스마트폰이(새로운 페이지에 로그인 요청) -> 서버 컴은 요청을 받아서 ID, PW를 조회하여 응답

 

RESTful API(Representational State Transfer)

Restful API란

- CRUD 중 Create를 하려고 한다고 가정해보자.

- CRUD는 각각의 주소를 가지게 된다.

- f페이지에서 Create 생성 시 컴퓨터 주소/Create/f 이렇게 이름 지었다고 가정해보자

하지만 Create 부분이 f페이지뿐만 아니라 a페이지, b페이지, c페이지에서 생성하게 된다면?

CRUD 4개 x a, b, c, f페이지 이렇게  16개를 만들어야 한다.

 

문제점

- 너무 많은 주소로 인해 관리가 어렵다.

 

그래서 

- 사람들은 좀 더 체계적으로 API를 관리하고 싶어 했고, 조금 더 체계적인 API가 만들어진다.

- 그런 API를 RESTful API라고 한다.

 

어떻게 이용하나?

- CRUD를 하나의 주소로 관리가 가능해졌다.( 한 파일 안에 POST, GET, PUT, PATCH, DELETE)

 

-Create(생성): POST

-Read(불러오기, 읽기): GET

-Update(수정): PUT(전체), Patch(일부)

-Delete(삭제): DELETE

 

 

SDK

-API를 제공해주는 '다른 소프트웨어'를 칭한다.

-Softwate Development Kit의 약자로 소프트웨어를 개발하기 위한 도구이다.

 

ex) 구글 지도를 내가 만든 어플에 이용하고 싶다 ->

내 어플에 구글 지도 SDK를 설치 ->

내 어플에 구글지도 기능 넣기 성공

JSON

사용 이유

- API에서 클라이언트와 서버가 요청과 응답을 할 때 데이터를 담아 넘겨주는데

데이터를 넣는 기능에는 여러 가지 형식이 존재함

- 여러 가지 형식을 쓰다 보니 무질서함 -> 이를 정의한 게 JSON 형식

- 과거에는 XML을 많이 쓰였지만 요즘에는 JSON형식을 많이 사용

 

JSON형식

- 중괄호로 시작 키(KEY)와 값(VALUE)으로 이루어져 있으면 콜론(:)으로 구분 

- 배열 사용 시에는 대괄호 사용 

                   ex)

{

  "category": {"스타벅스"}

  "items": ["카페모카", "아메리카노", "돌체라떼"]

}

 

정의

-클라와 서버는 요청과 응답을 주고받고, 그때 필요한 데이터들을 JSON형식으로 주고받는다.

 

 

 

 

 

 

 

728x90
반응형

'📂 Reflections > Lessons Learned' 카테고리의 다른 글

[Clean Code] 4장 형식 맞추기  (0) 2022.12.04
[Clean Code] 3장 주석  (2) 2022.11.28
[Clean Code] 2장 함수  (0) 2022.11.28
[Clean Code] 1장 의미 있는 이름  (0) 2022.11.28
REST API, API, RESTful 쉽게 이해하기  (0) 2021.10.18
'📂 Reflections/Lessons Learned' 카테고리의 다른 글
  • [Clean Code] 3장 주석
  • [Clean Code] 2장 함수
  • [Clean Code] 1장 의미 있는 이름
  • REST API, API, RESTful 쉽게 이해하기
foodev
foodev
이것저것 개발과 이것저것 리뷰 합니다.
    반응형
    250x250
  • foodev
    개발 개맛집
    foodev
  • 전체
    오늘
    어제
    • 분류 전체보기 (104) N
      • ⭐ Featured (4)
      • 📂 Backend Engineering (36)
      • 📂 Troubleshooting & Ops (10)
      • 📂 Infra & System (7) N
      • 📂 Reflections (21)
        • Year-in-Review (5)
        • Work & Career (10)
        • Lessons Learned (6)
      • 📂 Team Journal (10)
      • 📂 Archive (16)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    githubaction 라벨 ci/cd
    Azure 로그 최소 저장 30일
    db 날림
    개발썰
    di의존성
    JPA
    스냅샷과히스토리성 차이
    db 날린 썰
    azure ci/cd
    해피해킹 커스텀
    typedi 동작원리
    해피해킹 카라비너
    di동작원리
    nestjs pipe
    di란
    해피해킹 키매핑
    validation failed (numeric string is expected)
    서이추
    창업패키지후기
    db 초기화
    Azure log 비용 줄이기
    토이프로젝트개발일지
    해피해킹 꿀팁
    nestjs pipe body
    해피해킹 방향키
    스냅샷과 히스토리
    QueryDSL
    githubaction 라벨 배포
    typedi란
    인프라 로그 저장 비용 감소하는 방법
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
foodev
[비전공자를 위한 이해할 수 있는 IT지식] / (컴파일러, 하드웨어, API, RESTful API, 컴파일러 , SDK, 리눅스, 컴파일, JSON )
상단으로

티스토리툴바