목록전체 글 (199)
포도가게의 개발일지

1. shell이나 driver(나같은경우는 node.js driver)를 이용하여 mongodb server에 query를 보내면 mongodb server가 direct로 data를 write하지 않는다. mongodb server는 storage engine과 communication을 하며 storage engine은 내가 마음에 듣는것으로 바꿀 수 있다. default로는 Wired Tiger engine을 사용한다. storage engine은 결국 file에 data를 저장하게 된다. 1. storage engine은 data chunk를 memory에 load하고 자주 사용하는 data가 memory에 있도록 관리합니다. 2. storage engine은 먼저 in-memory에 data..
HTTP Cookie? - 웹 쿠키는 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각입니다. 브라우저는 그 데이터 조각들을 저장해 놓았다가, 동일한 서버에 재요청시 저장된 데이터를 함께 전송합니다. 쿠키는 두 요청이 동일한 브라우저에서 들어왔는지 아닌지를 판단할 때 주로 사용합니다(음.. 우리는 cookie를 이용하여 동일한 access인지 확인하여 auth를 해준다.). 이를 이용하면 사용자의 로그인 상태를 유지할 수 있습니다. stateless인 http에서 상태정보를 기억할수 있게 됩니다. 쿠키의 세가지 목적 세선 관리 개인화 트래킹 과거에는 클라이언트 측에 정보를 저장할 때 쿠키를 주로 사용했습니다. 유일한 방법이었기 때문에 하지만 지금은 modern storage api를 사용해 정보를..

chap 1. 1. 객체 설계 모듈이란? - 크기와 상관없이 클래스 형태, 패키지 형태, 라이브러리 형태로 프로그램을 구성하는 임의의 요소 - 모듈은 세가지 목적이 있으며 첫번째 : 정상 작동 되어야 한다. 두번째 : 변경을 위해 존재 -> 쉽게 변하기 위해서는 객체가 자율적이어야 한다. -> 책임을 각자 가진다. 세번째 : 의사소통이 가능하여야 한다. -> 코드가 직관적(? 상식적 or 일반적)이어야 한다. 객체지향의 목표는? - 서로 의존하면서 협력하는 객체들의 공통체를 구축하는 것 -> 의존성을 없애는게 아니라 불필요한 의존성을 없애는것이다! - 때문에 변경이 쉽기 위해서 최소한의 의존만 남기고 불필요한 의존성을 버려야 한다. - 의사소통이 쉽다는거는 직관적(? 상식적)이어야 한다는 것이다. -> ..
Pre-signed url - 생성자가 해당 객체에(S3) 대한 액세스 권한을 보유할 경우, pre-signed url은 url에서 식별된 객체에 대한 액세스를 부여합니다. 즉 객체를 업도르하기 위해 미리 서명된 url을 수신하는 경우. pre-signed url의 생성자(Iam role을 가지고있는 api 서버겠지?)가 해당 객체를 업로드하는데 필요한 권한을 보유하는 경우에만 객체를 업로드할 수 있습니다. - 모든 객체 및 버킷은 기본적으로 비공개입니다. 사용자/고객이 특정 객체를 버킷에 업로드할 수 있기를 원하는 경우 pre-signed url이 유용하지만 AWS 보안자격증명 또는 권한을 요구하지 않습니다. - pre-signed url을 생성하는 경우 보안자격증명을 제공한 후에 버킷 이름, 객체 키..

Nest - Nest는 node.js를 효율적으로 서버측 어플리케이션을 확장 가능하게 빌드해주는 프레임워크이다. code snippet - 모듈처럼 일부 코드의 한 부분 현재 Nest Node 최소버전 >= 10.13.0, except for v13 Setup $ npm i -g @nestjs/cli $ nest new project-name Yarn vs Npm 속도 npm은 pakage 설치시 순차적으로 pakage를 설치하는 반면에 yarn은 병렬적으로 pakage를 설치하여 좀 더 빠르게 설치할 수 있다. 보안이슈도 있었지만 npm도 pakage-lock.json이 생기면서 이 부분에 대해서는 해결된 것 같다. 우리회사는 yarn으로 pakage관리를 하기 때문에 yarn command 사이트를 ..
RxJS? - 이벤트 기반 프로그래밍에서 함수형 프로그래밍을 이용해 보다 선언적으로 이벤트를 처리할 수 있도록 도와준다? - RxJS는 모든 이벤트를 observable로 추상화하여 시간에 따른 스트림으로 간주할 수 있게 된다. 그리고 각 이벤트가 observer(이벤트 핸들러)에게 전달되기 전에 map, filter 등의 operator를 이용해 이벤트를 필요한 형태로 재가공하여 observer에게 전달할 수 있다. 일반적인 이벤트 처리 방식 document.addEventListener('click', () => console.log('Clicked')); RxJS 방식 import { fromEvent} from 'rxjs' //fromEvent를 이용하여 observable 객체로 만든다. con..

Blob? - Binary Large Object - 바이너리 형태(이진 형태)로 큰 객체를 저장함 - 여기서 큰 객체란 즉 이미지, 비디오 사운드 등과 같은 멀티미디어를 가리킨다. - 대개 데이터의 크기, MIME 타입을 알아내거나, 데이터를 송수신을 위한 작은 blob 객체로 나누기 위해 사용 - blob의 경우 4GB의 이진 데이터를 저장할 수 있다.ㄸ const newBlob = new Blob(array, options); array property 1. ArrayBuffer 2. Unit8Array 3. DOMString var blob = new Blob([typedArray], {type: 'application/octet-binary'}); var audioBlob = new Blob([..
https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch04s19.html Regular Expressions Cookbook, 2nd Edition 4.19. Validate Password Complexity Problem You’re tasked with ensuring that any passwords chosen by your website users meet your organization’s minimum complexity requirements. Solution The following regular expressions check many … - Selection from www.oreilly.c..