본문 바로가기

studio::piano2sky

[Android] Virtual Reality 개발 - 기본 동작 방식 0. Overview VR Player의 기본 동작 방식에 대한 설명 기존에 촬영된 VR Source(동영상)을 구(Sphere)에 Texture Mapping 후, Camera를 구의 한가운데 놓고 핸드폰(안드로이드)의 Gyro-Sensor입력을 받아 Camera를 움직여 VR를 구현하는 방식 1. Texture Mapping to Sphere VR Player에서 Play를 하기 위해서, 위와 같이 기존에 촬영된 VR Source(동영상)이 필요하다. (Googling을 하면 많이 나와 있으니 참고하시길. ) 영상은 가로-새로 360도로 동시에 촬영되다 보니 위와 같이 왜곡된 형태를 보인다. 이 영상은 적당한 크기의 사각형으로 나눈뒤 이를 Non-Ridig Prespective Transform 방식..
[Android] SurfaceView로 구현한 App에 Appium 사용하기 Android에서 Appium을 이용한 UI Automation User Custom Canvas 혹은 SurfaceView를 이용한 Application을 개발한 경우, 자동화 테스트를 위해 OpenCV를 많이 이용한다. (이미지를 비교하여 일정 이상의 확률 Threshold → Element를 찾고, 이를 이용하여 테스트하는 방법) SurfaceView를 이용하는 게임이나 혹은 NativeUI를 직접 그리는 Application의 경우가 그렇다. 반면 Android Native UI를 이용한 APP의 경우 Appium을 이용하여 자동화 테스트를 진행하기 위해 특별히 추가해야할 작업은 없다. Android에서는 Native UI를 사용하거나 Webview를 이용한 Hybrid App인 경우, 접근성(A..
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 +..
Android Minimum API 별 버전 빌드하기 0. Java의 Pre-Processing 전처리기 부재 기본적으로 자바에서는 전처리기를 지원하지 않는다. 물론 다른 여러가지 방법을 이용하여 전처리기와 유사한 동작을 끌어낼 순 있지만, 전반적인 프로젝트 관리를 위해서는 자바가 원래 지향하고자 하는 방식(Virtual Machine/ Bytecode) 을 따르는 것이 맞다. 그럼에도 불구하고 안드로이드 스튜디오에서 작업을 할 때 전처리기는 아니지만 버전을 분리하기 위한 방법을 소개한다. 1. Android Module추가, sourceSets 이용하여 코드 분리 각각 Android Module은 개별적인 Build.gradle 을 가지고 있기 때문에 끌어오는 Source도 분리해 낼 수 있다. 예제) Minimum API19와 16을 분리하는 경우 아래..
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. 오른쪽 보류 중인 변경 내용에 변경내용 파일들이 뜬다. 설명에 체크인 내용을 적고, 체크인 버튼을 누른다.
AndroidX Runtime Exception on Android 4.4.2 AndroidX Runtime Exception 해결 (Multidex / API19 / Android 4.4.2) 1. Pre-Condictions - AndroidX로 Migration https://developer.android.com/jetpack/androidx/migrate - 해당 Application에서 Multidex를 사용 Multidex의 버전이 2.0.0 으로 Refactoring 됨 - Device가 4.4.2(JellyBean) API19 를 사용 API20부터는 Dalvik이 아닌 ART를 사용하기 때문에 MultiDex를 사용할 필요가 없음. 따라서 API20 이후에는 본 Runtime Exception이 발생하지 않음. 2. 발생하는 Runtime Exception jav..
인천 연수성당 청년 성가대 헤르마노스 제3회 연주회 - 미사곡 인천 연수성당 청년성가대 헤르마노스제3회 연주회, 1부 유승헌 미사곡 #악보없이 #외워서 #원곡보다한음올려서 #청년성가대 #실력이ㅎㄷㄷ
햇빛 속의 산책 - 유승헌 바오로 by 데트몰트 찬양교회