오히려 좋아..

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

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

Language 41

[책 리뷰] 자바스크립트로 배우는 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",..

[NestJS] 스웨거에서 여러 Type의 Object Array 정의

swagger를 사용하다 보면 여러 타입의 오브젝트가 들어간 Array를 정의해야할 때가 있다. 아래처럼하면 된다. $ref가 돌아가지 않는다면 아래 링크를 통해 방법을 확인하자. https://cocook.tistory.com/213 [NestJS] Swagger에서 refs 안될 때 Swagger에서 DTO를 이용해 서버 응답 값을 정의하는 기능이 있는데 직접 가져오는게 아닌 경로를 작성해주면 해당 경로에 있는 클래스를 가져와 붙여주는 기능이 있다. 경로는 분명히 맞는데 안되 cocook.tistory.com export const API_RESPONSE: ApiResponseOptions = { status: 200, isArray: true, description: "Successful respo..

Language/Python 2022.08.22

[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..

[Python] WSGI란?

오늘은 늘 보지만 어색한 WSGI에 대해 알아보겠습니다. WSGI란? 먼저 WSGI를 한마디로 정리해보면 웹서버(Web Server)와 서버 어플리케이션 사이를 연결해주는 부분입니다. 물론 후려친 정의이지만 일단 이렇게 알아둡시다. 아직 웹서버와 웹 어플리케이션 차이를 모르신다면 아래 페이지를 통해 알아보세요! https://cocook.tistory.com/87 [Web] WAS와 Web Server 차이 3줄 정리 1. 웹서버는 정적페이지, WAS는 동적페이지 응답 2. 둘다 함께 배포하는 이유는 각자 잘하는 걸 하기 위함 3. 장고는 꼭 Webserver와 배포하자 장고 배포와 관련된 글을 보면 WS(Web Server, 웹 cocook.tistory.com 이를 조금 어렵게 말해보자면 웹서버와 웹..

Language/Python 2022.08.16

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

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

[HTML] 유튜브 iframe 전체화면으로 만들기

유튜브링크를 긁어 iframe에 넣으면 아래처럼 종종 전체화면이 되지 않는 문제가 있다. 온갖 방법을 다 시도해봤는데 안되서 문제 해결한 과정을 정리해둔다. 전체화면을 구현할 수 있는 방법은 먼저 iframe 자체에서 구현해주는 기능을 사용해도 되고 만약 구현되어 있지 않다면 JS(Javascript)를 이용해 구현하면된다. 오늘은 긁어온 링크가 유튜브 처럼 자체 전체화면을 지원한다는 가정하에 작업을 진행하도록 하겠다. 먼저 iframe이 아마 아래처럼 생겼을 것이다. HTML 삽입 미리보기할 수 없는 소스 이제 iframe에 하나만 추가해주면된다. allowfullscreen 이다! 자 이제 추가하고 한번 확인해보자! HTML 삽입 미리보기할 수 없는 소스 다들 나처럼 고생하지 않았으면 한다! 도움이 ..

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

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