https://www.youtube.com/watch?v=snQPBS0Cdtc 

<출처 - 유투버 이윤규 변호사 - 책을 이 부분부터 읽지 않으면 남는 게 없습니다(읽는 힘 EP. 1)>

1. 표지 

  • ex) 총.균.쇠 제목을 보고
    • 총.균.쇠가 뭐야? 뭘 얻고 싶은 거지? 등등 계속 질문해라.
    • 제목뿐 아니라 표지에 나온 문장으로도 힌트를 얻을 수 있다.

2. 저자 약력

  • 어떤 사람인지, 그리고 별칭을 붙여줘라.
  • ex) 허균형~ 하라리형~

3. 목차(세부 목차)

  •  3.1 목차 부분을 손가락에 끼고 책을 넘기면서 목차 제목만 본다. 그러면서 책 구성이 ~이렇구나 라고 생각한다.

4. 결론

  • 이렇게 30분을 쓰면 좋다.
  • 추가 1분
    • 그래서 총균쇠가 무슨 의미였어? ex) 4가지 목차로 된 ~한 이야기지.
  • 이런 잠정적인 결론을 내라. (output)
  • 책 읽기 전 이렇게 30분을 쓰고 읽으면 훨씬 쉽게 읽을 수 있다. 

에러를 기록하기 위해 남겨놓는 글... (캡처가 아깝기도 하고 그래서.. ㅎㅎ )

 

에러 분석

$> npm install -g create-react-app

vscode 터미널에서 해당 명령어를 실행했다.

뭔가 제대로 설치가 되지 않은 느낌이었다. 

 

$> create-react-app rsi-app

그래도 해당 명령어가 실행되는 걸 보니 설치가 되긴 한 모양이다.

근데 갑자기 얼마지나지 않아 작동이 멈췄다.

그리고 서버 SSH 접속, ping 체크도 되지 않았다.

 

결국 다음날 SSH 접속이 되었다.

 

$> dmesg -T 확인 결과

OOM(Out of memory) 에러가 발생했다.

npm install rea 라고 적혀있는 것을 보니 npm install 할 때 에러가 발생한 것 같다.

흠..

자세한 원인은 모르겠지만...

ssh가 안 된 것도 ping이 안 나간 것도 해당 프로세스의 메모리 할당이 안되었기 때문인 것으로 판단이 된다.

aws에서 잘못만든 것인지 centos에서 잘못 만든 것인지..

다른 서버 메모리가 소진되어도 네트워크 관련 작동은 되어야 하는 것이 제대로 된 시스템이 아닌가 싶다.

우선 여기까지만 기록하고 더 확인해보자. 내 추측이 틀렸을 수도 있으니까.

'AWS' 카테고리의 다른 글

[에러] npm install OOM 에러  (0) 2022.06.06
[AWS-EC2] 12개월 무료 프리티어 사용법(REDHAT)  (0) 2022.02.03

에러

error : unmapplable character (0xEC) for encoding x-windows-949

 

원인

IntelliJ 한글 깨짐 현상

 

해결

File - Settings - encoding 검색

빨간 네모칸 2군데 변경

1. Project Encoding , 2. Default Encoding for properties files
x-windows-949 변경 후 OK

<수정 전> <수정 후>

 

 

<수정 전>
<수정 후>

application.yml 의

password 위치 수정 후  해결

목적

생활 코딩님의 REST API 강의를 듣고 정리, REST API의 개념에 대해 알아보고자 한다.

내용

수업 소개

  • 기계와 기계가 통신을 할 때 정해진 규칙이 있다면 얼마나 좋을까요
  • 그렇게 되면 통신 규칙을 어떻게 정할 것인가에 대해 덜 고민할 수 있으니까요
  • 지금부터 기계와 기계가 규격화된 방식으로 인터넷으로 또 웹을 이용해서 통신할 수 있도록 돕는 통신 규칙인 REST API 수업을 시작하겠습니다.
  • REST API는 웹의 통신 규약인  HTTP를 이용합니다. HTTP 입문 강의 먼저 들어주세요.

API

  • API 라는 것은 컴퓨터의 기능을 실행시키는 것입니다. 
    • 'Hello world'를 출력하는 print, write 등도 전부 API라고 불릴 수 있습니다.
  • REST API도 컴퓨터의 기능을 실행 시키는 명령이라고 할 수 있습니다. 근데 남의 컴퓨터를 실행시킵니다.
    • ex) 이 주소로 접속하면 트위터의 글을 가져올 수 있습니다. 추가, 수정, 삭제도 가능합니다.
  • 이렇게 인터넷과 웹을 통해서 나의 컴퓨터를 제어할 떄 어떻게 하면 시행착오를 줄이고 더 좋은 API를 만들 수 있는 가에 대한 고민의 결과물이 REST API입니다.
  • REST API는 특정 기술이 아닙니다.
    • HTTP를 이용해서 기계들이 통신할 떄 HTTP가 가진 잠재력을 최대한 이용할 수 있도록 유도하기 위한 말하자면 모범 사례라고 볼 수 있습니다.

사례

  • 여러분이 블로그나 SNS를 한다고 할 때 하나 하나 글을 topic이라고 한다면 이런 모양으로 갖고 있겠죠.
  • 이런 모양 = 동영상에서 테이블 형태 topic 정보 

Resource

  • 행과 열이 있는 테이블 형태 = 이런 데이터들을 REST API에선  Resource라고 합니다.
    • Resource는 URI를 통해서 표현됩니다.
    • 예를 들어 명칭을 topic이라고 할 때 전체를 식별하고 싶다면 또는 여러 개의 topic을 식별하고 싶다면
    • 이런 URI 를 사용합니다. 이러한 것을 Collection 이라고 해요.
      • ex) http://example.com/topics (s가 붙었죠)
    • 행 하나하나 : 이러한 것을 Element 라고 해요.
      • ex) http://example.com/topics/1 
  • 즉 Element가 모인 것이 Collection
  • 하지만 Resource를 URI로 표현한 것만으로 아무것도 할 수 없다.
  • 이 정보를 가공할 수 있어야 합니다.

Method

  • 정보 가공 방법 - CRUD 
    • Create, Read, Update, Delete
    • 위 4가지 작업을 REST API에선 method라고 합니다.
    • REST API는 웹의 통신 규약인 HTTP를 이용하기 때문에 HTTP가 가지고 있는 메소드를 이용합니다.
  • Create (post)
    • 실제 웹 애플리케이션은 form을 이용해 데이터를 전송할 때 쓰지만 사실 post는 생성을 위해 준비된 기능
    • REST API는 HTTP들의 Method들을 용도에 맞게 쓰나는 것도 중요한 목표이므로 생성만 사용
  • Read (get)
  • Update (put, patch)
    • put : 전체 업데이트
    • patch : 부분 업데이트
  • Delete (delete)

실습 소개

  • 지금부터는 웹 브라우저에서 웹 서버에 Ajax를 위한 API인 fetch라는 것을 이용해서 REST API를 이용하는 방법을 소개해보겠습니다.
  • 이 수업은 웹에 국한된 것이 아니에요. 모바일 앱, 웹 서버가 다른 웹 서버와 통신하는 것도 포함됩니다.
  • 수업은 사례일 뿐이므로 자신의 상상력에 맞게 수업들 들어주시길 바랍니다.

실습 방법, 시작

  • Github 참고 : egoing - rest-api-lab 

생성(Create, post)

  • 우리가 하려고 한 것은 데이터를 생성하는 것이므로 생성이 HTTP 프로토콜에선 post이므로 method로 post를 쓴다.
  • REST API에서 규정하고 있지 않은 것은 서버와 클라이언트가 어떤 데이터 타입으로 통신할 건지 규정하지 않아요.
  • (json, xml 다 사용해도 된다.)
  • REST API에서 규정하고 권고하는 것
    • Resource를 식별할 땐 URI로 식별한다.
    • 그리고 어떤 행위를 할 때는 post, get, patch, delete와 같은 HTTP의 고유한 method를 이용한다.
    • 결과를 알려줄 땐 응답 코드를 정확히 사용하여 돌려준다.
  • 즉 HTTP 프로토콜을 HTTP 프로토콜 답게 사용하자라는 것이 REST API가 주장하는 바입니다.

읽기(Read, get)

  • Collection 읽는 방법 (여러 개) 
    • 그냥 URI 뒤에 안 붙임 ex) /topics
  • Elements 읽는 방법 (한 개 한 개)
    • 그냥 URI 뒤에 개별 id 붙임 ex) /topics/3

수정(Update, put or patch)

  • patch (부분 수정)
    • 개별 업데이트 
  • put (전체 수정)
    • 전체 다 업데이트
    • ex) 기존 title, body 값이 있을 때 put으로 title을 없데이트하면 body 값이 사라진다.
    • 즉 언급하지 않은 데이터는 삭제 된다.

삭제(Delete, delete)

  • 이건 그냥 삭제되니까 자세한 설명은 생략
  • Collection 전체 삭제는 위험해서 막혀있는 경우가 많다.

관계

  • 이번에는 관계를 알아보자.
  • Resource와 Resource 와의 관계를 맺고 있을 때 그걸 어떻게 URI에 표현할 수 있을까
    • ex) topics 부모, comments 자식
    •     /topics/1/comments => topics 1번글의 댓글들

마무리

  • 이렇게 해서 REST API에 대해 알아봤습니다.
  • REST API는 복잡한 권고안이 아니에요 기계와 기계가 HTTP를 이용해서 통신할 때 
    • Resource는 URI로
    • 행위는 method로
    • 결과는 응답 코드로
    • HTTP가 원래 가지고 있는 원래 의미를 잘 활용하자는 것이라고 할 수 있습니다.
  • REST API의 의미에 대해 알게되신 점 축하드립니다

후기

강의를 듣기 전엔 REST API의 범위는 굉장히 넓었다.

자원(resource)의 표현(representation) 에 의한 상태 전달이라고 알고 있었는데 이게 도저히 무슨 말인지 감이 안 왔다.

생활 코딩님의 강의를 듣고 REST API의 개념과 의도하는 바를 알게 되었다.

양질의 강의를 제공해주셔서 감사합니다!!

필기 사진

목차

1. 수업 소개

2. HTTP 소개

3. Request message

4. Response message

5. 수업을 마치며

 

내용

1. 수업 소개

  • 1990년 팀버너스리가 웹을 세상에 내놓았을 때 크게 4가지로 나눠졌습니다.
    • 1. HTML : 웹 페이지를 만드는 컴퓨터 언어
      • ex) 네이버 포탈 페이지
    • 2. URL, URI : 원하는 웹페이지 방문들 도와주는 주소 체계
      • ex) www.naver.com
    • 3. Web browser, WebServer : 웹 페이지를 주고 받는 소프트 웨어
      • ex) Chrome
    • 4. HTTP : 웹 브라우저가 웹 서버가 통신을 할 때 사용하는 규칙
      • 사용자가 알 수 없음
    • 3을 켜서 2를 입력하면 4을 통해 1이 뜬다.
    • 웹이 아무리 달아나도 위 4가지 요소에서 벗어날 수 없다.
  • 초기 HTTP는 단순했다. 그러나 사용량이 어마어마하게 늘면서 HTTP는 풍부한 기능을 가진 프로토콜로 발전
    • 지금은 HTML 같은 단순 텍스트 뿐만이 아닌 아미지, 오디오, 동영상 같은 멀티미디어 파일도 전송하는 매우매우 중요한 프로토콜
  • HTTP는 웹을 넘어서 인터넷을 동작하는 근간이라고도 할 수 있다!!

2. HTTP 소개

  • HTTP는 request, reponse 를 위한 메세지로 구분 되어있다.
  • HTTP는 추상적이지만 계속 얘기하고 자꾸 생각하면 물질처럼 손에 잡히는 것처럼 느낄 수 있다.
  • 브라우저 - 개발자 도구 - Network에 웹 브라우저 - 웹 서버 간의 주고 받는 내용을 볼 수 있다.
    • Request Header : 웹 브라우저가 웹 서버에게 요청
      • ex) 메세지 해석 : "GET 방식으로 a.html을 요청하고 지금 내가 사용할 수 있는 통신 방법은 HTTP 1.1이다"
    • Response Header : 웹 서버가 웹 브라우저에게 응답
      • ex) 메세지 해석 : "어, 나도 HTTP 1.1로 통신하고 200(성공적으로) a.HTML 보내 줄게"
    • Contents-Length : 길이, Content-Type : 타입
  • 웹 브라우저는 사용자가 물어본 정보를 웹 서버에게 대신 물어봐주는 기계
  • 응답한 정보를 화면에 적당히 보여주는 것

3. Request message

  • 자 그럼 이제부터 웹 브라우저와 웹 서버가 주고 받는 메세지를 좀 자세하게 들여다 봅시다.
  • Request Header 설명
    • 첫번째 행 : 요청 행위
    • 구글에서 'http header' 이미지 검색
      • Request Message Header
        • Request Line : 첫번째 행
        • Requeset Headers : 둘째행부터
      • A blank line seperates header & body : Header - Body 구분 라인
      • Request Message Body
  • Request Line
    • ex) Get /1.html HTTP/1.1 
      • Get : 웹 서버의 정보를 가져오는 메소드
      • /1.html : 웹 서버에 요청한 정보
      • HTTP1.1 : 웹 브라우저가 사용하고 있는, 사용할 수 있는 HTTP 버전이다
  • Host : 반드시 적어야 하는 것. 인터넷에 연결된 컴퓨터 한 대 한 대를 식별하는 이름
    • ex) localhost:8080
      • 우리가 요청하는 사이트의 웹 서버의 주소를 적은 것
      • 하나의 웹 서버가 여러 개 도메인 서비스 가능(좀 어려운 얘기)
      • A라는 웹 서버가 A닷컴, B닷컴 각 다른 웹 사이트를 보여줘야 한다.
        • = 가상호스트
  • User-Agent
    • ex) Mozilla/5.0~ 
    • 웹 브라우저의 다른 표현
    • 요청하는 웹 브라우저가 어떤 웹 브라우저인지 보여준다.
      • ex) 나중에 통계 같은 걸 낼 때 어떤 브라우저 사용자가 많이 접속하는지 알 수 있다.
      • ex) chrome이나 firefox가 아닌 로봇이 접근하는 경우가 있다. 이때 차단할 수도 있다.
  • Accecp-Encoding
    • ex) gzip, deflate, br
    • 웹 브라우저와 웹 서버가 통신할 때 응답하는 양이 많으면 그걸 압축해서 전송하면 웹 브라우저가 압축을 풀어서 처리 
    • 네트워크 자원 아낄 수 있다.
    • 이 웹브라우저는 어떤 압축 방식을 지원합니다. 라고 알려주는 것
  • If-Modified-Since
    • 지금 우리가 1.html을 요청 했잖아요, 또 요청할 때 마다 다운 받는 건 비효율적
    • 웹 브라우저가 서버에 전송할 때 내가 요청한 파일은 마지막으로 언제 다운 받은지를 알려줌
    • 웹 서버는 자기가 갖고 있는 파일과 비교하여 최신 파일 보내준다.
      • 최신이 아니면 다운하지 않는다. 전송할 필요 없는 것.

4. Response message

  • 자 이번 시간에는 응답 메세지에 대해 좀 자세하게 살펴보도록 하죠
  • 구글 http response header format 이미지 검색
    • 첫번째 행 : status (상태)
      • 서버가 응답했을 때 잘 됐는지, 안 됐으면 어떻게 안 됐는지 알려주는 자세한 정보
      • version, status code, phrase 3가지로 구성
      • version
        • HTTP version
      • status code
        • 응답 결과에 대한 얘기
        • 1xx : Information Code
          • 어떤 정보를 주기 위함(이건 잘 쓰진 않아요)
        • 2xx : Success
          • 긍정적, 그중 200은 가장 중요한 성공 메세지, 다른 2xx는 따로 찾아볼 것
        • 3xx : Redirection
          • ex) A닷컴으로 접속했는데 서버가 3xx를 응답하면 우리 웹 브라우저가 다른 곳으로 바로 이동해요
        • 4xx : Client Errors
          • 클라이언트 에러 
          • 404 Error
            • 어떤 주소로 접속 했는데 서버에 없다, 없는 걸 요청해서 찾을 수 없다.
          • 403 Error : Forbidden 
            • 접속하면 안 되는 곳에 접속 했을 때
            • ex) 관계자 외 출입 불가 , 당신이 오면 안 되는 곳입니다.
        • 5xx Error : Server Error
          • 서버쪽 에러
          • 500 Error : Internal Server Error
            • 서버 내부에 어떤 문제 있어서 보여 줄 수 없습니다.
      • phrase
        • 응답 결과를 사람이 이해하기 쉽게 말로 풀어쓴 것
    • 두번째 행
      • 유명한 헤더 위주로 알아보겠습니다.
      • Content-Type 
        • 웹 서버가 응답할 때 text/html 이다. (text:응답, html:컴퓨터 언어)
      • Content-Length
        • ex) 응답하는 이 Contents의 전체 크기는 1434이다.
      • Content-Encoding 
        • ex) gzip으로 압축 했으니까 gzip으로 풀어서 읽으세요.
      • Last-Modified
        • 이 정보는 마지막으로 언제 수정되었습니다.
  • 즉 웹 브라우저는 Request message를 생성하고 웹 서버에 전송하고 인터넷을 통해 웹 서버에 보내주면 응답 메세지를 만들어준다. (Response message + html 소스)
  • 이를 참조해서 사용자에게 화면을 보여준다.

5. 수업을 마치며

  • 지금까지 우리는 HTTP에 대해 필수적으로 알아야할 것들을 충분히 알아봤습니다.
    • 더 알아보는 것은 무의미 합니다. 여러분들은 혼자 학습이 가능한 정도가 됐습니다.
  • 그럼 여러분이 할만한 주제들을 던지고 물러날테니 알아서 찾아보시기 바랍니다.
    • HTTP, HTTPS(=ssl) 차이를 아시나요?
      • HTTP가 세상에 처음 나왔을 때 세상은 그렇게 위험하지 않았습니다. 
        • 웹으로 그렇게 심각한 정보를 다루지 않았어요.
        • 30년이 지난 지금 웹으로 군사, 금융, 사생활 정보를 다루죠
        • 즉 당신이 HTTP를 쓴다면 누군가 보고 있는 것으로 간주해야 합니다.
      • HTTPS로 전송하면 전송하는 내용을 가로채도 당사자들만 알 수 있습니다. 
        • 암호화되어 있거든요
        • HTTPS가 아닌 사이트에서 login을 요구하면 여러분은 그 사이트를 이용하지 말아야 합니다.
        • 서비스를 만드는 생산자라면 운영하는 그 사이트는 HTTPS를 꼭 도입해야 합니다. 
        • 그렇지 않으면 정보 담당자로 마음가짐이 부족한 것입니다.
    • Cache
      • 돈이 아니라 저장한다는 뜻이에요.
      • 이미 다운 받은 저장된 파일을 읽어서 성능을 향상 시키는 기법
      • 풀기 어려운 문제가 있어요
        • 내용이 갱신 됐을 때도 웹 브라우저는 그 사실을 알아채지 못합니다.
          • 이런 경우 Ctrl + F5 를 누르면 강제로 Cache가 갱신됩니다.
          • 하지만 일반 사용자는 Cache가 갱신 됐는지 모릅니다.
    • Cache-control, pragma
      • Cache 갱신을 일반 사용자가 모를 때 해결하기 위한 기법
      • 캐시를 제어하는 테크닉
      • 비교적 최신 기술인 애플리케이션 Cache도 이러한 목적으로 고안된 기술
      • 성능 향상에 관심이 간다면 Cash를 살펴보십시오.
    • Cookie
      • 개인화도 중요한 문제입니다.
      • 쇼핑몰 장바구니 담기, 로그인 유지 등은 웹 사이트가 기억 하는 것, 사용자 상태 유지
      • 귀여운 이름의 기술을 이용해서 cookie값을 웹 브라우저에 설정하면 접속 할 때마다 그 설정되어 있던 cookie 값을 서버에 전송하는 걸 통해서 사용자의 상태를 유지할 수 있고 식별할 수 있습니다.
    • Web storage
      • cookie보다 훨씬 많은 정보를 저장하고 보안쪽으로도 우수한 기술
      • 주목할만한 기술입니다.
    • Proxy
      • 웹 브라우저와 웹 서버 사이에 proxy라고 불리는 중계 서버를 둘 수 있다.
      • 중간에 있는 서버가 캐시를 대신 해주거나 보안과 관련된 공격을 막아주거나 적당히 자용자 요청을 여러대 서비스로 분산
    • 네트워크 모니터링 도구
      • Developer tools > Network
      • wireShark 
        • 오픈 소스
        • 어렵지만 익숙해지면 여러분께 강력한 힘들 줄 수 있을 것
        • 컴퓨터에서 일어난 모든 네트워크를 트래픽을 감시할 수 있는 강력한 도구
  • 하이퍽 텍스트라는 도로의 도로라고 할 수 있는 HTTP에 좀 익숙해지셨나요?
  • 여기까지 오시느라 고생하셨고 축하드립니다. 

후기

생활 코딩님 덕분에 추상적이었던 HTTP를 물질처럼 생각하게 되었습니다.

양질의 강의를 제공해주셔서 감사합니다.

 

필기 사진

'네트워크' 카테고리의 다른 글

[HTTP] 생활코딩 HTTP 강의 내용 정리  (0) 2022.04.15

+ Recent posts