[TIL] 2020/09/26

yongkini ·2020년 9월 26일
0

Today I Learned

목록 보기
38/173

Today, I Learned


  • What is Node.js? :
    node.js는 javascript runtime(런타임) 중에 하나로(웹 브라우저도 해당됨), google이 제공하는 V8엔진을 바탕으로 빌드되었다. 
    좀 더 쉽게 말해보면, 자바스크립트를 실행하는 환경이라고 할 수 있다. 이러한 node.js는 non-blocking 환경으로, 이벤트를 비동기적으로 처리하며 그에 따라 속도면에서 효율적인 처리가 가능하다.
    이에 더하여, node.js에서 사용하는 node package manager, 즉, npm을 사용하면 간편하게 module들을 다운받아 쓸 수 있다(번들링되어 있는). 
  • What is Package.json? :
    먼저, 깃에 자료를 푸시하여 관리하는 부분을 생각해볼 때, 굳이 패키지까지 저장해놓을 필요는 없다고 생각이 된다. 
    패키지라는 것은 일종의 공유자원 혹은 다운받아서 모두가 쓸 수 있는 자료인데, 그것을 굳이 각각의 깃에 가지고 있을 필요가 없다는 것이다. 
    하지만, 만약 내가 어떤 패키지를 다운받아서, 그것을 사용해서 코딩을 해놓고 깃에 저장해두었는데, 다른 사람이 내 것을 pull해서 쓴다면? 해당 패키지가 필요할 것이다. 
    이러한 상황을 위해서 어떤 패키지가 개발 환경을 위해, 코드 실행을 위해 쓰였는지 기록해둔 곳이 package.json이다(다른 정보도 들어가있음. 코드 관련 설명 및 작성자 정보 등). 
    먼저, npm init 명령어를 터미널에 쳐주면, package.json을 만들 준비를 하고, 간단한 질문 몇개와 함께 생성한다. 
    그 다음에 npm install 을 할 때 --save or --save -dev(devdependecies에 저장할 때)명령어를 추가하여 pacakage.json에 자동으로 기록하게 한다. 
    이렇게 package.json에 기록만해두고 깃에 저장한 것을 다른 사람이 쓴다면, npm install만 치면 자동으로 package.json 내의 패키지들이 다운로드 된다(facebook에서 만든 yarn도 있다).
    추가적으로 package.json에 scripts 부분에서는 리눅스의 alias처럼 단축키를 만들어놓고 쓸 수 있다는 점 기억하자(by nodemon).
  • About HTTP (참고 사이트) :
    먼저, HTTP는 HyperText Transfer Protocol로 HTML과 같은 하이퍼 텍스트를 운송하는 통신 규약이다(서버와 클라이언트간의 통신에서 쓰이는). 여기서 프로토콜은 통신 규약으로 통신을 하는 데에 있어서의 약속이다. 
    모두가 통일된 방법으로 통신을 해야 원활한 통신이 가능하기에 이러한 프로토콜을 써줘야한다.
    이 때, HTTP는 body, header로 나뉘고(body는 필수는 아니다), 헤더에는 보낸 곳의 정보 혹은 contents type 등의 정보가 들어가고, body에는 전송할 자료 등이 들어간다.
    다음으로, HTTP의 두가지 속성을 말해보면, Connectionless & stateless가 있다. 먼저, 무연결성은 HTTP는 한번 요청 및 반응을 하면 연결이 끊긴다. 즉, 연결은 1회성이다.
    다음으로 무상태성은 HTTP는 이전의 상태를 전혀 기억하지 못한다. 예를 들어, 우리는 로그인을 하고 계속 뭔가가 연결되는 듯한 기분을 느낀다.
    why?=> 로그인 상태가 풀리지 않기에. 그러나 이는 쿠키라는 정보 주머니에 정보를 담고 있는 것일 뿐... 어떤 상태가 유지되는 것이 아니다.
    이에 더하여, HTTP는 OSI 7 layers에서 application layer 계층에 속하는, 즉, 최상위 층에 속한다(급이 높다고 좋은건 아님). 
    그리고 이러한 HTTP의 method에는 get, post, delete, put, patch, options 등이 있다. 이 때, OPTIONS는 CORS(Cross Origin Resouce Sharing)과 관련이 있다. 
    참고로 웹 브라우저를 쓰면서 어떤 HTTP request, response가 오가는지 그리고 그 안에 headers, body에는 뭐가 있는지를 보고자한다면 개발자 도구의 network를 확인하면 알 수 있다.
      
  • 인터넷에 관해서 : 유튜브 채널
  • What are the things in the HTTP request and response? (response, request)
  • How to Make http server with node.js? :
    http 모듈에서 createServer()메서드를 이용해서 서버를 만든 다음에 그 서버로(listen메서드를 써서 첫번째 매개변수에 포트넘버, 두번째 매개변수에 ip주소르 써준다) 들어오는 요청을 처리하는 로직을 짜줄 수 있음. 
    예를 들어, request의 method가 POST로 들어오면, 들어온 데이터(body)를 얻어서 처리를 한 뒤에 데이터를 리턴해주는 식으로 할 수 있다. 
    이 때, 들어온 데이터를 읽어올 때는 Buffer 클래스(공식문서)의 인스턴스를 받아오기 때문에 String으로 바꿔주는 과정이 필요하다(문자열로 쓰려면).
    (http 공식문서)

Planning to Study


profile
완벽함 보다는 최선의 결과를 위해 끊임없이 노력하는 개발자

0개의 댓글