본문 바로가기

분류 전체보기

(295)
[batch] cron 표현식 https://ko.wikipedia.org/wiki/Cron cron - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. ko.wikipedia.org cron은 유닉스 계열 운영체제의 시간 기반 잡 스케줄러이다. 과거부터 시간 기반 스케줄링을 수행할 때 자주 사용한 유틸리티 프로그램으로, 일정 시간마다 정해진 동작을 수행해야 하는 배치 프로그램을 구현할 때 많이 사용한다. 이렇다 보니 많은 배치 스케줄러들이 cron을 직접 사용하지는 않더라도 일종의 표준처럼 해당 유틸의 시간 표현 방식을 동일하게 사용하는 경우가 많다. 크론 식은 다음 필드를 포함한다. 필드 값 초 0-59, 특문 분 0-59, 특문 시 0-59, 특문 일(day of month) 0~31, 특문 월(month) 1..
[jest] 동일 파일 내의 함수 mocking하기 코드 깃허브 주소: https://github.com/blaxsior/my_nest_study/tree/master/capp/src/auth/util 참고한 내용: https://stackoverflow.com/questions/45111198/how-to-mock-functions-in-the-same-module-using-jest export async function genHash(user_pass: string, salt: string) { return (await pbkdf2(user_pass, salt, 100000, 64, 'sha512')).toString('hex'); } export async function generatePassword(user_pass: string) { cons..
[크롤링] 네이버 뉴스 댓글 API 분해해보기 네이버 뉴스 댓글은 "더보기 버튼"이 존재해서 댓글을 특정 개수 단위로 가져올 수 있다. 이것만 보면 페이지가 동적으로 동작하므로 셀레니움 기반으로 데이터를 가져오는 프로젝트가 많이 있었다. 처음에는 나도 댓글 수집을 셀레니움 기반으로 해야 하나 고민을 했다. 나는 가능한 한 네이버 댓글을 셀레니움 없이 크롤링 할 수 있기를 원했다. 셀레니움은 브라우저를 직접 조작하는 방식이라 단순 http 통신보다 속도가 느리기 때문이다. 진행 중인 프로젝트에서 하루의 특정 시간마다 뉴스 데이터를 수집 및 가공하여 머신러닝을 돌려야 하는데 데이터 양이 상당할 수도 있다는 점, 사용되는 서버 환경이 기껏해야 EC2 프리티어 수준에서 조금 좋은 수준일 것이라고 예상하는 점을 고려하면 데이터를 최대한 짧은 시간 내에 읽어 ..
[nodejs] thread pool 참고 자료 유튜브 채널: https://www.youtube.com/watch?v=3JYNNf3Iljo libuv, nodejs 공식 문서 및 깃허브 node의 이벤트 루프가 싱글 스레드 기반으로 동작하기는 하지만, 내부적으로 들어가면 시간이 오래 걸리는 특정 작업(File I/O, DNS 등)의 경우 libuv 라이브러리가 제공하는 스레드 풀을 이용하여 처리한다. https://docs.libuv.org/en/v1.x/threadpool.html#threadpool libuv에서 스레드 개수는 UV_THREADPOOL_SIZE 환경 변수로 나타나며 기본 값은 4이다. 이 값은 변경할 수 있으며, 최대 1024의 값을 가질 수 있다. 병렬성 수준 nodejs는 os 모듈의 cpus().length 또는 ..
[nodejs] libuv 이미지 출처: https://docs.libuv.org/en/v1.x/index.html 도움: chatgpt, stackoverflow 등. chatgpt는 부정확한 내용이 조금 있어서 구글링 도움을 많이 받음. 노드는 비동기 + 이벤트 기반 모델을 기반으로 작동한다. 일반적으로 single thread, non-blocking I/O, event loop를 노드의 특징으로 설명하는데, 이러한 핵심 동작 원리는 내부적으로 C언어 기반으로 작성된 libuv가 수행한다. libuv libuv는 Node.js의 이벤트 기반 비동기 I/O 모델을 지원하기 위해 작성된 크로스 플랫폼 라이브러리로, 노드는 내부적으로 시간이 오래 걸리는 작업(File I/O, DNS 연산 등)을 libuv에 위임하여 처리한다. 해..
[vscode] .md 파일 깃허브 테마로 사용하기 vscode 상에서 미리 보여주는 마크다운 파일은 github와 다른 테마를 사용하기 때문에 개발 환경에서 작성한 문서 내용이 깃허브와 다를 수 있다. 특히 mermaid.js 의 그래프 표현 등은 vscode에서 기본적으로 지원하지 않는다. 여태까지는 로컬에서 문서를 작성한 후 push해서 예상대로 잘 나왔는지 봤는데, 이게 너무 귀찮다는 생각이 들어서 혹시 md 파일도 깃허브 테마로 볼 수 있는 방법이 없을까 찾아봤고, 실제로 있었다. Markdown Preview Github Styling - Visual Studio Marketplace Markdown Preview Mermaid Support - Visual Studio Marketplace 위는 md 파일에 대해 기본적인 깃허브 스타일을 주는..
[네트워크] HOL(Head Of Line) blocking https://en.wikipedia.org/wiki/Head-of-line_blocking 정의 패킷 라인이 첫번째 패킷에 의해 대기열로 보류될 때 발생하는 성능 저하를 의미한다. 특정 프로토콜이나 기술에 국한된 개념이 아니며, 순서를 보장하는 서비스나 자원의 경합 등 특정 패킷의 대기가 다른 패킷의 움직임을 막는 경우 HOL blocking에 속할 수 있다. 네트워크 스위치 입력 큐에 속한 패킷들이 하나의 출력 큐를 두고 경합하는 과정에서 단 하나의 큐 데이터만 전송되고, 다른 큐의 데이터들은 그만큼 대기하는 비효율이 발생할 수 있다. 만약 경합이 없었다면 모든 첫번째 큐의 데이터가 적절한 출력 포트로 이동하므로 다음 패킷들은 각 큐의 첫번째 패킷에 의한 대기(차단) 없이 다음 턴에 처리될 수 있을 ..
[git] git commit message convention https://www.youtube.com/watch?v=OJqUWvmf4gg https://github.com/pvdlg/conventional-commit-types https://www.conventionalcommits.org/ko/v1.0.0/ https://gist.github.com/joshbuchea/6f47e86d2510bce28f8e7f42ae84c716 내가 작성한 커밋을 누군가 나중에 봤을 때 어떤 의미인지 잘 파악할 수 있도록 작성해야 함. 커밋 메시지 작성 방법은 집단마다 다를 수 있지만(협업 툴에서 정의한 작업 번호를 사용하는 등), 공통적으로 특정 커밋이 어떤 의미로 수행된 것인지 파악하기 쉽게 작성하는게 중요하다. 커밋 메시지 구조 [optional scope]: [opti..