항해99 6기 DAY 10 TIL _ 22.03.16
기상 08:00
공부 시작 08:20
CS 스터디 09:10 - 09:40
공부
- 항해톡 발표 준비
- 알고리즘 문제 풀이
발표 자료 제출 16:30
발표 19:30 - 20:00
발표를 무사히 마쳤다,,
저녁도 못먹고 계속 발표 자료를 만들었는데 잘 끝나서 다행이다.
공부
- CS 스터디 준비 (Chapter5, 6 읽어가고 생각 정리하기)
- 알고리즘 문제 풀이 (혼자 못 풀어본 문제들 다시 풀어보기)
오늘은 발표준비에 포커스를 둔 날이었다. 발표 주제는 REST API였다.
어제 저녁부터 REST API를 공부하고 어떤 내용을 어떻게 설명할 지에 대해 고민을 많이했다. API의 개념도 막상 다시 생각해보니 정확한 정의를 이해하지 못한 것을 확인할 수 있었다. REST API를 설명하기 위해 API와 REST 이렇게 두 부분으로 나눠서 발표를 진행했다.
Application Programming Interface, 각 단어 하나하나를 공부해가며 예시들을 보고 공부하고 이해해서 개념을 잘 잡을 수 있었다. REST,, 이게 좀 양이 많았다. Representational State Transfer의 약자로 로이 필딩이 만들어 낸 REST의 개념은, 간단히 말하자면 HTTP의 장점을 최대한 활용하기 위한 것이다.
REST를 이해하기 위해서 그 배경부터 약간 알아보았다. REST의 등장, 그 배경의 시작은 WEB이다. 1991년 팀 버너스리에 의해 World Wide Web이 만들어졌다. 이 때, 인터넷에서 어떻게 정보를 전달할지에 대한 질문의 해답으로 WEB이 나오게 되었다. 그 해답은 정보들을 하이퍼텍스트로 연결하는 것이였다. 그들은 HTML의 표현 형식으로, URI라는 식별자와 HTTP라는 전송 프로토콜을 만들게 되었다.
(하이퍼텍스트란 초월한의 의미를 가진 'hyper'와 'text'의 합성어로, 기존의 문서가 순차적이면서 서열형 구조라면, 하이퍼텍스트는 링크에 따라 그 차례가 바뀌는 임의적이면서 나열형인 구조를 가진다. 한 마디로 링크가 포함된 텍스트를 말한다.
하이퍼텍스트와 하이퍼링크가 무슨 차이인지 궁금해서 찾아보니 하이퍼 텍스트는 텍스트 내에 링크만 포함한 것을 말하고, 하이퍼링크에는 일부 텍스트, 이미지, 오디오, 비디오 내에 숨겨진 링크가 있을 수 있으며, 이로 인해 관련없는 웹 페이지로 연결될 수도 있다고 한다.)
다시 REST를 만들게 된 배경을 알아보면, 그렇게 HTTP 프로토콜을 만들던 여러 설계자들 중 한 명인 로이 필딩이라는 대학원생이 있었다. 로이 필딩은 어느 날 한 문제에 직면하게 되는데, 그 문제는 이미 전 세계의 서버에서 사용되고 있는 HTTP를 수정해야하는 상황에 놓인 것이었다.
현재 사용되고 있는 HTTP를 수정한다면 분명 호환성의 문제를 피할 수 없을 것인데, 이 과정에서 로이 필딩은 어떻게 하면 기존의 WEB을 망가뜨리지 않고 HTTP를 개선할 수 있을까 고민하게 된다.
그 고민의 결과물이 바로 REST의 개념이다.
이해를 돕기 위해 예를 들자면, 우리는 구글이나 네이버와 같은 웹 사이트를 접근할 때 웹 페이지를 변경했다고해서 웹 브라우저를 업데이트할 필요는 없다. 웹 브라우저를 업데이트했다고 해서 웹 페이지를 변경할 필요도 없다. 하지만, 모바일은 다르다. 어플이 업데이트가 되면 사용자가 수동적으로 업데이트를 해야한다. 이런 점에서 모바일에서는 클라이언트와 서버가 REST 구조를 따르고 있지 않다고 말할 수 있다.
REST API는 REST한 구조의 디자인을 따르는 API라 한다. 내용이 너무 길어질 것 같으니 REST API의 개념을 하나의 게시물로 다시 작성해봐야겠다.
오늘은 그렇게 발표를 마치고 지난 알고리즘 문제를 복습하는 시간을 가졌다. 그런데, intellij 가 또 말썽이었다.
새 프로젝트를 생성하니 또 gradle 파일이 생기지 않는 것이었다. 그래서 지난 번에 해결한 방법대로 관리자 모드로 intellij 를 열어 확인해보니 gradle 파일은 생성이 되는데 가장 중요한 src 파일이 생성되지 않았다. 관리자 모드에서 나와서 다시 프로젝트 파일을 열어보니 한 가지 오류가 떠 있었다. gradle 7-1 파일이 존재하지 않는다는 오류였다. 다시 오류를 구글링하고, 해결방법을 찾아 대입해보았다. 그런데도 해결되지 않았다. 그래서 결국 다른 데스크탑 컴퓨터에 새로 jdk와 intellij 를 설치해 환경을 다시 만들었다. ㅎ,, 어차피 노트북으로 더이상 하기에는 무리가 있다고 판단했는데 잘 된 것 같기도 하다. 웹캠과 마이크도 주문했으니 조금 더 나은 환경에서 작업을 할 수 있을 것 같아 설렌다.
오늘도 많은 일이 있었지만 정말 재밌었고 확실히 오류를 많이 겪어보니 오류 나는 것에 대한 두려움이 적어진 것 같아 그 점은 좋았다! 내일은 알고리즘 실전 시험이 있으니 이만 자고 아침 일찍 일어나서 다시 복습을 해야겠다.