조회 수 24099 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form

아래 예제 코드를 SystemDateTimeSyncTest.java 파일로 작성한다.

실행시 반드시 루트 권한으로 실행하여야 

public class SystemDateTimeSyncTest {
  public static void main(String[] args) {
    this.updateSystemDateTime("20100217161550"); // 2010-02-17 16:15:50
  }

  private boolean updateSystemDateTime(String recvMsg)
  {
    String strDate = null;
    String[] cmds = null;
    BufferedReader br = null;
    Process proc = null;
    boolean result = false;
    try {
      strDate = recvMsg.substring(0, 4) + "-" + recvMsg.substring(4, 6) + "-" + recvMsg.substring(6, 8) + " "
        + recvMsg.substring(8, 10) + ":" + recvMsg.substring(10, 12) + ":" + recvMsg.substring(12, 14);
      cmds = new String[] { "/bin/date", "-s", strDate };

      System.out.println("user.name: " + System.getProperty("user.name"));
      Runtime runtime = Runtime.getRuntime();
      runtime.traceInstructions(true);
      runtime.traceMethodCalls(true);
      proc = runtime.exec(cmds);
      br = new BufferedReader(new InputStreamReader(proc.getInputStream()));

      String execLine = null;
      while( (execLine = br.readLine()) != null) {
        System.out.println("----------> " + execLine);
      }

      br.close();
      br = null;

      br = new BufferedReader(new InputStreamReader(proc.getErrorStream()));

      while( (execLine = br.readLine()) != null) {
        System.out.println("----------> " + execLine);
      }
      proc.waitFor();
      System.out.println("Exit value: " + proc.exitValue());
      result = true;
    } catch(Exception e) {
      e.printStackTrace();
      result = false;
    }
    finally {
      try { br.close(); } catch(Exception e2) {}
      br = null;
      cmds = null;
      strDate = null;
      proc = null;
    }
    return result;
  }
}




TAG •

조회 수 21090 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
통신을 할 때 아래 데이터를 보낼 경우, 수신측에서 받아서 읽어낼 때 사용하면 될 듯..
A: float 형 0.05 를 전송
B: 4 bytes 0.05를 읽어냄

DataInputStream 의 readFloat() 메소드
byte[] baTemp = new byte[4];
// 아래 4 바이트는 float 형 5.05 임.
baTemp[3] = (byte)0x9a;
baTemp[2] = (byte)0x99;
baTemp[1] = (byte)0xa1;
baTemp[0] = (byte)0x40;

try {
    DataInputStream dis = new DataInputStream(new ByteArrayInputStream(baTemp));
    System.out.println(dis.readFloat()); // 5.05가 출력됨.
    dis.close();
}
catch (Exception e) {
    e.printStackTrace();
}

Float의 intBitsToFloat() 정적 메소드
byte[] baTemp = new byte[4];
// 아래 4 바이트는 float 형 5.05 임.
baTemp[3] = (byte)0x9a;
baTemp[2] = (byte)0x99;
baTemp[1] = (byte)0xa1;
baTemp[0] = (byte)0x40;

// 정수형(int)으로 변환
int iTemp = (baTemp[0] << 24) & 0xff000000;
iTemp |= (baTemp[1] << 16) & 0x00ff0000;
iTemp |= (baTemp[2] << 8) & 0x0000ff00;
iTemp |= (baTemp[3]) & 0x000000ff;

System.out.println(Float.intBitsToFloat(iTemp); // 5.05 출력됨.



TAG •

Java
2008.08.27 11:14

Quartz - QuickStart

조회 수 26081 추천 수 0 댓글 5
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form


import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;

public class QuartzTest {

    public static void main(String[] args) {

        try {
            // Grab the Scheduler instance from the Factory 
            Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

            // and start it off
            scheduler.start();

            scheduler.shutdown();

        } catch (SchedulerException se) {
            se.printStackTrace();
        }
    }
}


http://www.opensymphony.com/quartz

TAG •
  • ?
    진석 2008.09.09 19:45
    우어어억~ Quartz는 뭐지? ㅡ.ㅡa
    Job Scheduler 라~ crontab 이랑 비슷해보이는 ㅡ.ㅡ;;;
    자바는 다 좋은데 용어가 너무 길어. StdSchedulerFactory 19문자. GG
  • ?
    주노 2008.09.10 18:23
    어디서 많이 보던 닉넴이다 했더니 정수 였나?

    익히 보던 진석이도 있고....ㅡ,.ㅡ

    구글에서 자료 찾다가 우연찮게 들어왔다 ㅋ

    잘들 살고 있냐?
  • ?
    비트겐스 2008.09.10 20:01

    To. 쓰억
    니가 생각하는게 맞아.ㅋㅋ

    To. 주노
    주노라.ㅋㅋ 죽마고우 이름이랑 같아서 잠시 헷갈렸군.ㅋㅋ
    잘 살고 있지.
    무슨 자료를 찾았길래.. 내 블로그가 나와~ㅋㅋ

  • ?
    주노 2008.09.11 09:42
    activex 웹 배포에 대한 자료 찾았는데 우연히 클릭해서 들어왔지 ㅋㅋ
    아직 대구에서 회사 다니낭?
  • ?
    비트겐스 2008.09.11 17:33
    어.. 오교수님 회사에서 아직 일해~emoticon
    근데 여긴 방명록이 아닌데.ㅋㅋㅋ
    글남기려면 방명록으로 ㄱㄱ.ㅋㅋ

조회 수 28325 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
때로는 파일 자체의 인코딩도 생각해 보아야 한다.
파일 자체의 인코딩이 EUC_KR이면 InputStreamReader의 두번째 인자에 캐릭터셋 이름을 String으로 넘겨주면 된다.

...
new InputStreamReader(fis, "EUC_KR")
...


예제
...
     try {
      File file = new File(strFilename);

      FileInputStream fis = new FileInputStream(file);

      BufferedReader br = new BufferedReader(new InputStreamReader(fis, "EUC_KR"));

      while((line = br.readLine()) != null) {
        total_line += (line + "\n");
        System.out.println(line);
      }
    } catch (Exception ex) {
      ex.printStackTrace();
    }
...


TAG •

Java
2007.12.13 16:44

Java communication API in Linux

조회 수 33757 추천 수 0 댓글 2
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
java.sun.com 사이트에서 Java Communication API 를 다운 받는다.

comm3.0_u1_linux.zip 파일을 압축을 풀면 commapi 이라는 디렉토리가 생긴다.
commapi 디렉토리안에 docs, examples, jar, lib 디렉토리가 있다.

[wittgens@fedora java_packages]$ unzip comm3.0_u1_linux.zip
...
  inflating: commapi/lib/libLinuxSerialParallel.so
  inflating: commapi/lib/libLinuxSerialParallel_g.so
[wittgens@fedora java_packages]$ ls
comm3.0_u1_linux.zip  commapi
[wittgens@fedora java_packages]$ cd commapi/
[wittgens@fedora commapi]$ ls
docs  examples  jar  lib
[wittgens@fedora commapi]$ sudo cp docs/javax.comm.properties $JAVA_HOME/jre/lib/
[wittgens@fedora commapi]$ sudo cp lib/*.so $JAVA_HOME/jre/lib/ext/
[wittgens@fedora commapi]$ sudo cp jar/comm.jar $JAVA_HOME/jre/lib/ext/

[wittgens@fedora examples]$ cd Simple/
[wittgens@fedora Simple]$ java SimpleWrite
port /dev/term/a not found.

위와 같은 에러가 발생할 것이다. linux에서는 시리얼 포트가 /dev/ttyS0, /dev/ttyS1, ... 으로 잡히기 때문에 SimpleWrite.java 파일을 편집하여 /dev/term/a 라는 부분을 /dev/ttyS0로 변경해준다.

[wittgens@fedora Simple]$ javac SimpleWrite.java
[wittgens@fedora Simple]$ sudo java SimpleWrite
Found port /dev/ttyS0
Exception in thread "main" java.io.IOException: Not all params are supported by kernel
        at com.sun.comm.LinuxSerial.nativeSetSerialPortParams(Native Method)
        at com.sun.comm.LinuxSerial.setSerialPortParams(LinuxSerial.java:346)
        at SimpleWrite.main(SimpleWrite.java:93)

변경해 줘도 위와 같은 예외가 발생한다.
무시한다.ㅋㅋ 이와 관련하여 리눅스 포럼에 많이 나와있을 것이다. 참조하여 해결하기 바란다.ㅋ


  • ?
    비트겐스 2007.12.13 16:48
    이벤트 리스너로 처리하지 않으면, 시리얼로 부터 read시 데이터를 읽어버리는 경우가 발생하여
    이벤트 리스너를 추가하여 하나의 SerialPort를 wrapping 한 클래스를 만들었음.
  • ?
    비트겐스 2007.12.27 13:35
    finally { } 블록을 추가하여 한번더 setSerialPortParams를 호출해준다.

Java
2007.12.05 00:57

jdbc / 연결 문자열 예제

조회 수 29933 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
MySQL 연결시 트랜잭션을 지원하게 하려면 아래와 같이 지정하면 된다.

...
String
strConn = "jdbc:mysql://" + hostname + "/" + dbname + "?user=" + user +
"&password=" + passwd +
"&useUnicode=true&characterEncoding=latin1&relaxAutoCommit=true";

Connection conn = DriverManager.getConnection(strConn);
...


releaxAutoCommit 속성:

If the version of MySQL the driver connects to does not support transactions, still allow calls to commit(), rollback() and setAutoCommit() (true/false, defaults to 'false')?

만약 MySQL 드라이버의 버전이 transaction을 지원하지 않도록 연결하였으나, commit(), rollback(), setAutoCommit() 메소드 호출을 허용하는가? (기본값은 false임)


맨처음 relaxAutoCommit=true를 빼고 Connection을 생성하니 auto commit이 true인 상태에서 commit할수 없다라는 예외가 발생하였으나, 이상하게도 지금은 빼도 동작하니, 내가 먼가 잘못했남~ emoticon
TAG •

Board Pagination Prev 1 Next
/ 1