반응형

컴퓨터 공학 351

데이터 타입에 따른 Boolean 형변환 결과 정리

undefined 타입 undefined ⇒ false object 타입 null ⇒ false {} ⇒ true string 타입 '' ⇒ false (문자열 값이 하나라도 없으면 false) 'a' ⇒ true (문자열 값이 하나라도 있으면 true) number 타입 0 ⇒ false 1 ⇒ true -1 ⇒ true NaN ⇒ false (0과 같지 않음) boolean 타입 true ⇒ true false ⇒ false 특이사항 null 값을 가진 변수의 타입을 조회해보면 항상 object 타입임. 이에 따라, null은 object 타입에서만 사용된다고 볼 수 있음

프로그래밍 언어 별 성능 측정

원본에서 더 깔끔합니다. [알고리즘] 비교 알고리즘: 피보나치 수열 반복횟수: 5회 피보나치 값: 38 [C++] (MSVC, 최적화 안함) #include #include "HourMeter.h" using namespace std; int fibonacci(const int value) { if (value == 0 || value == 1) { return 1; } return fibonacci(value - 1) + fibonacci(value - 2); }; void main() { HourMeter hm; int fibValue{ 38 }; for(int i=0;i> Java > Golang > C# >파이어폭스> Node.js > 크롬 > 엣지 > LuaJIT > Rust >>>>> Pyth..

컴퓨터 공학 2020.07.04

타입스크립트 Logger 클래스 작성

[원본]에서 보시는게 더 깔끔합니다. www.notion.so/logger-5955a78345c44fb4886c88c00000bba8 [개발환경] 운영체제: 윈도우 10 Pro 64비트 빌드버전: 1903 CPU: Intel(R) Core(TM) i7-7700 램: 32GB Node.js 버전: v12.18.2 TypeScript 버전: 3.9.5 winston 버전: 3.3.3 [tsconfig.json] { "compilerOptions": { "target": "ES2019", "module": "commonjs", "noImplicitAny": false, "skipLibCheck": true, "forceConsistentCasingInFileNames": true } } 이 중에서 특히 "no..

Node.js 14 추가 기능

옵셔널 체이닝 객체의 특정 속성의 하위 속성이 있으면 하위속성을 반환하고, 없으면 undefined을 반환하여 예외를 없앰 const obj = { name: 'alice', cat: { name: 'Dinah' }, bark(){ console.log('bark'); } }; const dogName = obj.dog?.name; console.log(dogName); //undefined obj.mark?.(); //INFO: 아무것도 하지 않음 obj?.prop //속성 obj?.[expr] //표현식 arr?.[index] //배열 인덱스 func?.(args) //함수 Nullish 병합 연산자 (??) ?? 연산자는 좌측 피연산자가 null 이거나 undefined인 경우 우측 피연산자를 반환..

Boost 기반 뮤텍스 안전하게 사용하도록 하는 코드

12345678910111213141516171819202122232425262728293031323334353637383940414243class mutex_manager {public: mutex_manager(const int& channelIndex) : channelIndex(channelIndex), deviceAddr("0.0.0.0") {} mutex_manager(const int& channelIndex, const std::string& deviceAddr) : channelIndex(channelIndex), deviceAddr(deviceAddr) {} //INFO: 같은 스레드에서 잠금 시도시 무시하고, 다른 스레드에서 잠금 시도 시 대기 void get_mutex_lock(bo..

C++ Printf 검사 프로그램

C++에서 printf() 함수를 사용하면 원하는 변수를 파라미터로 전달하여 원하는 포맷으로 문자열을 출력할 수 있다. string name = "Kim";printf("My name is %s", name.c_str()); 여기서 파라미터로 값을 전달하는 부분을 %d, %s와 같은 포맷 지정자 (format specifier)를 통해 타입과 위치를 지정할 수 있고, 쉼표를 통해 뒤에 파라미터를 전달해주면 된다. 문제는 포맷 지정자의 개수와 실제 전달하는 파라미터의 개수가 사용자의 실수로 얼마든지 달라질 수 있다는 점이다. string name = "Kim";printf("My name is %s and my hobby is %s\n", name.c_str()); // INFO: 프로세스 종료printf..

덕 타이핑 예시

package main import "fmt" // Duck 오리 구조체 type Duck struct { } func (d Duck) quack() { fmt.Println("꽥~!") } func (d Duck) feathers() { fmt.Println("오리는 흰색과 회색 털을 가지고 있습니다.") } // Person 사람 구조체 type Person struct { } func (p Person) quack() { fmt.Println("사람은 오리 흉내를 냅니다. 꽥~!") } func (p Person) feathers() { fmt.Println("사람은 땅에서 깃털을 주워서 보여줍니다.") } // Quacker 꽥 인터페이스 type Quacker interface { quack()..

컴퓨터 공학/Go 2020.02.01

Go 언어의 활용범위

Go 언어는 웹 브라우저, 서버, 데이터베이스 등 규모가 크고 복잡한 애플리케이션을 개발하는 데 적합하다. 이러한 분야는 이제 메모리 관리에 시간을 쏟기보다는 로직에 집중하는 것이 중요해졌다. 따라서 메모리를 일일이 신경쓰지 않아도 되는 Go 언어로 작성하면 생산성을 높일 수 있다. 하지만, 그림과 같이 Go 언어는 메모리 관리를 철저히 해야 하는 시스템 라이브러리 개발에는 적합하지 않다. 그리고 메모리 장치에 직접 접근해야 하는 운영체제와 장치 드라이버도 개발하기 힘들다.요약하자면 Go 언어는 메모리 관리가 다소 느슨해도 되고, 규모가 크고 복잡하며 유지보수가 빈번한 곳에서 편리하고 사용할 수 있다. 그리고 다양한 네트워크 라이브러리 (패키지)를 제공하므로 인터넷 프로그래밍에 유용하다.출처: [가장 빨..

컴퓨터 공학/Go 2020.01.29

HTTP Digest 인증 문제

최근에 회사에서 카메라 서버에 PTZ (Pan Tilt Zoom) 명령을 전달하는 과정에서 사용하는 HTTP Digest 인증에서 문제에 직면했다. 그 전까지 HTTP를 통신하는 과정에서 인증이 있다는 것도 몰랐던 나는 이 기회에 HTTP 인증 방식에 대한 공부를 해보기로 하였다. 다음은 @ssup2로부터 참조한 것이다. 일반적으로 HTTP를 통해 서버와 통신할 때 클라이언트의 신분을 확인하기 위해 인증작업을 진행하는데, 대표적으로 다음과 같은 인증방식이 있다. 익명: 인증정보를 포함하지 않는 요청을 말한다.Basic: 기본 인증은 클라이언트에 대한 사용자 이름과 암호를 Base64로 인코딩 된 문자열을 보낸다.Digest: 사용자 이름, 암호 등을 조합하여 MD5 값으로 인증한다. 인증과정은 다음과 같..

반응형