Oct 14, 2013 - Java 에서 현재 리눅스인지 윈도우 환경인지 아는 법

관련 주소 : http://stackoverflow.com/questions/2357758/what-does-system-getpropertyos-name-return-in-latest-windows-oss

String osName = System.getProperty("os.name");
    if (osName.equals("Windows NT") || osName.equals("Windows 2000") || osName.equals("Windows XP")) {
        cmd = new String[3];
        cmd[0] = WINDOWS_NT_2000_COMMAND_1;
        cmd[1] = WINDOWS_NT_2000_COMMAND_2;
        cmd[2] = command;
    } else if (osName.equals("Windows 95") || osName.equals("Windows 98") || osName.equalsIgnoreCase("Windows ME")) {
        cmd = new String[3];
        cmd[0] = WINDOWS_9X_ME_COMMAND_1;
        cmd[1] = WINDOWS_9X_ME_COMMAND_2;
        cmd[2] = command;

조건절을 주어

String shellmkdir = "mkdir -p" + " " + dest;
String shellcp = "cp -rf" + " " + target + " " + dest;
String[] commanddir = { "cmd", "/c", shellmkdir };
String[] commandcp = { "cmd", "/c", shellcp };

String shellmkdir = "mkdir -p" + " " + dest;
String shellcp = "cp -rf" + " " + target + " " + dest;
String[] commanddir = { "/bin/sh", "-c", shellmkdir };
String[] commandcp = { "/bin/sh", "-c", shellcp };

로 분기합니다.

Dec 12, 2012 - Couchbase IP address seems to have changed. Unable to listen on 'ns_1

  1. C:\Program Files\Couchbase\Server\bin 경로로 이동합니다.
  2. C:\Program Files\Couchbase\Server\bin\service_stop.bat 로 서비스를 멈춥니다.
  3. C:\Program Files\Couchbase\Server\bin\service_unregister.bat 로 레지스터를 지웁니다.
  4. C:\Program Files\Couchbase\Server\bin\service_register.bat 를 편집기로 엽니다.
  5. 앞에 내용 중 NS_NAME=ns_1@%IP_ADDR% 이 부분을 NS_NAME=ns_1@127.0.0.1 등으로 바꿉니다. (아무 아이피바꿔도 크게 문제없습니다.)
  6. C:\Program Files\Couchbase\Server\var\lib\couchbase\mnesia 폴더를 지웁니다.
  7. C:\Program Files\Couchbase\Server\bin\service_register.bat 로 레지스터를 재등록합니다.
  8. C:\Program Files\Couchbase\Server\bin\service_start.bat 로 서비스를 시작합니다.
  9. 다시 couchebase 창을 열면 재등록을 해야합니다. 재등록 후에는 저런 경고창이 뜨지 않습니다.

로컬에서 카우치베이스 테스트하다가 에러가 나는 경우에 대한 대응 방법.

Nov 29, 2012 - 자바에서 xml 문서를 xsd 로 유효성 검사하는 방법

따로 jar 파일을 import 할 필요없이, Java 5.0 버전 이상 부터는 javax.xml.validation 패키지가 도입되었습니다. 그로 인해 javax.xml.validation API 에서는 SchemaFactory, Schema 및 Validator라는 세 개의 클래스를 사용하여, 문서의 유효성을 검증합니다.

밑의 소스는 유효성을 할 기본 Validator 를 xsd 로 하여 xml 을 유효성 검사하는 소스입니다.

import java.io.*;

import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.*;
import org.xml.sax.SAXException;

/**
 * Class Name : XSDCheck Description :
 * @author 젊은광대
 * @since 2012.11.29
 * @version 1.0
 */

public class XSDCheck {

	public static void main(String[] args) {
		// 1. W3C XML Schema language 객체를 생성하기 위한 API 검증용 Entry-point 입니다.
		SchemaFactory factory = SchemaFactory
				.newInstance("http://www.w3.org/2001/XMLSchema");

		String xsd = "C:\\xsd\\movie1.xsd"; // xsd 파일위치
		String xml = "C:\\xsd\\movies.xml"; // 유효성을 검사할 xml 파일위치

		File schemaLocation;
		Schema schema;
		Validator validator;
		try {
			// 2. 정의된 xsd 파일을 불러옵니다.
			schemaLocation = new File(xsd);
			schema = factory.newSchema(schemaLocation);
			// 3. 가져온 스키마로 유효성 검사 도구를 만듭니다.
			validator = schema.newValidator();

			// 4. xml 파일을 불러옵니다.
			Source source = new StreamSource(xml);

			// 5. 해당 xml 을 유효성을 검사합니다.
			validator.validate(source);

			System.out.println(xml + " is valid."); // 유효성 검사 성공

		} catch (IOException e) {
			System.out.println(xml + " is not found "); // 파일을 찾을 수 없습니다.
			System.out.println(e.getMessage()); // 실패한 원인에 대하여 설명합니다.
		} catch (SAXException e) {
			System.out.println(xml + " is not valid because "); // 유효성 검사 실패
			System.out.println(e.getMessage()); // 실패한 원인에 대하여 설명합니다.
		}
	}
}