전체 글(337)
-
[Postgres 접속 에러] : could not connect to server: Connection refused Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5432?
상황 : nestjs 서버 접속시 db 연결이 되지 않는 문제 발생 에러메시지 : could not connect to server: Connection refused Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5432? 원인: pg 서버가 정상적으로 종료되지 않아 발생하는 에러 (postgres server가 닫힌 상태) 해결방법: 터미널에서 아래 경로로 접속하여 postmaster.pid 파일을 찾는다. $ /Users//Library/Application\ Support/Postgres/var-13 $ ls // ls 명령어로 디렉토리 내의 존재 파일 확인 -> postmaster.p..
2021.08.25 -
210824 개발기록: 자바스크립트 Map() 객체
자바스크립트의 Map 객체 객체와 마찬가지로 key 기반 컬렉션이다.하나의 key에 하나의 value 가 매핑되어 데이터가 저장되는 자료형으로, 객체(object)와 비슷한 구조로 이뤄져 있다. 공부하면서 느낀 가장 큰 차이점은, object 와 달리 forEach() 함수를 적용할 수 있다는 점이다. forEach() 함수를 적용하면 Map() 객체의 value 가 iterable 하게 리턴된다. 물론 object 도, Object.keys(obj) 함수를 사용하면 forEach() 를 적용할 수 있지만, key 값을 기반으로 iterator 가 돈다는 차이점이 있다. Object와 Map 비교 1. Object의 키는 Strings이며(only strings), Map의 키는 모든 값(any)을 가질..
2021.08.25 -
포워드 프록시 와 리버스 프록시 (forward proxy, reverse proxy)
들어가기 전에 본 포스팅은 HAProxy 를 설명하기 위한 빌드업 단계로, proxy 와 forward proxy, reverse proxy 의 전반적인 내용을 다룹니다. Proxy 는 무엇인가? HAProxy 를 설명하기 전, 우선 Proxy(프록시)의 의미를 알아보겠습니다. proxy 는 대리, 대리인이라는 뜻으로 proxy server 는 본 서버를 대신하여 어떤 일을 행하는 서버임을 유추할 수 있습니다. 웹은 클라이언트에서 서버로, 서버에서 클라이언트로 통신하며 데이터를 전달합니다. 이때 필연적으로 중복되는 데이터를 반복하여 전달하는 상황이 발생하는데, 이렇게 동일한 요청을 매번 처리하는 것은 곧 리소스 낭비 와 서버의 부하 로 이어집니다. 때문에 본 서버에 도달하기 전에 새로운 서버(proxy ..
2021.08.24 -
210823 개발기록: javascript 로직 변경으로 코드 줄이기
이걸 리팩토링이라 부르는지 모르겠지만 (오히려 클린코드에 가깝나?), 백엔드 로직 처리 코드를 대량으로 줄였다. ☑️ Old way 여기서 코드가 길어진 이유는, MBTI 형식으로 데이터를 리턴하기 위해 "E, I", "N, S", "F, T", "P, J" 순서로 데이터를 정렬하기 때문이다. 여기서는 정렬 대신, resultObj 라는 객체를 만들어, MBTI 순서를 하드코딩 하는 형식으로 구현했다. // old way saveAnswers(resultArray) { let mbti = {} resultArray.forEach(result => { mbti[result] = (mbti[result] || 0) + 1 }) const resultObj = { "IE": '', "SN" : '', "TF"..
2021.08.23 -
210822 개발기록: CORS 와 http:// (URI scheme, 스킴)
❌ cors 이슈 front 단에서 axios 로 api 를 호출할 때 CORS 이슈가 발생했다. back 단(nestjs) 에서 app.enableCors() 처리를 해주었음에도 cors 가 발생하여 의아했는데, 이유는 front 에서 호출시 url의 문제였다. // wrong way await axios.post("localhost:4000/hospital/postAnswers", { ... }) // right way await axios.post("http://localhost:4000/hospital/postAnswers", { ... }) url 에 http:// 를 붙여주냐 아니냐의 차이임을 알게 됐다. ✅ 원인 아래 그림을 참고하면, http 는 scheme 의 해당되는 영역으로 프로토콜을..
2021.08.23 -
210821 개발기록: 사이드프로젝트 트러블슈팅 기록
React router 처리를 하기 위해 Link 태그를 사용했다. 그런데 아래 코드에서 명시한대로 /resultpage 주소로 리다이렉션 될 거라 생각했는데, url 에 변경이 없었다. 🌿 첫번째 케이스의 이유는 div 태그에서 선언한 onClick() 에 있었다. 라우팅 처리가 되기 이전에, onClick() 함수를 먼저 타버리면서 로직이 실행됐다. 그렇기 때문에 원하는 방향으로 라우팅 처리가 이뤄지지 않았다. ToNextStep(e)}> {answerB} 🌿 두번째 케이스의 이유는 클릭하는 위치의 문제였다. ToNextStep(e)}> {answerA} 주황색 하이라이트 부분은 Link 태그의 영역이고, 그 바깥 부분은 div 에 해당 (Link 에 해당되지 않는) 되는 부분이다. 개발 의도는 버튼..
2021.08.22 -
210820 개발기록: 자바스크립트 in 연산자, Switch~case 문에서의 OR 조건
❌ 자바스크립트 in 연산자 : 잘못 알고 있었던 점 switch(true) 분기문을 사용하기 위해 case 구문에 in 연산자를 적용했다. 배열에 속한 원소값을 in 연산자 앞에 명시하여, 해당 원소가 배열에 존재하면 true 를 , 그렇지 않으면 false 를 리턴할 것이라 생각했다. 아래 코드에서 적용한 In 연산자가 당연히 제대로 작동할 것이라 생각했지만 결과적으로 분기를 타지 않았다. const result = [] const IE = ["I", "E"] const SN = ["S", "N"] const TF = ["T", "F"] const JP = ["J", "P"] const switchResult = (key) => { // key = "I" || "E" || "S" || "N" ... ..
2021.08.20 -
[nestjs error] No repository for "repository" was found. Looks like this entity is not registered in current "default" connection?
🙋🏻♂️ 상황 typeorm-model-generator 를 이용하여 db 테이블을 엔티티로 자동 생성하면서 아래의 에러가 발생했다. No repository for "StudyInfo" was found. Looks like this entity is not registered in current "default" connection? 분명 해당 repository 인 Studyinfo 엔티티는 생성됐는데 왜 이런 에러메시지가 뜨는 것일까. 에러메시지를 확인해보면, current "default" connection 에 해당 엔티티가 등록되어 있지 않다고 한다. 그렇다면 "default" connection 은 어디서 설정을 해둔 것인지 확인해야 한다. 👋🏻 원인 바로바로 ormconfig.json ..
2021.08.18 -
210817 개발기록: nestjs dto (feat. whitelist:true)
📗 whitelist:true 일 때 DTO의 어노테이션이 미치는 영향 이런 DTO에 맞게 데이터가 들어오는지 테스트를 해봤는데, 값이 제대로 들어오지 않았다. export class CreateStudyDto{ title: string; subtitle: string; purpose: string; dateTime: string; curriculum: string; noti: string; apply: string; } 이유는 @IsString() 어노테이션을 붙여주지 않았기 때문이다. 이유는 main.ts 에서 validator, 그중에서도 whitelist : true 를 사용했기 때문이다. app.useGlobalPipes(new ValidationPipe({ whitelist: true, tra..
2021.08.17