본문 바로가기

분류 전체보기236

kotlin 라이브러리의 성능 우위에 있는 것들 정리 같은 기능을 하지만, 성능이 더 빠른 것들을 기록한다. 굵은 글씨가 더 빠름 if ~ if else ~ else when substring(intrange) substring(startIndex, endIndex) String + String StringBuilder().append(String).append(String).toString() 2022. 3. 31.
New Year's Day and people are in line for the Wonderland rollercoaster ride. It is New Year's Day and people are in line for the Wonderland rollercoaster ride. Each person wears a sticker indicating their initial position in the queue from to . Any person can bribe the person directly in front of them to swap positions, but they still wear their original sticker. One person can bribe at most two others. Determine the minimum number of bribes that took place to get to a g.. 2022. 3. 30.
pkg 로 바이너리 파일 생성 pkg는 nodejs가 설치되어 있지 않은 환경에서 실행할 수 있도록, standalone의 바이너리 파일을 만들어서 배포해주는 모듈이다. 이번에 외부 개발자에게 배포해야할 일이 생겨 적용해 보았고, 사용 방법에 대해 간략하게 기술한다. 설치는 다음과 같다. npm install -g pkg 글로벌 설치하지 않고 devDependancy 에만 적용하고 싶다면, npm install --save-dev pkg설치 되었다면 package.json에 설정값을 추가한다. "bin": { "app": "./bin/www" }, "scripts": { "start": "nodemon --exec babel-node ./bin/www", "build": "pkg . --debug --out-path dist" }, .. 2022. 3. 28.
socket.io 사용 방법 제어권 관리를 위해 소켓 통신 도입을 검토하였다. 일반적인 사용 용도는 아닐 듯 하지만... 이 포스트에서는 socket io의 개념적인 부분보다는 사용 방법 및 기능에 대해 서술하면서 도입을 할만한 가치가 있는지 검증한다. 각각 서버와 클라이언트에 다른 node module을 설치한다. // 서버 npm install socket.io // 클라이언트 npm install socket.io-client 각각 서버와 클라이언트에 아래와 같은 코드를 작성한다. 서버 const app = require("express")(); const http = require("http"); const server = http.createServer(app); const { Server } = require("socke.. 2022. 3. 14.
typescript enum을 사용하지 않는게 좋은 이유 및 다른 방법 https://engineering.linecorp.com/ko/blog/typescript-enum-tree-shaking/ 2022. 1. 24.
Typescript Partial, Required, Pick 사용방법 interface IPerson { name: string; age: number; gender: string; } /** * 인터페이스의 모든 프로퍼티를 optional하게 변경한다. */ type PartialPerson = Partial; const partialPerson: PartialPerson = { gender: "male" // optional } /** * 인터페이스의 모든 프로퍼티를 required하게 변경한다. */ type RequiredPerson = Required; const requiredPerson: RequiredPerson = { name: "Jade", // required age: 29, // required gender: "male" // required } /*.. 2022. 1. 24.
generic 함수를 콜할 때 타입 정보를 함께 넘겨줘서 하나의 함수로 다양한 타입으로의 콜이 가능하다. 기본형은 아래와 같다. function func41(param: T): T { return param; } let v41 = func41("문자"); let v42 = func41(3333); let v43 = func41(); T는 다른 이름으로도 가능하지만, 일반적으로 T를 많이 쓴다. T는 여러개여도 가능하다. function func41(param: T): T1 | T2 | T3 { return param; } // 타입을 전부다 개수에 맞게 지정하거나 아예 타입을 안쓰는 경우가 있다. let v41 = func41("문자"); let v42 = func41(3333);// 아예 지정하지 않을 경우 타입은 .. 2022. 1. 6.
type import, export, namespace 타입도 마찬가지로 import, export가 가능하다. 타입 변수 앞에 export를 붙여주면 된다. a.ts export type TypeA = string | number; b.ts // export한 타입변수의 이름 지정 import { TypeA } from "./a.ts"; let 변수: TypeA = "문자"; 데이터를 감싸서 보낼 수 있는 namespace도 있다. 다만, namespace를 사용하려면 export 할 것들은 전부 namespace 안에 선언해야 한다. a.ts // export let variableA = "A";// namespace와 같이 쓰면 에러남 namespace 변수공간 { export type TypeA = string | number; export type .. 2022. 1. 6.
rest parameter, destructuring rest parameter 데이터의 개수가 정해져 있지 않은 다수의 데이터를 rest parameter라고 한다. 사용법은 간단하다. // 기본 사용 방식 // 함수 파라미터 이름 앞에 ... 을 붙인다. function func(...param) { console.log(param); } func(2,3,5,4,46,6,4,6,76,4,3); // 파라미터가 여러개일 때는 맨 뒤에 rest parameter를 넣어야한다. function func(a, b, ...param) { console.log(param); } func(2,3,5,4,46,6,4,6,76,4,3); // 파라미터의 타입 선언 방식은 기존과 같다. // 유니온 타입으로 선언해서 다양한 타입을 담을 수 있는 것도 기존과 같다. fun.. 2022. 1. 5.