분류 전체보기 704

Node.js에서 기본 정렬 / 합병정렬 / 퀵정렬 속도 비교

실험환경 값의 범위 : 0~1억 데이터 개수 : 천만개 ~ 3천만개 반복횟수 : 3회 Note : 합병정렬은 기본 배열의 두배 크기로 메모리 공간을 사용합니다. 실험결과 1000만 1500만 2000만 2500만 3000만 기본정렬 4.16초 6.845초 9.142초 11.421초 14.021초 합병정렬 2.632초 3.881초 5.225초 6.589초 8.358초 퀵정렬 2.129초 3.172초 4.261초 5.487초 6.557초 /** INFO: 파라미터 만큼 배열을 생성하고 랜덤값 입력 */ function generateRandomArray(numData){ let arr = new Array(numData).fill(0); for(let i=0;i= high){ //INFO: 한개밖에 없으면 ..

Node.js 이벤트 루프 정리

[용어정의] REPL (Read-Eval-Print Loop) : 단일 사용자의 입력을 취하고 이를 평가 (실행)하고 결과를 사용자에게 반환시키는 단순한 상호작용 컴퓨터 프로그래밍 환경을 말한다. (예: 주피터 노트북) Polling : IT에서 클라이언트가 서버에게 주기적으로 요청을 보내는 방식을 말한다. [개요] 이벤트 루프가 각 단계에 진입하면 해당 단계에 한정된 작업을 수행하고 큐를 모두 소진하거나 콜백의 최대 개수를 실행하면 다음 단계로 넘어간다. [이벤트 루프 단계 요약] 타이머 (timers) : setTimeout()과 setInterval()로 스케줄링한 콜백을 실행한다. 대기콜백 (pending callbacks) : 다음 루프 반복으로 연기된 I/O 콜백들을 실행한다. 준비 (idle..

[요약] 2019년 네이버 검색 서비스에 사용된 MongoDB 시행착오 정리

[동영상 링크] [MongoDB 인덱스] 컬렉션 당 최대 64개의 인덱스만 생성 가능 너무 많은 인덱스를 추가하면 오히려 부작용 발생 모든 인덱스를 메모리에 보관하기 때문에 인덱스가 많아지면 Frequent Swap 발생 그러면 Write Performance 감소함 인덱스가 너무 많으면 쿼리 플래너가 잘못된 인덱스를 선택할 가능성도 높아짐 [인덱스 prefix] 여러 개의 항목에 대해 인덱스를 설정할 수 있음 한 인덱스에 a, b, c 항목을 순서대로 정의하고 나중에 쿼리를 보낼 때, (a), (a,b), (a,b,c)를 조건으로 전달할 수 있음 그러나, (b), (c), (b,c), (a,c)는 조건으로 전달해도 인덱스가 사용되지 않음 단, (a,c)를 전달하면 a에대한 인덱스만 사용됨 [멀티소팅] ..

컴퓨터 공학 2021.04.17

AES 암호화 알고리즘 조사

[참고문헌]AES - 나무위키AES 암호화 알고리즘 - 사나 [용어정의]AES (Advanced Encryption Standard) : 대칭키를 쓰는 블럭 암호이다. [특징]암호화 키는 128, 192, 256의 세 가지 중 하나가 될 수 있으며, 키의 길이에 따라 실행하는 라운드 수가 각각 10, 12, 14 이다. [모드]ECB (Electronic Code Block) : 가장 단순한 모드로, 블록 단위로 순차적으로 암호화 하는 구조이다. 한 개의 블록만 해독되면 나머지 블록도 해독이 되는 단점이 있다. 암호문이 블록의 배수가 되기 때문에 복호화 후 평문을 알기 위해 패딩을 해야 한다.CBC (Cipher Block Chaining) : 블록 암호화 운영 모드 중 보안 성이 제일 높은 암호화 방법..

컴퓨터 공학 2021.04.17

2019년 국가 별 개발자 연봉

출처 : IT월드날짜 : 2019.10.14 [영국] 직군최소연봉최대연봉평균웹 개발자2663만원5621만원3743만원소프트웨어 개발자3254만원7248만원4584만원모바일 앱 개발자3255만원7990만원4518만원 [네덜란드]직군최소연봉최대연봉평균웹 개발자3014만원7078만원4687만원소프트웨어 개발자3932만원8520만원6104만원모바일 앱 개발자3932만원8389만원6042만원 [싱가포르] 직군최소연봉최대연봉평균웹 개발자26만원6327만원3123만원소프트웨어 개발자519만원7972만원4489만원모바일 앱 개발자2600만원6240만원4680만원 [아일랜드] 직군최소연봉최대연봉평균웹 개발자3146만원6425만원4397만원소프트웨어 개발자3540만원7343만원4775만원모바일 앱 개발자3671만원9573..

컴퓨터 공학 2021.03.19

[책] <스타트업 아이템 발굴부터 투자 유치까지> 요약정리

[교보문고 링크] [당신의 욕망이 가리키는 OMTM은?] OMTM (One Metric That Matters) : 스타트업의 운영에서 현재 단계에 가장 중요한 한 가지 지표를 선택해 집중하는 것을 말함 2030 세대의 창업은 단순히 돈을 벌기 위해서라기보다 자본주의가 만든 보이지 않는 계급 사회에서 상위 계급으로 가기 위한 욕망과 관계있다. [후회 최소화 프레임워크를 꺼내다] 직장에 다니던 시절에 어느 정도 연차가 쌓이고 부장으로 승진했을 때 선배한테 "마름이 된거야" 라는 말을 들음 마름은 지주를 대리해서 소작농을 관리하는 사람이다. 지주가 바쁘고 귀찮으니 소작농을 대신 관리하는 마름이 지주에게 잘 보이고 성과를 내기 위해 땅 주인보다 더 소작농을 괴롭혔다. 아마존의 제프 베조스가 말한 '후회 초소화..

교양 2021.03.09

윈도우 10 + Visual Studio 2017에서 C++ Boost 1.59.0 버전 설치하기

[개발환경] OS : Windows 10 Pro 디스크 : C 드라이브 SSD 512GB, D 드라이브 HDD 2TB (HDD에 Boost 설치 예정) IDE : Visual Studio 2017 v15.9.29 목표 빌드 비트 : 64비트 Boost 버전 : v1.59.0 [Boost 다운로드] 2020년 11월 현재 Boost 1.59 버전을 사용하고 있으므로 여기에서 해당 버전을 zip 파일로 다운로드 받습니다. D 드라이브에 HDD가 설치되어 있다면 D:\ 경로에 압축파일을 해제합니다. 그러면 D:\boost_1_59_0 폴더 안에 Boost 관련 데이터가 생성됩니다. [Boost 빌드] 버튼을 클릭하여 "x64 Native Tools Command Prompt for VS 2017"을 클릭하여 ..

현재 시간을 filetime, unixtime, 포맷 형식으로 출력하는 프로그램

@용어정리 유닉스 시간 (Unix time) : 1970년 1월 1일 00:00:00 UTC 부터 경과 시간을 초 (또는 밀리초) 로 환산하여 정수로 나타낸 것이다. Node.js의 Date.now() 함수는 밀리초를 나타내기 위해 64비트를 사용한다. 파일타임 (Filetime) : 윈도우가 지원하는 시간 포맷 중 하나이다. 1000만 분의 1초 단위 (100 나노초)로 표현되며, 1601년 1월 1일을 기준으로 경과한 시간을 표현한다. @본문 현재 시간 또는 현재 시간으로부터 일정 시간 이전/이후의 시간을 유닉스 시간과 파일타임으로 변환하는 프로그램입니다. ./time_printer.exe [unixtime/filetime/format] [현재로부터 시간 차이 (밀리초) (기본값 0)] ./time_..

컴퓨터 공학 2021.02.23

타입스크립트에서 worker_threads 사용 기본 예제

const { threadId, parentPort } = require('worker_threads'); parentPort.on('message', value => { console.log('threadID: ' + threadId); console.log('parent message: ' + value); parentPort.postMessage('World'); parentPort.close(); }); @개발환경 Node v14.13.0 TypeScript v4.0.3 @사전설치 npm install --save ts-node npm install --save typescript main.ts /** * INFO: ts-node와 typescript가 설치되어 있어야 합니다. * npm inst..

컴퓨터 공학 2021.02.23

얼굴 사진을 업로드하면 움직이는 모습을 만들어주는 웹사이트

MotionPortrait 라는 웹사이트에서는 사용자가 사람 얼굴의 이미지를 업로드하면 이를 3D로 재구성하여 마치 동영상처럼 움직이는 영상을 만들어줍니다. 아래는 그 예시를 보여주고 있습니다. [입력 이미지] 이시하라 사토미 사진 [출력 이미지] 웃고있는 이시하라 사토미 제가 여러 얼굴 이미지를 업로드하면서 테스트해보니 정면을 응시하고 이목구비가 뚜렷하게 보일수록 더 정확한 동영상이 나오는 것으로 보입니다.