반응형

오늘은 CustomURI 적용방법에 대해 포스팅을 할 까 합니다.

 

http://www.naver.com

ftp://10.220.10.123

 

위와 같이 http, ftp 와 같은 것이 URI Scheme 이다.

 

Custom URI는 저런 http, ftp대신 임의로 내가 만든 URI Scheme를 적용하는 것이다.

(이 방법은 Windows 와 Exploer 기반이며, 레즈스트리 등록으로 인하여 적용하게 된다.)

 

그럼 URI Scheme 이후에 내용들은 무엇일까? 개발자 측면에서 Parameter 라고 생각하면 된다.

내 경우, Web에서 Pc App(EXE 실행파일)을 실행시키기 위한 것을 검토하다가 

Active X와 같은 방식을 고민하다가, Custom URI를 찾게 되었다.

 

소개차원에서 설명에 쓰인 예제의 프로그램 이름은 "testprogram.exe" 이다

또한 Custom URI 이름도 "testprogram"으로 하였다.

 

 

[Registry tree 구성]

 

- HKEY_CLASSES_ROOT 아래에 CustomURI 이름으로 할 것의 Key 추가 (예제에서는 testprogram)

- shell Key 추가

- (Optional) DefaultIcon 은 필수는 아니지만, Icon을 보여주게 하고 싶다면 추가한다.

- shell 하위에 open Key 추가

- open 하위에 command Key 추가

 

[value 입력]

 

- testprogram 내에 string "URL Protocol" Key 추가, value는 입력하지 않는다.

- (Optional) DefaultIcon 내에 기본값에 해당하는 ico path를 넣는다.

- command 내에 기본값에 해당하는 프로그램 path를 넣는다.

- 만약 프로그램이 매개면수를 받아서, 처리할 것이 있다면, 패스 뒤에 "%1" 를 넣어야한며,

- 앞뒤 공백을 "로 묶어주자 "..exe" "%1" (글 하단 NSIS 예제에 그림이 있다)

 

 

 

 

 

[TEST]

 

- Internet Explorer url 입력창에 testprogram:parameter1 라고 입력해본다.
- 안된다면, testprogram://parameter1 이라고 해보자

 

 

- 실행이 되었지만..... 하지만... 경고창이 뜰 것이다. 간단하다. 경고창 제어를 해보자

(아래 사진은 1234를 Parameter로 넣었다)

 

 

 

[경고창 제어]

 

 

- HKEY_CURRENT_USER / SoftWare / Microsoft / Internet Explorer / ProtocolExecute 에 가서

- Custom URI로 등록한 이름의 Key를 추가한다.

- Key 내에 WarnOnOpen DWORD 값 Key 추가, Value는 0

 

자 경고창까지 뜨지 않는다. 끝났다! 마치지만, 더 참고될만한 내용은 아래에 있다.

 

[지금까지 레지스트리 등록한 것을 내보내기 한 배치파일을 참고]

 

 

Windows Registry Editor Version 5.00

 

[HKEY_CLASSES_ROOT\testprogram]

"URL Protocol"=""

 

[HKEY_CLASSES_ROOT\testprogram\DefaultIcon]

@="D:\\testprogram\\testprogram.ico"

 

[HKEY_CLASSES_ROOT\testprogram\shell]

 

[HKEY_CLASSES_ROOT\testprogram\shell\open]

 

[HKEY_CLASSES_ROOT\testprogram\shell\open\command]

@="\"D:\\testprogram\\testprogram.exe\" \"%1\""

 

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\ProtocolExecute\testprogram]

"WarnOnOpen"=dword:00000000

 

매개변수를 받을 경우 입력방법에 주목하자

[HKEY_CLASSES_ROOT\testprogram\shell\open\command]

@="\"D:\\testprogram\\testprogram.exe\" \"%1\""

 

[NSIS Script] , NSIS Script를 이용한, 레지스트리 등록 예제]

 

 

위쪽은 셋업후 Post 부분이라고 생각하면 되고, 하단은 삭제시 라고 생각하면 된다.

 

매개변수를 받는 부분 작성할때 주의하자. \ 구분자앞에 $ 사용

 

"$\"$INSTDIR\testprogram.exe$\" $\"%1$\""

이해가 어렵다면 실제 저장된 레지스트리를 수정하고자 보게 되면 아래와 같다.

 

 

 

[C# Custom URI 파라미터 받아오기]

 

 
실수할 수 있는 부분이 testprogram:1234 에서 파라미터가 "1234"로 오는 것이 아니라
"testprogram:1234" 가 파라미터로 온다.
 
Environment.GetCommandLineArgs()로 받아온 뒤에 콜론(:) 으로 Split 하거나 
CustomURI: 를 치환해서 사용하도록.. 한다..
 
감사합니닷 :)

 

 

반응형
Posted by Rainfly
l
반응형
췝상의 동영상을 다운받는 방법을 알아보겠습니다. 서론이 길다 느껴지시면, 스크롤을 내려주세요..

주로 다운 받고 싶은 곳들은,,, 

유튜브(YouTube), 페이스북(FaceBook), 다음팟(DaumPot), 네이버tv캐스트(Naver tvcast) 등이 있습니다.

그럼 유튜브,페이스북, 네이버tvcast 등 (Youtube, face book, naver tvcast) 동영상 다운로드 받는 방법을

포스팅 시작해보겠습니다.



0. 기본적인 방법...

익스플로러 - 도구 - 인터넷 옵션에 가보시면, 


일반탭 - 검색 - 설정에 임시 인터넷 파일들의 폴더를 갈 수 있음...


파일보기를 누르면,,,폴더가 하나 뜨는데...





C:\Users\%usernae%\AppData\Local\Microsoft\Windows\Temporary Internet Files


대충 이런 FULLPATH... 나옵니다.


안에서 파일형식으로 정렬하면.. 


내가 시청했던 동영상들이 알수없는 이름으로 다운받아져있는 것을 볼 수 있습니다.





대충 이러한 고전적인 방법이 있고,,,, 


정말 원시적이지만, 스트리밍동영상을 본다는 것은 데이타를 받는다는 것이니까.. 원리적인 접근방법이죠..


그 외, 동영상을 받기위해, 다운로드 프로그램을 설치하는 등 여러방법이 있습니다.. 


검색하면 많이 나와요. 유뷰트 동영상 다운로더, 등등?? 이런식으로..




제가 소개드리는 제가 쓰는 방법은.. 


타 website를 이용하는 방법 또는 exe 파일 실행해서 하는 방법 입니다.


제 경험상... 어떤 1가지 방법으로 


유튜브(YouTube), 페이스북(FaceBook), 다음팟(DaumPot), 네이버tv캐스트(Naver tvcast) 등....


모든 동영상을 다운로드 할 수 는 없는 것으로 알고 있습니다.



1. 먼저 youtube-dl 이용 : Naver tvCast 받을 때 유용해요.


youtube-dl.exe


youtube-dl.zip


위 파일들은 같은 파일이에요. zip을 풀면 exe가 나옵니다.


1. 압축 푼 폴더위치를 복사하신 뒤, 


2-A. 보조프로그램 - 명령프롬프트를 실행하던가..


or 2-B. 시작버튼 누르고 명령창에 "cmd"라고 입력해서 cmd.exe를 실행합니다.






< - 이후는 예제를 입력해논 겁니다. 위에 스샷과 함께 참고하세요 >


3. 아까 1번의 폴더주소로 이동합니다.

- cd c:\users\KmChoi\Downloads


4. youtube-dl.exe -F "다운받을 동영상 url" 이라고 입력합니다. 각 동영상들의 우측 마우스버튼 또는 공유하기를 누르다보면 동영상 url을 복사할 수 있게 제공해줍니다. (대문자 F)

(source가 아니라 인터넷주소 타입으로 떨어지는 것으로 하세요)

- youtube-dl.exe -F http://tvcast.naver.com/v/592179


5. 0~5까지 숫자가 나오네요. 더 많은 경우가 뜨기도 합니다. 동영상에 따라서... 틀려요...

- 5로 갈수록 좋은 동영상 포맷과 해상도가 나오네요. 보통 best라던가 높은 해상도를 원하니까 그 숫자를 6번에서 입력합니다


6. youtube-dl.exe -f 숫자 "다운받을 동영상 url" 이라고 입력합니다. (소문자 f)

- youtube-dl.exe -f 5 http://tvcast.naver.com/v/592179


다운이 완료되었네요~~ 끗





2. http://en.savefrom.net/ 이용


click : http://en.savefrom.net/


이 사이트 매우 유용해요. 그냥 사이트가서 동영상 공유하는 url 을 입력하기만 하면 됩니다.


Facebook이고 Youtube가 왠만한 애들은 다 다운 가능합니다. 다운로드 버튼 누르면, 웹상에서의 다운로드가 되지, 프로그램깔리고 그런건 아니에요. 만약 그런거 뜨면 그건 url을 잘못 입력했거나 지원하지 않는다는거에요... Naver tvcast는 이방법으로는 안됩니다... 















그럼 수고하세요~~ :)


짤은 소소한 부모님들의 싸움

반응형
Posted by Rainfly
l
반응형

예전에 win debug로 crash 난 부분 소스위치 찾는 간단한 동작을 확인한 적 이 있었는데,

 

그것보단 좀 자세히 다뤄봅니다.

 

 

실행될 binary(exe) 파일을 실행하여 재현하기전에 할 일이 있습니다.

 

1. pdb 파일을 생성해야합니다.

 

참고로 저는 비쥬얼 스튜디오(visual studio 2010에서 했습니다.)

 



 

프로젝트 속성에 가면, C/C++에 일반에 가시면, 디버그정보 형식이 있습니다.

 

- 프로그램 데이타베이스(/Zi)

- 편집하여 계속하기 프로그램 데이터베이스(/ZI)

 

이렇게 두가지중 아무거나 선택해줍시다. 다만,, Zi (프로그램 데이타베이스)를 추천해드리고 싶네요.

ZI는 기존에 설정해둔 프로젝트 속성이 있다면, 충돌날 우려가 있기 떄문입니다.

 

그리고,

 

 



 

링커에 디버깅을 가시면, 디버그 정보 생성이 있습니다.

 

- 예 를 눌러줍니다.

 

이렇게 하고 다시 빌드하면, 디버그정보파일(project name.pdb)이 생성됩니다. 그 프로젝트별 pdb가 생성된폴더를 윈디버그(windbg)에서는 symbol folder(심폴폴더)라고 합니다.

 

 

2. symbol file 위치를 등록해줘야 합니다.

 

windbg를 실행시키면

 



 

빨간 테두리...(Symbol File Path)를 클릭합니다.

 

직접 폴더들을 다이얼로그를 통해서 쭉쭉 넣으셔도 되고,

 

[심볼폴더];[심볼폴더2];[...];SRV*C:\websymbol*http://msdl.microsoft.com/download/symbols

 

이런식으로 세미콜론(;)구분자를 이용해서 붙이셔도 됩니다.

 

(SRV*...으로 시작하는건 web symbol이라고 해요... 참고)

 

 

3. cmd 창을 열어서, windbg의 실행파일이 있는 위치로 가셔서 windbg -I (대문자 i)를 실행합니다.

 



 

그러면 windbg가 실행되면서 아래 팝업을 알리고, 확인버튼을 누르면 사라집니다.

 

 



 

postmortem 으로 Windbg가 등록되었다는 내용이에요..

 

이러고 나선 테스트할 프로그램을 실행해서 carsh가 발생되면!! Windbg가 실행됩니다.

 

나중에,,, 이제 필요없는데도, 계속해서 자동 windbg가 실행된다면...

아래 레지스트리를 삭제해주세요.

 

즉, postmortem으로 등록된 windbg 해제방법..

 

 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug

 

windbg가 준비가 끝나고 커서(prompt)가 활성화되면

 

>> !analyze -v

 

위처럼 입력해주시면 됩니다.

 

감사합니다.

 

반응형
Posted by Rainfly
l
반응형

윈도우에서


파일 또는 디렉터리를 삭제하다보면


0x80070091 디렉터리가 비어있지 않습니다. 이란 팝업이 뜨면서 지워지지 않는 경우가 발생한다.


뭐 외부장치에 파일을 복사하다가, 강제 취소가 됐다거나, 선이 뽑혔다거나 할때.. 


특히..0x80070091 오류가 뜨는 경우가 있는데... 말그대로 비정상 종료되면서


파일이 손상된 경우인 것.....




결론부터 말하면 Dos 명령어로 가능


오류가 난 드라이브가 G: 드라이브라고 했을 시 예를 든다면 아래처럼 입력한다.


C:\>chksk g: /f


라고 입력하면 끝, 


중간에 "다른 프로세스가 볼륨을 핸들링한다면 실행할 수 없으니, 볼륨에서 분리하도록 하시겠습니까? "y/n 질문을 한번 하는데, y를 누르도록 한다.


빠잉

반응형
Posted by Rainfly
l
반응형

비쥬얼스튜디오(Visual Studio) 릴리즈모드(Release Mode)에서 디버깅이 필요할 때가 있다.


디버깅모드에서는 잘 되는데, 릴리즈 모드에서 하니까 죽는 경우... 뭐 이럴 때.... 원인을 찾아야하는데...

그럴 때...


릴리즈 모드에서 디버깅정보를 생성 확인 하는 방법은 다음과 같다.


[Project Properties] - [Configuration Properties] 진입

-> 해당 프로젝트 - 속성 - 구성속성 - 링커 - 디버깅


[C/++ 탭]

[General] - [Debug] - [Program Database (/Zi)]
[Optimization] - [Optimization] - [Disabled (/Od)]
[Optimization] - [Whole Program] - [No]

[Linker 탭]
[Debugging Generate Debug Info] - [Yes (/DEBUG)]
[Debugging] - [Debugging] - [Runtime tracking and disable optimizations (/ASSEMBLYDEBUG)] 


그러면 Realse 모드에서 죽었거나 했을시, 호출스택 및 위치를 찾을 수 있다.

하지만 신뢰성100%는 금지... 대략적인 원인 범위를 줄이는데만 쓰자...


화면 중 하나.. 짤



디버깅에선 잘 됬는데.. 릴리즈에서 계속 죽어가꼬,, 겁나 짜증났다..... -_ -;;



반응형
Posted by Rainfly
l