일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- typeORM
- JavaScript
- MySQL
- cookie
- class
- react
- MongoDB
- 자료구조
- game
- AWS
- 정렬
- dfs
- mongoose
- OCR
- TypeScript
- Sequelize
- Queue
- Dinosaur
- Express
- jest
- Bull
- flask
- 게임
- nodejs
- nestjs
- Nest.js
- Python
- 공룡게임
- GIT
- Today
- Total
목록WIL (17)
포시코딩
이번 주 알게 된 점 TypeORM softDelete 데이터 가져오기 softDelete 후 deletedAt 날짜가 추가된 데이터를 제외할 생각만 해봤지 가져올 생각과 상황은 한 적이 없는데 이번에 모임 -> 채팅 기능을 구현하며 새롭게 chat 관련 table을 운용하기 보단 softDelete를 통해 meetup의 데이터를 그대로 쓰면서 chat이라고 지칭하는 아주 깜찍한 아이디어를 채용했다. 그 과정에서 softDelete 된 데이터를 가져오는데에 고생을 좀 했는데 결론만 말하자면 createQueryBuilder()를 사용할 때 아래의 키워드를 사용하면 된다. .withDeleted() .where('deletedAt IS NOT NULL') withDeleted()만 쓸 경우 softDele..
이번 주 알게 된 점 MySQL의 timezone 문제 원격으로 MySQL을 쓸 일이 잘 없어서 그동안 timezone 문제가 발생하는 부분에 대해 기본으로 세팅해주는 KST 한국시간 기준으로만 생각해왔는데 세팅된 RDS를 뜯어보니 timezone이 UTC였고, 이에 따라 TypeORM이 동작하는 방식도 조금 달라지는걸 알았다. select @@global.time_zone, @@session.time_zone, @@system_time_zone; timezone은 위 코드를 통해 확인 가능 윈도우와 맥에 따라 나오는 글자가 다르다고 한다. 맥 기준 KST 이걸 local의 경우 UST로 바꿔줘야 하는데 생각보다 방법을 찾기가 어려워 일단 나중에 알아보기로 한 상태다. 만약 나중에 다시 새로운 프로젝트에..
이번 주 알게 된 점 event-emitter https://4sii.tistory.com/457 3월9일 - @nestjs/event-emitter 개요 Node.js의 Event Emitter는 특정 이벤트에 리스너 함수를 달아서 이벤트가 발생했을 때 이를 캐치할 수 있도록 만들어진 api라고 한다. 오늘은 Nest.js에서 Event Emitter를 쓰는 법을 알아보고자 한다. 4sii.tistory.com 이번주에는 아프기도 했고 지금까지 배웠던 걸 발산하는 시간이라 크게 새롭게 배운건 없다. 다만 진짜 새롭게 배운게 딱 하나 event-emitter인데 서버 내부에서 socket 사용하듯 메서드끼리의 통신이 가능한 기능이었다. 생각보다 유용하게 쓰이는 부분이 있는 것 같은데 일단 나는 Bull ..
이번 주 알게 된 점 Authentication vs Authorization 차이 Authentication(인증) id, pw 등을 받아내 사용자의 신원을 파악하는 프로세스이다. 인증 절차를 통과하면 해당 유저임을 증빙할 수 있는 JWT 토큰을 받는 식으로 아래 authorization(승인)을 위한 증빙서를 발급 받는다. ex) 로그인 Authorization(승인) 사용자가 특정 함수나 리소스에 접근할 수 있는지 파악하는 프로세스이다. 위의 authentication(인증)을 통해 증빙서를 발급 받은 것을 통해 인증 절차를 통과했다는 걸 증명할 수 있다. ex) 로그인 후 마이페이지 접속 등 인증된 유저임을 증명해야 하는 서비스 Debounce vs Throttle 자주 사용되는 이벤트나 함수들의..
이번 주 알게 된 점 Maps API 사용 시 Client ID 관리 https://4sii.tistory.com/425 Naver Maps API Client ID 훔쳐 쓰기 개요 Naver Maps API 를 사용하다 보니 public/index.html에서 script를 로드하는데 내 Client ID가 그대로 노출되고 있는걸 발견해서 어떻게 숨겨서 요청을 할 수 있을까, 다른 사이트는 어떤 방법을 쓰고 있 4sii.tistory.com 위 포스팅에서 작성한 내용과 같이 script를 통해 API 데이터를 세팅하는데 내 Client ID가 노출되는게 거슬리는 상황이 있었다. 실제 배포를 하여 서비스하게 되면 기존의 테스트용 localhost를 허용 URI에서 지우는 방식으로 결론을 짓긴 했는데 여러..
이번 주 알게 된 점 여러 validation 처리 방법 https://4sii.tistory.com/402 2월8일 - express에서 validation 다루기 (joi) 개요 이전부터 프론트엔드로부터 전달 받는 값들에 대해 프론트엔드에서 validation 처리가 진행됐다는 가정하에 (귀찮은것도 있고) 백엔드에서는 최소한으로만 진행을 해왔었다. 하게 되더라도 4sii.tistory.com 해당 포스팅에서 고민 결과 joi를 사용하기로 결정했었는데 nest를 공부하다보니 nest에서는 class-validator, class-transformer를 사용하는듯 한데, 이걸 세부 글자 수나 형태 등에 대한 체크를 할 때는 joi를 곁들이는지 class-validator의 세부 기능이 있는지는 좀 더 알..
이번 주 알게 된 점 TypeScript 앞으로 특정 함수를 사용할 때는 항상 Type 확인 ex) console.log(), alert()는 받는 파라미터에서부터 다르다! MySQL datetime datetime 형식에 데이터를 넣을 때 알아서 국제 표준 시간으로 넣어짐. 꺼내쓸 때 JavaScript의 new Date(str).toLocalString new Date(str).toLocalDateString new Date(str).toLocalTimeString toLocal~ 함수를 사용하자 JavaScript 객체 구조 분해 할당 재작명 const { apple, banana, code: pepsi } = request.body; console.log(code); // Error console..
이번 주 알게 된 점 TypeScript Tuple: 고정된 배열의 길이, 각 요소의 지정된 타입 형식 const player: [string, number, boolean] = ["seonghun", 1, true] Enum: 열거형. 특정 값들의 집합 기억안나는건지 안다뤄봤는지 Java에는 기본 자료형으로 있는 기능이라 함. JavaScript에는 없어서 TypeScript 와서야 쓸 수 있게 되었는데 상당히 깊이 있는 자료형인듯 싶다. 하지만 사용에 조심해야할게 enum은 tree-shaking으로 사용되지 않는 것들에 대한 정리 대상에 포함되지 않기 때문에 const enum과 같은 형식으로의 사용을 추천한다. 좀 더 구글링해보니 차라리 const enum보다 union type의 사용을 추천하는..
이번 주 알게 된 점 JavaScript 쿠키 저장 document.cookie = 'key=value' Map 자료형 key, value 꺼내기 const m = new Map(); m.set('a', 1); m.set('b', 2); m.set('c', 3); m.set('d', 4); m.forEach((value, key) => { console.log(value, key); }) // 1 a // 2 b // 3 c // 4 d MySQL 문법 LIKE SELECT student_name FROM students WHERE (track = 'Node.js' OR track = 'React') OR (student_name like '김%' OR student_name like '%호') CASE..
이번 주 알게 된 점 Python 다루기 in, not in print('c' in 'abc') # True print('e' not in 'abc') # True sort(), sorted() a = ['b', 'c', 'a', 'd'] a.sort() print(a) # ['a', 'b', 'c', 'd'] b = ['b', 'c', 'a', 'd'] b = sorted(b) print(b) # ['a', 'b', 'c', 'd'] sort(), sorted()의 매개변수 reverse=True(내림차순) l = [15, 22, 8, 79, 10] l.sort(reverse=True) print(l) # [79, 22, 15, 10, 8] key l = ['banana', 'code', 'dog', ..