프로그래밍 일반 2017. 11. 7. 17:07

GeoIP 자동 업데이트 빌드 프로세스에 추가하기

GeoIP가 무엇인지 알고 있다는 가정하에 매월 첫 주 목요일에 업데이트되는 해당 테이블을 자동으로 업데이트하는 방법을 알아보자.


운용 중인 프로젝트의 CI를 젠킨스로 구축했다면 서버 빌드 시 아래와 같은 Powershell 스크립트를 추가하면 된다.


참고로 프로젝트에서 GeoIP.dat를 로드해서 룩업 테이블을 만들어 사용하는 경우 .dat 파일을 자동 업데이트하는 방법이다.



#서버를 빌드할 때 자동으로 GeoIP를 업데이트한다.

if ($ENV:JobCommand -eq "ServerBuild")

#매월 첫 주 목요일에 업데이트되는 파일을 다운 받는다.

$webclient = New-Object System.Net.WebClient

$sourceUrl = "http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz"

$destinationPath = "$ENV:WORKSPACE\Server\Lib\GeoIp2\GeoIP.dat.gz"

$webclient.DownloadFile($sourceUrl, $destinationPath)


#반디집을 이용하여 압축을 푼다.

[string[]]$array = "bx", "-aoa", "$ENV:WORKSPACE\Server\Lib\GeoIp2\GeoIP.dat.gz"

start-process C:\Bandizip\Bandizip.exe $array


#압축이 풀리기 전에 원본 파일이 삭제되는 것을 방지한다.

wait-event -sourceIdentifier "Bandizip" -timeout 10


#반디집 핸들러가 원본 파일을 물고 있는 것을 풀어준다.

$bz = get-process Bandizip

stop-process -inputobject @bz -force


#원본 파일을 삭제한다.

Remove-Item $destinationPath -Recurse


#압축이 풀린 파일을 svn에 적용한다.

svn commit $ENV:WORKSPACE\Server\Lib\GeoIp2\GeoIP.dat --non-interactive --trust-server-cert --username **** --password **** -m "Build server solution from CI server"

}


설명을 첨부하자면 JobCommand 는 빌드 파라미터이고 서버 빌드를 실행했을 때 웹에서 GeoIP.dat.gz 파일을 다운로드 받아 압축을 풀고 svn으로 서밋하는 간단한 내용이다.


gz 파일은 CI 서버에 반디집을 설치하여 반디집 커맨드 명령어로 압축을 푼다.

프로그래밍 일반 2017. 8. 24. 00:30

젠킨스 삽질 정리

'svn'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.

 

라는 오류 발생 시 command line client tools 설치하면 된다. 설치 시 버전에 유의하자.

 

 

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(983,5): warning MSB3644: ".NETFramework,Version=v4.5" 프레임워크에 대한 참조 어셈블리를 찾을 수 없습니다. 이 문제를 해결하려면 이 프레임워크 버전에 대한 SDK 또는 타기팅 팩을 설치하거나 응용 프로그램의 대상을 SDK 또는 타기팅 팩을 설치한 프레임워크 버전으로 변경하십시오. 어셈블리는 GAC(전역 어셈블리 캐시)에서 확인되며 참조 어셈블리 대신 사용됩니다. 따라서 어셈블리의 대상이 사용자가 의도하는 프레임워크로 올바르게 지정되지 않을 수 있습니다.

 

해당 메시지가 발생하면 CI 서버의 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework 를 확인하자.

 

경로에 필요한 버전의 .netframework가 없을 것이다.

 

필요 버전의 SDK를 설치하자. 개발 환경과 일치 시키면된다.

 

 

svn: E170013: Commit failed (details follow):

svn: E170013: Unable to connect to a repository at URL 'https://xxx.xx.x.xxx/svn/project/trunk/Tool/BatchBuilder_x64'

svn: E230001: Server SSL certificate verification failed: issuer is not trusted

 

commit 명령어 사용 시 위와 같은 오류가 발생한다면 아래와 같이 처리한다.

 

svn commit [PATH..] --non-interactive --trust-server-cert-failures="unknown-ca,cn-mismatch,expired,not-yet-valid,other" --username ARG --password ARG -m "CI server build commit" 

 

ARG는 svn 계정 정보를 입력하면 된다. 세부 항목은 svn help 를 이용하자.

SQL 2016. 9. 21. 12:25

MySQL GUID 저장 팁

대시 기호 제거 후 UNHEX() 함수를 사용하여 16바이트 숫자로 변환 후 BINARY(16) 칼럼에 저장, 해당 값은 HEX() 함수를 이용하면 16진수로 볼 수 있다.


일반적으로 CHAR(32)에 저장했을 때보다 저장 용량이 절반으로 줄어들고 비교 속도가 빨라진다.