TIT (Today I Troubleshot)
10/12 (목) Puppeteer에 발생한 CORS 문제 우회 성공 TIL, TIT
공부한 것LeetCode #106. Construct Binary Tree from Inorder and Postorder TraversalLeetCode - The World's Leading Online Programming Learning PlatformLevel up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.https://leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/description/ChatGPT에게 내..
8/24 (목) 퀴즈 풀이 디렉토리에 TypeScript를 적용하다 TIL, TIT
공부한 것LeetCode #141. Linked List CycleLeetCode - The World's Leading Online Programming Learning PlatformLevel up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.https://leetcode.com/problems/linked-list-cycle/description/?envType=list&envId=rus4c4ci⇒ 주어진 링크드 리스트에 순환하는 지점이 있는지를 검사하는 문제다. 바로 얼마전에 배운 Floyd’s Tortois..
8/23 (수) Binary search 와 Bit mask 해법 TIL
공부한 것LeetCode #287. Find the Duplicate Number LeetCode - The World's Leading Online Programming Learning PlatformLevel up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.https://leetcode.com/problems/find-the-duplicate-number/description/?envType=list&envId=rus4c4ci내가 푼 방식과 다른 해답을 8개 더 추가하였다. 구상 중문제풀이 코드 제출 후 실행 ..
8/22 (화) LeetCode API 조사중 TIL, TIT
공부한 것LeetCode #287. Find the Duplicate Number LeetCode - The World's Leading Online Programming Learning PlatformLevel up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.https://leetcode.com/problems/find-the-duplicate-number/description/?envType=list&envId=rus4c4ci어제 배운 Floyd’s Tortoise & Hare Algorithm을 응용하는 문제..
8/21 (월) 풀이 제출 후 소요 시간 시각화하기 TIL, TIT
공부한 것LeetCode #234. Palindrome Linked List(팰린드롬 링크드 리스트)를 이어서 풀었다. LeetCode - The World's Leading Online Programming Learning PlatformLevel up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.https://leetcode.com/problems/palindrome-linked-list/description/?envType=list&envId=rus4c4ci지난 주 두 가지 풀이법은 공간을 O(N)만큼 추가로 ..
3/28 화 (최종 발표 PPT 제작 및 자료 조사) TIL, TIT
(최종 프로젝트 진행중) 한 일: 최종 PPT 자료 만들기 ‘주별 진척도’ 그리기 ※ 이하는 스스로 공부하며 적어둔 노트이며 불확실한 내용이 있을 수 있습니다. 학습용으로 적합하지 않음을 유념해주세요. ※ [TypeORM] queryBuilder의 andWhere 조건문에 삼항 연산자를 적용하고 싶었다 ✔️이것과 비슷한 조건절을 queryBuilder로 구현하고 싶었다: // 커서 페이지네이션 async getPostsByCursor(endCursor?: number) { const isFirstPage = !endCursor; const [posts, total] = await this.postsRepository.findAndCount({ take: 7 + 1, where: !isFirstPage ?..
3/27 월 (Timezone 트러블슈팅 정리중) TIL, TIT
(최종 프로젝트 진행중)내일 할 일 시간 차 트러블슈팅 정리하기 ※ 이하는 스스로 공부하며 적어둔 노트이며 불확실한 내용이 있을 수 있습니다. 학습용으로 적합하지 않음을 유념해주세요. ※ 시간 차 트러블슈팅중…UTC 적용전…현재 사용하는 Timezone 정리: 분류타임존비고AWS RDS DBMSUTCTypeORMZ = UTCTypeORM에게 너가 연결할 DBMS는 UTC로 되어있다! 라고 알려주는 거죠.옵션에 timezone=’Z’라고 추가함서버컴퓨터(Heroku) UTC아! 이 컴퓨터의 ‘로컬 타임’이 KST나 en-US 등이 아니고, UTC로 되어 있다는 뜻이었다..! 여기서 프론트에서 “Asia/Seoul”로 바꿔서 출력해주는 게 맞는 것이었다. 개발컴퓨터KST무시하자 = “Asia/Seoul”로 ..
3/25 토 (중복 렌더링 트러블슈팅 완료) TIL, TIT
(최종 프로젝트 진행중) 할 일: 3번씩 HTTP 요청 보내던 것 시간차 조사하기 ※ 이하는 스스로 공부하며 적어둔 노트이며 불확실한 내용이 있을 수 있습니다. 학습용으로 적합하지 않음을 유념해주세요. ※ 문제 상황: 페이지를 호출할 때 첫 번째 GET 요청 후 마지막에 2번의 똑같은 요청이 더 생긴다. 다른 팀들에도 물어봤는데 다들 이런 현상은 없다고 한다. 튜터님과 함께 고민해봤지만 이유를 알 수 없어 일단 물러나왔다. 저녁이 되고 우리 팀원 중 한 명의 로컬 환경(localhost)에서는 이런 현상이 없다는 점에 방점을 두고 조사를 이어나갔다. 어떤 페이지에 들어가든 이런 현상이 발생한다는 것도 힌트가 될 수 있을 것 같았다. 우리 프로젝트는 테두리 템플릿을 두고 가운데 내용물을 바꿔 끼워가며 페이..
3/17 금 (<img> 경로 설정 문제) TIL, TIT
(최종 프로젝트 진행중)할 일 Date input타입을 서버로 보내기 시작 날짜와 끝 날짜를 requests 테이블에 저장하기 ‘모집중|모집완료’ 컬럼을 requests 테이블에 추가하기 ‘작성 완료’ 버튼 ajax 연결하기 수정하기 페이지에 기본 글과 함께 불러와놓기 작성자 본인이면 수정하기 및 삭제 버튼이 나타나도록 하기 ‘수정 완료’ 버튼 ajax 연결하기 ‘모집중’→’모집완료’로 바꿀 방법 생각하기 삭제는 마이페이지에 가서 하도록 할 생각. ? user에게서 받은 집주소로 geoCoder.address…()으로 좌표와 동네명 얻기. ‘처음에 테이블 구조를 단순히 address만 있는 항목으로 만들어서 아직 수정하지 못했다” ※ 이하는 스스로 공부하며 적어둔 노트이며 불확실한 내용이 있을 수 있습니..
3/14 화 (ejs는 일일이 눈으로 검사해서 에러를 찾아야 함이 불편) TIL, TIT
아래처럼 의 최하단에 두면 위와 같은 에러가 난다. ... 전에 script는 최대한 아래에 두라고 했던 것 같은데 왜 얘는 반대로 작동하고 있는지 모르겠다. [Nest.js] cookie로 하는 로그인 인증 처리하기req.user를 계속 못 받아오다가 공식 문서 첫머리에 바로 cookie-parser가 전역으로 필요하다고 해서 설정해주니 해결됐다. Documentation | NestJS - A progressive Node.js frameworkNest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript a..
3/12 일 (req.user 정보를 불러오지 못할 땐 app.module 확인하기) TIL, TIT
(최종 프로젝트 진행중)한 일: queryBuilder 문서 보던중. 두 번 조인과 그 때 select하는 법, (https://typeorm.io/select-query-builder#join-without-selection) 그렇게 가져온 ‘정재된 결과물’을 partial 타입으로 넘겨서 테스트 할 것인지… 그렇다면 어떻게.. …? 테스트 코드 강의 노트와 유튜브 보던 중 (나중에 볼 만한 것)로그인 e2e. jwt토큰 검증으로 HttpStatus.FORBIDDEN에서 OK로 만들기NestJS e2e TestingIn this video we primarily work on a integration test for our authentication controller with Super Test. W..
3/11 토 (모듈 하나 e2e테스트 성공, Date타입의 toString 종류 총정리) TIL, TIT
(최종 프로젝트 진행중) ※ 이하는 스스로 공부하며 적어둔 노트이며 불확실한 내용이 있을 수 있습니다. 학습용으로 적합하지 않음을 유념해주세요. ※[Nest.js][Jest] 에러 TypeError: this.repository.create is not a function발생 상황: messages.service.spec.ts를 실행하는데 messages.service.ts 소스코드에 정의한 this.repository.create()이라는 TypeORM Repository의 기본 메소드가 인식되지 않는다고 함. 에러 메세지 전문: FAIL src/messages/messages.service.spec.ts (7.845 s) MessagesService getMessageById √ should be d..
3/4 토 (TypeORM 소스 파일과 공식 문서를 함께 후루룩) TIL, TIT
(최종 프로젝트 진행중)어제의 Nest.js에 이어 오늘은 TypeORM을 깊게 들여다봤다. 공식 문서를 보러가기 전에 TypeORM의 소스 파일들을 직접 옮겨다니며 이리저리 이해해보고 가설을 세워보고 무식하게 실험으로 증명해보며 적고 정리하는 시간을 가졌다. 노트에 정리한 양이 너무 많기도 하고 시간이 오래 걸려서, 과연 효율적으로 공부한 것인지 의문이긴 하지만 덕분에 TypeORM이 어떻게 구성되어있는지 전반적으로 이해할 수 있었다. 어제 Nest.js보다 더 제대로 개념을 잡게 된 것 같다. 내일(모레) 할 일: One to Many 등 관계 설정법을 마저 알아보고 Entity 작성하기 GitHub Actions 대략이라도 세팅 해보고 팀원과 얘기 나누기 ※ 이하는 스스로 공부하며 적어둔 노트이며 ..
2/15 수 (Ajax를 안 거치고 로그인이 필요한 페이지에 접근하려면 cookie밖에 답이 없다) TIL, TIT
(막간 보충 공부중)오늘 한 것: TDD 방식으로 FizzBuzz 문제 풀기FizzBuzz in NodeJS and Jest, with TDD (Kata 1)Repo used in the video: https://github.com/GA1/algo-tdd-starters Code from the video: https://github.com/GA1/youtube-videos/blob/master/src/katas/001-fizz-buzz.js Find more about the repo at: https://medium.com/@kamilnguyenvan/e02ecf357892 A short introduction to a programming technique - Test Driven Developm..
2/4 토 (ejs와 `express-ejs-layouts` 동시 사용시 가능한 url 경로는 오직 query string 방법뿐) TIL, TIT
프로젝트 폴더 구조public/css/styles.css 이걸 해결하는 다른 방법이 있을지도 모르겠다. 다만 지금은 일단 경로명에 슬래시(/) 대신 언더바로 표현하는 것으로 넘어가기로 한다. 에러: ejs 파일명에 점(.)을 넣을 시 res.render()로 인식하지 못함또 파일명을 admin.product.list.ejs 같이 설정하면 res.render로 파일명을 넣어줄 때 “list 모듈을 찾지 못했음” 에러가 뜬다. ⇒ 파일명을 admin_product_list.ejs로 바꾸고 res.render(’admin_product_list’)와 같이 호출하니 잘 됨. EJS 기초 공식 문서: EJS'E' is for 'effective'. EJS is a simple templating language ..
2/2 목 (다대다 관계 테이블은 이렇게 짜면 된다) TIL, TIT
(베이커리 이커머스 프로젝트 2일차)오늘 한 일 어제 만든 DB 스키마를 보강하고 sequelize 모델을 만들었다. 깃험에 pull 완료. ⇒ ‘product’와 ‘cart’ 테이블의 관계에서 Many-to-Many를 굳이 적용해야 하나를 고민하다가 (mapping 테이블이 하나 더 만들어진다는 게 꺼려졌다) 이게 사실은 One-toMany 관계라는 것을 깨달았다. 기존의 ‘cart’ 테이블 자체가 ‘user’와 ‘product’를 Many-to-Many로 연결지어주는 매핑 테이블이었던 셈이다. ‘cart’라는 테이블명 때문에 더 헷갈렸던 것 같아서, ‘cart-item’이라고 이름을 바꿔주었다. ⇒ 참고로 user와 product 테이블이 Many-to-Many인데 중간에 cart_item이 매핑 테..
1/31 화 (타입스크립트 엔티티 모음과 분류) TIL, TIT
(타입스크립트 공부중)배운 것:타입스크립트에서 keyof과 typeof과 그 사용례에 대해 더 체계적으로 정리해봤다. (어제치 TIL에 업데이트함)타입스크립트의 엔티티를 여러가지로 구분지어 보았다. 예를 들어 ‘타입 선언’ 자리에 올 수 있는 엔티티는 열거형(enum)과 타입(type), 인터페이스, 원시형뿐이다. (아마도)객체의 “계산된 프로퍼티(Computed property)” 방식을 이용해 프로퍼티 키 값을 런타임시에 동적으로 할당해줄 수 있다. 느낀 점지난 이주, 타입스크립트를 새롭게 공부하며 도무지 감이 잡히지 않는 기분이었다. 어렵긴 어려운데 뭔가 납득도 안 되는 느낌? 이쪽 구멍을 막으면 저쪽이 뚫리고 저쪽을 막으면 다른 곳이 고장나는 항아리를 어떻게든 절묘하게 완성시키라는 것 같았다. 어..
1/28 토 (2차원 배열 만들기, 반복문 순회 대상 업데이트하기) TIL, TIT
(프로그래머스 문제 푸는 중)코딩테스트 연습 - 빛의 경로 사이클각 칸마다 S, L, 또는 R가 써져 있는 격자가 있습니다. 당신은 이 격자에서 빛을 쏘고자 합니다. 이 격자의 각 칸에는 다음과 같은 특이한 성질이 있습니다. 빛이 "S"가 써진 칸에 도달한 경우, 직진합니다. 빛이 "L"이 써진 칸에 도달한 경우, 좌회전을 합니다. 빛이 "R"이 써진 칸에 도달한 경우, 우회전을 합니다.https://school.programmers.co.kr/learn/courses/30/lessons/86052프로그래머스 문제를 중간 정도까지 해결했다. 예시로 나온 테스트 케이스들은 결과값이 잘 나오는데 실제 테스트케이스들은 하나도 통과를 못하고 런타임 에러를 낸다. …한글 변수명 때문에 그런가?또 기존의 산문같은 ..
1/26 목 (@types/Node가 정확히 뭔지 알게 되어 속이 시원함) TIL, TIT
(TypeScript 공부 중)배운 것:타입스크립트의 Enum. 일단 Enum에는 숫자형과 문자형이 있다. 타입스크립트 컴파일러는 사실 index.d.ts 파일(들)을 찾아내는 것이 주 목적이고 그러기 위해 엄청난 노력을 한다(?!) → 컴파일러가 어떻게 필요 모듈들을 찾아 타입을 참고하여 트랜스파일 하는지 대략적인 순서를 알게 되었다. @types/’라이브러리’ 라는 경로명은 역시 컨벤션이었다. 많은 자바스크립트 라이브러리가 타입스크립트 선언 보조 라이브러리를 제공할 때 약속처럼 만들어 넣는. 이 ‘보조’ 라이브러리는 타입스크립트 환경에서 자바스크립트 모듈을 실행하기 위해 타입만 몽땅 정의해서 넣어준, 말 그대로 ‘선언 파일(Declaration files)’이다. 확장자는 .d.ts. 느낀 점:사실 ..
1/25 수 (CORS 정책, 생각보다 쉬웠다) TIL, TIT
(TypeScript 공부 중)공부 중인 타입스크립트 index.ts 전문: // src/index.ts // 1. 필요 모듈 import dotenv from "dotenv"; import express, { Request, Response } from "express"; import cors from "cors"; import helmet from "helmet"; import { itemsRouter } from "./items/items.router"; dotenv.config(); // 2. 앱 변수 선언 // PORT 설정값이 없으면 서버 종료 if (!process.env.PORT) { process.exit(1); } // PORT를 string으로 받고, 10진수로 parseInt함. c..