-
안드로이드
[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..
-
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..
-
SW개발 일반
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을 분리하는 경우 아래..
-
SW개발 일반
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..
-
SW개발 일반
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..
-
미사곡 2011
인천 연수성당 청년 성가대 헤르마노스 제3회 연주회 - 미사곡
인천 연수성당 청년성가대 헤르마노스제3회 연주회, 1부 유승헌 미사곡 #악보없이 #외워서 #원곡보다한음올려서 #청년성가대 #실력이ㅎㄷㄷ
-
성가곡
햇빛 속의 산책 - 유승헌 바오로 by 데트몰트 찬양교회
-
미사곡 2011
인천 연수성당 청년 성가대 헤르마노스 제3회 연주회
-
SW개발 일반
Java Interface
Java Interface Synchronous Invocation/Calling함수를 호출하면 함수 안에서 이러저러한 일들을 다 처리하고 return값에 최종 결과물을 태워서 caller에게 이를 보내준다. Context Switching이 일어나기 전까지 함수를 호출하는 놈들은 한번에 다 Stack Area에 함수들을 쌓아놓고 이런식으로 호출에 호출을 하게 된다.이것이 동기식 호출 방법이다. Asynchronous Invocation하지만 그렇지 않는 경우가 많이 생긴다. 특히 함수내에서 처리를 하지 못하고 기다렸다가 결과를 받아야 하는 상황이 많다. Network을 다녀와야 하거나, 처리 할 것이 많이 바로 반응을 할 수 없는 경우이거나, 하드웨어가 바로 반응을 하지 않거나.. 그런 경우는 수도 없..
-
1st Album 'now to eternity'
dreamin' of u - piano2sky
내 인생의 가장 빛나는 순간을 기억하고 감사하며
-
LG전자
나쁜 개발자? 좋은 인사평가?
언젠가 신입사원 기술 교육을 위해 강사로 불려가서 강의를 하던 시절... 강의실에 앉아 있던 대부분의 사람들은 코딩을 체계적으로 배운 사람이라기 보다는 전자과나 비슷한 공대를 나와서 맛보기로 C언어를 조금 배워본 사람들이 대부분이었다. 실제 코딩을 위해, 프로그래밍을 위해 알아야 할 것은 C언어니 Java니 하는 것들이 아니고(이런 것들은 그냥 며칠 들여다 보면서 눈에 익으면 그리 어려운 일은 아니다) 실제 컴퓨터가 어떤 원리로 동작하는지, 또 OS가 어떻게 자원을 배분하고 Manage하면서 실제 프로세스가 돌아가는지를 알아야 전반적으로 코딩을 잘 할 수 있다. 대학교 시절 프로그래밍 언어를 배우는 것은 전공필수도 아니었다. 듣고 싶으면 들으라는 정도였다. 실제 C언어를 배우게 되더라도 정말 필요한 Ke..
-
SW개발 일반
윈도우 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 안드로이드에서..
-
성가곡
그대가는 길 축복으로 - 유승헌 바오로 by 구로1동 성당 청년성가대 글로리아
구로1동 성당 글로리아 청년성가대 제 5회 정기연주회그대 가는 길 축복으로
-
성가곡
햇빛 속의 산책 - 유승헌 바오로 by 연수성당 청년성가대 헤르마노스
2017. 07. 02 이병근 대건안드레아 보좌신부님 영명축일 축가 : 햇빛 속의 산책 연수성당 청년성가대 헤르마노스
-
성가곡
너와 함께 - 유승헌 바오로 by 과천 성당 청년 성가대 아미꾸스
과천성당 청년 성가대 아미꾸스 부활 제 6주일(생명 주일) 성체 특송 너와 함께 유승헌 바오로 2018.04.01.
-
LG전자
개발인가 노가다인가
이전 회사에서의 단상 "오전, 오후, 저녁, 밤, 새벽..." 아침에 출근하자마자 쌓인 수백통의 메일을 읽고 응대하며 오전 대부분의 시간을 보냈다. 메일을 하나라도 놓치는 날에는 발신자에게 전화가 오거나 '메일 확인 왜 안하셨어요?'라는 기분더 러운 소리를 들어야 했다. 오후에는 화려한 미팅스케줄이 장식한다. 여기저기 영문도 모른체 끌려가서 내 잘못도 아닌데 혼나고, 내 일도 아닌데 업무 assign되어 온다. 외부회의라도 있는 날에는 이동으로 소비되는 시간도 무척이나 많다. 그러고 나서 어느덧 저녁~ 출근시간은 있지만 퇴근 시간은 없는 개발자 인생이기에 실제 나의 업무는 지금부터 시작이다. 땜빵 코드, Defence코드 정리하고, 남이 싸 놓은 똥 치우고, Unit Test하고, 최신코드 Rebase받..
-
2nd Album 'angel's coming'
angel's coming - piano2sky
너로인해 세상을 보는 시선이 달라짐을 느낀단다. 고마워 우리에게 찾아와 주어서 두번째 앨범이 발매되었습니다. 아래 음원 사이트에서 들어 보실 수 있습니다. 타이틀 곡은 angel's coming 입니다. 사랑하는 아내 채지영 에게서 영감을 얻고, 새로 태어난 아기를 위해 만든 곡입니다. 그리고 1년간 안식년을 즐겼던 저의 최종 결과물이기도 합니다.음원 발매에 도움을 준 킨젝스 후배 김재훈 이건희 Amp Monsters 와 테크니컬한 도움을 준 이정우 에게 감사합니다. angel's coming 2015 Copyright © Yoo, Seunghun @studio::piano2sky 멜론 http://me2.do/5YuwAGFo 벅스 http://bugs.kr/zAl1 네이버 http://me2.do/FZ..
-
1st Album 'now to eternity'
now to eternity '일상에서 영원으로' - piano2sky
now to eternity '일상에서 영원으로' - piano2sky 만남에서 연인으로 연인에서 결혼으로 결혼에서 일상으로 일상에서 영원으로 now to eternity '일상에서 영원으로' 2014 Copyright © Yoo, Seunghun @studio::piano2sky
-
성가곡
너와 함께 - 유승헌 바오로(2017)
그를 처음 본 건 성당 행사를 준비하던 지하교리실에서였다. 새로 입단한 초등부 교사라며 인사를 했는데 머리는 샛노랑이었고, 귀걸이를 했고, 유행하던 펑퍼짐한 옷에 전날 클럽다녀온 이야기를 신나게 늘어놓던, 철없고 맘에 안들어보이는 날라리였다. 그게 2004년 무렵이었던 것 같다.그렇게 만나 그 후로 성당행사로, 술자리로 친해진 사이었지만 점점 대화를 해가며 그 마음속이 얼마나 깊은지를 측정할 수 없는 그런 사람임을 조금씩 알아가게 되었다. 그 와중에 견진성사를 받아야 하는데 자기와 세례명이 같다며 쑥스러운 표정으로 나에게 대부를 서 달라는 청을 했고, 나는 흔쾌히 받아들여, 그와 나는 대부-대자 사이가 되었다.하지만 그의 개인적인 아픔과 상처를 이미 알고 있었기에, 내가 그의 대부가 된다는 것은 나에게는..
-
성가곡
햇빛 속의 산책 - 유승헌 바오로(2015)
2007년 무더웠던 여름. 비가 많이 왔던 밤이 지나고 찾아왔던 다음날 아침.아이들이 깨기 전에 먼저 운동장에 음향장비를 설치하고, 전날 비가 와서 치우지 못했던 프로그램 물품을 정리하려 나왔는데, 이미 정리는 끝나있었고 리어카에 물품이 잔뜩 정리되어 실려있었다.그 광경을 지켜본, 나름 베테랑 캠프 스텝인 손희상, 권지환 선수, 김형균(당시)학사님과 나는, 경악을 금치 못했다. 전날 비에 젖었다 말랐다를 반복하며 고된 노동에 시달렸던 터라 그 새벽에 그 무거운 짐들을 그것도 혼자 다 정리해 놓았던 것은 정말 불가능한 일이었기 때문이다.그리고 안개가 자욱히 낀 운동장 한켠에서 유유히 묵주기도를 하며 산책하고 있는 그가 보였다. (심지어 그는 그 때 신학생도 아니었다.)그로부터 2년이 지난 2009년 어느날..
-
안드로이드
V8 안드로이드 버전 빌드
V8 안드로이드 버전 빌드 소스를 받아온다 (gclient) 1.1 기본 소스를 받는다. Git과 Depot tool을 설치하고 GIT을 이용해 받는다. > gclient V8소스를 받을 위치로 이동한 뒤 -> 여기까지는 기본적인 소스만 받게 됨. Android(+종속되어 있는 NDK 등 추가파일) && 5.5 버전을 받기 위해서 추가적인 작업이 필요함 현재 Branch는 Master이기 때문에 최신버전(5.9)를 빌드하게 됨 따라서 Branch를 5.5로 변경 > git reset --hard (필요하면) > git checkout -B 5.5-lkgr 1.2 Dependency가 있는 소스를 추가로 받는다. .gclient에 target os 설정한다. ['android'] (.gclient 파일은 ..
-
미사곡 2011
유승헌 미사곡 2011
유승헌 미사곡 2011청년, 청소년을 위한 미사곡주요 미사곡 4곡, 부속곡 5곡, 총9곡 '항상 내가 무엇인가를 새로 시작하는 지점은, 내가 그 무엇에 불만을 갖기 시작할 때였다' 2008년 본당 청년 성가대에서 임시로 반주를 시작하면서 성가대 생활을 시작하였다. 지금와서 돌아보면 그때 들어갈 당시만 해도 내가 8년(2016년에 그만 두었으니까) 동안 성가대를 하리라고는 정말 생각하지 못했다. 그 활동을 하면서 내 사생활의 대부분을 성가대 활동을 하면서 보냈고, 이 미사곡도 그런 성가대 활동의 일부였다. 처음부터 미사곡을 미사에 올리기 위해 작곡을 시작한 것은 아니었고, 그저 일기와도 같은 내 일상의 기록이었다. 나에게만 특별한 것이 아닌, 누구나 겪는 그런 일상에서 느끼는 감성을 기록하는 작업..
-
SW개발 일반
Class Template 클래스 템플릿
Class Template 1. 용도Class를 정의 할 때, 멤버의 형식, 혹은 메서드의 파라미터(인수)의 형식 (여기서 말하는 형식은 Datatype)만 다르고 나머지 클래스 내부의 논리전개가 동일할 때, 각 datatype별로 클래스를 제각각 정의하는 것은 뭔가 비효율적으로 보인다.만약 내부적인 논리 전개에 문제가 있거나 동작이 수정될 필요가 있을 경우, 각각 정의 된 클래스를 일일이 다 수정해야 한다.소스코드 상에서 고정부/변동부로 나누고, 중복되는 코드를 줄일 수 있다면 효율적인 코딩이 될 수 있지 않을까. Stack 이란 클래스를 정의하고자 할 때, 만약 int, float, long, double 등 각각의 datatype에 상관없이 stack을 정의 할 때template을 쓰면 간단히 해결..
-
SW개발 일반
UML 클래스 다이어 그램의 이해
클래스 다이어 그램의 이해 * 정의 : 클래스들 간의 상속, 연관(갖다 쓰기), Interface 구현 등에 관한 내용을 그림으로 표현한 다이어 그램 - 다이어 그램의 박스에는 각각 Class의 Member/ Method들이 표시되어 있다. 실제 그 내용을 다 표시하는 다이어 그램은 많지 않아보임. - 박스사이의 화살표 표시는 관계를 나타내는 것인데, 화살표의 헤드 : 상위 개념화살표의 꼬리 : 하위 개념 혹은 포함관계로 이해할 수 있다. 클래스의 입장에서 '내가 상속받아 갖다쓰건, 나를 갖다쓰건 상관없이' 논리적 포함관계(상/하위 개념)일 경우에 화살표의 헤드와 꼬리를 표시하는 것임...-> 처음에 많이 헷갈렸음 ㅠㅠ - 연관 관계다른 곳의 Class를 갖다 씀, 동시에 서로 갖다 쓰면 화살표 헤드가 ..