전체 글 (25) 썸네일형 리스트형 [23.11.04] LEFT JOIN과 WHERE IS NULL을 활용한 그룹 별 최상단행 뽑기 글의 목적 서브쿼리를 사용하면 성능상으로 문제가 있어서 JOIN으로 해결해야할 경우 문제가 그룹별 최상단 1개의 행만 뽑으면 되는 경우 LEFT JOIN과 WHERE IS NULL을 활용하여 해결하는 방법은 기록해두면 좋을 것 같아서 단 그룹당 2개의 행을 뽑으려면 이 방법으로는 안됨. 본론 Column name Type Nullable REST_ID VARCHAR(5) FALSE REST_NAME VARCHAR(50) FALSE FOOD_TYPE VARCHAR(20) TRUE VIEWS NUMBER TRUE FAVORITES NUMBER TRUE PARKING_LOT VARCHAR(1) TRUE ADDRESS VARCHAR(100) TRUE TEL VARCHAR(100) TRUE 대충 위와 같은 식당정.. [23.11.03] react alert나 console이 2번 뜨는 경우 에러 react에서 alert나 console이 2번 생성됨. 본문 심각한 에러는 아니지만 모르고 있다면 꽤 오래 고생할 것 같아서 기록함. react를 쓰다보면 console이 2번 찍히는것을 보고 이걸 없애려고 시도하지만 스스로 해결하긴 어려움. 결론 react에서는 Dom에서 react.strictMode라는것으로 한번 먼저 확인하는 과정이 있음. 이것은 개발모드에서만 적용됨. 따라서 production에서는 알아서 해결되는 문제이므로 크게 걱정할 필요 없다! [클린 아키텍처] 1. 설계와 아키텍처 두 가지 가치에 대한 정리 글의 목적 SW가 돌아가도록 만드는것은 누구나 할수 있다. 하지만 제대로 만드는것은 다른 이야기 이다. 백엔드를 독학하면서 느낀점은 좋은 코드는 코드블록 수준에서 나오는것이 아니라 좋은 아키텍처에서 나온다는 느낌. 그래서 클린 아키텍처라는 책을 nestjs 책을 읽다가 추천받아서 읽어보면서 느낀점을 정리하려고 함. 본론 1. 설계와 아키텍처란? 설계와 아키텍처 둘 사이에는 어떠한 차이도 없다. 1.1. 목표란? 소프트웨어 아키텍처의 목표는 필요한 시스템을 만들고 유지보수하는 데 투입되는 인력을 최소화하는 데 있다. - 클린 아키텍처 7p 좋은 SW 설계의 목표는 고객의 요구사항은 만족하면서 비용이 낮은 설계이다. 1.2. 실제사례 회사는 성장중이다. 개발자도 늘어난다. 다만 코드 한줄이 가진 비용도 점점.. [23.10.31] 테스트 자동화 nestjs 글의 목적 SW 테스트에 대한 전반적인 과정을 이해하고 정리하는것이 목적 V 모델을 이해하며 서비스 고도화에 따른 TDD의 중요성에 대해서 파악하려고 함. 본론 1. SW 테스트 모든 것은 항상 실패한다. -Werner Vogels, AWS CTO AWS CTO의 말처럼 버그가 없는 Software는 존재하지 않고 모든것은 실패하게 되어있다. 그만큼 장애대응이 중요하다라는 말을 하고 싶다고 생각된다. 모든 service는 릴리스 전에 테스트를 통과하고 소비자에게 제공되는것이 맞음. SW 테스트는 버그가 없다고 확신하는 과정이 아니라 service품질이 소비자에게 제공될 만큼의 수준을 보장한다는 의미이다. QA의 A는 Assurance임! 그렇기 때문에 테스트에 너무 목숨걸필요도 없고 그럴수도 없고 완벽하.. [23.10.31] js(자바스크립트) 스코프 글의 목적 객체 프로토타입까지 정리를 했고 상속을 다루기 앞서 스코프를 먼저 다루고 그것을 바탕으로 스코프체인을 다루면서 상속까지 다루기 위한 목적. js를 사용하는 개발자라면 스코프는 매우 중요한 개념이기 때문에 한번쯤은 정리가 필요. 본론 1. 스코프 스코프(유효범위)는 const, let, function을 사용해본 독자라면 이미 스코프를 경험한 것이다. 즉, 변수의 스코프는 함수의 매개변수가 함수 내부에서만 참조할 수 있고 외부에서는 참조할 수 없다는 것. const add = (a, b) => { return a + b; }; 위와 같은 함수가 있을때 a와 b를 log 찍어보면 변수의 스코프에 대해서 한번에 이해가 간다. const add = (a, b) => { console.log("a:",.. [23.10.29] nodejs, DI, Ioc, nestjs 글의 목적 nodejs에서 DI(Dependency Injection)를 더 잘 이해하고 nestjs에서 DI, Ioc의 효율성에 대해서 정리하기 위함. 본론 1. Dependency (의존성) Dependency(의존성)란 용어가 좀 어렵게 느껴지실수도 있지만 expressjs나 nestjs로 간단한 todolist 사이드프로젝트를 진행했던 독자라면 모두 의존성을 가진 객체를 사용했을거라고 생각한다. 아마도 controller가 service에 의존하고 있었을거다. 혹시 의존이라는 단어가 어렵다면 controller를 사용하기 위해서는 service가 꼭 필요하다라고 생각하자! Dependency에 대해 다시 정의를 내려보자면 클래스나, 함수, 즉 어떠한 A객체(js는 다 객체다)를 사용하기 위해서 B.. [23.10.27] nestjs typeorm synchronize table already exists Error 0.0.2 에러 nestjs와 typeorm을 사용하여 여러가지 user와 관련한 테스트 + 공부 목적의 개발중 synchronize: true 로 했을때 변경점을 파악해서 적용하는것이 아닌 기존에 table의 충돌이 되는 에러가 발생하였다. 본론 처음에 개발할때 typeorm은 0.3.7 nestjs/typeorm은 9.0.0버전으로 개발을 진행하였다. 1.1 synchronize synchronize 옵션을 간단하게 설명하자면 서비스를 구동할 때 소스 코드 기반으로 db 스키마를 동기화할지를 물어보는 간단한 옵션입니다. 근데 이 synchronize옵션이 중요한 이유가 true로 해두면 소스코드상의 테이블의 변화, 예를 들어 user의 id타입이 string에서 number로 바뀌었다면 그 변경점을 파악해서 테.. [23.10.25] Promise 함수 합성(Monad, Kleisli Composition) 글의 목적 myfx라는 node에서 내가 사용하기 위해서 정리한 함수를 더 잘 이해하고 함수합성에서 어떤 목적을 가진 합성인지를 정리하려고 함. 그때 필요한 용어인 Monad와 Kleisli Composition에 대해서 정리하려고 함. 본론 1. Monad 내가 정리하는 Monad는 완벽한 정의가 아니며 완벽한 Monad를 이해하고 싶다면 책을 보는것을 추천한다. 이 글에서는 합성과 관련된 Monad의 의의에 집중하려고 한다. Monad는 일종의 컨테이너. 즉, 박스다. Monad라고 하는 것은 박스가 가진 메서드를 활용해서 함수 합성을 진행하는 것 그리고 박스(Monad)는 여러 연산에 필요한 재료를 담고 있다. 예를 들어 보자, 함수 add1과 mul이 있다 const add1 = a => a + .. 이전 1 2 3 4 다음 목록 더보기