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

달력

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

최근에 올라온 글

최근에 달린 댓글


iBATIS 를 이용한지는 3년정도가 지났고, Hibernate 는 올해 처음 맛을 보았습니다.

두가지 모두 각각의 장점들이 명확한지라, 어느 한쪽만 택하기가 아쉬운 점이 있습니다.

그래서 다음번 프로젝트 때는 두가지를 병행하여 사용해볼까 합니다.

CRUD 는 하이버네이트를 이용하고, 테이블 간의 조인이 필요로 할 경우에는 iBATIS 를 이용해보려 합니다.

아마도 테이블 설계가 잘 되어 있고, DB 내에 펑션이나 프로시저 처럼 로직이 들어가 있지 않다면 iBATIS 를 이용할 일이 거의 없겠지만 현실은 항상 우리편이 아니기 때문에 iBATIS 도 적절하게 사용하는 것이 생산성 향상에 도움이 될 것으로 생각합니다.

어차피 DataSource 는 공유해서 사용할 것이고... 문제가 될만한게 없겠죠???

Posted by 자수씨
, |


<!DOCTYPE pubdoc SYSTEM "pubdoc.dtd">

위와 같이 XML 에 dtd 가 정의되어 있는 경우 JAXB 로 unmarshal 을 할 경우 dtd 의 위치가 명확하지 않아 재대로 unmarshal 이 되지 않을 수 있습니다.

좀 더 안전한 시스템을 위해서는 명확하게 정의해야 하는데요... 아래와 같은 방법을 사용합니다.



XMLReader 객체에 설정된 EntityResolver 를 통해 해당 dtd 와 관련된 정보들을 InputSource 로 참조할 수 있도록 처리하는 것 입니다.

EntityResolver 의 resolveEntity 메소드는 필요로 하는 리소스들을 두번째 파라미터인 syustemId 로 넘기게 됩니다.

즉, "C:/JAVA/Temp" 폴더에서 실행을 한다면 "pubdoc.dtd" 는 "C:/JAVA/Temp/pubdoc.dtd" 에서 찾게 됩니다. 해당 systemId 를 적당히 잘라내어 클래스패스 내에 리소스의 위치와 결합시켜서 로드하는 방식을 사용하였습니다.


먼가 systemId 자르는 것이 찝찌름 하지만 정상구동 확인하였습니다.

Posted by 자수씨
, |


오픈소스를 이용하다보면, 생각치도 못한 오류에 다양한 순간에 맞닥들이게 됩니다.

이럴 때 여러분은 어떻게 처리하시나요??

1. 자신의 소스가 잘못된 곳이 없는지 죽어라 쳐다본다.
2. 네이버, 구글 과 같은 신님들의 은총을 찾아본다.
3. 오픈소스의 소스코드를 구해서 트레이싱을 한다.
4. 넋 놓고 멍하니 쳐다본다.
5. 어차피 처리되어야 하는 일... 누군가는 처리해야 하므로 다른일을 한다.


...

Posted by 자수씨
, |

간만에 회사사람들과 선릉역 1번출구 근처 트럭에서 파는 매운떡볶이를 먹었습니다. 선릉까지가는게 귀찮아 잔심부름 아저씨의 도움을 받았습니다. 오랜만에 먹었는데 짜릿한 이 맛은 아직도 감동이네요.

아 근데 이제 슬슬 신호가 옵니다... 부글부글~~~



iPhone 에서 작성된 글입니다.

Posted by 자수씨
, |


이클립스 Tasks 에서 Jira 에 연결하여 작업을 하는데 내용을 변경하고 Submit 을 하려니 날짜가 안 맞는다고 징징거립니다.

그럴 때는 이렇게 해줍니다.

ㅁ Task Repositories >> Jira Repository >> Properties





ㅁ Additional Settings >> Advanced Configuration 에서 Date Picker Format 과 Date Time Picker Format 을 변경해줍니다.
징징거리는 포멧으로~






Posted by 자수씨
, |
영등포구청역에서 차량고장 발생;;; 다행히 외선열차 타는지라...

외선열차가 고장났다면;;; 출근시간에 춈 아찔했음다

지하철 타기 직전에 복구가 됐다는 방송이 나오네요

--------------------------------------------------
아... 그냥 고장났다고 했을 때 그 이후 상황을 예측해야 했는데... 갈비뼈가 나갈뻔했습니다. 못내린다고 우는 사람도 있고...

폭풍 지각;;;


iPhone 에서 작성된 글입니다.

Posted by 자수씨
, |

OACurl?? OAuth??

Google / 2011. 1. 18. 01:44

Google URL Shortener API 를 보다보니 OACurl 이란 것이 나왔습니다.

OACurl?? 프로젝트 홈페이지를 찾아보니 "OAuth-enabled HTTP tool written in Java" 라고 설명이 되어 있었습니다.
"자바로 구현된 OAuth 가 가능한 HTTP 툴"...  도무지 감이 오지 않습니다.

OAuth 는 또 무엇인지... 찾아보니 Open API 를 사용하기 위한 인증방식 표준이라고 합니다. 결국 OACurl 은 자바에서 Open API 인증이 가능하도록 구현된 라이브러리라고 보면 될 것 같네요.

OACurl 은 무슨 의도로 이름을 지었는지... 아직까지는 사용할 일이 없어 잠시 접어둡니다.


Posted by 자수씨
, |

2011년 1월 10일자 구글 코드 블로그에 "Google URL Shortener gets an API" 라는 포스팅이 올라왔습니다.

Google URL Shortener API 를 통해 애플리케이션이나 웹 페이지에 goo.gl 과 통합이 가능하다는 내용이였습니다.

기능은 크게 세가지를 제공합니다.

1. 긴 URL 짧게 만들기
2. 짧게 만든 URL 정보 확인하기
3. 짧게 만든 URL 분석

간단하게 긴 URL 짧게 만들기를 보면 아래와 같습니다.

POST https://www.googleapis.com/urlshortener/v1/url
Content-Type: application/json

{"longUrl": "http://www.google.com/"}

POST 방식으로 json 데이터를 가지고 API 호출을 하게되면 아래와 같은 결과를 얻을 수 있습니다.

{
   "kind": "urlshortener#url",
   "id": "http://goo.gl/fbsS",
   "longUrl": "http://www.google.com/"
}


티스토리에서는 durl 과 연동이 되는데, 해당 API 를 이용한 티스토리 플러그인도 만들 수 있겠네요.

Posted by 자수씨
, |

스프링을 2.5.6 에서 3 으로 버전 업을 한 후, iBATIS 쪽에서 문제가 발생하였습니다.



Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/kr/co/vicki/data/SqlMapConfig.xml]


여러군데를 뒤지다 보니, configLocation 에 classpath: 를 앞에 붙여서 하면 된다고 하는 글을 보았습니다.




=ㅁ=... 됩니다... 도대체 뭔 차이가 있던건지...

Posted by 자수씨
, |

[Spring 3] @Scheduled 설정

Spring / 2011. 1. 17. 16:25
설정에서 cron 은 cron 표현식을 이용하면 되고, 다른 설정의 경우 애매한 부분이 있어 정리를 합니다.

ㅁ fixedDelay
>> 모든 실행이 끝난 후 설정된 시간 이후에 메소드를 다시 실행합니다.


실행결과
start Mon Jan 17 16:17:16 KST 2011
end Mon Jan 17 16:17:17 KST 2011
start Mon Jan 17 16:17:22 KST 2011
end Mon Jan 17 16:17:23 KST 2011
start Mon Jan 17 16:17:28 KST 2011
end Mon Jan 17 16:17:29 KST 2011
start Mon Jan 17 16:17:34 KST 2011
end Mon Jan 17 16:17:35 KST 2011
start Mon Jan 17 16:17:40 KST 2011
end Mon Jan 17 16:17:41 KST 2011

위의 실행결과를 보시면 메소드 종료 후 5초 후에 다시 시작합니다.


ㅁ fixedRate
>> 해당 주기마다 메소드를 실행합니다.


실행결과
start Mon Jan 17 16:19:42 KST 2011
end Mon Jan 17 16:19:43 KST 2011
start Mon Jan 17 16:19:47 KST 2011
end Mon Jan 17 16:19:48 KST 2011
start Mon Jan 17 16:19:52 KST 2011
end Mon Jan 17 16:19:53 KST 2011
start Mon Jan 17 16:19:57 KST 2011
end Mon Jan 17 16:19:58 KST 2011
start Mon Jan 17 16:20:02 KST 2011
end Mon Jan 17 16:20:03 KST 2011

위의 실행결과를 보면 메소드가 끝나는 시간과는 관계없이 5초 후에 다시 시작합니다.

약간의 차이가 있으므로, 용도에 따라 사용하면 될 것 같네요~

Posted by 자수씨
, |

글 보관함

최근에 받은 트랙백