'Bug'에 해당되는 글 3건

  1. 2007/10/08 Eclipse 3.3.1의 PermGen 버그... (1)
  2. 2007/01/15 Java6 XMLOutputFactory 유감 (2)
  3. 2006/11/14 DWR과 IE와 TBODY와 innerHTML과 협공 (1)
hacking/java2007/10/08 14:03
크리에이티브 커먼즈 라이선스
Creative Commons License
잘돌아가던 이클립스가 며칠 전 부터 계속 뻗기 시작했다.
가만히 생각해보니 3.3.1 업데이트 이후부터 그런것 같아서...
이런 저런 삽질하다가... eclipse.ini파일에 -XX:MaxPermSize 옵션을 넣어 주어서 해결했다.

잘 찾아보면... 이클립스 버그질라에 이미 올라와있다.
위키의 FAQ 페이지도 그저께 수정되었다.

지금 내가 쓰는 eclipse.ini 파일:
-clean
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256M
-vmargs
-XX:PermSize=256m
-XX:MaxPermSize=256m
-Xms40m
-Xmx768m
-Xverify:non

정리하면, 4~5째줄 --launcher.XXXMaxPermSize 256M 옵션이 Eclipse 3.3.1 + Sun JVM에서 동작하지 않는다는 얘기.

줸장...ㅠ.ㅠ

Posted by iolo
TAG Bug, Eclipse
hacking/java2007/01/15 22:36
크리에이티브 커먼즈 라이선스
Creative Commons License
오늘 삽질하다가... 발견한 Sun의 Java6의 javax.xml.stream.?XMLOutputFactory 소스의 일부... -.-;;;;;

  1. public abstract class XMLOutputFactory {
  2. ...
  3. /**
  4. * Create a new instance of the factory using the default factory location
  5. * mechanism (check env. variable, jaxp.properties, jar services manifest,
  6. * in this order)
  7. *
  8. * @throws FactoryConfigurationError if an instance of this factory cannot be loaded
  9. */
  10. public static XMLOutputFactory newInstance() throws FactoryConfigurationError {
  11.     return (XMLOutputFactory) FactoryFinder.find("javax.xml.stream.XMLOutputFactory",
  12. "com.sun.xml.internal.stream.XMLOutputFactoryImpl");
  13. }
  14.  
  15. /**
  16. * Create a new instance of the factory
  17. *
  18. * @param factoryId Name of the factory to find; not the class name but the
  19. *    property name to use
  20. * @param classLoader classLoader to use
  21. * @return the factory implementation
  22. * @throws FactoryConfigurationError if an instance of this factory cannot be loaded
  23. */
  24. public static XMLInputFactory newInstance(String factoryId, ClassLoader classLoader)
  25. throws FactoryConfigurationError {
  26.     return (XMLInputFactory) FactoryFinder.find(factoryId, "com.sun.xml.stream.XMLOutputFactoryImpl", classLoader);
  27. }
  28. ...

뭐가 이상하냐고?

첫번째 함수와 두번째 함수의 리턴타입...

?XMLOutputFactory가 왜! ?XMLInputFactory를 create하는 것이냐!(버럭!!)

해결책: 그냥 [http]우드스탁을 쓰던가... [http]BEA의 StAX 참조구현을 쓰면 된다.

'hacking > java' 카테고리의 다른 글

Maven2와 Eclipse/WTP 함께쓰기  (0) 2007/09/11
singleton과 lazy loading...  (0) 2007/01/28
Java6 XMLOutputFactory 유감  (2) 2007/01/15
XML Exodus...  (3) 2007/01/07
아니~ 버~ㄹ써! Java6~  (0) 2006/12/12
Java, finally GPLed  (0) 2006/11/14
Posted by iolo
TAG Bug, Java, stax
hacking/web2006/11/14 00:24
크리에이티브 커먼즈 라이선스
Creative Commons License
DWR을 사용해서(자바용 AJAX 라이브러리) 받아온 결과를 여러 개의 TR태그로 만들어서 미리 만들어져 있는 TBODY의 innerHTML에 밀어넣는 코드를 만들었었다. 작업은 주로 리눅스에서 했고 파이어폭스 1.5 / 2.0에서 잘 돌아갔다. QA팀의 테스트에 임박해서야 IE에서 처음으로 테스트 했는데.. 웬걸.. 완전 먹통인 것이다.

처음에는 DWR의 문제라고 생각했다. 일단 DWR이 만들어는 응답 메시지가 구질구질했기 때문이다. DWR을 걷어내야겠다고 맘만 먹고 일단 퇴근... 그러나... 좀 아깝긴 하다 -.-; DWR 같이 거져먹는(써본 사람들은 이 표현에 동의할 것이라고 확신한다) 라이브러리를 포기한다는 건 말처럼 쉬운 일이 아니다.

집에만 설치되어 있는 IE용 자바스크립트 디버거(MicrosoftScriptEditor)로 트레이스를 좀 해보기로 했다. DWR의 응답 메시지만 구질구질한게 아니다. 그 안쪽 로직은... 더욱 멋지다-.-;;;; 추적 불가능에 가깝다. 온 동네에 eval이라는 지뢰가 깔려있다. 대충 ?StepOver를 하다가 지뢰 밟기를 수십 번... 그렇게 범위를 좁혀 나간 다음, 마침내 ?StepInto라는 탐침봉으로 한 줄 한 줄 조심스럽게 찔러나갔다. 그리고... 범인은...

.

.

.

.

.

.

.

.

.

.

미안하다. 내가 그랬다. -.-;;;;

삽질이라는게 대개 그렇지만, 오늘의 삽질은 유난히 결론이 짧다:

IE에서... COL, COLGROUP, FRAMESET, HTML, STYLE, TABLE, TBODY, TFOOT, THEAD, TITLE, TR 태그의 innerHTML 속성은 읽기 전용 이다.


(TABLE에만 적용되므로) 별로 쓸모는 없겠지만 임시 해결책은: 출처: http://www.ajaxian.com/archives/innerhtml-gotchas
  1. function tableInnerHTML(target, rowHTML) {
  2.     /* Removed - why delete them?!
  3.     while (target.rows.length > 0) {
  4.         target.deleteRow(0);
  5.     } */
  6.     var tempDiv = document.createElement(”div”);
  7.     document.body.appendChild(tempDiv);
  8.     tempDiv.innerHTML = ‘’ + rowHTML + ‘’;
  9.     var tt = document.getElementById(”tempTable”);
  10.     /* Copy temporary table’s rows to target */
  11.     for (var i = 0; i < tt.rows.length; i++) {
  12.         target.appendChild(tt.rows[i].cloneNode(true));
  13.     }
  14.     tt.parentNode.removeChild(tt);
  15. }

오늘의 교훈: 남들 잘 쓰는 라이브러리를 함부로 의심하지말고... 니나 잘해라-.-;

Posted by iolo
TAG Bug, DWR, IE, innerhtml