반응형

컴퓨터 공학 351

메모리 용어 간단 정리 (1/2)

메모리 용어 간단 정리 (2/2) (tistory.com) 메모리 용어 간단 정리 (2/2) 메모리 용어 간단 정리 (1/2) (tistory.com) 대기모드와 수정공간 대기모드 사용중이지만 그대로 파괴해도 상관없는 메모리 영역이다. 요구가 있다면 사용되지만 요구가 없다면 그대로 파괴되는 대 remocon33.tistory.com 윈도우 작업관리자 메모리 정보 페이지 (Page) 와 프레임 (Frame) 페이지는 가상 메모리를 사용하는 최소 크기 단위, 프레임은 물리 메모리를 나타내는 최소 크기 단위이다. 페이지와 프레임의 크기는 동일하다. 언어유희를 이용하여, 인셉션 (가상 메모리) 내의 엘런 페이지 (페이지)가 자신과 동일한 모습을 보이는 유리창 (프레임)에 손을 대고 있다고 생각하면 오래 기억할 ..

컴퓨터 공학/OS 2022.01.14

[번역] Git 커밋 메시지를 작성하는 방법

Git 커밋 메시지를 작성하는 방법 - 크리스 빔스 How to Write a Git Commit Message Commit messages matter. Here's how to write them well. cbea.ms diff는 소스코드에서 무엇이 변경되었는지 알려주지만, 커밋 메시지만이 그 이유를 제대로 알려줄 수 있다. 커밋 메시지는 개발자가 좋은 협력자인지 여부를 보여준다. Peter Hutterer 커밋 기록이 구조화되지 않고 일관성이 없기 때문에 사용하거나 관리하는데 많은 시간을 할애하지 않는다. 사용되거나 관리되지 않기 때문에 구조화되지 않고 일관성이 없다. ​ 잘 관리된 로그는 유용하다. git blame, revert, rebase, log, shortlog 그리고 다른 하위 명령어..

컴퓨터 공학 2022.01.13

[번역] 2021년 웹 어셈블리 현황 설문조사

출처 : https://blog.scottlogic.com/2021/06/21/state-of-wasm.html 작성자 : Colin Eberhardt 번역 : 혼새미로 요약 러스트는 가장 많이 사용되고 웹 어셈블리에 가장 적합한 언어이다. 어셈블리스크립트는 웹 어셈블리 언어에서 두 번째로 적합한 언어이다. 웹 어셈블리는 웹, 서버리스, 게이밍 그리고 컨테이너 화 앱에서 가장 큰 영향력을 가질 것으로 기대된다. 더 나은 디버깅 지원이야말로 가장 많은 사람들이 필요하다고 느끼는 요소이다. 개요 웹 어셈블리 (이하 WA) 2018년 W3C에서 마지막 명세서 초안이 출판된 상대적으로 최신 기술이다. WA는 근본적으로 브라우저에서 다중 언어 지원 및 네이티브에 근접한 속도를 갖는 새로운 런타임으로 탄생하였으며,..

데스크탑에서 JS 또는 TS Playground 앱 (RunJS)

RunJS는 데스크탑에서 JavaScript 또는 TypeScript에 대한 Playground를 제공합니다. 아래 그림과 같이 소스코드를 작성하는 즉시 결과값이 우측에 표출됩니다. 다운로드는 RunJS - A playground for JavaScript and TypeScript 에서 가능합니다. 탭을 추가하거나, 테마를 변경하거나, NPM 모듈을 설치하고자 하는 경우 22,000원 가량의 라이선스를 구매해야 합니다.

TypeScript 4.3 신기능 정리

목차 클래스 오버라이드 플래그 템플릿 문자열 타입 개선 ECMAScrpt #private 클래스 요소 ConstructorParameters를 추상클래스에서 사용 항상 참인 Promise 검사 Import 자동완성 편집기 지원 @link 태그 Enum과 임의의 값 비교 불가 클래스 오버라이드 플래스 부모 클래스를 상속받은 자식 클래스가 부모의 메소드를 재정의할 수 있는데, 이때 어떠한 이유로 부모 클래스의 해당 메소드가 삭제되는 경우, 자식 클래스에서는 별도의 오류를 발생시키지 않아 해당 메소드가 오버라이드된 것인지 아닌지 확인하기 어렵다. class SomeComponent{ show(){ console.log('show a1'); } hide(){ console.log('hide a1'); } } c..

코드 이름 표기법 종류

형식 이름 twowords 플랫 케이스 (flat case) TWOWORDS 어퍼 플랫 케이스 (upper flat case) twoWords 카멜 케이스 (camel case) TwoWords 파스칼 케이스 (pascal case) two_words 스네이크 케이스 (snake case) TWO_WORDS 스크리밍 스네이크 케이스 (screaming snake case) two_Words 카멜 스네이크 케이스 (camel snake case) Two_Words 파스칼 스네이크 케이스 (pascal snake case) two-words 케밥 케이스 (kabab case) TWO-WORDS 스크리밍 케밥 케이스 (screaming kabab case) Two-Words 트레인 케이스 (train case..

컴퓨터 공학 2022.01.12

Node.js 객체 복사 방식에 따른 수행시간 간단 비교

개요 JS에서 각 객체의 깊은 복사 방식에 따른 수행시간을 간단하게 비교한다. 원본 객체 const obj1 = { a: 1, b: "string", c: { name: "Leon", age: "29" } }; JSON 복사 function jsonCopy(obj){ return JSON.parse(JSON.stringify(obj)); } Lodash 복사 function lodashCopy(obj){ return lodash.cloneDeep(obj); } 재귀함수 복사 /** 객체 깊은 복사 */ function cloneObjectDeep(obj) { const clone = {}; if (typeof obj !== 'object') return obj; for (const key in obj) ..

C++ 뮤텍스 이중 lock 호출 문제 해결방안

[개요] C++로 작성된 회사 프로젝트에서 Onvif를 연동한 소스코드가 있는데, profileMutex, streamMutex 등의 뮤텍스를 사용하여 PTZ와 Onvif SDK를 사용하였다. 위의 각 PTZ 함수들이 모두 profileMutex를 잠근 후 사용하고 있는데, 문제는 뮤텍스를 사용하는 함수에서 또 뮤텍스를 사용하는 다른 함수를 호출하는 경우가 존재한다. 위 함수는 SetPreset() 함수인데, 처음에 profileMutex를 잠근 후에 아래에서 RemovePreset()을 호출하고, 다음에는 GetPresets()를 호출하고 있다. 이 코드는 그나마 리팩토링이 되어서 이중락이 발생하지 않도록 수정되었으나, 다른 함수들에서도 이런 경우가 발생할 여지가 높아보이도록 코드가 작성되었다. [개선..

C++ vs Node.js vs Go - 멀티스레드 퀵정렬 수행속도 비교

[실험환경] CPU : AMD Ryzen 7 1700 8-Core Processor Memory : 32.0 GB OS : Windows 10 Pro 데이터 개수 : 2천만개 ~ 3억 2천만개 스레드 개수 : 16개 값의 범위 : 0 ~ 1,000,000,000 [분석] 데이터 개수가 적을 때는 Node.js 가 가장 느린 성능을 보여주었으며, 데이터 개수가 증가함에 따라 Node.js가 Go를 제치고 더 빠른 성능을 보여주었다. Node.js는 멀티스레드를 사용하기 위해 worker_thread를 사용하는데, 각 스레드들이 수행할 작업이 적힌 스크립트 파일 (js)을 읽어서 수행하기 때문에 초반에 지연이 걸리게 되었다. 모든 경우에서 C++가 가장 빠른 속도를 보여주었다. 데이터 개수가 1억 6천만개 ..

컴퓨터 공학 2021.06.07

프로그래머스 가장 큰 수 구하기

문제 링크 [방법] 배열의 원소들을 순회하면서 가장 큰 자릿수를 구한다. 각 배열의 원소를 해당 크기의 자릿수만큼 늘리고, 자릿수가 변경되면서 생긴 자릿수 값은 해당 원소의 원본 값에서 가장 큰 자릿수의 값으로 할당한다. 예를 들어, 원소 41이 있고 가장 큰 자릿수가 3이라면 41을 414로 변경한다. 새로운 배열에 대해 내림차순으로 정렬하고, 같은 값을 가질 경우 원본 값에서 1의 자릿수 값을 비교하여 결정한다. 정렬된 배열의 원본 값을 순서대로 이어붙이면서 결과 값을 완성한다. [테스트 케이스] 41과 414가 주어졌을 때, 41441이 나와야 한다. 89와 898이 주어졌을 때, 89898이 나와야 한다. [소스코드] function solution(numbers) { let answer = ''..

반응형