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

달력

« » 2024.12
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
 

최근에 올라온 글

최근에 달린 댓글

요즘 회사에서 한참 만들었던 양식마법사에 언어팩을 적용하기위해서 Externalize Strings... 기능을 이용하여
열심히 작업하고 있었습니다. 허나.. Anntation 에 있는 스트링들은 검출이 안되는 것이었습니다.

 


위의 검증포멧을 처리하고 싶은데... 방법이 없을까 고민하던 순간 Annotation attribute 값을 static 값으로
처리를 해볼까 해서 다음과 같이 해보았습니다.

이클립스가 친절하게 빨간줄을 그어주십니다.
The value for annotation attribute PropertyDescription.label must be a constant expression


다년간의 통밥을 통해 static final 로 만들고 Exteneralize Strings... 를 돌렸으나...

그냥 static final 로 할 때는 에러가 안났는데 역시 최종적으로 상수가 되어야지만 처리가 가능한 것 이였습니다.


Annotation 을 처리하는 부분에서 attribute 의 값을 key 로 하는 처리를 따로 해주어야 할 것 같습니다. -_ㅜ

오늘까지 완료해야하는데 ㅋㅋㅋㅋ



Posted by 자수씨
, |
[원문] http://code.google.com/p/google-web-toolkit/wiki/WAR_Design_1_6

In 1.5, GWTShellServlet served resources directly off the classpath (for public files), or generated files from a temporary location. This has the advantage of allowing fast refresh and resource updating, and making things "easy". However, it has the downside of not leaving the user with something that's easy to deploy.

We will rectify the deployment issue in 1.6 by standardizing GWT around the "expanded WAR format". The two key principles are:

  1. The result of running the GWT compiler (and possibly some associated tools/build rules) will be an expanded WAR directory structure that can be immediately deployed to a Java Servlet Container compatible web server.
  2. Hosted mode will operate using essentially the same format, in the same directory, to ensure that hosted and compiled web applications behave the same.

In 1.6, we always dump all resources directly into the WAR directory, which the server serves directly out of. We automate in hosted mode what a build process would do. This is triggered by the Hosted Browser actually executing a selection script; the selection script (when running hosted mode) forces a hosted mode link. Subsequent GWT.create() calls may cause incremental links.


GWT 1.6 이 보이길래 GWT 1.6 버전 개발 계획인지 알고 냉큼 떡밥을 물었더니 deploy 와 관련된 내용이네요.

내용을 슬쩍 보아하니 머리속에서는 이해가 되는데 번역이 안되네요 ㅋㅋㅋㅋ

아... 영어...




Posted by 자수씨
, |

오늘 문득 공통 라이브러리를 만들다가 예전에 지나가면서 본 varargs 를 떠올리고 실제로 적용해 보았습니다.
그래서 정리를 살짝~


http://java.sun.com/j2se/1.5.0/docs/guide/language/varargs.html

Varargs

This facility eliminates the need for manually boxing up argument lists into an array when invoking methods that accept variable-length argument lists. Refer to JSR 201.

C 언어에 있는 가변 인수를 자바스타일로 적절하게 변환을 해 놓은 듯 합니다.
(C 언어에서는 ... 과 va_list, va_start, va_arg, va_end 와 같은 매크로를 사용함)


자바에서는 ObjectType... 키워드를 통해서 varargs 를 지원합니다.
아래 코드의 args 인자는 String[] 처럼 사용할 수 있습니다.



우리가 자주사용하는 String 클래스에서 format static method 에서도 이런 varargs 를 사용하고 있습니다.



Sysetm.out.printf() 메소드도 varargs 를 통해 C 스타일의 printf() 함수 처럼 사용할 수 있습니다.



잘만 활용하면 그간 String 배열로 인자를 받는 부분을 저런식으로 받을 수 있어 소스는 조금 더 깔끔해 질 수 있을 것 같습니다.
컴파일러에서 객체 배열로 알아서 변환해 주는가에 대해서는 디컴파일을 해봐야 겠습니다.

나온지도 꽤 된거 같은데 왜 좋은 기능을 모르고 안쓰고 있었을까요 =ㅁ=;;;



Posted by 자수씨
, |
http://www.eclipse.org/rap/

예전에 Zaphod 몽을 통해 알게된 RAP 입니다만, 그닥 땡기지가 않았는데, 오늘 아침 가현옹이 다시 각인을 시켜주었습니다.

RAP는 PDE 기반의 워크스페이스를 웹에서 구현 가능하다는 것이 큰 특징입니다. SWT/JFace API 를 사용하여 개발 가능합니다. 기존에 PDE 기반 개발하시던 분들은 쉽게 AJAX 어플리케이션을 개발 가능하다는 것이겠죠. 단 주어진 컴포넌트로 개발할 때만... (커스텀 컴포넌트는 어딜가나 힘이 듭니다. 데모처럼만 만들꺼면 -_-;;; 요구사항은 항상 늘어나게 됩니다만...)

RAP Architecture
아래 그림을 보면 좀 더 이해하기가 쉬울 것입니다. (저는 왜 이해가 잘 안될까요 ㅋㅋㅋ)


현재 가장 최신 버전은 1.2 M3 Milestone Build 입니다.
이클립스 업데이트 사이트를 통해서 설치를 하였습니다. http://download.eclipse.org/rt/rap/1.2/update



관심이 있으신 분들은 데모 사이트를 참조하시기 바랍니다.

Posted by 자수씨
, |

[GWT] OpenerEvents

Google/GWT / 2008. 11. 23. 18:21

원래 GWT 가 팝업된 윈도우와의 이벤트는 고려를 하지 않고 만들어졌기 때문에 팝업을 주로 사용하는 시스템에서는 팝업 윈도우와 원래 윈도우간의 커뮤니케이션 수단이 필요합니다.



Opener 윈도우에 이벤트 처리 핸들러를 등록해놓고, Popup 윈도우에서 이벤트를 실행시키는 형식입니다.


Posted by 자수씨
, |

FCKEditor for RCP

Eclipse/Plug-ins / 2008. 11. 16. 15:22
[원본문서]  http://vicki.springnote.com/pages/2106692

FCKEditor for RCP

Vicki Yi

Version 0.1 Copyright ⓒ 2008 Vicki Yi

16.11.2008


 

요약

이 문서는 Rich Client Platform (이하 RCP) 에서 FCKEditor 를 이용하여 HTML 문서를 작성할 수 있는 번들에 대한 소개와 사용법을 설명합니다.

 

SWT 에서 제공하는 StyledText 위짓의 텍스트를 HTML로 변환하기에는 추가적인 작업이 많이 필요하기 때문에 이클립스의 EPF 프로젝트의 RichText의 소스를 참고하여 FCKEditor 를 간단하게 사용할 수 있도록 구현을 하였습니다. (FCKEditor 의 라이센스는 해당문서를 참조하시기 바랍니다.)

 

설치하기

테스트환경
  • Eclipse: Ganymede (3.4)
  • JDK: 1.6.0_07
  • Platform: Windows XP

 

설치

아래 참고자료의 kr.co.vicki.plugins.fckeditor.zip 를 내려받아 이클립스 설치 디렉토리에 압축을 풀고 이클립스를 재시작합니다.

해당 플러그인은 다음 플러그인들을 필요로 합니다.

  • org.eclipse.core.runtime
  • org.eclipse.ui
  • com.ibm.icu

 

사용법
  1. 사용하는 플러그인이나 RCP에 Dependencies 목록에 kr.co.vicki.plugins.fckeditor 를 추가합니다.

    1.png

      [그림 1] plugin.xml 의 Dependencies 탭   

     

  2. 해당 플러그인이나 RCP를 실행시키고 Show View 를 통해 FCKEditor Tester View 를 선택합니다.

      2.png

      [그림 2] Eclipse의 Show View

     

  3. 추가된 FCKEditor Tester 는 다음과 같습니다. GetHTML 버튼을 클릭할 경우 본문 내용이 콘솔에 찍히게 됩니다. SetHTML의 버튼의 경우에는 테스트 용으로 붙여놓았습니다.
     3.png

     [그림 3] FCKEditor Tester View

  4. FCKEditor Tester View 의 소스는 다음과 같습니다.
    [코드 1] FCKEditorView.java

    public class FCKEditorView extends ViewPart {

      private FCKEditor editor;

      @Override
      public void createPartControl(Composite parent) {
        editor = new FCKEditor(parent, SWT.NONE);
        initializeToolBar();
      }

      @Override
      public void setFocus() {
        editor.setFocus();
      }
      private void initializeToolBar() {
        IToolBarManager toolBarManager = getViewSite().getActionBars().getToolBarManager();
        toolBarManager.add(new GetHTMLAction());
        toolBarManager.add(new SetHTMLAction());
      }

      class GetHTMLAction extends Action {

        public GetHTMLAction() {
          setText("GetHTML");
        }

        public void run() {
          System.out.println(editor.getHTML());
        }
        
      }

      class SetHTMLAction extends Action {

        public SetHTMLAction() {
          setText("SetHTML");
        }

        public void run() {
          editor.setHTML("Test HTML");
        }
        
      }
    }


  5. 위 코드에서 사용한 FCKEditor 객체를 parent Composite 에 붙이면 RCP에 FCKEditor를 확인할 수 있습니다.

    FCKEditor 의 주요 메소드는 다음과 같습니다.

    String kr.co.vicki.plugins.fckeditor.editor.FCKEditor.getHTML()
    FCKEditor의 HTML을 반환홥니다.

    void kr.co.vicki.plugins.fckeditor.editor.FCKEditor.setHTML(String html)
    FCKEditor의 HTML을 설정합니다.

    Parameters: html

     

  6. FCKEditor 의 툴바를 변경하기 위해서는 플러그인 내부의 fckeditor 디렉토리에 있는 custom.config.js와 fckconfig.js 파일을 수정합니다.
    수정할 설정은 해당페이지를 참고합니다.

     4.png
      [그림 4] FCKEditor config 파일

 

 

문제점/개선사항

  • FCKEditor 를 추가할 경우 해당 위짓에 세로 스크롤바가 생김
  • 툴바를 JAVA 소스 내에서 설정할 수 있도록 수정 

 

관련자료

  1. kr.co.vicki.plugins.fckeditor.zip FCKEditor 번들 플러그인
  2. http://www.eclipse.org/epf/ Eclipse Process Framework Proejct
  3. http://www.fckeditor.net/ FCKeditor
  4. http://en.wikipedia.org/wiki/RCP 위키피디아 RCP
  5. http://www.java2s.com/Tutorial/Java/0280__SWT/BrowserqueryDOMnodevalue.htm Browser: query DOM node value

 

 

이 글은 스프링노트에서 작성되었습니다.

Posted by 자수씨
, |

CSS 로 큰 이미지를 쪼각내주는 CSS Sprites 가 간만에 업데이트 하였습니다.

[업데이트 내역]
ㅁ CSS Sprites Viewer 제공
  - 해당 css 에 어떤 이미지 아이콘을 사용할 수 있는지 확인해주는 Viewer


딸랑 한개 바꿨습니다. ㅋㅋㅋㅋ



Posted by 자수씨
, |

스프링프레임워크에서 제공해주는 SimpleJaxWsServiceExporter 로는 한 컨텍스트 내에서 한 개의 서비스밖에
배포를 못하는 것으로 확인되었습니다. (저의 테스트 결과로는...)

그래서 스프링쪽 클래스를 참고해서 다중 Exporter 를 만들어보았습니다.



음... 이제는 실제로 배포할 경우 baseAddress 에 대해서 고민 좀 해야할 것 같습니다.

Posted by 자수씨
, |

첨부파일을 JAX-WS 에서는 어떻게 넘길가가 궁금해서 한번 도전해보았습니다.
무모한 도전의 결과는 무한삽질의 반복이...
여튼 어느정도 성공을 한 듯 합니다. ㅋㅋㅋㅋ

ㅁ Server Side
kr/co/vicki/webservices/conf/uploadWebservicesContext.xml


WEB-INF/web.xml


kr.co.vicki.webservices.webservice.UploadWebService.java


  - @MTOM: binary attachment 전송을 위한 어노테이션
  - @SOAPBinding(style = SOAPBinding.Style.RPC)... 이건 무슨 말인지 모르겠습니다. 
    아래와 같은 설명이 어딘가에 있더라구요... 해석이 딸리므로... 읽으시는 분께 맡기겠습니다.
    그러나 해당 어노테이션이 정의되어 있지 않으면 클라이언트쪽에서 제너레이션 된 메소드의 파라미터가
    byte[] 이 아닌 DataHandler 가 되므로 일단 어노테이션을 위와 같이 설정합니다.
No, this is specified by the SOAPBinding annotation on the service class. Notice this in the original post above:

@SOAPBinding(style = SOAPBinding.Style.RPC)

This is telling wsgen that this is an rpc/literal service. A document/literal (doc/lit) service is specified thusly:

@SOAPBinding(style = SOAPBinding.Style.DOCUMENT)

Actually, things are a little more complicated. This is actually specifying a doc/lit/wrapped service, meaning that the SOAP message body can contain multiple parameters. By contrast, in a doc/lit/bare service, the SOAP message body can contain only one parameter. For all the gory details, see the Annotations section of the JAX-WS User's Guide. 




ㅁ Client Side
kr/co/vicki/client/conf/webservicesContext.xml



kr/co/vicki/client/Client.java


서버의 public void fileUpload(String filename, DataHandler handler) 메소드는
클라이언트에서 public void fileUpload(String filename, byte[] arg1) 로 제너레이션 됩니다.
파일을 byte[] 로 변환하여 파일명과 함께 넘겨주게 되면 서버쪽에서 inputStream 으로 접근이 가능하게 됩니다.

첨부파일을 7KB와 4MB, 20MB 로 테스트 해본결과 20MB 는 힙 메모리 부족이라는 익센션을 날려주었습니다.
JAX-WS User Guide를 보면 용량 제한하는 어노테이션도 보이던데 테스트는 해보지 못했습니다.

이걸 해보며서 알게된 사항은 org.springframework.remoting.jaxws.SimpleJaxWsServiceExporter 이놈은 한 컨텍스트에
한개의 웹서비스를 Export 해주는 것 같습니다. 크흑..

웹서비스는 재밌습니다?

[참고자료]
JAX-WS User Guide
  - https://jax-ws.dev.java.net/guide/Large_Attachments.html
  - https://jax-ws.dev.java.net/guide/Binary_Attachments.html
  - https://jax-ws.dev.java.net/guide/Creating_a_MTOM_Web_Service.html
java.net Forums
  - http://forums.java.net/jive/thread.jspa?threadID=25614

Posted by 자수씨
, |

지난번에 날림으로 만들었던 Spring Framework 를 이용해서 JAX-WS 를 배포하고 wsdl 을 이용하여 클라이언트를 구성하는 것을
스크린캐스트로 만들어 보았습니다.

역시 준비 없이 만든거라 말을 더듬습니다. ㅋㅋㅋㅋ 그리고 말도 안되는 이야기를 또 뱉게되네요...
스크린캐스트는 대본이 필요한 것 같습니다.

Video URL : http://www.screencast.com/t/akiF4zk8





[소스]

위 첨부파일은 lib 폴더의 데이터를 지우고 압축한 데이터입니다.

Posted by 자수씨
, |

글 보관함

최근에 받은 트랙백