일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- typescript
- 가천대
- 수학
- 타입 챌린지
- HTTP
- 프로그래머스 레벨 2
- 알고리즘
- type challenge
- 백준
- 프로그래머스
- Node.js
- HTTP 완벽 가이드
- 그래프
- ip
- 소켓
- 문자열
- dp
- 자바스크립트
- 레벨 1
- dfs
- socket
- Algorithm
- Nestjs
- TCP
- javascript
- 타입스크립트
- BFS
- 크롤링
- 쉬운 문제
- Crawling
- Today
- Total
목록프로그래밍 (478)
kakasoo
Nestia에서는 TypeError가 나와도, 상세한 메시지는 알려주지 않았었다. 그저 간단하게 Request body is not promised type, 또는 Reponse body is not promised type, 정도의 에러만이 나왔다. 이것만 가지고는, Nestia에 익숙하지 않은 사람은 어느 부분으로 인해서 에러가 나오는 건지 알기가 어려웠다. 바로 후술하겠지만, 이건 tsconfig.json에서, nestia에 대한 설정을 바꿔주면 해결되는 문제였다. 일단 Nestia는, 아래 링크에서 주석을 확인하면, 보다시피 stringify, assert, is, validate 4가지 메서드를 설정으로 사용한다. GitHub - samchon/nestia: Superfast validation..
엔티티에 타입 정의하기 export class UserEntity extends CommonCloumns { /** * 이름 칼럼으로 사용자의 이름을 의미 * @minLength 1 * @maxLength 50 */ @Column({ length: 50, select: false }) public name!: string; /** * 사용자의 별칭, 설정하지 않는 경우도 있다. * @minLength 1 * @maxLength 50 */ @Column({ length: 50 }) public nickname!: string; } 각 프로퍼티에는 이처럼, 주석을 통해서 태그를 달 수 있다. 태그가 아닌 주석은 해당 프로퍼티에 대한 description이 되어, 추후 swagger, sdk 생성에 활용된다...
const varToString = varObj => Object.keys(varObj)[0] const someVar = 42 const displayName = varToString({ someVar }) console.log(displayName) 이게 가능할까 싶어서 찾아봤더니, 스택오버플로우에서 이런 코드를 발견했다. 변수의 이름을 알아내기 위해서 Function의 메서드를 사용해야 하나, arguments를 이용한 옛 방식을 써야 하나 했는데 의외다.
import type { Equal, Expect } from '@type-challenges/utils' type X = Promise type Y = Promise type Z = Promise type Z1 = Promise type T = { then: (onfulfilled: (arg: number) => any) => any } type cases = [ Expect, Expect, Expect, Expect, Expect, ] // @ts-expect-error type error = MyAwaited type MyAwaited = T extends PromiseLike ? R : T; // NOTE : 여전히 에러가 나는 케이스 // Expect // Expect infer R을 이용해서,..
import { Injectable, NestInterceptor, ExecutionContext, CallHandler, RequestTimeoutException } from '@nestjs/common'; import { Observable, throwError, TimeoutError } from 'rxjs'; import { catchError, timeout } from 'rxjs/operators'; @Injectable() export class TimeoutInterceptor implements NestInterceptor { intercept(context: ExecutionContext, next: CallHandler): Observable { return next.handle()..
type Chainable = { option(key: K, value: P): Chainable; get(): T; } const result1 = a .option('foo', 123) .option('bar', { value: 'Hello World' }) .option('name', 'type-challenges') .get() const result2 = a .option('name', 'another name' // @ts-expect-error .option('name', 'last name') .get() const result3 = a .option('name', 'another name') // @ts-expect-error .option('name', 123) .get() type E..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/RjyAY/btrZNvtjC2c/tkvjDk2OHCib5CI7SZOVOk/img.png)
이 글을 찾아본 것은 이미 Nestia를 알고 온 사람들일 거라 생각되기 때문에 간단한 설명만 적자면, Nestia란? Node.js, TypeScript 서버의 장점인 클라이언트와 동일한 언어 사용을 극대화하는 라이브러리라고 할 수 있다. 동일한 언어를 사용한다는 것은 서버 개발자가 미리 정의한 타입의 중복 개발을 막을 수 있다는 의미가 된다. 이로 인해 프론트 개발자는 이미 개발된 타입과 SDK를 사용해 좀 더 UI/UX 측면에 집중할 수 있게 된다. 프로젝트 생성 $ npm i -g @nestjs/cli $ nest new project-name 프로젝트 생성은 동일하게 진행해주면 된다. Nestia를 만드신 Samchon님의 레포지토리 예제 대부분은 본인 색채가 강하지만, 아래는 참고할 만 했다...
https://github.com/type-challenges/type-challenges/blob/main/questions/00110-medium-capitalize/README.md GitHub - type-challenges/type-challenges: Collection of TypeScript type challenges with online judge Collection of TypeScript type challenges with online judge - GitHub - type-challenges/type-challenges: Collection of TypeScript type challenges with online judge github.com Answer type LetterM..
https://github.com/type-challenges/type-challenges/blob/main/questions/00010-medium-tuple-to-union/README.md type Arr = ['1', '2', '3'] type Test = TupleToUnion // expected to be '1' | '2' | '3' answer type TupleToUnion = any type TupleToUnion = T[number]; 답을 먼저 제시한다. 답을 추론해 나가는 과정도 아래 서술하겠지만, 사실 이런 서술을 무시하고도 Tuple을 Union으로 변환하는 게 저게 전부임을, 직관적으로 깨닫는 사람도 분명 있을 거라 생각한다. type TupleToUnion = T['leng..
GitHub - type-challenges/type-challenges: Collection of TypeScript type challenges with online judge Collection of TypeScript type challenges with online judge - GitHub - type-challenges/type-challenges: Collection of TypeScript type challenges with online judge github.com Implement a generic MyReadonly2 which takes two type argument T and K. K specify the set of properties of T that should set ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bTr6bm/btrZsDR7Sfm/REqbhCnDXBLH357QrJ8rRk/img.jpg)
출근길에 뇌과학 영상과 각종 인사이트 글들을 보고 있다. 그러다가 오늘 하나 꽂힌 것이 있는데, 1의 365승은 여전히 1이지만, 1.01의 365승은 37 정도 되는 숫자가 된다는 글이었다. 뻔하다면 뻔한 글이지만, 사소해보이는 노력이 반복될 경우 큰 성장을 이룬다는 내용의 글이었다. 문득 옛날에 봤던 책이 떠올랐다. '원씽 - The One Thing' 이라는 책. 나한테 엄청난 인사이트를 준 책이었다. 그 때는 이 책의 단순한 법칙에 무척이나 감화된 적도 있었다 "10년 후에 대통령이 될 거야." 같은 두루뭉실한 말을 어떻게 객관적이고 과학적으로, 정량화된 목표로 탈바꿈할 수 있을까에 관한 글이었는데, 요지는 간단했다. 다음의 논리만 따라가면 쉽게 이 책을 이해할 수 있을 것이다. 10년 동안 무엇..
docker를 학습하던 중, 이걸 어디에 배포할까 알아보면서 둘의 기능적 차이에 대해 알아보았다. 둘 다 컨테이너 기반으로 서비스를 배포할 수 있게 도와주는데, 둘은 무슨 차이가 있을까? 컨테이너란? 어떤 환경에서도 실행되게 하기 위해, 실행되기 위해 필요한 모든 요소를 포함하고 있는 소프트웨어 패키지를 말한다. 만약 필요하다면 운영체제의 일부분부터 운영체제 전체까지도 포함시킬 수 있다. 이런 모습은 VM ( Virtual Machine ) 과 매우 유사한데, VM과 다른 점은 컨테이너는 운영체제 전체를 포함하는 것이 아니기에 더 가볍다는 점이고, 또 컨테이너가 VM과 달리 하드웨어가 아닌 OS 레벨에서 가상화된다는 점이다. 복잡한 얘기지만, Winodows에서 개발한 것이 개발 환경에서와 배포 환경에서..