본문 바로가기

JAX-RS @Produces와 @Consumes * Content negotiation Representation을 서버에서 클라이언트로 받을 때 정보를 넘겨줄때 두가지 전략이 있다. (뷰를 판단하는 방법) 1. 하나는 다른 URI를 주는것. http://www.flyburi.com/user/buri.pdf http://www. flyburi.com/user/buri.xml 이렇게 다른 파일 확장자를 주는 방법 2. 다른 하나는 같은 URI를 주고 미디어타입의 리스트를 Accept HTTP request header에 주는 방법. http://www.flyburi.com/user/buri 라고 주고 Accept header에 application/pdf or text/xml이라고 주는 방법 이 방법을 content negotiation이라고 한다. A..
JAX-RS의 구성 1. Root Resource Classes * 웹 리소스을 구현하기 위해 JAX-RS 어노테이션을 사용하는 자바 클래스 적어도 하나의 메소드에 @Path을 사용한 POJO Root resource class들은 JAX-RS runtime에 인스턴스화된다. @Path 어노테이션이 달린 Resource 클래스 @Path("/hi") public class HiResource { @GET @Produces("text/plain") public String getAsText() { return "Hi! buri. Show Text."; } 2. Resource Methods @GET @POST @PUT @DELETE @HEAD * URI Templates @Path annotation의 값은 상대 경로 URI..
What is Jersey? 구글에서 "Jersey"를 치면 제일 처음으로 Map에서 저지섬이 나오고 두번째 링크로는 역시 위키피디아의 저지섬이 나온다. 세번째 링크가 되어서야 내가 원하는 jersey 공식 홈페이지가 나온다. Jersey는 SUN에서 개발하는 REST 방식의 웹 어플리케이션을 지원하는 JAX-RS의 구현체의 이름이다. Jersey is the open source (under dual CDDL+GPL license), production quality, JAX-RS (JSR 311) Reference Implementation for building RESTful Web services. But, it is also more than the Reference Implementation. Jersey provides..
What is JAX-RS? JAX-RS(Java™ API for RESTful Web Services)는 자바 플랫폼에서 경량화된 REST 방식의 웹 애플리케이션 구현을 지원하는 자바 API이다. SOAP기반의 SOA 연동은 자바 애플리케이션을 무겁게 한다는 비판과 함께, 최근 웹 애플리케이션의 경향인 AJAX기반으로 JSON이나 RSS와 같이 간결한 프로토콜을 사용한 연동이 보편화되면서 쉽게 구현할 수 있도록 Java EE에 JAX-RS 라는 사양이 포함되고 있다. (출처 : http://ko.wikipedia.org/wiki/JAX-RS) 2008년 10월에 JSR 311 1.0 released 되었고 2009년 5월 현재는 JSR 311 1.1 draft 상태이다. Open source 구현체로는 Jersey Restlets..
What is REST? REST는 2000년도에 Roy Fielding의 박사학위 논문에서 네트워크 시스템의 구조적 형식(architecture style)을 설명하기 위해 만들어진 용어이다. 최근도 아니고 이미 뜰만큼 뜬 REST에 대해 정리해보자. 정의 REST stands for "REpresentational State Transfer" REST is an architecture style not a standard : REST는 비표준 아키텍쳐 스타일 Data and Service are represented by unique URI : unique한 URI를 통해 Data와 Service를 표현한다. 특징 Addressable Resources Every "thing" should have a URI Stateles..
[책/사진] 사진읽는 CEO⑤/ 정연두 - 드림위버(dreamweaver) 미디어 아티스트인 정연두. 내게 세번 감동을 준 작가 내가 처음 그의 사진을 본 건 작년전시회에서 사진을 보며 가장 알 수 없는 사진은, 이 두 사진이었다. 도대체 이 작가는 뭘 말하려는 거지? 도무지 이해가 안되네...하고 픽~ 지나갔다. 다시 한바퀴를 돌고 도슨트의 설명과 사진 설명을 들었을 때 팍! 스치는 쇼크란... 아, 이 작가는 평범한 사람들의 꿈을 이뤄주는 사진을 찍었구나. 갑자기 실망함에서 큰 감동으로 다가왔다. 그날 같이 본 사람들과 오늘 가장 인상에 남는 작품은 뭐였냐는 질문에 난, 이 사진을 뽑았었다. 물론 더 좋은 작품 더 유명한 작품도 있었지만, 그날 알게된 정연두라는 작가의 꿈 주제인 사진이 가장 좋았었다. 한번도 생각해본적없는 꿈을 이루어주는 사진. 위의 사진은 정연두의 라는 ..
[책/사진] 그 섬에 내가 있었네 그 섬에 내가 있었네 (양장) - 김영갑 지음/휴먼&북스 사진을 보면서 눈물이 똑똑똑... 어느 파노라마 사진 한장 앞에서 난 처음으로 사진을 보면서 진한 감동을 느꼈다. 지난 4월에 여행을 갔던 제주도를 4박 5일동안 여행하면서 가장 좋았던 곳을 꼽으라고 한다면 마지막 날 여행지였던 "김영갑 갤러리 두모악"을 말한다. 풍경으로 따지면 제주도의 마라도가 환상이었지만, 가장 행복했던 공간은 두모악이었다. 돈 아깝지 않을 정도로 각종 포스터를 사고 들고오는 길에 얼마나 짐이 많아졌었던지.. 고 김영갑 작가의 파노라마 사진앞에서 왜 난 그리 감동을 받았을까? 아직 그 느낌을 말로 표현하기엔 부족하지만, 제주도 그 갤러리에서 다시 서보면 더 정확히 알까나... 다시 일상으로 돌아와 가장 먼저 한 일이 인터넷 서..
[Spring] @Autowired의 Before/After Spring framework 2.5에 추가된 @Autowired annotation에 관한 글을 보고 정리. 알고있는 내용이기에~ 그냥 가볍게 Before 와 After code Before - @Autowired annotation이 없었을 때 applicationContext.xml에서 설정 EmpDao의 bean을 inject public class EmpManager { private EmpDao empDao; public EmpDao getEmpDao() { return empDao; } public void setEmpDao(EmpDao empDao) { this.empDao = empDao; } ... } 이랬던 코드가~ 바뀐다. After applicationContext.xml에서 설정..
[오라클] 초성검색 오라클 데이터 중에 'ㄱ'으로 시작되는 것! 찾을려면~ 막상 생각나지 않는데~ 알고보면 간단하다! 뜨아 WHERE NAME >= '가' AND NAME < '나'
자주 쓰지 않아서 잊어버리는 간단한 Oracle SQL문들 1. 제약조건 추가 alter table XXX add constraint uq_XXX unique(xxx); 2. 제약조건 확인 select constraint_name, table_name from user_constraints where table_name = 'XXX'; CONSTRAINT NAME은 USER_CONSTRAINTS VIEW를 통해 확인 가능. 모든 CONSTRAINT는 DATA DICTIONARY에 저장된다. 3. index 확인 select a.index_name,a.index_type,a.status,a.uniqueness,a.table_name,b.column_name from user_indexes a,user_ind_columns b where a.index_name=b...
[책/사진] 사진읽는 CEO④ / 로베르 드와노 - 발견, 제2의 창조 곁눈질(Sidelong Glance, 1948) 이 사진을 보면 큭!하고 웃음이 먼저 난다. 한 아저씨의 숨길 수 없는 곁눈질... -------------------------------------------------------------------------------------- 길을 가던 중년 부부가 발걸음을 멈추고 쇼윈도의 그림이 마음에 들어 보고있는 모습이다. 두 부부의 차림새로 보아 상류층 인사로 보이고 그림에 대한 진지한 관심이 이들 부부의 사회적 위치나 지적 수즌을 짐작하게 한다. 감상하고 있는 그림은 '바그너'의 작품이라고 한다. 부인은 그림에 대해 진지하게 설명을 하고 있지만 남편의 눈이 곁눈질로 다른 그림을 보고 있다. 그것을 몰래 보고 있는 또 하나의 시선, 바로 그 화랑 안쪽에..
[책/사진] 사진읽는 CEO③ / 도로시아 랭, 인간에 대한 예의 미국의 여성 사진가인 도로시아 랭은 농업안정국(FSA) 사진가들중 한 사람이다. 7년동안 FSA운동에 가담하면서 공황기의 미국을 특히 이민 노동자나 소작인 등을 중심으로 한 다큐멘터리 사진을 발전시킨 장본인이다. 같이 활동했던 워커 에반스가 생활환경 중심의 사진을 찍었다고 하면 도로시아 랭은 인물사진에 초점을 맞추었고 특히 인물 클로즈업을 많이 하였다고 한다. 예전에 매그넘 사진작가중에 유일한 여성이었다고 해서 일단 거기에 한번 관심이 갔었는데 이번에 사진을 더 찾아보니 더욱 끌리는 사진이 많다. 여성 사진가인 도로시아 랭(Dorothea Lange, 1895 ~ 1965) 화이트 엔젤 급식소(White angel bread line, 1933) 이것은 인생의 한 단면일 수도 있다. 자신의 의지와 상관없..
[책/사진] 사진읽는 CEO② / 알프레드 스티글리츠 - 찾아올 기회를 마음에 그려라 기다림. 기다림중의 종류중에 지루하지 않고 재미있는 것은 편지와 사진이 아닐까 생각한다. 편지를 쓰고 답장을 기다리고, 편지가 왔나..하고 우체통을 들여다 보는 일은 전혀 지루하게 생각해 본 적이 없는 것 같다. 늘 설레이는 일중의 하나다. 사진을 찍으며 셔터를 누르기 전에 내가 바라는 무언가가 카메라 뷰파인더안에 들어오길 바라는 그 기다림도 역시 설레인다. 정말 좋아하는 N사의 광고 카피문구중에.. 72시간의 고독 그리고72시간의 기다림 마침내 나를 의식하지 않게 되었다 나를 의식하지 않게되는 순간은 많은 기다림 많은 노력끝에 찾아오는 것이리라.. 아직 느껴보지 못한 1人 ^^; ---------------------------------------------------------------------..
[책/사진] 사진읽는 CEO① / 로버트 카파 - 한발 더 가까이 다가가라 난 평생 결정적 순간을 포착하길 바랐다. 하지만 인생의 모든 순간이 결정적 순간이었다. - 앙리 카르티에 브레송 책 겉표지에 써있는 글귀. 정말 공감하는 말이다. 카메라를 들고 순간포착을 하기 위해 이리저리 찾아다니는 그 모든 순간이 어느 순간 깨닫는다. 정말 소중하고 결정적인 순간이었다는 것을. 유명한 작가와 짧게나마 그들의 사상을 잘 설명주어 책을 읽으며, 와닿았던 사진들과 책 글귀와 감상을 적어봅니다. 로버트 카파, 어느 인민 병사의 죽음(Death of Loyalist Soldier, 1936) 22세의 로버트 카파 이 사진을 라이프 지에 실으면서 이름을 떨치게 되는데 한 병사가 적군을 향해 돌진을 시작하려는 순간 총탄을 맞고 쓰러지는 장면. 짧은 생애동안 5번의 전쟁에 참여하며 전쟁속에 태어나 ..
Thinkfree Office Live 한국어 서비스 시작 오랫만의 포스팅이~ Thinkfree Office Live 국내에 서비스를 오픈하는 내용이네요~ 드디어~ 오픈!~^_^ "무료 웹 오피스 + 무료 웹하드 + 간단한 협업 + 전세계 문서검색"으로 이루어진 Thinkfree Office Live는 "빠른시작"으로 로그인하지 않고 문서 미리보기, 파일변환, 공유, 검색등이 가능합니다. 급한 문서를 받았는데 어떤 내용인지 보기만 하면 되는데~ 해당 컴퓨터에 오피스가 안깔려있을 때 난감함은 누구나 다들 한번씩은 있을텐데 문서변환을 하고 유니페이퍼로 금방 확인해 볼 수 있습니다. 변환한 파일을 블로그에 올릴수도 있구요~ 다양한 문서 검색도 할 수 있답니다. 또 파워툴을 이용하면~ 온라인 오프라인 파일 동기화를 할 수 있답니다. Thinkfree Office Liv..
내가 다녀온 나라를 지도로 표시해보니 갑자기 생각나서 내가 다녀온 나라를 Wolrd66에서 표시해 보니, 두군데 밖에 없는데 넓은 중국에서 한군데 도시를 다녀온건데 표시는 중국전체로 된다. 중국과 일본을 합치니 세계중 1%에 속한다고 되어있다.ㅋㅋ 역시 세계는 넓고 할일은 많다. 친구도 한번 해보라고 했더니, 유럽 6개국 싱가포르 호주 캐나다 이렇게 방문하여 나도 많은 나라를 붉은 색으로 채우고 싶다~~ 담엔 러시아를 가볼까.ㅋㅋㅋ
"난 아쉬울 것이 없어라" 내가 눈감는 날.. 난 자신있게 "난 아쉬울 것이 없어라" 라고 말할 수 있을까? 저 한 문장이 내 가슴에 깊이 박힌 오늘. 내가 쫓고 있는 일들이 먼 훗날 아니 오늘이라도 부질없다고 느껴진다면 얼마나 허무할까.. 그 분은 몇벌의 옷과 5개의 안경을 남기고 가셨지만, 정말 어느 누구도 얻기 힘든 것들을 남기고 가신 듯 하다. 그동안 그분에 대해 많은 걸 몰랐다고 하더라도 떠나는 뒷모습이 그리 평온하고 인자하고 정말 부러울 것 없는.. 난 현재를 어떻게 살아야할까? 새삼 많은 고민에 휩싸여본다. 지금껏 가졌던 생각들이 조금씩 충격으로 다가오고 이 고민들이 앞으로 나의 길을 다시 잡아주는 계기가 될 것이다. 집에 돌아와 침대에 누울때 '오늘 하루는 아쉬울 것 없는 하루'였는지 생각한다면 좀 더 나은 내가 되..
iPhone이 이젠 큐브도 맞춰주는구나.. CubeCheater라는 이름의 iPhone application은 Rubik's Cube의 해결책을 알려주는 프로그램인데, App Store에서 $1면 살수있군요.. 동영상에서 보면, 현재 큐브 상태의 색을 입력(터치로)해주고 다른 면들은 카메라를 찍어서 상태를 찍으면 어떻게..어떻게 돌리면~ 딱! 맞춰주는군요. 와우 간단한 아이디어지만(구현은 꽤 복잡했을듯..), 왠지 모를 무서움... 이 프로그램을 쓰면 굳이 큐브를 왜 맞추나란 생각도 들지만, 정~~~ 답답할 때 사용하면 정말 좋겠군요!! CubeCheater 홈페이지 : http://cubecheater.efaller.com/
[dW] JUnit과 TestNG 자세히 살펴보기 JUnit 테스트 픽스쳐는 특정 로직이 테스트 전후에 실행되도록 보장하는 하나의 약정이므로 손쉽게 재활용할 수 있다. JUnit 4 이전 버전에서는 setUp() 메소드에서 각 메소드마다 필요한 일들을 명시하면, 각 테스트 메소드가 실행되기 전에 각각 한번씩 실행이 되었다. 하지만 픽스쳐에 따른 상당한 오버헤드가 있었고 이 메소드를 한번만 하게 하려면 한번만 실행되도록 지정하는 방법이 번거로웠지만, JUnit 4에서는 모든 테스트에 대해 또는 전체 클래스에 대해 한 번 픽스쳐를 실행하거나, 아예 실행하지 않을 수 있도록 좀더 유연해 졌다. 클래스를 겨냥한 @BeforeClass, @AfterClass : 한 클래스에서 한번만 일어나도 되는 일들을 정의 메소드를 겨냥한 @Before, @After : 각 ..
[dW] 사람을 위한 자동화: 연속 테스팅 개발자라면 프로그램을 짤때마다 항상~ 고민되는 테스트를 어떻게 최대한 구멍없이 하여 멀쩡한 프로그램을 짤까~~가 늘~ 고민중의 하나이겠지요. Junit을 이용하여 단위테스트를 하긴 하지만, Database를 사용한다면 기본적인 CRUD 테스트 메소드 말고 내 눈에 안보이는 구멍난 부분을, 더 많은 기능을 복잡하게 하는 부분을 어떻게! 어떻게!! 테스트해야할까.. 고민에 빠져서 자료를 찾아보니... 사람을 위한 자동화: 연속 테스팅 (한글) 이 글에선 많이 유명한 Junit과 DbUnit을 쓰라는 간략적인 내용이 나와있고, 또 성능에 대한 고민은 JUnitPerf이라는 성능 테스트 도구를 이용하면 되는군요. JUnitPerf는 Junit과 함께 작동하는 프레임워크로 미리 정해진 시간 안에 테스트가 미쳐 다..