일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 소켓
- Algorithm
- 타입 챌린지
- HTTP
- Nestjs
- dp
- Node.js
- socket
- 프로그래머스 레벨 2
- 쉬운 문제
- HTTP 완벽 가이드
- 레벨 1
- ip
- type challenge
- 수학
- typescript
- javascript
- 타입스크립트
- 그래프
- 백준
- 가천대
- TCP
- 크롤링
- 프로그래머스
- 문자열
- 자바스크립트
- BFS
- Crawling
- 알고리즘
- dfs
- Today
- Total
목록전체 글 (499)
kakasoo
바이너리에 대한 메모리 레이아웃 fn main() { let a = 2; let result = stack_only(a); dbg!(result); } fn stack_only(b: i32) -> i32 { let c = 3; return b + c + stack_and_heap(); } fn stack_and_heap() -> i32 { let d = 5; let e = Box::new(7); return d + *e; } main : 함수의 진입점으로, 여기서부터 프로그램이 시작된다. i32 : 32비트 정수를 의미한다. Bow::new(7) : 러스트의 스마트 포인터 타입 이 코드를 해석하기 위해 일단 gdb를 설치하자. gdb는 GUI 환경에서 debugging을 도와주는 도구로, homebrew..
모던 언어 Modern languages 변수들은 기본적으로 불변입니다. 타입 추론을 합니다. 타입 세이프티를 강조합니다. 반환 유형을 가진 함수를 사용합니다. 여러 프로세스, 스레드에서 동시에 실행될 수 있는 쉬운 방법을 제공합니다. 프로세스간 통신을 위한 쉬운 방법을 제공합니다. 함수형 프로그래밍을 강조합니다. 세미콜론을 끝에 필요로 하지 않습니다. REPL을 제공합니다 (컴파일 없이 즉석에서 코드를 실행해서 바로 결과를 알 수 있는 방식) 대부분을 정적 타입으로 선언합니다. 복잡하고 장황하지 않은 깨끗하고 우아한 구문을 가지고 있습니다. 일반적으로 모던 언어라고 하면 말하는 장점들은 위와 같다. 모던 시스템 프로그래밍 언어 Rust는 런타임이나 가비지 컬렉터 없이도 엄청나게 빠르고 효율적인 메모리를..
type Split = T extends `${infer FirstLetter}${infer Rest}` ? [FirstLetter, ...Split] : []; type StringLength = Split['length']; type Push = [...T, P]; type NTuple = P['length'] extends N ? P : NTuple; type Add = [...NTuple, ...NTuple]['length']; type ToNumber = T extends number ? T : never; type RemoveFirstLetter = T extends `${infer F}${infer Rest}` ? Rest : ''; type FindAll = P extends '' ? []..
리드, 핵심이 되는 메시지 문제는 지역 신문에 지역 사람들의 이름이 충분히 실리지 않는다는 것이다. 지면을 채울 이름들만 충분하다면, 나는 기꺼이 발행 지면을 두 페이지 늘리고 식자공을 두 명 더 고용할 것이다. 지역 중심을 이루기 위해서라면 신문이 지루해져도 상관없다. 만일 가 오늘 석간에 던 마을 전체의 전화번호부를 인쇄한다면, 나는 주민들의 절반 이상이 의자에 앉아 자기 집 전화번호가 있는지 훑어볼 것이라고 확신한다. - 스틱 78p 머리를 띵하게 만드는 구간은, 신문에 온통 전화번호만 출력해서 내보내더라도 절반이 볼 거라는 통찰력이었다. 노스캐롤라이나주의 던이라는 마을은 인구가 1만 4천명 정도인데 지역 신문 구독률이 112%라고 한다. 이 수치는 신문을 2부 이상 읽는 가구가 있거나, 해당 지역..
최초의 풀이와 오답 type Int = '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '0'; type February = '02' type MonthsHasDays30 = '04' | '06' | '09' | '11'; type MonthsHasDays31 = '01' | '03' | '05' | '07' | '08' | '10' | '12'; type Months = February | MonthsHasDays30 | MonthsHasDays31; type Days = Exclude type DaysByMonth = T extends February ? Exclude : T extends MonthsHasDays30 ? Exclude : Days ty..
SELECT createdAt, LEAD(createdAt) OVER (ORDER BY createdAt) AS next_value FROM tableName; LEAD () OVER () 구문을 사용하면 서로 값이 교차하게끔 다음 번 값을 구할 수 있다. 1) 2023-06-13 23:48:34 2023-06-15 17:49:45 2) 2023-06-15 17:49:45 2023-06-15 17:50:49 3) 2023-06-15 17:50:49 2023-06-16 13:48:39 4) 2023-06-16 13:48:39 2023-06-16 13:51:47 5) 2023-06-16 13:51:47 2023-06-19 14:13:36 위 쿼리를 실행시켜 얻은 값인데, 이렇게 특정 테이블로부터 create..
type GetMiddleElement = T extends [] ? [] : T extends [infer Last] ? T : T extends [infer First, infer Last] ? T : T extends [infer First, ...infer Middles extends any[], infer Last] ? GetMiddleElement : never;
이 정도는 가뿐했다. // your answers type Shift = T extends [infer F, ...infer Rest] ? Rest : never; declare function Currying(fn: T): T extends (...params: infer Params) => infer R ? Params['length'] extends 0 ? () => ReturnType : Params['length'] extends 1 ? (p: Params[0]) => ReturnType : (p: Params[0]) => ReturnType> : never;
type SingletonizeMethod, ExcludeKeys extends keyof T> = { [key in keyof T as key extends ExcludeKeys ? never : key]: T[key] } type OmittedExcute = SingletonizeMethod; class A { execute () : OmittedExcute { return new A(); } additional () : T extends true ? OmittedExcute : A { return new A(); } }
왜 큰 부자들은 대부분 하나같이 가난하였던 과거를 갖고 있을까? 어째서 중산층 이상의 가정에서 태어나 부자가 된 사람들보다는 하류층에서 태어나 큰 부자가 된 사람들의 수가 압도적으로 더 많은 것일까? 여러 가지 이유가 있겠지만 중요한 사실은, 가난을 일찍 경험한 사람들은 가난하였던 생활 수준이 출발점이였기에 그곳으로 언제라도 '되돌아가는 것'을 부끄럽지 않게 생각한다는 것이다. 그들은 일이 잘못되어 갖고 있던 것을 모두 다 날리는 실패를 당하게 되어도 제로 점으로 '되돌아가' 재출발을 할 줄 안다. 머리가 띵해지는 문장이다.
type SnakeToCamelCaseObject = { [K in keyof T as SnakeToCamel]: T[K] extends object ? SnakeToCamelCaseObject : T[K]; }; const c: SnakeToCamelCaseObject = { aB: { cD: { eF: { gH: true, }, }, }, iJ: false, }; 카멜케이스 타입을 재귀적으로 돌게 하면 위와 같이 스네이크 케이스로 만들어진 타입을 재귀적으로 카멜 케이스가 되게 수정할 수 있다. 컨벤션을 일괄적으로 변경하기에 용이하다. 문자열을 카멜케이스로 변경하는 타입은 아래에서 확인할 수 있다. SnakeCase에서 CamelCase로 리터럴 타입 추론하기 type SnakeToCamel< Targ..
type SnakeToCamel = Join; 타입 파라미터 Target을 받는다. 이 타입 Target을 _ 문자를 기준으로 Split하면 문자열이 배열의 형태가 되는데, 이를 일단 P에 저장한다. 이제 이 문자열 배열 P를 mapped type을 이용하여 첫번째 문자를 제외한 나머지 문자열들은 첫글자만 대문자로 변경한다. 이렇게 만들어진 문자열 배열을 다시 하나의 문자열이 되게 Join한다. 타입 레벨에서 문자열 Join 구현하기 type ToString= T extends string ? T : never; type ToStringTuple= T extends string[] ? T : never; typ..