subversion 설치

2012. 4. 2. 09:37 from project

 

http://subversion.apache.org/

binary package → windows 환경에서

 

Win32Svn  http://sourceforge.net/projects/win32svn/

VisualSVN http://www.visualsvn.com/downloads/

 

다운로드 받은후 설치

 

Win32Svn 경우 정상적으로 설치 하였을 경우

svn --version 으로 설치를 확인
 

C:\Documents and Settings\Administrator.SCN12A01000301>svn --version
svn, 버젼 1.7.4 (r1295709)
    Mar  5 2012, 09:29:21에 컴파일 됨

Copyright (C) 2012 The Apache Software Foundation.
This software consists of contributions made by many people; see the NOTICE
file for more information.
Subversion is open source software, see http://subversion.apache.org/ 

저장소(repository) 접근 모듈(RA) 목록:

* ra_neon : Neon을 이용하여 WebDAV 프로토콜을 통해 저장소에 접근하는 모듈
  - 'http' 스키마를 처리합니다.
  - 'https' 스키마를 처리합니다.
* ra_svn : svn 네트워크 프로토콜을 사용하여 저장소에 접근하는 모듈
  - Cyrus SASL 인증 이용
  - 'svn' 스키마를 처리합니다.
* ra_local : 로컬 디스크에 있는 저장소를 접근하기 위한 모듈
  - 'file' 스키마를 처리합니다.
* ra_serf : serf를 이용하여 WebDAV 프로토콜을 통해 저장소에 접근하는 모듈
  - 'http' 스키마를 처리합니다.
  - 'https' 스키마를 처리합니다.

C:\Documents and Settings\Administrator.SCN12A01000301>

 

1. SVN 저장소 만들기

D:\>md SvnRoot

D:\>cd SvnRoot

D:\SvnRoot>svnadmin create --fs-type fsfs "D:\SvnRoot\프로젝트명"

D:\Svnroot>

 

2. conf파일 수정

만들어진 저장소 폴더안의 conf폴더의 파일들을 수정한다.

환경설정

svnserve.conf 의 아래 주석을 다 해제한다.

anon-access = read  -- 익명사용자 접근권한 ( none , read , write )

auth-access = write   -- 인증사용자 접근권한 ( none , read , write ) 사용자권한이 폴더접근권한보다 우선시 적용

password-db = passwd  -- 계정/비밀번호 파일

authz-db = authz  -- 폴더 접근권한 설정 파일

realm = My First Repository   -- 저장소 이름

 

passwd

[users] 하위로 계정 = 비밀번호 형식으로 추가한다

 

authz

[group] 하위에 그룹명 = 계정,계정, ... 형식으로 그룹을 지정한다.

경로설정 예시

[/] 루트

[/abc] 루트하위 abc폴더

[프로젝트명:/abc] 저장소이름과 함께 사용한 예

폴더 권한 설정 예

@member = r  member 그룹에 대해 읽기 권한 설정

abc=rw abc 계정에 대해 읽기/쓰기 권한 설정

enemy= enemy 계정에게 접근권한 해제

 

3. 기동 
 


 D:\>svnserve -d -r "D:\SvnRoot"

cmd 창이 떠있는 상태로 서버기동이 되었다 해당 cmd창을 닫으면 꺼진다.


기동 확인을 위해 cmd 창을 하나 더 띄우고 체크아웃을 해본다.

D:\>svn checkout "svn://127.0.0.1/MyProject"
체크아웃된 리비전 0.

 

 

로그메시지를 남겨야만 커밋 가능하게 설정

SVN의 해당 저장소의 /hooks/에  pre-commit.bat이란 파일을 넣어준다.

 

@echo off

::

:: Stop commit that have empty log messages. 

::

setlocal

set "REPOS=%~1"

set "TXN=%~2"

set "SVNLOOK=c:\progra~1\subversion\bin\svnlook.exe"

:: Make sure that the log message contains some text.

for /f  "tokens=*" %%i in ('%SVNLOOK% log -t "%TXN%" "%REPOS%"') do set "LOGMSG=%%i"

if not "%LOGMSG%"=="" exit 0

echo. 1>&2

echo Your commit has been blocked because you didn't give any log message! 1>&2

echo  Please write a log message describing the purpose of your changes and 1>&2

echo then try committing again -- thank you 1>&2

exit 1


 

 

백업(dump) 및 복구

dump

1. cmd창을 실행

2. 백업하고자하는 저장소의 상위 디렉토리로 이동

3. "svnadmin dump 저장소이름 > 백업파일이름" 로 덤프생성

 

restore

1. cmd창 실행

2. 저장소 생성

3. 복구하고자 하는 저장소의 상위디렉토리로 이동

4. "svnadmin load 저장소이름 < 백업파일이름" 로 복구

-- 계정정보 및 폴더접근권한 설정파일은 따로 복구

 

 

 

'project' 카테고리의 다른 글

SI 프로젝트에서 JOB분류 명칭  (0) 2012.10.25
Samsung network Result code  (0) 2011.12.28
표준, 시스템 엔지니어링, 상호운용성, ITA  (0) 2011.12.21
Posted by 에시드 :

MS SQL sequence 만들기

2012. 3. 27. 09:27 from DB

 

ORACLE에는 sequence가 있듯,

MS SQL에는 자동증가로  IDENTITY가 있다. 하지만 칼럼타입이 int 같은 정수여야만 사용가능하다...

 

문제는 시퀀스 칼럼타입이 INT가 아니고 varchar타입이다.

(컬럼타입을 바꿔서 해결하면 좋겟지만 현실은 냉정하듯 해당컬럼의 타입을 바꿀수 없는 상황이다.)

그리고 테이블에 동시에 여러 곳에서 입력이 빈번하게 일어난다고 한다. 입력시 키값이 듀플리케이션이 발생한다고 한다.  

 

1. MS SQL 시퀀스 만들기


 ①. Create a sequence table

CREATE TABLE SEQ_TAB
(
   seq_name   VARCHAR(64) PRIMARY KEY,
   cyclic_yn   CHAR(1) NOT NULL,
   seq_value   INT NOT NULL
)

 

 ②. Create a procedure to get sequence number
 

----------------------------------------------
-- 시퀀스 갖고 오는 프로시저
-- 작업성공이면 0보다 큰 수, 실패면 음수 반환
----------------------------------------------
create procedure sp_get_nextval
  @p_seq_name varchar(100),
  @v_seq_value int output
as
begin
  declare @v_cyclic_yn char(1)

  set @v_seq_value = -1

  begin transaction trans1

  select @v_cyclic_yn = cyclic_yn from seq_tab where seq_name = @p_seq_name

  if (@@rowcount = 0)
    return @v_seq_value -- 찾는 자료 없음
  else
  begin
    update seq_tab set @v_seq_value = seq_value = seq_value + 1 where seq_name = @p_seq_name

    -- 시퀀스가 순환이고, 현재 값이 int의 최대 값이면 0으로 되돌린다.
    if (@v_seq_value = 2147483647) and (@v_cyclic_yn = 'y')
    begin
      update seq_tab set seq_value = 0 where seq_name = @p_seq_name
    end

    commit transaction trans1
  end

  return @v_seq_value
end

 

 

1. 시간값으로

시간값으로 천분의 일초까지 지정 한후 별도의 sequence 테이블을 생성 201203270900000 + 0000  네자리를 추가한다.

 


 

'DB' 카테고리의 다른 글

sysdate  (0) 2013.07.19
JDBC FailOver  (0) 2012.07.30
DB2 rownum - oracle  (0) 2011.09.14
테라DB 관련 정보  (0) 2011.09.14
MSSQL TCP/IP 설정  (0) 2011.09.14
Posted by 에시드 :

정규식 : 특정단어 제외

2012. 3. 1. 21:46 from script

 

[ ] ( ) - + ` _ 제외한 모든 특수문자 검출  

 var regex=/[^\[\]\(\)\-\+\`_ㄱ-힣a-zA-Z0-9]/

 

 

[^abc] 는 a,b,c 는 3요.


약 abc 요?


replace.(/abc/g, '');


/abc 속/; 다.


\w(?=abc) 면 abc 는 \w

요.

 

-------------------------------------------------------------------------------------

\b([^a\s]|a+b[^ac\s])+\b

이 패턴은 완전하지는 않지만 상당히 가깝습니다.

 

아이디어는 있는데 정규식에 익숙하지 않아서 구현이 잘 안됩니다.

 

([a를 포함하지 않은 문자] | a+bb | a+[a,b를 포함하지않은 문자])+ 를 해주면

a+ 로 끝나거나 a+b로 끝나는 단어가 빠집니다. 이를 더 추가해주면 될것 같은데

의도하는 대로 되지가 않네요.

 

위에서 정규식을 설명하면 이렇습니다.

 

만약 a를 포함하지 않은 경우에는 처음 a를 포함하지 않은 문자들의 조합으로

해결이 됩니다.

 

a를 포함한 경우를 봅니다. 다시 다른 글자들과 이어질려면 abb꼴이면 됩니다.

이것도 a+bb에 의해서 해결이 됩니다.

 

a를 포함하지만 b가 이어 나오지 않는 다면 문제가 되지 않습니다.

이것도 a+[a,b를 포함하지 않는 문자]에 의해서 해결이 됩니다. [앞부분]

 

문제는 a+로 끝나거나 a+b로 끝나는 것이 빠진다는 점입니다. [뒷부분]

그래서 (앞부분|앞부분 뒷부분|뒷부분) 과 같은 꼴이면 되겠습니다.

 

문제는 이러한 것을 정규식으로 표현해 볼려고 해도 제대로 표현이

안된다는 점입니다.


'script' 카테고리의 다른 글

decodeXSS  (0) 2012.10.04
fileupload  (0) 2012.07.06
undefined, null, typeof  (0) 2012.01.11
offsetHeight, clientHeight, scrollHeight  (0) 2011.09.19
자바스크립트 챠트 이미지  (0) 2011.09.19
Posted by 에시드 :

Java에서 IP주소를 가져오는 방법은 매우 쉽고 간단합니다. 일반적으로 사용되는 간단한 방법으로는 다음과 같은 방법이 있습니다.


위의 단 한줄로 현재 시스템의 IP를 읽어올 수 있습니다.
그런데 개발시에는 문제가 없었는데 리눅스 서버에서 구동해 보니 127.0.0.1과 같이 loopback 주소가 나오는 경우가 있더군요.
찾아보다 다음과 같은 방법으로 깔끔하게 해결할 수 있었습니다.

 
 
현재 시스템의 모든 네트워크 인터페이스를 읽어와서 loopback장치인지 랜선에 연결된 장치인지 여부를 확인하여 실제 사용중인 인터페이스의 IP주소를 읽어오게 됩니다. 위와 같이 사용해서 실무에 적용해본 결과 어느 OS, 장치에 상관없이 IP가 정상적으로 출력되는것을 확인하였습니다.

소스코드가 좀 길고 더럽네요; 그냥 보관용으로 적어두는데 의미를 부여하겠습니다;;


사례) ftp 프로그램으로 로그인까지는 가능하나 업로드하는데 계속된 FTP 오류 : 500 Invalid port Command  발생
업로드전 아이피,포트 지정하는 setPort() 부분에서 클라이언트 리눅스의 loopback IP주소반환하여 나타난 문제임

위의 로직으로 inetAddress.isSiteLocalAddress() 실제 사용중인 인터페이스 IP주소 반환받게 수정함

주석처리된부분이 AS-IS 소스임


upLoad 부분

  
Posted by 에시드 :

JAVA 형변환

2012. 2. 6. 11:10 from JAVA

int to String  


String to int 


double to String



long to String 


float  to String


String  to double


String  to long


String  to float


decimal  to binary 


decimal  to hexadecimal


hexadecimal(String)  to int


ASCII Code  to String 


Integer  to ASCII Code


Integer  to boolean


boolean  to Integer


참고: http://javai.tistory.com/entry/자바-형변환-정리

Posted by 에시드 :