목차 클래스 오버라이드 플래그 템플릿 문자열 타입 개선 ECMAScrpt #private 클래스 요소 ConstructorParameters를 추상클래스에서 사용 항상 참인 Promise 검사 Import 자동완성 편집기 지원 @link 태그 Enum과 임의의 값 비교 불가 클래스 오버라이드 플래스 부모 클래스를 상속받은 자식 클래스가 부모의 메소드를 재정의할 수 있는데, 이때 어떠한 이유로 부모 클래스의 해당 메소드가 삭제되는 경우, 자식 클래스에서는 별도의 오류를 발생시키지 않아 해당 메소드가 오버라이드된 것인지 아닌지 확인하기 어렵다. class SomeComponent{ show(){ console.log('show a1'); } hide(){ console.log('hide a1'); } } c..
점점 하드디스크 용량이 증가함에 따라 로컬 컴퓨터에도 수십-수백 개의 동영상 파일을 보관할 수 있는 환경이 되었습니다. 저 또한 하드디스크 용량이 TB가 넘어가면서 다양한 종류의 동영상 파일을 로컬 컴퓨터에 보관하고 있었습니다. 그런데, 시간이 지나면서 파일이 점점 많아짐에 따라 제가 어떤 동영상을 보관하고 있는지 잊어버리는 경우가 발생합니다 (아마 많은 분들이 비슷한 경험을 했을 것으로 생각합니다). 물론, 정리를 잘 하는 사람들은 동영상 파일을 유형 별로 폴더에 분류를 잘 하여 보관하고 있겠지만, 수십-수백 개가 되는 폴더 및 파일들을 일일이 열어보기는 쉽지 않은 일이 되었습니다. 이러한 문제를 개선하고자, Video Hub App이라는 앱에서는 로컬 컴퓨터에서 보관하고 있는 모든 동영상 파일들에..
형식 이름 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..
개요 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) ..
윈도우 11에서 파일 탐색기 (Tom seki 😂)가 느려지는 증상이 있는데, 이를 다시 윈도우 10 버전으로 복구하는 방법이 있어서 소개하게 되었다. Step 1. 레지스트리 실행 검색창에 "실행"을 검색해서 실행 앱을 클릭한다. 실행 앱이 열리면 "regedit"을 입력하여 레지스트리 편집기 앱을 실행한다. Step 2. blocked 레지스트리 추가 편집기 상단 경로 입력칸에 다음의 경로를 복사하여 붙여넣는다. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions 다음의 항목 ("Shell Extensions" 폴더 우클릭 - 새로 만들기 - 키)을 선택하여 새로운 폴더를 생성하고, 키의 이름을 "Blocked"로..
[개요] C++로 작성된 회사 프로젝트에서 Onvif를 연동한 소스코드가 있는데, profileMutex, streamMutex 등의 뮤텍스를 사용하여 PTZ와 Onvif SDK를 사용하였다. 위의 각 PTZ 함수들이 모두 profileMutex를 잠근 후 사용하고 있는데, 문제는 뮤텍스를 사용하는 함수에서 또 뮤텍스를 사용하는 다른 함수를 호출하는 경우가 존재한다. 위 함수는 SetPreset() 함수인데, 처음에 profileMutex를 잠근 후에 아래에서 RemovePreset()을 호출하고, 다음에는 GetPresets()를 호출하고 있다. 이 코드는 그나마 리팩토링이 되어서 이중락이 발생하지 않도록 수정되었으나, 다른 함수들에서도 이런 경우가 발생할 여지가 높아보이도록 코드가 작성되었다. [개선..