달력

52025  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
제 11회 2011 한국자바개발자 컨퍼런스
Posted by 인천총각
|

Java Jni Test

카테고리 없음 2011. 4. 22. 15:17

Java JNI Test

문단띠로 사각형입니다.

1. HelloWorld

가.  Java

        Test.java

 

public class Test {

        

        public Test(){

                

        }

        static{

                System.loadLibrary("JniTest");

        }

        public native static void getTest();

        

        public static void main(String[] args){

                        Test test = new Test();

                        test.getTest();

        }

}

 

        

나. C++

        Test.cpp

 

#include <jni.h>

#include "Test.h"

#include <iostream>

/*

 * Class:     Test

 * Method:    getTest

 * Signature: ()V

 */

JNIEXPORT void JNICALL Java_Test_getTest  (JNIEnv *, jclass jobj){

 

        std::cout<<"Hello"<<std::endl;

}

 

 


다.  순서

1) javah -jni Test (Test.h 헤더 파일 생성)

2) g++ -c -fPIC -I$JAVA_HOME/include -I$JAVA_HOME/include/linux Test.cpp (Object 생성)

3) g++ -shared -o libJniTest.so Test.o (Dll/SO 파일 생성)

4) java -Djava.library.path=. Test (실행)



2. C++ String 값 받아오기

가.  Java

        com.jni.test,JniTest.java

 

package com.jni.test;

 

public class JniTest {

        

        static{

                System.loadLibrary("JniStringTest");

        }

        public JniTest(){

                String msg= getMessage();

                System.out.println(msg);

        }

        public native static String getMessage();

        

        public static void main(String[] args){

                new JniTest();

        }

}

 

        

나. C++

        Test.cpp

 

#include <jni.h>

#include <stdlib.h>

#include "com_jni_test_JniTest.h"

/* Class:     com_jni_test_JniTest

 * Method:    getMessage

 * Signature: ()Ljava/lang/String;

 */

JNIEXPORT jstring JNICALL Java_com_jni_test_JniTest_getMessage(JNIEnv * env, jclass jobj){

        jstring msg;

        msg = env->NewStringUTF("hhhh");

        return msg;

}


다.  순서

1) javah -jni com.jni.test.JniTest

2) g++ -c -fPIC -I$JAVA_HOME/include -I$JAVA_HOME/include/linux com_jni_test_JniTest.cpp

3) g++ -shared -o libJniStringTest.so com_jni_test_JniTest.o

4) java -Djava.library.path=. com.jni.test.JniTest (실행)




3. C++ String 값 넘기기

가.  Java

        com.jni.test,JniReturnTest.java

 

package com.jni.test;

 

public class JniReturnTest {

 

        static{

                System.loadLibrary("jniReturnTest");

        }

        public static native String getMassageDiff(String msg);

        public static void main(String[] args){

                String msg = JniReturnTest.getMassageDiff("donghun");

                System.out.println(msg);

        }

}

 

 

        

나. C++

        com_jni_test_jniReturnTest.cpp

 

#include <jni.h>

#include <stdlib.h>

#include "com_jni_test_JniReturnTest.h"

JNIEXPORT jstring JNICALL Java_com_jni_test_JniReturnTest_getMassageDiff (JNIEnv * env, jclass jobj,jstring jstr1)

{

        char temp[256] = {0};

        jstring msg;

        char* param=(char*)env->GetStringUTFChars(jstr1,0);

        sprintf(temp,"%s hun",param);

        msg = env->NewStringUTF(temp);

        free(param);

        return msg;

}

 

 


다.  순서

1) javah -jni com.jni.test.JniTest

2) g++ -c -fPIC -I$JAVA_HOME/include -I$JAVA_HOME/include/linux com_jni_test_JniTest.cpp

3) g++ -shared -o libJniReturnTest.so com_jni_test_jniReturnTest.cpp.o

4) java -Djava.library.path=. com.jni.test.JniReturnTest (실행)





Posted by 인천총각
|
String.replace()나 정규표현식을 사용할 때 발생한다.
패턴 스트링에 정규표현식에 사용되는 메타데이타가 포함되어 있을 경우이고
해당 캐랙터는 *, ?, +, [, {, (, }, ^, $에 해당한다.

다음과 같이 escape해서 처리한다.

 patternString = patternString.replaceAll("\\*", "\\\\*");
 patternString = patternString.replaceAll("\\?", "\\\\?");
 patternString = patternString.replaceAll("\\+", "\\\\+");
 patternString = patternString.replaceAll("\\[", "\\\\[");
 patternString = patternString.replaceAll("\\{", "\\\\{");
 patternString = patternString.replaceAll("\\(", "\\\\(");
 patternString = patternString.replaceAll("\\)", "\\\\)");
 patternString = patternString.replaceAll("\\^", "\\\\^");
 patternString = patternString.replaceAll("\\$", "\\\\\\$");

$만 역슬래쉬 갯수가 틀린것에 유의.

Posted by 인천총각
|

Oracle10g Win7 설치

일과 2010. 7. 30. 19:56

* 10204_vista_w2k8_x64_production_db 압축배포판 기준으로 설명하겠습니다

1.10204_vista_w2k8_x64_production_db\database\install 폴더안에 있는
  oraparam.ini 파일을 열어줍니다

[Certified Versions]
#You can customise error message shown for failure, provide value for CERTIFIED_VERSION_FAILURE_MESSAGE
Windows=5.0,5.1,5.2,6.0

를 찾아서 다음과 같이 바꿔줍니다

[Certified Versions]
#You can customise error message shown for failure, provide value for CERTIFIED_VERSION_FAILURE_MESSAGE
Windows=5.0,5.1,5.2,6.0,6.1

2. 10204_vista_w2k8_x64_production_db\database\stage\prereq\db폴더 안에 있는
  refhost.xml 파일을 열어줍니다
<CERTIFIED_SYSTEMS>
    <OPERATING_SYSTEM>
      <VERSION VALUE="5.0"/>
      <SERVICE_PACK VALUE="1"/>
    </OPERATING_SYSTEM>
    <OPERATING_SYSTEM>
      <VERSION VALUE="5.1"/>
      <SERVICE_PACK VALUE="1"/>
    </OPERATING_SYSTEM>
    <OPERATING_SYSTEM>
      <VERSION VALUE="5.2"/>
    </OPERATING_SYSTEM>
    <!--Microsoft Windows Vista-->
    <OPERATING_SYSTEM>
      <VERSION VALUE="6.0"/>
    </OPERATING_SYSTEM>
  </CERTIFIED_SYSTEMS>          를 찾아서

<CERTIFIED_SYSTEMS>
    <OPERATING_SYSTEM>
      <VERSION VALUE="5.0"/>
      <SERVICE_PACK VALUE="1"/>
    </OPERATING_SYSTEM>
    <OPERATING_SYSTEM>
      <VERSION VALUE="5.1"/>
      <SERVICE_PACK VALUE="1"/>
    </OPERATING_SYSTEM>
    <OPERATING_SYSTEM>
      <VERSION VALUE="5.2"/>
    </OPERATING_SYSTEM>
    <!--Microsoft Windows Vista-->
    <OPERATING_SYSTEM>
      <VERSION VALUE="6.0"/>
    </OPERATING_SYSTEM>
    <OPERATING_SYSTEM>
      <VERSION VALUE="6.1"/>
    </OPERATING_SYSTEM>
   
  </CERTIFIED_SYSTEMS>

로 바꿔줍니다

3. 10204_vista_w2k8_x64_production_db\database\stage\prereq\db_prereqs\db 폴더 안에 있는
  refhost.xml 파일을 열어줍니다  (주의 : 2번의 폴더 경로와 다릅니다 확인해주세요.)

참고 :

http://www.supercorea.com/html/entry/Windows-7-64Bit-%EC%97%90%EC%84%9C-%EC%98%A4%EB%9D%BC%ED%81%B4-DBClient-%EC%84%A4%EC%B9%98-%EB%B0%8F-Toad-%EC%9D%B4%EC%9A%A9%EC%8B%9C-%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD?SESSIONsupercoreacomhtml=6c1cae7a39eacbfe62730f45399c5fdb

클라이언트 설치시
Oracle Database 10g Client Release 2 (10.2.0.4)
   10204_vista_w2k8_x64_production_client.zip (507,934,134 bytes)

다운로드 받은 후 압축파일을 풀고 아래 3개파일을 빨간색 부분처럼 수정합니다.

1. \install\oraparam.ini

[Certified Versions]
#You can customise error message shown for failure, provide value for CERTIFIED_VERSION_FAILURE_MESSAGE
Windows=5.0,5.1,5.2,6.0,6.1

2. \stage\prereq\client\refhost.xml

  <CERTIFIED_SYSTEMS>
    <OPERATING_SYSTEM>
    <!--Microsoft Windows 2000-->
      <VERSION VALUE="5.0"/>
      <SERVICE_PACK VALUE="1"/>
    </OPERATING_SYSTEM>
    <OPERATING_SYSTEM>
    <!--Microsoft Windows XP-->
      <VERSION VALUE="5.1"/>
      <SERVICE_PACK VALUE="1"/>
    </OPERATING_SYSTEM>
    <OPERATING_SYSTEM>
    <!--Microsoft Windows 2003-->
      <VERSION VALUE="5.2"/>
    </OPERATING_SYSTEM>
    <!--Microsoft Windows Vista-->
    <OPERATING_SYSTEM>
      <VERSION VALUE="6.0"/>
    </OPERATING_SYSTEM>
    <!--Microsoft Windows 7-->
    <OPERATING_SYSTEM>
      <VERSION VALUE="6.1"/>
    </OPERATING_SYSTEM>

  </CERTIFIED_SYSTEMS>

3. \stage\prereq\client_prereqs\client\refhost.xml

  <CERTIFIED_SYSTEMS>
    <OPERATING_SYSTEM>
    <!--Microsoft Windows 2000-->
      <VERSION VALUE="5.0"/>
      <SERVICE_PACK VALUE="1"/>
    </OPERATING_SYSTEM>
    <OPERATING_SYSTEM>
    <!--Microsoft Windows XP-->
      <VERSION VALUE="5.1"/>
      <SERVICE_PACK VALUE="1"/>
    </OPERATING_SYSTEM>
    <OPERATING_SYSTEM>
    <!--Microsoft Windows 2003-->
      <VERSION VALUE="5.2"/>
    </OPERATING_SYSTEM>
    <!--Microsoft Windows Vista-->
    <OPERATING_SYSTEM>
      <VERSION VALUE="6.0"/>
    </OPERATING_SYSTEM>
    <!--Microsoft Windows 7-->
    <OPERATING_SYSTEM>
      <VERSION VALUE="6.1"/>
    </OPERATING_SYSTEM>

  </CERTIFIED_SYSTEMS>

이상 3개 파일을 수정하면 설치가 됩니다 ㅎㅎㅎ

Posted by 인천총각
|

기본 원리 - 퍼옴 : http://par.sarang.net/369

윈도우즈 환경에서 쓰려고 그런 것 같은데 Base64 인코딩의 원리는 간단하므로
어떤 컴퓨팅 환경이던 원리만 알면 누구나 쉽게 코딩할 수 있으리라 생각된다.

Base64 인코딩 원리

우선 제목이 말하는 Base64의 의미가 무엇인지 살펴 보자.

베이스가 64라는 것은 모든 정보를 64진수로 표시한다는 것인데, 컴퓨터는 2진수를 사용하므로 64진수로 표시하기 위해서는
2^6 = 64 즉 6 비트 2진수 열이 필요하다.

그런데 대개 컴퓨터에서 가장 기본이 되는 정보 단위는 8 비트씩 엮어진 바이트이므로
6비트와 8비트가 각각 나누어 떨어질 수 있는 공배수의 최소값 (최소 공배수)를 구하면 24비트가 된다.

24비트는 8비트 바이트에서는 3바이트가 되고, 64진수로 나타내기 위한 6비트 단위로는 4 단위가 된다. (바이트라고 반복하기 말하면 혼동이 될 것 같아서 "단위"라는 말로 대치하였다.)

따라서 Base64의 인코딩 원리는 3바이트 단위마다 (즉 24비트 마다) 6비트씩 쪼개어서 6비트 짜리 문자 4개로 만드는 것이 되겠다.

이 때 6비트씩 쪼개진 단위를 A-Z a-z 0-9 + / (모두 64개 문자)로 각각 대응시키면 Base64 인코딩이 된다.


그런데 입력되는 정보가 모두 3바이트씩 떨어진다는 보장이 없으므로 3바이트로 나누어떨어지지 않는 경우 = 문자로 채우기를 한다. 즉 Base64로 인코딩 된 데이타에서 = 가 보이면 그 것은 다시 원래의 정보로 되돌아 갈때 (디코딩 될때) 아무 것도 없는 것이라는 소리가 된다.
(Base64로 인코딩 정보의 끝에 최대 나올 수 있는 = 의 수는 2개가 되겠다. 즉 끝부분에 =가 없거나 1개가 있거나 2개가 있는 것이 모두 나올 수 있는 경우가 되겠다.)

디코딩은 A-Z a-z 0-9 +- 문자를 각각 6비트의 정보로 바꾸어서 4 단위 (6*4=24 비트) 마다 합쳐서 3바이트 (3*8=24 비트) 로 다시 복원시키면 된다.



Posted by 인천총각
|

Webwork 가이드 링크~

일과 2010. 7. 21. 14:49

Struts2 공부흘 하려다보니 Webwork Framework 기반이라고 한다..

흐음.. Webwork Framwork이라.. WebworkFramework 는 2007년 이후 update가 안되어 있다고 하는데..

http://utumdol.springnote.com/pages/1628432

정말 설명 잘해 놓은 블로그 하나 소개한다!!! 강추!!!
Posted by 인천총각
|
Posted by 인천총각
|
1. 배치 파일 만들기--배치파일(일괄 처리용 화일)

기초만 알아두자!!!

Batch(배치)는 '한 묶음','한 벌'의 의미하며, 배치파일은 여러 가지 명령어를 한 파일에 모아 작업하는 파일,
즉 하나의 일을 처리하기 위해 여러번 내리는 명령어를 한 번만에 처리할 수 있도록 만들어 놓은 실행 파일!!
참고^^ http://alternativa3d.tistory.com/tag/Batch


배치화일로 파일 내에 문자쓰기
http://blog.naver.com/mokomoji/130001367333
배치파일로 폴더 내의 여러 파일을 각각 압축하기
http://blog.naver.com/mokomoji/130001367394
배치화일 수동 초이스 만들기 
http://blog.naver.com/mokomoji/130001367431
html 배치화일 특수문자 해결
http://blog.naver.com/mokomoji/130001367445
배치화일 명령어
http://blog.naver.com/mokomoji/130001367473
[본문스크랩] 네트워크 드라이브 자동 연결하기
http://blog.naver.com/mokomoji/130003167299
[본문스크랩] IP 자동 변경 스크립트
http://blog.naver.com/mokomoji/130003167289
[본문스크랩] 반복적인 ip 변경은 Bat 파일을 이용하여 간단하게
http://blog.naver.com/mokomoji/130003167083
[펌] 윈도우 콘솔 명령어들
http://blog.naver.com/mokomoji/130001368352
배치파일로 폴더 내의 여러 파일을 각각 압축하기
http://blog.naver.com/mokomoji/130001367394
폴더 분기
http://blog.naver.com/mokomoji/120019472999
[펌] 날짜 및 시간 얻어오기 배치파일
http://blog.naver.com/mokomoji/120016354197
배치화일 오늘날짜 폴더 생성
http://blog.naver.com/mokomoji/120014798527
배치화일 bat 화일 자동처리 1
http://blog.naver.com/mokomoji/120014798176


2. 자바에서 Batch File 실행!! (runtime.getRuntime().exec() 자바 cmd 실행 명령어.)

>> cmd 에서 공백이 있을경우 다른 문자열로 인식한다..
>> 실행시 파라미터로 넘기는 값이 공백이 있을경우 문자열로 인식 " 자동으로 붙여준다..
ex> exec("2222 22","2222") --> 출력시 "2222 22",2222

1. 실행 인자를 배열로 나눠서 전달 하는 방법
String [] commands = {"cmd.exe", "/c", "C:\\TEST\\TEST.BAT"}; // 자바 문법 \--> \\
Process proc = Runtime.getRuntime().exec(commands);
   
2. 한 문자열로 나타내는 방법
String command = "C:\\TEST\\TEST.BAT";
proc = Runtime.getRuntime().exec(command);

>> exec()는 String[]배열로 값을 받을수 있음..{"명령어","인자1","인자2"} 가능하다!!

1 번은 콘솔창을 불러 들여서 그곳에서 배치 파일을 실행 시키라고 명령하는 것!! 2번 방식과 다르다!!

'일과' 카테고리의 다른 글

Oracle10g Win7 설치  (0) 2010.07.30
Webwork 가이드 링크~  (0) 2010.07.21
개발자로서.. 읽어봐야 할 필수 도서!!  (0) 2010.07.20
추천 블로그..  (0) 2010.07.16
OWASP_Top_10_2007_Korean 웹 어플리 케이션의 취약점  (0) 2010.07.15
Posted by 인천총각
|

추천 블로그..

일과 2010. 7. 16. 20:36

차세대 자바 프로그래밍 스타일 .. 한번쯤 봐두는 것도
http://codemonkeyism.com/generation-java-programming-style/

Html 5 접근성에 관해서.. 여기는 Html5 기본을 다룬 pdf 도움되네..
http://webstandards.or.kr/html5

docbook라 개발자라면 앞으로 이런 형태로 문서 정리하는 것도..
http://www.joinc.co.kr/modules/moniwiki/wiki.php/article/docbook_howto#AEN22

동기에게 보내는 편지라.. 내가 개발자로서 많은 느낌이 오가는 블로그..
여기에 추천되는 책들은 꼭 다 읽어봐야겠다..
http://tasy.jaram.org/blog/?p=122
Posted by 인천총각
|

'일과' 카테고리의 다른 글

Oracle10g Win7 설치  (0) 2010.07.30
Webwork 가이드 링크~  (0) 2010.07.21
개발자로서.. 읽어봐야 할 필수 도서!!  (0) 2010.07.20
배치 파일 만들기!! && 자바에서 Batch File 실행하기!!  (0) 2010.07.19
추천 블로그..  (0) 2010.07.16
Posted by 인천총각
|