2017년 11월 21일 화요일

proxy 설정 (for intellij, maven)

외부망 접속시 proxy 를 꼭 거쳐야 하는 환경에서 개발을 할때
browser 에서 접속이 되는 사이트는 다른 프로그램 (예: ide, maven) 에서도 접속이 가능하다.
browser 가 단지 네트워크 연결을 proxy 서버 를 사용하는 것 일 뿐이기 때문이다.

1. proxy 정보 확인


현재 어떤 proxy 서버를 사용하는지에 대한 확인은
ie > 도구 > 인터넷 옵션 > 연결 - LAN 설정을 보면 확인할 수 있다.

browser 이외의 기타 다른 프로그램에서 프록시 정보를 확인하기 위해
자동구성 영역에서 "자동 구성 스크립트 사용" 이 체크되어 있는지 확인하고
체크되어 있으면 자동 프록시 URL 정보로 실제 사용되는 proxy 정보를 확인해야 한다.

확인방법은
자동 proxy url (예:http://test.com/test.pac) 에 browser 로 접속한 후 다운로드 되는 파일을 텍스트 편집기로 열면  실제로 사용되는 proxy 정보를 알수 있다.
보통 아래와 같은 형태로 되어있다.


 function FindProxyForURL(url,host)
   {
     if (host == "www.harvest-books.org")
         return "DIRECT";
 
         return "PROXY myproxy.harvest-books.org:80;
                 PROXY myotherproxy.harvest-books.org:8080; 
                 DIRECT" ;  
   }
 


위와 같은 형식에서 마지막에 return 되는 proxy 주소들이 자동 구성 proxy 에서 사용되는 proxy 주소들이다.

그리고 "자동 구성 스크립트 사용" 이 체크되어 있지 않거나 보조적으로 자동구성영역 하단의 다음 영역에
수동 proxy 정보가 입력되어 있으면 (자동과 수동이 모두 있다면 자동proxy 를 우선적으로 사용한다.)
수동 proxy 정보도 따로 보관해 어플리케이션에서 프록시 설정시 자동 정보로 proxy 연결이 안되면 수동 proxy 정보로도 시도해봐야 한다.


2. intellij proxy 설정

File > settings > Appearance & Behavior > System Settings > HTTP Proxy 에서 
위에서 확인한 프록시 정보로 설정 후 Check connection 으로 접속이 되는지 테스트한다.

File > settings > Plugins 의
[Install JetBrains Plugin...] 이나 [Browse repositories...]  에서도 마찬가지로 
각각의 버튼을 클릭하면 나오는 창의 하단의 [HTTP Proxy Settings... ] 라는 메뉴에서 proxy 설정이 가능하다.

3. maven proxy 설정

maven 의 user settings file 
(예: intellij 일 경우 settings > Build, Execution, Deployment > Maven - User settings file 의 경로 확인, Override 체크박스 선택)
settings.xml 을 아래의 내용으로 생성한다.

    <proxies>
        <proxy>
            <id>생략가능</active>
            <active>true</active>
            <protocol>http</protocol>
            <host>127.255.255.0</host> <!-- proxy 서버 주소 -->
            <port>8080</port> <!-- proxy 서버 port -->
            <username>없으면 생략가능 - 삭제</username> <!--  proxy id -->
            <password>없으면 생략가능 - 삭제</password> <-- proxy passwd-->
            <nonProxyHosts>없으면 생략가능</nonProxyHosts>
        </proxy>
    </proxies>
</settings>
만약 proxy 서버가 여러개라면 위 내용중 <proxy>...</proxy> 내용을 proxy 서버 갯수 만큼 복사해 
id 밑 host 등 해당 proxy 서버 정보로 수정한다.

autohotkey 설정 (like hhkb)

;; 우측 alt 키를 KeyTweak 프로그램을 이용해 MacKeyPad (NumpadClear) 버튼으로 변경

;;;; mouse ;;;;

SetKeyDelay, -1
SetMouseDelay, -1
#UseHook

초기속도=8
가속도=0.3
한계속도=50
현재속도:=초기속도


NumpadClear & h::
NumpadClear & j::
NumpadClear & k::
NumpadClear & l::
위아래값=0
좌우값=0
if (현재속도<=한계속도)
  현재속도+=가속도

if GetKeyState("j", "P") and GetKeyState("LAlt", "P")
  위아래값 := 현재속도
else if GetKeyState("j", "P") and !GetKeyState("LAlt", "P")
  Send, {Blind}{Down}

if GetKeyState("k", "P") and GetKeyState("LAlt", "P")
  위아래값 := -현재속도
else if GetKeyState("k", "P") and !GetKeyState("LAlt", "P")
  Send, {Blind}{Up}

if GetKeyState("h", "P") and GetKeyState("LAlt", "P")
  좌우값 := -현재속도
else if GetKeyState("h", "P") and !GetKeyState("LAlt", "P")
  Send, {Blind}{Left}


if GetKeyState("l", "P") and GetKeyState("LAlt", "P")
  좌우값 := 현재속도
else if GetKeyState("l", "P") and !GetKeyState("LAlt", "P")
  Send, {Blind}{Right}

MouseMove, %좌우값%, %위아래값%,0,R
if (위아래값) OR (좌우값)
  {
  sleep 10
  goto NumpadClear & j
  }
현재속도:=초기속도
return



NumpadClear & Space::
if GetKeyState("LAlt", "P") {
SendEvent {Blind}{RButton down}
KeyWait RAlt
SendEvent {Blind}{RButton up}
} else {
SendEvent {Blind}{LButton down}
KeyWait RAlt
SendEvent {Blind}{LButton up}
}
return

;;;;;;;;;;;;;;;;


;; left (vi style)
;; NumpadClear & h::
;;    Send, {Blind}{Left}
;; Return

;; down (vi style)
;; NumpadClear & j::
;;      Send, {Blind}{Down}
;; Return
 
;; up (vi style)
;; NumpadClear & k::
;;      Send, {Blind}{Up}
;; Return

;; right (vi style)
;; NumpadClear & l::
;;      Send, {Blind}{Right}
;; Return

;; windows lock (win key + L) 비활성화
SetDisableLockWorkstationRegKeyValue( 1 )
return

;; win + l - block
;; regedit HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System // key = DisableLockWorkstation / value dword = 1
;; #l::
;;   MsgBox, Win-L was pressed! ; Arbitrary code here
;; return

;; 우측 windows key + lock 만 기능 활성화
>#l::
  ; RWin-L
  ; Temporary enable locking
  SetDisableLockWorkstationRegKeyValue( 0 )
  sleep, 100
  ; Lock
  DllCall( "User32\LockWorkStation" )
  sleep, 100
  ; Disable locking again
  SetDisableLockWorkstationRegKeyValue( 1 )
return

;; 좌측 win key + 좌측 alt + L : windows lock
<#<!l::
  ; LWin-LAlt-L
  ; Temporary enable locking
  SetDisableLockWorkstationRegKeyValue( 0 )
  sleep, 100
  ; Lock
  DllCall( "User32\LockWorkStation" )
  sleep, 100
  ; Disable locking again
  SetDisableLockWorkstationRegKeyValue( 1 )
return

OnExitSub:
  ; Enable LockWorkStation, because this script is ending (so other applications aren't further disturbed)
  SetDisableLockWorkstationRegKeyValue( 0 )
  ExitApp
return

SetDisableLockWorkstationRegKeyValue( value )
  {
  RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Policies\System, DisableLockWorkstation, %value%
  }

// home key remap : 우측alt + u
NumpadClear & u::
     Send, {Blind}{Home}
Return

// end key remap : RAlt + i
NumpadClear & i::
     Send, {Blind}{end}
Return

// pagedown : RAlt + m
NumpadClear & m::
     Send, {Blind}{pgdn}
Return

// Pageup : RAlt +,
NumpadClear & ,::
     Send, {Blind}{pgup}
Return

;; 한영 : ctrl + space
^space::Send, {vk15sc138}

;; capslock : RAlt + tab
NumpadClear & tab::
     Send, {Blind}{capslock}
Return

;; esc : RAlt + `
NumpadClear & `::
     Send, {Blind}{esc}
Return

;; f1 : RAlt + 1
NumpadClear & 1::
     Send, {Blind}{f1}
Return

NumpadClear & 2::
     Send, {Blind}{f2}
Return

NumpadClear & 3::
     Send, {Blind}{f3}
Return

NumpadClear & 4::
     Send, {Blind}{f4}
Return

NumpadClear & 5::
     Send, {Blind}{f5}
Return

NumpadClear & 6::
     Send, {Blind}{f6}
Return

NumpadClear & 7::
     Send, {Blind}{f7}
Return

NumpadClear & 8::
     Send, {Blind}{f8}
Return

NumpadClear & 9::
     Send, {Blind}{f9}
Return

NumpadClear & 0::
     Send, {Blind}{f10}
Return

NumpadClear & -::
     Send, {Blind}{f11}
Return

NumpadClear & =::
     Send, {Blind}{f12}
Return


NumpadClear & backspace::
 GetKeyState, shiftState, LShift
 GetKeyState, ctrlState, LControl
 if shiftState = D
  if ctrlState = D
   Send, +^{esc}
  else
        Send, +{del}
 else
      Send, {Blind}{del}
Return

NumpadClear & \::
 Send, {Blind}{Insert}
Return

LAlt & backspace::
 Send, {del}
Return

NumpadClear & a::
     Send, {Blind}^a
Return

NumpadClear & c::
     Send, {Blind}^c
Return

NumpadClear & d::
     Send, {Blind}^d
Return

NumpadClear & e::
     Send, {Blind}^e
Return

NumpadClear & f::
     Send, {Blind}^f
Return

NumpadClear & o::
     Send, {Blind}^o
Return

NumpadClear & r::
     Send, {Blind}^r
Return

NumpadClear & t::
     Send, {Blind}^t
Return

NumpadClear & x::
     Send, {Blind}^x
Return

NumpadClear & v::
     Send, {Blind}^v
Return

NumpadClear & w::
     Send, {Blind}^w
Return

NumpadClear & s::
     Send, {Blind}^s
Return

NumpadClear & z::
     Send, {Blind}^z
Return

NumpadClear & enter::
     Send, {AppsKey}
Return

intellij for mac 에서 main menu 위치 이동

mac 용 intellij 에서 main menu 는 mac 의 main menu bar 에 위치한다.
이것을 intellij 내부에 포함시키기 위해서는

Help > Edit Custom Properties 메뉴에서
apple.laf.useScreenMenuBar=false 를 추가하면 intellij 내부로 메인메뉴가 위치한다.
(기본값은 true 이다.)

Intelij 설정 및 plugin

1. preferences... (settings...) Appearance & Behavior > Appearance - Window Options        ✓   Show memory indicator Editor &...