반응형 나의 개발일지39 javascript class this bind 문제 - this가 왜 undefined로 나오지? typescript로 express api 기본 세팅의 보일러 플레이트를 만들다가 이론으로만 접하던 this 문제를 제대로 겪었다. controller-service-repository의 3계층 구조(3 layer pattern)로 분리하고 있는데 this가 undefined로 뜬는 게 아닌가.. gpt에 물어보니 bind 키워드를 알려줘서 아차!했다. 문제가 된 코드는 아래와 같다. // users.route.ts import { Router } from "express"; import { UserController } from "./users.controller"; import wrapAsyncMiddleware from "../middlewares/wrapAsyncMiddleware"; const.. 2024. 2. 25. nodejs(expressjs) 환경변수 validation NestJS의 ConfigModule을 접하고 expressjs로 만들었던 프로젝트에도 환경변수 유효성 검사와 기본값 설정을 추가해 봐야겠다고 생각하고 실행해 보았다. 왠지 라이브러리가 있을 것 같아 찾아보니 환경변수 유효성 검사와 기본값 설정 등을 할 수 있는 envalid라는 라이브러리가 있었지만 추가로 라이브러리를 깔고 싶지는 않아서 기존에 데이터 검증을 위해 설치했던 joi 라이브러리를 사용하였다. [npm envalid] https://www.npmjs.com/package/envalid envalidValidation for your environment variables. Latest version: 8.0.0, last published: 5 months ago. Start using en.. 2024. 2. 14. HTTP와 HTTPS - 비밀번호 평문 전송은 안전할까? 부트캠프 파이널 프로젝트 때 프론트엔드 레포에 이슈가 달렸었다. 어쩌다 지나가는 분이셨는진 모르겠지만(팀원 그 누구도 알지 못함) 덕분에 http 통신 과정에서의 데이터 암호화에 대해 생각해 볼 기회가 되었다. 결론은 https 통신을 하고 있으므로 평문으로 전달해도 문제가 되지 않을 것 같단 판단에 평문 전달 후 서버에서 단방향 암호화로 데이터베이스에 저장하는 방식을 취했다. https로 클라이언트-서버 통신을 하면 SSL/TLS로 암호화되어 비밀번호는 결국 일반 텍스트가 아닌 암호화된 데이터로 전송되기 때문이다.(이슈에 링크된 암호화 적용 기준은 오른쪽과 같다) ▼ HTTP (HyperText Transfer Protocol)- 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 간 통신.. 2024. 2. 14. NestJS 환경변수 관리 - process.env보단 ConfigModule을 Express.js를 사용할 땐 Node.js 내장 객체인 process 객체로 환경 변수를 관리했어서 NestJS의 ConfigModule을 접했을 땐 왜 process.env를 두고 ConfigModule을 사용하는 건지 아리송했다. 왜 굳이..? 하지만 굳이 ConfigModule이란 걸 만든 데에는 이유가 있지 않을까 싶어서 개인 블로그 만들기 프로젝트를 하며 이것저것 시도해 보았다. Configuration namespaces(app, db, secret 등으로 세분화해서 관리)까지 적용했다가 현재는 후퇴한 상태다. class에 주입해서 사용하는 거 말고 일반 함수에서는 어떻게 해야 좋을까 고민하다가 일단 process.env로 접근하는 걸로 수정했다. redis 연결 부분을 함수로 export.. 2024. 2. 7. [javascript | JS] 화살표 함수와 this binding javascript 호출 스택부터 다시 공부하다가 사고회로의 정지를 안겨준 this 먼저 정리하기 일반적으로 this는 가장 가까이 있는 객체를 바인딩한다 하지만 화살표 함수는 자신만의 this를 가지지 않고, 선언된 위치에서 this를 상속한다 (자신의 바깥쪽 스코프에서 this 값을 참조) 호출 시점에 사용된 객체로 this를 바인딩하는 일반 함수와는 달리, 화살표 함수 내에서 사용되는 this는 처음부터 전역객체를 가리키게 된다 const obj1 = { count: 1, increase() { this.count++; } }; obj1.increase(); console.log(obj1.count); // 2 const obj2 = { count: 1, increase: () => { this.c.. 2023. 7. 12. 이벤트 기반 프로그래밍(event-driven programming) ▼ 이벤트 기반 프로그래밍(event-driven programming)이란? - 이벤트 발생에 의해 프로그램 흐름이 결정되는 프로그래밍 패러다임 이벤트 컴퓨터 용어로서의 이벤트: 컴퓨터 회로를 구동시키기 위해 발생하는 일 마우스 클릭, 키보드 입력, 화면 터치, 센서 출력, 프로그램 로딩 과거에는 모든 프로그램의 흐름을 시간의 흐름대로 순서대로 해석하려는 경향이 있었다 콘솔로 프로그래밍을 할경우에는 사용자의 입력을 받는 타이밍이 있고 인터럽트(일종의 예외)가 발생하더라도 굉장히 소수였다. 즉 흐름을 예측할 수 있었다는 것이고 예측 하지 못하는 예외들은 소수였다는 것이다. 따라서 그냥 일반적으로 순차적으로 코딩을 해도 아무 문제가 없었다. 문제는 현재는 이 흐름이 별로 맞지는 않다는 것이다. 과거에 흐름.. 2022. 10. 11. 이전 1 2 3 4 5 ··· 7 다음 반응형