오히려 좋아..

상황이 나쁘게만 흘러가는 것 같을 때 외쳐보자.. .

궁금한 마음으로 포트폴리오 보기

Language/Javascript, typescript 17

[책 리뷰] 자바스크립트로 배우는 SICP 후기

3줄 요약 * 자바스크립트는 알지만 컴퓨터 구조는 모르는 시니어 비전공자들 컴온 * 언어가 JS라고 해서 내용이 쉬워지지는 않는다. * 책이 두껍지만 그만큼 나도 성장한다. https://www.hanbit.co.kr/store/books/look.php?p_code=B3583369126 자바스크립트로 배우는 SICP 모든 프로그래밍 언어에서 유용한 사고법과 그 표현법을 소개해 프로그램을 효율적으로 조직화하는 법을 알려준다. 개발자라면 반드시 읽어야 할 고전을 사용자가 많은 자바스크립트로 재해석 www.hanbit.co.kr 첫인상 먼저 SICP는 Structure and Interpretation of Computer Programs의 약자다. 사실 서점을 돌아다니다가 스쳐서 봤을 때는 하드웨어 관련된..

[Typescript] 로컬 저장소에 대한 Lock 구현

레디스 같은 저장소가 아닌 로컬에서 구현할 때 동시성 이슈를 막기 위해 lock을 구현해야할 때가 있다. 자바스크립트 패키지중 하나인 await-lock을 이용해 add나 update에 대해서 lock을 걸어 동시성이슈를 막을 수 있다. https://www.npmjs.com/package/await-lock await-lock Mutex locks for async functions. Latest version: 2.2.2, last published: 6 months ago. Start using await-lock in your project by running `npm i await-lock`. There are 127 other projects in the npm registry using aw..

[Typescript] Typescript 기본 세팅

맨날 프로젝트 세팅때마다 찾는게 번거로워서 정리해둔다. 먼저 프로젝트 초기화를 해준다. npm init 이제 필요한 패키지를 받아주자. npm install -D express typescript ts-node nodemon @types/node @types/express 여기서 nodemon은 라이브 컴파일을 지원하는 패키지로 파일 변경시 타입스크립트에서 자바스크립트로 자동으로 빌드해주는 패키지이다. 꼭 받아주도록 하자. tsconfig.json 파일을 생성해준다. tsconfig.json 파일은 타입스크립트의 규칙을 정해주는 설정 파일이다. npx tsc --init // tsconfig 생성 package.json 파일 수정 "scripts": { "start": "node dist/app.js",..

[Typescript] Object key 타입 정의

자주 사용하지만 항상 까먹어서 정리해둔다. 1) Union String인 경우 type fruit = "orange" | "strawberry" | "melon" // Optional인 경우 {[key in fruit]: number} const fruitPrices: {[key in fruit]: number} = { orange:10, strawberry: 20, melon: 30 } const fruitPrices2: Record = { orange:10, strawberry: 20, melon: 30 } 2) Enum인 경우도 동일하지만 위 예제와 동일하게 사용시 value 값을 사용하게 된다. enum Fruit { Orange="orange", Strawberry="strawberry", Me..

[typescript] class-transformer, Object를 클래스로 클래스를 Object로! [1]

종종 개발을 하다보면 외부에서 들어온 JSON 응답을 내부 로직에 사용하거나 내부에 있는 데이터를 외부로 보내줘야할 때가 있다. 그럴때마다 들어온 JSON을 그대로 사용하거나 plain Object를 만들어 반환해줄 때가 있다. 하지만 이런 방식은 돌아가지만 좋은 방식은 아니다. 왜냐하면 외부의 세부 사항이 그대로 들어나 내부로직을 더럽히는 경우가 발생하기 때문이다. 즉 캡슐화가 제대로 되지 않는다는 의미이다. 예를 들어 클라이언트에서 서버응답을 받아 그대로 Object로 만들어 사용하는 경우를 생각해보자. 이 경우에는 서버의 필드 값이 변경되었을 때 해당 API를 사용하는 모든 컴포넌트에 변경이 필요하다. 그 뿐만 아니라 클래스로 변환하면서 해당 클래스에 관련된 로직을 구현할 수 있어서 오히려 코드에 ..

[typescript] 날짜 String 타입으로 만들기

타입스크립트에서는 많은 것들을 타입으로 만들어서 사용한다. 개인적인 생각으로는 일반 정적 타입 언어들이 컴파일 에러로 잡아주는 부분을 동적 타입언어에서 타입으로 만들었다는 생각이든다. 어쨌든 타입스크립트는 타입 에러를 통해 동적타입 언어의 단점을 어느정도 극복했다고 생각한다. 편하고 빠르고 재밌다. 오늘은 별걸 다 타입으로 만드는 타입 스크립트에서 아래와 같은 date string을 타입으로 만드는 방법에 대해 알아보겠다. '19990201' '20210226' 전체 과정은 마치 레고를 만드는 것처럼 만들면 된다. 먼저 숫자 타입을 만들어준다. const type digit = 1|2|3|4|5|6|7|8|9|0; 1. Year 타입 연도는 아래와 같이 표기 가능하다. 개인용 컴퓨터가 처음 등장했을 때가..

[Javascript] 실행시간 측정 방법

파이썬에서는 그냥 현재 시간에서 실행후 시간 빼주는 방법으로 구현했는데 JS는 이런 것도 된다. console.time('test') somethingFunction() console.timeEnd('test') 아래 처럼도 가능하다. console.time('test') const value1 = somethingFunction1() console.timeLog('test', value1) // somethingFunction1의 실행시간 반환 const value2= somethingFunction2() console.timeLog('test', value2) // somethingFunction2의 실행 시간 반환 console.timeEnd('test')

Typescript에서 Enum을 사용하지 않는게 좋은 이유

https://engineering.linecorp.com/ko/blog/typescript-enum-tree-shaking/ 위 문서를 정리한 내용입니다. 한줄 정리 : Tree-shaking 측면에서 좋지않으니 Enum 대신 UnionType을 사용하도록 하자! 타입 스크립트 Enum 타입스크립트에서 enum은 아래와 같이 사용가능함 enum Color ( RED="red", GREEN="greee", BLUE="blue" ) console.log(Color.Red) // "red" 위 코드는 자바스크립트로 트랜스파일 될 때 아래와 같은 형식으로 변경된다. export var Color; (function (Color){ Color["RED"] = "red"; Color["Blue"] = "blue"..

[node] nvm 사용하기

로컬에 있는 노드 버전과 프로젝트 노드 버전이 달라 고생할 때가 있다. 이를 해결하면서 찾은 정보들을 정리해둔다. 이 문제는 nvm으로 해결할 수 있다. 1. NVM 설치 맥에서는 아래 명령어로 다운받을 수 있다. brew install nvm 다운로드 받은 후 환경변수를 설정해줘야한다. vi ~/.bash_profile 위 명령어를 작성하면 아래와 같은 창이 나온다. 맨 아래줄에 다음과 같이 적어준다. export NVM_DIR="$HOME/.nvm" [ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh" [ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && . "/usr/local/opt..