본문 바로가기

내일배움캠프 Node 4기/TIL

(38)
내배캠 12/29 TIL 3 layered architecture - 어플리케이션 설계시 3층으로 나누어 설계하는 방식을 일컫는다 내가 지금 공부하는 Node에서의 3계층은 리포지토리, 서비스, 컨트롤러 이 셋으로 나누어 서버를 관리한다는 뜻인데 리포지토리는 DB접근관련 파트로, 서비스는 비즈니스 로직, 컨트롤러는 라우터 관련 한 기능을 따로 구현해 관리하는 방식이다. 로직을 함수나 Class로 만들어 export한 다음 사용하면 해당 파트에 수정사항이나 오류 발생시 그저 해당 부분만 고치거나 수정하면 되므로 편리하고, 이번 팀 프로젝트에서 실시한 테스트코드 작성시에도 기능별로 테스트를 진행할수 있기 때문에 수월하다. 이번 팀 프로젝트에도 이 방식을 이용해 진행할 것이다 Cache 이 역시 효율적 자원운용(귀차니즘)의 고려로 탄..
내배캠 12/28 TIL 객체지향 프로그래밍 OOP 과거 플러터로 앱을 만들때 사용하던 프로그래밍 방식이다 사실 JS에서는 OOP용 언어는 아니지만, TS를 이용해 interface등을 사용해 구현하기도 한다. 객체지향이란 쉽게 말하면 객체 단위로 쪼개서 프로그램을 만든다는 뜻인데 사실 이건 단순히 글로만 배우면 무슨소린지 굉장히 난해하다. 그래서 여기서는 그냥 정말 쉽게 개념만 건드리고 실제 사용하는건 훗날 프로젝트에서 언급해볼 예정이다 1. 캡슐화 중요한 정보를 캡슐로 감싸서 외부에서 데이터에 접근하기 힘들게 한다는 뜻이다. private로 변수를 선언한 후, Get과 Set으로 접근하게 하는것이 골자다 2. 추상화 각 기능에서 공통되는 로직이나 함수를 찾아내 그것을 공동관리(?) 하는 개념이 추상화 인데, 예를들어 우리집 ..
내배캠 12/27 TIL 코드 Formatter 자바스크립트 코드를 작성하다보면, 가끔 "" (쌍따옴표)를 쓰느냐, ''(일반) 을 쓰느냐로 은근히 갑론을박이 있었고, Python의경우 들여쓰기(탭) 간격이 4칸인데 반해 (이 들여쓰기 법칙을 지키지 않으면 컴파일이 안되는 경우도 종종 봤다) 또한 줄바꾸는건 또 언제 바꿔야 하는건지... 그리고 제일 궁금했던건, 콜백함수에서 인자를 전다할때 예를들어 (data) => {} 로 할건지, 아니면 어차피 한개만 전달하면 생략을 하던지 등등 이게 사용자 편의를 위해 제공되었다 하더라도, 사실 '내 코드를 남이 읽을때' 어떻게 보여야하는가를 신경쓰지 않을수가 없다. 나도 kt알파에 있을때 남이 쓴 함수를 도대체 이걸 어떻게 한건지 정신없을정도로 가독성이 떨어진 코드를 보고 쩔쩔맸던 기억이..
내배캠 12/26 TIL 인증 TOKEN생성시 키 관리는 어떻게? - 로그인과 인증(Auth)을 진행하다보면 private key라는걸로 일종의 비밀번호 비슷한걸 설정하게 된다 그런데 명색이 비밀 키인데 이걸 VSC 안에서 Const 변수로 남겨놓는게 맞나? 이거 잘못하다가 Github에 올리면 다른사람이 다 보는거 아닌가?? 뭐 이런 의문점을 품기 시작했다. 내가 배운 방법은 .env 환경변수 파일을 만들어서 각종 config 사항의 값을 입력하고, dotenv를 설치한 후, 따로 config.js파일을 만들어 config들을 객체로 만들어 접근하는 방식이었다. 사실 아예 코드상에서 os.env로 접근해버려도 가능하기는 한데, 코드가 길어질 뿐만 아니라 가독성이 굉장히 나쁘기때문에 객체를 만들어 접근하는 방식이 더 좋다고 생각..
내배캠 12/23 TIL 오늘은 저번주 개인과제였던 블로그 백엔드 (글,댓글)을 처음부터 다시 해보면서 알게된것들 위주로 적어보려고 한다. 1. -v란 무엇인가? Versionkey라는 필드로서 몽구스를 통해 데이터를 생성하면 자동생성된다. 기본값은 0인데 이게 재밌는 점이, 구글에 -v 몽구스 라고 치면 왠 동물 몽구스 얘기만 잔뜩나와서 당황한 적이 있다. 여튼 스키마 생성시 versionKey : false로 설정하면 해결된다 2. git checkout과 switch의 차이 깃 체크아웃은 두가지 기능이 있었다. 하나는 branch의 변경, 또 하나는 restore의 기능. 그런데 2019년 깃 업데이트를 통해 switch와 restore로 분할되었다. 이렇게 쓰는것을 깃에서도 권장하고 있다고 한다. 앞으론 더 익숙해져야겠다..
내배캠 12/22 TIL 로그인 기능 구현시 ID와 PW 불일치를 한꺼번에 표시하는 이유 - 이건 뭐 Node 이런것보다도, 보안의 본질을 꿰뚫고, 오랫동안 궁금한것이 해결되어서 언급하려 한다. 내가 기억하기로는 거의 모든 사이트에서 로그인을 할 때, ID가 틀리면 ID가 잘못되었다고 나오거나, PW가 틀리면 PW가 잘못되었다고 나오곤 했다. 그런데 최근에는 ID가 틀렸는지, PW가 틀렸는지 명시하지 않고 '사용자 정보가 올바르지 않다' 라고 뜨는 경우가 많다. 특히 블리자드의 Battlenet이 그런 경우. 이는 쉽게 설명하면 혹시나 모를 해커의 공격에 대비해, 개인정보를 최대한 숨기는데 그 목적이 있다. 사실 ID와 PW를 만들때, 아이디가 kang이면 비밀번호는 kang으로 하던가, kang 1234로 하는 경우가 꽤 있다..
내배캠 12/21 TIL sanitization 이란? - Validation시 필요한 절차로서, 원 뜻은 소독(?)이다. 즉, 우리의 데이터를 한번 소독하고 validation을 해야한다는 뜻이다. 예를들면, JSON으로 이름을 보낼때 피치못할 내부 오류로 공백이 들어가서 " KANG"이 들어갔다고 하자. 유효성 체크에서는 Type을 체크하기 때문에, 해당 내용은 String으로 판별되어 공백이 그대로 유효하게 되어버린다. 컴퓨터에서 틈만 나면 얘기하는게 Bug 인데, 이러한 것들을 Bug라고 보면 되고, 그것을 소독하는것인데, 예를들어 Trim() 같은 메소드는 (trim : 깎다) 공백을 제거해주며, Normalize는 이메일 등에서 갑자기 튀어나온 대문자를 바꿔주기도 한다. 물론 DB 인서트시 스키마(몽구스)등으로 체크를..
내배캠 12/20 TIL 쿠키와 세션, 그리고 JWT - 기본적으로 http는 stateless한 특성을 가지고 있다. 한국어로 풀자면 '상태가 없다' 정도인데 좀 더 간단히 이해하자면, 요청을 받고 처리만 해주면 끝나는것이지 계속 state가 유지되지 않는다는 뜻이다. 그렇기에 별다른 처리를 해주지 않으면, 로그인 페이지를 만들어놓아도 다른 페이지로 이동하면 로그인이 풀려버린다. 로그인 결과로 인해 response를 날리면 그걸로 서버가 할 일은 다 끝났기 때문이다. 이 문제를 해결하기 위해 쿠키랑 세션을 사용한다. 쿠키는 서버에서 클라이언트로 내려주는 데이터 파일같은건데, 클라이언트 내부에서 보관한다. 쿠키의 쉬운 예는, 인터넷 브라우저를 종료하고 다시 열어도 사이트 로그인 관련 쿠기만 남아있으면, 로그인 상태가 유지되는것 ..