Skip to content
On this page

2022년 11월 01일

수정하기
문서 생성 2022-11-01 22:58:53 최근 수정 2022-11-01 23:46:28

📚 오늘 도전하고, 배운 것

🤔 학습하면서 궁금하거나 어려웠던 점

  • 세션 기반 인증과 토큰 기반 인증에 대해 학습했지만 토큰 기반 인증은 다뤄보지 못해서 매우 애매한 상태다. 내일 직접 사용해볼 수 있었으면 좋겠다.

  • express-generator로 생성한 프로젝트 구조를 실행할 때 미리 세팅된 bin/www를 실행한다. 바빠서 그냥 서버 실행을 이렇게 하는구나 하고 넘어갔는데 왜 이래야 하는지 궁금해졌다. 검색 결과 는 다음과 같다.

    • app.js는 모든 middleware(body-parser, morgan 등)와 rotutes를 포함한다.
      • 마지막엔 app 객체로 export된다.
    • www 는 httpServer를 만들고 앱을 핸들러로 전달한다.
      • Port도 설정한다. server.listen(port)
      • 그리고 서버 시작시 발생하는 오류를 처리하기 위한 함수도 설정한다. server.on('error', onError)
    • 결국. app.js에서 모든 생성 및 시작 서버 코드를 제거하고 애플리케이션 로직 부분에만 집중할 수 있다!
    • 그래서 package.json 파일에 node ./bin/www로 서버를 실행한다.
    • www.js가 아니라 www인지도 궁금했다.
      • 실행 파일에 extension이 붙지 않는 것은 Unix의 전통이라고 한다.
        • 예를 들어 ls 명령어를 입력할 때 ls.exe 라고 하지 않는 것처럼!
      • 파일을 실행가능한 것으로 표시하기 위해 파일 첫 줄에 다음 코드가 포함된다.
        • #!
      • 그러면 Shell#!를 제외한 첫줄의 나머지 코드를 실행한다.
        • 이건 shbang 라인이라고 부른다고 한다. (sh = shell, ! = bang)
      • 따라서, bin/www 파일을 살펴보면 첫 줄에 #! /user/bin/env node 를 살펴볼 수 있는데 env 명령은 node의 올바른 설치 경로를 찾는 것이라 한다.
    • 재밌는 표현이 있었다. ".js로 끝나는 프로그램을 만드는 것은 '전문적'으로 보이지 않는다." 예를 들면, npm을 실행할 때 npm.js를 입력하지 않는 것처럼 말이다. 왜 붙이지 않았는지 이제 좀 와닿았다. 관습이다.

🌅 내일은 무엇을?

  • 토이 프로젝트 작업
  • 코딩 테스트 문제 풀기 (4문제)

✒️ log

  • 30분 뛰었다. 거의 3일을 쉬어서 그런지 너무 힘들었다. 저녁엔 피곤해서 졸음이 몰려왔는데 다행히 집에 손님이 오셔서 잘 수가 없었다.