블로그 이미지
올해목표 // 10월 어학연수 떠나자~ 자수씨

카테고리

전체글 (1457)
Brand New! (28)
주절주절 (213)
MOT (11)
해외쇼핑 (49)
쇼핑노트 (150)
취미생활 (94)
iPhone (4)
Eclipse (121)
Google (83)
Spring (31)
JAVA (176)
JavaScript (59)
WEB (49)
Database (20)
OS (26)
Tools (8)
Tips (26)
IT정보 (1)
Book (21)
Programming (37)
외부행사 (43)
주변인들 (17)
여행노트 (60)
학교생활 (30)
회사생활 (52)
사회생활 (5)
외국어공부 (12)
잡동사니 (30)
Total
Today
Yesterday
 
05-02 07:38
 

달력

« » 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. 03. 20.)
추출 데이터 : 2010-03-20

어떤 방법으로 해당 데이터를 추출할 수 있을까요?





Posted by 자수씨
, |

HTML 을 XML 파서로 파싱해서 객체화 시킬 일이 있어 여러 가지 실험해 보다가 쓸만한 팁을 정리합니다.

HTML 의 경우는 XML 과는 다르게 태그를 닫지 않거나 attribute 를 큰 따옴표로 감싸지 않아도 브라우저에서 확인이 가능합니다. 이렇기 때문에 HTML 을 XML 파서로 파싱하려면 큰 따옴표로 묶이지 않은 부분을 변경해 주어야 합니다.
(실제로 작업을 해보지는 않았으나 태그를 닫지 않는 것을 수정하려면 문서 전체를 문자열 단위로 파싱을 해야 가능할 것 같습니다.)

[TYPE_A]
<P class=PStyle0>
...
</P>

[TYPE_B]
<P class="PStyle0">
...
</P>

간단하게 이야기 하자면 [TYPE_A][TYPE_B] 로 변경하는 것이 목적입니다.

자바에서는 replaceAll 메소드와 정규식을 이용하면 쉽게 변환이 가능합니다.


우선 replaceAll 의 첫번째 파라미터를 설명하겠습니다.
'class='로 시작을 하고 스페이스, '>', 큰 따옴표가 나오기 전까지의 모든 문자들의 연속을 찾습니다. 괄호로 묶음은 그룹을 뜻하는데 여기서 그룹 1 은 'class=' 이며, 그룹 2 는 위의 [TYPE_A] 에서 라면 'PStyle0' 까지 입니다.

두번째 파라미터는 간단합니다. '$그룹번호' 로 변경하겠다는 이야기 입니다.
'$1\"$2\"' 을 단계별로 변환하면 그룹 1 이 교체되면 'class=\"$2\"' 가 되고 그룹 2 가 교체되면 'class=\"PStyle0\"' 이 됩니다.

정규식은 역시 활용만 잘하면 단순 노가다 작업을 간단하게 줄여줄 수 있는 강력한 무기가 됩니다.


Posted by 자수씨
, |

xml 데이터를 가지고 처리하는 작업을 최근에 하다보니 encoding 을 알아야 할 일이 생겼습니다.
JAXB 를 가지고 marshalling/unmarshalling 을 하기 때문에 라이브러리를 통해서 encoding 을 확인할 방법은 없고...

그래서 예전에 한참 재밌게 가지고 놀던 정규식을 이용해서 아래와 같이 만들어 보았습니다.



getXMLEncodingType() 메소드의 인자로 xml 데이터를 넘겨주면 encoding 을 반환하게 됩니다.


Posted by 자수씨
, |

저의 경우에는 개발 관련되는 것들은 "E:\01. Development" 밑에 폴더를 만들어서 정리를 합니다.
이번에 JBoss를 학교 컴퓨터에 설치를 하고 시작을 하는데 아래와 같은 오류가 뜹니다.

java.lang.ExceptionInInitializerError: java.net.MalformedURLException: unknown protocol: e

느낌이 왠지 unknown protocol: e 가 E 드라이브를 뜻하는 것 같았습니다. 예전에도 비슷한 경험이 있었기에...

JBoss 폴더를 E 드라이브 루트에 옮겼더니 문제 없이 돌아갑니다.

회사 컴퓨터도 똑같은 경로에 설정한건데... OS 설정에 따라 띄어쓰기가 허용되고 안되고가 있나봅니다.




Posted by 자수씨
, |

아주 간단한 Java Tip!!

JAVA / 2009. 6. 16. 12:47

자바에서 스트링을 비교할 때는 다음과 같이 equals() 메소드를 이용합니다.


하지만 위의 메소드에서 target 이 null 이라면... 런타임에 NullPointerExeption 을 던저줄 것입니다.

그걸 막고자 아래와 같이 코딩을 한다면 무언가 낭비한다는 느낌이 듭니다.



이런걸 아래와 같이 써보는 것은 어떨까요?
target이 null 이더라도 알아서 검사가 됩니다. (상수나 문자열 리터럴을 통해 비교를 하는 것입니다)


위와 같이 코딩하는 습관을 들이면 NullPointerException 을 조금 덜 볼 수 있을 것입니다~~



Posted by 자수씨
, |

수업 시간에 아주 흥미로운 이야기를 들었습니다.
자바에서 스트링 비교에서 == 연산자로 비교를 할 수 있다고 하시더군요~~



실행결과
true
false


평소에 배워오던 스트링 비교에서는 equals() 메소드를 써야한다고 배웠는데...

일반적으로 new String() 을 하게되면 Heap 영역에 독자적인 메모리 공간을 갖게 되는데,
그냥 "..." 로 스트링을 만들 경우에는 Heap 영역에 스트링 풀에서 관리를 한다고 합니다.
같은 스트링은 한 개만 저장한다고 하네요~

자바를 시작한지 6년이 지났는데... 정말 충격적인 사실이였습니다. ㅋㅋㅋㅋ


Posted by 자수씨
, |

인공지능 시간에 팀 과제 였던 A* 알고리즘...

priority queue 의 비중이 크기에 c 와 MFC 로 개발하였을 때 Java 대한 그리움을 떨치지 못하고

자바로 다시 짰습니다.

아... 이제 저는 너무나도 자바에 익숙해져 버렸나 봅니다;;; 웁쯔;;;

5년전에는 MFC 신동이였는데 크흑...





Posted by 자수씨
, |

회사 프로젝트 코드에서 공백이 포함된 문자열을 공백을 제거할 로직을 추가할 일이 있어서
아래와 같은 방식으로 수정을 하였습니다.


허나 결과는...
Vicki Yi : Vicki Yi

정규식에서 공백은 정확하게 공백으로 인식을 못하는 것 같았습니다.
Pattern JavaDoc 에서 내용을 확인하였습니다.
http://java.sun.com/javase/6/docs/api/java/util/regex/Pattern.html

POSIX character classes (US-ASCII only)
\p{Lower} A lower-case alphabetic character: [a-z]
\p{Upper} An upper-case alphabetic character:[A-Z]
\p{ASCII} All ASCII:[\x00-\x7F]
\p{Alpha} An alphabetic character:[\p{Lower}\p{Upper}]
\p{Digit} A decimal digit: [0-9]
\p{Alnum} An alphanumeric character:[\p{Alpha}\p{Digit}]
\p{Punct} Punctuation: One of !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
\p{Graph} A visible character: [\p{Alnum}\p{Punct}]
\p{Print} A printable character: [\p{Graph}\x20]
\p{Blank} A space or a tab: [ \t]
\p{Cntrl} A control character: [\x00-\x1F\x7F]
\p{XDigit} A hexadecimal digit: [0-9a-fA-F]
\p{Space} A whitespace character: [ \t\n\x0B\f\r]


그래서 아래와 같이 수정하였습니다.


결과는~~~ 원하는 결과가 나왔습니다.
Vicki Yi : VickiYi


정규식을 안쓰면 indexOf() 와 replace 를 while 문으로 돌려서 처리를 해야 하기에 역시 정규식이 깔끔한 것 같습니다.


Posted by 자수씨
, |

예전에 개발을 했었던 로컬편지함을 인수인계 하는 과정에서 자바에서 윈도우즈 레지스트리에 접근하는 라이브러리를 사용하는 부분이 있었는데 실행을 하게 되면 아래와 같은 에러가 발생하였습니다.

ERROR You have not installed the DLL named 'ICE_JNIRegistry.DLL'.
        no ICE_JNIRegistry in java.library.path
Exception in thread "main" java.lang.UnsatisfiedLinkError: com.ice.jni.registry.RegistryKey.createSubKey(Ljava/lang/String;Ljava/lang/String;I)Lcom/ice/jni/registry/RegistryKey;
        at com.ice.jni.registry.RegistryKey.createSubKey(Native Method)
        at kr.co.vicki.example.jniregistry.JNIRegistryExample.main(JNIRegistryExample.java:13)

윈도우즈의 레지스트리를 수정하는 라이브러리 dll 을 클래스 패스에 넣고 실행했는데도 위와 같은 에러가 발생 한 것이였습니다. 오래전의 기억을 더듬다 보니 아래의 자바 실행 옵션을 확인할 수 있었습니다.

java -Djava.library.path=[native dll path]


저의 경우에는 native 폴더에 dll 을 넣어두었기 때문에 아래와 같이 실행하였더니 정상적으로 실행되었습니다.

java -Djava.library.path=native -jar LocalMailBox.jar

실행 옵션외에도 LD_LIBRARY_PATH 를 환경변수로 잡아주거나, 실행시 System.loadLibrary, System.load 로 동적 라이브러리를 로드할 수 있습니다.



Posted by 자수씨
, |

[JAVA] 퀴즈퀴즈~

JAVA / 2009. 1. 5. 21:11


아래 소스를 보고 느낀 점이 있나요??

 



개굴개굴...

Posted by 자수씨
, |

글 보관함

최근에 받은 트랙백