'Working, Studying, 잡다구리보관소'에 해당되는 글 109건

  1. 2016.08.07 KODI 단축키 shortcut keys
  2. 2016.08.04 Mac 시동 키 조합
  3. 2016.05.26 구글캘린더 일정 일괄입력하기 2
  4. 2016.01.09 유튜브 사용법 - 유용한 히든기능 11가지
  5. 2015.11.17 [펌/보관용] ASUS T100, Winflash로 바이오스 업데이트 시 "버퍼를 할당할 수 없습니다" 오류
  6. 2015.07.21 [펌]사설 인증서 사용시 신뢰할수 없다는 메시지 안나오게 하는 방법
  7. 2015.07.21 [펌글] QNAP에서 인증서를 만들어보자.
  8. 2015.05.19 [펌글] 행복한 삶을 위한 몇가지 조언(서울대 최인철 교수)
  9. 2015.05.19 정보 보호 시스템 관리::소프트웨어 개발 보안 가이드
  10. 2015.05.19 [사업대가] (민간 부문) SW사업 대가산정 가이드(2015년)-민간용
  11. 2015.03.17 (개인자료) git관련 URI
  12. 2015.02.22 XPEnology, root 아이디 패스워드 구하기
  13. 2015.01.31 Mac OS X v10.4 이상: 네트워크 연결을 통해 .DS_Store 파일 생성을 방지하는 방법
  14. 2014.12.25 삼성 전자제품(폰,TV)에 대한 아쉬움.
  15. 2014.12.04 Visual C++ 6.0에서 관리자 권한으로 빌드하고 싶을때?(VC++ 6.0 에서 관리자 권한 얻기)
  16. 2014.12.02 JAVA설치하면 해줄 환경변수들...
  17. 2014.11.28 VMPlayer 에서 Static MAC address 사용
  18. 2014.11.12 py2exe를 이용한 파이썬 실행 파일 만들기 ( Python Single File Executable )
  19. 2014.11.11 오빠랑, 파이썬 설치 및, 이클립스 연동법
  20. 2014.11.05 오빠랑, 크롬에서 개발자도구를 이용해자바스크립트 직접실행하기 팁
  21. 2014.11.04 "오빠랑" 키워드...
  22. 2014.10.29 Jpeg2000 과 Jpeg XR
  23. 2014.10.29 Java HashMap동작과 해시 분포, 해시 충돌...
  24. 2014.10.08 [펌]서버와 APNS(애플푸쉬서버)와의 보안 메커니즘
  25. 2014.10.07 MIME타입
  26. 2014.10.02 수영강습 1day째 오늘 포인트
  27. 2014.09.22 SKY TV, H.264 채널 시청 예제
  28. 2014.09.22 [펌] Vista/7/8에서 MAC 주소 변경(Clone) 하는 방법
  29. 2014.09.22 안드로이드 Tasker앱를 이용한 갤s3 운전모드 on/off
  30. 2014.09.11 맥 OS X 화면공유(VNC)서비스 커맨드 창에서 활성화하기


1 Default keyboard controls

The default keymap can be found at https://github.com/xbmc/xbmc/blob/master/system/keymaps/keyboard.xml

KeyGlobalVideo playbackMusic visualisation
0 (zero)Go between the two last channels (live TV channel) ORGo to "now" on EPG/TV guide.
AAudio delay control
BLive TV: Schedule recording timersLive TV: Schedule recording timers
CContextual menuPlaylist
DMove item down (Playlist editor & Favorites window)
ELive TV EPG/TV guideLive TV EPG/TV guide
FFast forwardFast forwardFast forward
HLive TV channels windowLive TV channels window
IInfoInfoInfo
JLive TV: Radio channels windowLive TV: Radio channels window
KLive TV recordings windowLive TV recordings window
LNext subtitleLock preset
M
  • Player controls (OSD) (if something is playing)
  • Move (File manager)
Player controls (OSD)Player controls (OSD)
NCurrent playlist window
OCodec infoCodec info
PPlayPlayVisualisation preset list
QQueue
RRewindRewind
SShutdown menuShutdown menuShow preset
Ctrl+SScreenshotScreenshotScreenshot
TToggle subtitles on and off
Ctrl+TSubtitle position control
UMove item up (Playlist editor & Favorites window)
VTeletextVisualisation settings
WMarked as watched / unwatched
XStopStopStop
YSwitch/choose player. For example, can be used to switch between internal player or a UPnP target player.Switch/choose playerSwitch/choose player
ZZoom/aspect ratio
Space
  • Pause/Play
  • Current playlist window (video & music listings)
  • Highlight (File manager)
Pause/PlayPause/Play
Left
  • Seek step backward. 
    1x 10s, 2x 30s, 3x 1m, 4x 3m...
  • Prev channel group (live TV)
Seek step backward. 
1x 10s, 2x 30s, 3x 1m, 4x 3m...
Right
  • Seek step forward. 
    1x 10s, 2x 30s, 3x 1m, 4x 3m...
  • Next channel group (live TV)
Seek step forward. 
1x 10s, 2x 30s, 3x 1m, 4x 3m...
Up
  • Seek step forward 10min OR Next chapter (videos)
  • Channel up (live TV)
Next track
Down
  • Step back 10min OR Prev chapter (videos)
  • Channel down (live TV)
Previous track
Ctrl+Variable seek backwardsVariable seek backwards
Ctrl+Variable seek forwardVariable seek forward
Ctrl+Move subtitles up
Ctrl+Move subtitles down
PageUpPage upSkip to next queued video or next chapter if no videos are queued.Increase rating
PageDownPage downSkip to previous queued video or previous chapter if no videos are queued.Decrease rating
 Enter returnSelectPlayer controls (OSD)Player controls (OSD)
← BackspaceBackBackBack
EscPrevious menu OR Home screenExit full screen
. periodSkip forwardSeek step forward. 
1x 10s, 2x 30s, 3x 1m, 4x 3m...
Seek step forward. 
1x 10s, 2x 30s, 3x 1m, 4x 3m...
, commaSkip backwardSeek step backward. 
1x 10s, 2x 30s, 3x 1m, 4x 3m...
Seek step backward. 
1x 10s, 2x 30s, 3x 1m, 4x 3m...
' quoteSmall seek step backwards 7 seconds
Tab Fullscreen playbackFullscreen playbackFullscreen playback
PrintSrcScreenshotScreenshotScreenshot
F8MuteMuteMute
- minusVolume downVolume downVolume down
+ plusVolume upVolume upVolume up
= equalsVolume upVolume upVolume up
\ backslashToggle between fullscreen/windowed modeToggle between fullscreen/windowed modeToggle between fullscreen/windowed mode
[ left bracketSeek step forward 10min
] right bracketSeek step backward 10min
CTRL+ENDExit Kodi (Only on Home Screen)
DELDelete file (if enabled in settings)Remove from playlist (Playlist editor only)Remove from playlist (Playlist editor only)
HomeJump to the top of the menu (..)
[numbers] thenReturnJump to that time in playback. (E.g,,1+2+3+4+return will jump to 12 minutes and 34 seconds.)Jump to that time in playback. (E.g,,1+2+3+4+return will jump to 12 minutes and 34 seconds.)
[numbers] thenJump backwards in that amount of time. (E.g,, 1+0+will jump back 10 seconds.)Jump backwards in that amount of time. (E.g,, 1+0+will jump back 10 seconds.)
[numbers] thenJump forward in that amount of time. (E.g,, 1+0+will jump forward 10 seconds.)Jump forward in that amount of time. (E.g,, 1+0+will jump forward 10 seconds.)
 Shift+LETTERJump to that letter in a list

2 Mouse controls

KeyDescription
Left Click on itemSelect
Middle Click on itemQueue to playlist
Right Click on itemContext menu
Right Click on blank areaBack
Mouse Wheel UpUp
Mouse Wheel DownDown

3 Picture slide show controls

KeyDescription
0Zoom Normal (100%)
1Zoom Level 1
2Zoom Level 2
3Zoom Level 3
4Zoom Level 4
5Zoom Level 5
6Zoom Level 6
7Zoom Level 7
8Zoom Level 8
9Zoom Level 9
RRotate
TInfo (EXif data)
. periodNext picture
, commaPrevious picture
+ plusZoom in
- minusZoom out

4 Platform specific controls

4.1 Windows, Live, and Linux

 Win (Windows key): Contextual menu

4.2 Mac

 Cmd+Q to quit

 Cmd+H and  Cmd+M to hide/minimize to the dock

 Cmd+F to toggle fullscreen

 Cmd+S to take a screen shot

5 Customizing buttons through the GUI

Users can customize keymaps for remotes in GUI by using the community Keymap Editor add-on.

 

http://kodi.wiki/view/Keyboard_controls

 




Posted by 장안동베짱e :

Mac 시동 키 조합

일부 Mac 기능은 시동 중에 특정 키를 길게 누르면 사용할 수 있습니다. 

Mac이 켜지고 시동음이 들리면 곧바로 키를 길게 누릅니다. 설명한 동작이 발생할 때까지 길게 누릅니다. 이러한 조합은 Intel 기반 Mac 컴퓨터에서 사용할 수 있습니다. 

시동 중 길게 누르기설명
shift ⇧안전 모드로 시동합니다.
option ⌥시동 관리자로 시동합니다.
C부팅 가능한 CD, DVD 또는 USB Thumb Drive(예: OS X 설치 미디어)에서 시동합니다.
D사용 중인 Mac에 따라 Apple Hardware Test 또는 Apple Diagnostics로 시동합니다.
option-D인터넷을 통해 Apple Hardware Test 또는 Apple Diagnostics로 시동합니다.
N호환 가능한 NetBoot 서버에서 시동합니다.
option-N기본 부팅 이미지를 사용하여 NetBoot 서버에서 시동합니다.
command(⌘)-ROS X 복구에서 시동합니다. 
command-option-R인터넷을 통해 OS X 복구에서 시동합니다.
command-option-P-RNVRAM을 재설정합니다. 시동음이 다시 들리면 키를 놓습니다.
command-S단일 사용자 모드에서 시동합니다.
T대상 디스크 모드에서 시동합니다.
XMac이 비OS X 시동 볼륨에서 시동되지 않으면 OS X 시동 볼륨에서 시동합니다.
command-V상세 모드에서 시동합니다.
추출(⏏), F12, 마우스 버튼 또는 트랙패드 버튼광학 디스크와 같은 이동식 미디어를 추출합니다.

기타 Mac 키보드 단축키는 Mac이 시동된 후에 사용할 수 있습니다.

최근 수정일:

 


https://support.apple.com/ko-kr/HT201255

 




Posted by 장안동베짱e :

구글캘린더 일정 일괄입력하기


CVS파일 생성

.cvs파일을 Subject,Start Date,Start Time,End Date,End Time,All Day Event,Description,Location,Private 순으로 입력하면 됨

구글캘린더 예제.csv

구글캘린더 예제.xlsx





구글캘린더에 .cvs파일 불러오기

1. 캘린더 환경설정에서 캘린더 가져오기 선택

2. 위에서 생성한 파일을 선택하고

3. 캘린더 선택하고 

4. 가져오기



 


 http://blog.gyongsu.com/1115

 




Posted by 장안동베짱e :

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

How to flash Bios if you get the "cannot allocate buffer to store Bios file" error

 에이수스 공홈엔 바이오스가 304까지 올라오는데 이놈의 라이브 업데이트는 도무지 반응할 기미가 안 보여서 방법이 없나 한번 찾아봤다. 안전하고 확실한 Winflash는 아무리 다시 설치 & 바이오스 다운로드 를 반복해봐도 버퍼 할당 오류를 뿜으며 진행이 불가능했고, 그렇다고 ezflash를 쓰자니 그러다 벽돌된다는 이야기가 한가득. 에이수스 라이브 업데이트도 Winflash 잠깐 켜졌다 오류와 함께 결국 ezflash로 넘어가긴 하는데, 이건 왠지 몇번을 해도 멀쩡했거든. 포럼에서도 그렇다고 하고.

 마이크로SD 카드를 꽂아놨더니 그렇더라, 다른 업데이트 설치하며 재부팅하다 보면 된다더라, 전원 케이블이 꽂혀있어야 된다더라 등 여러가지 이야기가 많았지만 하나도 통하는 건 없었고 좀 더 구글링을 하다 보니 답을 발견했다. 내용을 보아하니 winflash의 오류는 EFI 파티션의 펌웨어 폴더에 접근하지 못하면서 발생하는데, EFI 시스템 파티션을 접근 가능하도록 마운트한 후 ASUS의 펌웨어 폴더를 생성해주는 것.

1) 관리자 권한으로 cmd
2) diskpart
3) select disk 0
4) list partition
5) select partition 2 (각자의 100MB짜리 EFI 파티션)
6) assign
7) exit
8) taskkill /im explorer.exe /f
9) explorer
10) mkdir d:\EFI\ASUS\Firmware

 diskpart에서 100MB짜리 EFI 파티션을 강제로 마운트한 후 EFI 폴더 안에 \ASUS\Firmware 폴더를 생성, 이후 Winflash를 실행하니 오류 없이 바이오스 업데이트가 진행됐다. 물론 EXIT를 누르니 라이브 업데이트처럼 재부팅되며 ezflash로 들어갔고. 혹시나 싶어 불안함에 몇번 재부팅해봤는데 역시 멀쩡하다. 다행이야.





http://zettaisya.tistory.com/3191

 


Posted by 장안동베짱e :
사내에서 사용하다 보면, 사설 인증서를 사용할 경우 중간에 인증기관에서 인증을 해주지 않아서

"신뢰 할 수 없는 인증서" 라고 표시 되는 경우가 있다.
이렇게 말이죠...

 




이럴 경우 인증서를 신뢰할 수 있는 인증기관으로 저장 하면 됩니다.
일단, 인증서를 추출 합니다.

 



추출할때는 최상위의 CA를 추출 해야 합니다.



  

 


저장 하는 형식은 크게 상관  없습니다. 이후 파일로 저장해서 내보냅니다.

 

  

이후에 인증서를 설치 합니다. 

 


 

 



rootCA이 이므로 "신뢰할 수 있는 로트 인증기관"에다 저장 합니다.

 

설치 하겠습니까 하는 메시지가 나오면 "예"를 누르면 이후에 신뢰 할 수 없는 인증서라는 메시지는 뜨지 않습니다.

 

 

 

Posted by 장안동베짱e :
자 이제 어느정도 나스에 대해 공부들은 많이 하셨습니까?

오늘은 보안접속에 대해 공부를 해 볼까 합니다. 

보안접속을 해야 하는 이유는 모든 전송에 관련된 데이터가 암호화 프로포콜을 이용하여 전송됨으로 보다 외부에서 안전하게 나의 데이터 은행을 이용하는데 안심하고 사용 할 수 있게 하기 위함이고 또한 인증서를 사용함으로서 피싱이나 위조, 해킹에 의한 피해를 막기 위해서 사용됩니다.

그래서 외부나 혹은 접속환경이 좋지 않은 곳에서 나스에 접근할때 좀더 안전한 접속을 하고자 이용 혹은 설정 하려는데 설정과정이 우리 같은 초보들에게는 너무 복잡하고 어렵기에 저도 잠시 접어 두었다가 요즘 관심을 가지고 살펴 보기 시작했습니다. 

처음에 이 보안을 이용해 접속을 시도 했는데 바로는 적용되지 않았을 뿐 아니라 인증서 만드는 과정 조차도 도대체 뭐가 뭔지도 모르겠고...  그나저나 이 보안접속을 위해 뭐 깔고 뭐 깔고... C++ 재배포판 깔고... 머리 아퍼서 당췌... 그리고 윈도우즈에 뭐 줄줄이 까는걸 제가 무지 싫어라 해서 말입니다. ㅎㅎ

그나저나 제가 알려드리는 내용이 재미가 없으신가요? 쩝... 리플이 하나도 없네요... ㅜㅜ 그렇다면 앞으로 좋은 정보는 저만 알고 넘어갈껍니다. ㅎㅎㅎ

자... 오늘은 준비물이 필요한데요... Putty라는 프로그램입니다. 이건 좋던 싫던 나스 사용자는 필수라 깝니다. ㅜㅜ 

오늘은 터미널을 이용해 명령을 줄 생각입니다.

Putty가 뭔지 모르는 분들은 조금더 지식을 쌓고 난다음 적용해 보시기를 권해드리며, 잘 아시는분들은 바로 따라 해 봅시다.

일단 Putty를 실행하면 제일먼저 나오는것이 

login as: 관리자 아이디 즉 admin이겠죠. admin쓰고 (엔터)
admin@자신의ID.myqnapcloud.com's passwprd: 이건 본인의 패스워드를 입력하시면 되겠네요. 그리고 (엔터)

그러면

[~] # 하고 커서가 깜빡 깜빡 거릴텐데...

다음과 같이 명령을 줍니다.

[~] # <- 앞으로 이건 프롬프트 입니다. 예전 도스의 C:\> 이거라 보심되고 이건 입력하는게 아니라 프롬프로임을 기억해 주세요.

[~] # cd /share/Download (엔터) (대소문자 주의)

그러면 프롬프트가 다음과 같이 바뀌겠죠?

[/share/Download] # 


이제 OpenSSL 커맨드를 내릴겁니다. 복잡해도 그냥 따라 해 주세요... 그냥 따라 가는 겁니다 ^^

[/share/Download] # openssl req -new -newkey rsa:1024 -nodes -keyout personal.key -out personal.csr (엔터)... 저 1024는 암호화 비트입니다.

그러고 나면 아래와 같은 화면을 만나는데요. 본인이 직접 입력을 해 주세요...

Generating a 1024 bit RSA private key
..................................................................++++++ (몇초걸림)
..........................++++++ (몇초걸림)
writing new private key to 'personal.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:KR (엔터)
State or Province Name (full name) [Some-State]:자신의 도시 (엔터)
Locality Name (eg, city) []:자신의 지역 (엔터)
Organization Name (eg, company) [Internet Widgits Pty Ltd]:본인 회사이름 (엔터)
Organizational Unit Name (eg, section) []:자신이 속한 부서명 (엔터)
Common Name (eg, YOUR name) []:자신의 도메인주소 즉 test.myqnapcloud.com (엔터)
Email Address []:제가 소개한 XMail 사용자라면 ㅎㅎ master@test.myqnapcloud.com (엔터)

하면 다음과 같은 메시지가 나오는데 이때 

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: 

라고 물어 보는데.. 이건 인증서 요청과 함께 전송되는 두번째 암호입니다. 넣어도 되나 아파치 운영시 비번을 물어보니 귀찮은 분은 그냥 (엔터)

An optional company name []:

두번째 회사 이름이나 그냥 (엔터)

하시면 끝이 납니다. 

이제 프롬프트가 나올것이고....

[/share/Download] # 여기에 openssl x509 -req -days 365 -in personal.csr -signkey personal.key -out personal.crt 입력 후 (엔터)

이렇게 입력함으로 인증서파일을 모두 만들었습니다.

이제는 Putty는 다 했습니다.

[/share/Download] # 종료를 위해 exit (엔터)

하시면 Putty는 종료 됩니다.



자... 이제... 자신의 기본디렉토리인 Download에 우리가 인증서 관련 파일을 만들었음으로 파일매니져든 FTP든 이용해서 확장자 Key, crt 파일만 자신의 바탕화면으로 복사해 두시기 바랍니다.



 


위 화면이 나오면.... 인증칸은 crt 파을의 내용을... 개인키칸은 key 파을의 내용을.... 각각 붙여 넣기 해줍시다...
그리고 메모장을 모든파일로 열어 crt 파일을 불러 들인 다음에 처음부터 끝까지 내용을 복사해 두시고

나스의 시스템 설정 -> 보안 -> 인증서 개인키 항목중 

다름과 같이 올바른 위치에 붙여넣기를 해주시고


 



붙여넣기.....


 



또 위 파일을 메모장에 불러들여 붙여넣기....

 



다 붙여넣기 하셨다면 업로드 버튼을 눌러 주세요. 

 


확인 !! 눌러주시고....

 


업로딩~~~~


이 후 작업이 완료 됩니다.


이제 접속이 문제인데 기업망을 쓰는 분이라면 상관없지만 개인적으로 100메가급 뭐 이런 하나로, KT, U+ 이런 개인통신망 쓰는 분들은 포트에 재한이 있기때문에 다음과 같이 변경해 주시고 반듯이 포트포워딩이나 혹은 DMZ으로 열어 두시기 바랍니다. 저의 경우 443 포트는 막혀 있습니다. 이 포트에 계속 찔러 봐야 인증관련 SSL 보안접속이 되지 않습니다.

 

 

 

 


이렇게 바꿔준뒤.....







그러면 이제 접속을 해 봐야 겠지요?

 


어떻습니까? 잘 열렸습니까? 이제 사용과 응용은 여러분의 몫이니 활용 하시면 되겠습니다.


수고 하셨습니다.



PS: 이제 다운로드 폴더안의 세개의 파일은 잘 보관해 두시던지 하시고 보관전에 인증서 즉, crt 파일에 마우스 오른쪽을 눌러 인증서 설치를 눌러 설치해 주시고 난 뒤, 나스에서 지워 주시면 되겠습니다. ^^

참고로 www.myqnapcloud.com에 접속하여 로그인 후 자신의 나스에 접근, 파일매니져를 단독 실행시, 자신의 홈페이지 관리 등등 적용하여 사용 할 수 있겠고 워드프레스를 이용하시는 분이라면 플러그인에 Wordpress HTTPS 라는 플러그인을 설치하면 로그인때 SSL방식을 이용해 접근이 가능하니 활용해 보시면 되겠습니다.

 

 

 

Posted by 장안동베짱e :

하루하루 전쟁같은 일터에서 숨가쁘게 생활하다보면 정작 나는 무엇 때문에 왜 인생을 살고 있는지에 대해 생각할 틈조차 없는 경우가 많다. 

얼마 전 우연히 TV채널을 돌리다 SBS CNBC에서 '인문학, 최고의 공부 'Who Am I?'를 보고 이 질문에 대해서 생각해보게 되었다. 

인문학 아고라 '어떻게 살 것인가?'는 2013년에 이어 올해 2회를 맞은 인문학 강연 프로그램으로 재단법인 플라톤 아카데미와 고려대학교가 함께 기획하고, SBS CNBC가 방송했다. 

"우리는 어떻게 살아야 하는가?""우리는 무슨 목표를 갖고 살고 있는가?"

더 나아가 나 자신에게 질문을 던져보았다.

"나는 정말로 무엇을 좋아하는가?" "나는 정말로 무엇을 잘 하는가?" 

많은 경연 중에서도 행복에 대해 이야기한 서울대 최인철 교수의 강의가 내 마음에 가장 와 닿았다.

행복은 단순히 물질의 문제도 아니며, 지나치게 마음의 문제로만 인식하는 것도 위험하다는 말씀에 공감하게 되었다.  
요즘 힐링 열풍이 불면서 행복을 단순히 '스트레스가 없는 고요한 상태'로 잘못 이해하는 경우가 있는데, 실제로 행복이라는 감정은 보다 복잡 다단한 요소를 갖고 있다는 것을 알게 되었다. 모두가 행복을 추구하지만, 실제로 어떻게 하면 행복하게 살 수 있는지 구체적으로 아는 사람은 많지 않다.

■ 인문학, 최고의 공부 'Who Am I?' - 최인철 서울대 심리학과 교수

http://www.youtube.com/watch?v=8T5JHwYqMWU (아래 영상 중 17분 이후부터 시청) 


# 행복한 영혼을 위한 3대 영양소 - 자유, 유능감, 관계

사람은 누구나 유능하기를 꿈꾸기 마련이다. 행복한 삶이란 관심을 오래 유지하는 것, 
(grit : 뚝심, 기개 = 한번 세운 목표를 꾸준히 노력하여 달성하는 열정) 

최인철 서울대학교 행복연구센터 소장(심리학과 교수)이 언급한 '핵심 욕구'는 ▲ 얼마나 존중받는가(존중) ▲ 성장하는 느낌은 있는가(성장) ▲ 시간을 마음대로 쓸 수 있나(자율성) ▲ 잘하는 일을 했는가(유능감) ▲ 믿을 수 있는 사람이 있는가(관계) 등 크게 다섯 가지다.

1. 몇년째 추구하는 장기적인 목표가 있는가?

- 목표 달성이 주는 유능감이 행복을 준다.
- 행복의 또 다른 요소 = 호기심 = 관심의 원천 
- 뚝심있는 관심을 추구하는 과정 역시 삶의 행복.

2. 땀을 흘리는 신체 활동을 늘려라

- 행복한 삶의 조건 1. 재미 2. 의
- 최고의 행복을 주는 활동 : 운동 & 산책
- 규칙적인 운동이 주는 행복감이 높다.(운동은 집중력과 침착성은 높이고 충동성은 낮춘다.) 

3. 행복에 이르는 최고의 비법 = 여행  
여행을 좀 더 자주 가세요 = 벗어나는 즐거움. ( 걷기 > 놀기 > 말하기(수다) > 먹기) 
- 여행은 행복의 종합 선물세트, 행복의 부페
삶의 우선순위를 여행에 두면 시간과 돈을 마련할 수 있다.
재미와 의미 없는 가장 대표적인 것 : TV시청 > SNS > 문자하기 
  무의미한 활동을 줄여 번 시간으로 여행을 가라. 
행복은 철저하게 시간관리의 문제 : TV보는 시간을 줄이고 Digital Diet를 하라.

4. 돈과 행복은 어떻게 써야 행복해질까? 
소유물을 위한 소비를 할 것이냐, 체험을 위한 소비를 할 것이냐(에리히프롬 _소유냐 존재냐)
행복해지고자 한다면 돈으로 경험을 살 필요가 있다.
자녀를 위한 행복론_돈을 열심히 벌되, 경험에 투자하라.
돈에 대한 최고의 가르침_경험을 풍요롭게 하는 소비를 하라

5. 사회적 관계의 놀라운 힘
행복하고자 한다면 행복한 사람 옆에 있으면 된다. 좋은 사람들과 보내는 시간을 늘리는 것만큼 효과적인 방법이 없다. 
내가 먼저 주변에 행복을 퍼트리는 사람이 되자.  주변에 선한 영향력을 주는 것이야말로 진정한 행복.
- 어떤 사람과 시간을 보낼 것인가? 연인 > 자녀 > 배우자 > 부모 > 형제 > 친구 = Family & Friends 

6. 행복을 좌우하는 또하나의 요소, 공간
- 행복해지고 싶다만 나만의 아지트를 구축하라 
- 좋은 공동체의 조건 : 가정과 일터 그리고 제3의 공간 (카페, 커피숍, 서점, 이발소 등) 
  (요건 : 격식과 서열이 없는곳, 소박한 곳, 수다, 출입의 자유, 음식)
- 나에게는 제3의 공간이 있는가?
- 행복은 특별하지 않다. 일상의 일상을 위한 일상에 의한 행복이 중요.
- 마음을 바꾸는 것 만큼 중요한 것은 삶의 방식들을 조금씩 바꾸어 나가는 일 

'죽을 때 가장 후회하는 다섯 가지'_브로니 웨어

1. 내 뜻대로 한 번 살아봤었다면...
2. 일 좀 적당히 하면서 살 것을...
3. 내 기분에 솔직히 살았다면, 화내고 싶을 땐 화도 내고..
4. 오랜 친구들과 좀 더 가깝게 지낼 걸...
5. 좀 더 행복해지기 위해 도전해 볼 걸...


※ 비슷하지만 약간 다른 강연도 추천합니다.  
[인문학 지식향연 4회] 행복이란 무엇인가?-서울대 심리학과 최인철교수 


 
 http://www.midorisweb.com/1198

 





Posted by 장안동베짱e :



Posted by 장안동베짱e :


SW사업 대가산정 가이드(2015년)-민간용

SW사업 대가산정 가이드는 공공기관에서 SW의 기획·구현·운영 등 수명주기 전체사업 추진 시 활용한다. 예산수립·사업발주·계약 시 적정대가를 산정하는 기준이다. 공공부문 SW사업에 참여하는 공급자도 이를 활용할 수 있다.

....

 

https://www.sw.or.kr/biz/b_sdb_view.jsp?articleNo=27262&page=1&pageSize=10

 




Posted by 장안동베짱e :


걍 GIT관련 링크들..


[Git] 이클립스와 Git 연동하여 사용하기 :: 미르의 IT 정복기 http://itmir.tistory.com/461 Eclipse 에서 프로젝트를 Git 으로 공유하기 | Beany http://blog.beany.co.kr/archives/3407 Git - 리모트 저장소 http://git-scm.com/book/ko/v1/Git%EC%9D%98-%EA%B8%B0%EC%B4%88-%EB%A6%AC%EB%AA%A8%ED%8A%B8-%EC%A0%80%EC%9E%A5%EC%86%8C Ubuntu에서 Git Server 구성하기 (Part 1) http://ioriy2k.pe.kr/archives/5935 Jason Lee's blog :: Synology Nas에 Git 설치하기 http://evoue.tistory.com/40 [Git] Synology NAS 를 이용하여 git 서버 구성하기 - VCS 튜토리얼북 http://vcs.tutorialbook.co.kr/3 Free Mercurial and Git Client for Windows and Mac | Atlassian SourceTree http://www.sourcetreeapp.com/ TortoiseGit을 이용해 Github에 저장소 생성 및 데이터 올리기 - 나무를 심는 프로그래머 http://blog.hjf.pe.kr/57


Posted by 장안동베짱e :

서버의 아이디는 root이고 비밀번호는

1        : 설치한 날짜의 month의 16진수값

2 ~ 3  : month값 (01, 02, 03, ..., 11, 12)

4        : '-'

5 ~ 6  : day의 16진수값(01, 02, 03, ..., 0A, .., 1F)

7 ~ 8 : gcd(month, day) 값 이값은 01~12 사이


이렇게 정의해 놨습니다

이렇게 한 이유는 무차별 대입으로 해킹위험으로부터 서버를 방어하기 위한 방법인 것 같은데요. 계산하기 복잡하신 분을 위해 간단하게 구현해놨습니다.

왼쪽이 Month, 오른쪽이 Day

포스팅하는 날짜인 오늘 의 경우엔 12, 22를 넣어보면 c12-1602 라는 값이 나오네요


 

이 값을 넣어서 로그인 해줍니다. 주소값확인후 브라우저에 그 주소값을 넣어줍니다.혹시 안된다면 주소 : 5000 해주세요

 
http://comcs.tistory.com/12

 




Posted by 장안동베짱e :


Mac OS X v10.4 이상: 네트워크 연결을 통해 .DS_Store 파일 생성을 방지하는 방법

이 문서는 네트워크를 통한 .DS_Store 파일 생성을 방지하기 위한 정보가 포함된 고급 문서입니다.

이 문서는 아카이브 처리되었으며 Apple은 더 이상 이 문서를 업데이트하지 않습니다.

Finder를 사용하여 원격 파일 서버와 상호 작용할 때 .DS_Store 파일이 생성되지 않도록 Mac OS X 사용자 계정을 구성하려면 다음 단계를 따르십시오.

참고: 이는 사용자가 SMB/CIFS, AFP, NFS 및 WebDAV 서버와 상호 작용할 때 적용됩니다.

  1. 터미널을 엽니다.
  2. 다음 명령을 실행합니다. 
    defaults write com.apple.desktopservices DSDontWriteNetworkStores true
  3. 컴퓨터를 재시동하거나 사용자 계정에서 로그아웃했다 다시 로그인합니다.

동일한 컴퓨터에 있는 다른 사용자에 대해 .DS_Store 파일이 생성되지 않게 하려면 각 사용자 계정으로 로그인하여 위의 단계를 수행하거나, 새로 수정한 com.apple.desktopservices.plist 파일을 다른 사용자 계정의 ~/Library/Preferences 폴더로 복사합니다.

위의 단계를 수행해도 Finder가 로컬 볼륨에 대해 .DS_Store 파일을 생성하고 기존 .DS_Store 파일이 원격 파일 서버로 복사되는 데 영향을 끼치지 않습니다.

원격 파일 서버에서 .DS_Store 파일 생성을 비활성화하면 Finder에서 예기치 않은 동작이 나타날 수 있습니다. 여기를 클릭하면 예제를 확인할 수 있습니다.

 

http://support.apple.com/ko-kr/HT1629

 




Posted by 장안동베짱e :

1. "삼성계정" 업데이트에 대한 궁금점.

삼성 갤럭시 폰을 쓰다보면 

종종 "삼성계정"을 업데이트 해야 된다는 문구가 뜬다.


"삼성계정정보"를 업데이트 하라는것도 아니고

"삼성계정 이라는 앱"을 업데이트 하라는것도 아니고

"삼성계정"을 업데이트하라니...


문구가 뭘 업데이트 하겠다는건지 아리송해서 "삼성계정"이라는 앱이 있나 찾아봐도 안보이고..

실제로 업데이트를 선택해도 뭔가 업데이트 하는듯한 프로그래스바가 나오더니 업데이트를 하고는 아무 반응이 없다.


도데체 내폰에서 무슨일이 일어난거지??

"삼성계정"을 업데이트한다는 문구는 좀 단어 선택을 잘못 한듯...



2. 업데이트 히스토리에 대한 아쉬움.

그리고 뭐가 업데이트가 됐으면 뭐가 어떻게 업데이트 됐는지 히스토리도 좀 보여줬음 좋겠다. "삼성계정"을 업데이트 하는데 뭐 어떤게 바뀌는지 아무 정보가 없다. 업데이트 하고나서도 아무 정보를 주지 않는다. 하다 못해 완료되었습니다. 확인창도 없다.


같은 유형으로 집에 삼성스마트 TV를 쓰고 있는데 걔도 뭔가 앱들을 업데이트 할려고 하면 아무것도 알려주지 않는다. 스마트 앱들도 그렇고. TV펌웨어업데이트도 그렇고. 

업데이트를 해야 한다만 알려주고 무슨 내용이 업데이트 되는지를 알려주지 않는다. 그냥 하라는거다.

사용자들이 문제를 알기전에 은근슬쩍 업데이트하기의 전형적인 유형인듯...



암튼 정치만 소통이 필요한게 아니고, 사용자에게도 좀 제대로 된 소통이 필요한듯.

Posted by 장안동베짱e :


1. 첨부파일 압축해제 해서 

2. 나오는 파일 3개를 해당 프로젝트 폴더에 복사

3. Visual studio 에서 request_admin.rc만 프로젝트에 추가

4. Rebuild




관리자 권한으로 빌드.zip



실험을 해보긴 했는데 다른환경에서 안해봐서 100% 잘된다고는 보장하기 힘들어요.


그냥 실행파일에서 관리자권한으로 실행하면 되는데 굳이 이게 필요한 이유는

관리자 권한으로 빌드한 후에 디버그모드로 브레이크포인트 찍어가면서 실행해 볼수 있기 때문이죠...

아.. 당연히 관리자권한으로 빌드된 실행파일을 디버그 하려면 Visual Studio도 관리자 권한으로 실행시켜야 합니다.

 
참고 한 URI : http://www.tipssoft.com/bulletin/board.php?bo_table=FAQ&wr_id=1343

참고 한 URI : http://stackoverflow.com/questions/2110759/how-to-debug-with-visual-c-6-on-windows-7-x64

 




Posted by 장안동베짱e :

대충 Path, JAVA_HOME, CLASSPATH 이렇게 3가지만 설정하면 되는듯...

(JAVA를 자주 안써서 쓸때마다 환경변수 설정하려니 귀찮아서 적어둠.


(예제-환경에 따라 다를 수도 있음)

CLASSPATH

%JAVA_HOME%\jre\lib\ext;%JAVA_HOME%\lib\tools.jar


JAVA_HOME

C:\glassfish4\jdk7


Path

~~~쏼라쏼라~~~;%JAVA_HOME%\bin;


Posted by 장안동베짱e :

1             Background

 

1.     VMPlayer Image 이동이나 복사에서 MAC address 변경 발생.

A.      VMWare Image 경로를 변경 후에 VMPlayer을 실행하는 경우, Move/Copy를 확인 한다.


(기본값)”I copied it”을 선택하면, 기존의 VMWare Image와 충돌을 피하기 위하여서 새로운 MAC address가 생성 됩니다.

”I moved it”을 선택하면, 기존의 MAC address가 유지 됩니다.

2.     VMPlayer 실행에서 MAC address 고정의 필요성.

A.      IP 관리 프로그램의 환경을 위하여서 MAC address를 고정/편집 하여야 하는 경우.

B.      MAC address 테스트를 위하여서 MAC address를 고정/편집 하여야 하는 경우.

 

2             문서 개요

1.     “*.vmx” 파일을 편집하여서 MAC address를 고정하고 설정하는 방법.


 

3             *.vmx” 파일을 편집하여서 MAC address를 고정하고 설정하는 방법.

1.     사전 확인

VMWare Image 폴더에 있는 아래의 2개의 파일 이외의 파일을 image play 시에 자동으로 생성되는 파일입니다. 따라서 이외의 파일은 삭제가 가능합니다.

a.     “*.vmdk” 파일

Image disk 파일

b.     “*.vmx” 파일

Image play를 위한 설정 파일.

 

2.     “*.vmx”을 편집하여서 MAC address를 고정.

설정 파일을 변경하여서 Image MAC address 고정/편집 할 수 있습니다.

a.     ethernet0.addressType = "generated" “static”으로 변경.

ethernet0.addressType = "static" 으로 변경 한다.

b.     ethernet0.generatedAddressOffset = "0" 을 삭제.

c.     ethernet0.address = "00:0c:29:99:99:99" 에서 MAC address 변경.

위의 주소에서 "00:0c:29:99:99:99" 마지막 3개의 숫자만 변경이 가능하다. 앞에서 3개는 VMWare 에 고정 되어 있음.

d.     uuid.bios = "56 4d 53 96 20 90 8d f8-3e 14 23 61 88 99 99 99" 에 변경된 MAC address 적용.

위의 주소에서 "00:0c:29:99:99:99" 변경한 3개의 숫자를 bios 번호의 "56 4d 53 96 20 90 8d f8-3e 14 23 61 88 99 99 99" 마지막 번호에도 변경 적용.

마지막 3개의 숫자는 MAC address와 일치 하여야 합니다. 일치 하지 않는 경우 VM play 시작시에 설정 오류 발생.

e.     uuid.action = "keep"을 추가.

Bios 숫자가 고정 되어 있음을 알려 주어서 Image의 경로 이동 시에도 “move/copy” 확인 dialog가 발생하지 않도록 한다.

Posted by 장안동베짱e :


파이썬을 이용해 유용한 도구를 만들고 나서 사용할때 마다 일일히 파이썬 입력 모드 ( python interactive mode )에서 스크립트를 실행하려면 굉장히 불편합니다. ( 배치 파일을 이용해도 되긴 하겠지만 ) 그래서 찾아보니 작성한 파이썬 스크립트를 exe 실행 파일로 만들어주는 라이브러리가 존재하더군요. 바로 py2exe 입니다.


py2exe 바로 가기


사용법도 어렵지 않습니다. 사용하고 있는 파이썬 버전에 맞는 py2exe 라이브러리를 설치 하고, 간단한 코드 몇 줄을 추가하면 바로 실행 파일로 만들어낼 수 있습니다.


먼저 setup.py 파일을 만듭니다. 그리고 아래와 같이 코드를 입력하고, hello.py 부분에 자신의 파이썬 스크립트 파일명을 적어줍니다.

1
2
3
4
from distutils.core import setup
import py2exe
 
setup(console=['hello.py'])


그 다음 명령창에 아래와 같이 입력을 해줍니다.

> python setup.py py2exe


그러면 어지럽게 많은 문자열이 지나가고, dist 폴더에 여러 잡다한 파일과 함께 실행 파일이 생성된 것을 확인 할수 있습니다. 그런데 exe 실행 파일 하나만 가지고서는 실행이 안되는 것을 확인할 수 있을겁니다. dist 폴더에 같이 생성된 여러 잡다한 파일들이 필요하죠. py2exe 페이지를 보니 같이 생성된 파일들이 아래와 같은 역할을 한다고 합니다.



보기 좋게 하나의 파일로 나오면 좋겠는데 말이죠. 그래서 좀더 알아보니 약간의 옵션을 주는 것으로 실행 파일 하나로 만드는 방법이 있습니다. 위의 setup.py를 아래와 같이 조금 수정 해주면 됩니다.

1
2
3
4
5
6
7
8
9
10
from distutils.core import setup
import py2exe, sys, os
 
sys.argv.append('py2exe')
 
setup(
    options = {'py2exe': {'bundle_files': 1}},
    windows = [{'script': "hello.py"}],
    zipfile = None,
)

그리고 다시 명령창에 python setup.py py2exe 를 입력해줍니다. 그러면 아까와 다르게 dist 폴더에 실행파일만 덩그러니~ 생성된 것을 확인할 수 있습니다.

 


http://kindtis.tistory.com/481

 




Posted by 장안동베짱e :


일단 필요한 준비물은

- 이클립스 클래식 패키지

- 파이썬 최신버전

 

1. 이클립스 클래식 패키지를 http://www.eclipse.org/downloads/에서 자신의 사양에 맞는 패키지를 받아줍니다

 

(32비트 유저는 32비트, 64비트 유저는 64비트)



 

2. 파이썬을 설치해줍니다.

 

- 윈도우 환경에서의 설치법

http://www.python.org/download/에서

 

자신이 사용중인 컴퓨터의 CPU 정보를 알아보고 32비트 유저는 x86 MSI Installer를 받아 설치하고,

64비트 유저는 x86-64 MSI Installer를 받아 설치합니다.

(저는 64비트 유저입니다)



 

- 리눅스 환경에서의 설치법

터미널을 켜주시고, 콘솔창에서 su - root를 통해 root 권한을 취득합니다.

(취득하지 않을시, 거부가되어 다운로드를 받지 못합니다.)

 

root 권한을 취득한 다음, usr/local 경로로 가셔서

wget 명령어로

 

# wget http://python.org/ftp/python/2.5.1/Python-2.5.1.tgz

ftp 서버에서 파이썬을 다운로드 해줍니다. (보이시다시피 2.5.1버전)



 

그 다음, 받은 파이썬 압축파일을 Python25 경로에 압축 풀기를 해줍니다.

# tar -zxvf Python-2.5.1 Python25

 

받은 파이썬 2.5.1 버전을 Python25 경로로 복사해줍니다.

# mv Python-2.5.1 Python 25

 

파이썬 소스코드를 컴파일을 합니다.

# configure --prefix=/usr/local/Python25

# make && make install

# pwd

/usr/local/Python25

 

그다음, 파이썬이 제데로 설치 됬는지 파이썬 인프리터를 출력해봅니다.

# python

 

성공시 이렇게 되어야 합니다.



 

(필자는 Cent OS Relase 6.4 final 64bit를 사용했습니다.)

 

리눅스 환경에서는 설치를 해놓고 바로바로 코딩해주시면 됩니다.

 

(위 포스팅의 출처는 프로그래머라면 누구가 할 수 있는 파이썬 해킹 프로그래밍 저자 저스틴 지이츠, 옮기신분은 윤근용 작가님입니다. 본 포스팅에 대한 일부의 저작권은 저스틴 지이츠 작가님께 있음을 말씀드립니다.)

 

하지만, 윈도우 환경에서는 조금더 편하게 코딩하기 위하여 위에서 이클립스 클래식 패키지를 받았습니다.

 

- 이클립스와 파이썬을 연동하는 법

 

이클립스 클래식 패키지를 받으신 후에, 이클립스를 실행합니다.

 

(이클립스가 실행되지 않는다면 자바와 자바 개발 키트(JDK)를 C:\ 경로에 설치해주셔야 합니다.)

 

그 다음, Help - Install New Software 탭으로 이동하여 add를 눌러준후

 

Name 칸에는 아무렇게나 입력해주세요 (전 Pydev로 입력했습니다.)

 

Location 칸에는 http://pydev.org/updates를 입력해주세요



 

이과정을 성공하시면 pydev for eclipse라는 탭이 생깁니다.

 

그중에 PyDev 탭만 체크하셔서 받아줍니다. (밑에껀 옵션이기 때문에 사용자가 알아서 판단해주시고 받아주시면 됩니다.)

 



 

설치를 완료하면 Windows - preferences - Pydev라는 탭이 생깁니다.

 

그곳에서 Interprefer - Python 탭을 클릭합니다.

 



 

New를 누른후에, Browse를 누른후 파이썬을 설치한 경로로 들어가, python.exe를 선택해줍니다.

(필자는 C:\ 최상단에 설치하였습니다.)

 


 

그 다음 모든 항목을 체크해줍니다.

 



 

모든 작업을 완료한 이후에 apply를 통해 꼭 적용 시켜주셔야 합니다.

 

이로써 이클립스와 파이썬이 연동되었고, 지금부터 이클립스 상에서 파이썬을 사용하실수 있습니다.

 

프로그래밍에 대한 자세한 내용은 다음포스팅부터 하겠습니다.

 


 http://blog.naver.com/rhkdtjd0828/130165608608

 




Posted by 장안동베짱e :


예제소스
1
2
3
<html>
<script type="text/javascript">
	// to 에게 돈을 보내는 함수
	function thisisfunction(to)
	{
		document.write("I am Alice. I'll send money to " + to + "<BR>");
		// 쏼라쏼라..
	}
</script>

 <body>
  <input type="button" value="click" onclick=thisisfunction("Bob")>
 </body>
</html>


예제소스는 버튼을 누르면 thisisfunction()이라는 자바스크립트 함수를 실행해 I am Alice. I'll send money to Bob을 출력한다.

만약에 eve가 thisisfunction()함수를 수동으로 수행하고 싶으면 크롬메뉴->도구더보기->개발자 도구를 실행하고



콘솔탭을 선택한 뒤 해당 스크립트 함수를 직접 실행하면 된다.

그럼 아래과 같이 해당 자바스크립트 함수를 직접 실행 할수 있다.



물론 더 쉬운 방법으로는 아래 그림과 같이 주소창에 직접 입력하는 방법도 있다. 어떤게 편할지는 본인의 선택..!







Posted by 장안동베짱e :

요즘(예전부터 지금까지) 맛집을 검색할때 "오빠랑" 키워드를 넣어 검색하는게 유행이던데

그래서 일부러 광고성게시물도 오빠랑을 넣어서 게시하는게 트렌드...


이제 나도 포스트에 오빠랑을 넣어 봐야겠다.


오빠랑 Java HashMap동작과 해시 분포, 해시 충돌...

오빠랑 맥 OS X 화면공유(VNC)서비스 커맨드 창에서 활성화하기..


아 왠지 오빠랑 한다니깐 설레이는군..




Posted by 장안동베짱e :


서문

이 글의 주소는 http://www.kippler.com/doc/jpeg2000_vs_jpegxr/ 입니다. 이 문서의 글을 다른곳으로 복사하거나 스크랩 하지 마시기 바랍니다. 이 글을 참고하고자 할 경우는 이 글에 대한 링크만을 제공하시기 바랍니다.

문서 수정 기록


- 2007/12/15 최초 작성


서론


이미지 포맷에 대한 이해


BMP

마이크로 소프트에서 만든 이미지 저장 포맷. 비손실 기반의 이미지 포맷이며, 8비트 영상 포맷은 RLE압축을 지원하지만, 파일 포맷 자체가 영상의 크기를 줄이기 위해서 만든 포맷이 아니라, 영상을 손쉽고 빠르게 처리하기 위해서 만든 포맷이므로 압축하지 않은채 사용하는 경우가 많다. (RLE압축의 경우도 압축율이 매우 낮다)

파일을 만들거나 사용하기가 매우 쉽기 때문에, 크지 않은 이미지 파일을 처리하거나 간단한 이미지 파일 처리에 많이 사용된다.

GIF

비손실 압축으로 이미지를 저장하기 위하서 만든 포맷. 8비트 컬러(256컬러)만을 지원하므로 자연스러운 영상을 표현하기는 힘들지만, 비교적 비손실 압축이 잘 지원되고, 역사가 오래된 포맷이라서 웹에서 많이 쓰이는 포맷이다. 팔레트에 의한 투명 컬러를 지원하며, 애니메이션 포맷을 지원하기 때문에 웹상에서 간단한 애니메이션을 보여줄 때에는 이만한 포맷이 없다.

예전에는 특허문제로 사용에 문제가 많았으나 특허도 만료가 되어서 이제는 자유롭게 사용이 가능한 포맷이다.

PNG

GIF포맷의 256컬러 한계와, 특허 문제로 사용하기 힘들자 이를 극복하고자 만든 포맷. GIF보다 훨씬 나중에 만들어 졌기 때문에 압축율, 기능등 모든점이 뛰어나다. GIF와 마찬가지로 비손실 압축을 지원하며, 3비트/24비트/32비트 컬러 포맷을 지원한다. 특히 32비트 포맷은 RGB에 알파 채널이 추가된 포맷이기 때문에, 반투명 이미지를 구현하기에 매우 좋다.. 하지만 아직까지 PNG알파 채널을 지원하는 브라우저나 프로그램이 많지 않으며, 애니메이션 포맷인 MNG포맷도 거의 쓰이지 않고 있다. 원래의 목적인 GIF 포맷의 대치는 아직까지 달성하지 못하고 있다.

하지만, BMP/GIF 등에 비해서 장점이 워낙 많은 관계로 차세대 비손실 압축 영상 포맷의 표준이라고 봐도 좋을듯 하다.

JPG

위의 비손실 압축 포맷과는 달리 손실 압축을 지원하는 대표적인 이미지 포맷이다. 영상의 중요하지 않은 가시정보를 제거하는 방법으로 압축을 하기 때문에, 1/10정도로 영상의 크기를 줄여도 인간의 눈으로는 그 차이를 크게 구분하지 못하게 된다. 압축 방법은 DCT 알고리즘을 사용한다.

비손실 압축

데이터를 압축할때 원본의 정보를 버리지 않는 압축 방법. 예를 들어 BMP 파일을 PNG파일로 바꾸면 그 크기가 줄어들지만 원래의 정보는 그대로 남아 있기 때문에 PNG파일을 가지고 원래의 BMP파일을 그대로 복원해서 다시 만드는 것이 가능하다.

손실 압축

원본의 데이터 정보중 중요한 부분만을 남겨두고 나머지는 버리고 압축하는 방식. 이미지 파일을 JPG파일로 변환하면 인간의 눈이 차이를 잘 못느끼는 정보를 제거후 압축을 하므로 압축율을 크게 늘리는 것이 가능하지만, 원본의 정보가 손상이 되었으므로 100% 복원하는것이 불가능 하다. 하지만 압축율이 뛰어나므로, 저장공간이나 전송 수단이 제한되어 있는 경우 비손실 압축 방식에 비해서 더 많은 정보를 전달하는것이 가능해 지기 때문에 손실 압축을 많이 사용한다.


본론


Jpeg2000 소개


JPEG2000은 손실압축의 대표적인 JPEG포맷의 단점을 극복하고자 대충 2000년 전후로 만든 포맷인가 보다.(잘 모른다)

JPEG2000에 관련된 정보를 보면 이것저것 비교점을 나열하고 이런게 좋다고 써 있는데, 결국 제일 중요한건 "기존의 DCT 방식의 압축방식이 아닌 웨이블릿 변환을 이용한 압축방식을 사용해서 JPG보다 두배는 더 좋은 압축 효율을 얻을 수 있다" 가 관건이다.

즉, 기존의 JPG는 보통 1/10 정도로 파일을 압축해서 사용하는데(JPG는 손실압축이기 때문에 1/2 도 가능하고, 1/100도 가능하지만 보통 1/10정도가 많이 쓰이는 압축율이다) JPEG2000은 1/20으로 줄여도 JPG의 1/10로 압축한 영상과 비슷한 영상을 얻을 수 있다는 의미이다.

그러다 보니, 병원같이 X-RAY 사진을 고화질로 오래보관해야 되는 곳에서는 저장공간이 절반으로 줄어드는것은 경비 절감에 큰 효과가 있기 때문에 많이 쓰이고 있으며, 극장용 디지털 영화도 JPEG2000을 영상 압축 포맷으로 사용하고 있다.


그럼에도 불구하고..... 왜 이렇게 JPEG2000은 나온지 오래되었는데 아직도 JPEG을 대치하지 못하고 있는 것일까? 여기에는 여러가지 의견이 있지만, 나 자신의 개인적인 의견은 "압축율이 문제가 아니라 속도가 문제" 라는 것이다. 대표적인 무료 JPEG2000 라이브러리에는 OpenJpeg이나 Jasper 같은 라이브러리들이 있는데, 이 라이브러리들은 기존 jpeg라이브러리에 비하면 정말 극악한 속도를 자랑한다. ID 소프트에서 만든 문서를 참고해 보면, 이들 라이브러리는 최적화된 JPEG라이브러리에 비해서 100배정도 느리니, 겨우 저장 용량 절반 아끼자고 디카로 찍은 사진 파일을 JPEG2000으로 저장했다가는 나중에 이미지 뷰어로 원하는 사진을 찾지도 못할정도이다. 실제로 2004년쯤 꿀뷰2에서 jpeg2000을 지원하려고 해당 라이브러리를 테스트 해보았다가 그 속도에 놀라서 지원을 포기한 적도 있다.

그러던 중 최근 Kakadu라는 상용 JPEG2000 라이브러리를 테스트 해 보고 다른 무료 JPEG2000 라이브러리보다 10배 가까이 빨라진것을 보고, 이제는 JPEG2000도 쓸만해 졌구나 싶어서 꿀뷰3에서는 JPEG2000을 지원하기 시작하였다. 결론은, 이제는 컴퓨터도 빨라졌으니 좋은 라이브러리를 사용하면 JPEG2000도 쓸만한 포맷이 되었다는 것이다.


JPEG2000 이미지 파일의 확장자는 .jp2 와 .j2k 가 보통 쓰인다. .j2k 파일은 JPEG2000의 로우 이미지 스트림 포맷이고, jp2는 로우 이미지 스트림에 이미지에 대한 추가 정보를 덧씌운 컨테이너 포맷이다.


JPEG XR 소개


2006년 마이크로 소프트가 새로운 이미지 포맷을 만들어서 발표를 했으며, 마이크로 소프트가 이 포맷으로 JPEG 포맷을 대치하려 한다는 기사가 여기저기 나왔던 적이 있었다. 링크: zdnet 기사

포맷은 만들었지만, 아직 지원하는 프로그램도 없고 지원하는 기기도 없어서 좀 조용히 지나간다 했었는데, 어느순간 마소는 Windows Media Photo 라는 MS적인 이름을 버리고, HD Photo라는 이름으로 포맷이름을 바꾸어서 이 포맷을 차세대 영상 표준 포맷으로 바꾸는 작업을 진행하고 있었다. 링크: HD PHOTO 홈페이지

그러더니 몇달전 드디어 HD Photo 라는 이름마저도 버리고 JPEG XR이라는 이름으로 JPEG 그룹에서 표준화 검토를 한다는 소식이 들려오기 시작했다. 관련 기사를 보면, 2007년 검토 작업에 들어갔으며, 별 문제가 없는한 2008년 HD Photo는 JPEG XR이라는 이름으로 JPEG2000 과 더불어JPEG의 뒤를 이을 차세대 영상 포맷이 될꺼라는 거다.

위에서 언급한 JPEG2000처럼 JPEG XR은 JPEG 보다 2배 정도의 압축 효율을 보여준다. 즉 100KB의 JPEG파일과 동일한 화질을 JPEG2000과 JPEG XR파일은 50KB의 파일로 만들 수 있다는 것이다.

사실 압축 효율만으로 따지면 JPEG XR은 JPEG2000보다 그다지 우수하지 않다. MSU 에서 비교한 자료를 보면 JPEG2000이 훨씬 나중에 만들어진 JPEG XR보다 동일 용량대비 화질이 더 우수다하고 평가를 내리고 있다. (JPEG XR을 만들고 있는 BILL CROW는 자신의 블로그에서 그렇지 않다고 반박하고 있다.) MSU 와 BILL CROW의 내용을 살펴보면, 결론은 JPEG2000이나 JPEG XR이나 JPEG보다는 우수하지만, 결국 압축율은 고만고만 하다는 것이 내 결론이다. 직접 몇가지 테스트도 해 보았지만, 서로 압축방식이 달라서 어떤 경우는 JPEG2000이, 어떤 경우는 JPEG XR이 더 보기 좋았다.(SNR 테스트는 안해 봤다는 의미)


그렇다면, JPEG XR의 존재 의미는 무엇일까? 테스트를 위해서 HD Photo Device Porting Kit 1.0을 다운로드 받아서 JPEG XR 디코더를 만들고 속도를 테스트 해 보았다. 얼래? 속도가 빨랐다. 다운로드 받은 소스는 MMX, SSE 와는 거리가 먼 C로 된 소스였음에도 불구하고, JPEG2000의 KAKADU와 비슷한 속도를 내는 것이아닌가? 윗글에서 JPEG2000이 성공하지 못한 이유를 그놈의 속도 때문이라고 정의를 내렸는데, JPEG XR은 단순히 C로 된 소스가 최적화한 상용 라이브러리인 KAKADU 보다도 빠른것 이었다. 더군다나 JPEG XR은 부동소수점 연산을 사용하지 않고, 정수연산만으로 만들어 졌기 때문에 PC이외의 휴대용 기기에 포팅이 무척 쉽다는 설명도 얻을 수 있었다. 즉, 디카에서 찍은 사진을 JPEG2000으로 저장하는건 무척 힘들지만 JPEG XR로 만드는것은 조만간 가능해 질것이라는 것이다.

공개된 소스를 살펴보고, 관련 글을 보면서 JPEG XR의 장점은 명확해져 갔다. 기존의 이미지 포맷은 RGB를 8비트(256단계)나 12비트로만 저장하였지만 JPEG XR은 32BIT까지 지원 가능하다라고 하는데, 사실 이거는 하이엔드급 디카에나 바랄 사항이니까 뭐 그런가 보다 했는데, JPEG XR은 알파 채널을 지원해서 저장하는것도 가능하고, 비손실 압축도 지원한다는 것이다. 특히 비손실 압축을 할 경우 압축율이 기존 비손실 압축 포맷의 최강자였던 PNG포맷보다도 좋다는 것이다.


JPEG XR의 장점을 열거해 보자면

MS가 특허권에 대한 권리 행사를 하지 않기로 약속했기 때문에 완전 무료 사용이 가능한 포맷이다.

손실압축을 사용할 경우, 효율이 JPEG보다 두배정도 뛰어나다.

JPEG 보다 훨씬 정밀도가 높은 데이터 포맷의 저장이 가능하다.

JPEG2000 보다 영상 처리 속도가 빠르다. PC뿐만 아니라 정수연산만 가능한 휴대용 기기로의 포팅이 쉽다.

비손실 압축을 지원한다. 비손실 압축 저장시 PNG보다 압축 효율이 뛰어나다. 즉, 디카에서 RAW포맷 저장시 비손실 압축 저장용 포맷으로 사용한다던가 하는것이 가능하다.

알파 채널을 지원한다. 반투명한 이미지를 처리할 수 있다는 의미이다. 기존에는 PNG포맷이 이 용도로 많이 쓰였다.

애니메이션 GIF처럼, 하나의 파일에 여러장의 이미지를 저장하는것이 가능하다. 즉, 웹상에서 ANIMATION GIF보다 훨씬 높은 압축 효율로 에니메이션을 구현하는것이 가능하다.


즉, 기존에 존재하는 모든 이미지 포맷의 장점을 하나의 포맷에 담아버린것이다. 헉쓰...

JPEG XR은 Windows Vista에서는 Windows Media Photo라는 이름으로 지원되고 있으며 확장자는 .wdp 를 사용하고 있다. 하지만, 포맷의 이름이 HD Photo로 바뀌면서 앞으로는 .hdp 라는 확장자를 표준 확장자 포맷으로 사용할 예정이다. 현재 JPEG XR 이라는 이름으로 표준화 작업이 진행되고 있지만, HD Photo라는 이름이 아마도 계속 사용될 듯 하다.


결론


- JPEG XR(혹은 HD PHOTO) 킹왕짱~ 굿!

 
 http://www.kippler.com/doc/jpeg2000_vs_jpegxr/

 




Posted by 장안동베짱e :


Java HashMap은 어떻게 동작하는가?

이 글은 Java 7과 Java 8을 기준으로 HashMap이 어떻게 구현되어 있는지 설명합니다. HashMap 자체의 소스 코드는 Oracle JDK나 OpenJDK나 같기 때문에, 이 글이 설명하는 HashMap 구현 방식은 Oracle JDK와 OpenJDK 둘 모두에 해당한다고 할 수 있습니다. Java가 아닌 다른 언어를 주로 사용하는 개발자라 하더라도, Java의 HashMap이 현재 어떻게 구현되어 있고, 어떻게 발전되었는지 알면 라이브러리나 프레임워크 구현에 대한 혜안을 얻을 수 있을 것이라고 기대합니다.

HashMap은 Java Collections Framework에 속한 구현체 클래스입니다. Java Collections Framework는 1998년 12월에 발표한 Java 2에서 정식으로 선보였습니다. Map 인터페이스 자체는 Java 5에서 Generic이 적용된 것 외에 처음 선보인 이후 변화가 없지만, HashMap 구현체는 성능을 향상시키기 위해 지속적으로 변화해 왔습니다.

이 글에서는 어떤 방식으로 HashMap 구현체의 성능을 향상시켰는지 소개합니다. 구체적으로 다루는 내용은 Amortized Constant Time을 위하여 어떻게 해시 충돌(hash collision) 가능성을 줄이고 있는가에 대한 것입니다.


HashMap과 HashTable

이 글에서 말하는 HashMap과 HashTable은 Java의 API 이름이다. HashTable이란 JDK 1.0부터 있던 Java의 API이고, HashMap은 Java 2에서 처음 선보인 Java Collections Framework에 속한 API다. HashTable 또한 Map 인터페이스를 구현하고 있기 때문에 HashMap과 HashTable이 제공하는 기능은 같다. 다만 HashMap은 보조 해시 함수(Additional Hash Function)를 사용하기 때문에 보조 해시 함수를 사용하지 않는 HashTable에 비하여 해시 충돌(hash collision)이 덜 발생할 수 있어 상대으로 성능상 이점이 있다. 보조 해시 함수가 아니더라도, HashTable 구현에는 거의 변화가 없는 반면, HashMap은 지속적으로 개선되고 있다. HashTable의 현재 가치는 JRE 1.0, JRE 1.1 환경을 대상으로 구현한 Java 애플리케이션이 잘 동작할 수 있도록 하위 호환성을 제공하는 것에 있기 때문에, 이 둘 사이에 성능과 기능을 비교하는 것은 큰 의미가 없다고 할 수 있다.

HashMap과 HashTable을 정의한다면, '키에 대한 해시 값을 사용하여 값을 저장하고 조회하며, 키-값 쌍의 개수에 따라 동적으로 크기가 증가하는 associate array'라고 할 수 있다. 이 associate array를 지칭하는 다른 용어가 있는데, 대표적으로 Map, Dictionary, Symbol Table 등이다.


예제 1 HashTable과 HashMap의 선언부

public class 8ccce55530bc3477c678dd9921b60f3e.gifHashtable<K,V> extends Dictionary<K,V>
implements Map<K,V>, Cloneable, java.io.Serializable {

public class
928b3cc3fe40d69cd06cbe7f5f3767f8.gifHashMap<K,V> extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable {

 

associative array를 지칭하기 위하여 HashTable에서는 Dictionary라는 이름을 사용하고, HashMap에서는 그 명칭이 그대로 말하듯이 Map이라는 용어를 사용하고 있다.

map(또는 mapping)은 원래 수학 함수에서의 대응 관계를 지칭하는 용어로, 경우에 따라서는 함수 자체를 의미하기도 한다. 즉 HashMap이란 이름에서 알 수 있듯이, HashMap은 키 집합인 정의역과 값 집합인 공역의 대응에 해시 함수를 이용한다.

c9d57790bcff6642113a9153cde4d731.png

그림 1 함수에서의 사상(map)



해시 분포와 해시 충돌

동일하지 않은 어떤 객체 X와 Y가 있을 때, 즉 X.equals(Y)가 '거짓'일 때 X.hashCode() != Y.hashCode()가 같지 않다면, 이때 사용하는 해시 함수는 완전한 해시 함수(perfect hash functions)라고 한다(dbf325a861876c4c5b3adbbe7e55c8d0.png: S는 모든 객체의 집합, h는 해시 함수).

Boolean같이 서로 구별되는 객체의 종류가 적거나, Integer, Long, Double 같은 Number 객체는 객체가 나타내려는 값 자체를 해시 값으로 사용할 수 있기 때문에 완전한 해시 함수 대상으로 삼을 수 있다. 하지만 String이나 POJO(plain old java object)에 대하여 완전한 해시 함수를 제작하는 것은 사실상 불가능하다.

적은 연산만으로 빠르게 동작할 수 있는 완전한 해시 함수가 있다고 하더라도, 그것을 HashMap에서 사용할 수 있는 것은 아니다. HashMap은 기본적으로 각 객체의 hashCode() 메서드가 반환하는 값을 사용하는 데, 결과 자료형은 int다. 32비트 정수 자료형으로는 완전한 자료 해시 함수를 만들 수 없다. 논리적으로 생성 가능한 객체의 수가 232보다 많을 수 있기 때문이며, 또한 모든 HashMap 객체에서 O(1)을 보장하기 위해 랜덤 접근이 가능하게 하려면 원소가 232인 배열을 모든 HashMap이 가지고 있어야 하기 때문이다.

따라서 HashMap을 비롯한 많은 해시 함수를 이용하는 associative array 구현체에서는 메모리를 절약하기 위하여 실제 해시 함수의 표현 정수 범위 214da4c89b870470892f166c2be539ae.png보다 작은 M개의 원소가 있는 배열만을 사용한다. 따라서 다음과 같이 객체에 대한 해시 코드의 나머지 값을 해시 버킷 인덱스 값으로 사용한다.


예제 2 해시를 사용하는 associative array 구현체에서 저장/조회할 해시 버킷을 계산하는 방법

int index = X.hashCode() % M;

 

이 코드와 같은 방식을 사용하면, 서로 다른 해시 코드를 가지는 서로 다른 객체가 1/M의 확률로 같은 해시 버킷을 사용하게 된다. 이는 해시 함수가 얼마나 해시 충돌을 회피하도록 잘 구현되었느냐에 상관없이 발생할 수 있는 또 다른 종류의 해시 충돌이다. 이렇게 해시 충돌이 발생하더라도 키-값 쌍 데이터를 잘 저장하고 조회할 수 있게 하는 방식에는 대표적으로 두 가지가 있는데, 하나는 Open Addressing이고, 다른 하나는 Separate Chaining이다. 이 둘 외에도 해시 충돌을 해결하기 위한 다양한 자료 구조가 있지만, 거의 모두 이 둘을 응용한 것이라고 할 수 있다.

32fdcc793a06e0f0335f9a00062951b5.png

그림 2 Open Addressing과 Separate Chaining 구조


Open Addressing은 데이터를 삽입하려는 해시 버킷이 이미 사용 중인 경우 다른 해시 버킷에 해당 데이터를 삽입하는 방식이다. 데이터를 저장/조회할 해시 버킷을 찾을 때에는 Linear Probing, Quadratic Probing 등의 방법을 사용한다.

Separate Chaining에서 각 배열의 인자는 인덱스가 같은 해시 버킷을 연결한 링크드 리스트의 첫 부분(head)이다.

둘 모두 Worst Case O(M)이다. 하지만 Open Addressing은 연속된 공간에 데이터를 저장하기 때문에 Separate Chaining에 비하여 캐시 효율이 높다. 따라서 데이터 개수가 충분히 적다면 Open Addressing이 Separate Chaining보다 더 성능이 좋다. 하지만 배열의 크기가 커질수록(M 값이 커질수록) 캐시 효율이라는 Open Addressing의 장점은 사라진다. 배열의 크기가 커지면, L1, L2 캐시 적중률(hit ratio)이 낮아지기 때문이다.

Java HashMap에서 사용하는 방식은 Separate Channing이다. Open Addressing은 데이터를 삭제할 때 처리가 효율적이기 어려운데, HashMap에서 remove() 메서드는 매우 빈번하게 호출될 수 있기 때문이다. 게다가 HashMap에 저장된 키-값 쌍 개수가 일정 개수 이상으로 많아지면, 일반적으로 Open Addressing은 Separate Chaining보다 느리다. Open Addressing의 경우 해시 버킷을 채운 밀도가 높아질수록 Worst Case 발생 빈도가 더 높아지기 때문이다. 반면 Separate Chaining 방식의 경우 해시 충돌이 잘 발생하지 않도록 '조정'할 수 있다면 Worst Case 또는 Worst Case에 가까운 일이 발생하는 것을 줄일 수 있다(여기에 대해서는 "보조 해시 함수"에서 설명하겠다).


예제 3 Java 7에서의 해시 버킷 관련 구현

transient Entry<K,V>[] table = (Entry<K,V>[]) EMPTY_TABLE;
// transient로 선언된 이유는 직렬화(serializ)할 때 전체, table 배열 자체를 직렬화하는 것보다
// 키-값 쌍을 차례로 기록하는 것이 더 효율적이기 때문이다.


static class Entry<K,V> implements Map.Entry<K,V> {
final K key;
V value;
Entry<K,V> next;
int hash;

Entry(int h, K k, V v, Entry<K,V> n) {
value = v;
next = n;
key = k;
hash = h;
}

public final K getKey() { … }
public final V getValue() { …}
public final V setValue(V newValue) { … }
public final boolean equals(Object o) { … }
public final int hashCode() {…}
public final String toString() { …}

void recordAccess(HashMap<K,V> m) {… }

void recordRemoval(HashMap<K,V> m) {…}
}

 

Separate Chaining 방식을 사용하기 때문에, Java 7에서의 put() 메서드 구현은 예제 4에서 보는 것과 같다.


예제 4 put() 메서드 구현

public V put(K key, V value) {
if (table == EMPTY_TABLE) {
inflateTable(threshold); // table 배열 생성
}

// HashMap에서는 null을 키로 사용할 수 있다.
if (key == null)
return putForNullKey(value);
// value.hashCode() 메서드를 사용하는 것이 아니라, 보조 해시 함수를 이용하여
// 변형된 해시 함수를 사용한다. "
보조 해시 함수" 단락에서 설명한다.
int hash = hash(key);

// i 값이 해시 버킷의 인덱스이다.
// indexFor() 메서드는 hash % table.length와 같은 의도의 메서드다.
int i = indexFor(hash, table.length);


// 해시 버킷에 있는 링크드 리스트를 순회한다.
// 만약 같은 키가 이미 저장되어 있다면 교체한다.
for (Entry<K,V> e = table[i]; e != null; e = e.next) {
Object k;
if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {
V oldValue = e.value;
e.value = value;
e.recordAccess(this);
return oldValue;
}
}

// 삽입, 삭제 등으로 이 HashMap 객체가 몇 번이나 변경(modification)되었는지
// 관리하기 위한 코드다.
// ConcurrentModificationException를 발생시켜야 하는지 판단할 때 사용한다.
modCount++;

// 아직 해당 키-값 쌍 데이터가 삽입된 적이 없다면 새로 Entry를 생성한다.
addEntry(hash, key, value, i);
return null;
}

 

그러나 Java 8에서는 예제 4에서 볼 수 있는 것보다 더 발전된 방식을 사용한다.



Java 8 HashMap에서의 

Separate Chaining

Java 2부터 Java 7까지의 HashMap에서 Separate Chaining 구현 코드는 조금씩 다르지만, 구현 알고리즘 자체는 같았다. 만약 객체의 해시 함수 값이 균등 분포(uniform distribution) 상태라고 할 때, get() 메서드 호출에 대한 기댓값은 ba4efe5a563bd1ff41f41932ae315fde.png이다. 그러나 Java 8에서는 이보다 더 나은 4a2141cb355bb338f423d1a68ded982a.png을 보장한다. 데이터의 개수가 많아지면, Separate Chaining에서 링크드 리스트 대신 트리를 사용하기 때문이다.

데이터의 개수가 많아지면 6e38ff11110d6e54919ebe4d12e49c9f.png과 cc38a82b653c7a3363cf8c20528fb956.png의 차이는 무시할 수 없다. 게다가 실제 해시 값은 균등 분포가 아닐뿐더러, 설사 균등 분포를 따른다고 하더라도 birthday problem이 설명하듯 일부 해시 버킷 몇 개에 데이터가 집중될 수 있다. 그래서 데이터의 개수가 일정 이상일 때에는 링크드 리스트 대신 트리를 사용하는 것이 성능상 이점이 있다.

링크드 리스트를 사용할 것인가 트리를 사용할 것인가에 대한 기준은 하나의 해시 버킷에 할당된 키-값 쌍의 개수이다. 예제 5에서 보듯 Java 8 HashMap에서는 상수 형태로 기준을 정하고 있다. 즉 하나의 해시 버킷에 8개의 키-값 쌍이 모이면 링크드 리스트를 트리로 변경한다. 만약 해당 버킷에 있는 데이터를 삭제하여 개수가 6개에 이르면 다시 링크드 리스트로 변경한다. 트리는 링크드 리스트보다 메모리 사용량이 많고, 데이터의 개수가 적을 때 트리와 링크드 리스트의 Worst Case 수행 시간 차이 비교는 의미가 없기 때문이다. 8과 6으로 2 이상의 차이를 둔 것은, 만약 차이가 1이라면 어떤 한 키-값 쌍이 반복되어 삽입/삭제되는 경우 불필요하게 트리와 링크드 리스트를 변경하는 일이 반복되어 성능 저하가 발생할 수 있기 때문이다.

예제 5 Java 8 HashMap의 TREEIFY_THRESHOLD와 UNTREEIFY_THRESHOLD

static final int TREEIFY_THRESHOLD = 8;

static final int UNTREEIFY_THRESHOLD = 6;

 

Java 8 HashMap에서는 Entry 클래스 대신 Node 클래스를 사용한다. Node 클래스 자체는 사실상 Java 7의 Entry 클래스와 내용이 같지만, 링크드 리스트 대신 트리를 사용할 수 있도록 하위 클래스인 TreeNode가 있다는 것이 Java 7 HashMap과 다르다.

이때 사용하는 트리는 Red-Black Tree인데, Java Collections Framework의 TreeMap과 구현이 거의 같다. 트리 순회 시 사용하는 대소 판단 기준은 해시 함수 값이다. 해시 값을 대소 판단 기준으로 사용하면 Total Ordering에 문제가 생기는데, Java 8 HashMap에서는 이를 tieBreakOrder() 메서드로 해결한다.

예제 6 Java 8 HashMap의 Node 클래스

transient Node<K,V>[] table;


static class Node<K,V> implements Map.Entry<K,V> {
// 클래스 이름은 다르지만, Java 7의 Entry 클래스와 구현 내용은 같다.
}


// LinkedHashMap.Entry는 HashMap.Node를 상속한 클래스다.
// 따라서 TreeNode 객체를 table 배열에 저장할 수 있다.
static final class TreeNode<K,V> extends LinkedHashMap.Entry<K,V> {

TreeNode<K,V> parent;
TreeNode<K,V> left;
TreeNode<K,V> right;
TreeNode<K,V> prev;

// Red Black Tree에서 노드는 Red이거나 Black이다.
boolean red;

TreeNode(int hash, K key, V val, Node<K,V> next) {
super(hash, key, val, next);
}

final TreeNode<K,V> root() {
// Tree 노드의 root를 반환한다.
}

static <K,V> void moveRootToFront(Node<K,V>[] tab, TreeNode<K,V> root) {
// 해시 버킷에 트리를 저장할 때에는, root 노드에 가장 먼저 접근해야 한다.
}


// 순회하며 트리 노드 조회
final TreeNode<K,V> find(int h, Object k, Class<?> kc) {}
final TreeNode<K,V> getTreeNode(int h, Object k) {}


static int tieBreakOrder(Object a, Object b) {
// TreeNode에서 어떤 두 키의comparator 값이 같다면 서로 동등하게 취급된다.
// 그런데 어떤 두 개의 키의 hash 값이 서로 같아도 이 둘은 서로 동등하지
// 않을 수 있다. 따라서 어떤 두 개의 키에 대한 해시 함수 값이 같을 경우,
// 임의로 대소 관계를 지정할 필요가 있는 경우가 있다.
}


final void treeify(Node<K,V>[] tab) {
// 링크드 리스트를 트리로 변환한다.
}


final Node<K,V> untreeify(HashMap<K,V> map) {
// 트리를 링크드 리스트로 변환한다.
}

// 다음 두 개 메서드의 역할은 메서드 이름만 읽어도 알 수 있다.
final TreeNode<K,V> putTreeVal(HashMap<K,V> map, Node<K,V>[] tab,
int h, K k, V v) {}
final void removeTreeNode(HashMap<K,V> map, Node<K,V>[] tab,
boolean movable) {}


// Red Black 구성 규칙에 따라 균형을 유지하기 위한 것이다.
final void split (…)
static <K,V> TreeNode<K,V> rotateLeft(…)
static <K,V> TreeNode<K,V> rotateRight(…)
static <K,V> TreeNode<K,V> balanceInsertion(…)
static <K,V> TreeNode<K,V> balanceDeletion(…)


static <K,V> boolean checkInvariants(TreeNode<K,V> t) {
// Tree가 규칙에 맞게 잘 생성된 것인지 판단하는 메서드다.
}
}

 

해시 버킷 동적 확장

해시 버킷의 개수가 적다면 메모리 사용을 아낄 수 있지만 해시 충돌로 인해 성능상 손실이 발생한다. 그래서 HashMap은 키-값 쌍 데이터 개수가 일정 개수 이상이 되면, 해시 버킷의 개수를 두 배로 늘린다. 이렇게 해시 버킷 개수를 늘리면 1c8e5326e405cf2924262ae433d1baef.png 값도 작아져, 해시 충돌로 인한 성능 손실 문제를 어느 정도 해결할 수 있다.

해시 버킷 개수의 기본값은 16이고, 데이터의 개수가 임계점에 이를 때마다 해시 버킷 개수의 크기를 두 배씩 증가시킨다. 버킷의 최대 개수는 230개다. 그런데 이렇게 버킷 개수가 두 배로 증가할 때마다, 모든 키-값 데이터를 읽어 새로운 Separate Chaining을 구성해야 하는 문제가 있다. HashMap 생성자의 인자로 초기 해시 버킷 개수를 지정할 수 있으므로, 해당 HashMap 객체에 저장될 데이터의 개수가 어느 정도인지 예측 가능한 경우에는 이를 생성자의 인자로 지정하면 불필요하게 Separate Chaining을 재구성하지 않게 할 수 있다.

예제 7 Java 7 HashMap에서의 해시 버킷 확장

  // 인자로 사용하는 newCapacity는 언제나 2a이다.
void resize(int newCapacity) {
Entry[] oldTable = table;
int oldCapacity = oldTable.length;

// MAXIMIM_CAPACITY는 230이다.
if (oldCapacity == MAXIMUM_CAPACITY) {
threshold = Integer.MAX_VALUE;
return;
}

Entry[] newTable = new Entry[newCapacity];

// 새 해시 버킷을 생성한 다음 기존의 모든 키-값 데이터들을
// 새 해시 버킷에 저장한다.
transfer(newTable, initHashSeedAsNeeded(newCapacity));
table = newTable;
threshold = (int)Math.min(newCapacity * loadFactor, MAXIMUM_CAPACITY + 1);
}


void transfer(Entry[] newTable, boolean rehash) {
int newCapacity = newTable.length;
// 모든 해시 버킷을 순회하면서
for (Entry<K,V> e : table) {
// 각 해시 버킷에 있는 링크드 리스트를 순회하면서
while(null != e) {
Entry<K,V> next = e.next;
if (rehash) {
e.hash = null == e.key ? 0 : hash(e.key);
}
// 해시 버킷 개수가 변경되었기 때문에
// index 값(hashCode % M)을 다시 계산해야 한다.
int i = indexFor(e.hash, newCapacity);
e.next = newTable[i];
newTable[i] = e;
e = next;
}
}
}

 

해시 버킷 크기를 두 배로 확장하는 임계점은 현재의 데이터 개수가 'load factor * 현재의 해시 버킷 개수'에 이를 때이다. 이 load factor는 0.75 즉 3/4이다. 이 load factor 또한 HashMap의 생성자에서 지정할 수 있다.

임계점에 이르면 항상 해시 버킷 크기를 두 배로 확장하기 때문에, N개의 데이터를 삽입했을 때의 키-값 쌍 접근 횟수는 다음과 같이 분석할 수 있다.

b3ceaccf7a89936ac79dbfdaee78dcbb.png

즉 기본 생성자로로 생성한 HashMap을 이용하여 많은 양의 데이터를 삽입할 때에는, 최적의 해시 버킷 개수를 지정한 것보다 약 2.5배 많이 키-값 쌍 데이터에 접근해야 한다. 이는 곧 수행 시간이 2.5배 길어진다고 할 수 있다. 따라서 성능을 높이려면, HashMap 객체를 생성할 때 적정한 해시 버킷 개수를 지정해야 한다.

그런데 이렇게 해시 버킷 크기를 두 배로 확장하는 것에는 결정적인 문제가 있다. 해시 버킷의 개수 M이 2형태가 되기 때문에, index = X.hashCode() % M을 계산할 때 X.hashCode()의 하위 a개의 비트만 사용하게 된다는 것이다. 즉 해시 함수가 32비트 영역을 고르게 사용하도록 만들었다 하더라도 해시 값을 2의 승수로 나누면 해시 충돌이 쉽게 발생할 수 있다.

이 때문에 보조 해시 함수가 필요하다.

보조 해시 함수

index = X.hashCode() % M을 계산할 때 사용하는 M 값은 소수일 때 index 값 분포가 가장 균등할 수 있다. 그러나 M 값이 소수가 아니기 때문에 별도의 보조 해시 함수를 이용하여 index 값 분포가 가급적 균등할 수 있도록 해야 한다.

보조 해시 함수(supplement hash function)의 목적은 '키'의 해시 값을 변형하여, 해시 충돌 가능성을 줄이는 것이다. 이 보조 해시 함수는 JDK 1.4에 처음 등장했다. Java 5 ~ Java 7은 같은 방식의 보조 해시 함수를 사용하고, Java 8부터는 다시 새로운 방식의 보조 해시 함수를 사용하고 있다.

예제 8 Java 7 HashMap에서의 보조 해시 함수

final int hash(Object k) {
// Java 7부터는 JRE를 실행할 때, 데이터 개수가 일정 이상이면
// String 객체에 대해서 JVM에서 제공하는 별도의 옵션으로
// 해시 함수를 사용하도록 할 수 있다.
// 만약 이 옵션을 사용하지 않으면 hashSeed의 값은 0이다.
int h = hashSeed;
if (0 != h && k instanceof String) {
return sun.misc.Hashing.stringHash32((String) k);
}
h ^= k.hashCode();
// 해시 버킷의 개수가 2a이기 때문에 해시 값의 a비트 값만을
// 해시 버킷의 인덱스로 사용한다. 따라서 상위 비트의 값이
// 해시 버킷의 인덱스 값을 결정할 때 반영될 수 있도록
// shift 연산과 XOR 연산을 사용하여, 원래의 해시 값이 a비트 내에서
// 최대한 값이 겹치지 않고 구별되게 한다.
h ^= (h >>> 20) ^ (h >>> 12);
return h ^ (h >>> 7) ^ (h >>> 4);
}

 

그런데 Java 8에서는 Java 7보다 훨씬 더 단순한 형태의 보조 해시 함수를 사용한다.

예제 9 Java 8 HashMap에서의 보조 해시 함수

static final int hash(Object key) {
int h;
return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
}

 

예제 9에서 볼 수 있는 것처럼, Java 8 HashMap 보조 해시 함수는 상위 16비트 값을 XOR 연산하는 매우 단순한 형태의 보조 해시 함수를 사용한다. 이유로는 두 가지가 있는데, 첫 번째는 Java 8에서는 해시 충돌이 많이 발생하면 링크드 리스트 대신 트리를 사용하므로 해시 충돌 시 발생할 수 있는 성능 문제가 완화되었기 때문이다. 두 번째로는 최근의 해시 함수는 균등 분포가 잘 되게 만들어지는 경향이 많아, Java 7까지 사용했던 보조 해시 함수의 효과가 크지 않기 때문이다. 두 번째 이유가 좀 더 결정적인 원인이 되어 Java 8에서는 보조 해시 함수의 구현을 바꾸었다.

개념상 해시 버킷 인덱스를 계산할 때에는 index = X.hashCode() % M처럼 나머지 연산을 사용하는 것이 맞지만, M값이 2a일 때는 해시 함수의 하위 a비트 만을 취한 것과 값이 같다. 따라서 나머지 연산 대신 '1 << a – 1' 와 비트 논리곱(AND, &) 연산을 사용하면 수행이 훨씬 더 빠르다.

String 객체에 대한 해시 함수

String 객체에 대한 해시 함수 수행 시간은 문자열 길이에 비례한다.

때문에 JDK 1.1에서는 String 객체에 대해서 빠르게 해시 함수를 수행하기 위해, 일정 간격의 문자에 대한 해시를 누적한 값을 문자열에 대한 해시 함수로 사용했다.

예제 10 JDK 1.1에서의 String 클래스 해시 함수

public int hashCode() {
int hash = 0;
int skip = Math.max(1, length() / 8);
for (int i = 0; i < length(): i+= skip)
hash = s[i] + (37 * hash);
return hash;
}

 

예제 10에서 볼 수 있듯이 모든 문자에 대한 해시 함수를 계산하는 게 아니라, 문자열의 길이가 16을 넘으면 최소 하나의 문자를 건너가며 해시 함수를 계산했다.

그러나 이런 방식은 심각한 문제를 야기했다. 웹상의 URL은 길이가 수십 글자에 이르면서 앞 부분은 동일하게 구성되는 경우가 많다. 이 경우 서로 다른 URL의 해시 값이 같아지는 빈도가 매우 높아질 수 있다는 문제가 있다. 따라서 이런 방식은 곧 폐기되었고, 예제 11에서 보는 방식을 현재의 Java 8까지도 계속 사용하고 있다.

예제 11 Java String 클래스 해시 함수

public int hashCode() {
int h = hash;
if (h == 0 && value.length > 0) {
char val[] = value;

for (int i = 0; i < value.length; i++) {
h = 31 * h + val[i];
}
hash = h;
}
return h;
}

 

예제 11은 Horner's method를 구현한 것이다. Horner's method는 다항식을 계산하기 쉽도록 단항식으로 이루어진 식으로 표현하는 것이다. 즉 예제 11에서 계산하고자 하는 해시 값 h는 다음과 같다.

f1cd5b0da9fc7b82d78998990f9e51de.png

25c1f08106c55ea4b8da3cc2e85323c2.png

ae72dc55a3e0412eae00013029f9291a.png

이렇게 단항식을 재귀적으로 사용하여 다항식 연산을 표현할 수 있다.

String 객체 해시 함수에서 31을 사용하는 이유는, 31이 소수이며 또한 어떤 수에 31을 곱하는 것은 빠르게 계산할 수 있기 때문이다. 31N=32N-N인데, 32는 25이니 어떤 수에 대한 32를 곱한 값은 shift 연산으로 쉽게 구현할 수 있다. 따라서 N에 31을 곱한 값은, (N << 5) – N과 같다. 31을 곱하는 연산은 이렇게 최적화된 머신 코드로 생성할 수 있기 때문에, String 클래스에서 해시 값을 계산할 때에는 31을 승수로 사용한다.


Java 7에서 String 객체에 대한 별도의 해시 함수

JDK 7u6부터 JDK 7u25까지는 HashMap에 저장된 키-값 쌍이 일정 개수 이상이면 String 객체에 한하여 별도의 해시 함수를 사용할 수 있게 하는 기능이 있다. 이 기능은 JDK 7u40부터는 삭제되었고, 당연히 Java 8에도 해당 기능은 없다. 여기서 말하는 '일정 개수 이상'이나 '별도의 해시 함수 사용 여부 지정'은 JVM을 가동할 때 옵션으로 지정할 수 있다.

예제 12 Java 7의 String에 대한 hash32() 메서드

hashSeed = useAltHashing
? sun.misc.Hashing.randomHashSeed(this)
: 0;

….

int h = hashSeed;
if (0 != h && k instanceof String) {
return sun.misc.Hashing.stringHash32((String) k);
}


….

// String 클래스에 있는 hash32() 메서드
int hash32() {
int h = hash32;
if (0 == h) {
h = sun.misc.Hashing.murmur3_32(HASHING_SEED, value, 0, value.length);
h = (0 != h) ? h : 1;
hash32 = h;
}
return h;
}

 

JDK 7u6부터 JDK 7u25까지는 jdk.map.althashing.threshold 옵션을 지정하면, HashMap에 저장된 키-값 쌍이 일정 개수 이상일 때 String 객체에 String 클래스의 hashCode() 메서드 대신 sun.misc.Hashing.stringHash32() 메서드를 사용할 수 있게 했다. sun.misc.Hashing.stringHash32() 메서드는 String 클래스의 hash32() 메서드를 호출하게 한 것이고, hash32() 메서드는 MurMur 해시를 구현한 것이다. 이 MurMur 해시를 이용하여 String 객체에 대한 해시 충돌을 매우 낮출 수 있었다고 한다.

그러나 부작용도 있다. MurMur 해시는 hash seed를 필요로 하는데, 이를 위한 것이 sun.misc.Hashing.randomHashSeed() 메서드다. 이 메서드에서는 Random.nextInt() 메서드를 사용한다. Random.nextInt() 메서드는 compare and swap 연산(이하 CAS 연산)을 사용하는 AtomicLong을 사용하는데, CAS 연산은 코어가 많을수록 성능이 떨어진다. 즉 JDK 7u6부터 등장한 String 객체에 대한 별도의 해시 함수는 멀티 코어 환경에서는 성능이 하락했고, 이런 문제로 인해 JDK 7u40부터는 해당 기능을 사용하지 않는다. 당연히 Java 8도 사용하지 않는다.



마치며

지금까지 설명한 내용을 요약하면, Java HashMap에서는 해시 충돌을 방지하기 위하여 Separate Chaining과 보조 해시 함수를 사용한다는 것, Java 8에서는 Separate Chaining에서 링크드 리스트 대신 트리를 사용하기도 한다는 것, 그리고 String 클래스의 hashCode() 메서드에서 31을 승수로 사용하는 이유는 성능 향상 도모를 위한 것이라고 정리할 수 있다.

HashMap은 첫 등장 이후, 성능 향상을 위하여 꾸준하게 개선되어 왔다. JDK 1.4에서 처음 등장한 보조 해시 함수와 Java 8의 트리 노드가 대표적인 예다.

그러나 Java 7의 일부 버전에서 사용했던 MurMur 해시처럼 성능 향상을 위하여 시도했던 것이, 결과적으로 좋지 않아 결국에는 삭제되기도 하고, 많은 해시 함수가 균등 분포 결과 값을 내도록 잘 작성됨에 따라 기존보다 더 단순한 형태의 보조 해시 함수를 사용하도록 변화하기도 했다.

웹 애플리케이션 서버의 경우에는 HTTPRequest가 생성될 때마다, 여러 개의 HashMap이 생성된다. 수많은 HashMap 객체가 1초도 안 되는 시간에 생성되고 또 GC(garbage collection) 대상이 된다. 컴퓨터 메모리 크기가 보편적으로 증가하게 됨에 따라, 메모리 중심적인 애플리케이션 제작도 늘었다. 따라서 갈수록 HashMap에 더 많은 데이터를 저장하고 있다고 할 수 있다.

Java 9, Java 10의 HashMap이 어떤 모습일지 지금은 알 수 없지만, 컴퓨팅 환경은 계속 변하고 그에 맞춰 HashMap 구현도 계속 변할 수밖에 없다는 것은 자명하다.

용용

 
 http://javafactory.tistory.com/734

 




Posted by 장안동베짱e :

서버와 APNS(애플푸쉬서버)와의 보안 메커니즘

애플 iOS 디바이스로 서버가 푸쉬를 보내고자 할때는, APNS 서비스를 거쳐야 한다.

푸쉬 메시지를 보내고자 하는 Provider 서버가 APNS로 푸쉬 요청을 보내면, APNS 서버가 디바이스로 푸쉬를 보내는 구조이다.

이때 APNS 서버와 Provider 서버를 어떻게 신뢰하는 지를 알아보자.

APNS 서버 입장에서는 Provider 서버가 해커가 아냐? 진짜 Provider 맞아? 하는 의문을 가질 수 있고, Provider 서버도APNS 서버가 진짜 APNS 서버가 맞는지를 확인할 수 있어야 한다.

이를 양방향 SSL(TLS:Transport Level Security)를 이용해서 해결 한다.

먼저 SSL 메커니즘에 대해서 알아보자 SSL 을 비대칭 (PKI) 키 구조의 암호화를 이용하는데, Public Key 와 Private Key두개를 가지고 있다. Public Key로 암호화를 할 수 있지만, 반대로 암호를 푸는 복호화는 Private Key를 통해서만 가능하다.

그래서 서버가 SSL 연결을 보낼 때, Public Key를 클라이언트에 내려 보내면, 클라이언트는 그 Public Key를 사용해서 메시지를 암호화 해서 서버에 전송하고, Private Key를 가지고 있는 서버만이 그 메시지를 해석할 수 있는 구조이다.


Man In The Middle attack

그런데 이 과정에서 취약점이 발생하는데, 서버가 Public Key를 내려보낼 때 중간에 해커가 서버서부터 온 Public Key를 낚아채고, 자신이 새로운 Public Key A1과 Private Key A2 페어를 만든 후, 새롭게 만든 Public Key A1을 클라이언트로 내려보낸다. 그러면 클라이언트는 이 Public Key A1을 가지고 암호화를 해서 중간에 해커에게 보내고, 해커는 이 메시지를 자신의 Private Key A2로 열어서 본후에, 다시 원래 서버가 준 Public Key로 메시지를 암호화 해서 서버에 보낸다.

이 때 클라이언트와 서버는 Public Key와 Private Key로 안전하게 통신하는 것 처럼 보이지만, 사실은 사실은 중간에 해커에 의해서 메시지가 도청되고 있는 상황이 된다. 이런 Attack 방식을 Man In The Middle attack (MITM)


Signing

이러한 Public Key가로채기를 막을려면 Public Key를 받는 클라이언트 쪽에서 이 Public Key가 APNS에서 온 것이 맞는지를 확인하면 되는데, 보통 이 Public Key는 인증서(Certificate)안에 넣어서 클라이언트에게로 배달된다. 이 때 메시지 변조를 막기 위해서 Certificate는 안에 들어 있는 메시지로 생성된 일종의 해쉬값과 같은 signature 값을 가지고 있어서,만약에 내부 메시지가 변경이 되면 원래 signature와 비교하여 메시지가 변경되었는지를 확인할 수 있다.이를 생성하는 것을 싸이닝(Signing) 이라고 하는데, 이 Signing은 Private 키로 생성되고, 이에 대한 비교는 Public Key를 통해서 할 수 있다. (Sign을 확인하기 위해서는 Sign에 사용된 Private Key에 대한 페어 Public Key를 가진 인증서를 가지고 있어야 한다. 이 Public Key를 통해서 싸이닝을 확인할 수 있다.)






Channing

이 signature를 통해서 전달되는 메시지가 변조되는 것을 막을 수 는 있지만 위의 MITM attack 처럼 인증서 자체를 통째로 바꿔칠 수 있기 때문에, 이 인증서가 믿을만한 인증서인지를 확인해야 한다. 인증서에는 인증서를 발급한 기관 (CA : Certificate Authority)정보가 들어 있는데, “XXX에서 인증서를 발급함” 이라는 정보가 들어 있다.

그런데 문제는 이 인증서를 발급한 기관을 믿을 수 있냐는 거다. 구멍가게가 될 수 도 있고

은행과 같은 인증된 기관이 될 수 도 있다. 그래서 사용하는 기법에 인증서 Channing 기법인데, 인증서를 발급한 사람이 이 인증서를 신뢰된 기관에 가서 인증을 받은 후, 그 인증 정보를 인증서에 추가하는 방식이다.

아래 그림을 보자, 맨 아래의 Engineering CA는 자체 적으로 인증서를 발급하였다. 이 인증서를 USA CA certificate에 보내서 추가 인증을 받는다. 그런데, 이 USA CA certificate 인증서는 이미 신뢰된 기관으로부터 인증을 받은 인증서이기 때문에, 이 신뢰된 기관의 인증 정보가 추가되게 된다. (신뢰된 인증 기관으로부터 인증서에 서명을 받으려면 회사 정보,신상 정보 등을 받은 후에 신원 확인 절차를 거쳐야만이 서명을 받을 수 있다.)





(출처 : https://developer.mozilla.org/en-US/docs/Introduction_to_Public-Key_Cryptography)

그래서 최종 인증서 모양은





이러한 형태가 되고, 클라이언트는 이 인증서 chain을 통해서 Root CA가 신뢰된 인증서인지를 확인하면 이 전체 인증서가 신뢰된 인증서임을 확인할 수 있다. (네트워크를 통해서 Root CA가 맞는지를 확인하게 되고, 만약에 Root CA라도 외부로 노출이 되었을 경우에 Revoked List라는 유출된 인증서 목록을 유지함으로써 인증서가 문제가 없는 인증서인지를 확인할 수 있다.)

이러한 절차를 거치면 MITM Attack을 통한 감청을 막을 수 있다.

다음 문제는 클라이언트 입장에서는 서버가 신뢰할 수 있는 서버인지를 알 수 있다. (Provider는 이 Root CA를 통해서 서버가 APNS 서버임을 알 수 있다.)

=> 추가 : RootCA에 대해서는 인증해줄 기관이 없으므로 Self Signning을 함 (참고 : http://lesstif.com/pages/viewpage.action?pageId=6979614 )


Mutual SSL

그러나 서버 입장에서는 클라이언트가 Provider서버가 맞는지? 를 확인할 필요가 있다. 이것이 인증 (authentication) 과정인데, TLS(SSL) 연결이 안전하게 설정된 후에, 사용자 ID,PASSWD를 넣어서 클라이언트(Provider)를 확인하는 방법도 있지만, 조금 더 확실한 방법으로, 클라이언트가 발급한 인증서를 사용하는 방식을 사용한다.

이 방식이 양방향 SSL 방식 (Mutual SSL) 인데, SSL 연결이 될 때 서버가 클라이언트에게 Public Key 를 내려 보내는 방식과 마찬가지로 클라이언트가 서버에게 Public Key를 전송하고 메시지를 클라이언트의 Private Key를 이용해서 암호화 해서 보내는 방법이다.

이 때 클라이언트에서 서버로 전송하는 Public Key는 인증서를 통해서 전달이 되게 되고, 인증서에는 인증서 발급 기관등의 정보가 들어가 있기 때문에, 이를 통해서 클라이언트를 인증을 할 수 있다.


APNS의 CSR

그래서 APNS의 경우에는 Service Provider가 Private/Public Key pair 를 생성한 후에, Public Key만을 담은 인증서를 생성하여, 웹사이트를 통해서 Service Provider 업체에 대한 정보와 함께, 싸인을 요청한다.

싸인을 진행할 때 애플은 인증서에 대한 고유 ID등을 통해서 이 인증서를 통한 호출이 어느 기관(업체)에서 들어오는지를 맵핑 해놓고, 향후 양방향 SSL 연결시에 이 정보를 가지고 클라이언트를 판독할 수 있다.

이를 기반으로 전체 서버간의 플로우를 보면

1.  Provider는 Private Key를 생성한다

2.  이 Private Key를 기반으로 *.csr 파일(인증서 싸인 요청 파일)을 만든다. 이 파일에는 Public key가 들어 있는 인증서와 싸이닝을 요청하는 Provider의 업체 정보들이 들어가 있다.

3.  Provider는 애플 포탈에 들어가서 이 csr 파일을 업로드 한다.

4.  애플 포탈은 csr 파일을 기반으로 인증서(certificate)를 생성한후에, 애플의 인증서를 이용해서 싸인을 추가해서Provider에게 돌려준다.

5.  Provider는 4에서 받은 인증서(public key가 들어 있는)와 1에서 생성된 Private Key를 Provider 서버내에 설치 한다.

6.  이때 1에서 생성한 Private Key,그리고 애플이 싸이닝하여 추가된 Public Key 가 들어 있는 인증서, 인증서 체인에 사용된 모든 인증서를 추가해서 한 파일(*.p12)에 넣는다.(*.p12 파일 포맷은 X.509를 지원하는 파일 포맷중에 유일하게 Private Key를 같이 넣을 수 있는 포맷이다.)






APNS와 Provider간의 Trust

다음 통신이 이루어지게 되면, 아래 그림과 같이

1.  Provider Server가 TLS 연결을 요청한다.

2.  APNS 서버는 certificate(인증서)에 public key를 넣어서 내려 보낸다.

3.  Provider는 이 인증서의 Root CA를 확인하여, 이 인증서가 애플에서 온 정상적인 인증서임을 확인한다. (Provider가 상대편이 APNS임을 확인함)

4.  Provider는 앞의 CSR에 의해 생성된 인증서를 APNS에 보낸다.

5.  APNS는 4에서 온 인증서에 애플의 인증서로 Sign 이 되어 있는 것을 확인하고, 클라이언트가 (Provider) 합법적인 클라이언트임을 확인하고,어떤 사용자인지를 판독한다. (APNS가 Provider가 누구인지를 확인하였다.)

6.  마지막으로 양 서버간의 신뢰된 TLS(SSL)연결이 성립되었다.






 
 http://bcho.tistory.com/960

 




Posted by 장안동베짱e :


List of MIME types / Internet Media Types


NameMIME Type / Internet Media TypeFile ExtensionMore Details
3D Crossword Pluginapplication/vnd.hzn-3d-crossword.x3dIANA: 3D Crossword Plugin
3GPvideo/3gpp.3gpWikipedia: 3GP
3GP2video/3gpp2.3g2Wikipedia: 3G2
3GPP MSEQ Fileapplication/vnd.mseq.mseqIANA: 3GPP MSEQ File
3M Post It Notesapplication/vnd.3m.post-it-notes.pwnIANA: 3M Post It Notes
3rd Generation Partnership Project - Pic Largeapplication/vnd.3gpp.pic-bw-large.plb3GPP
3rd Generation Partnership Project - Pic Smallapplication/vnd.3gpp.pic-bw-small.psb3GPP
3rd Generation Partnership Project - Pic Varapplication/vnd.3gpp.pic-bw-var.pvb3GPP
3rd Generation Partnership Project - Transaction Capabilities Application Partapplication/vnd.3gpp2.tcap.tcap3GPP
7-Zipapplication/x-7z-compressed.7zWikipedia: 7-Zip
AbiWordapplication/x-abiword.abwWikipedia: AbiWord
Ace Archiveapplication/x-ace-compressed.aceWikipedia: ACE
Active Content Compressionapplication/vnd.americandynamics.acc.accIANA: Active Content Compression
ACU Cobolapplication/vnd.acucobol.acuIANA: ACU Cobol
ACU Cobolapplication/vnd.acucorp.atcIANA: ACU Cobol
Adaptive differential pulse-code modulationaudio/adpcm.adpWikipedia: ADPCM
Adobe (Macropedia) Authorware - Binary Fileapplication/x-authorware-bin.aabWikipedia: Authorware
Adobe (Macropedia) Authorware - Mapapplication/x-authorware-map.aamWikipedia: Authorware
Adobe (Macropedia) Authorware - Segment Fileapplication/x-authorware-seg.aasWikipedia: Authorware
Adobe AIR Applicationapplication/vnd.adobe.air-application-installer-package+zip.airBuilding AIR Applications
Adobe Flashapplication/x-shockwave-flash.swfWikipedia: Adobe Flash
Adobe Flex Projectapplication/vnd.adobe.fxp.fxpIANA: Adobe Flex Project
Adobe Portable Document Formatapplication/pdf.pdfAdobe PDF
Adobe PostScript Printer Description File Formatapplication/vnd.cups-ppd.ppdIANA: Cups
Adobe Shockwave Playerapplication/x-director.dirWikipedia: Adobe Shockwave Player
Adobe XML Data Packageapplication/vnd.adobe.xdp+xml.xdpWikipedia: XML Data Package
Adobe XML Forms Data Formatapplication/vnd.adobe.xfdf.xfdfWikipedia: XML Portable Document Format
Advanced Audio Coding (AAC)audio/x-aac.aacWikipedia: AAC
Ahead AIR Applicationapplication/vnd.ahead.space.aheadIANA: Ahead AIR Application
AirZip FileSECUREapplication/vnd.airzip.filesecure.azf.azfIANA: AirZip
AirZip FileSECUREapplication/vnd.airzip.filesecure.azs.azsIANA: AirZip
Amazon Kindle eBook formatapplication/vnd.amazon.ebook.azwKindle Direct Publishing
AmigaDEapplication/vnd.amiga.ami.amiIANA: Amiga
Andrew Toolkitapplication/andrew-insetN/AIANA - Andrew Inset
Android Package Archiveapplication/vnd.android.package-archive.apkWikipedia: APK File Format
ANSER-WEB Terminal Client - Certificate Issueapplication/vnd.anser-web-certificate-issue-initiation.ciiIANA: ANSWER-WEB
ANSER-WEB Terminal Client - Web Funds Transferapplication/vnd.anser-web-funds-transfer-initiation.ftiIANA: ANSWER-WEB
Antix Game Playerapplication/vnd.antix.game-component.atxIANA: Antix Game Component
Apple Installer Packageapplication/vnd.apple.installer+xml.mpkgIANA: Apple Installer
Applixwareapplication/applixware.awVistasource
Archipelago Lesson Playerapplication/vnd.hhe.lesson-player.lesIANA: Archipelago Lesson Player
Arista Networks Software Imageapplication/vnd.aristanetworks.swi.swiIANA: Arista Networks Software Image
Assembler Source Filetext/x-asm.sWikipedia: Assembly
Atom Publishing Protocolapplication/atomcat+xml.atomcatRFC 5023
Atom Publishing Protocol Service Documentapplication/atomsvc+xml.atomsvcRFC 5023
Atom Syndication Formatapplication/atom+xml.atom, .xmlRFC 4287
Attribute Certificateapplication/pkix-attr-cert.acRFC 5877
Audio Interchange File Formataudio/x-aiff.aifWikipedia: Audio Interchange File Format
Audio Video Interleave (AVI)video/x-msvideo.aviWikipedia: AVI
Audiographapplication/vnd.audiograph.aepIANA: Audiograph
AutoCAD DXFimage/vnd.dxf.dxfWikipedia: AutoCAD DXF
Autodesk Design Web Format (DWF)model/vnd.dwf.dwfWikipedia: Design Web Format
BAS Partitur Formattext/plain-bas.parPhonetik BAS
Binary CPIO Archiveapplication/x-bcpio.bcpioWikipedia: cpio
Binary Dataapplication/octet-stream.bin
Bitmap Image Fileimage/bmp.bmpWikipedia: BMP File Format
BitTorrentapplication/x-bittorrent.torrentWikipedia: BitTorrent
Blackberry COD Fileapplication/vnd.rim.cod.cod
Blueice Research Multipassapplication/vnd.blueice.multipass.mpmIANA: Multipass
BMI Drawing Data Interchangeapplication/vnd.bmi.bmiIANA: BMI
Bourne Shell Scriptapplication/x-sh.shWikipedia: Bourne Shell
BTIFimage/prs.btif.btifIANA: BTIF
BusinessObjectsapplication/vnd.businessobjects.repIANA: BusinessObjects
Bzip Archiveapplication/x-bzip.bzWikipedia: Bzip
Bzip2 Archiveapplication/x-bzip2.bz2Wikipedia: Bzip
C Shell Scriptapplication/x-csh.cshWikipedia: C Shell
C Source Filetext/x-c.cWikipedia: C Programming Language
CambridgeSoft Chem Drawapplication/vnd.chemdraw+xml.cdxmlIANA: Chem Draw
Cascading Style Sheets (CSS)text/css.cssWikipedia: CSS
ChemDraw eXchange filechemical/x-cdx.cdxChemDraw eXchange file
Chemical Markup Languagechemical/x-cml.cmlWikipedia: Chemical Markup Language
Chemical Style Markup Languagechemical/x-csml.csmlWikipedia: Chemical Style Markup Language
CIM Databaseapplication/vnd.contact.cmsg.cdbcmsgIANA: CIM Database
Claymore Data Filesapplication/vnd.claymore.claIANA: Claymore
Clonk Gameapplication/vnd.clonk.c4group.c4gIANA: Clonk
Close Captioning - Subtitleimage/vnd.dvb.subtitle.subWikipedia: Closed Captioning
Cloud Data Management Interface (CDMI) - Capabilityapplication/cdmi-capability.cdmiaRFC 6208
Cloud Data Management Interface (CDMI) - Contaimerapplication/cdmi-container.cdmicRFC 6209
Cloud Data Management Interface (CDMI) - Domainapplication/cdmi-domain.cdmidRFC 6210
Cloud Data Management Interface (CDMI) - Objectapplication/cdmi-object.cdmioRFC 6211
Cloud Data Management Interface (CDMI) - Queueapplication/cdmi-queue.cdmiqRFC 6212
ClueTrust CartoMobile - Configapplication/vnd.cluetrust.cartomobile-config.c11amcIANA: CartoMobile
ClueTrust CartoMobile - Config Packageapplication/vnd.cluetrust.cartomobile-config-pkg.c11amzIANA: CartoMobile
CMU Imageimage/x-cmu-raster.ras
COLLADAmodel/vnd.collada+xml.daeIANA: COLLADA
Comma-Seperated Valuestext/csv.csvWikipedia: CSV
Compact Proapplication/mac-compactpro.cptCompact Pro
Compiled Wireless Markup Language (WMLC)application/vnd.wap.wmlc.wmlcIANA: WMLC
Computer Graphics Metafileimage/cgm.cgmWikipedia: Computer Graphics Metafile
CoolTalkx-conference/x-cooltalk.iceWikipedia: CoolTalk
Corel Metafile Exchange (CMX)image/x-cmx.cmxWikipedia: CorelDRAW
CorelXARAapplication/vnd.xara.xarIANA: CorelXARA
CosmoCallerapplication/vnd.cosmocaller.cmcIANA: CosmoCaller
CPIO Archiveapplication/x-cpio.cpioWikipedia: cpio
CrickSoftware - Clickerapplication/vnd.crick.clicker.clkxIANA: Clicker
CrickSoftware - Clicker - Keyboardapplication/vnd.crick.clicker.keyboard.clkkIANA: Clicker
CrickSoftware - Clicker - Paletteapplication/vnd.crick.clicker.palette.clkpIANA: Clicker
CrickSoftware - Clicker - Templateapplication/vnd.crick.clicker.template.clktIANA: Clicker
CrickSoftware - Clicker - Wordbankapplication/vnd.crick.clicker.wordbank.clkwIANA: Clicker
Critical Tools - PERT Chart EXPERTapplication/vnd.criticaltools.wbs+xml.wbsIANA: Critical Tools
CryptoNoteapplication/vnd.rig.cryptonote.cryptonoteIANA: CryptoNote
Crystallographic Interchange Formatchemical/x-cif.cifCrystallographic Interchange Format
CrystalMaker Data Formatchemical/x-cmdf.cmdfCrystalMaker Data Format
CU-SeeMeapplication/cu-seeme.cuWhite Pine
CU-Writerapplication/prs.cww.cww
Curl - Applettext/vnd.curl.curlCurl Applet
Curl - Detached Applettext/vnd.curl.dcurl.dcurlCurl Detached Applet
Curl - Manifest Filetext/vnd.curl.mcurl.mcurlCurl Manifest File
Curl - Source Codetext/vnd.curl.scurl.scurlCurl Source Code
CURL Appletapplication/vnd.curl.car.carIANA: CURL Applet
CURL Appletapplication/vnd.curl.pcurl.pcurlIANA: CURL Applet
CustomMenuapplication/vnd.yellowriver-custom-menu.cmpIANA: CustomMenu
Data Structure for the Security Suitability of Cryptographic Algorithmsapplication/dssc+der.dsscRFC 5698
Data Structure for the Security Suitability of Cryptographic Algorithmsapplication/dssc+xml.xdsscRFC 5698
Debian Packageapplication/x-debian-package.debWikipedia: Debian Package
DECE Audioaudio/vnd.dece.audio.uvaIANA: Dece Audio
DECE Graphicimage/vnd.dece.graphic.uviIANA: DECE Graphic
DECE High Definition Videovideo/vnd.dece.hd.uvhIANA: DECE HD Video
DECE Mobile Videovideo/vnd.dece.mobile.uvmIANA: DECE Mobile Video
DECE MP4video/vnd.uvvu.mp4.uvuIANA: DECE MP4
DECE PD Videovideo/vnd.dece.pd.uvpIANA: DECE PD Video
DECE SD Videovideo/vnd.dece.sd.uvsIANA: DECE SD Video
DECE Videovideo/vnd.dece.video.uvvIANA: DECE Video
Device Independent File Format (DVI)application/x-dvi.dviWikipedia: DVI
Digital Siesmograph Networks - SEED Datafilesapplication/vnd.fdsn.seed.seedIANA: SEED
Digital Talking Bookapplication/x-dtbook+xml.dtbWikipedia: EPUB
Digital Talking Book - Resource Fileapplication/x-dtbresource+xml.resDigital Talking Book
Digital Video Broadcastingapplication/vnd.dvb.ait.aitIANA: Digital Video Broadcasting
Digital Video Broadcastingapplication/vnd.dvb.service.svcIANA: Digital Video Broadcasting
Digital Winds Musicaudio/vnd.digital-winds.eolIANA: Digital Winds
DjVuimage/vnd.djvu.djvuWikipedia: DjVu
Document Type Definitionapplication/xml-dtd.dtdW3C DTD
Dolby Meridian Lossless Packingapplication/vnd.dolby.mlp.mlpIANA: Dolby Meridian Lossless Packing
Doom Video Gameapplication/x-doom.wadWikipedia: Doom WAD
DPGraphapplication/vnd.dpgraph.dpgIANA: DPGraph
DRA Audioaudio/vnd.dra.draIANA: DRA
DreamFactoryapplication/vnd.dreamfactory.dfacIANA: DreamFactory
DTS Audioaudio/vnd.dts.dtsIANA: DTS
DTS High Definition Audioaudio/vnd.dts.hd.dtshdIANA: DTS HD
DWG Drawingimage/vnd.dwg.dwgWikipedia: DWG
DynaGeoapplication/vnd.dynageo.geoIANA: DynaGeo
ECMAScriptapplication/ecmascript.esECMA-357
EcoWin Chartapplication/vnd.ecowin.chart.magIANA: EcoWin Chart
EDMICS 2000image/vnd.fujixerox.edmics-mmr.mmrIANA: EDMICS 2000
EDMICS 2000image/vnd.fujixerox.edmics-rlc.rlcIANA: EDMICS 2000
Efficient XML Interchangeapplication/exi.exiEfficient XML Interchange (EXI) Best Practices
EFI Proteusapplication/vnd.proteus.magazine.mgzIANA: EFI Proteus
Electronic Publicationapplication/epub+zip.epubWikipedia: EPUB
Email Messagemessage/rfc822.emlRFC 2822
Enliven Viewerapplication/vnd.enliven.nmlIANA: Enliven Viewer
Express by Infoseekapplication/vnd.is-xpr.xprIANA: Express by Infoseek
eXtended Image File Format (XIFF)image/vnd.xiff.xifIANA: XIFF
Extensible Forms Description Languageapplication/vnd.xfdl.xfdlIANA: Extensible Forms Description Language
Extensible MultiModal Annotationapplication/emma+xml.emmaEMMA: Extensible MultiModal Annotation markup language
EZPix Secure Photo Albumapplication/vnd.ezpix-album.ez2IANA: EZPix Secure Photo Album
EZPix Secure Photo Albumapplication/vnd.ezpix-package.ez3IANA: EZPix Secure Photo Album
FAST Search & Transfer ASAimage/vnd.fst.fstIANA: FAST Search & Transfer ASA
FAST Search & Transfer ASAvideo/vnd.fvt.fvtIANA: FVT
FastBid Sheetimage/vnd.fastbidsheet.fbsIANA: FastBid Sheet
FCS Express Layout Linkapplication/vnd.denovo.fcselayout-link.fe_launchIANA: FCS Express Layout Link
Flash Videovideo/x-f4v.f4vWikipedia: Flash Video
Flash Videovideo/x-flv.flvWikipedia: Flash Video
FlashPiximage/vnd.fpx.fpxIANA: FPX
FlashPiximage/vnd.net-fpx.npxIANA: FPX
FLEXSTORtext/vnd.fmi.flexstor.flxIANA: FLEXSTOR
FLI/FLC Animation Formatvideo/x-fli.fliFLI/FLC Animation Format
FluxTime Clipapplication/vnd.fluxtime.clip.ftcIANA: FluxTime Clip
Forms Data Formatapplication/vnd.fdf.fdfIANA: Forms Data Format
Fortran Source Filetext/x-fortran.fWikipedia: Fortran
FrameMaker Interchange Formatapplication/vnd.mif.mifIANA: FrameMaker Interchange Format
FrameMaker Normal Formatapplication/vnd.framemaker.fmIANA: FrameMaker
FreeHand MXimage/x-freehand.fhWikipedia: Macromedia Freehand
Friendly Software Corporationapplication/vnd.fsc.weblaunch.fscIANA: Friendly Software Corporation
Frogans Playerapplication/vnd.frogans.fnc.fncIANA: Frogans Player
Frogans Playerapplication/vnd.frogans.ltf.ltfIANA: Frogans Player
Fujitsu - Xerox 2D CAD Dataapplication/vnd.fujixerox.ddd.dddIANA: Fujitsu DDD
Fujitsu - Xerox DocuWorksapplication/vnd.fujixerox.docuworks.xdwIANA: Docuworks
Fujitsu - Xerox DocuWorks Binderapplication/vnd.fujixerox.docuworks.binder.xbdIANA: Docuworks Binder
Fujitsu Oasysapplication/vnd.fujitsu.oasys.oasIANA: Fujitsu Oasys
Fujitsu Oasysapplication/vnd.fujitsu.oasys2.oa2IANA: Fujitsu Oasys
Fujitsu Oasysapplication/vnd.fujitsu.oasys3.oa3IANA: Fujitsu Oasys
Fujitsu Oasysapplication/vnd.fujitsu.oasysgp.fg5IANA: Fujitsu Oasys
Fujitsu Oasysapplication/vnd.fujitsu.oasysprs.bh2IANA: Fujitsu Oasys
FutureSplash Animatorapplication/x-futuresplash.splWikipedia: FutureSplash Animator
FuzzySheetapplication/vnd.fuzzysheet.fzsIANA: FuzySheet
G3 Fax Imageimage/g3fax.g3Wikipedia: G3 Fax Image
GameMaker ActiveXapplication/vnd.gmx.gmxIANA: GameMaker ActiveX
Gen-Trix Studiomodel/vnd.gtw.gtwIANA: GTW
Genomatix Tuxedo Frameworkapplication/vnd.genomatix.tuxedo.txdIANA: Genomatix Tuxedo Framework
GeoGebraapplication/vnd.geogebra.file.ggbIANA: GeoGebra
GeoGebraapplication/vnd.geogebra.tool.ggtIANA: GeoGebra
Geometric Description Language (GDL)model/vnd.gdl.gdlIANA: GDL
GeoMetry Explorerapplication/vnd.geometry-explorer.gexIANA: GeoMetry Explorer
GEONExT and JSXGraphapplication/vnd.geonext.gxtIANA: GEONExT and JSXGraph
GeoplanWapplication/vnd.geoplan.g2wIANA: GeoplanW
GeospacWapplication/vnd.geospace.g3wIANA: GeospacW
Ghostscript Fontapplication/x-font-ghostscript.gsfWikipedia: Ghostscript
Glyph Bitmap Distribution Formatapplication/x-font-bdf.bdfWikipedia: Glyph Bitmap Distribution Format
GNU Tar Filesapplication/x-gtar.gtarGNU Tar
GNU Texinfo Documentapplication/x-texinfo.texinfoWikipedia: Texinfo
Gnumericapplication/x-gnumeric.gnumericWikipedia: Gnumeric
Google Earth - KMLapplication/vnd.google-earth.kml+xml.kmlIANA: Google Earth
Google Earth - Zipped KMLapplication/vnd.google-earth.kmz.kmzIANA: Google Earth
GrafEqapplication/vnd.grafeq.gqfIANA: GrafEq
Graphics Interchange Formatimage/gif.gifWikipedia: Graphics Interchange Format
Graphviztext/vnd.graphviz.gvIANA: Graphviz
Groove - Accountapplication/vnd.groove-account.gacIANA: Groove
Groove - Helpapplication/vnd.groove-help.ghfIANA: Groove
Groove - Identity Messageapplication/vnd.groove-identity-message.gimIANA: Groove
Groove - Injectorapplication/vnd.groove-injector.grvIANA: Groove
Groove - Tool Messageapplication/vnd.groove-tool-message.gtmIANA: Groove
Groove - Tool Templateapplication/vnd.groove-tool-template.tplIANA: Groove
Groove - Vcardapplication/vnd.groove-vcard.vcgIANA: Groove
H.261video/h261.h261Wikipedia: H.261
H.263video/h263.h263Wikipedia: H.263
H.264video/h264.h264Wikipedia: H.264
Hewlett Packard Instant Deliveryapplication/vnd.hp-hpid.hpidIANA: Hewlett Packard Instant Delivery
Hewlett-Packard's WebPrintSmartapplication/vnd.hp-hps.hpsIANA: Hewlett-Packard's WebPrintSmart
Hierarchical Data Formatapplication/x-hdf.hdfWikipedia: Hierarchical Data Format
Hit'n'Mixaudio/vnd.rip.ripIANA: Hit'n'Mix
Homebanking Computer Interface (HBCI)application/vnd.hbci.hbciIANA: HBCI
HP Indigo Digital Press - Job Layout Languateapplication/vnd.hp-jlyt.jltIANA: HP Job Layout Language
HP Printer Command Languageapplication/vnd.hp-pcl.pclIANA: HP Printer Command Language
HP-GL/2 and HP RTLapplication/vnd.hp-hpgl.hpglIANA: HP-GL/2 and HP RTL
HV Scriptapplication/vnd.yamaha.hv-script.hvsIANA: HV Script
HV Voice Dictionaryapplication/vnd.yamaha.hv-dic.hvdIANA: HV Voice Dictionary
HV Voice Parameterapplication/vnd.yamaha.hv-voice.hvpIANA: HV Voice Parameter
Hydrostatix Master Suiteapplication/vnd.hydrostatix.sof-data.sfd-hdstxIANA: Hydrostatix Master Suite
Hyperstudioapplication/hyperstudio.stkIANA - Hyperstudio
Hypertext Application Languageapplication/vnd.hal+xml.halIANA: HAL
HyperText Markup Language (HTML)text/html.htmlWikipedia: HTML
IBM DB2 Rights Managerapplication/vnd.ibm.rights-management.irmIANA: IBM DB2 Rights Manager
IBM Electronic Media Management System - Secure Containerapplication/vnd.ibm.secure-container.scIANA: EMMS
iCalendartext/calendar.icsWikipedia: iCalendar
ICC profileapplication/vnd.iccprofile.iccIANA: ICC profile
Icon Imageimage/x-icon.icoWikipedia: ICO File Format
igLoaderapplication/vnd.igloader.iglIANA: igLoader
Image Exchange Formatimage/ief.iefRFC 1314
ImmerVision PURE Playersapplication/vnd.immervision-ivp.ivpIANA: ImmerVision PURE Players
ImmerVision PURE Playersapplication/vnd.immervision-ivu.ivuIANA: ImmerVision PURE Players
IMS Networksapplication/reginfo+xml.rif
In3D - 3DMLtext/vnd.in3d.3dml.3dmlIANA: In3D
In3D - 3DMLtext/vnd.in3d.spot.spotIANA: In3D
Initial Graphics Exchange Specification (IGES)model/iges.igsWikipedia: IGES
Interactive Geometry Softwareapplication/vnd.intergeo.i2gIANA: Interactive Geometry Software
Interactive Geometry Software Cinderellaapplication/vnd.cinderella.cdyIANA: Cinderella
Intercon FormNetapplication/vnd.intercon.formnet.xpwIANA: Intercon FormNet
International Society for Advancement of Cytometryapplication/vnd.isac.fcs.fcsIANA: International Society for Advancement of Cytometry
Internet Protocol Flow Information Exportapplication/ipfix.ipfixRFC 3917
Internet Public Key Infrastructure - Certificateapplication/pkix-cert.cerRFC 2585
Internet Public Key Infrastructure - Certificate Management Protocoleapplication/pkixcmp.pkiRFC 2585
Internet Public Key Infrastructure - Certificate Revocation Listsapplication/pkix-crl.crlRFC 2585
Internet Public Key Infrastructure - Certification Pathapplication/pkix-pkipath.pkipathRFC 2585
IOCOM Visimeetapplication/vnd.insors.igm.igmIANA: IOCOM Visimeet
IP Unplugged Roaming Clientapplication/vnd.ipunplugged.rcprofile.rcprofileIANA: IP Unplugged Roaming Client
iRepository / Lucidoc Editorapplication/vnd.irepository.package+xml.irpIANA: iRepository / Lucidoc Editor
J2ME App Descriptortext/vnd.sun.j2me.app-descriptor.jadIANA: J2ME App Descriptor
Java Archiveapplication/java-archive.jarWikipedia: JAR file format
Java Bytecode Fileapplication/java-vm.classWikipedia: Java Bytecode
Java Network Launching Protocolapplication/x-java-jnlp-file.jnlpWikipedia: Java Web Start
Java Serialized Objectapplication/java-serialized-object.serJava Serialization API
Java Source Filetext/x-java-source,java.javaWikipedia: Java
JavaScriptapplication/javascript.jsJavaScript
JavaScript Object Notation (JSON)application/json.jsonWikipedia: JSON
Joda Archiveapplication/vnd.joost.joda-archive.jodaIANA: Joda Archive
JPEG 2000 Compound Image File Formatvideo/jpm.jpmIANA: JPM
JPEG Imageimage/jpeg.jpeg, .jpgRFC 1314
JPGVideovideo/jpeg.jpgvRFC 3555
Kahootzapplication/vnd.kahootz.ktzIANA: Kahootz
Karaoke on Chipnuts Chipsetsapplication/vnd.chipnuts.karaoke-mmd.mmdIANA: Chipnuts Karaoke
KDE KOffice Office Suite - Karbonapplication/vnd.kde.karbon.karbonIANA: KDE KOffice Office Suite
KDE KOffice Office Suite - KChartapplication/vnd.kde.kchart.chrtIANA: KDE KOffice Office Suite
KDE KOffice Office Suite - Kformulaapplication/vnd.kde.kformula.kfoIANA: KDE KOffice Office Suite
KDE KOffice Office Suite - Kivioapplication/vnd.kde.kivio.flwIANA: KDE KOffice Office Suite
KDE KOffice Office Suite - Kontourapplication/vnd.kde.kontour.konIANA: KDE KOffice Office Suite
KDE KOffice Office Suite - Kpresenterapplication/vnd.kde.kpresenter.kprIANA: KDE KOffice Office Suite
KDE KOffice Office Suite - Kspreadapplication/vnd.kde.kspread.kspIANA: KDE KOffice Office Suite
KDE KOffice Office Suite - Kwordapplication/vnd.kde.kword.kwdIANA: KDE KOffice Office Suite
Kenamea Appapplication/vnd.kenameaapp.htkeIANA: Kenamea App
Kidspirationapplication/vnd.kidspiration.kiaIANA: Kidspiration
Kinar Applicationsapplication/vnd.kinar.kneIANA: Kina Applications
Kodak Storyshareapplication/vnd.kodak-descriptor.sseIANA: Kodak Storyshare
Laser App Enterpriseapplication/vnd.las.las+xml.lasxmlIANA: Laser App Enterprise
LaTeXapplication/x-latex.latexWikipedia: LaTeX
Life Balance - Desktop Editionapplication/vnd.llamagraphics.life-balance.desktop.lbdIANA: Life Balance
Life Balance - Exchange Formatapplication/vnd.llamagraphics.life-balance.exchange+xml.lbeIANA: Life Balance
Lightspeed Audio Labapplication/vnd.jam.jamIANA: Lightspeed Audio Lab
Lotus 1-2-3application/vnd.lotus-1-2-3.123IANA: Lotus 1-2-3
Lotus Approachapplication/vnd.lotus-approach.aprIANA: Lotus Approach
Lotus Freelanceapplication/vnd.lotus-freelance.preIANA: Lotus Freelance
Lotus Notesapplication/vnd.lotus-notes.nsfIANA: Lotus Notes
Lotus Organizerapplication/vnd.lotus-organizer.orgIANA: Lotus Organizer
Lotus Screencamapplication/vnd.lotus-screencam.scmIANA: Lotus Screencam
Lotus Wordproapplication/vnd.lotus-wordpro.lwpIANA: Lotus Wordpro
Lucent Voiceaudio/vnd.lucent.voice.lvpIANA: Lucent Voice
M3U (Multimedia Playlist)audio/x-mpegurl.m3uWikipedia: M3U
M4vvideo/x-m4v.m4vWikipedia: M4v
Macintosh BinHex 4.0application/mac-binhex40.hqxMacMIME
MacPorts Port Systemapplication/vnd.macports.portpkg.portpkgIANA: MacPorts Port System
MapGuide DBXMLapplication/vnd.osgeo.mapguide.package.mgpIANA: MapGuide DBXML
MARC Formatsapplication/marc.mrcRFC 2220
MARC21 XML Schemaapplication/marcxml+xml.mrcxRFC 6207
Material Exchange Formatapplication/mxf.mxfRFC 4539
Mathematica Notebook Playerapplication/vnd.wolfram.player.nbpIANA: Mathematica Notebook Player
Mathematica Notebooksapplication/mathematica.maIANA - Mathematica
Mathematical Markup Languageapplication/mathml+xml.mathmlW3C Math Home
Mbox database filesapplication/mbox.mboxRFC 4155
MedCalcapplication/vnd.medcalcdata.mc1IANA: MedCalc
Media Server Control Markup Languageapplication/mediaservercontrol+xml.mscmlRFC 5022
MediaRemoteapplication/vnd.mediastation.cdkey.cdkeyIANA: MediaRemote
Medical Waveform Encoding Formatapplication/vnd.mfer.mwfIANA: Medical Waveform Encoding Format
Melody Format for Mobile Platformapplication/vnd.mfmp.mfmIANA: Melody Format for Mobile Platform
Mesh Data Typemodel/mesh.mshRFC 2077
Metadata Authority Description Schemaapplication/mads+xml.madsRFC 6207
Metadata Encoding and Transmission Standardapplication/mets+xml.metsRFC 6207
Metadata Object Description Schemaapplication/mods+xml.modsRFC 6207
Metalinkapplication/metalink4+xml.meta4Wikipedia: Metalink
Micosoft PowerPoint - Macro-Enabled Template Fileapplication/vnd.ms-powerpoint.template.macroenabled.12.potmIANA: MS PowerPoint
Micosoft Word - Macro-Enabled Documentapplication/vnd.ms-word.document.macroenabled.12.docmIANA: MS Word
Micosoft Word - Macro-Enabled Templateapplication/vnd.ms-word.template.macroenabled.12.dotmIANA: MS Word
Micro CADAM Helix D&Dapplication/vnd.mcd.mcdIANA: Micro CADAM Helix D&D
Micrografxapplication/vnd.micrografx.flo.floIANA: Micrografx
Micrografx iGrafx Professionalapplication/vnd.micrografx.igx.igxIANA: Micrografx
MICROSEC e-Szign¢application/vnd.eszigno3+xml.es3IANA: MICROSEC e-Szign¢
Microsoft Accessapplication/x-msaccess.mdbWikipedia: Microsoft Access
Microsoft Advanced Systems Format (ASF)video/x-ms-asf.asfWikipedia: Advanced Systems Format (ASF)
Microsoft Applicationapplication/x-msdownload.exeWikipedia: EXE
Microsoft Artgalryapplication/vnd.ms-artgalry.cilIANA: MS Artgalry
Microsoft Cabinet Fileapplication/vnd.ms-cab-compressed.cabIANA: MS Cabinet File
Microsoft Class Serverapplication/vnd.ms-ims.imsIANA: MS Class Server
Microsoft ClickOnceapplication/x-ms-application.applicationWikipedia: ClickOnce
Microsoft Clipboard Clipapplication/x-msclip.clpWikipedia: Clipboard
Microsoft Document Imaging Formatimage/vnd.ms-modi.mdiWikipedia: Microsoft Document Image Format
Microsoft Embedded OpenTypeapplication/vnd.ms-fontobject.eotIANA: MS Embedded OpenType
Microsoft Excelapplication/vnd.ms-excel.xlsIANA: MS Excel
Microsoft Excel - Add-In Fileapplication/vnd.ms-excel.addin.macroenabled.12.xlamIANA: MS Excel
Microsoft Excel - Binary Workbookapplication/vnd.ms-excel.sheet.binary.macroenabled.12.xlsbIANA: MS Excel
Microsoft Excel - Macro-Enabled Template Fileapplication/vnd.ms-excel.template.macroenabled.12.xltmIANA: MS Excel
Microsoft Excel - Macro-Enabled Workbookapplication/vnd.ms-excel.sheet.macroenabled.12.xlsmIANA: MS Excel
Microsoft Html Help Fileapplication/vnd.ms-htmlhelp.chmIANA:MS Html Help File
Microsoft Information Cardapplication/x-mscardfile.crdWikipedia: Information Card
Microsoft Learning Resource Moduleapplication/vnd.ms-lrm.lrmIANA: MS Learning Resource Module
Microsoft MediaViewapplication/x-msmediaview.mvbWindows Help
Microsoft Moneyapplication/x-msmoney.mnyWikipedia: Microsoft Money
Microsoft Office - OOXML - Presentationapplication/vnd.openxmlformats-officedocument.presentationml.presentation.pptxIANA: OOXML - Presentation
Microsoft Office - OOXML - Presentation (Slide)application/vnd.openxmlformats-officedocument.presentationml.slide.sldxIANA: OOXML - Presentation
Microsoft Office - OOXML - Presentation (Slideshow)application/vnd.openxmlformats-officedocument.presentationml.slideshow.ppsxIANA: OOXML - Presentation
Microsoft Office - OOXML - Presentation Templateapplication/vnd.openxmlformats-officedocument.presentationml.template.potxIANA: OOXML - Presentation Template
Microsoft Office - OOXML - Spreadsheetapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet.xlsxIANA: OOXML - Spreadsheet
Microsoft Office - OOXML - Spreadsheet Teplateapplication/vnd.openxmlformats-officedocument.spreadsheetml.template.xltxIANA: OOXML - Spreadsheet Template
Microsoft Office - OOXML - Word Documentapplication/vnd.openxmlformats-officedocument.wordprocessingml.document.docxIANA: OOXML - Word Document
Microsoft Office - OOXML - Word Document Templateapplication/vnd.openxmlformats-officedocument.wordprocessingml.template.dotxIANA: OOXML - Word Document Template
Microsoft Office Binderapplication/x-msbinder.obdWikipedia: Microsoft Shared Tools
Microsoft Office System Release Themeapplication/vnd.ms-officetheme.thmxIANA: MS Office System Release Theme
Microsoft OneNoteapplication/onenote.onetocMS OneNote 2010
Microsoft PlayReady Ecosystemaudio/vnd.ms-playready.media.pya.pyaIANA: Microsoft PlayReady Ecosystem
Microsoft PlayReady Ecosystem Videovideo/vnd.ms-playready.media.pyv.pyvIANA: Microsoft PlayReady Ecosystem
Microsoft PowerPointapplication/vnd.ms-powerpoint.pptIANA: MS PowerPoint
Microsoft PowerPoint - Add-in fileapplication/vnd.ms-powerpoint.addin.macroenabled.12.ppamIANA: MS PowerPoint
Microsoft PowerPoint - Macro-Enabled Open XML Slideapplication/vnd.ms-powerpoint.slide.macroenabled.12.sldmIANA: MS PowerPoint
Microsoft PowerPoint - Macro-Enabled Presentation Fileapplication/vnd.ms-powerpoint.presentation.macroenabled.12.pptmIANA: MS PowerPoint
Microsoft PowerPoint - Macro-Enabled Slide Show Fileapplication/vnd.ms-powerpoint.slideshow.macroenabled.12.ppsmIANA: MS PowerPoint
Microsoft Projectapplication/vnd.ms-project.mppIANA: MS PowerPoint
Microsoft Publisherapplication/x-mspublisher.pubWikipedia: Microsoft Publisher
Microsoft Schedule+application/x-msschedule.scdWikipedia: Microsoft Schedule Plus
Microsoft Silverlightapplication/x-silverlight-app.xapWikipedia: Silverlight
Microsoft Trust UI Provider - Certificate Trust Linkapplication/vnd.ms-pki.stl.stlIANA: MS Trust UI Provider
Microsoft Trust UI Provider - Security Catalogapplication/vnd.ms-pki.seccat.catIANA: MS Trust UI Provider
Microsoft Visioapplication/vnd.visio.vsdIANA: Visio
Microsoft Windows Mediavideo/x-ms-wm.wmWikipedia: Advanced Systems Format (ASF)
Microsoft Windows Media Audioaudio/x-ms-wma.wmaWikipedia: Windows Media Audio
Microsoft Windows Media Audio Redirectoraudio/x-ms-wax.waxWindows Media Metafiles
Microsoft Windows Media Audio/Video Playlistvideo/x-ms-wmx.wmxWikipedia: Advanced Systems Format (ASF)
Microsoft Windows Media Player Download Packageapplication/x-ms-wmd.wmdWikipedia: Windows Media Player
Microsoft Windows Media Player Playlistapplication/vnd.ms-wpl.wplIANA: MS Windows Media Player Playlist
Microsoft Windows Media Player Skin Packageapplication/x-ms-wmz.wmzWikipedia: Windows Media Player
Microsoft Windows Media Videovideo/x-ms-wmv.wmvWikipedia: Advanced Systems Format (ASF)
Microsoft Windows Media Video Playlistvideo/x-ms-wvx.wvxWikipedia: Advanced Systems Format (ASF)
Microsoft Windows Metafileapplication/x-msmetafile.wmfWikipedia: Windows Metafile
Microsoft Windows Terminal Servicesapplication/x-msterminal.trmWikipedia: Terminal Server
Microsoft Wordapplication/msword.docWikipedia: Microsoft Word
Microsoft Wordpadapplication/x-mswrite.wriWikipedia: Wordpad
Microsoft Worksapplication/vnd.ms-works.wpsIANA: MS Works
Microsoft XAML Browser Applicationapplication/x-ms-xbap.xbapWikipedia: XAML Browser
Microsoft XML Paper Specificationapplication/vnd.ms-xpsdocument.xpsIANA: MS XML Paper Specification
MIDI - Musical Instrument Digital Interfaceaudio/midi.midWikipedia: MIDI
MiniPayapplication/vnd.ibm.minipay.mpyIANA: MiniPay
MO:DCA-Papplication/vnd.ibm.modcap.afpIANA: MO:DCA-P
Mobile Information Device Profileapplication/vnd.jcp.javame.midlet-rms.rmsIANA: Mobile Information Device Profile
MobileTVapplication/vnd.tmobile-livetv.tmoIANA: MobileTV
Mobipocketapplication/x-mobipocket-ebook.prcWikipedia: Mobipocket
Mobius Management Systems - Basket fileapplication/vnd.mobius.mbk.mbkIANA: Mobius Management Systems
Mobius Management Systems - Distribution Databaseapplication/vnd.mobius.dis.disIANA: Mobius Management Systems
Mobius Management Systems - Policy Definition Language Fileapplication/vnd.mobius.plc.plcIANA: Mobius Management Systems
Mobius Management Systems - Query Fileapplication/vnd.mobius.mqy.mqyIANA: Mobius Management Systems
Mobius Management Systems - Script Languageapplication/vnd.mobius.msl.mslIANA: Mobius Management Systems
Mobius Management Systems - Topic Index Fileapplication/vnd.mobius.txf.txfIANA: Mobius Management Systems
Mobius Management Systems - UniversalArchiveapplication/vnd.mobius.daf.dafIANA: Mobius Management Systems
mod_fly / fly.cgitext/vnd.fly.flyIANA: Fly
Mophun Certificateapplication/vnd.mophun.certificate.mpcIANA: Mophun Certificate
Mophun VMapplication/vnd.mophun.application.mpnIANA: Mophun VM
Motion JPEG 2000video/mj2.mj2IANA: MJ2
MPEG Audioaudio/mpeg.mpgaWikipedia: MPGA
MPEG Urlvideo/vnd.mpegurl.mxuIANA: MPEG Url
MPEG Videovideo/mpeg.mpegWikipedia: MPEG
MPEG-21application/mp21.m21Wikipedia: MPEG-21
MPEG-4 Audioaudio/mp4.mp4aWikipedia: MP4A
MPEG-4 Videovideo/mp4.mp4Wikipedia: MP4
MPEG4application/mp4.mp4RFC 4337
Multimedia Playlist Unicodeapplication/vnd.apple.mpegurl.m3u8Wikipedia: M3U
MUsical Score Interpreted Code Invented for the ASCII designation of Notationapplication/vnd.musician.musIANA: MUSICIAN
Muvee Automatic Video Editingapplication/vnd.muvee.style.mstyIANA: Muvee
MXMLapplication/xv+xml.mxmlWikipedia: MXML
N-Gage Game Dataapplication/vnd.nokia.n-gage.data.ngdatIANA: N-Gage Game Data
N-Gage Game Installerapplication/vnd.nokia.n-gage.symbian.install.n-gageIANA: N-Gage Game Installer
Navigation Control file for XML (for ePub)application/x-dtbncx+xml.ncxWikipedia: EPUB
Network Common Data Form (NetCDF)application/x-netcdf.ncWikipedia: NetCDF
neuroLanguageapplication/vnd.neurolanguage.nlu.nluIANA: neuroLanguage
New Moon Liftoff/DNAapplication/vnd.dna.dnaIANA: New Moon Liftoff/DNA
NobleNet Directoryapplication/vnd.noblenet-directory.nndIANA: NobleNet Directory
NobleNet Sealerapplication/vnd.noblenet-sealer.nnsIANA: NobleNet Sealer
NobleNet Webapplication/vnd.noblenet-web.nnwIANA: NobleNet Web
Nokia Radio Application - Presetapplication/vnd.nokia.radio-preset.rpstIANA: Nokia Radio Application
Nokia Radio Application - Presetapplication/vnd.nokia.radio-presets.rpssIANA: Nokia Radio Application
Notation3text/n3.n3Wikipedia: Notation3
Novadigm's RADIA and EDM productsapplication/vnd.novadigm.edm.edmIANA: Novadigm's RADIA and EDM products
Novadigm's RADIA and EDM productsapplication/vnd.novadigm.edx.edxIANA: Novadigm's RADIA and EDM products
Novadigm's RADIA and EDM productsapplication/vnd.novadigm.ext.extIANA: Novadigm's RADIA and EDM products
NpGraphItapplication/vnd.flographit.gphIANA: FloGraphIt
Nuera ECELP 4800audio/vnd.nuera.ecelp4800.ecelp4800IANA: ECELP 4800
Nuera ECELP 7470audio/vnd.nuera.ecelp7470.ecelp7470IANA: ECELP 7470
Nuera ECELP 9600audio/vnd.nuera.ecelp9600.ecelp9600IANA: ECELP 9600
Office Document Architectureapplication/oda.odaRFC 2161
Oggapplication/ogg.ogxWikipedia: Ogg
Ogg Audioaudio/ogg.ogaWikipedia: Ogg
Ogg Videovideo/ogg.ogvWikipedia: Ogg
OMA Download Agentsapplication/vnd.oma.dd2+xml.dd2IANA: OMA Download Agents
Open Document Text Webapplication/vnd.oasis.opendocument.text-web.othIANA: OpenDocument Text Web
Open eBook Publication Structureapplication/oebps-package+xml.opfWikipedia: Open eBook
Open Financial Exchangeapplication/vnd.intu.qbo.qboIANA: Open Financial Exchange
Open Office Extensionapplication/vnd.openofficeorg.extension.oxtIANA: Open Office Extension
Open Score Formatapplication/vnd.yamaha.openscoreformat.osfIANA: Open Score Format
Open Web Media Project - Audioaudio/webm.webaWebM Project
Open Web Media Project - Videovideo/webm.webmWebM Project
OpenDocument Chartapplication/vnd.oasis.opendocument.chart.odcIANA: OpenDocument Chart
OpenDocument Chart Templateapplication/vnd.oasis.opendocument.chart-template.otcIANA: OpenDocument Chart Template
OpenDocument Databaseapplication/vnd.oasis.opendocument.database.odbIANA: OpenDocument Database
OpenDocument Formulaapplication/vnd.oasis.opendocument.formula.odfIANA: OpenDocument Formula
OpenDocument Formula Templateapplication/vnd.oasis.opendocument.formula-template.odftIANA: OpenDocument Formula Template
OpenDocument Graphicsapplication/vnd.oasis.opendocument.graphics.odgIANA: OpenDocument Graphics
OpenDocument Graphics Templateapplication/vnd.oasis.opendocument.graphics-template.otgIANA: OpenDocument Graphics Template
OpenDocument Imageapplication/vnd.oasis.opendocument.image.odiIANA: OpenDocument Image
OpenDocument Image Templateapplication/vnd.oasis.opendocument.image-template.otiIANA: OpenDocument Image Template
OpenDocument Presentationapplication/vnd.oasis.opendocument.presentation.odpIANA: OpenDocument Presentation
OpenDocument Presentation Templateapplication/vnd.oasis.opendocument.presentation-template.otpIANA: OpenDocument Presentation Template
OpenDocument Spreadsheetapplication/vnd.oasis.opendocument.spreadsheet.odsIANA: OpenDocument Spreadsheet
OpenDocument Spreadsheet Templateapplication/vnd.oasis.opendocument.spreadsheet-template.otsIANA: OpenDocument Spreadsheet Template
OpenDocument Textapplication/vnd.oasis.opendocument.text.odtIANA: OpenDocument Text
OpenDocument Text Masterapplication/vnd.oasis.opendocument.text-master.odmIANA: OpenDocument Text Master
OpenDocument Text Templateapplication/vnd.oasis.opendocument.text-template.ottIANA: OpenDocument Text Template
OpenGL Textures (KTX)image/ktx.ktxKTX File Format
OpenOffice - Calc (Spreadsheet)application/vnd.sun.xml.calc.sxcWikipedia: OpenOffice
OpenOffice - Calc Template (Spreadsheet)application/vnd.sun.xml.calc.template.stcWikipedia: OpenOffice
OpenOffice - Draw (Graphics)application/vnd.sun.xml.draw.sxdWikipedia: OpenOffice
OpenOffice - Draw Template (Graphics)application/vnd.sun.xml.draw.template.stdWikipedia: OpenOffice
OpenOffice - Impress (Presentation)application/vnd.sun.xml.impress.sxiWikipedia: OpenOffice
OpenOffice - Impress Template (Presentation)application/vnd.sun.xml.impress.template.stiWikipedia: OpenOffice
OpenOffice - Math (Formula)application/vnd.sun.xml.math.sxmWikipedia: OpenOffice
OpenOffice - Writer (Text - HTML)application/vnd.sun.xml.writer.sxwWikipedia: OpenOffice
OpenOffice - Writer (Text - HTML)application/vnd.sun.xml.writer.global.sxgWikipedia: OpenOffice
OpenOffice - Writer Template (Text - HTML)application/vnd.sun.xml.writer.template.stwWikipedia: OpenOffice
OpenType Font Fileapplication/x-font-otf.otfOpenType Font File
OSFPVGapplication/vnd.yamaha.openscoreformat.osfpvg+xml.osfpvgIANA: OSFPVG
OSGi Deployment Packageapplication/vnd.osgi.dp.dpIANA: OSGi Deployment Package
PalmOS Dataapplication/vnd.palm.pdbIANA: PalmOS Data
Pascal Source Filetext/x-pascal.pWikipedia: Pascal
PawaaFILEapplication/vnd.pawaafile.pawIANA: PawaaFILE
PCL 6 Enhanced (Formely PCL XL)application/vnd.hp-pclxl.pclxlIANA: HP PCL XL
Pcsel eFIF Fileapplication/vnd.picsel.efifIANA: Picsel eFIF File
PCX Imageimage/x-pcx.pcxWikipedia: PCX
Photoshop Documentimage/vnd.adobe.photoshop.psdWikipedia: Photoshop Document
PICSRulesapplication/pics-rules.prfW3C PICSRules
PICT Imageimage/x-pict.picWikipedia: PICT
pIRChapplication/x-chat.chatWikipedia: pIRCh
PKCS #10 - Certification Request Standardapplication/pkcs10.p10RFC 2986
PKCS #12 - Personal Information Exchange Syntax Standardapplication/x-pkcs12.p12RFC 2986
PKCS #7 - Cryptographic Message Syntax Standardapplication/pkcs7-mime.p7mRFC 2315
PKCS #7 - Cryptographic Message Syntax Standardapplication/pkcs7-signature.p7sRFC 2315
PKCS #7 - Cryptographic Message Syntax Standard (Certificate Request Response)application/x-pkcs7-certreqresp.p7rRFC 2986
PKCS #7 - Cryptographic Message Syntax Standard (Certificates)application/x-pkcs7-certificates.p7bRFC 2986
PKCS #8 - Private-Key Information Syntax Standardapplication/pkcs8.p8RFC 5208
PocketLearn Viewersapplication/vnd.pocketlearn.plfIANA: PocketLearn Viewers
Portable Anymap Imageimage/x-portable-anymap.pnmWikipedia: Netpbm Format
Portable Bitmap Formatimage/x-portable-bitmap.pbmWikipedia: Netpbm Format
Portable Compiled Formatapplication/x-font-pcf.pcfWikipedia: Portable Compiled Format
Portable Font Resourceapplication/font-tdpfr.pfrRFC 3073
Portable Game Notation (Chess Games)application/x-chess-pgn.pgnWikipedia: Portable Game Notationb
Portable Graymap Formatimage/x-portable-graymap.pgmWikipedia: Netpbm Format
Portable Network Graphics (PNG)image/png.pngRFC 2083
Portable Pixmap Formatimage/x-portable-pixmap.ppmWikipedia: Netpbm Format
Portable Symmetric Key Containerapplication/pskc+xml.pskcxmlRFC 6030
PosMLapplication/vnd.ctc-posml.pmlIANA: PosML
PostScriptapplication/postscript.aiWikipedia: PostScript
PostScript Fontsapplication/x-font-type1.pfaWikipedia: PostScript Fonts
PowerBuilderapplication/vnd.powerbuilder6.pbdIANA: PowerBuilder
Pretty Good Privacyapplication/pgp-encryptedRFC 2015
Pretty Good Privacy - Signatureapplication/pgp-signature.pgpRFC 2015
Preview Systems ZipLock/VBoxapplication/vnd.previewsystems.box.boxIANA: Preview Systems ZipLock/Vbox
Princeton Video Imageapplication/vnd.pvi.ptid1.ptidIANA: Princeton Video Image
Pronunciation Lexicon Specificationapplication/pls+xml.plsRFC 4267
Proprietary P&G Standard Reporting Systemapplication/vnd.pg.format.strIANA: Proprietary P&G Standard Reporting System
Proprietary P&G Standard Reporting Systemapplication/vnd.pg.osasli.ei6IANA: Proprietary P&G Standard Reporting System
PRS Lines Tagtext/prs.lines.tag.dscIANA: PRS Lines Tag
PSF Fontsapplication/x-font-linux-psf.psfPSF Fonts
PubliShare Objectsapplication/vnd.publishare-delta-tree.qpsIANA: PubliShare Objects
Qualcomm's Plaza Mobile Internetapplication/vnd.pmi.widget.wgIANA: Qualcomm's Plaza Mobile Internet
QuarkXpressapplication/vnd.quark.quarkxpress.qxdIANA: QuarkXPress
QUASS Stream Playerapplication/vnd.epson.esf.esfIANA: QUASS Stream Player
QUASS Stream Playerapplication/vnd.epson.msf.msfIANA: QUASS Stream Player
QUASS Stream Playerapplication/vnd.epson.ssf.ssfIANA: QUASS Stream Player
QuickAnime Playerapplication/vnd.epson.quickanime.qamIANA: QuickAnime Player
Quickenapplication/vnd.intu.qfx.qfxIANA: Quicken
Quicktime Videovideo/quicktime.qtWikipedia: Quicktime
RAR Archiveapplication/x-rar-compressed.rarWikipedia: RAR
Real Audio Soundaudio/x-pn-realaudio.ramWikipedia: RealPlayer
Real Audio Soundaudio/x-pn-realaudio-plugin.rmpWikipedia: RealPlayer
Really Simple Discoveryapplication/rsd+xml.rsdWikipedia: Really Simple Discovery
RealMediaapplication/vnd.rn-realmedia.rm
RealVNCapplication/vnd.realvnc.bed.bedIANA: RealVNC
Recordare Applicationsapplication/vnd.recordare.musicxml.mxlIANA: Recordare Apps
Recordare Applicationsapplication/vnd.recordare.musicxml+xml.musicxmlIANA: Recordare Apps
Relax NG Compact Syntaxapplication/relax-ng-compact-syntax.rncRelax NG
RemoteDocs R-Viewerapplication/vnd.data-vision.rdz.rdzIANA: Data-Vision
Resource Description Frameworkapplication/rdf+xml.rdfRFC 3870
RetroPlatform Playerapplication/vnd.cloanto.rp9.rp9IANA: RetroPlatform Player
RhymBoxapplication/vnd.jisp.jispIANA: RhymBox
Rich Text Formatapplication/rtf.rtfWikipedia: Rich Text Format
Rich Text Format (RTF)text/richtext.rtxWikipedia: Rich Text Format
ROUTE 66 Location Based Servicesapplication/vnd.route66.link66+xml.link66IANA: ROUTE 66
RSS - Really Simple Syndicationapplication/rss+xml.rss, .xmlWikipedia: RSS
S Hexdump Formatapplication/shf+xml.shfRFC 4194
SailingTrackerapplication/vnd.sailingtracker.track.stIANA: SailingTracker
Scalable Vector Graphics (SVG)image/svg+xml.svgWikipedia: SVG
ScheduleUsapplication/vnd.sus-calendar.susIANA: ScheduleUs
Search/Retrieve via URL Response Formatapplication/sru+xml.sruRFC 6207
Secure Electronic Transaction - Paymentapplication/set-payment-initiation.setpayIANA: SET Payment
Secure Electronic Transaction - Registrationapplication/set-registration-initiation.setregIANA: SET Registration
Secured eMailapplication/vnd.sema.semaIANA: Secured eMail
Secured eMailapplication/vnd.semd.semdIANA: Secured eMail
Secured eMailapplication/vnd.semf.semfIANA: Secured eMail
SeeMailapplication/vnd.seemail.seeIANA: SeeMail
Server Normal Formatapplication/x-font-snf.snfWikipedia: Server Normal Format
Server-Based Certificate Validation Protocol - Validation Policies - Requestapplication/scvp-vp-request.spqRFC 5055
Server-Based Certificate Validation Protocol - Validation Policies - Responseapplication/scvp-vp-response.sppRFC 5055
Server-Based Certificate Validation Protocol - Validation Requestapplication/scvp-cv-request.scqRFC 5055
Server-Based Certificate Validation Protocol - Validation Responseapplication/scvp-cv-response.scsRFC 5055
Session Description Protocolapplication/sdp.sdpRFC 2327
Setexttext/x-setext.etxWikipedia: Setext
SGI Movievideo/x-sgi-movie.movieSGI Facts
Shana Informed Fillerapplication/vnd.shana.informed.formdata.ifmIANA: Shana Informed Filler
Shana Informed Fillerapplication/vnd.shana.informed.formtemplate.itpIANA: Shana Informed Filler
Shana Informed Fillerapplication/vnd.shana.informed.interchange.iifIANA: Shana Informed Filler
Shana Informed Fillerapplication/vnd.shana.informed.package.ipkIANA: Shana Informed Filler
Sharing Transaction Fraud Dataapplication/thraud+xml.tfiRFC 5941
Shell Archiveapplication/x-shar.sharWikipedia: Shell Archie
Silicon Graphics RGB Bitmapimage/x-rgb.rgbRGB Image Format
SimpleAnimeLite Playerapplication/vnd.epson.salt.sltIANA: SimpleAnimeLite Player
Simply Accountingapplication/vnd.accpac.simply.aso.asoIANA: Simply Accounting
Simply Accounting - Data Importapplication/vnd.accpac.simply.imp.impIANA: Simply Accounting
SimTech MindMapperapplication/vnd.simtech-mindmapper.twdIANA: SimTech MindMapper
Sixth Floor Media - CommonSpaceapplication/vnd.commonspace.cspIANA: CommonSpace
SMAF Audioapplication/vnd.yamaha.smaf-audio.safIANA: SMAF Audio
SMAF Fileapplication/vnd.smaf.mmfIANA: SMAF File
SMAF Phraseapplication/vnd.yamaha.smaf-phrase.spfIANA: SMAF Phrase
SMART Technologies Appsapplication/vnd.smart.teacher.teacherIANA: SMART Technologies Apps
SourceView Documentapplication/vnd.svd.svdIANA: SourceView Document
SPARQL - Queryapplication/sparql-query.rqW3C SPARQL
SPARQL - Resultsapplication/sparql-results+xml.srxW3C SPARQL
Speech Recognition Grammar Specificationapplication/srgs.gramW3C Speech Grammar
Speech Recognition Grammar Specification - XMLapplication/srgs+xml.grxmlW3C Speech Grammar
Speech Synthesis Markup Languageapplication/ssml+xml.ssmlW3C Speech Synthesis
SSEYO Koan Play Fileapplication/vnd.koan.skpIANA: SSEYO Koan Play File
Standard Generalized Markup Language (SGML)text/sgml.sgmlWikipedia: SGML
StarOffice - Calcapplication/vnd.stardivision.calc.sdc
StarOffice - Drawapplication/vnd.stardivision.draw.sda
StarOffice - Impressapplication/vnd.stardivision.impress.sdd
StarOffice - Mathapplication/vnd.stardivision.math.smf
StarOffice - Writerapplication/vnd.stardivision.writer.sdw
StarOffice - Writer (Global)application/vnd.stardivision.writer-global.sgl
StepManiaapplication/vnd.stepmania.stepchart.smIANA: StepMania
Stuffit Archiveapplication/x-stuffit.sitWikipedia: Stuffit
Stuffit Archiveapplication/x-stuffitx.sitxWikipedia: Stuffit
SudokuMagicapplication/vnd.solent.sdkm+xml.sdkmIANA: SudokuMagic
Sugar Linux Application Bundleapplication/vnd.olpc-sugar.xoIANA: Sugar Linux App Bundle
Sun Audio - Au file formataudio/basic.auWikipedia: Sun audio
SundaHus WQapplication/vnd.wqd.wqdIANA: SundaHus WQ
Symbian Install Packageapplication/vnd.symbian.install.sisIANA: Symbian Install
Synchronized Multimedia Integration Languageapplication/smil+xml.smiRFC 4536
SyncMLapplication/vnd.syncml+xml.xsmIANA: SyncML
SyncML - Device Managementapplication/vnd.syncml.dm+wbxml.bdmIANA: SyncML
SyncML - Device Managementapplication/vnd.syncml.dm+xml.xdmIANA: SyncML
System V Release 4 CPIO Archiveapplication/x-sv4cpio.sv4cpioWikipedia: pax
System V Release 4 CPIO Checksum Dataapplication/x-sv4crc.sv4crcWikipedia: pax
Systems Biology Markup Languageapplication/sbml+xml.sbmlRFC 3823
Tab Seperated Valuestext/tab-separated-values.tsvWikipedia: TSV
Tagged Image File Formatimage/tiff.tiffWikipedia: TIFF
Tao Intentapplication/vnd.tao.intent-module-archive.taoIANA: Tao Intent
Tar File (Tape Archive)application/x-tar.tarWikipedia: Tar
Tcl Scriptapplication/x-tcl.tclWikipedia: Tcl
TeXapplication/x-tex.texWikipedia: TeX
TeX Font Metricapplication/x-tex-tfm.tfmWikipedia: TeX Font Metric
Text Encoding and Interchangeapplication/tei+xml.teiRFC 6129
Text Filetext/plain.txtWikipedia: Text File
TIBCO Spotfireapplication/vnd.spotfire.dxp.dxpIANA: TIBCO Spotfire
TIBCO Spotfireapplication/vnd.spotfire.sfs.sfsIANA: TIBCO Spotfire
Time Stamped Data Envelopeapplication/timestamped-data.tsdRFC 5955
TRI Systems Configapplication/vnd.trid.tpt.tptIANA: TRI Systems
Triscape Map Explorerapplication/vnd.triscape.mxs.mxsIANA: Triscape Map Explorer
trofftext/troff.tWikipedia: troff
True BASICapplication/vnd.trueapp.traIANA: True BASIC
TrueType Fontapplication/x-font-ttf.ttfWikipedia: TrueType
Turtle (Terse RDF Triple Language)text/turtle.ttlWikipedia: Turtle
UMAJINapplication/vnd.umajin.umjIANA: UMAJIN
Unique Object Markup Languageapplication/vnd.uoml+xml.uomlIANA: UOML
Unity 3dapplication/vnd.unity.unitywebIANA: Unity 3d
Universal Forms Description Languageapplication/vnd.ufdl.ufdIANA: Universal Forms Description Language
URI Resolution Servicestext/uri-list.uriRFC 2483
User Interface Quartz - Theme (Symbian)application/vnd.uiq.theme.utzIANA: User Interface Quartz
Ustar (Uniform Standard Tape Archive)application/x-ustar.ustarWikipedia: Ustar
UUEncodetext/x-uuencode.uuWikipedia: UUEncode
vCalendartext/x-vcalendar.vcsWikipedia: vCalendar
vCardtext/x-vcard.vcfWikipedia: vCard
Video CDapplication/x-cdlink.vcdWikipedia: Video CD
Viewport+application/vnd.vsf.vsfIANA: Viewport+
Virtual Reality Modeling Languagemodel/vrml.wrlWikipedia: VRML
VirtualCatalogapplication/vnd.vcx.vcxIANA: VirtualCatalog
Virtue MTSmodel/vnd.mts.mtsIANA: MTS
Virtue VTUmodel/vnd.vtu.vtuIANA: VTU
Visionaryapplication/vnd.visionary.visIANA: Visionary
Vivovideo/vnd.vivo.vivIANA: Vivo
Voice Browser Call Controlapplication/ccxml+xml,.ccxmlVoice Browser Call Control: CCXML Version 1.0
VoiceXMLapplication/voicexml+xml.vxmlRFC 4267
WAIS Sourceapplication/x-wais-source.srcYoLinux
WAP Binary XML (WBXML)application/vnd.wap.wbxml.wbxmlIANA: WBXML
WAP Bitamp (WBMP)image/vnd.wap.wbmp.wbmpIANA: WBMP
Waveform Audio File Format (WAV)audio/x-wav.wavWikipedia: WAV
Web Distributed Authoring and Versioningapplication/davmount+xml.davmountRFC 4918
Web Open Font Formatapplication/x-font-woff.woffWikipedia: Web Open Font Format
Web Services Policyapplication/wspolicy+xml.wspolicyW3C Web Services Policy
WebP Imageimage/webp.webpWikipedia: WebP
WebTurboapplication/vnd.webturbo.wtbIANA: WebTurbo
Widget Packaging and XML Configurationapplication/widget.wgtW3C Widget Packaging and XML Configuration
WinHelpapplication/winhlp.hlpWikipedia: WinHelp
Wireless Markup Language (WML)text/vnd.wap.wml.wmlWikipedia: WML
Wireless Markup Language Script (WMLScript)text/vnd.wap.wmlscript.wmlsWikipedia: WMLScript
WMLScriptapplication/vnd.wap.wmlscriptc.wmlscIANA: WMLScript
Wordperfectapplication/vnd.wordperfect.wpdIANA: Wordperfect
Worldtalkapplication/vnd.wt.stf.stfIANA: Worldtalk
WSDL - Web Services Description Languageapplication/wsdl+xml.wsdlW3C Web Service Description Language
X BitMapimage/x-xbitmap.xbmWikipedia: X BitMap
X PixMapimage/x-xpixmap.xpmWikipedia: X PixMap
X Window Dumpimage/x-xwindowdump.xwdWikipedia: X Window Dump
X.509 Certificateapplication/x-x509-ca-cert.derWikipedia: X.509
Xfigapplication/x-xfig.figWikipedia: Xfig
XHTML - The Extensible HyperText Markup Languageapplication/xhtml+xml.xhtmlW3C XHTML
XML - Extensible Markup Languageapplication/xml.xmlW3C XML
XML Configuration Access Protocol - XCAP Diffapplication/xcap-diff+xml.xdfWikipedia: XCAP
XML Encryption Syntax and Processingapplication/xenc+xml.xencW3C XML Encryption Syntax and Processing
XML Patch Frameworkapplication/patch-ops-error+xml.xerRFC 5261
XML Resource Listsapplication/resource-lists+xml.rlRFC 4826
XML Resource Listsapplication/rls-services+xml.rsRFC 4826
XML Resource Lists Diffapplication/resource-lists-diff+xml.rldRFC 4826
XML Transformationsapplication/xslt+xml.xsltW3C XSLT
XML-Binary Optimized Packagingapplication/xop+xml.xopW3C XOP
XPInstall - Mozillaapplication/x-xpinstall.xpiWikipedia: XPI
XSPF - XML Shareable Playlist Formatapplication/xspf+xml.xspfXML Shareable Playlist Format
XUL - XML User Interface Languageapplication/vnd.mozilla.xul+xml.xulIANA: XUL
XYZ File Formatchemical/x-xyz.xyzWikipedia: XYZ File Format
YAML Ain't Markup Language / Yet Another Markup Languagetext/yaml.yamlYAML: YAML Ain't Markup Language
YANG Data Modeling Languageapplication/yang.yangWikipedia: YANG
YIN (YANG - XML)application/yin+xml.yinWikipedia: YANG
Z.U.L. Geometryapplication/vnd.zul.zirIANA: Z.U.L.
Zip Archiveapplication/zip.zipWikipedia: Zip
ZVUE Media Managerapplication/vnd.handheld-entertainment+xml.zmmIANA: ZVUE Media Manager
Zzazz Deckapplication/vnd.zzazz.deck+xml.zazIANA: Zzazz

 


 http://www.freeformatter.com/mime-types-list.html

 




Posted by 장안동베짱e :


1day 오늘의 포인트

부력>=중력

뜨는힘이 가라않는 힘보다 크거나 같아야 물에 가라않지 않음

최대한 뜨는 힘을 더 받으려면 부력을 받는 범위를 늘려야

-> 고개를 들거나 숙이면 무게는 동일한데 부력을 받는 범위가 줄어들어서 무게균형이 깨져서 가라 앉음


앞으로 갈때는 

손과 발을 최대한 모으고(최대한 슬림하게)

발목을 곧게펴고 무릎은 굽히지 말고★

공기를 차지말고 물을 차내야함.

빠르게 크게.

고개를 너무 많이 숙이면 무게가 앞으로 쏠려서 밑으로 들어감.

고개들 들면 가라앉음


일어날때는

양 다리를 올리고 팔은 내리고 몸이 "-"모양에서 "^"모양으로 또 ">"모양이 되게끔하면 서진다.




Posted by 장안동베짱e :


디지털 방송 시청시 아래 그림과 같은 에러가 뜨는 채널들은 케이블 방송사에서 H.264 방식으로 송출되는 채널들이며, 이 채널들을 시청하기 위해서는 H.264 디코더가 필요합니다.


SKY TV 프로그램

SKY Capture 프로그램



다만, H.264 디코더는 당사에서 별도의 라이선스(저작권)를 보유하고 있지 않기 때문에 플레이어에 기본 제공해 드리지 못하고 있습니다. H.264 디코더는 고객님께서 별도로 구하셔서 구하셔서 설치하셔야 합니다.

H.264 디코더의 경우 몇몇 소프트웨어 제조사에서 제공하고 있으며 대표적으로 많이 사용되는 디코더로는 파워 DVD 7.3 이상(10 버전 이하) 버전과 CoreAVC 정도가 있습니다.

당사에서 주로 테스트하거나 또는 다른 고객님께서 많이 사용하시는 H.264 디코더는 Power DVD에 포함된 Cyberlink H.264 Video Decoder 이오니 가급적 이 코덱을 설정하셔서 사용해 보실 것을 권해 드립니다.
 
유료 디코더는 해당 디코더 제조사에서 비용을 지불하고 사용하여야 하여 저희가 제공할 수가 없고, 무료 디코더들도 보통 상업적인 용도가 아닌 개인 사용에 한해서 무료 제공하는 것이 일반적이라 저희가 제공하기가 어려운 점은 양해 바랍니다.


아래의 설정 방법은 Cyberlink PowerDVD8을 설치한 후에 Cyberlink H.264 Video Decoder를 설정하는
예 이오니 참조하시기 바랍니다.


1. Cyberlink PowerDVD8  등의 프로그램을 설치하셨다면 플레이어의 환경설정에서 설치한 디코더를 설정해 주시면 됩니다.

SKY TV 프로그램
(1) 환경설정  ☞  디코더/렌더러  ☞  비디오 디코더 선택 중에 H.264의  선택 후   선택합니다.

 (2) 필터 선택창에서 필터 리스트에서 "Cyberlink H.264/AVC Decoder" 를 선택합니다.



SKY Capture 프로그램
(1) 환경설정  ☞  디코더 항목으로 가서 H.264/AVC1 항목에서  선택 후 USER_define 을 선택합니다.


(2) 스크롤바를 내려서 "CyberLInk H.264/AVC Decoder" 를 찾아 선택한 후 하단의 OK를 누릅니다.


 
 http://skyok.co.kr/board/index.html?imode=view&D=5&c_id=188922&my_mode=&search_1=&search_2=&start=0

 




Posted by 장안동베짱e :


안녕하세요? 간만에 강좌 남깁니다.

Windows Vista 이후 버전부터 무선랜(WLAN)에 아래와 같이 제약을 넣어두었습니다.


00 - 00 - 00 - 00 - 00 - 00


MAC 주소의 두 번째는 숫자는 무조건 2, 6, A, E 중에 하나가 되어야 한다.


이 조항 때문에 해당 운영체제 부터는 MAC 변경 시 위 조건을 충족하지 않으면 절대 변경되지 않습니다.

예를 들어 설명하자면.. 아래 두 개는 변경이 허용 되지만, 그 밑에 두 개는 변경되지 않습니다.


86 - 22 - AA - BB - CC - DD (O)

02 - GF - 00 - 8A - FF - CC (O)

80 - 99 - FF - CC - 00 - 66 (X)

79 - 42 - 88 - 99 - 00 - 12 (X)


그런데, 내가 원하는 MAC 주소의 두 번째가 2, 6, A, E를 제외한 값이다? (저는 0을 넣어야 했습니다.)

이러면 어떻게 해야 될까요? 인터넷을 찾아 이에 대한 해결책을 찾아보았습니다.


 1) Windows XP 이하 운영체제를 설치한다. (단, 인텔 무선랜은 12.x 버전대만 변경이 가능함.)

 2) WLAN의 실제 MAC 주소를 해당 주소로 재 Writing 한다.

 3) MAC Clone이 되는 공유기 혹은 휴대용 공유기를 사용하여 연결한다.


각각 살펴보면.. 


 1) 은 요즘 노트북 사양에 따라 지원 안 되는 모델이 많아졌기에 힘들다고 할 수 있고,

 2) 는 무선랜 제조사에 요구하거나 인터넷에 찾아 작업을 해야 합니다.. 실패하면 A/S 받아야 하고, Writing 횟수도 제한이 있습니다.

 3) 은 추가 비용이 발생하고 휴대용 공유기 찾기가 쉽지 않습니다. 특히, 배터리로 가는 녀석은요..


그래서 일단 제가 가진 무선랜 중에 Realtek WLAN USB 동글을 사용하여 몇 가지 실험을 해보기로 했습니다.


 1) Vista 용 드라이버(64bit)를 설치하고, 레지스트리 수동 변경 -> X

 2) 7 용 드라이버(64bit)를 설치하고, 레지스트리 수동 변경 -> X

 3) Windows XP/2003까지 지원하는 무선랜 MAC 변경툴 사용 - > X (변경되었다 나오나 실제 변경 안 됨.)

 4) Windows 7 지원하는 무선랜 MAC 변경툴 사용 -> X (일부 프로그램은 위 제약 사항을 경고하기도 함.)

 5) XP 용 드라이버(64bit) 강제 설치 후, 레지스트리 변경 -> O


헐! XP용 드라이버를 강제 설치하니 MAC 변경이 자유롭게 가능합니다.. ㅡㅡ;

가끔 오작동을 하기는 하지만, 뽑았다 다시 꽂으면 정상 작동합니다.


속도는 Vista/7용 드라이버와 크게 차이가 없었습니다.

만약, 저처럼 변경이 된다면 3) 번 툴을 사용해도 마찬가지로 변경이 됩니다.


 결론 : Windows XP 용 무선랜 드라이버를 깔고 시도하라. 지원되지 않으면 지원하는 USB 동글을 구입하라.


끝으로 무선랜 MAC을 레지스트리로 변경하는 방법입니다.


시작 - 실행 - regedit 을 눌러 레지스트리 편집기로 이동합니다.


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}


위 주소를 찾아 주세요.

항목을 펼치면 0000부터 장치들이 쭉 나열 되어 있습니다.


여기서 장치 관리자 - 무선랜 모델을 찾습니다. (CTRL+F 검색창으로 찾으면 금방 찾아집니다.)

마우스 우측 버튼 - 새로 만들기 - 문자열 값(S)를 선택하고, NetworkAddress 라고 칩니다. (대소문자 유의!)


그리고 그 값에 바꾸고 싶은 MAC 주소를 - 없이 연달아 입력합니다.

(예) 001234567890


무선랜 드라이버를 사용 안 함 - 사용함으로 전환하면 해당 MAC 주소로 변경이 됩니다.

명령 콘솔창에서 IPCONFIG /ALL 명령으로 확인 가능합니다.

 


 http://windowsforum.kr/lecture/4906950

 




Posted by 장안동베짱e :



   

혼자 인터넷 뒤져보고 삽질하다가 기록 차원에서 남겨봅니다.

 

갤s3에서 tasker를 이용하여 운전모드를 자동으로 on/off하기

 

Tasker에서 car mode가 기본적으로 있지만 갤럭시s에서는 동작이 안되더군요.

먼저 구글플레이에서 갤s전용 운전모드 위젯을 설치

https://play.google.com/store/apps/details?id=com.arnab.drivingmode&hl=en

이 위젯을 실행해 on/off할 수 있습니다.

 

Task만들기

새 task -> 이름은 "운전모드 On" -> 하단 + 누르고 Misc -> Send Intent 선택

아래 항목 입력합니다 (따옴표 없이 입력, 대소문자 가림)

Action = "_drv_on"

Cat 비워둠

Mime Type 비워둠

Data 비워둠

Extra 비워둠

Package = "com.arnab.drivingmode"

Class = "com.arnab.drivingmode.DWidget"

Target = Broadcast Receiver

 

Profile만들기

새 profile-> 이름 "운전모드 On"

* 각자 알아서 조건을 만드세요. 저의 경우는 화면 가로모드 + GPS ON 일 경우 운전모드가 켜지게 했습니다.

Add -> State -> Display -> Display Orientation -> is "Portrait" 선택

Task는 미리 만들어 놓은 "운전모드 On" 을 선택

다시 좌측의 조건을 꾹 눌러서 Add -> State -> Varibles -> Variable Value ->

Name = "%GPS"

Op = "Matches"

Value = "on"

 

 

 

운전모드 Off는 같은 설정이나, Task의 intent에 Action = "_drv_off"로 만들면 됩니다.

운전모드 Off의 조건은 저의 경우는 그냥 단순하게 display off 일 경우 바로 꺼지게 했네요.

 
 http://www.clien.net/cs2/bbs/board.php?bo_table=cm_andro&wr_id=119709

 




Posted by 장안동베짱e :


Enabling OS X Screen Sharing from the Command Line

There are several ways to enable screen sharing on OS X Mountain Lion from the command line.  The first method is an old standby:

sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -access -off -restart -agent -privs -all -allowAccessFor -allUsers

This will work in 99% of the cases, but there may be some situations when it’s not quite enough.  The above command enables Screen Sharing by enabling Remote Management; however, we lose the ability to add fine-grained control to who can connect & those who can’t.

Here’s another way to enable screen sharing from the command line:

sudo defaults write /var/db/launchd.db/com.apple.launchd/overrides.plist com.apple.screensharing -dict Disabled -bool false
sudo launchctl load /System/Library/LaunchDaemons/com.apple.screensharing.plist

In the second example, we enable only Screen Sharing, not Remote Management. This allows us to use System Preferences to restrict who can screen share to our machine (e.g. local administrators, network administrators). We use the second example when configuring our authentication servers remotely.


 

http://pivotallabs.com/enabling-os-x-screen-sharing-from-the-command-line/

 


Posted by 장안동베짱e :