달력

5

« 2024/5 »

  • 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
2010. 2. 23. 13:57

crontab에 등록해서 실행하기.. 그거/기타2010. 2. 23. 13:57


 매일 오후 1시 50분에 compLog.sh을 실행하고자 할 경우...

 crontab을 이용하면 간단하다...

등록 : crontab -e

보기 : crontab -l

제거 : crontab -r 


crontab file은 각 entry마다 여섯개의 field로 구성되어있으며. 각 필드는 space 나  tab으로 구분한다.


50    13    *    *    *     /export/home/i101508/compLog.sh
분    시    일  월   주   명령어


※ crond 는 실행중이어야 한다.

자세한건man crontab 을 참조!!!
유닉스 사용의 핵심은 man 의 생활화. ㅋㅋ

:
Posted by 뽀기
2010. 2. 19. 19:17

properties 파일 로딩하기 그거/Java2010. 2. 19. 19:17


   config.properties 파일은 CLASSPATH에 있다고 가정한다.
   
   ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
   is = classLoader.getResourceAsStream("config.properties");
   Properties properties = new java.util.Properties();
   properties.load(is);
   System.out.println(properties);

   이리 하면.. 로딩된다. ㅎㅎ
:
Posted by 뽀기

HTML 소스에서 <img .... > 태그만 정규표현식을 이용해서 추출할 수 있다~~

Pattern.compile("<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>");

위의 패턴을 이용하면 된다는..

하나씩 보자.

<img
[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>
<img 태그를 찾는다.( <img......... )

<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>
>가 아닌 모든 것들..(<img height=100 width=50 ......)

<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>
src= 속성을 찾는다. (<img height=100 width=50 src=.....)

<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>
"나 '가 0 또는 1번 이상 나타나고, (<img height=100 width=50 src='......)

<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>
>나 ", '가 1 또는 그 이상 나타나며, (<img height=100 width=50 src='10.gif......)

<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>
"나 '가 0 또는 1번 이상 나타나고, (<img height=100 width=50 src='10.gif'......)

<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>
>가 아닌 모든 문자들.. (<img height=100 width=50 src='10.gif' alt='10'......)

<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>
> 로 끝나는 (<img height=100 width=50 src='10.gif' alt='10'>)

문자열 이라는거죠~

<img height=100 width=50 src='10.gif' alt='10'>

아래 예제를 돌려보자~~

package cis.jcaps.app;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PatternTest
{
 final static Pattern nonValidPattern  =  Pattern.compile("<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>");
 final static File indexFile = new File("index.html");
 
 public static void main(String[] args) {
  List<String> list = null;
  String str = null;
  StringBuilder sb = new StringBuilder();
  BufferedReader br = null;
  
  try {
   System.out.println(indexFile.exists());
   br = new BufferedReader(new FileReader(indexFile));
   while( (str = br.readLine()) != null ) {
    sb.append(str);
   }
  } catch(Exception e) {
   e.printStackTrace();
  }
  list = stripNonValidXMLCharacters(sb.toString());
  
  for(String tmp : list ) {
   System.out.println(tmp);
  }
 }

public static List<String> stripNonValidXMLCharacters(String str) {
  List<String> result = new ArrayList<String>();
  StringBuffer out = new StringBuffer();
  Matcher matcher = nonValidPattern.matcher(str);

  while (matcher.find()) {
   result.add(matcher.group(1));
  }
  matcher.appendTail(out);
  return result;
 }
}

:
Posted by 뽀기
2010. 1. 29. 19:09

XML 특수 문자 파싱 오류 확인 그거/Java2010. 1. 29. 19:09


<?xml version=\"1.0\" encoding=\"euc-kr\"?><root><data>한&#123;글1234 &#xF;5678&#15; &#16; English日本0A</data></root>

이런 XML을 파싱을 하다 보면...

[Fatal Error] :4:13: Character reference "&#15" is an invalid XML character.
org.xml.sax.SAXParseException: Character reference "&#15" is an invalid XML character.
 at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
 at cis.jcaps.app.XMLParserTest.handle(XMLParserTest.java:75)
 at cis.jcaps.app.XMLParserTest.doIt(XMLParserTest.java:53)
 at cis.jcaps.app.XMLParserTest.main(XMLParserTest.java:177)

이런 에러가 납니다.

바로 &#15; 요놈!. 특수문자가 변환된 놈 때문이지요..

이걸 HTML 파일로 저장해서 보면..



이렇게 보입니다.. 꼭 벌레같다는..

암튼. 저 데이터를 XML로 변환을 하면.. &#15; 가 되지요.

이  &#15; 를 다시 원래 벌레로 만들려면 XML 파서가 바로 위 같은 에러를 뱉어냅니다.

이 문제를 해결하기 위해서..

final Pattern nonValidPattern = Pattern.compile("&#(x?)([0-9a-fA-F]+);");

 public String stripNonValidXMLCharacters(String str) {
  StringBuffer out = new StringBuffer();
  Matcher matcher = nonValidPattern.matcher(str);
  int value = 0;
  boolean isHex = false;
  boolean valid = false;
  while (matcher.find())
  {
   isHex = matcher.group(1) != null;
   value = Integer.parseInt(matcher.group(2), isHex ? 16 : 10);
   valid = false;
   if ((value == 0x9) ||
     (value == 0xA) ||
     (value == 0xD) ||
     ((value >= 0x20) && (value <= 0xD7FF)) ||
     ((value >= 0xE000) && (value <= 0xFFFD)) ||
     ((value >= 0x10000) && (value <= 0x10FFFF)))
    valid = true;
   if (!valid)
    matcher.appendReplacement(out, "");
  }
  matcher.appendTail(out);
  return out.toString();
 }

이 method를 사용하면 됩니다.

"&#(x?)([0-9a-fA-F]+);"

바로 이 패턴을 이용하여, &#xx; 이런식의 문자열을 지워버리는거죠.

&#로 시작하고,
&#뒤에 x가 0번 혹은 1번만 나오고.
&#뒤에 뒤에 숫자, 또는 영문자 a~f 까지만 허용되는 문자열이 1번 이상 나오고,
마지막은 ; 로 끝나는 문자열을 찾는거죠.

해당 문자열을 찾은 후에

   if ((value == 0x9) ||
     (value == 0xA) ||
     (value == 0xD) ||
     ((value >= 0x20) && (value <= 0xD7FF)) ||
     ((value >= 0xE000) && (value <= 0xFFFD)) ||
     ((value >= 0x10000) && (value <= 0x10FFFF)))
    valid = true;


이 루틴을 이용해서, XML 파싱에 허용되는 문자들만 거르게 되는겁니다!! 냐하하하.

:
Posted by 뽀기
2010. 1. 29. 18:59

[DB] MSSQL 실행된 쿼리 조회하기... 그거/DB2010. 1. 29. 18:59


오라클의 archive를 조회하는 것 처럼.

MSSQL에서도 이미 실행된 쿼리들을 조회할 수 있답니다.


select
db_name(st.dbid) DBName
,qs.total_elapsed_time
,creation_time
,last_execution_time,text
from sys.dm_exec_query_stats qs cross apply sys.dm_exec_sql_text(qs.plan_handle)st
join sys.dm_exec_cached_plans cp on qs.plan_handle = cp.plan_handle
where creation_time >= '2010-01-01 00:00:00'
--and db_name(st.dbid) is not null and cp.objtype = 'proc' --조건: 종류
and text like '%delete%'
order by last_execution_time desc;

이렇게 하면 된답니다.

실행된 파라미터까지 정확히 나오지는 않는듯 합니다.....
@1 이런식으로 나오네요..

:
Posted by 뽀기
2010. 1. 25. 09:21

[정보] 무료로 사용해보세요~ 그거/기타2010. 1. 25. 09:21

Advanced SystemCare PRO Edition

프로모션 기간(1년)동안 무료랍니다.

좋다고 하던데. 쓰실 분은 함 써보시길...

http://db.iobit.com/license-free/ascpro-softpedia-giveaway.php

Email 과 Verification code를 입력하면.

Free -> PRO 로 변경할 수 있는 등록코드가 생성됩니다~

# 처음 설치하면 Free 버전이고.
# 등록코드 입력하면 PRO 버전으로 변경된다지요~~

:
Posted by 뽀기
Inner Class에서 OuterClass의 변수를 참조하려면 아래와 같이 해야 된다는군요.
홋.홋.홋.홋.

01: class OuterClass {
02:     int varA = 100;
03:     class InnerClass {
04:         static final int varA = 20;
05:         void methodCall() {
06:             int varB = varA;
07:             int varC = this.varA;
08:             int varD = Outer.this.varA;
09:         }
10:     }
11: }

02 라인의 varA와 04 라인의 varA의 변수명이 같습니다.
이런 경우, 아래 처럼 하면....

06:             int varB = varA;
07:             int varC = this.varA;

varB와 varC에는 20이란 값이 들어갑니다.


OuterClass에 정의되어 있는 변수에 접근하기 위해서는....
아래와 같이 해야 합니다~

08:             int varD = Outer.this.varA;

varD에는 100이란 값이 들어가는거죠!
:
Posted by 뽀기


jar 파일이 변경-버전업, 또는 이름 변경-될 때마다 eclipse에서 library 정보도 변경해줘야 되고,
개발자들에게 배포된 것도 확인해줘야 되고, 등등등. 이래저래 구찮은 일이 많아서.
그냥 jar 파일명에서 버전을 뺀 상태에서 버전관리만 하려고 찾다보니.
Manifest.MF 파일에 있는 버전 정보를 읽으면 되겠다 싶어서 만든 샘플.


checkVersion.java

import java.util.*;

public class checkVersion {
        JarFile jarFile;
        Manifest manifest;
        Attributes attributes;
        String jarFileName;
        String version;

        public checkVersion(String filename) {
                jarFileName = filename;
        }

        public void printVersion() {
                try {
                        // jar 파일을 읽습니다.
                        jarFile = new JarFile(new File(jarFileName));
                        // jar 파일에서 manifest 정보를 가져옵니다.
                        manifest = jarFile.getManifest();
                        // manifest에서 main 정보를 가져옵니다.
                        attributes = (Attributes)manifest.getMainAttributes();

                        // attribute 중에서 Implementation-Version 정보를 추출한다.
                        version = attributes.getValue("Implementation-Version");
                        System.out.println("@@ " + version);

                        /* 아래처럼 하면 manifest의 main 정보 전체를 확인할 수 있다.
                        for (Iterator it=attributes.keySet().iterator(); it.hasNext(); ) {
                                Attributes.Name attrName = (Attributes.Name)it.next();
                                String attrValue = attributes.getValue(attrName);

                                System.out.println("## " + attrName + " : " + attrValue);
                        }
                        */
                } catch(Exception e) {
                        e.printStackTrace();
                }
        }

        public static void main(String[] args) {
                if( args.length != 1 ) {
                        System.out.println("Usage : ");
                        System.out.println("    java printVersion [jar_file_name]");
                        return;
                }

                /*
                if( !(new File(args[0])).exists() ) {
                        System.out.println("Error : ");
                        System.out.println("[" + args[0] + "] file does not exist.");
                        return;
                }
                */

                checkVersion cv = new checkVersion(args[0]);
                cv.printVersion();
        }
}



 MANIFEST.MF


Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: Niall Pemberton
Build-Jdk: 1.5.0_07
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
Bundle-ManifestVersion: 2
Bundle-Name: Apache Commons IO Bundle
Bundle-SymbolicName: org.apache.commons.io
Bundle-Vendor: The Apache Software Foundation
Bundle-Version: 1.4
Export-Package: org.apache.commons.io;version=1.4,
 org.apache.commons.io.comparator;version=1.4,
 org.apache.commons.io.filefilter;version=1.4,
 org.apache.commons.io.input;version=1.4,
 org.apache.commons.io.output;version=1.4
Implementation-Title: Commons IO
Implementation-Vendor: The Apache Software Foundation
Implementation-Vendor-Id: org.apache
Implementation-Version: 1.4
Import-Package: org.apache.commons.io;version=1.4,
 org.apache.commons.io.comparator;version=1.4,
 org.apache.commons.io.filefilter;version=1.4,
 org.apache.commons.io.input;version=1.4,
 org.apache.commons.io.output;version=1.4
Specification-Title: Commons IO
Specification-Vendor: The Apache Software Foundation
Specification-Version: 1.4
X-Compile-Source-JDK: 1.3
X-Compile-Target-JDK: 1.3 


실행결과

weblogic@WAS01[/export/home/weblogic]# java checkVersion commons-net-1.4.1.jar
@@ 1.4.1


 

'그거 > Java' 카테고리의 다른 글

XML 특수 문자 파싱 오류 확인  (0) 2010.01.29
[Java] Inner Class에 이런 것이 있었군요...  (0) 2009.09.29
JMeter 사용하기...  (2) 2009.08.20
JCONSOLE 사용하기.  (0) 2009.07.28
[ShutdownHook] 오랜만의 Java 포스팅..  (0) 2009.07.18
:
Posted by 뽀기

오랜만에 C로 프로그램 테스트 중인뎁.. 컴파일 열라 안된다. ㅜㅜ


[CISD-INTCH01 284] src2 > make
gcc -m64 -O -I. -I../jms/c_api -shared -fPIC  eaiClientSample_unix.c -o eaiClientSample_unix.o
gcc -m64 -O -I. -I../jms/c_api -shared -fPIC  EAIJMSClient4Unix.c -o EAIJMSClient4Unix.o
gcc -m64 -O -I. -I../jms/c_api -shared -fPIC  EAIMessage.c -o EAIMessage.o
gcc -m64 -O -I. -I../jms/c_api -shared -fPIC  EAIJMS_Util.c -o EAIJMS_Util.o
gcc -O -fPIC -m64 -L../jms/c_api/lib -lstc_msapi -lstc_mscommon -lstc_msclient -lstc_mscapi -lnsl -lsocket  eaiClientSample_unix.o EAIJMSClient4Unix.o EAIMess
age.o EAIJMS_Util.o -o eaiJmsClient4SunOs
정의되지 않음                   첫번째 참조된
 기호                       파일:
__1cDstdNbasic_ostream4Ccn0ALchar_traits4Cc___2l6Mh_r1_ ../jms/c_api/lib/libstc_mscommon.so
__1cDstdNbasic_ostream4Ccn0ALchar_traits4Cc___2l6Mi_r1_ ../jms/c_api/lib/libstc_mscommon.so
__1cDstdNbasic_ostream4Ccn0ALchar_traits4Cc___2l6Md_r1_ ../jms/c_api/lib/libstc_mscommon.so
__1cDstdNbasic_ostream4Ccn0ALchar_traits4Cc___2l6Mf_r1_ ../jms/c_api/lib/libstc_mscommon.so
__1cDstdNbasic_ostream4Ccn0ALchar_traits4Cc___2l6Mb_r1_ ../jms/c_api/lib/libstc_mscommon.so

실행하면 위와 같이 에러가 나는데 당췌 뭔소린지...
보아하니 library가 잘못 링크 됐거나, 덜 링크 된것 같은데..

아래와 같은 방법으로 찾으면 된단다.

[CISD-INTCH01 286] src2 > nm -A /usr/lib/lib* | grep "__1cDstdNbasic_ostream4Ccn0ALchar_traits4Cc___2l6Mh_r1_"
nm: /usr/lib/lib.b: File format not recognized
/usr/lib/libCstd.so.1:00091768 T __1cDstdNbasic_ostream4Ccn0ALchar_traits4Cc___2l6Mh_r1_
nm: /usr/lib/libcctagent.so: 사용 권한이 거부됨
.....

:
Posted by 뽀기

# 전제 사항
$DOMAIN_HOME=/WLS_Domain/CISCD1
$MANAGED_SERVER_NAME=CISCD1
$ADMIN_SERVER_PORT=7001
$USERNAME=weblogic
$PASSWORD=weblogic


1. WebLogic Admin Console에 접속한 후 왼쪽 위의 "Change Center"의 메뉴중에  "Lock & Edit"을 클릭합니다.


2. 왼쪽 메뉴에서 "Server"를 클릭합니다.


3. "New" 를 클릭하여 Server를 추가합니다.


4. "Server Name", "Server Listen Port"를 입력하고, "Next"를 클릭합니다.


5. 입력한 값을 확인하고 "Finish" 를 클릭하여 Server를 생성합니다.


6. 왼쪽 위의 "Change Center"에서 "Activate Changes"를 클릭하여 변경한 내용을 적용합니다.


7. "Server"를 클릭하면 방금 추가한 Server를 확인할 수 있습니다.


8. 이제 방금 추가한 Managed Server의 start/stop script를 작성합니다.


9. start.sh, startall.sh stop.sh stopall.sh 를 각각 작성합니다.


10. Admin Server에 접속할 때 사용하기 위한 계정정보를 저장한 boot.properties 파일을 생성합니다.
     $ vi boot.properties
     username=weblogic
     password=weblogic



11. startall.sh 를 실행하여 Managed Server를 실행하면 $DOMAIN_HOME/servers 밑에 방금 추가한 Server명의 디렉토리가 생성됩니다.


12. Admin Console에서 Server의 상태를 확인합니다.
:
Posted by 뽀기