목록Nodejs (26)
만족
생성된지 24시간 이내라면 저장된 파일을 사용하고, 캐시가 존재하지 않거나 24시간을 초과했다면 파일을 overwrite 하는 식으로 이미지 캐시를 운영하고 있다. 그런데 뒤늦게 캐시가 정상적으로 작동하지 않았다는걸 알았다. birthtime과 mtimebirthtime은 파일의 최초 생성 시간을 의미한다.mtime은 파일의 마지막 업데이트(modified) 시간을 의미한다. 이미 존재하는 파일에 append모드로 파일을 '쓰기'하면birthtime은 변경되지 않지만 mtime은 현재 시간으로 업데이트된다 overwrite file?그렇다면 파일을 overwrite 하면 어떻게 될까? 파일 내용을 완전히 대체하는 작업이기에 내 생각에는 birthtime이 변경된다고 생각했다. 하지만 write 모드로 o..
tsc 로 컴파일할때 항상 ts 파일만 컴파일하지는 않는다. ts + js 가 섞인 프로젝트에서 allowJS 옵션을 통해 js 파일도 tsc input으로 사용될 수 있다. 그러나 이렇게 js 를 tsc 인풋으로 사용할 때는 일부 오류들이 표시되지 않아 문제를 인식할 수 없다. 그 중 얼마 전 발견한 하나의 케이스를 소개한다. iterator + for-of iterator는 iterable(반복 가능) 한 객체로 Array, Map 도 iterable 객체다. iterable 객체는 for-of 를 이용해 순회 가능하다. for (const str of ['1', '2']){ console.log(str);} 이런식으로 of 뒤에 iterable 객체를 두고, of 앞의 변수에 할당하여 반복한다...
yarn classic yarn classic(v1) 과 npm에서 의존성을 추가하면 node_modules 에 설치된다. 새로운 프로젝트를 생성하고, yarn init 으로 초기화한 후 yarn add react 를 이용해 react 의존성을 추가하면 node_modules에 react 패키지가 추가된 모습을 볼 수 있다. 그런데 분명 추가한 것은 react 하나뿐이지만, js-tokens 와 loose-envify 패키지도 존재하는 것을 확인할 수 있다. node_modules/react/package.json의 dependencies를 살펴보면 loose-envify를 사용하고 있고, node_modules/loose-envify/package.json의 dependencies를 살펴보면 js-to..
여러가지 nodejs 데몬 툴 중 forever와 pm2가 특히 유명한데, forever는 기능은 적지만 사용법이 매우 간단해 운영중인 nodejs 서비스에 사용 중이었다. 그러나 모니터링, 무중단 업데이트와 같은 다양한 기능들이 필요하게 되었고, 따라서 forever에서 pm2로 이주해보려 한다. https://pm2.keymetrics.io/ PM2 - Home Advanced process manager for production Node.js applications. Load balancer, logs facility, startup script, micro service management, at a glance. pm2.keymetrics.io PM2 Nodejs 데몬 프로세스 매니저다. 단순..
프로젝트에서 githook을 이용해 커밋 전 검사를 하고 있다. yarn eslint ./src --cache && tsc --noEmit && yarn test 3개의 커맨드가 모두 정상적으로 종료되어야만 커밋되고, 이 작업들은 현재 의존성을 가지고 있어 이전 작업이 끝나야만 다음 커맨드가 실행된다. (yarn eslint ... > tsc ... > yarn test...) 정말 의존성이 필요할까? eslint는 js, jsx파일의 코드 포맷 검사, tsc는 ts, tsx파일의 코드 유효성 검사, test는 테스트를 수행한다. 사실 이들의 순서가 바뀌어도 상관없고, 심지어는 동시에 실행되어도 결과에는 영향을 미치지 않는다. 위 명령을 실행하면 약 20~30초가량이 소모되는데, 점점 프로젝트의 규모가 ..
지난 포스트에서 jest, eslint를 적용해봤다. 그렇다면 이 스크립트를 커밋 전 실행해서 안전한 코드일때만 허가할 수는 없을까? https://www.npmjs.com/package/husky husky Modern native Git hooks made easy. Latest version: 8.0.1, last published: 13 days ago. Start using husky in your project by running `npm i husky`. There are 2316 other projects in the npm registry using husky. www.npmjs.com husky 허스키를 사용하면 githooks 스펙을 손쉽게 사용할 수 있다. https://git-s..
https://jestjs.io/docs/getting-started Getting Started · Jest Install Jest using your favorite package manager: jestjs.io 설치 yarn add --dev jest devDependency에 jest를 추가한다 yarn jest --init 초기 설정이 필요한 경우(browser 환경, typescript 사용 등) 위 커맨드를 이용한다. 테스트 코드 작성 // index.js // object[key] value is not null? const requireValues = (object, keys = []) => { let result = true; keys.map(key => { if (!object[ke..
top 명령어를 사용하면 실행 중인 nodejs 프로세스는 다음과 같이 표시된다. 별도의 부가 정보 없이 node로만 표시되기 때문에 정확히 어떤 스크립트가 실행되고 있는지는 알 수 없다. ps -aef | grep node 이 명령을 이용하면 실행 중인 node 프로세스의 상세 정보를 함께 보여준다 (윈도우 계열에서는 사용할 수 없다) 마지막 행에 node프로세스가 실행중인 스크립트 정보가 표시된다. (정확히는 node 프로세스 실행 시 사용한 커맨드 전체가 출력된다) 첫 행이 pid이므로, 종료할 프로세스가 있는 경우 그 node 프로세스가 어떤 스크립트를 실행하는 것인지 확인한 후 kill 커맨드를 이용해 종료할 수도 있다.