Whiteship's Note


Semina Helper v0.5

모하니?/Coding : 2007.04.06 00:50


초간단 세미나 참가 신청 프로그램입니다.

어떤 세미나에 참석 신청을 할 수 있고 참석 하는 인원을 파악하고 이미 신청했는지 안했는지 확인할 수 있도록 만들려고 합니다.
0123456

현재 구현한 기능
1. 참가 신청
2. 참가 신청 확인

구현 또는 수정 해야 할 기능
1. 이미 입력된 email로 신청을 하려고 할 경우 에러 메시지 출력.
2. 전체 참가 신청 명단 확인.
3. 현재 몇 명이 참가 신청을 했는지 알 수 있는 전광판.
4. 인원 수 제한이 있다면 순번을 출력해주고 정해진 인원수 이하로는 에러 메시지 출력.

'모하니? > Coding' 카테고리의 다른 글

태그파일 멋쟁이!  (2) 2007.04.23
문자열 생성기 prototype  (0) 2007.04.18
문자열 생성기  (0) 2007.04.18
Really easy field validation 사용하기  (4) 2007.04.18
Semina Helper v0.7  (2) 2007.04.13
Semina Helper v0.5  (0) 2007.04.06
아 이런 바보..ㅠ.ㅠ  (2) 2007.03.31
Report Validator v1.0  (0) 2007.03.29
JAR, WAR 에피소드 해결 방법  (0) 2007.03.29
JAR, WAR 에피소드  (2) 2007.03.29
Report Validator 개선 사항  (0) 2007.03.29
top

Write a comment.


아 이런 바보..ㅠ.ㅠ

모하니?/Coding : 2007.03.31 10:28


배포가 안되서 엄청 삽질을 했는데..

문제의 원인은 배포할 곳과 개발 환경의 JDK 버젼이 맞지 않아서였습니다.

6.0에서 String 클래스에 isEmpty()를 추가했더군요. 원래 있는 건 줄알고 이클립스의 자동완성 기능에서 보이길래 사용한건데.. 그게 말썽을 부렸습니다.

에러라도 떨어지면...금방 찾았을 텐데.. 아무런 에러도 없고 폼이 넘어가지 않기만 하기 때문에 원인을 찾는게 힘들었습니다. 흐흐..

개발 환경과 배포 환경의 버젼을 맞춰야 한다는 기본적인걸..ㅠ.ㅠ 이렇게 느끼게 되네요.

'모하니? > Coding' 카테고리의 다른 글

문자열 생성기 prototype  (0) 2007.04.18
문자열 생성기  (0) 2007.04.18
Really easy field validation 사용하기  (4) 2007.04.18
Semina Helper v0.7  (2) 2007.04.13
Semina Helper v0.5  (0) 2007.04.06
아 이런 바보..ㅠ.ㅠ  (2) 2007.03.31
Report Validator v1.0  (0) 2007.03.29
JAR, WAR 에피소드 해결 방법  (0) 2007.03.29
JAR, WAR 에피소드  (2) 2007.03.29
Report Validator 개선 사항  (0) 2007.03.29
까다로운 녀석..ㅠ.ㅠ  (0) 2007.03.27
top

TAG 배포
  1. Favicon of http://decoder.tistory.com BlogIcon decoder 2007.03.31 10:40 PERM. MOD/DEL REPLY

    저도 비슷한 경험을.. ^^;
    http://decoder.tistory.com/66

    Favicon of http://whiteship.tistory.com BlogIcon 기선 2007.03.31 10:42 PERM MOD/DEL

    ㅋㅋㅋ그렇네요.
    정말 배포가 아주 가지가지로 고생을 시킵니다. 자주 하는 일이 아니다 보니 더욱 그런듯..

Write a comment.


Report Validator v1.0

모하니?/Coding : 2007.03.29 21:39


후아~ 드디어 완성!
사용자 삽입 이미지
사용자 삽입 이미지
공짜 이미지 파일 있는 곳 : http://www.garamart.com/
이미지 패러디 사이트 : http://imageparody.com

API를 6개나 붙였더니 다소 느리네요. 검색 결과 읽어 오는 수를 줄이면 조금 빨라질지도 모르겠네요. 흠냐.. 장난감 만드는 기분으로 재밌게 만들었습니다.

JSTL은 리스트에서 차례대로 꺼내서 찍어 줄 때 편한데.. 맵에 들어있는 건 어떻게 차례대로 읽어서 찍어줄 방법이 없을런지...

'모하니? > Coding' 카테고리의 다른 글

문자열 생성기  (0) 2007.04.18
Really easy field validation 사용하기  (4) 2007.04.18
Semina Helper v0.7  (2) 2007.04.13
Semina Helper v0.5  (0) 2007.04.06
아 이런 바보..ㅠ.ㅠ  (2) 2007.03.31
Report Validator v1.0  (0) 2007.03.29
JAR, WAR 에피소드 해결 방법  (0) 2007.03.29
JAR, WAR 에피소드  (2) 2007.03.29
Report Validator 개선 사항  (0) 2007.03.29
까다로운 녀석..ㅠ.ㅠ  (0) 2007.03.27
Report Validator v0.9  (2) 2007.03.26
top

Write a comment.


JAR, WAR 에피소드 해결 방법

모하니?/Coding : 2007.03.29 14:37


빌드 도구를 사용할 수 있겠지만...다행히도 이 문제를 해결하기 위해 빌드 툴 사용법을 찾아 볼 만큼의 노고는 필요가 없을 것 같네여. :)

두 개로 나뉘어 있던 프로젝트(JAR와 WAR로)를 하나로 합치든가... 아니면 WAR 프로젝트의 빌드패스에 JAR 프로젝트를 잡아 주면 되네요.

사용자 삽입 이미지

이렇게 잡아 주고 나니 한결 편해진 기분입니다. 흐흐흐

근데 왜 JAR와 WAR로 나눈걸까요? - spring.jar나 다른 jar파일들을 보면 컴포넌트 같은 것으로 여러 프로젝트에 끼워서 사용할 수 있는데.. 그렇다면 지금 개발 중인 프로젝트의 jar 프로젝트가 컴포넌트처럼 다른 프로젝트에서(classicMania WAR를 제외한) 사용할 수 있는 것인가? 혹시 classicMania에서만 사용할 것이라면 굳이 나눌 필요가 있는 것인가? 개발 할 때 오히려 번거로움을 발생 시키는 이 구분이.. 필요한 것인지 생각해보게 됐습니다. => 재사용할 컴포넌트라면 나누고, 아니면 WAR에서 전부 개발.(해도..나중에 jar로 따로 뺄 수도 있으니...흠..)이게 현재까지 드는 생각입니다.

'모하니? > Coding' 카테고리의 다른 글

Really easy field validation 사용하기  (4) 2007.04.18
Semina Helper v0.7  (2) 2007.04.13
Semina Helper v0.5  (0) 2007.04.06
아 이런 바보..ㅠ.ㅠ  (2) 2007.03.31
Report Validator v1.0  (0) 2007.03.29
JAR, WAR 에피소드 해결 방법  (0) 2007.03.29
JAR, WAR 에피소드  (2) 2007.03.29
Report Validator 개선 사항  (0) 2007.03.29
까다로운 녀석..ㅠ.ㅠ  (0) 2007.03.27
Report Validator v0.9  (2) 2007.03.26
Report Validator v0.5  (0) 2007.03.26
top

TAG JAR, war

Write a comment.


JAR, WAR 에피소드

모하니?/Coding : 2007.03.29 11:30


사용자 삽입 이미지

이렇게 두 개의 프로젝트가 있습니다. 아래 있는 녀석이 그냥 java 프롲게트이고 위에 있는 녀석이 war로 웹 프로젝트입니다.

문제는 아래있는 프로젝트의 src에 있는 파일들을 jar로 묶어서 웹 프로젝트의 web/WEB-INF/lib에 넣어 줄 때 발생했습니다.

사용자 삽입 이미지
classicManiaComponent_v0.1.jar로 넣어 뒀는데요.

문제는..jar프로젝트가 계속해서 수정, 개발이 되는데 이걸 어떻게 war에 반영시키느냐 입니다.

현재 사용하고 있는 방법은 다소 복잡한 룰을 필요로 합니다.
1. war 프로젝트에서 개발을 할 때는 jar 프로젝트를 업데이트 받은 뒤 jar로 묶어서 war에 넣어 준 다음에 해야 합니다.
2. jar 파일을 war 프로젝트에 넣기 전에는 기존에 있던 jar파일을 삭제 한 뒤에 넣어 줘야 합니다. - 덮어쓰기가 제대로 안되서 그런지 다소 황당한 경우가 생겼었습니다.(1시간 뺏겼습니다.ㅠ.ㅠ)

Ant를 잘 쓰면 이런 귀찮은 일을 줄일 수 있을까요?

'모하니? > Coding' 카테고리의 다른 글

Semina Helper v0.7  (2) 2007.04.13
Semina Helper v0.5  (0) 2007.04.06
아 이런 바보..ㅠ.ㅠ  (2) 2007.03.31
Report Validator v1.0  (0) 2007.03.29
JAR, WAR 에피소드 해결 방법  (0) 2007.03.29
JAR, WAR 에피소드  (2) 2007.03.29
Report Validator 개선 사항  (0) 2007.03.29
까다로운 녀석..ㅠ.ㅠ  (0) 2007.03.27
Report Validator v0.9  (2) 2007.03.26
Report Validator v0.5  (0) 2007.03.26
아 답답해;;  (2) 2007.03.26
top

  1. Favicon of http://seal.tistory.com BlogIcon 물개 2007.03.29 13:12 PERM. MOD/DEL REPLY

    물론입니다. 그런 귀찮음을 방지하려고 ant나 maven, cruise control 등이 나온거니까요. :) target 폴더를 WEB-INF/classes로 설정해서 간단히 해결하지 않은 걸 보면 classMania와 classMania 컴포넌트 프로젝트 2개가 분리되어 있나 보네요. 프로젝트 자체를 하나로 합치는게 좋지 않을까 하는 생각이 듭니다.

    Favicon of http://whiteship.tistory.com BlogIcon 기선 2007.03.29 14:16 PERM MOD/DEL

    넵.. 현재 두 개의 프로젝트로 나뉘어져 있습니다.
    말씀해주신대로 하나의 프로젝트로 합치거나 빌드패스에서 프로젝트를 추가해봐야겠습니다. 감사합니다~ :)

Write a comment.


Report Validator 개선 사항

모하니?/Coding : 2007.03.29 01:42


검색 API를 여러 개 붙이는 것이 생각보다 쉽지 않더군요. 이 말은 확장이 불편하다는 거고 다시 또 이 말은 중복된 코드로 인해 코드 끼리 의존성이 심해졌다는 것입니다.

소스 코드 문제점

현재까지 크게 두 부분이 문제가 됩니다.
public static int search(Sentence sentence) {
        int totalResult = useNaverAPI(sentence, "blog")
            + useNaverAPI(sentence, "webkr")
            + useNaverAPI(sentence, "kin")
            + useDaumAPI(sentence, "blog");
        sentence.setPoint(totalResult);
        return totalResult;
    }

이런식으로 API를 사용하는 메소드를 호출하여 사용하게 되는데 useNaverAPI와 useDaumAPI는 요청을 보내는 문자열만 다를 뿐 하는 일은 완전히 같기 떄문에 엄청난 양의 중복된 코드를 발생시켰습니다.

이것과 더불어 Sentence 객체를 보면 다음과 같이 만들어져 있습니다.
public class Sentence {
    private String line;

    private int copyLebel;

    private String naverBlogURL;

    private String naverWebURL;

    private String naverKnowURL;

    private String daumBlogURL;

어처구니가 없는거죠.ㅋㅋ Map을 쓰면 되는데 API 붙일 때 마다 속성을 하나씩 추가 해야 된다니.. 왜 naverWebURL 속성을 만들 때 미쳐 중복을 제거할 생각을 못했을까요..ㅠ.ㅠ 아니면 생각은 했지만 Map을 쓰는게 익숙하지 않아서 못본척 하고 넘어려는 자아가 공부하려는 자아를 속였을 수 있습니다. 그리고는 마치 몰랐었던 척..하는...나쁜 기선.

화면의 문제점

사용자 삽입 이미지
첫 화면 입니다. 간단한 메뉴얼이 눈에 걸리적 거립니다. 좀 더 이쁘게 보여줄 수 없을런지.ㅠ.ㅠ 전체적인 색은 제가 좋아하는 파란색과 하얀색 계열로 바꿔야 겠습니다.

사용자 삽입 이미지
흠..텍스트 위주의 화면..저도 이쁜 아이콘과 그림으로 꾸미고 싶습니다. 표는 AJAX로 멋지게 "전체 결과 보기" 같은 탭을 열어 주면 쫙~ 펼처지도록 하고 싶...지...만... 31일까진 무리라는거.. CSS는 역시..색을 좀 조절하고.. 테이블 모양도 좀 더 괜찮은 모양으로 바꿔줄까 합니다.

화면 코드 문제점

jsp 파일 두 개에서도 헤더와 푸터가 중복되어 나타나고 있는데요. 그걸 include 인가를 사용해서 제거 해야겠습니다.

그리고 "있다" "없다"를 판단해서 찍어주는 JSTL 코드 부분이 계속 반복해서 나타납니다. 이건 태그파일을 사용해서 코드를 간결하게 줄일 수 있겠습니다.


'모하니? > Coding' 카테고리의 다른 글

Semina Helper v0.5  (0) 2007.04.06
아 이런 바보..ㅠ.ㅠ  (2) 2007.03.31
Report Validator v1.0  (0) 2007.03.29
JAR, WAR 에피소드 해결 방법  (0) 2007.03.29
JAR, WAR 에피소드  (2) 2007.03.29
Report Validator 개선 사항  (0) 2007.03.29
까다로운 녀석..ㅠ.ㅠ  (0) 2007.03.27
Report Validator v0.9  (2) 2007.03.26
Report Validator v0.5  (0) 2007.03.26
아 답답해;;  (2) 2007.03.26
테스트를 꼭 실행 해야 하는 시점  (0) 2007.03.23
top

Write a comment.


까다로운 녀석..ㅠ.ㅠ

모하니?/Coding : 2007.03.27 08:44


    <table border="1">
        <tr>
            <th>순번</th>
            <th>책</th>
            <th>신청자</th>
        </tr>
    <c:forEach items="${list}" var="item">
        <tr>
            <td>${item.num}</td>
            <td><a href="${item.link}">${item.bookName}</a></td>
            <td>${item.owners}</td>
        </tr>
    </c:forEach>
    </table>

이녀석을 태그 파일을 사용하여 다음과 같은 인터페이스로 표현하려고 합니다.

<ajn:table item="list>
    <ajn:column title="순번" property="num" />
    <ajn:column title="책" property="bookName" link="link" />
    <ajn:column title="신청자" property="owners" />
</ajn:table>

하지만 발생한 버그는 잡힐 줄을 모르고 현재는... 태그 파일 만들기 직전인 상태로 아래와 같습니다.

<table border="1">
    <c:set var="count" value="0" scope="session" />
    <c:forEach items="${list}" var="item">
        <c:choose>
        <c:when test="${count == 0}">
        <tr>
            <th>순번</th>
            <th>책</th>
            <th>신청자</th>
        </tr>
        <c:remove var="count" scope="session"/>
        </c:when>
        <c:when test="${count == null}">
        <tr>
            <td>${item.num}</td>
            <td><a href="${item.link}">${item.bookName}</a></td>
            <td>${item.owners}</td>
        </tr>
        </c:when>
        </c:choose>
    </c:forEach>
</table>

for:each 문안에 모두 들어가게 하고 분기문을 사용해서 첫번째에는 title을 찍게 하고 나머진 프로퍼티를 찍는데 link가 있는 경우에는 link를 달아주는 간단한 jstl입니다.

문제는..루프를 아이탬의 갯수 만큼 돌기 때문에 첫번째 아이탬을 출력하는 대신 타이틀을 출력하고 두번째, 세번째 아이탬을 출력합니다. 따라서 결과는...

사용자 삽입 이미지
이제 버그의 끝이 슬슬 보이기 시작하는데.. 엄청나게 삽질하면서 JSTL 사용에 익숙해져 가고 있는 모습으로 위안을 삼고 있습니다.

'모하니? > Coding' 카테고리의 다른 글

아 이런 바보..ㅠ.ㅠ  (2) 2007.03.31
Report Validator v1.0  (0) 2007.03.29
JAR, WAR 에피소드 해결 방법  (0) 2007.03.29
JAR, WAR 에피소드  (2) 2007.03.29
Report Validator 개선 사항  (0) 2007.03.29
까다로운 녀석..ㅠ.ㅠ  (0) 2007.03.27
Report Validator v0.9  (2) 2007.03.26
Report Validator v0.5  (0) 2007.03.26
아 답답해;;  (2) 2007.03.26
테스트를 꼭 실행 해야 하는 시점  (0) 2007.03.23
Spring + Hibernate 프로젝트 베이스  (0) 2007.03.16
top

TAG jstl

Write a comment.


Report Validator v0.9

모하니?/Coding : 2007.03.26 21:11


흠냐.. 헤드 퍼스트에 있는 css파일 추가해서 스타일좀 주고, 어느 API에서 검색이 됐는지 확인하는 기능을 추가했고 검색이 된 경우에는 링크를 달아서 직접 확인할 수 있도록 했습니다.

사용자 삽입 이미지
먼저 리포트 검사기에 접속하신뒤~

사용자 삽입 이미지
검사할 부분을 복사한뒤..

사용자 삽입 이미지
붙여 넣어 주시고~ submit을 클릭합니다.

사용자 삽입 이미지
그럼 총 몇 개의 문장에서 몇 개가 검색이 됐으며 검색 포인트(높을 수록 안좋겠죠.)가 몇 인지 보여줍니다.

사용자 삽입 이미지
"있다"를 클릭하면 위와 같이 직접 확인 할 수 있습니다.

  • 개발 시간  : 10시간
  • 사용한 것 : Eclipse, Java 6.0, Tomcat 5.5, SpringMVC
  • 문제점
    1.문자열을 적당히 쪼개는 기술이 부족해서 화면에도 보시다시피 이상하게 짤리거나 매우 길게 짤려서 에러가 납니다.
    2. 코드가 민망입니다. 차후 리팩토링 학습하는데 사용해야겠습니다.
    3. 화면이 민망입니다. CSS를 제대로 공부한 적도 없고 별로 그쪽에 취미도 없기 때문에 그냥 대강 썼습니다.
    4. 코드가 민망한 건 둘째 치고 성능에 문제가 있습니다. 엄청 느리죠. 샘플 데이타를 저정도만 넣은 것 역시 다 이유가 있는 거랍니다.
  • 느낀점
    1. XML -> 객체로 만들어 주는게 있으면 좋겠다.
    2. 정규 표현식을 알아 두면 유용하겠다.
    3. JSTL 조금(<c:if> 사용법)
    4. SimpleFormController 는 매우 편하다.

'모하니? > Coding' 카테고리의 다른 글

Report Validator v1.0  (0) 2007.03.29
JAR, WAR 에피소드 해결 방법  (0) 2007.03.29
JAR, WAR 에피소드  (2) 2007.03.29
Report Validator 개선 사항  (0) 2007.03.29
까다로운 녀석..ㅠ.ㅠ  (0) 2007.03.27
Report Validator v0.9  (2) 2007.03.26
Report Validator v0.5  (0) 2007.03.26
아 답답해;;  (2) 2007.03.26
테스트를 꼭 실행 해야 하는 시점  (0) 2007.03.23
Spring + Hibernate 프로젝트 베이스  (0) 2007.03.16
JDBC Connection Properties  (0) 2007.03.16
top

  1. Favicon of http://blog.naver.com/ha2va BlogIcon 학생 2007.03.27 10:51 PERM. MOD/DEL REPLY

    이야~ 계획대로 진행하고 계시네요^^
    조심하세요... 너무 잘 만들어 놓으면 친구들한테 미움받으시겠습니다 ㅎㅎ
    정규 표현식.. 저도 아직 책만 사두고 제대로 보진못했지만 업무에서도 항상 필요한 곳이
    자주 튀어나오네요. 미리 공부해두시면 저처럼 늙어서 후회하진 않으실꺼같아요^^
    좋은 하루되세요.

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2007.03.27 16:54 신고 PERM MOD/DEL

    잘 만들어서 교수님들께 팔아야죠.ㅋㅋ
    네 정규표현식 알아 두면 개발할 때 유용하게 쓰일 곳이 많을 것 같더라구요. 언제가~ 날 잡고 공부를 해야겠습니다.

Write a comment.


Report Validator v0.5

모하니?/Coding : 2007.03.26 14:35


현재 네이버 API 중에서 지식in, 웹문서, 블로그 세가지 API를 사용하여 개발 한 상태 입니다. 여기에 다음 API도 편하게 붙일 수 있기 때문에 여력이 되는데로 API는 붙이면 될 것 같습니다.

돌아가는 형태는 매우 간단합니다. 화면에 검사 할 내용을 넣어 주고 버튼을 클릭하면 문장 별로 인터넷에서 복사 했을 가능성을 수치로 보여줍니다.

"인터넷에서 복사 했을 가능성"을 측정하는 방법으로는 원래 총 검색 결과의 갯수로 판단을 하려고 했지만 검색 결과의 퀄리티에 비해 총 검색 결과 수가 터무니 없이 크기 때문에 방법을 바꿔서 제일 유사도가 높은 검색 결과 10개 중에서 검색한 문장과 일치하는 부분이 있으면 1 포인트를 올리는 방법을 사용했습니다. 따라서 높은 포인트의 문장일수록 복사했을 가능성이 높은 문자열입니다.

현재는 3개의 API에서 검색을 했기 때문에 3 포인트를 기록하는 문장은 복사했더나 짧고 단순한 문장의 경우엔 흔히 검색 가능한 문장으로 볼 수 있습니다.
사용자 삽입 이미지
버튼을 클릭하면..
사용자 삽입 이미지
이걸 언제 꾸미나...

'모하니? > Coding' 카테고리의 다른 글

JAR, WAR 에피소드 해결 방법  (0) 2007.03.29
JAR, WAR 에피소드  (2) 2007.03.29
Report Validator 개선 사항  (0) 2007.03.29
까다로운 녀석..ㅠ.ㅠ  (0) 2007.03.27
Report Validator v0.9  (2) 2007.03.26
Report Validator v0.5  (0) 2007.03.26
아 답답해;;  (2) 2007.03.26
테스트를 꼭 실행 해야 하는 시점  (0) 2007.03.23
Spring + Hibernate 프로젝트 베이스  (0) 2007.03.16
JDBC Connection Properties  (0) 2007.03.16
만들고 싶은게 너무 많아요.  (6) 2007.03.09
top

Write a comment.


아 답답해;;

모하니?/Coding : 2007.03.26 13:29


오픈 API로 검색하는 거랑 실제 검색창에서 검색하는 거랑 왜 결과가 다르죠???

"이런 경우 BeanCurrentlyInCreationException 이 발생한다고 합니다."

이 문장을 네이버 웹에서 검색하면 제 블로그에 어떤 글이 뜹니다. 제대로 검색이 된거죠.
사용자 삽입 이미지
그럼 오픈API 사용해서 검색한 XML 파일을 보죠.

오픈API를 사용하는 가장 간단한 방법은 URL에 쳐보는거죠.

네이버 블로그 검색 API 사용하는 URL은 다음과 같습니다.

http://openapi.naver.com/search?key=1898d436d8cf2f2b9b380aa157ae756b&query=이런 경우 BeanCurrentlyInCreationException 이 발생한다고 합니다.&display=10&start=1&target=blog&sort=sim

검색 문자열의 인코딩 문제로 다음과 같은 에러가 납니다.

사용자 삽입 이미지
그럼 복잡하지만 java로 어쩌구 저쩌구 해서 String 문자열로 받아 오면 됩니다. 받아온 XML을 봤습니다.

사용자 삽입 이미지

웹에서 검색할 때 두번째 위치에 있던 검색 결과가 가장 위로 올라와있고 제 블로그의 내용은 검색되지 않았습니다.

대체 뭘까요!... 소팅을 sim 과 data로 바꿔 보아도 검색결과가 나오지 않네요..흠냐..

'모하니? > Coding' 카테고리의 다른 글

JAR, WAR 에피소드  (2) 2007.03.29
Report Validator 개선 사항  (0) 2007.03.29
까다로운 녀석..ㅠ.ㅠ  (0) 2007.03.27
Report Validator v0.9  (2) 2007.03.26
Report Validator v0.5  (0) 2007.03.26
아 답답해;;  (2) 2007.03.26
테스트를 꼭 실행 해야 하는 시점  (0) 2007.03.23
Spring + Hibernate 프로젝트 베이스  (0) 2007.03.16
JDBC Connection Properties  (0) 2007.03.16
만들고 싶은게 너무 많아요.  (6) 2007.03.09
레포트 검사기  (2) 2007.03.09
top

  1. 근스 2007.03.26 14:56 PERM. MOD/DEL REPLY

    혹시 이런[공백]경우~~~ 에서 이런만 제대로 넘어가서 그런것이 아닐가요
    urlencoding을 해서 넘겨보시면 어떻게 될까요

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2007.03.26 15:07 신고 PERM MOD/DEL

    requestURL.append(URLEncoder.encode(sentence, "UTF-8";));
    이렇게 했기 때문에 인코딩 문제는 아닌거 같네요..흠..

Write a comment.


테스트를 꼭 실행 해야 하는 시점

모하니?/Coding : 2007.03.23 00:22


1. 개발을 하기 전.
- 프로젝트를 업데이트 받고 현재 프로젝트에 있는 기존의 테스트들이 에러가 없이 잘 돌아가는 상태에서 개발을 해야합니다.

2. 개발을 하는 도중.
- 새로 개발하고 있는 코드를 위해 작성한 테스트가 녹색불이 들어올 때까지 코드에 변경을 한 뒤에 계속 실행합니다.

3. 개발 중에 환경이 바꼈을 때
- 이전 글에서 발생했던 에러를 잡는데 시간이 오래 걸린 이유가 바로 이 때 테스트 코드를 실행하지 않았기 때문이였습니다.
- 사용중인 컴퓨터가 다르고 SVN을 통해 같은 소스코드로 작업을 한다고 하더라도 희박하겠지만 DB는 다를 수 있더군요.[각주:1]
  1. 모델의 속성을 수정 한 후여서 이런일이 발생했었습니다. [본문으로]

'모하니? > Coding' 카테고리의 다른 글

Report Validator 개선 사항  (0) 2007.03.29
까다로운 녀석..ㅠ.ㅠ  (0) 2007.03.27
Report Validator v0.9  (2) 2007.03.26
Report Validator v0.5  (0) 2007.03.26
아 답답해;;  (2) 2007.03.26
테스트를 꼭 실행 해야 하는 시점  (0) 2007.03.23
Spring + Hibernate 프로젝트 베이스  (0) 2007.03.16
JDBC Connection Properties  (0) 2007.03.16
만들고 싶은게 너무 많아요.  (6) 2007.03.09
레포트 검사기  (2) 2007.03.09
랜덤 리스트 축출기 v1.0  (0) 2007.03.08
top

Write a comment.


Spring + Hibernate 프로젝트 베이스

모하니?/Coding : 2007.03.16 21:26


사용자 삽입 이미지
Spring 과 Hibernate 로 모델 부분을 구현하여 jar로 묶어서 나중에 war에 넣을 부분을 코딩할 프로젝트 베이스 입니다.

어노테이션 기반으로 퍼시스턴스를 표현할 것입니다.
public class MemberTest {
    @Test public void persistence(){
        ApplicationContext ac = new ClassPathXmlApplicationContext(
                new String[] { "applicationContext-dao.xml",
                        "applicationContext-jdbc-datasource.xml" });
        SessionFactory sf = (SessionFactory) ac.getBean("sessionFactory");

        Session s = sf.openSession();
        Transaction tx = s.beginTransaction();

        Member keesun = new Member();
        keesun.setName("기선");
        keesun.setAccount("whiteship");
        keesun.setPassword("pass");

        s.save(keesun);
        tx.commit();
        s.close();

        assertNotNull(keesun.getId());
    }
}

위와 같은 예제 코드가 하나 들어있으며 DB 설정은 database.properties 에서 적절하게 바꿔주시면 됩니다. hibernate.dialect 에 넣어야 할 값은 여기를 참조해서 사용하시는 DB에 맞게 바꿔주시면 됩니다.


나중에 war 프로젝트 베이스도 만들면 올려둬야쥐~

'모하니? > Coding' 카테고리의 다른 글

까다로운 녀석..ㅠ.ㅠ  (0) 2007.03.27
Report Validator v0.9  (2) 2007.03.26
Report Validator v0.5  (0) 2007.03.26
아 답답해;;  (2) 2007.03.26
테스트를 꼭 실행 해야 하는 시점  (0) 2007.03.23
Spring + Hibernate 프로젝트 베이스  (0) 2007.03.16
JDBC Connection Properties  (0) 2007.03.16
만들고 싶은게 너무 많아요.  (6) 2007.03.09
레포트 검사기  (2) 2007.03.09
랜덤 리스트 축출기 v1.0  (0) 2007.03.08
Tdd Helper 사용 중  (0) 2007.03.07
top

Write a comment.


JDBC Connection Properties

모하니?/Coding : 2007.03.16 20:53


매번 생각이 안나서..ㅠ.ㅠ

# PostgreSQL
db.driver=org.postgresql.Driver
db.url=jdbc:postgresql:DB이름
db.username=account
db.password=pass

#MySQL
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/DB이름?useUnicode=true&amp;chracterEncoding=UTF-8
db.username=account
db.password=pass

여태까지 DB를 사용해 본 게 두 개 밖에 없네요. 흐흐..


'모하니? > Coding' 카테고리의 다른 글

Report Validator v0.9  (2) 2007.03.26
Report Validator v0.5  (0) 2007.03.26
아 답답해;;  (2) 2007.03.26
테스트를 꼭 실행 해야 하는 시점  (0) 2007.03.23
Spring + Hibernate 프로젝트 베이스  (0) 2007.03.16
JDBC Connection Properties  (0) 2007.03.16
만들고 싶은게 너무 많아요.  (6) 2007.03.09
레포트 검사기  (2) 2007.03.09
랜덤 리스트 축출기 v1.0  (0) 2007.03.08
Tdd Helper 사용 중  (0) 2007.03.07
랜덤 리스트 축출기  (2) 2007.03.06
top

Write a comment.


만들고 싶은게 너무 많아요.

모하니?/Coding : 2007.03.09 23:06


1. 커뮤니티 헬퍼 - 과홈이나 커뮤니티에 새글, 댓글이 뜨면 알려주는 알리미. 그냥 어플리케이션. 한 RSS 알리미와 비슷하죠.

2. 지름신 - 오픈 API 사용해서 동영상 검색, 상품 검색 사용해서 지름을 부추기는 역할을 하는 웹 어플리케이션

3. 레포트 검사기 - 이것 역시 오픈 API 사용해서 레포트가 웹에서 배낀거 아닌지 판별하는 웹 어플리케이션

4. 클래식 음악 전문 사이트 - 담당 교수님께 그토록 원하시는...포인트로 mp3 파일 다운로드 or 업로드, 레코드 판 사고 팔기가 가능한 사이트

5. TDD Helper 2.0 - 여러 기능 추가(총 작업 시간 출력, 리포팅 기능, 우선 순위 매기기, 작업 진행 정도 표시), 버그 수정, 중복되는 코드 정리

2, 3은 얼른 만들어서 다음 매쉬업에 내보내고 싶고 3번은 교수님들 한테 팔고, 1번은 잘 만들어서 학부 회장들이나 동아리, 학회장들한테 팔고 5번은 나의 깜찍이. 4번은 비즈니스 로직 부터 전부 알아서 정해서 만들어야 하기 때문에 굉장히 오래 걸릴 것 같은.. 아마도.. 네버 엔딩 프로젝트.

뭐부터 하지.. 일단 급하면서 팔러 다닐 만한 3번 부터 ㄱㄱ...
기선아 파이팅! 파이팅! 파이팅!!

'모하니? > Coding' 카테고리의 다른 글

Report Validator v0.5  (0) 2007.03.26
아 답답해;;  (2) 2007.03.26
테스트를 꼭 실행 해야 하는 시점  (0) 2007.03.23
Spring + Hibernate 프로젝트 베이스  (0) 2007.03.16
JDBC Connection Properties  (0) 2007.03.16
만들고 싶은게 너무 많아요.  (6) 2007.03.09
레포트 검사기  (2) 2007.03.09
랜덤 리스트 축출기 v1.0  (0) 2007.03.08
Tdd Helper 사용 중  (0) 2007.03.07
랜덤 리스트 축출기  (2) 2007.03.06
TDD Helper 만들었습니다.  (4) 2007.02.23
top

  1. Favicon of http://chaekit.com/wany/ BlogIcon 와니 2007.03.10 04:12 PERM. MOD/DEL REPLY

    클래식 음악 사이트라니 대단한데요.
    괜찮은아이디어 같습니다~~

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2007.03.10 08:33 신고 PERM MOD/DEL

    네 제 생각은 아니구요. 그냥 해야할 일입니다. 이미 비슷한 사이트 들이 많이 있습니다. :)

  2. Favicon of https://steelheart.tistory.com BlogIcon steelheart 2007.03.10 04:46 신고 PERM. MOD/DEL REPLY

    클래식 음악 전문 사이트라... 왠지 친근하게 떠오르는 얼굴이...
    학교 다닐때도 사이트 만들어 달라고 노래를 부르고 다니시더니...
    아직도 만들 사람이 없으신건가 훗훗...

    Favicon of http://whiteship.tistory.com/ BlogIcon 기선 2007.03.10 08:24 PERM MOD/DEL

    네.. 영회형한테도 들었는데 교수님께서 옛~날 부터 말씀하셨던 거라고 하시더군요.ㅋㅋ

  3. Favicon of http://epro.tistory.com BlogIcon epro 2007.03.10 10:06 PERM. MOD/DEL REPLY

    톡톡튀는 아이디어들 굿~입니다.. ㅎㅎ
    커뮤니티 헬퍼에는 새글이 등록됬을 때 SMS로 알려주거나..
    동방에 사람들을 있다면 바로 알 수 있도록 스피커로 "새글이 등록됬어요~!" 라고 해주는건 어떨까요? ㅋㅋ

    Favicon of http://whiteship.tistory.com/ BlogIcon 기선 2007.03.10 11:07 PERM MOD/DEL

    오오.. 멋진데요. 음성으로 새글 읽어 주고 SMS까지~ v2.0에 추가해야겠습니다. 쌩큐요. :)

Write a comment.


레포트 검사기

모하니?/Coding : 2007.03.09 23:04


오늘 수업을 듣는 도중 교수님께서 레포트를 자유롭게 쓰돼 자신이 직접 쓰실 것을 강조 하시며 인터넷에서 긁어다가 붙여넣는 사람들은 모를 것 같지만 딱 보면 다 아신다고 하셨습니다.

레포트 검사기(Report Validator)는 웹 페이지에 문서의 내용을 긁어다가 붙인 뒤 확인 버튼을 누르면 해당 문서가 인터넷에 있는 문서들의 특정 부분을 긁어 붙인 부분이 있는지 없는지 확인합니다.

검색 API를 사용해서 만들면 될 것 같습니다. 다음 매쉬업에 이걸 만들어서 내보내야겠네요.

1. 오픈 API 사용하기.
2. 각 문단 or 문장 별 검색 결과 보여주기.
3. 긁어 붙인 부분으로 의심되는 부분을 하이라이팅 하기.
4. 3월 31일 이내에 개발하기.

'모하니? > Coding' 카테고리의 다른 글

아 답답해;;  (2) 2007.03.26
테스트를 꼭 실행 해야 하는 시점  (0) 2007.03.23
Spring + Hibernate 프로젝트 베이스  (0) 2007.03.16
JDBC Connection Properties  (0) 2007.03.16
만들고 싶은게 너무 많아요.  (6) 2007.03.09
레포트 검사기  (2) 2007.03.09
랜덤 리스트 축출기 v1.0  (0) 2007.03.08
Tdd Helper 사용 중  (0) 2007.03.07
랜덤 리스트 축출기  (2) 2007.03.06
TDD Helper 만들었습니다.  (4) 2007.02.23
5. version 0.9  (0) 2007.02.22
top

  1. Favicon of http://epro.tistory.com BlogIcon epro 2007.03.10 10:09 PERM. MOD/DEL REPLY

    대딩만이 갖을 수 있는 반짝이는 아이디어~!! cool~~~
    이거 만들면 대박이겠는데요~ :)

    Favicon of http://whiteship.tistory.com/ BlogIcon 기선 2007.03.10 11:08 PERM MOD/DEL

    요즘 어떤 수업 과제 중에 하나가 새로운 웹서비스 기획을 하는거라서요. 계속 뭘 만들면 좋을지 생각을 해야하거든요.ㅋㅋ

Write a comment.


랜덤 리스트 축출기 v1.0

모하니?/Coding : 2007.03.08 21:32



01234567

남은건.. 배포하기..
수정하고 싶은건 메뉴에 new를 추가해서 현재 리스트들을 모두 비우는 기능을 추가.
제약조건..
1. 리스트 파일의 인코딩이 UTF-8 이어야 합니다.
2. 한 줄 당 하나의 목록으로 생각합니다.

사용자 삽입 이미지
현재까지 개발에 소요 된 시간은 이 정도가 되며...Tdd Helper에도 총 시간을 적어 주는 기능을 추가해야겠네요.


'모하니? > Coding' 카테고리의 다른 글

테스트를 꼭 실행 해야 하는 시점  (0) 2007.03.23
Spring + Hibernate 프로젝트 베이스  (0) 2007.03.16
JDBC Connection Properties  (0) 2007.03.16
만들고 싶은게 너무 많아요.  (6) 2007.03.09
레포트 검사기  (2) 2007.03.09
랜덤 리스트 축출기 v1.0  (0) 2007.03.08
Tdd Helper 사용 중  (0) 2007.03.07
랜덤 리스트 축출기  (2) 2007.03.06
TDD Helper 만들었습니다.  (4) 2007.02.23
5. version 0.9  (0) 2007.02.22
4. 화면과 모델 통합에서의 갈등  (0) 2007.02.22
top

Write a comment.


Tdd Helper 사용 중

모하니?/Coding : 2007.03.07 12:38


사용자 삽입 이미지

Tdd Helper가 저한테는 ToDo List 기능과 기량 측정에 도움이 되고 있습니다.

하나의 작업이 끝나고 '다음엔.. 뭘 해야 하더라..' 라고 생각하다가 헬퍼를 클릭해보니 다음에 뭘 할지 적어 놓은 목록이 보이고 거기서 하나를 골라서 Start 시키면 됩니다.

목록 관리는.. 1, 2, 3 과 같이 큰 번호로 어느정도 Corse-Grained 하게 적어놓고 코딩을 시작했습니다. 2-1, 2-1, 이런 Fined-Grained 한 작업들은 처음에 생각났었다면 적었을 텐데 막상 코딩 하다가 부가적으로 신경써야 할 것들이 생각나서 개발 중에 추가한 작업들입니다.

예상외로 엄청난 시간이 걸린 1번 작업과 3번 작업을 보면 저는 IO에 굉장히 약하다는 걸 확인할 수 있었습니다. 1번의 경우 IO 관련 코드에서 문제가 발생하지 않고 ArrayList 객체를 만들지도 않고 넣으려는 바보 같은 실수를 잡아 내지 못하는 어처구니 없는 상황이였습니다.

3번에서 많은 시간을 빼앗긴 건.. 한 줄씩 저장하고 싶은데 fileWriter.write(string + "\n") 이렇게 저장할 문자열 뒤에 \n 이걸 빼먹어서 맨 윗 줄에 연달아 문자열이 붙게 되었고 그래서 test를 통과하지 않는 문제를 발견하는데 걸린 시간입니다.

그리고 2-2 작업에 걸린 시간을 보면 저는 Set을 다루는데도 미숙합니다. 보통 List만 사용해 보고 다른 것들(Tree, Map, Set)들은 전혀 사용해보질 않기 때문인 것 같습니다. 문제는 List 보다 Set을 사용하면 더 좋은 상황에서도 List를 사용하고 있는 겁니다. 적절한 상황에 적절한 콜렉션을 사용할 줄 알아야겠습니다.

'모하니? > Coding' 카테고리의 다른 글

Spring + Hibernate 프로젝트 베이스  (0) 2007.03.16
JDBC Connection Properties  (0) 2007.03.16
만들고 싶은게 너무 많아요.  (6) 2007.03.09
레포트 검사기  (2) 2007.03.09
랜덤 리스트 축출기 v1.0  (0) 2007.03.08
Tdd Helper 사용 중  (0) 2007.03.07
랜덤 리스트 축출기  (2) 2007.03.06
TDD Helper 만들었습니다.  (4) 2007.02.23
5. version 0.9  (0) 2007.02.22
4. 화면과 모델 통합에서의 갈등  (0) 2007.02.22
3. 작업 분류 2  (0) 2007.02.22
top

Write a comment.


랜덤 리스트 축출기

모하니?/Coding : 2007.03.06 14:39


파란 매직님추천곡을 다 듣기에도 벅차닷..!! 라는 글에 보면 엄청난 분량의 좋은 곡 리스트가 있습니다.  itunes나 ipod를 사용해 보면 노래 당 별점을 매길 수 있는 기능이 있습니다.

그런걸 사용해서 노래를 듣다가 선호도를 체크해서 선호도 별로 정렬을 하면 어느정도 Best 리스트를 뽑아 낼 수 있을 것으로 생각합니다.

따라서.. ITunes를 사용해서 저 목록의 노래들을 모두 넣은 다음에 들으면서 선호도를 별점으로 체크 해가며 들으면 되겠죠.

그런데 저는 리스트에 곡들이 전부 좋아 보이고 언제든 그 중에 몇개씩 랜덤으로 듣고 싶어졌습니다. 그럼 리스트에서 랜덤으로 20곡을 또는 10곡을 뽑아 주는 프로그램이 있으면 편할 것 같습니다.

이번에도 SWT이용해서 만들어 봐야겠습니다. 저번 Tdd Helper 보다는 좀 더 간단 할 것 같네요.
1. 전체 list 파일 읽어오는 기능.
2. 랜덤으로 특정 갯수의 list 뽑아내기.
3. 결과물을 txt 파일로 저장하기.
4. 선택한 list의 노래 듣기.(mp3 파일은 없기 때문에 일일히 뮤직인에서 찾아 들어야 하는 피곤함 ㅠ.ㅠ)

'모하니? > Coding' 카테고리의 다른 글

JDBC Connection Properties  (0) 2007.03.16
만들고 싶은게 너무 많아요.  (6) 2007.03.09
레포트 검사기  (2) 2007.03.09
랜덤 리스트 축출기 v1.0  (0) 2007.03.08
Tdd Helper 사용 중  (0) 2007.03.07
랜덤 리스트 축출기  (2) 2007.03.06
TDD Helper 만들었습니다.  (4) 2007.02.23
5. version 0.9  (0) 2007.02.22
4. 화면과 모델 통합에서의 갈등  (0) 2007.02.22
3. 작업 분류 2  (0) 2007.02.22
3. 작업 분류  (0) 2007.02.22
top

  1. Favicon of http://seal.tistory.com BlogIcon 물개선생 2007.03.06 16:14 PERM. MOD/DEL REPLY

    허곡.. 어떤 글에서든 재미난 놀이를 찾아내는 "생활속의 프로그래머"의 달인 기선님. 당신을 제 멘토로 임명합니다. 주제를 찾아내는 과정이 감동이군요.

    Favicon of http://whiteship.tistory.com/ BlogIcon 기선 2007.03.06 23:00 PERM MOD/DEL

    간단할 것 같은데도... 막상 코딩이 잘 안되는걸 보면 저는 한~참 멀었다는 걸 느꼈습니다.

    이제는 전에 만든 Tdd Helper 사용해서 시간도 재보면서 처량한 제 자신을 좀 더 몸서리쳐질만큼 실랄하게 느껴봐야겠습니다. :)

Write a comment.


TDD Helper 만들었습니다.

모하니?/Coding : 2007.02.23 18:31


사용자 삽입 이미지

배포 하는 방법을 몰라서 이리저리 찾아다니다가 JET를 찾아서 EXE 파일까지 만들었건만... JET가 설치 안되있는 컴에선 안돌아가는군요. 그래서 JET로 만든 배포버젼은 삭제 하고 다시 만들었습니다. 대엽씨가 만들었던 이글루스 블로그 포스팅 프로그램 배포 하는 방법을 배꼈습니다. 헤헷..

JDK 1.5 이상에서 돌려주세요~


사용자 삽입 이미지
진짜 쪼금 쉬었군요. 더 쉴래요 ㅠ.ㅠ

물개 선생님 JET 버전의 배포판 버그 리포트 감사합니다. 전 제 컴에서만 되는 건줄도 모르고 .. ㅠ.ㅠ 영회형도 지금 올린 버젼 실행되는지 테스트 해주셔서 쌩큐요. 헤헷.

'모하니? > Coding' 카테고리의 다른 글

만들고 싶은게 너무 많아요.  (6) 2007.03.09
레포트 검사기  (2) 2007.03.09
랜덤 리스트 축출기 v1.0  (0) 2007.03.08
Tdd Helper 사용 중  (0) 2007.03.07
랜덤 리스트 축출기  (2) 2007.03.06
TDD Helper 만들었습니다.  (4) 2007.02.23
5. version 0.9  (0) 2007.02.22
4. 화면과 모델 통합에서의 갈등  (0) 2007.02.22
3. 작업 분류 2  (0) 2007.02.22
3. 작업 분류  (0) 2007.02.22
TDD Helper 화면 Version 0.5  (4) 2007.02.21
top

  1. Favicon of http://decoder.tistory.com BlogIcon decoder 2007.02.23 23:40 PERM. MOD/DEL REPLY

    와우!! 실행해 보니 정말 멋지네요!! ^^
    ㅎㅎ 그나저나 Java를 비롯한 다른 모든 응용 프로그램에서도 배포(deployment)는 정말 어려운 문제인것 같습니다.
    저도 Java 클래스 파일을 실행 파일로 만들어 주는 툴을 2가지(JET 포함) 써보긴 했는데, 너무 불편하고 사용하기에 어려웠던 걸로 기억합니다. 어디 더 좋은 방법 없을까요?

    Favicon of http://whiteship.tistory.com/ BlogIcon 기선 2007.02.24 07:42 PERM MOD/DEL

    배포.. 정말 어려웠어요. EXE 만들었길래 다 됐구나 생각했는데 왠걸;; JET가 설치 안돼있으면 안돌아간다니...OTL

    대엽씨가 올려논 파일 따라하지 않았으면 배포 못했을 꺼에요. 쌩큐요~ :)

  2. Favicon of http://epro.tistory.com BlogIcon 계옥 2007.02.26 09:13 PERM. MOD/DEL REPLY

    아하. 이거 정말 잼있는데요..
    제 컴터에선 바로 잘 돌아가네요..
    오늘 이거가지고 근무시간에 얼마나 쓸데없는 짓을 많이 하는지 체크해 봐야겠네요 ^^;

    Favicon of http://whiteship.tistory.com/ BlogIcon 기선 2007.02.26 18:17 PERM MOD/DEL

    감사합니다. 점점 개발자 감시 프로그램으로 변하고 있군요. 헤헷 숨은 버그 찾으시면 알려주세요~ :)

Write a comment.


5. version 0.9

모하니?/Coding : 2007.02.22 21:28


012345678910

고쳐야 할 것...

1. Table 크기 조정 - 완료
2. ObjectStream 으로 바꾸기 - 완료
3. save 메뉴 구현 - 구현중
4. 시간 계산 에러 수정 - 완료
5. 작업 시간을 "시 분 초"로 보여주기 추가 - 완료
6. Table에 시간 컬럼 계속 생기는 에러 수정 - 완료

'모하니? > Coding' 카테고리의 다른 글

레포트 검사기  (2) 2007.03.09
랜덤 리스트 축출기 v1.0  (0) 2007.03.08
Tdd Helper 사용 중  (0) 2007.03.07
랜덤 리스트 축출기  (2) 2007.03.06
TDD Helper 만들었습니다.  (4) 2007.02.23
5. version 0.9  (0) 2007.02.22
4. 화면과 모델 통합에서의 갈등  (0) 2007.02.22
3. 작업 분류 2  (0) 2007.02.22
3. 작업 분류  (0) 2007.02.22
TDD Helper 화면 Version 0.5  (4) 2007.02.21
2. 작업 소요 시간 측정  (0) 2007.02.21
top

Write a comment.


4. 화면과 모델 통합에서의 갈등

모하니?/Coding : 2007.02.22 15:09


미쳐 생각하지 못했던 문제들이 슬슬 Clocking을 풀고 있습니다.

1. 저장을 어떤 형태로 할 것인가? 저는 text 파일로 저장 읽어 오기를 구현해 뒀습니다. 하지만 List를 저장하기엔..ObjectStream이 좋을 것 같네요. text로 읽어와서 파싱하는 노가다를 하기 싫어요~ ㅠ.ㅠ... 그렇다면 text 파일로 리포트를 만들어 주는 기능을 나중에 만들고 일단 저장하기와 불러오기는 ObejctStream으로 변경 할까요? 네!
사용자 삽입 이미지

2. 이런 이런 스크롤이 마우스 휠을 움직여도 움직이지 않아요. 마우스 휠로 스크롤을 움직이게 하든지..하니면 ExpendBar를 열거나 닫을 때마다 화면 크기를 딱 맞게 변하게 스크롤이 생기지 않도록 합시다. 방법은? 모르는데요. 으흐흐흐... 그렇다면 알고 나면 고칩니다. 일단 그냥 구현 합시다. 넹~

3. ToDo List 에서는 하나의 작업 만 선택하도록 합시다. 왜요? 여러 작업을 동시에 START 시킬 순 없자나요. 아아.. OK. 뭐 그럽시다. 사실은 코딩하기 귀찮아서 그런거죠? 에이.. 설마..

4. 처음 프로그램을 실행 했을 때를 생각해 봅시다.
4.1. 일단 Current Work에 Work가 없기 때문에 PAUSE 와 END 버튼은 disable 상태여야 합니다.
4.2. ToDo List 역시 아무것도 없기 때문에 START와 DELETE 역시 disable 상태여야 합니다. ADD만 그냥 두면 되겠군요.
4.3. 작업 하나를 입력 합니다. 그럼 START와 DELETE 버튼이 이용 가능해 지겠군요.
4.4. 작업 하나를 선택해서 START 시킵니다. 그럼 PAUSE 와 END 버튼이 이용 가능해 지겠군요. 대신에 START 버튼은 불이 꺼집니다.
4.5. PAUSE 버튼을 클릭하면 PAUSE 버튼의 title이 RESTART 로 바뀝니다. 그리고 START에는 다시 불이 들어옵니다.
4.6. PAUSE 버튼을 클릭한 상태에서 ToDo에서 작업을 선택하고 START를 클릭하면... 음.. 그렇게 되겠군요.
4.7. END 버튼을 클릭하면 PAUSE 버튼은 불이 꺼지고 Completed Work List에 완료된 작업이 추가 됩니다.

'모하니? > Coding' 카테고리의 다른 글

랜덤 리스트 축출기 v1.0  (0) 2007.03.08
Tdd Helper 사용 중  (0) 2007.03.07
랜덤 리스트 축출기  (2) 2007.03.06
TDD Helper 만들었습니다.  (4) 2007.02.23
5. version 0.9  (0) 2007.02.22
4. 화면과 모델 통합에서의 갈등  (0) 2007.02.22
3. 작업 분류 2  (0) 2007.02.22
3. 작업 분류  (0) 2007.02.22
TDD Helper 화면 Version 0.5  (4) 2007.02.21
2. 작업 소요 시간 측정  (0) 2007.02.21
1. 작업 리스트 관리(CRUD)  (0) 2007.02.20
top

Write a comment.


3. 작업 분류 2

모하니?/Coding : 2007.02.22 14:39


3.6. 작업 분류별 리스트를 가져옵니다.

    @Test public void workTypeList(){
        Work work1 = new Work("work1");
        workList.add(work1);
        assertEquals(work1, workList.getToDoList().get(1));

        work1.start();
        assertEquals(work1, workList.getCurrentWork());
        assertEquals(0, workList.getToDoList().size());

        work1.pause();
        assertEquals(work1, workList.getPausedWorks().get(1));
        assertEquals(null, workList.getCurrentWork());

        work1.end();
        assertEquals(work1, workList.getEndWorks().get(1));
        assertEquals(0, workList.getPausedWorks().size());
    }

Work가 List에 있는 것만 확인하면 되는데 특정 위치를 가리켜서 확인하는 건 그닥 맘에 들지 않습니다. 그래서 contain()을 추가합니다.

    @Test public void workTypeList(){
        Work work1 = new Work("work1");
        workList.add(work1);
        assertTrue(workList.getToDoList().contains(work1));

        work1.start();
        assertEquals(work1, workList.getCurrentWork());
        assertEquals(0, workList.getToDoList().size());

        work1.pause();
        assertTrue(workList.getPausedWorks().contains(work1));
        assertEquals(null, workList.getCurrentWork());

        work1.end();
        assertTrue(workList.getEndWorks().contains(work1));
        assertEquals(0, workList.getPausedWorks().size());
    }

3.7. 하나의 작업이 실행 중일 땐 다른 작업을 실행 할 수 없습니다.

이걸 조금 구현 해보니깐..Work에서 WorkList를 가지고 있어야 합니다. 그렇게 되면 굉장히 복잡해지고 커플링이 심해집니다. UI 상에서 이런 시도를 막을 수 있을 것 같습니다. UI를 구현하는 코드가 복잡해지겠지만.. 일단 한번 해본 뒤에 생각해 봐야겠습니다.


'모하니? > Coding' 카테고리의 다른 글

Tdd Helper 사용 중  (0) 2007.03.07
랜덤 리스트 축출기  (2) 2007.03.06
TDD Helper 만들었습니다.  (4) 2007.02.23
5. version 0.9  (0) 2007.02.22
4. 화면과 모델 통합에서의 갈등  (0) 2007.02.22
3. 작업 분류 2  (0) 2007.02.22
3. 작업 분류  (0) 2007.02.22
TDD Helper 화면 Version 0.5  (4) 2007.02.21
2. 작업 소요 시간 측정  (0) 2007.02.21
1. 작업 리스트 관리(CRUD)  (0) 2007.02.20
TDD 연습용 프로그램  (4) 2007.02.20
top

Write a comment.


3. 작업 분류

모하니?/Coding : 2007.02.22 12:41


3.1. 새로 추가된 작업은 "해야할 작업" 목록에 추가 됩니다.

    @Test public void newWorkType(){
        Work work = new Work("work1");
        workList.add(work);
        assertEquals(WorkType.TODO, work.getType());
    }

음.. 화면을 먼저 만들걸.. 하는 생각이 계속 들면서 작업을 방해하기 시작하는데 메모를 해둬야 겠습니다.

- 일시 정지 클릭하고 ToDo List에서 다른 작업의 시작 버튼을 클릭하면 일시 정지 된 작업은 TODO 리스트로 옮겨지고 Current Work에는 방금 선택한 작업이 올라옵니다.

3.2. "작업 시작" 버튼을 클릭한 작업은 "진행 중인 작업" 목록에 추가 됩니다.

    @Test public void startWorkType(){
        Work work = new Work("work1");
        workList.add(work);
        work.start();
        assertEquals(WorkType.CURRENT, work.getType());
    }

3.3. "작업 완료" 버튼을 클릭한 작업은 "완료된 작업" 목록에 추가 됩니다.

- "PAUSE" 버튼과 "RESTART" 버튼을 눌렀을 때 상태 변화를 생각 못했었군요. 테스트에 추가해야겠습니다.

그 전에 일단 3.3. 부터 마무리 하구요.

    @Test public void endWorkType(){
        Work work = new Work("work1");
        workList.add(work);
        work.start();
        work.end();
        assertEquals(WorkType.END, work.getType());
    }

=> 어라.. 여기까지 하다보니 테스트 코드에 엄청난 중복이 생겼습니다. test 메소드 하나로 위에 있는 세개를 전부 합치겠습니다.

    @Test public void workType(){
        Work work = new Work("work1");
        workList.add(work);
        assertEquals(WorkType.TODO, work.getType());
        work.start();
        assertEquals(WorkType.CURRENT, work.getType());
        work.end();
        assertEquals(WorkType.END, work.getType());
    }

그럼 이제 위에 있는 세개는 지워도 되겠군요. 책 읽은게 도움이 됐습니다. 흐흐 쌩큐 Beck!

3.4. 선택한 분류의 작업만 보여주기.

이건 SWT에 있는 EnpendBar로 구현을 했기 때문에.. 코드로 처리하지 않아도 될 것 같습니다.

3.5. "PAUSE" 버튼을 클릭하면 pause 상태로 바꿔줍니다. 위에 있는 테스트 코드를 수정해서 시나리오를 만듭니다.

    @Test public void workType(){
        Work work = new Work("work1");
        workList.add(work);
        assertEquals(WorkType.TODO, work.getType());
        work.start();
        assertEquals(WorkType.CURRENT, work.getType());
        work.pause();
        assertEquals(WorkType.PAUSE, work.getType());
        Work work2 = new Work("work2");
        workList.add(work2);
        work2.start();
        assertEquals(WorkType.CURRENT, work2.getType());
        work.end();
        assertEquals(WorkType.END, work.getType());
    }

- 하나의 작업이 실행 중일 때 다른 작업을 실행하지 못하게 합니다.

SWT에서 실행 버튼을 disable 하게 해두는 걸로 하면.. 되겠죠? 훔

'모하니? > Coding' 카테고리의 다른 글

랜덤 리스트 축출기  (2) 2007.03.06
TDD Helper 만들었습니다.  (4) 2007.02.23
5. version 0.9  (0) 2007.02.22
4. 화면과 모델 통합에서의 갈등  (0) 2007.02.22
3. 작업 분류 2  (0) 2007.02.22
3. 작업 분류  (0) 2007.02.22
TDD Helper 화면 Version 0.5  (4) 2007.02.21
2. 작업 소요 시간 측정  (0) 2007.02.21
1. 작업 리스트 관리(CRUD)  (0) 2007.02.20
TDD 연습용 프로그램  (4) 2007.02.20
CallBack 사용해 보기  (2) 2007.02.20
top

Write a comment.


TDD Helper 화면 Version 0.5

모하니?/Coding : 2007.02.21 23:37


사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지
흠..AWT 보다 사용하기가..... 쪼금 더 편하고.. Visual은 많이 이쁘네요.

http://www.eclipse.org/swt/widgets/ 여기서 원하는 컴포넌트 그림을 찍은 다음에(마음 속으로) 그 그림의 아래에 보면 snipet과 javadoc이 보입니다. snipet을 클릭하면 예제 코드들이 나오는데 그 코드들을 Eclipse에서 실행시켜서 실제 화면이랑 코드랑 대조 해보면서 만들었습니다.

개선 할 것
1. 두 번째 화면에.. text는 label로 고쳐야 겠습니다.
2. 세 번째 화면에.. list에서 여러개를 선택할 수 있는데 여러개를 삭제 하는 기능을 구현해야 겠습니다.
3. 세 번째 화면에.. 새로운 work 추가하는 text 부분이 너무 쫍은데 이거 늘리는걸 API 찾아 봤는데..setBounds도 안먹고 setSize도 안먹고..ㅠ.ㅠ
4. 네 번째 화면은.. 좀 더 그리드 스럽게 보여 주고 싶습니다. Work Name, Worked Time 컬럼 두 개를 나타내도록 말이죠..table을 쓰면 되겠군요.

'모하니? > Coding' 카테고리의 다른 글

TDD Helper 만들었습니다.  (4) 2007.02.23
5. version 0.9  (0) 2007.02.22
4. 화면과 모델 통합에서의 갈등  (0) 2007.02.22
3. 작업 분류 2  (0) 2007.02.22
3. 작업 분류  (0) 2007.02.22
TDD Helper 화면 Version 0.5  (4) 2007.02.21
2. 작업 소요 시간 측정  (0) 2007.02.21
1. 작업 리스트 관리(CRUD)  (0) 2007.02.20
TDD 연습용 프로그램  (4) 2007.02.20
CallBack 사용해 보기  (2) 2007.02.20
spring 코딩 할 때  (0) 2006.11.06
top

  1. Favicon of https://seal.tistory.com BlogIcon 물개선생 2007.02.22 08:11 신고 PERM. MOD/DEL REPLY

    첫번째 일반사용자로 등록 요청합니다. 얼마전에 Time Trek이란 프로그램을 써봤는데, 쓸만하더군요. 리포트 생성 기능도 마음에 들고.

    Favicon of http://whiteship.tistory.com/ BlogIcon 기선 2007.02.22 09:11 PERM MOD/DEL

    헉..넵 검색해서 봤는데요. 멋져보여요. *_* 저도 써보고 참조 할 건 나중에 기능에 추가 해야겠습니다. 헤헷 감사합니다.

  2. Favicon of http://decoder.tistory.com BlogIcon decoder 2007.02.22 12:58 PERM. MOD/DEL REPLY

    멋집니다! 짝짝짝~ 역시 뭐든지 금방 터득하시는군요!

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2007.02.22 13:37 신고 PERM MOD/DEL

    대엽씨에게 견줄만큼은 아닙니다. 흐흐 감사합니다. :)

Write a comment.


2. 작업 소요 시간 측정

모하니?/Coding : 2007.02.21 12:59


2.1. "작업 시작" 버튼을 클릭 한 시간 부터 "작업 완료" 버튼을 클릭 했을 때 까지의 시간을 잽니다.

이걸 좀 더 잘개 쪼개야 겠습니다. 시간은 초 단위가 좋을 것 같습니다.
2.1.1. "작업 시작" 버튼을 클릭하면 시간을 재기.

    @Test public void getStartTime(){
        int startTime = new Work("work1").start();
        assertFalse(startTime == 0);
    }

다음 작업을 하기 전에 startTime을 Work 클래스에 저장해 둬야 할 것 같아졌습니다. 그래야 나중에 작업이 완료 됐을 때 계산할 수 있으니깐요..

2.1.2. startTime 저장하기

    @Test public void getStartTime(){
        Work work = new Work("work1");
        work.start();
        assertNotNull(work.getStartTime());
    }

2.1.2. "작업 완료" 버튼을 클릭하면 현재 시간에서 작업 시작 시간을 빼서 소요 시간 구하기.
   
    @Test public void getWorkedTime(){
        Work work = new Work("work1");
        work.start();
        long workedTimeInMilli = work.end();
        assertEquals(work.getEndTime() - work.getStartTime(), workedTimeInMilli);
        assertEquals(workedTimeInMilli * 1000, work.getWorkedTime());
    }

2.2. "일시 정지" 버튼을 클릭하면 시간 재는 걸 잠시 중단 합니다. "작업 시작"버튼을 클릭하면 다시 이어서 시간을 잽니다.

이 작업을 구현하려니까 시간을 가지고 테스트 하는게 엄청 불편하게 느껴집니다. start와 end를 할 때 로그 메시지를 기록 하도록 하고 그 메시지를 확인 하도록 테스트를 변경합니다.

    @Test public void pausedTime(){
        Work work = new Work("work1");
        work.start();
        work.pause();
        work.reStart();
        long workedTime = work.end();
        assertEquals("작업 시작 -> 일시 중지 -> 다시 시작 -> 작업 종료", work.getLog().toString());
        assertEquals((work.pause() - work.start()) + (work.getEndTime() - work.reStart()), workedTime);
    }

2.3. "작업 완료" 버튼을 클릭하면 해당 작업한 시간이 기록됩니다. 이건 이미 위에 것들을 구현하다보니 구현이 되버렸군요.

현재 까지 작업 상황을 보면

- 시작 -> 종료 :: 2.1.
- 시작 -> 일시 정지 -> 다시 시작 -> 종료 :: 2.2.
- 시작 -> 일시 정지 -> 종료
- 시작 -> 일시 정지 -> 다시 시작 -> 일시 정지 -> 다시 시작 -> 종료

미쳐 아래 두 가지 경우 수를 생각 못했었군요.

그리고 작업한 시간을 출력해보니 전부 0으로 나오기 때문에 수치가 정확한지 가늠할 수 있는 뭔가 더 좋은 테스트 방안을 모색해 봐야겠습니다.

테스트를 위해서 log를 만들었지만 이 것이 차후 프로그램에서 필요한가를 생각해보니.. 시간 테스트를 위한 대안이였는데 전혀 적절한 대안이 되진 못한 것이 절 초라하게 만드는군요. ㅠ.ㅠ

'모하니? > Coding' 카테고리의 다른 글

TDD Helper 만들었습니다.  (4) 2007.02.23
5. version 0.9  (0) 2007.02.22
4. 화면과 모델 통합에서의 갈등  (0) 2007.02.22
3. 작업 분류 2  (0) 2007.02.22
3. 작업 분류  (0) 2007.02.22
TDD Helper 화면 Version 0.5  (4) 2007.02.21
2. 작업 소요 시간 측정  (0) 2007.02.21
1. 작업 리스트 관리(CRUD)  (0) 2007.02.20
TDD 연습용 프로그램  (4) 2007.02.20
CallBack 사용해 보기  (2) 2007.02.20
spring 코딩 할 때  (0) 2006.11.06
top

Write a comment.


1. 작업 리스트 관리(CRUD)

모하니?/Coding : 2007.02.20 18:46


1.1. 새로운 작업 추가 - 완료

    @Test public void addNewWork(){
        WorkList workList = new WorkList();
        String workName = "새로운 작업 추가하기";
        workList.add(new Work(workName));
        assertEquals(1, workList.size());
        assertEquals(workName, workList.get(1).name);
    }

1.2. 선택한 작업 삭제 하려다 보니 Work 마다 번호가 매겨져 있어야 할 것 같아졌습니다. 새로운 작업을 추가 했을 때 그 작업의 번호를 리턴 받도록 합니다. 작업 번호는 1번 부터 시작합니다. 새로 추가되는 작업의 번호는 리스트 요소중에 제일 큰 번호를 갖게 됩니다.

1.2 작업 번호 받기 - 완료

     @Test public void addNewWork(){
        WorkList workList = new WorkList();
        String workName = "새로운 작업 추가하기";
        int workNumber = workList.add(new Work(workName));
        assertEquals(1, workNumber);
        assertEquals(1, workList.size());
        assertEquals(workName, workList.get(workNumber).name);
    }

1.3. 선택한 작업 삭제 - 완료

    @Test public void deleteWork(){
        WorkList workList = new WorkList();
        int workNumber1 = workList.add(new Work("work1"));
        int workNumber2 = workList.add(new Work("work2"));
        assertEquals(2, workList.size());
        workList.delete(workNumber1);
        assertEquals(1, workList.size());
        assertEquals("work2", workList.get(workNumber2 - 1).name);
    }

리스트에서 작업이 삭제 되면 작업의 번호도 그에 따라 변경 됩니다. 예를 들어 2개의 작업에서 첫번째(1번) 작업이 삭제 되면 두번째(2번) 작업의 번호가 첫번째 작업의 번호로 바뀌게 됩니다.

두 개의 메소드에 중복이 발생했습니다. workList 객체를 @Before 가 붙은 메소드로 올리겠습니다.

    WorkList workList;

    @Before public void setUp(){
        workList = new WorkList();
    }

1.4. 파일로 저장하기 - 완료

    @Test public void saveList() throws IOException{
        workList.add(new Work("work1"));
        String fileName = "ToDoList.txt";
        workList.save(fileName);
        StringBuffer buffer = new StringBuffer();
        String line;
        BufferedReader reader = new BufferedReader(new FileReader(fileName));
        while ((line = reader.readLine()) != null) {
            buffer.append(String.format(line + "\n"));
        }
        reader.close();
        assertEquals("work1\n", buffer.toString());
    }

1.5. 파일에서 읽어오기 - 완료

    @Test public void loadList(){
        int workNumber = workList.add(new Work("work1"));
        String fileName = "ToDoList.txt";
        workList.save(fileName);
        workList = new WorkList();
        workList.load(fileName);
        assertEquals(1, workList.size());
        assertEquals("work1", workList.get(workNumber).name);
    }

1.6. 전체 리스트 보여주기 - 완료

    @Test public void printList(){
        workList.add(new Work("work1"));
        workList.add(new Work("work2"));
        workList.add(new Work("work3"));
        assertEquals("work1\nwork2\nwork3\n", workList.toString());
    }

그리고 여태까지 Work class에 name 변수가 public으로 되어 있었는데 private으로 바꿔주고 에러나는 부분은 getter와 setter로 포장해 줍니다.




'모하니? > Coding' 카테고리의 다른 글

TDD Helper 만들었습니다.  (4) 2007.02.23
5. version 0.9  (0) 2007.02.22
4. 화면과 모델 통합에서의 갈등  (0) 2007.02.22
3. 작업 분류 2  (0) 2007.02.22
3. 작업 분류  (0) 2007.02.22
TDD Helper 화면 Version 0.5  (4) 2007.02.21
2. 작업 소요 시간 측정  (0) 2007.02.21
1. 작업 리스트 관리(CRUD)  (0) 2007.02.20
TDD 연습용 프로그램  (4) 2007.02.20
CallBack 사용해 보기  (2) 2007.02.20
spring 코딩 할 때  (0) 2006.11.06
top

Write a comment.


TDD 연습용 프로그램

모하니?/Coding : 2007.02.20 17:40


"TDD 도우미"

TDD를 사용하여 개발 또는 공부를 할 때 도움이 될 프로그램을 생각해 봤습니다. 조그만 목록 관리와 작업 당 소요 시간 측정은 작업의 난이도가 어땠는지.. 혹은 작업의 단위를 너무 크게 한 것은 아닌지 생각해볼 수 있지 않을까 해서 넣어봤습니다.

1. 작업 리스트 관리(CRUD)
1.1. 새로운 작업 추가 - 완료
1.2. 선택한 작업 삭제
1.3. 작업 리스트 파일로 저장
1.4. 작업 리스트 읽어 오기
1.5. 전체 리스트 보여주기

2. 작업 소요 시간 측정
2.1. "작업 시작" 버튼을 클릭 한 시간 부터 "작업 완료" 버튼을 클릭 했을 때 까지의 시간을 잽니다.
2.2. "일시 정지" 버튼을 클릭하면 시간 재는 걸 잠시 중단 합니다. "작업 시작"버튼을 클릭하면 다시 이어서 시간을 잽니다.
2.3. "작업 완료" 버튼을 클릭하면 해당 작업한 시간이 기록됩니다.

3. 작업 자동 분류(완료된 작업, 진행 중인 작업, 해야할 작업)
3.1. 새로 추가된 작업은 "해야할 작업" 목록에 추가 됩니다.
3.2. "작업 시작" 버튼을 클릭한 작업은 "진행 중인 작업" 목록에 추가 됩니다.
3.3. "작업 완료" 버튼을 클릭한 작업은 "완료된 작업" 목록에 추가 됩니다.
3.4. 선택한 분류의 작업만 보여주기.


'모하니? > Coding' 카테고리의 다른 글

TDD Helper 만들었습니다.  (4) 2007.02.23
5. version 0.9  (0) 2007.02.22
4. 화면과 모델 통합에서의 갈등  (0) 2007.02.22
3. 작업 분류 2  (0) 2007.02.22
3. 작업 분류  (0) 2007.02.22
TDD Helper 화면 Version 0.5  (4) 2007.02.21
2. 작업 소요 시간 측정  (0) 2007.02.21
1. 작업 리스트 관리(CRUD)  (0) 2007.02.20
TDD 연습용 프로그램  (4) 2007.02.20
CallBack 사용해 보기  (2) 2007.02.20
spring 코딩 할 때  (0) 2006.11.06
top

  1. Favicon of http://seal.tistory.com BlogIcon 물개선생 2007.02.21 14:11 PERM. MOD/DEL REPLY

    흥미로운 글이네요. 이슈트래커와 연동되는 프로젝트 관리 플러그인이나 Time Tracking 플러그인을 쓰고 있나요?

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2007.02.21 16:48 신고 PERM MOD/DEL

    헉...아니요. 에고 그런게 이미 있었군요. ㅠ.ㅠ
    으흐흐.. 그래도 재미삼아 만들어 볼꺼에요. 흠냐.. 혼자 써야지~

  2. Favicon of https://seal.tistory.com BlogIcon 물개선생 2007.02.22 08:04 신고 PERM. MOD/DEL REPLY

    싫어요, 나도 쓰게 해줘요..

    Favicon of http://whiteship.tistory.com/ BlogIcon 기선 2007.02.22 09:04 PERM MOD/DEL

    헤헷 이번주 안에 만들어서 보내드릴께요. 기대는 절대 금물이랍니다.ㅎㅎ

Write a comment.


CallBack 사용해 보기

모하니?/Coding : 2007.02.20 17:08


영회형의 최신글에서 JDBC 노가다를 CallBack을 사용해서 멋지게 처리하는 글을 보고 이런 형태로 개선하면 좋을 것 같은 부분들이 떠올랐습니다.

IO를 할 때 try-catch 블락이 계속 중복 되는데요. 아래의 코드를 보겠습니다.
첫번째 메소드만 중간에 뭐가 한 문장이 추가 됩니다. 다른 두 개의 메소드는 빨간색 글씨 아래로는 완전히 같은 코드입니다. 빨간 글씨 아래의 큰 덩어리를 다른 메소드로 분리해 내고 싶었지만 첫번째 메소드 처럼 중간에 connection에 뭔가를 추가해야할 일이 생길 수도 때문에 그렇게 하지 못하고 조금씩 묶어서 다른 메소드로 빼냈습니다.

그랬더니 코드가 아래처럼 됐습니다.
물론 메소드들이 다이어트를 해서 조금 보긴 괜찮은데 그래도 try-catch가 자꾸 중복되서 나오는게 보기 싫어졌습니다. CallBack을 만들어서 써보고 싶어졌습니다. 결국 코드는 아래처럼 변했습니다.

흠.. interface로 해두니까 꼭 구현을 해야 되서 아래 두 개의 메소드에서는 구현할 필요가 없는데 구현을 해야만 하는 상황이 생겼네요. 그래서 interface를 class로 바꾸고 빈 메소드로 만들어 두었습니다.

으~ 어렵습니다... 마지막 코드도 별로 좋아보이지 않는데요. 흠...좀 더 공부하다 보면 좋은 방법이 생기겠죠.

'모하니? > Coding' 카테고리의 다른 글

TDD Helper 만들었습니다.  (4) 2007.02.23
5. version 0.9  (0) 2007.02.22
4. 화면과 모델 통합에서의 갈등  (0) 2007.02.22
3. 작업 분류 2  (0) 2007.02.22
3. 작업 분류  (0) 2007.02.22
TDD Helper 화면 Version 0.5  (4) 2007.02.21
2. 작업 소요 시간 측정  (0) 2007.02.21
1. 작업 리스트 관리(CRUD)  (0) 2007.02.20
TDD 연습용 프로그램  (4) 2007.02.20
CallBack 사용해 보기  (2) 2007.02.20
spring 코딩 할 때  (0) 2006.11.06
top

TAG callback, JDBC
  1. Favicon of http://toby.tistory.com BlogIcon Toby 2007.03.06 21:51 신고 PERM. MOD/DEL REPLY

    파라메터가 없는 sendRequest()를 하나만드시고 거기서 빈 콜백인스턴스를 만드는 코드를 만들어서 원래 sendRequest(ConnectionCallBack)을 호출하도록 하면 어떨까요?

    첫번째 경우도 자주등장하는 케이스라면 구지 callback을 일일히 사용하지 않고 setRequestProperty()의 파라메터만 받아서 미리만들어진 콜백을 이용하는 메소드를 추가하는 것도 좋은 방법일 것입니다.

    Spring의 HibernateTemplate 같은 경우는 직접 callback을 사용하지않고 대부분의 작업이 가능하도록 다양한 convenient methods가 만들어져있죠.

    Favicon of http://whiteship.tistory.com/ BlogIcon 기선 2007.03.06 23:32 PERM MOD/DEL

    아.. HibernateTemplate 클래스를 보면서 생각해 보니 어떤 말씀이신지 알 것 같습니다.

    두번째와 세번째 케이스는

    sendRequest(new ConnectionCallBack(){});
    이 부분이
    sendRequest();
    이렇게 바뀔 것이고..

    음.. 첫번째 케이스를 위한 convenient 메소드를 추가하면

    sendRequest(new ConnectionCallBack(){
    public void doSomethingWithConnection(HttpURLConnection connection) {
    connection.setRequestProperty("Authorization", "Basic " +
    new sun.misc.BASE64Encoder().encode(new String(id + ":" + password).getBytes()));
    }
    });
    이 부분이
    sendRequest(id, passwd);
    이렇게 훨씬 깔끔해 지겠네요.

    우와.. 감사합니다. :)

Write a comment.


spring 코딩 할 때

모하니?/Coding : 2006.11.06 12:38


spring을 설치한 폴더/dist/spring.jar 파일을 프로젝트에 추가 해주어야 함.
-> 그래야 BeanFactory 등 spring에서 제공해주는 API를 사용할 수 있슴.

코드에는 에러가 없어 보이는 데 실행을 하면 Exception in thread"main" java.lang.NoClassDefFoundError:org/apache/commons/logging/LogFactory 이런 메시지와 함께 실행이 안될 때 가 있슴.
-> 이때는 spring 설치 폴더/lib/jakarta-commons/commons-logging.jar 파일을 프로젝트에 추가 해주면 됨.


이 jar파일이 어딨는지 찾질 못해서 엄청난 삽질을 했었다는거... OTL

'모하니? > Coding' 카테고리의 다른 글

TDD Helper 만들었습니다.  (4) 2007.02.23
5. version 0.9  (0) 2007.02.22
4. 화면과 모델 통합에서의 갈등  (0) 2007.02.22
3. 작업 분류 2  (0) 2007.02.22
3. 작업 분류  (0) 2007.02.22
TDD Helper 화면 Version 0.5  (4) 2007.02.21
2. 작업 소요 시간 측정  (0) 2007.02.21
1. 작업 리스트 관리(CRUD)  (0) 2007.02.20
TDD 연습용 프로그램  (4) 2007.02.20
CallBack 사용해 보기  (2) 2007.02.20
spring 코딩 할 때  (0) 2006.11.06
top

Write a comment.




: 1 : ··· : 7 : 8 : 9 : 10 :