2017년 3월 30일 목요일

시작 프로그램의 호출 경로

 시작 프로그램에 등록되어 있는 프로그램들을 추적하다가 정리한 내용을 끄적여 본다.

 Windows 10 기준으로 일단 '작업 관리자'의 '시작프로그램' 탭에서 시작되는 프로그램 목록을 확인할 수 있으며 이것은 여러 경로에서 실행되는 프로그램들을 한곳에 모아 보여주는 것뿐으로 실제로 프로그램이 시작되는 경로는 다양하다.



 첫째로 레지스트리(regedt32)에서 호출되는 경우. 대표적으로 다음의 3가지 키에서 시작된다.

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run


 두번째로 시작 프로그램 폴더에서 호출되는 경우.

%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

첫번째의 경로는 실행창에서 Shell:startup 을 실행하면 시작 프로그램 폴더가 하나 나오는데 그 경로가 이 경로이다. 여기에 바로가기 또는 프로그램이 있으면 실행된다. 여기에서 실행되는건 로그인하는 사용자가 다르면 경우에 따라 달라지는 것이고 두번째의 폴더는 공통으로 실행되는 경로이다.


 세번째로 작업 스케줄러에 등록된 경우.
1,2번째 경우에 해당하지 않는데 계속 실행되는 경우 작업 스케줄러에 등록되어 있을 수 있다.

 네번째로 서비스에서 호출되는 경우.
'Services.msc'를 실행하면 서비스 제어판이 나오는데 여기 등록되어 시작되는 경우도 있다.


그 외에 다른 경우의 수가 더 있을 수 있는데 일단 대표적으로 대부분 위의 경우에 해당한다. 작업 관리자를 통해 실행할 것과 실행하지 않을 것을 설정할 수는 있는데 아예 지워버리고 싶을때는 직접 경로를 찾아서 지워줄 수 있다.

2017년 3월 25일 토요일

카카오tv 방송 인코딩 설정에 대해

 카카오tv 방송 설정에서 보니 최대 설정이 제한되어 있는것 때문에 검색하게 된 내용을 정리해 본다.

 설정을 살펴보다가 했던 오해중의 하나가 유명 pd들 방송을 보니 FHD 해상도에 60fps 방송을 하던데 왜 이것이 설정에 없는가, pd 등급에 따른 차별인가 싶었는데 검색을 해보니 현재는 시험적으로 일부 pd들에 한해서 기능 제한을 풀어준 상태라고 한다.

vbr 압축 사용에 체크되어 있는데 실제로는 사용 안한다.
캡쳐하다 보니까 그냥 체크해 놓은 것뿐

 어쨌든 품질 설정(비트레이트)이 최대 4,000Kbps까지 밖에 설정이 안되는데 최대 해상도나 초당 프레임수는 저 최대값 안에서 이루어질 수 밖에 없다. 해상도의 경우는 근래 표준이 되다시피 한 FHD 비율인 16:9의 1280x720 일 수밖에 없고 남은 것은 초당 프레임수(fps)를 정해야 하는데 최대 60을 선택할 수는 있지만 4,000Kbps의 비트레이트는 720p에 60fps를 담기엔 애매한 수치이므로 실제 방송을 하면 흔히 깍두기 현상이라 말하는 화질 열화 현상이 발생하고 만다.

 검색을 해보니 원하는 적정 비트레이트를 찾기 위한 공식이 있던데 대충 이렇다.

 width(가로) x height(세로) x fps(프레임) x 0.1(보정값) / 1,000(단위 변경)

 여기서 0.1은 화면에 얼마나 움직임이 많은지를 판단하는 보정값 같은 것인데 이것은 bit per pixel = bpp라고 하더라. 내가 봤던 문서는 원문이 영문이라 나도 잘은 모르고 자세한 내용은 하단 링크 참조. 아무튼 이것은 화면에서 움직임이 많은 카운터 스트라이크나 오버워치와 같은 게임을 기준으로 한 값이다. 그외에 화면 움직임이 적은 하스 스톤과 같은 게임은 이보다 낮게 대략 0.06 정도를 기준을 잡으면 된다. DOTA와 같은 MOBA 장르의 게임은 중간값 정도 될 것이다.

 720p에 60fps 영상을 제대로 스트리밍하기 위해 필요한 비트레이트는 다음과 같다.

 1,280 x 720 x 60 x 0.1 / 1,000 = 5,529.6 즉 5,500Kbps는 되야 제대로 된 스트리밍을 할 수 있다는 얘기다. 그럼 이제 결론적으로 최대한 타협을 볼 수 있는 fps를 찾으면 다음과 같다.

 4,000 x 1,000 / 1,280 / 720 / 0.1 = 43.4

 카카오tv는 5 프레임 단위로 선택할 수가 있다. 그래서 가장 근사값인 45 프레임이 되는 것이다. 내 경우는 화면이 뭉게져서 뭐가 뭔지 알 수 없는 것보다 프레임이 떨어져도 화면이 선명한 편이 낫다고 생각하므로 프레임을 낮추는 것으로 타협을 보았다. 모니터링도 해보았지만 45 프레임이나 60 프레임이나 보는 입장에서는 엄청 큰 차이는 아니다. 최소한 화면이 뭉게지는 것보다는 낫다.

 만약 MOBA 장르의 게임을 한다면 저 보정값을 0.08 정도로 잡으면 54.2가 나오게 되므로 대충 60 프레임을 설정하고 방송을 해도 무리가 없을 것이다.

 추가적인 내용으로는 FHD로 60 프레임 송출을 하려면 필요 비트레이트는 다음과 같다.

 1,920 x 1,080 x 60 x 0.1 / 1,000 = 12441.6

 그래서 본인의 경우 OBS 설정에서 비트레이트를 12,000Kbps으로 하고 있으며 유튜브 고객센터 도움말에 따르면 최대 9,000Kbps를 권장값으로 안내하고 있다. 정답은 정해져 있는것이 아니고 각자가 목적에 맞게 실험을 거치면서 적정값을 정하는게 맞다고 본다.

 마지막으로 위 스크린샷에서 vbr 압축에 체크되어 있는데 실제로는 저렇게 하지 않는다. 그냥 캡쳐하기 전에 이것저것 뒤져보면서 클릭을 했었나보다. vbr은 저장용 인코딩에나 쓰는거지 스트리밍에 적합하지 않다고 보는데 그 이유는 vbr은 본질적으로 용량을 줄이기 위한 것이지 화질을 높이기 위한것이 아니기 때문이다.

 저장할 수 있는 최대 용량이 정해져 있는 상황이라면 적은 움직임이 있는 곳에서 적은 데이터를 사용하고 큰 움직임이 있는 곳에서 많은 데이터를 할당하여 화질을 높일 수 있다는 것이 vbr의 핵심이다. 그런데 이것은 앞서 말했다시피 최대 용량이 정해져 있을 경우에 한해서다. 즉 DVD와 같은 미디어에 영상을 담아야 할 경우를 말한다. 스트리밍은 최대 용량이 정해져 있지 않다. 스트리밍은 말 그대로 계속되는 데이터의 흐름이다. 최대 용량과 최대 비트레이트는 다른 개념으로 최대 용량은 그릇과 같은 것이라면 최대 비트레이트는 음료수의 당도와 같은 것이다.

 vbr을 스트리밍에 사용하면 송출 데이터의 양은 줄겠지만 그만큼 내 CPU의 자원을 소모하게 된다. 하지만 화질 향상은 기대하기 어렵다. 왜냐하면 화질은 어차피 최대 비트레이트에 제한에 종속될 수 밖에 없고 최대치에 근접했을때 화면 뭉게지는것은 cbr이나 vbr이나 마찬가지다. 설령 스트리밍에 화질향상이 있다 해도 움직임이 적거나 없는 구간에서나 눈에 보일 정도일 것이다. 그런데 정작 중요한것은 움직임이 많은 곳에서의 화질 아닌가? 어차피 정지 화면이면 cbr일때도 화질은 별 차이가 없다.

 즉 vbr은 내 CPU 자원을 소모하여 데이터 전송량을 줄이는 것이니 트래픽이 줄어서 스트림을 받아서 재전송하는 입장에서는 좋을지 몰라도 나에겐 화질 향상등의 이점은 별로 없다는것이 내 결론이다. 내 결론이 그렇다는 것이니 이것도 정답은 아니다. 더 자세한 내용은 하단의 링크를 첨부했으니 각자가 보고 판단해야할 문제라고 본다.

 이 포스트는 다음의 링크들을 참고로 하여 작성되었다.

카카오tv - 라이브 방송 - 방송하기 도움말

2017년 3월 16일 목요일

Onedrive 사용을 안하는데 탐색기에서 표시되는 문제



 예를들면 이런식이다. 앱도 삭제했는데 탐색기에는 표시되는 것이다. 딱히 있어도 상관은 없지만 없애고 싶다. 다음의 링크로 이동하면 cmd로 된 파일을 하나 받을 수 있는데 실행하면 탐색기에서 Onedrive를 없애준다.

https://github.com/tomchappelow/onedrive-uninstaller

2017년 3월 13일 월요일

Foobar2000 제목 표시줄에 재생정보가 나타나지 않는 문제

 원래 foobar2000에서 음악 파일을 재생하면 제목 표시줄에 현재 재생하고 있는 곡 정보가 나온다. 이는 환경설정에서 'Default User Interface'에 있는 'Playback state display formatting'에서 지정된 대로 표시되는 것인데 이것은 'Display - User interface module'에서 'Default User Interface"일때만 작동을 한다.

 만약에 'Columns UI'를 쓰는 'DarkOne'같은 스킨을 사용할때는 제목 표시줄에 그냥 'foobar2000 DarkOne v4.0'이라고만 나오게 되는데 이는 'Display - Columns UI - Main - Miscellaneous'에 있는 'Main window title format script:'에 적힌대로 나오는 것이다.

 즉 'Columns UI'를 사용할때 제목 표시줄에 곡 정보가 나오게 하고 싶으면 'Main window title format script:'에 양식을 적어주면 되는데 그냥 간단하게 'Default User Interface'에 있는 양식을 그대로 복사해서 붙여주면 된다.

 왜 제목 표시줄에 곡 정보가 안나오는지 한참 헤매다가 방법을 알아내서 이렇게 적고있다. 알고나면 정말 별것 아닌건데.. 이것 때문에 몇시간을 헤맸는지...

2017년 3월 10일 금요일

bcdedit의 기본 사용법

 나는 지금껏 남의 PC를 조립해 줄때는 인텔이었지만 내가 쓰는 PC는 꼭 AMD를 써왔다. 그렇다고 내가 소위 '암드빠'이냐면... 내 생각에 그건 아니었던것 같다. 난 단지 인텔보다 싼 가격에 PC를 쓰기 위해 AMD를 써왔던것 뿐이고 내가 진짜 암드빠였다면 진작에 fx8300를 쓰고 있었겠지. 근데 그건 도무지 사고 싶은 생각이 들지가 않더라.

 서러브레드부터 시작해서 바톤, 애슬론, 데네브, 아제나 이런 순서로 사용했는데 한참을 기다리다가 이제야 겨우 라이젠이 나왔고 겨우 바꾸게 되었다. 아직 사용한지 3일도 안됐고 윈도우 설치하고 설정하고 프로그램 까느라 대부분의 시간을 다 쓴터라 뭘 해보질 못했다. 뭐 아무튼 전에 쓰던것보다는 월등히 빠르니 좋기는한데 이제 이걸 어떻게 써먹어야 할지 모르겠다.

 뭐 그건 그렇고... 새로 PC 셋팅을 하면서 처음으로 인상깊게 바뀐점이 수년간 보아왔던 투박한 모습의 BIOS가 아니라 GUI에 이름도 EUFI 라고 하던가? 아니군... 방금 검색해보니 UEFI(Unified Extensible Firmware Interface)였다. 아무튼 현재는 테스트용으로 윈도우를 두개 깔아 놓은 상태인데 둘 다 이름이 'Windows 10' 이길래 뭐가 뭔지 알수가 없어서 수정 하려고 했더니 예전부터 써오면 easyBCD가 어딘가 잘 안된다. 아마도 이 UEFI 때문이 아닐까 싶다. 안그래도 easyBCD 실행하니까 문제 있을 수 있다고 메시지 나오기는 했었다. 그래서 좀 귀찮지만 그냥 명령 프롬프트에서 bcdedit를 써보려고 좀 연구해봤다.

 연구라고는 했지만 사실 그냥 기본적인 내용밖에는 모른다. 이놈의 도움말은 분명 써있기는 한글인데 내가 난독증이 생긴건지 읽어봐도 당최 뭔말인지 알수가 있어야지...

 일단 bcdedit를 사용하려면 명령 프롬프트를 관리자 권한으로 실행해야 한다. 시작메뉴 - Windows 시스템 - 명령 프롬프트를 우클릭하여 관리자 권한으로 실행하면 된다.

 기본적인 명령은 'bcdedit /help'를 입력하면 나오고 이를 옆에다 놓고 보려면

 bcdedit /help > bcdedithelp.txt

 를 입력하면 텍스트 파일로 창을 두개 띄워놓고 보면서 하면 된다.

 기본적으로 현재 부트메뉴 상황을 보려면 아무 옵션 없이 bcdedit를 입력하면 된다. 처음 나오는 Windows 부팅 관리자를 보면 'displayorder'라는 것이 있는데 이것은 부팅 표시 순서를 말한다. 그러니까 부팅 메뉴에서 표시되는 순서만 바꾸는거다.

 {GUID}로 표시된 것이 있고 {current}라고 표시된 것이 있는데 GUID로 된것은 다른 파티션을 의미한다. current는 말 그대로 현재 부팅된 파티션이다. 부팅순서를 바꾸려면 /displayorder 옵션을 사용하면 된다. 이런식이 된다.

 bcdedit /displayorder {802d5e32-0784-11da-bd33-000476eba25f} {cbd971bf-b7b8-4885-951a-fa03044f5d71}

 순서야 아무래도 상관없고 주로 부팅되는 파티션만 바꾸려면

 bcdedit /default {GUID} 로 입력하면 된다.

 그런데 GUID는 복사 붙여넣기 하면 되는거라지만 뭐가 뭔지 잘 모르겠고 헷갈리면 그냥 기본 부팅할 파티션으로 부팅하고 그냥 'bcdedit /default {current}' 라고 해버리면 된다. 이러면 현재 부팅한 파티션을 기본값으로 한다.

 그리고 다음은 부팅 대기 시간을 바꾸어야 하는데 'bcdedit /timeout 5'라는 형식으로 바꾸면 된다. 즉 기본이 30초인데 이렇게하면 5초 후에 부팅이 된다.

 그리고 마지막으로 부트 메뉴 이름을 바꾸어야 하는데 이것은

 'bcdedit /set {current} description "(바꿀 이름)"'

 이런 형식으로 입력하면 된다. 'bcdedit /set {current} description "Windows 10 for Test"' 라고 입력하면 부트 메뉴에 현재 부팅한 파티션의 이름이 Windows 10 for Test로 바뀌게 된다.

 마지막으로 내가 GUI 버전의 bcdedit를 사용하지 않고 명령 프롬프트에서 bcdedit를 써야겠다고 생각하게된 이유인데 easybcd가 EUFI 때문인지 뭔가 생뚱맞은 메뉴를 하나 만들어 놓는 바람에 이걸 지우려고 했던건데 지우는 법도 간단하다.

 bcdedit /delete {지우고 싶은 GUID}

 bcdedit는 아주 많은 옵션과 활용법이 있겠지만 내가 바꾸고자 했던것은 부팅 대기시간 메뉴 이름 설정과 부팅 표시 순서 그리고 삭제였기 때문에 이 정도만 알아도 충분하다. 이제 어떻게 쓰는지 알았으니 다음부터는 GUI 버전의 bcdedit를 쓰지 않아도 되겠지.

다시 시작

 대략 8개월 전이었나? 블로그 다시 해보자고 만들고 조금 깨작대다가 일에 치어 살다보니 잊어버렸는데 최근 좀 한가해졌기 때문에 다시 시작해볼까 한다. 새로운 마음으로 시작하려고 전에 쓴 포스트들은 싹 다 지워버렸다.

 전에 쓴 몇개 되지 않는 글의 대부분은 당시 산지 얼마 되지 않았던 스마트폰에 대한 얘기였다. 그런데 그게 현재 박살이 난 상태이고 박살난 이유는 일하던 도중 떨어뜨렸기 때문.

 물론 한번 떨어졌는데 박살난 것은 아니고 한 4번째 낙하때였나? 그때 제대로 금이 가버렸다. 금이 갔다고 완전 못쓸 상태는 아니었고 약간의 터치 오동작을 감수하면서 쓸 수는 있는 상태였었다. 하지만 마냥 그대로 쓸 수는 없으니 수리는 해야겠는데 그게 중국산 해외직구 수입폰이라 자가수리 외에는 방법이 없었다. 그래서 알리 익스프레스에서 디스플레이 판넬을 구매해서 거진 한달만에 받았는데 당시에는 몰랐지만 그게 불량품이었다. 그런데 그게 불량품인줄도 모르고 안되니까 이런저런 시도를 하던 도중에 완전히 고장을 내버린것.

 애시당초 처음부터 보호 케이스를 사서 끼우고 애지중지하며 썼으면 떨어뜨릴 일도 박살이 날 일도 없었겠지만... 뭐 그건 그렇다치고 그 수리부품 받은게 정상 제품이었다면 완전 망가질 일도 없었을거다. 또는 그게 불량품인줄 미리 알았다면 고쳐보겠다고 무리한 시도를 해서 완전히 망가뜨리는 일도 하지 않았겠지. 뭐랄까... 돌이켜 생각해보면 그 폰은 박살날 운명이었던건가 싶기도 하다.

 그러해서 현재는 아는 사람에게 받은 아이폰4s를 쓰고 있는데 나쁘진 않지만 아무래도 전에 쓰던게 더 좋은거였던지라 좀 불편한 감이 있다. 사람이 참 간사한게 더 좋은걸 한번 경험하고 나면 그 뒤로는 못돌아가는가 보다. 마치 비데를 한번 쓰고나면 비데 없는 곳에서 용변보는게 영 꺼림칙해 지는 그런거라고나 할까.