다른 사람들과 협업을 하게 되면서 조금씩 느끼는 점들이 있다.

서로의 코드가 서로에게 영향을 끼치게 되는 상황들 속에서,
서로를 위해 해야할 행동들을 익히게 된다.
20090216_MWC2009_LGE-MS스마트폰공동개발계약체결-
20090216_MWC2009_LGE-MS스마트폰공동개발계약체결- by LGEPR 저작자 표시


각자 만든 메소드들을 참조해서 사용해야하는 경우,
누군가가 수정하거나 추가한 환경설정 파일에 의해서 문제가 생기는 경우등 

SVN에서 소스들을 update 받고 테스트를 실행할 때,
이전에 발생하지 않던 부분들에서 무더기로 올라오는 errors 를
보면서 흠칫하게 된다. 

그리고 찬찬히 그 문제를 들여다보면,
각자 만든 메소드들을 참조해서 사용해야하는 경우,
누군가가 수정하거나 추가한 환경설정 파일에 의해서 문제가 생기는 경우 등
 
사소한 부분에서 생긴 문제라는 것을 확인할 수가 있다.

나는 그러지 말아야지.

소스 update 후 Test,
Test Pass 후 Commit의 생활화
저작자 표시
Posted by 허니몬
오늘 불현듯 '나를 위해서, 다른 이들을 위해서' 할 수 있는 것이 뭘까 고민해봤다.

OpenSource Project를 진행해보자.

내가 유용하게 사용하여 왔던 것들에 대한 보답을 할 때가 된 것 같다.

흠... 그런데 뭘 하면 좋을까??
저작자 표시
Posted by 허니몬
스터디를 사용하는 동안 MyEclipse 라고 하는 이클립스 확장프로그램을 사용했습니다. ^^;
각종 라이브러리를 손쉽게 추가할 수 있는 장점과 이런저런 편의사항들을 제공하는 것에 익숙해지고 나니까
평범한 이클립스를 쓰기는 어렵더군요. ^^;

설치하는 방법은 간단합니다.

먼저 eclipse galileo classic(http://www.eclipse.org/downloads/) 버전을 설치합니다.

http://www.myeclipseide.com/index.php?name=Downloads&req=viewsdownload&sid=36

으로 이동하면, Eclipse Classic 버전에서 MyEclipse Enterprise Workbench 8.5 for Eclipse 3.5.2 를 설치할 수 있는 방법을 알려주고 있다.

Start Eclipse > Select Help > Software Updates > Available Software Tab > Add Site > Enter this URL
http://downloads.myeclipseide.com/downloads/products/eworkbench/galileo/enterprise-stable


위의 경로를 URL 등록해주고 업데이트를 진행한 후에 이클립스를 종료했다가 다시시작하면, Perspective 항목 중에서 MyEclipse Enterprise workbench 버전을 사용할 수 있다. 굳이 MyEclipse 를 다운받고 해킹할 필요는 없다. 그냥 클래식 버전을 받아서 거기서 업데이트받고 실행하는 것도 나쁘지 않은 듯 하다.

안드로이드가 출시되면서, eclipse classic 버전에 대한 수요가 증가했다고 한다.^^
안드로이드에 대한 사람들의 관심이 높아졌다는 사실이겠지.

---------------------------------------------------------------
잘못된 정보를 알려드려 죄송합니다. 설치하고 30일이 지나니... Trial 이라고 알려옵니다. ㅠㅅ-)
저작자 표시
Posted by 허니몬
현재 자바모델링(http://javamodeling.com)에서 스터디에 참가하고 있다.

Struts2를 학습하던 중에 이 글의 제목과 관련된 내용을 만나볼 수가 있다.
위와 같은 문제가 발생을 하는 경우를 접하게 되었다. 가만히 읽어보면, result success 가 정의되지 않았다는 이야기를 내보내고 있다.

이 증상과 관련된 소스는 struts2.xml 과 LoginAction_KJH.java 와 관련이 되어 있다.
정확하게는 스트럿츠에서 사용하는 interface com.opensymphony.xwork2.Action 에 정의된 SUCCESS와 관련이 되어 있다.


struts2.xml
       
<action name="login" class="com.javamodeling.struts2.login.LoginAction_KJH">
       <result name="success">success.jsp</result><!-- return SUCCESS 인데, 찾는건 소문자로 찾네? -->
       <result name="error">failure.jsp</result>
</action>

LoginAction_KJH.java
        public String execute() {
           
            if (this.userid.equals(this.password)) {
                return SUCCESS;
            } else {
                return ERROR;
            }
        }

interface com.opensymphony.xwork2.Action 에서 정의한 SUCCESS를 확인해보자.
항목에서 SUCCESS = "success"로 선언되어있는 것이핵심이다. ^^;

LoginAction_KJH.java 소스에서는 return SUCCESS 를 보면 "SUCCESS"가 리턴될 것 같은 것이 일반 사람들의 마음이다(나만 그럴까?)

strtus.xml 을 보면 <action></action> 태그 사이에 <result name="success">success.jsp<result/>로 적어놓은 것이 보일 것이다. 물론 이렇게 되어 있으면 정상적으로 작동한다. 혹시, <result name="SUCCESS">success.jsp<result/>로 작성되어 있지 않은지 확인해보자.

"SUCCESS"로 되어 있다면 "success"로 수정을 하자. 그런 후에 실행해보자.
정상적으로 실행이 되는 것을 확인해볼 수 있을 것이다.

이런 원인은 JUnit TestCode를 작성하여 확인해볼 수 있었다. excute()에서 리턴되는 값 때문에 생긴문제라는 확신을 하게 되었다.
요즘 TDD(Test Driven Development)에 대해서 공부를 하고 있는데, 이렇게 활용할 수 있다는 발견에 공부한 보람을 느끼며 더 열심히 해야겠다.

"SUCCESS"를 "success"로 변경하면,
정상적으로 실행된 것을 확인해볼 수 있다. 이를 통해서, LoginAction_KJH.java의 execute()에서 return SUCCESSreturn ERROR의 반환값을 확인해볼 수 있다.

이런 인식의 오해를 해결하는 방법이라면

return "SUCCESS" 나 return "success"와 같이 반환되는 값을 정확하게 정의를 해주고 나서
struts.xml 에서 <result name=""></result>에서 name을 정의해주는 것이 아닐까?

저작자 표시
Posted by 허니몬
2010/02/21 19:25

 

  • tools.xml 추가

    tools.xml.jpg

  1. <tools>
        <data type="boolean" key="xhtml" value="true"/>
        <data type="boolean" key="isSimple" value="true"/>
        <data type="number" key="version" value="2.0"/>
        <toolbox scope="request">
            <tool key="toytool" class="ToyTool" restrictTo="index*"/>
        </toolbox>
        <toolbox scope="session">
            <tool key="map" class="java.util.HashMap"/>
        </toolbox>
    </tools>

 

  • web.xml 아래 항목 추가

    web.xml.jpg

  1.    </servlet-mapping>
        <servlet>
        <servlet-name>velocity</servlet-name>
        <servlet-class>org.apache.velocity.tools.view.servlet.VelocityViewServlet</servlet-class>
        <!-- servlet-class 위치가 1.6 버전에서는 보는 것처럼 ...view.servlet... 으로 바뀜 -->
      </servlet>
      <servlet-mapping>
        <servlet-name>velocity</servlet-name>
        <url-pattern>*.vm</url-pattern>
      </servlet-mapping>
      <welcome-file-list>
        <welcome-file>index.vm</welcome-file>
      </welcome-file-list>

 

  •   index.vm

  1. <html>
    <body>
    I'm a velocity template.

    #if( $XHTML )
      #set( $br = "<br />" )
    #else
      #set( $br = "<br>" )
    #end

    $br
    $br

    Here we use a custom tool: $toytool.message

    $br
    $br

    Here we get the date from the DateTool:  $date.medium
    </body>
    </html>

index.vm.jpg

 

 

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

Posted by 허니몬
이전버튼 1 2 3 4 5 ... 13 이전버튼