'분류 전체보기'에 해당되는 글 1012

  1. 2009.06.16 SyntaxHighlighter 2 / 3.0.83
  2. 2009.06.13 Developing an Application Client to access EJB - Geronimo Tutorial
  3. 2009.06.13 Geronimo Eclipse Plugin
  4. 2009.06.13 Apache Geronimo
  5. 2009.06.11 이동하지 않는 링크
  6. 2009.06.11 JSTL 비교 연산자
  7. 2009.06.10 JPetStore 분석 2 - iBatis
  8. 2009.06.10 JPetStore 분석 1 - iBatis
  9. 2009.06.10 Eclipse 에서 기존에 있던 프로젝트 가져오기
  10. 2009.06.10 Open quote is expected for attribute "{1}" associated with an element type "parameterClass".
  11. 2009.06.10 JPetStore 설치 - iBatis
  12. 2009.06.09 Oracle SQL Developer - MySQL
  13. 2009.06.09 iBATIS
  14. 2009.06.09 java.util.Set
  15. 2009.06.08 Opera
  16. 2009.06.08 테이블 깨짐 방지
  17. 2009.06.08 운동
  18. 2009.06.06 잘못 사용되는 마크업
  19. 2009.06.05 iframe을 사용한 글보기가 안보임
  20. 2009.06.04 breadcrumb
  21. 2009.06.03 한글 길이
  22. 2009.06.02 svn: PROPFIND request failed
  23. 2009.06.02 Subversion에서 저장소의 변경된 사항 확인하기
  24. 2009.06.01 Run any browser from the web
  25. 2009.05.31 작지만 알찬 서비스 - FilesOverMiles
  26. 2009.05.28 보이지 않는 게시판 글
  27. 2009.05.28 겹쳐보이는 레이어(div)
  28. 2009.05.28 파이어폭스에서 웹페이지 저장시 오류
  29. 2009.05.28 An Error Occurred
  30. 2009.05.28 SAML을 이용한 SSO Service의 구현

SyntaxHighlighter 2 / 3.0.83

2020-02-01 kakao에서 쿠키 CORS 문제때문에 제대로 표시 안됨. Prettify를 사용하기로 함.

- SyntaxHighlighter 2
- 버전
- 지원하는 Brush
http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/
로 변경되었음. 3.0으로 되면서 ...

- hosted version 을 사용하면 파일을 올릴 필요가 없다. 
2019-10-20 3.x
2에서는 줄번호까지 복사되어서 span 방식이 아닌 textarea 방식
그러나 자동 줄바꿈이 안되고, 옆으로 스크롤이 생김. (이걸 해결한 거.. https://sir.kr/g4_tiptech/33028
2.x
- pre가 기본 태그인데 Tistory 편집기에서 잘안보이므로 그냥 예전처럼 textarea로 쓰자.
html은 textarea를 사용하고 나머지는 pre를 사용하자. 

- 재미있는 설정
collapse, first-line, highlight, html-script
<textarea name="code" class="brush:html;first-line:3;highlight:[4, 6]">
- 잘안되네...
SyntaxHighlighter.defaults['html-script'] = true;
SyntaxHighlighter.config.tagName = "textarea" //3.x에서는 잘됨.




Developing an Application Client to access EJB - Geronimo Tutorial

- Developing an Application Client to access EJB

1. openejb-jar.xml 그대로 사용

2. Lookup
3. 라이브러리 추가
Add External JARs : <GERONIMO_HOME>\repository\org\apache\openejb\openejb-client\3.0.1\openejb-client-3.0.1.jar

4. SimpleEJB.jar 로 만들어서 Geronimo Console에서 배치하지 않고 그냥 서버 실행
Geronimo Console - Applications - EJB JARs 에서 등록된 것을 확인할 수 있다.

5. 로그 확인
2009-06-13 14:55:56,859 INFO  [startup] Jndi(name=CountryCapitalBeanRemote) --> Ejb(deployment-id=SimpleEJB/CountryCapitalBean)

Geronimo Eclipse Plugin

- Apache Geronimo v2.1 Development environment

- Installing Geronimo Eclipse Plugin

- 프로젝트 생성시 Target Runtime을 Geronimo로 설정해야 WEB-INF/geronimo-web.xml가 생성되고 제대로 Deploy된다.
기존에 있던 프로젝트를 Geronimo로 Deploy하는 것은 안됨.

- Geronimo를 Server runtime environment에 추가하면 Servers View에는 보이는데 Project Explorer의 Servers에는 보이지 않는다.

- 설정시 포트를 변경했는데 적용이 안됨.
WORKSPACE\.metadata\.plugins\org.eclipse.wst.server.core\server.xml 에도 적용이 되었지만 8080 포트로 운영된다.

Apache Geronimo

제로니모 프로젝트는 오픈소스로 구성된 Java EE 어플리케이션 서버와 개발환경을 제공한다.

- Apache Geronimo

- Apache Geronimo v2.1 documentation

- Apache Geronimo v2.1 Samples
예제와 Tutorial이 잘 정리되어 있다.

이동하지 않는 링크

어떤 WAS 메뉴얼에서 링크를 클릭해도 이동이 안됨

- this.parent.frames('tableFrame').location.href 를 this.parent.frames.mainFrame.location.href 으로 변경하면 된다.

JSTL 비교 연산자

- 테스트환경 1
잘모름

- 테스트환경 2
Apache Tomcat/5.5.9
standard-taglib 1.1.2

  ${test} ${empty test} ${test == null} ${test == 'null'} ${test == ''} ${test == ' '}[각주:1] ${test == '0'} ${test == 0}
 [각주:2] "" true true false false false false false
pageContext.setAttribute("test", null); "" true true false false false false false
pageContext.setAttribute("test", ""); "" true false false true false false true
pageContext.setAttribute("test", " "); " " false false false false true false Exception[각주:3]
pageContext.setAttribute("test", new Integer(0)); 0 false false[각주:4]
Exception[각주:5]
Exception[각주:6] true Exception[각주:7] true true
pageContext.setAttribute("test", "0"); 0 false false false false false true true

- empty 연산자는 test 가 없는 경우 참이다.
- Map, List, 배열이 비어 있는 경우에도 참이다.

[todo] 다른 구현체에서도 해볼 것.(resin, glassfish...구현체 확인해 둘것)
  1. 테스트환경 2에서 추가 [본문으로]
  2. 테스트환경 2에서 추가 [본문으로]
  3. An exception occured trying to convert String " " to type "java.lang.Long" [본문으로]
  4. 테스트환경 1 [본문으로]
  5. 테스트환경 2, An exception occured trying to convert String "null" to type "java.lang.Long" [본문으로]
  6. An exception occured trying to convert String "null" to type "java.lang.Long" [본문으로]
  7. An exception occured trying to convert String " " to type "java.lang.Long" [본문으로]

JPetStore 분석 2 - iBatis

Product ID가 빠졌다.

catalog/Product.jsp
13번째 라인에서 item#productId 임.

1. item 을 product 로 변경한다.

Item.xml
product#productId 에는 들어가는데 item#productId 에는 들어가지 않는다.

2. 쿼리에 productId 를 추가한다.

iBatis에서 주석은 -- 대신 /* */ 를 사용할 것.

JPetStore 분석 1 - iBatis

- JPetStore 5.0 Example Application
Struts 1.2, beanaction.jar(23,198  bytes)
iBatis 2

- web.xml
  • *.shtml 는 Struts action에서 처리하도록 함.
  • security-constraint 로 jsp파일을 직접 호출하지 못하게 함.

- /shop/index.shtml
org.apache.struts.beanaction.BeanAction
name=catalogBean
parameter="*"
/catalog/Main.jsp
- /shop/viewCategory.shtml?categoryId=FISH
org.apache.struts.beanaction.BeanAction
name=catalogBean
catalogBean#viewCategory() //비지니스 메서드 호출
/catalog/Category.jsp - BeanAction에서는 parameter 설정이 있으면 name의 해당 메서드 호출
parameter 설정이 없으면 path 에서 마지막 경로에 해당하는 메서드 호출
단, parameter가 *이면 어떤 메서드도 호출 안됨.

- 아래와 같이 특정 확장자에 대한 매핑이 가능

Eclipse 에서 기존에 있던 프로젝트 가져오기


Open quote is expected for attribute "{1}" associated with an element type "parameterClass".

java.lang.RuntimeException: Error occurred. 
Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. 
Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'. 
Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. 
Cause: org.xml.sax.SAXParseException: Open quote is expected for attribute "{1}" associated with an  element type  "parameterClass".
    at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:49)
    at com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(SqlMapClientBuilder.java:63)


” 를 " 로 바꾼다.

JPetStore 설치 - iBatis

- JPetStore-5.0/build/wars/jpetstore.war 로 배포할 수 있다.
또는
- Eclipse에서 구동시키기
  1. Dynamic Web Project 를 생성한다.
  2. Import
        src : JavaSource
        web : WebContent
        lib : WebContent/WEB-INF/lib

- 기본 설정이 hsqldb로 되어 있으므로 추가적인 설정이나 데이터베이스 없이 바로 구동할 수 있다.

- 다른 데이터베이스로 변경하는 경우에는
  1. JPetStore-5.0/src/ddl/ 의 스크립트를 사용하여 테이블을 생성하고 데이터를 입력한다.
  2. WEB-INF/classes/properties/database.properties 를 설정한다.
  3. Item.xml에서 getItem의 쿼리를 수정한다. : itemid 가 명확하지 않아 에러가 발생하므로 v.ITEMID로 변경한다.

Oracle SQL Developer - MySQL

- F5로 실행시키면 데이터베이스가 변경되지 않는다.

iBATIS

java.util.Set

A collection that contains no duplicate elements.

=-=> 이게 왜 필요했었지?

Opera

- 에러 콘솔창

테이블 깨짐 방지

글자가 너무 길거나 내용이 많아서 화면이 깨지는 경우가 있다.
서버나 클라이언트 스크립트를 이용해서 내용을 줄이는 방법을 사용하는데
화면단에서 처리하는 방법을 적어 본다.
  1. table-layout:fixed
  2. overflow:hidden
  3. nowrap -or- nobr

text-overflow는 IE에서만 사용가능
text-overflow:ellipsis 는 내용이 길어지면 ... 표시를 보여준다.

(Xenocode의 브라우저로 테스트함, FF3, IE8, IE6, Safari3, Opera9)

운동

수영을 안한지가 꽤 되는데...
집근처 수영장이 리모델링 공사하고 나서 한번도 못 갔다.
목동에 수영장이 많은데 프로야구를 개막하고 나니 야구보느라 일요일 오후 시간을 뺏기고 있다.

회사 동료중 한 명이 미사리, 한강에서 수영을 한다고 한다.
정말 재미있을거 같다.

등산도 오랜 취미중 하나인데 통 가지 못하네.
이번 회사 행사에서 산행을 한다니 꼭 참석해야겠다.

야구는 이제 못할거 같다.

지원이가 조금만 더 크면 수영, 등산, 야구 다 할 수 있을까?
우리 가족이 모두 같이 했으면 좋겠다.

잘못 사용되는 마크업

a 요소는 anchor로써 웹에서 다른 자원을 참조한다는 의미를 갖고 있음.
다른 자원을 참조하지 않으면서도 a 요소를 사용하는 것은 적절하지 않고
또한 시각장애인은 이를 링크라고 오인한다.

다른 자원을 참조한다는 의미를 지니지 않으면서 화면상의 인터페이스만을 조작하고자 하는 목적을 지니고 있을 때에는 button 요소를 사용한다.(링크도 아니고 폼 전송도 아닌 경우 사용)
button 요소는 외관상 input type="submit" 요소와 동일한 모양을 하고 있음.
input 요소와 다른점은 button 요소는 시작 태그와 닫기 태그가 존재하고 내부에 다른 콘텐츠(텍스트, 이미지)를 담을 수 있어 풍부한 표현을 지원하며 form 을 전송하지 않는다.
button 요소의 type="button" 속성을 정확하게 명시해 주지 않으면 form을 전송하도록 기능하는 웹 브라우저도 있으므로 반드시 명시할 것.

인쇄, 뒤로 버튼은 다른 자원을 참조하기 위한 링크가 아니므로 a 요소를 사용하면 의미에 맞지 않습니다.
인쇄를 하거나 히스토리 기능을 하는 뒤로가기 버튼은 button 요소를 사용하여 마크업 해야 합니다.
button 요소는 다른 자원을 참조하지도 않고 form을 전송하지도 않는 경우 즉,  단순한 사용자 인터페이스 조작의 의미를 가질 때 사용합니다.

form에 action 값이 비어 있고 input 요소를 사용해야 할 검색 버튼을 a 요소로 마크업 한것은 이 form이 HTML로 수행 가능한 submit 기능을 자바스크립트에 전적으로 의존해서 수행하고 있다는 것을 보여줍니다.

- 출처
웹 접근성 연구소

iframe을 사용한 글보기가 안보임


모 주간지 이벤트 게시판이 FF에서 위와 같이 보인다.
1. 기껏 objFrame을 가져와 놓고 직접 iframe을 참조하고 있다.
2. getRetry()를 계속 호출한다. 왜?
3. 그리고 iframe을 사용하는 이유는 뭘까?

breadcrumb

Eclipse 3.4의 새로운 기능인 듯.
처음에는 이것때문에 좀 헷갈렸는데... 이름이 breadcrumb이다.
파일명이 보이는 부분이 울퉁불퉁해서 crust같아서 crumb이라고 지었나 보다.



한글 길이

Z건설사 B시스템에서 담당자가 데이터를 입력했는데 변경이 되지 않는 경우가 발생
확인결과 데이터베이스 컬럼 길이를 넘어가는 데이터가 입력되었음.
응용프로그램에서 예외처리를 소리없이(?) 하고 있었음.

그런데 문제는 Javascript에서 데이터 길이를 확인하는데 이런 에러가 발생하였음.[각주:1]

이건 아니잖아

=-=> getByteLength()와 비교, escape() 고찰
  1. 물론 클라이언트단 유효성검사를 우회하는 방법이 많긴 하지만 [본문으로]

svn: PROPFIND request failed

Subversion을 사용하다가 갑자기 에러가 발생했다.

    RA layer request failed
svn: PROPFIND request failed on '/svn/repos_proj/trunk/src/proj1'
svn: PROPFIND of '/svn/repos_proj/trunk/src/proj1': could not connect to server (http://10.20.30.40:8080)

Q사 서브버전 서버에 접속이 되지 않는다.
회사 아이피에서만 접근이 가능하도록 되어 있다.
서브버전 서버가 죽었나?

전날 외근나갔다가 아이피를 변경한게 기억이 났다.
다시 회사 아이피로 설정하니 된다.

Subversion에서 저장소의 변경된 사항 확인하기

$ svn log
------------------------------------------------------------------------
r80 | sys01 | 2009-04-30 18:01:35 +0900 (목, 30 4월 2009) | 1 line

데이터 수정
------------------------------------------------------------------------
r79 | sys01 | 2009-04-30 17:49:46 +0900 (목, 30 4월 2009) | 1 line

사용자 구분
------------------------------------------------------------------------
...
//마지막 리비전이 80?

$ svn log WEB-INF/
------------------------------------------------------------------------
r85 | sys01 | 2009-05-28 15:01:44 +0900 (목, 28 5월 2009) | 1 line

& 치환
------------------------------------------------------------------------
r70 | sys01 | 2009-04-29 16:43:31 +0900 (수, 29 4월 2009) | 1 line

운영 전환을 위한 설정 변경
------------------------------------------------------------------------
...
//85도 있는데... 그럼 모든 디렉토리를 다 뒤져야 하나?

$ svn log -rHEAD -v //86이 최종
------------------------------------------------------------------------
r86 | sys01 | 2009-05-28 16:18:10 +0900 (목, 28 5월 2009) | 1 line
변경된 경로:
   M /trunk/src/proj1/WebContent/WEB-INF/src/framework/util/StringUtil.java
   M /trunk/src/proj1/WebContent/WEB-INF/src/service/XmlServiceImpl.java
   M /trunk/src/proj1/WebContent/core/viewData.jsp

& 처리
------------------------------------------------------------------------

$ svn diff -r85 WEB-INF/src/framework/util/StringUtil.java
Index: WEB-INF/src/framework/util/StringUtil.java
===================================================================
--- WEB-INF/src/framework/util/StringUtil.java   (리비전 85)
+++ WEB-INF/src/framework/util/StringUtil.java   (작업 사본)
@@ -79,7 +79,7 @@
                if (source == null || source.equals("")){
                        return "";
                }
-               String result = source; //.replaceAll("&", "&amp;");
+               String result = source.replaceAll("&", "&amp;");
         result = result.replaceAll("<", "&lt;");
         result = result.replaceAll(">", "&gt;");
         result = result.replaceAll("\"", "&#034;");

Run any browser from the web

- Xenocode Browser Sandbox - Run any browser from the web
- 모든 브라우저를 웹에서 구동하는 Xenocode Browser Sandbox

- 실행파일
http://start-c.xenocode.com/layers/ie6/6-0-0-0__1/ie6.exe
http://start-c.xenocode.com/layers/ie7/7-0-0-0__0/ie7.exe
http://start-c.xenocode.com/layers/ie8/8-0-0-0__0/ie8.exe
http://start-c.xenocode.com/layers/firefox/3-0-3-0__1/firefox.exe
http://start-c.xenocode.com/layers/firefox2/2-0-0-17__2/firefox2.exe
http://start-c.xenocode.com/layers/opera/9-63-0-0__7/opera.exe
http://start-c.xenocode.com/layers/safari/3-2-0-0__2/safari.exe

캬~

- Install multiple versions of IE on your PC

2010-02-22 추가
Xenocode Browser 를 실행시키고 나면 현재 설치된 IE의 속성을 보면 이렇게 깨진다.
설치 전후의 레지스트리를 보면 차이가 많이 난다.

작지만 알찬 서비스 - FilesOverMiles

- FilesOverMiles
-
브라우저 기반 P2P 파일 전송 서비스 :: Files Over Miles

Tinychat과 함꼐 예전에 업무상 웹으로 구현하려고 했던 기능이다.[각주:1]
브라우저를 통해 간단하게 파일을 공유할 수 있는 서비스
2019-02-11 비밀번호를 설정할 수 있다.






  1. 정말 찾아보면 다 나온다. [본문으로]

보이지 않는 게시판 글


D 개발자 포털의 게시판이 FF에서는 보이지 않는다.
소스는 다음과 같다.


document.all 을 쓰고 있다.
IE에서는 개체이름이나 아이디로 직접 접근이 가능하고,
document.all.개체이름 또는 document.all.개체아이디로도 접근이 가능하다.

특이한 점은 보이지 않는 textare에 iframe에 들어갈 내용을 가지고 있다.

겹쳐보이는 레이어(div)


공지사항과 사업부 공지사항이 각각 div로 되어 있어서 클릭하면 해당 div를 보여준다.
IE에서는 제대로 보이는데 FF에서 겹쳐 보인다.

두 div의 visibility가 visible로 되어 있어서 FF에서 겹쳐 보인다.
IE에서는 첫번째 div가 보임.

간단한 페이지를 만들어 테스트를 해보면 IE, FF 둘다 겹쳐 보이는데
이 경우는 div내에 table이 있고 iframe으로 다른 페이지를 가져오는 구조임.

파이어폭스에서 웹페이지 저장시 오류


닫는 form 태그가 hidden 태그 아래에 있는데 저장한뒤 소스를 보면 여는 태그에 붙어 있다.

An Error Occurred

An error has occurred

SAML을 이용한 SSO Service의 구현

- SAML을 이용한 SSO Service의 구현
- https://sites.google.com/a/paygate.net/paygate-open-dev/SAML-SSO

SAML은 웹 브라우저에서의 SSO문제를 해결하기 위해서 OASIS의 연구결과로 탄생하였다.
SAML은 도메인간의 SSO구현을 가능하게하는 XML 표준이다.
OpenSAML