본문 바로가기

나의 SW개발 이야기/SW개발 일반

Windows에서 Default Audio Input (Microphone) 연결 여부 확인 Default Audio Input - Microphone Microphone이 연결 되지 않은 경우, Input Stream으로 Default Audio Input을 설정하는 코드를 사용할 경우, 때에 따라서 Kernel 관련 런타임 에러가 발생하는 경우가 있다. 노트북처럼 Built-in 마이크가 있는 경우는 괜찮지만 Desktop 처럼 마이크를 직접 연결하는 경우에 발생한다. 이를 방지하기 위해 Default Audio Input 설정하기 전에 마이크 연결 여부를 확인하여 Error/Exception을 Throw할 수 있다. [Sample Code] [C++] [Win32] #include ... ... CComPtr pEnumerator; CComPtr pDevice; hr = CoCreateIn..
Structure of Glyph in Freetype 폰트를 Rasterize하는 Library마다 용어의 의미가 약간씩 달라 혼란스러웠음. 본 문서는 Freetype Library에서 정의하는 Typography 용어를 정리하였음. Ascent : Baseline에서 글자범위 위쪽 외곽까지의 거리 Desent : Baseline에서 글자범위 아랫쪽 외곽까지의 거리. 음수로 표현됨 Height : 글자의 높이 = Ascent - Descent (Descent는 음수) = Internal Leading + EM Height Line Gap (External Leading) : 글자범위 외곽부터 위쪽 글자의 아랫쪽 외곽까지의 거리. LineSpace = Height + Line Gap (or External Leading) = Ascent - Descent +..
Fiddler 4.0/ Mobile HTTP 모니터링/ AutoResponder를 이용한 Test Server Fiddler 4.0 0. 특징 - http 통신 모니터링 프로그램 - 트래픽 로그를 감시하는 웹디버깅 프록시 - 브라우저 뿐만 아니라 http를 사용하는 모든 트래픽을 볼 수 있음. - Auto Responder를 이용하면 간단한 Test를 해 볼 수 있는 Server가 만들어짐. - Android/ iOS도 모니터링 할 수 있음 : 이를 위해 Fiddler가 구동되는 컴퓨터를 Proxy Server를 Setting해야 함. 모바일의 경우 WIFI AP에 Proxy를 설정 Android/ iOS에서 Fiddler를 이용하여 HTTP 트래픽 로그 모니터링하기 1. 다른 컴퓨터(모바일 포함)에서도 Proxy로 떠 있는 Fiddler에 연결을 허용 1) Fiddler -> Menu -> Tools -> Op..
TFS 변경집합을 다른 브랜치에 적용하기 TFS에 반영한 변경집합을 다른 브랜치에 적용하는 방법(병합) 1. 소스제어 탐색기에서 병합 버튼을 누른다. 2. 병합 대화창에서 소스분기와 대상분기를 지정하고 선택한 변경집합을 선택한 후 다음 버튼을 누른다. 3. 대상 분기로 병합할 변경집합을 선택한 후 다음 버튼을 누른다. 4. 병합이 된 후에 대상분기로 가서 오른쪽 클릭을 하고 "보류 중인 변경 내용 체크 인" 메뉴를 선택한다. 5. 오른쪽 보류 중인 변경 내용에 변경내용 파일들이 뜬다. 설명에 체크인 내용을 적고, 체크인 버튼을 누른다.
Java Interface Java Interface Synchronous Invocation/Calling함수를 호출하면 함수 안에서 이러저러한 일들을 다 처리하고 return값에 최종 결과물을 태워서 caller에게 이를 보내준다. Context Switching이 일어나기 전까지 함수를 호출하는 놈들은 한번에 다 Stack Area에 함수들을 쌓아놓고 이런식으로 호출에 호출을 하게 된다.이것이 동기식 호출 방법이다. Asynchronous Invocation하지만 그렇지 않는 경우가 많이 생긴다. 특히 함수내에서 처리를 하지 못하고 기다렸다가 결과를 받아야 하는 상황이 많다. Network을 다녀와야 하거나, 처리 할 것이 많이 바로 반응을 할 수 없는 경우이거나, 하드웨어가 바로 반응을 하지 않거나.. 그런 경우는 수도 없..
윈도우 10에서 안드로이드 소스코드 받기 with Bash on Ubuntu 윈도우 10에서 안드로이드 소스코드 받기 with Bash on Ubuntu 사전 작업 윈도우 10에서 안드로이드 풀소스를 받기 위해서는 몇가지 사전작업이 필요한다. 1. Bash (Ubuntu) 설치 : Android의 소스는 Open Source이기 때문에 Git을 활용하여 개발을 한다. 다행히 Windows10에 Bash를 설치 할 수 있기 때문에 Git을 이용할 수 있다. 1) Windows10에 Bash 설치하기 : http://sanghaklee.tistory.com/39 참고 2) 최신버전으로 업데이트하기 : 아래와 같이 커맨드 창에서 업데이트를 실행. 하지 않으면 gcc 설치에 애로사항이 발생한다. sudo apt-get update 2. gcc 컴파일러 설치 : Google 안드로이드에서..
Class Template 클래스 템플릿 Class Template 1. 용도Class를 정의 할 때, 멤버의 형식, 혹은 메서드의 파라미터(인수)의 형식 (여기서 말하는 형식은 Datatype)만 다르고 나머지 클래스 내부의 논리전개가 동일할 때, 각 datatype별로 클래스를 제각각 정의하는 것은 뭔가 비효율적으로 보인다.만약 내부적인 논리 전개에 문제가 있거나 동작이 수정될 필요가 있을 경우, 각각 정의 된 클래스를 일일이 다 수정해야 한다.소스코드 상에서 고정부/변동부로 나누고, 중복되는 코드를 줄일 수 있다면 효율적인 코딩이 될 수 있지 않을까. Stack 이란 클래스를 정의하고자 할 때, 만약 int, float, long, double 등 각각의 datatype에 상관없이 stack을 정의 할 때template을 쓰면 간단히 해결..
UML 클래스 다이어 그램의 이해 클래스 다이어 그램의 이해 * 정의 : 클래스들 간의 상속, 연관(갖다 쓰기), Interface 구현 등에 관한 내용을 그림으로 표현한 다이어 그램 - 다이어 그램의 박스에는 각각 Class의 Member/ Method들이 표시되어 있다. 실제 그 내용을 다 표시하는 다이어 그램은 많지 않아보임. - 박스사이의 화살표 표시는 관계를 나타내는 것인데, 화살표의 헤드 : 상위 개념화살표의 꼬리 : 하위 개념 혹은 포함관계로 이해할 수 있다. 클래스의 입장에서 '내가 상속받아 갖다쓰건, 나를 갖다쓰건 상관없이' 논리적 포함관계(상/하위 개념)일 경우에 화살표의 헤드와 꼬리를 표시하는 것임...-> 처음에 많이 헷갈렸음 ㅠㅠ - 연관 관계다른 곳의 Class를 갖다 씀, 동시에 서로 갖다 쓰면 화살표 헤드가 ..