일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- nestjs
- 2024년 회고록
- 해커톤
- mysql boolean
- TypeScript
- Type Challenge
- 타입챌린지
- 월간cs
- type-safe configservice
- HTTP
- 코딩테스트
- 타입스크립트
- network
- typescript type challenge
- 와글와글
- 이펙티브 타입스크립트
- typeorm
- 타입 챌린지
- 회고록
- 스터디
- configmodule
- configservice
- node.js
- 굿바이 2024년
- mysql
- npm
- microsoft azure openai
- 백엔드
- 회고
- TypeScript 타입챌린지
- Today
- Total
목록전체 글 (60)
iamkanguk.dev

문제 https://github.com/type-challenges/type-challenges/blob/main/questions/00014-easy-first/README.md type arr1 = ['a', 'b', 'c'] type arr2 = [3, 2, 1] type head1 = First // expected to be 'a' type head2 = First // expected to be 3 Expect, Expect 123>>, Expect, Expect, 풀이 // S1 type First = T extends [] ? never : T[0]; // S2 type First = T["length"] extends 0 ? never : T[0]; // S3 type First = T ..

문제 https://github.com/type-challenges/type-challenges/blob/main/questions/00011-easy-tuple-to-object/README.ko.md const tuple = ['tesla', 'model 3', 'model X', 'model Y'] as const; type result = TupleToObject // expected { tesla: 'tesla', 'model 3': 'model 3', 'model X': 'model X', 'model Y': 'model Y'} 풀이 type TupleToObject = { [V in T[number]]: V } How to Solve? T extends readonly any[]: any 타..

지금 TS를 사용하면서 백엔드 프로젝트를 진행하고 있는데 TS에 대해 겉핥기 식으로만 알면서 프로젝트를 하다 보니까 잘 사용하지 못하는 것 같다고 판단이 되었다. NestJS 오픈카톡방 커뮤니티에서 공유받아서.. 오늘부터 Type Challenge 라는 GitHub Repository에 들어가서 하루 또는 2일에 2문제씩 문제를 조금이나마 풀어보려고 한다. 문제 - https://github.com/type-challenges/type-challenges/blob/main/questions/00004-easy-pick/README.md 풀이 /** * (1) K는 T의 Key-Properties 이다 ==> MyPick * (2) K를 순회한다 ==> [B in K] (B는 K를 순회하면서 저장하는 변수..

현재 맵필로그 개발서버를 배포할 때 다음과 같은 Flow로 배포를 했다. Local 환경에서 build build 결과물인 dist 디렉토리를 파일질라를 통해 원격서버에 이동 PM2로 동작하고 있는 프로젝트 서버 reload 하지만 어느 순간부터 너무 귀찮기 시작했고 파일질라를 사용하는 시간이 너무 아까워서 자동배포를 구현해보았다. 원래는 GitHub Actions를 활용해서 Docker + CI/CD 작업을 하려고 했는데, 1인 개발이기도 하고 아직은 그정도까지는 필요하지 않겠다고 생각이 들었다. 그리고 요즘에는 거의 Code Deploy를 사용해서 배포 자동화를 적용하는데 나는 좀 다르게 하고 싶기도 했다. 그래서 1차 개발에서는 쉘 스크립트를 활용해서 자동 배포를 구현하고 2차 개발에서는 Docke..

오늘은 이번에 해커톤에 참여하고 나서 회고글을 적어보려고 한다. 생각보다 많은 것을 배웠던 것 같아서 포스팅을 작성하면서 쭉 정리하는 느낌으로다가 포스팅 작성에 임해보겠다. 1. 팀 구성 + 개발 시작 전 팀 빌딩 과정에서는 이제 팀장들에게 먼저 주제가 선공개가 되었는데 각 팀장별로 기획 내용과 구성원 개발 스택에 대해서 간략하게 설명하는 과정을 가졌다. 필자는 Node.js 스택이기 때문에 Spring을 사용하는 프로젝트는 사실 관심을 가지지 않았으며, Node 프로젝트만 좀 집중해서 들었다. Node 진영에서 선택할 수 있는 프로젝트는 몇가지가 있었다. 커피인: 커피챗처럼 커피 한잔에 고민을 공유할 수 있는 파트너를 가져보자. 잔디: Habit Tracker? 404 Not Found: Not Fou..

오늘은 맵필로그 프로젝트에서 로그아웃과 회원탈퇴 기능을 어떻게 구현했는지에 대해서 설명해보려고 한다. 먼저, 맵필로그에서는 카카오 로그인과 애플 로그인을 제공하고 있다는 것을 먼저 말씀드립니다! 크게 어렵지 않은 내용인 것 같아서 맛있는 거 드시면서 보셔도 충분합니당 ㅎㅎ 1. 로그아웃 기능 로그아웃 기능에서는 소셜쪽으로는 크게 기능구현을 할 게 없는 것 같다. 왜냐하면 애플 로그인은 회원탈퇴 시에만 Token을 Revoke 시켜주면 되기 때문에 따로 로그아웃 쪽에서는 할 게 없다. 그리고 카카오 로그인은 공식 문서를 보면 카카오에서 제공하는 Access-Token을 만료시키는 로직이 있는데 맵필로그 프로젝트에서는 카카오에서 주는 토큰을 따로 사용하지 않기 때문에 굳이 따로 처리하지는 않았다. 애플리케이..

예전에 UNITHON 이라는 해커톤을 참여한 경험이 있는데, 그 때는 진짜 개발의 ㄱ자도 모르고 해커톤의 ㅎ자도 모르고 참여해서 아쉬운 부분이 되게 많았다. 그래서 이번에 가천대학교 선후배님들이 준비해주신 해커톤 행사에 참여자로 확정이 되어서 수상까지 가능하다면 노려볼라고 한다 하핳.. 블로그는 그냥 필자가 쓰면서 어떤걸 준비해가면 좋을지?에 대해서 써보려고 한다. 예전에 해커톤하면서 아쉬움도 많았던 만큼 준비해가야할 사항들이 조금씩 머릿속에서 정리가 되는 것 같다. 1. 기본 준비물 필자는 이번 해커톤에 참여한다면 다음과 같은 준비물들을 챙겨갈 것 같다. 마우스, 마우스패드, 키보드, 노트북 거치대, 노트북 아이패드 (아이패드로 스크린 쉐어링하면 더 좋긴할 듯?) 각종 충전기들과 멀티탭 겉옷, 텀블러,..

코드를 작성하다가 빈 객체의 타입에 대해서 갑자기 궁금해지기 시작했다. 빈 객체에는 어떤 타입을 사용해야 할지 알아보자. 1. {} (빈 객체)의 의미 타입스크립트에서 빈 객체({})는 "any non-nullish value"를 의미한다. 다시 말해 null을 제외한 모든 값들을 허용한다는 의미이다. 실제로 다음과 같이 코드를 작성하면 에러가 나지 않는다. type EmptyObject = {}; const temp1: EmptyObject = 'hello world!'; const temp2: EmptyObject = 1111; undefined 값을 넣으면 에러는 발생한다. 프로젝트 코드를 작성하면서 이 부분을 의외로 많이 실수해서 정리하게 되었다.. 2. 어떻게 사용할 것인지? (1) 아무것도 ..

우리 맵필로그 프로젝트에서는 이제 배포를 슬슬 준비하고 있다. Android와 iOS 모두 준비하고 있는데 알아보니까 iOS 앱스토어 배포를 위해서는 로그인 기능을 제공할 경우에는 애플 소셜 로그인이 필수로 구현되어 있어야 한다고 한다. 그래서 오늘은 약 3일간 고생한 애플 로그인을 어떻게 구현했는지에 대해서 알아보려고 한다. 아마 NestJS로 구현을 하시는 분들은.. 아실 거지만 생각보다 자료가 많이 없다는 것을 느끼셨을 것이다. 그래서 필자는 Spring으로 구현한 개발자분들의 자료도 많이 참고했었다. 지금부터 쭉 설명을 해보도록 하겠다. 1. 사전 준비물 및 언급 - 애플 개발자 계정이 꼭 필요하다. 혹시나 애플 로그인 기능을 구현하고자 하는 분들은 개발자 계정을 꼭 구매하길 바란다. - 그리고 ..

오늘은 포스팅을 2개나 작성한다..ㅎㅎ 그만큼 몰랐던 것들을 오늘은 좀 많이 알게 된 것 같아서 뿌듯해서 그런 것 같다 (사실 별건 아니지만) 이전 포스팅에서 strict 모드를 추가하면서 많은 에러가 발생했다고 언급했다. null parameter가 들어올 수 있는 가능성이 있는 코드들 등등을 수정하는 가운데 request의 user 변수의 type이 지정되지 않아서 발생한 문제가 있었다. 어떻게 request 안에 넣어놓은 user 데이터에 type을 부여할 까 고민하다가 좋은 글을 참고하게 되어서 조금 참고하고 작성해보려고 한다. 문제 상황 strict 모드에는 any 타입이 사용되는 경우 에러를 뱉는 옵션이 있다. 필자는 TypeScript로 개발을 하기 때문에 any 타입을 사용하게 되면 그 이..