Windows 기반에 SVN 서버가 동작할 때, Hook 설정이다.

특히 SVN에서 Commit Action에 Jenkins를 연결할 때 사용하는 방법이다.


1. hook 폴더로 이동.

2. post-commit.bat 파일 작성

3. post-commit.bat 파일 내에 아래와 같이 작성

powershell -Command (New-Object System.Net.WebClient).DownloadString(\"http:///job//build?delay=0sec\");


4. 저장 후 Commit.


만일 인증 토큰을 이용하는 경우에는 URL 부분을 좀 손을 봐야 한다.

powershell -Command (New-Object System.Net.WebClient).DownloadString(\"http://:@/job//build?token=&delay=0sec\");


Linux인 경우에는 CUrl 이라는 명령으로 처리한다.

728x90

SVN 기능 중 Svnsync 라는 기능이 있어, 원격에서 서로 다른 레파지토리를 동기화 시킬 수 있다.
물론 양 측의 리비전을 맞추기 위해서는 저장 대상이 되는 위치는 빈 데이터이여야 한다.

그런데 복사해야할 레파지토리가 오래된 경우 데이터가 매우 커서 한번 Sync를 시도하면 세월아 내월하가 될 수 있다. 더욱이 특정 버전에서 파일크기가 크면, http 기반의 svn 서버 중 일부는 에러를 내고 이야기를 진행하지 못하는 경우도 있다.

이 경우에 처리하는 방법은 다음과 같다.

1. svnadmin dump를 이용해서 원본 데이터를 뜬다.

2. 복제 대상에 원본 데이터를 svnadmin load를 이용해서 붇는다.

3. svnsync init 할 때, --allow-non-empty를 넣어 처리한다.


즉 svnsync 초기화 할 때, --allow-non-empty를 하면된다.


그리고 그 뒤는 sync로 연속.


만일 sync 중 오류가 나면, 해당 revision만 dump를 뜨고 다시 대상에서 붇고 sync를 다시해준다.


중요한 것은 쌍방의 버전이 동일하게 진행되어야 한다.


728x90

먼저 입력할 계정의 리스트가 담긴 CSV 파일을 먼저 만든다.

형식은 어떻게 만들어도 상관 없지만, 상단에는 영어로된 제목이 있어야 한다.

여기서는 3개의 필드만 만들었다.


만들었으면 다음과 같은 텍스트 파일 기반의 스크립트 파일을 만든 뒤, exec.ps1 이라는 이름으로 저장한다.

$Users = Import-Csv -Path "list.csv"            
foreach ($User in $Users)            
{            
    $Displayname = $User.'Name' 
    $UserFirstname = $User.'Name'
    $UserLastname = ' '
    $OU = $User.'OU'            
    $SAM = $User.'Id'            
    $UPN = $SAM + "@knoie.net"              
    New-ADUser -Name "$Displayname" -DisplayName "$Displayname" -SamAccountName $SAM -UserPrincipalName $UPN -AccountPassword (ConvertTo-SecureString -String "1234" -AsPlainText -Force) -Enabled $true -Path "OU=Developers,OU=Members,DC=knoie,DC=net" -ChangePasswordAtLogon $false –PasswordNeverExpires $true -server knoie.net            
}


실행을 하면, 각 계정들을 자동으로 생성한다.

암호는 일괄적으로 1234로 등록된다.


다만, 이 스크립트를 실행하려면 Run As Administrator로 띄워야 정상적으로 실행된다.


728x90

IIS 기반의 WebDAV를 구축했지만 용량 제약이 발생했다.
매우 큰 사이즈가 안되더라도 최소 2기가 정도는 되어야 할 것 같아서...

각기 서버와 클라이언트를 나누어 설정을 진행한다.


1. 서버

서버에서는 Inetmgr을 띄운다.

그리고 해당 설정을 할 웹서버 혹은 가상 디렉토리 혹은 응용프로그램 위치까지 이동한다.
Feature View 에서 "Request Filtering"을 더블 클릭해서 들어간다.


오른편의 메뉴인 Edit Feature Settings를 클릭한다.


나오는 팝업 창 내에 Maximum allowed contents length (Byte) 내에 2147483648 이라는 값을 넣는다.
(바이트 기준 2G 값 = 2 * 1024 * 1024 * 1024 )


저장하고 서비스를 재시작하거나 웹사이트 Recycle 해준다.


2. 클라이언트

클라이언트의 경우 일반적으로 다음과 같은 설정이 기본 값이다.
( WebDav 기반 최대 업/다운로드 사이즈 : 50M , 최대 타임아웃 : 1800 초 )


레지스트리를 두가지로 설정한다.

1. 최대 크기 수정

위치 : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters

FileSizeLimitInBytes : 최대값 10진수 기준 / 4294967295


2. Timeout

위치 : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MRxDAV\Parameters

FsCtlRequestTimeoutInSec : 최대값 10진수 기준 / 4294967295


728x90

WebDAV 라는 기술은 나온지 어느정도의 시간이 흐르긴 했다.
처음에는 편의성은 우수했지만, 보안적인 문제점들이 많아 사용 기피가 된적도 많았다.

그런데, HTTPS 즉 SSL/TSL 기반의 암호화를 하고, 아이폰 등의 휴대폰이나 각종 원격 동영상/음악 플레이어들이 WebDAV 기반으로 제작되는 케이스들이 늘어나면서 생각보다 많은 사용자가 생겼다.
필자의 경우 많은 파일들이 있는데, 이 파일들을 원격에서 노트북으로 확인하고 정리할 수 있는 방법이 필요했고, 그에 제일 만만한 이 WebDAV 기술로 적용해보려 했다.


1. 기본적인 준비
제일 먼저 해야 하는 것은 서버를 결정해야 한다.
그리고 운영체제는 당연히 Windows 여야 하며, 최소 Pro 버전이상이 있어야 한다.
(Windows Server는 상관없고, Windows 7, 8, 10의 경우 Pro 버전 이상이 필요)
또한 상시 켜져 있고, 상시 연결될 수 있는 유선 네트워크도 필요하다.(무선랜도 되기야 하겠지만.. 한계가.)
그리고 공유기 같은게 있다면, 일단 포트 포워딩이라는 기술을 이용해 노출도 해야 한다.

2. IIS 구성
서버가 구성되었다면, IIS를 설치해야 한다.
"Turn Windows features on or off"를 실행한다.
그리고 항목 중에, Internet Information Service를 선택한다.

각 구성요소 중 필수적으로 아래와 같은 항목이 선택되어 있는지 체크하도록 한다.

  • WebDAV Publishing - 보통은 안켜져 있는데, 꼭 체크해서 넣는다.
  • Basic Authentication - 기본인증이라고 부르며, 이 기능이 있어야 아이디/패스워드를 입력할 수 있다.
    보통 휴대폰이나 3th-Party 제품의 경우 로그인 방식이 이 기본 인증방식이 많기 때문에 꼭 선택해야 한다.
  • IIS Management Consol - 보통은 선택되어 있는데, 이거 없으면 설정이 매우 어려우니 꼭 체크해놓는다.

그외의 것은 필요하면 설치해야 겠지만, 굳이 필요하지 않는다.
웹서버로 쓰는게 아니라, WebDAV 서버로만 쓸 것이기 때문에, 굳이 무겁게 설정할 필요는 없다.
(필자는 개인적으로 테스트해봐야 되는게 있어서... 이것 저것 선택하여 설치함)


3. SSL 구성
Windows 기능 중 원격에 있는 파일들을 연결해 볼 수 있는 기능이 있다.
윈도우 탐색기로 내 컴퓨터에서 오른쪽 버튼을 눌러 "Add a network location"(한글로 네트워크 위치 추가?)를 하면 원격에 위치한 파일을 마치 하드 디스크 붙이듯 연결할 수 있다.
WebDAV로 연결할 수도 있는데, 다만, Windows 7인지, Vista인지, 이 WebDAV로 연결할 때 반드시 SSL로 연결해야 한다는 단서가 붙는다.
그래서 SSL 구성이 필요하다.
개인적으로는 이게 제일 난해 했다.
일단 인증서를 만들어야 하는데, 유료로 제공하는 것은 비싸고, 그렇다고 IIS 안에 있는 Self-Sign 즉 자체 사설 인증서로는 Windows Explorer를 이용한 연결 자체가 안된다. ( 이 역시 편법은 있지만.. )

일단 인증서 확보가 제일 관건.
OpenSSL 이라는 프로그램을 이용해서 생성하는 다양한 방법들이 제시되는데, Linux 가 좀 필요하다
(Windows 나 Mac 버전도 있음). 다만, 이 부분은 필자도 잘 몰라서 해본적은 없다. - 구글사마의 도움이.......필자는 pfSense 라는 방화벽 겸, 라우터 겸 사용하는 솔루션을 통해서 인증서를 생성했다.
Root 인증서와 서버용 인증서, 그리고 해당 서버용 인증서의 키를 확보했다.
( root.crt, server.crt, server.key )

그런데 IIS 에서는 이 인증서를 가져올 때 pfx 형식의 인증서만 받는다. - 짐작컨데 개인키 부터 루트인증서 정보까지 담고 암호로 잠긴 형태로 알고 있다. 문제는 crt 파일과 key 파일로 pfx 파일로 만들려면 OpenSSL을 이용해 믹스를 해야 하는데, 이것도 수월치 않았다.
필자는 그냥 포기했고, 대신 사이트에서 제공하는 도구를 이용해 등록했다.

사이트는 https://www.sslshopper.com/ssl-converter.html 이고 이 위치에서 서버용 crt와 key 파일로 pfx 파일을 생성했다.


위와같이 해서 최종 pfx 파일을 만들면 끝이다.


3. IIS 내에 인증서 등록

inetmgr 이라는 프로그램을 실행한다.
왼쪽 트리에서 최상위 항목을 선택한 뒤, "Server Certificates"를 선택한다.

회면이 전환 되었으면 오른편에 있는 "Import"를 선택한다.


작은 팝업이 뜨는데, 앞서 제작한 pfx 파일을 선택하고, 만들 때 넣었던 암호를 넣고, Web Hosting으로 선택한 뒤 "OK" 버튼을 누르면 닫히면서 리스트가 하나 추가된다.


4. IIS 내 https 구성
자동으로 구성 된 Web Server를 쓸수 있고, 아니면 새로 만들어도 된다.
어쨌던 사이트 부분를 클릭해서 선택 한 후 Bindings... 를 클릭한다.

일반적으로 80 포트로 연결할 수 있는 사이트가 하나 있는데, 무시하고, Add.. 를 클릭해서 나오는 팝업에 정보들을 입력한다.

먼저 http 라고 된 부분을 https 로 선택한다.
포트는 자신이 원하는 포트로 선택한다.(공유기나 라우터에서 정의한 포트를 적으면 된다.)
Host name에는 원격으로 들어올 때 사용하는 URL을 사용한다.
SSL certificate 에서는 앞서 Import 한 인증서를 선택한다. (만약 없다면 3번 혹은 2번 부터 작업해야 할 수 있다. )
마지막으로 Require Server Name Indication이 체크되어 있으면 끈다.


5. Web Application 설정

다음은 사이트 동작용 웹어플리케이션 부분이다.
다시 Feature View 창에서 Basic Settings... 를 선택한다.

그냥 직관적으로 만들면 Application pool 이 아마도 Default AppPool로 되어 있을 것이다. 그냥 써도 무방하지만, 기왕이면 새로운 Application pool을 만들어 적당히 이름을 짓는다. 만들 때 로그인 계정은 자신의 PC의 관리자 권한을 갖고 있는 계정을 넣는다. 보통 자신이 PC에 로그인할 때 쓰는 계정을 넣는다.
(만약 암호가 없는 계정이면 계정부터 새로 만들거나, 암호를 생성해야 한다. )

WebDAV로 연결할 때, 일종의 광장 역할을 하는 경로를 Phisycal path에 넣는다. 그리고 반드시 Test Settings.. 를 눌러 잘 연결되는지 테스트 한다. 만일 새로 생성한 Application pool에 담긴 계정으로 처리가 안된다면, Connection As.. 에 들어가 계정을 입력해도 되기는 한다. 하지만, 가급적이면 Application Pool에 계정을 넣는게 좋다. (보안으로는 좀 취약 )

6. WebDAV Authoring Rule 설정
여기서 수행하는 내용은 WebDAV의 설정이다.
외부에서 WebDAV에 접속했을 때, 현재 구성된 내용 중 WebDAV에 접속가능한 권한들과, WebDAV 활성화 및 세부 설정들을 수행하게 된다.
서버 화면에서 WebDAV Authoring Rules를 클릭하면 된다.

그리고 나오는 화면에서 사용자를 먼저 설정한다.
오른쪽의 메뉴에서 Add Authoring Rule... 을 클릭하면 된다.
일종의 회원 관리하는 형식 정도로 이해하면 된다.
아무나 들랄달락 할 수 있게 할지, 특정 그룹에 해당하는 인원에게 할지, 그리고 각 대상자들의 읽기/쓰기 권한등을 설정한다.

그리고 오른쪽 메뉴에 Enable WebDAV를 선택한다
(만약 이미 Enable이 되어 있으면 Disable WebDAV라고 표시되므로, 이 경우는 그냥 놔두면 된다.)


마지막으로 WebDAV Settings가 있다.
다만, WebDAV의 특성을 잘 이해하고 있다면, 이 내용에 대한 설정을 수행하면 되지만,
잘 모른다면 기본값으로 두는 것을 권장한다.



6. 하위 폴더 구성하기.
웹서버 항목 위에서 오른 쪽 버튼을 눌러 "Add Virtual Directory"를 클릭한다.
Alias에는 WebDAV 상에서 표시할 이름을 적고
Physical path에는 로컬 디스크 내용은 "..." 버튼을 넣어 입력하고, NAS 등 외부 공유 폴더를 걸 때는
\\서버이름 등을 입력해서 연결한다.
파일이 제대로 연결되는지 Test Settings.. 를 눌러 확인하도록 한다.
만일 제대로 연결되지 않는다면, Connect as.. 를 눌러 들어가 권한이 충분한 아이디와 암호를 입력해서 저장한다.

필요한 폴더 만큼 생성한다.


7. 인증 설정.
원격에서 연결할 때, 아이디 패스워드를 물어볼지, 만약 물어본다면 어느 방식으로 물어볼지에 대한 내용이다. 이 설정은 웹서버 혹은 전체 서버 설정으로 구성할 수 있다.
범위에 따라 선택 한 뒤, Authentication을 더블 클릭해서 들어간다.

앞서 설치한 내역 만큼 내용이 보이게 되는데, 이 중 Basic Authentication을 제외한 나머지는 모두 Disable로 만든다. 만드는 방법은 해당 항목을 선택 한 뒤, 오른쪽에서 enable 혹은 disable을 선택하면 된다.

로컬에서만 접근하면 Windows Authentication이 좋기는 한데, 인터넷 상에서 연결한다면, 반드시 Basic Authentication으로 하는게 좋다. 특히 모바일(휴대폰 혹은 패드 등)으로 접근할 때는 Basic 밖에는 답이 없다.


8. 정리하며....

사실 WebDAV 설정을 하는 것에는 큰 무리가 없으나 이놈의 SSL 연결이나, 기타 UI 기반으로 만들어진 숨겨진 설정들을 찾아 조립하는게 문제가 있었다.
그리고 공유 폴더를 연결할 때 오류가 있었는데, 확인해보니 Windows Authentication이 켜진 경우 문제가 있었다. 끄니 깔끔하게 연결된다.

원격에서 마치 탐색기로 연든 나오는 화면은 굉장히 매력적으로 생각이든다.
파일관리에 대해서 애로사항이 매번 꽃을 피웠는데, 이 도구를 이용하면 더 쉬워질 것 같다.
그리고 동영상 플레이도 이젠 단순 세팅으로 해결을 볼 수 있을 것 같다.

728x90

동생님의 도움으로 상당히 고해상도인 노트북을 쓸수 있게 되었다.
XPS 13. 크기는 작은데 해상도는 무려 3200 * 1800.
너무 작은 크기여서 노트북에서는 해상도는 그대로 두고, DPI Scale을 200%로 사용하고 있다.
(웃기게도, 이렇게 맞추면 마치 1366 * 768 같은 효과가... )
일단 노트북 내의 응용프로그램으로 실행할 때는 일부 응용프로그램이 뿌옇게 보이는 것 빼고는 큰 문제없이 잘 쓰고 있다.


실질적인 문제는 원격데스크톱으로 연결할 때 문제가 발생했다.
노트북의 설정이 3200 * 1800 해상도에 200% DPI Scale이 걸려 있다보니, 이 설정이 원격 데스크톱까지 영향을 미치게 된다. ( 물론 Win 8.1 Pro에서 부터나 이 효과를 볼 수 있다고 한다. 현재 Win 10이라서 되는 듯)

자동으로 Scale이 되니 상당히 좋은 기능이긴 한데, 문제는 그 데스크톱을 모니터/키보드./마우스로 직접 제어 즉 콘솔로 로그인 를 할 때 발생하기 시작했다. 원격데스크톱으로 200%로 잡은 설정이 콘솔로 로그인하는 순간 200%가 되어서 나온다. 웃기게도 콘솔에 연결된 모니터는 3200 * 1800과 같은 해상도가 아니라, 1920 * 1080 이라는 사실.

200%로 맞추게 되면, 이젠 적당한 크기에 나오는게 아닌 무척 큰 사이즈의 화면이 나오기 시작한다는 것이다. 일부 응용프로그램의 경우 설정을 뭘로 바꾸던 처음 설정한 화면 구성으로 표시된다는 것이다.
이 문제의 해결은 로그 오프 밖에는 없는 것같다.
그래서 원격에서 연결할 때, 가급적이면 DPI Scale Up 된 것이 아닌 그냥 100%로 유지하는게 이 쪽 저쪽에서 쓰는데 문제가 없다고 판단되었다. ( 원격은 거의 잠깐 잠깐 붙는 것이다 보니...)

그래서 강제적으로 비활성화하는 방법을 찾아보았다.

구글링을 통해서 얻은 정보는 총 2가지 방법.

1. Remote Desktop Connection Manager 프로그램을 이용하여 .config 파일을 생성, 자동으로 DPI Scale 업하는 옵션을 끄는 방법.

2. 호스트 PC의 레지스트리를 수정하는 방법.


1번의 방법은 DPI Scale을 조정하는 방법관련해서 많은 방법들이 제시된다.
아래의 사이트 내용처럼 Remote Desktop Connection Manager 프로그램을 다운 받은 뒤, Side-by-Side 옵션을 레지스트리 수정 후 .config 파일을 만들어서 설정을 변경하면 된다.
아래의 사이트를 참고하면 된다.

https://blog.brankovucinec.com/2016/03/19/fix-remote-desktop-dpi-scaling-issues/


2번의 방법은 아예 호스트 PC 쪽에 설정을 변경해서 모든 Remote Desktop 연결에서 DPI Scale 변경이 없도록 하는 방법이다. 필자는 이 방법을 선택했다.

관리자 모드의 Command Line 창을 띄운뒤 아래의 코드를 입력한다.

reg ADD " HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations" /v  IgnoreClientDesktopScaleFactor /t REG_DWORD /d 1

그리고 난 뒤 재부팅을 하면, 해당 PC를 접속할 때 DPI 변경이 없다.
만일 원래대로 하고 싶다면, 아래와 같이 DELETE 명령으로 변경하면 된다.

reg DELETE " HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations" /v  IgnoreClientDesktopScaleFactor


728x90

프로젝트 중에 WPF로 작성된 프로젝트가 있다.
과거 Visual Studio 2010용으로 제작하고, Blend를 이용해 작성되어 있다.
문제는 Visual Studio 2017로 넘어오면서 이 프로젝트자체가 Load되지 않아 아무런 작업을 못했다.
.

아마도 과거 Blend를 사용한 결과물이 프로젝트 설정 값에 녹아 있지 않을까 하는 짐작만 든다.
위의 메시지를 읽어보면, Expression.Blend.WPF.targets 라는 파일의 부재로 인해 발생되는 문제 같다.

고작해야 프로젝트 빌드만 할 것인데, 이제와서 Blend 4.0을 설치하기는 싫고 고민 고민하는 중에, google 검색 결과 Blend SDK를 설치하라는 메시지를 보아, 그 내용대로 SDK를 설치해봤다.

BlendWPFSDK_ko.msi

파일을 다운받아 설치한 뒤, Visual Studio를 재시작했다.

정상적으로 프로젝트를 Load되고 컴파일까지 되는 것을 확인했다.

728x90

MS에서 Visual Studio 2017을 배포할 때 예전처럼 ISO 버전을 만들어 하나의 파일로 배포하지 않는다. 요즘은 필요한 기능들을 선택하면, 그에 맞는 설치본을 다운로드 한 뒤 설치하도록 유도한다.
그래서 최소한 설치시 최신 버전을 다운로드 받아 설치할 수 있도록 해준다.

하지만, 네트워크 상태가 안좋거나 여러가지 여건상 인터넷이 안되는 곳에서 하려면 이래저래 애로사항이 클 수 밖에 없다. 특히나 전체 다운로드 양이 4G를 넘어가는 순간, 마치 Windows 7에서 Windows 10 넘어가는 업데이트 처럼 마냥 기다려야 되는 불상사가 벌어질 수도 있다.

그래서 이런 저런 글을 찾아보니, 다운로드용 프로그램의 옵션을 넣어 미리 다 다운로드 받을 수 있는 방법이 있어 적어 놓는다.


mu_visual_studio_professional_2017_version_15.2_x86_x64_10436510.exe --layout G:\ETC\VS2017 --lang en-US ko-KR


커뮤니티 버전이나 프로페셔날 버전을 받으면 exe 파일을 다운 받게 되는데, 그 파일이름을 적고 두가지 옵션을 넣는다.

--layout

다운로드 받을 위치를 잡는다. 로컬 드라이브( C, D, E 드라이브 등 ) 로 잡고 용량이 못해도 30G 이상의 여유공간을 확보한 위치로 잡는다. (위의 옵션으로 다운로드 받은 전체 파일 크기는 27.1G 가 나옴)

--lang

프로페셔날 이상 버전은 문제없는데, 간혹 커뮤니티 버전의 경우 언어가 맞지 않다고 설치 안되는 경우가 있다. 이에 미리 언어별로 다운로드 받는다. en-US 면 당연히 영어권 버전, ko-KR이면 한글 버전을 의미한다. 두개 동시에 쓰면 두가지 버전을 다 다운로드 받게 된다.


다 다운로드 받고 layout으로 잡는 위치에 있는 "vs_setup.exe" 파일을 실행하면 된다.




728x90

+ Recent posts

728x90