API Server에서 list를 불러오는 GET method를 구현하면서 매우 많이 양의 데이터가 list될 수 있는 상황이 생겨서 stream를 구현하게 되었다. server측 stream은 Node.js 내장 module에 stream이 구현되어 있어 쉽게 사용할 수 있다. const stream = require(‘stream’); stream은 4가지의 기본 type을 가진다. Writable: data를 쓸 수 있는 stream Readable: data를 읽을 수 있는 stream Duplex: Readable과 Writable 모두 할 수 있는 stream Transform: data를 수정하거나 변형할 수 있는 stream - Duplex stream이다. mongodb에서 cursor를..
Index는 MongoDB에서 데이터 쿼리를 더욱 효율적으로 할 수 있게한다. 인덱스가 없이는, MongoDB는 collection을 scan 하게된다. 효과적인 인덱스 작성 전략을 위해 반드시 고려해야 하는 것이 바로 이 ‘Selectivity’를 높이는 것이다. 보다 정확하게 검색 할 수 있도록 좁은 범위를 갖는 색인을 만들어야 한다. 사용 할 수 있는 메모리 크기를 고려해야 한다. 인덱스는 실제 데이터와 별개의 메모리 공간에 저장을 하게 된다. 따라서 인덱스를 많이 만들다 보면 그만큼 많은 메모리를 사용하게 된다. 인덱스 검사를 위해 주로 사용하는 메소드에는 hint()와 explain()이 있다. update, delete의 method를 사용하는 경우에도 index조건에 맞는 query를 사용하..
Clickjacking clickjacking을 예방 하지 않으면 웹 사이트에서 iframe 태그를 사용해서 주소가 다른 사이트를 불러올 수 있다. X-Frame-Options Invalid 'X-Frame-Options' header encountered when loading error가 발생한다. X-Frame-Options 은 iframe이 랜더링할 수 있는지 여부를 나타내는 header이다. X-Frame-Options을 사용하여 사이트 내 콘텐츠들이 다른 사이트에 포함되지 않도록 설정한다. 이 header는 X-Frame-Options는 확장 해더이기 때문에 모든 브라우저가 해당 옵션에 대해 동작하는것은 아니다. 다음 사진이 X-Frame-Options을 지원하는 browser 목록이다. 크롬..
Database profiler는 mongod instance에 실행된 database command의 정밀한 정보를 수집한다. 이 정보는 CRUD operation 과 configuration, administration commands를 포함한다. profiler의 default 설정은 off이다. Profiling Levels level 0: off 상태 level 1: slows의 값보다 오래 걸리는 operation의 data를 수집한다. level 2: 모든 operation의 data를 수집힌다. 설정하기 Mongo shell에서 db.setProfilingLevel() 을 사용하여 profiling을 enable 할 수 있다. Profiling level을 0보다 크게 설정하면 profil..
Error 객체를 JSON.stringify()하면 error message, stack field가 사라진다. const err = new Error('test'); console.log(JSON.stringify(err)); // {} 객체의 속성들은 그 자체로 객체 내부의 정보와 기능을 표현하지만, 각 속성들은 다시 그 자신들의 값과 성질에 대한 눈에 보이지않는 내부 속성들을 가지고 있습니다. 자바스크립트에서는 이러한 속성의 세부적인 성질을 직접 설정하거나 조회할 수 있는 방법을 제공하는데, 이 때 이용되는 특수한 객체가 바로 속성 설명자(PropertyDescriptor) 이다. var error = new Error(‘test'); var propertyNames = Object.getOwnPr..
GraphQL으로 간단한 project를 진행할 수 있는 기회가 생겨서 GraphQL을 조사하고 개발하되었다. 기존에는 REST API 형식으로 api를 구성했다. GraphQL을 사용하면서 느낀 것은 schema 변화에 많이 자유로워 질 수 있는 장점이 크다. REST API로 구성하게 되면 client에서 어떤 정보를 추가해달라는 요청이 들어오면 항상 코드 수정이 필요했다. 하지만 GraphQL은 client가 필요한 정보를 요청하여 받아올 수 있어 코드 수정이 줄어든다. REST API는 URL, METHOD등을 조합하기 때문에 다양한 Endpoint가 존재 합니다. 반면, gql은 단 하나의 Endpoint가 존재 합니다. 또한, gql API에서는 불러오는 데이터의 종류를 쿼리 조합을 통해서 결..
- Total
- Today
- Yesterday
- nginx
- shorten
- nltk
- typescript
- Cognito
- Terraform
- JavaScript
- NLP
- Prisma
- slowquery
- mongoDB
- Github Actions
- Neptune
- Elasticsearch
- AWS community day seoul
- inversify
- commit message
- Cloudfront
- Lifecycle
- mognodb
- Develop
- conventional commit
- Clickjacking
- graphql
- sementic version
- Airflow
- aws
- Python
- pagination
- lambda@edge
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |