블로그 이미지
올해목표 // 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
 

최근에 올라온 글

최근에 달린 댓글



32비트 환경에서 32비트 JVM 으로 자바 프로그램을 실행시켰는데 아래와 같은 메시지가 나오면서 프로그램이 종료됩니다.

Running a 64-bit JVM is not supported on this platform.


혹시라도 머신에 64비트 JVM 이 설치되었는지 아무리 뒤져봐도 나오지 않았는데...

실행 스크립트에 아래와 같은 옵션 때문에 발생했던 문제였습니다.

JAVA_OPTS="-showversion -d64 -Xms512m -Xmx1024m -XX:PermSize=64M -XX:MaxPermSize=128M"


JAVA_OPTS="-showversion -d32 -Xms512m -Xmx1024m -XX:PermSize=64M -XX:MaxPermSize=128M"

"-d64" 라는 옵션을 "-d32" 로 변경하고 재구동을 하니 정상동작합니다.


도대체 저걸 왜 달아놓은거지 -_-;;;

Posted by 자수씨
, |


중괄호 '{ }' 로 피연산자의 id 가 정의된 수식 파서를 개발해야할 일이 있어, 학부 때 배웠던 자료구조 책을 펼쳐보다가 좌절을 하고 고민하고 있었습니다.

{id} + {id2} * 0.1 * {id3}

위와 같은 식이 있을 경우 아이디와 맵핑이 되는 값을 치환하여 파싱을 하고 계산을 해야 하는데...
 
계속 고민하다가 떠올린 것이 Javascript eval 함수였습니다. 이걸 자바에서 가능하게 해주는 것이 javax.script.ScriptEngine 입니다. (예전에 Rhino 라는 이름으로 자바에서 사용하는 스크립팅 엔진이라는 것을 들었는데 JDK 1.6 에서 포함된 것 같습니다. 정확하진 않아요;;;)

ㅁ JAVA


ㅁ JavaScript



eval 을 이용하면 문자열도 자연스럽게 합칠 수 있답니다.

이제 적용할 일만 남았네요~

Posted by 자수씨
, |

자바에서 interface 에 정의되는 메소드는 외부로 공개되는 메소드를 정의하는 것 입니다. 그러므로 private 나 protected 로 정의가 불가능합니다.

만약 하게 된다면 아래와 같은 컴파일 오류를 만나게 될 것 입니다.

Illegal modifier for the interface method ...; only public & abstract are permitted

기본적으로 interface 에 정의되는 메소드들은 public 접근 제어자를 갖습니다. 생략해도 관계가 없다는 것 입니다. 아마도 구색을 맞추기 위해 무의식적으로 interface 에도 public 을 붙이는게 습관이 되어버린 것 같습니다.

사실 크게 문제를 일으키는 부분은 아니지만 알고 있으면 좋은 정보라 생각됩니다.

Posted by 자수씨
, |

입력한 숫자에 대해 두 자리로 표현하는 방법에 대해 고민을 하고 있었는데, 생각한 것 보다 방법은 간단합니다.

java.text.NumberFormat nf = new java.text.DecimalFormat("00");
String result = nf.format(5);

위의 result 변수의 결과 값은 다음과 같습니다.

05


java.text.DecimalFormat 을 이용하여 자리 수에 맞게 표현할 수 있습니다. 세자리를 채우려면 생성자의 파라미터를 "000" 으로 설정하면 됩니다.

소수점 표현도 가능합니다.

new java.text.DecimalFormat("00.00");



세자리마다 쉼표를 넣고 싶다면 아래와 같은 NumberFormat 을 생성합니다.

new java.text.DecimalFormat("0,000");


알면 단순하고 모르면 개고생하는 프로그래밍의 세계~

Posted by 자수씨
, |

단순하게 HTML의 공백을   로 변환하는 로직은 아래와 같습니다.


하지만 이대로 사용한다면 문제가 있습니다. 바로 태그 내에 속성을 사용하면서 사용한 공백들도   로 바뀌어 버리게 됩니다.

[변환 전]
<div style="width=100%; height=100%;">태그  확인</div>

[변환 후]
<div&nbsp;style="width=100%;&nbsp;height=100%;">태그&nbsp;&nbsp;확인</div>



정규식을 사용해서 쉽게 변환하려 하였으나... 제가 아는 지식 내에서는 방법이 보이지 않아... 원초적인 방법을 사용하였습니다.


[변환 전]
<div style="width=100%; height=100%;">태그  확인</div>

[변환 후]
<div style="width=100%; height=100%;">태그&nbsp;&nbsp;확인</div>


흠... 이런 방법밖에 없을까요...

Posted by 자수씨
, |

갑자기 궁금해진 것이... JRebel 은 어떻게 웹 애플리케이션 서버를 리스타트 시키지 않고 클래스 변경을 인식할 수 있느냐 였습니다. 구글에서 뒤져보다 찾은 키워드를 찾아냈습니다. 

"HotSwap"...

자바 1.4 에서 부터 지원되는 JDPA 라는 기능을 이용하여 JVM 에 변경된 클래스의 바이트 코드를 주입하는 방식이였습니다.

이클립스에서 디버깅을 할 때, 소스를 변경하면 바로 인식되는 것도 위의 기능을 이용한 것으로 조사결과 확인되었습니다.

어떤 방식인지 조금 더 살펴 본 후 응용할 수 있는 부분을 찾아볼 계획입니다.


관련 사이트
JDPA 관련: http://download.oracle.com/javase/1.4.2/docs/guide/jpda/enhancements.html#hotswap
hotswap 홈: https://hotswap.dev.java.net/


Posted by 자수씨
, |

웹 어플리케이션을 구동하다보면 부지런한 개발자의 error 로그를 통해 에러를 확인하는 경우도 있지만 문제가 생기면 대부분 표준 에러로 접하게 되는게 많습니다.

에러만 별도의 파일로 기록하고자 log4j 를 이용하여 Threshold 를 ERROR 로 설정하고 열심히 에러를 발생시켰으나... 로그가 발생하지 않아 생각을 해보니 표준에러와 log4j의 에러는 전혀 다른 것이였습니다. (-_ㅜ... 왜 헷갈렸을까...)

log4j의 ConsoleAppender 와 DailyRollingFileAppender를 교묘하게 조합해보면 될 것 같다고 생각도 해보았지만 역시 단순한 작업은 아닌 것 같습니다.

검색을 해보다가 System.out 과 System.err 을 파일로 로깅하는 포스팅이 있어 정리도 해둘 겸 적어봅니다.
http://blogs.sun.com/nickstephen/entry/java_redirecting_system_out_and


나중에 좀 여유 있으면 개발 시작...


Posted by 자수씨
, |

Applet... RuntimePermission...

JAVA / 2010. 6. 28. 14:25

전략적으로 애플릿을 이용하여 내부 리소스를 처리하려 하였으나...

java.security.AccessControlException: access denied (java.lang.RuntimePermission accessDeclaredMembers)
 at java.security.AccessControlContext.checkPermission(Unknown Source)
 at java.security.AccessController.checkPermission(Unknown Source)
 at java.lang.SecurityManager.checkPermission(Unknown Source)



signjar 를 이용하여 인증까지 처리하였으나... applet 만으로는 처리가 안되나 봅니다.

구글링을 해보니 Microsoft SDK for Java 4.0 를 이용하라고 하는데 cab으로 만들기에는 좀 귀찮고...
웹 스타트로 처리를 해야할 것 같습니다... (일이 점점 커지네요...)

자바스크립트와 통신을 해야하므로 다시 애플릿으로...

쩝...

Posted by 자수씨
, |

















아래와 같은 코드가 있습니다.


이 코드를 작성한 작자는 datas 가 8 개의 요소를 가지고 있는 배열이기를 원합니다.



오묘해... 오묘해...

Posted by 자수씨
, |

현재 개발하고 있는 시스템에서 첨부파일을 다운로드할 경우 공백이 '+' 로 바뀌어서 저장이 됩니다.

예를들어 "불친절한 자수씨의 블로그.pdf" 라는 파일이라면 "불친절한+자수씨의+블로그.pdf" 라는 파일로 저장이 됩니다.

원인은 한글 파일명을 지원하기 위해 URLEncoder 를 사용하는데, 이것이 공백을 '+' 로 만드는 범인이였습니다.

기존 방식은 아래와 같았을 것 입니다.

개선 방법은 URLEncoding 후 '+' 로 변경된 공백을 '%20' 으로 다시 변경합니다.


'+' 는 정규식의 수량을 나타내는 것이기 때문에 역슬래쉬가 앞에 붙어야 합니다.

원래 있던 '+' 가 걱정되시는 분들은 걱정할 필요가 없습니다.
URLEncoder.encode() 메소드에 의해 '%2B' 로 변환이 됩니다.

어떻게 생각해보면 쉬운 것이였는데 신경을 못 쓰다보니 불편함을 안고 살았던 것 같습니다.

Posted by 자수씨
, |

글 보관함

최근에 받은 트랙백