2009/07 17

[Effective Java] 생성자의 매개변수가 많을 때는 빌더(builder)를 고려하자.

Static 팩토리 메소드와 생성자의 공통적인 제약은 선택 가능한 매개변수가 많아질 경우 신축성 있게 처리하지 못한다는 것인데, 흔히 나도 그러한데 텔리스코핑 생성자(telescoping constructor)패턴을 사용한다. 필수 매개변수들만 갖는 생성자, 필수 매개변수들과 선택 매개변수 하나를 갖는 생성자, 선택 매개변수 두개를 갖는 생성자 등등의 형태로 오버로딩을 통해 여러개의 생성자를 겹겹이 만드는 것이다. public class User{ private String id; private String pw; private String address; // .......15 more field public User(String id, String pw){ this(id, pw, null); } pu..

backend/Java 2009.07.31

[Jersey] WebApplicationException and Mapping Exception to Responses

이전에 블로깅했던 2009/06/05 - [나만의 작업] - Jersey의 Exception Handling 에 대해 조금 더 자세히 블로깅을 해봅니다. Jersey에서 Excpetion Handling하는 방법들 1) WebApplication을 상속한 새로운 클래스인 NotFoundException을 생성하여 던지기 NotFoundException을 throw하는 예 Example 1.25. Throwing Jersey specific exceptions to control response 1 @Path("items/{itemid}/") 2 public Item getItem(@PathParam("itemid") String itemid) { 3 Item i = getItems().get(itemid..

backend 2009.07.30

[책] 나~ 밑줄긋는 여자야~

밑줄 긋는 여자 - 성수선 지음/웅진윙스 위드블로그에서 신청받았던 책 "밑줄 긋는 여자". 제목이 참 신선하여 호기심에 간략하게 내용을 보았다. 내용을 본 순간 요즘 한창 책읽기에 재미붙인터라 더욱 의미가 있을것같아 신청하였는데 냉큼 당첨이 되었다. 아마 배송되고 삼일만에 책을 다 읽은 것 같다. 회사원인 작가는 어렸을때부터 독서를 좋아하는데 그동안 읽으며 감동받았던 글귀를 통해 자신의 인생을 돌아보고 많은 생각들을 풀어 적어놓았다. 처음엔 비슷비슷한 책이구나 생각했는데 점점 너무 공감되는 내용도 많고 다른 책의 글귀를 통해 삶의 다양성을 다시한번 고민하게 된듯하다. 최근에 많이 생각하는 고민들에 대해 '맞아~맞아~ 나만 그런게 아니구나' 하여 공감을 이끌어내기도 하고, 똑같은 상황에 다르게 생각하는구나..

[Jersey] Building URIs

REST의 중요한 점 중의하나가 URIs이다. java.net.URI를 이용해서 URI를 만들고 쓰는 법은 쉽지 않다. 만약, baseUri로 "http://localhost:8080/base"가 있고, 여기에 상대경로를 다음과 같은 상대경로를 추가하고 싶다. "a:b;param=matrix/hello world" 그래서, "http://localhost:8080/base/a:b;param=matrix/hello%20world" 결과적으로 이런 URI가 되야 한다. java.net.URI를 이용해 이런 상대경로를 만들수가 없다. new URI("a:b;param=matrix/hello world"); new URI(null, null, "a:b;param=matrix/hello world", null);..

카테고리 없음 2009.07.24

충무아트홀에서 느낀 두모악의 흔적..

전에 올린 글중에 2009/05/13 - [책과 영화,음악이야기/책] - [책/사진] 그 섬에 내가 있었네 의 리뷰를 쓰면서 고 김영갑 작가의 유작전에 꼭 다녀오겠다는 말을 7월에야 겨우 실행에 옮겼다. 다녀오신분들의 이야기가, 작품의 수도 얼마 없고 두모악갤러리의 감동을 느낄수 없으리란 말을 들은 터라 큰 기대는 하지 않고 집을 나섰다. 모처럼 여유로운 일요일에 기대감을 안고 잠에서 일어났는데 천둥번개와 비가 무섭게 내리고 있었다. 나가면 고생하겠군... 이렇게 5분 생각하고 그래도 비에 꺾일수 없어! 하고 집을 나섰다. 충무아트홀은 집에선 지하철로 30분이내 거리여서 그나마 용기(?)를 낼 수 있었던 듯 하다. 사람이 꽤 있었다. 연인들도 많았고.. 그러나 조용한 가운데 이야기 소리 들리지 않는 분위..

[Jersey] Building Responses

Jersey에선 Response를 다음과 같이 할 수 있다. POST 메소드인 경우의 예를 들면, Jersey에선 POST는 작업을 수행한 후 정상적으로 처리되면 201 상태코드를 리턴하고 Location Header에는 새롭게 생성된 리소스의 URI값을 리턴할 수 있다. 이렇게 자바의 내용이 이렇다면, @POST @Path("post") public Response post(String id) throws URISyntaxException{ URI createdUri = new URI("http://localhost:8080/user/" + id); create(id); return Response.created(createdUri).build(); } @POST @Path("postEntity") p..

backend 2009.07.21

내 시간 누가 훔쳐가나...

살아가면서 아직까지 답을 못찾고 있고 쉽게 찾아지지 않을 것 같은 주제가 있다. 그건.. "어떻게 시간을 도둑맞지 않을까?" 물론 나뿐만 아니라 전세계 많은 사람들이 고민하는 주제이기도 하겠지만.. 나의 하루가 너무 짧고, 언제 시간이 이렇게 흘렀지? 세월 참 빠르다...라는 말을 참 많이 하는 것 같다. 그말을 할 때마다 시간의 노예가 된듯 하고 시간이라는 녀석이 참.. 야속하기만 할 뿐이다. 요즘엔 해결책을 다른때보다 더 강구중이고, 그 시간이라는 녀석을 내것으로 만들기 위해 구애중이기도 하다. 언제까지 해야할지는 모르겠지만(아마 평생??) 그래도 매력적인 것 같아서 놓칠 수가 없다. 지난주에 도서관에서 여러책을 찔러보던 중 흔하디 흔하고 널리고 널린 시간관리에 대한 책을 속는 셈치고 집어들어봤다. ..

[Jersey] Representation and Java Types

참고 : Jersey 1.0.3 User Guide중의 내용 전에 올린 2009/06/02 - [나만의 작업] - JAX-RS @Produces와 @Consumes 에서 많이 본 Java type은 "String"인데, 거기서 본 String은 JAX-RS 구현을 지원하기 위해 필요한 많은 Java type들 중의 하나일뿐이다. Java type은 byte[], java.io.InputStream, java.io.Reader, java.io.File등이 있다. 게다가 JAXB beans도 지원해준다. 참고로 JAXB의 beans들은 JAXBElement나 @XmlRootElement 나 @XmlType라고 annotation 붙여진 클래스이다. Example 1.17. Using File with a s..

backend 2009.07.16

[CouchDB] HTTP Document API

CouchDB wiki에 있는 내용을 보고 정리한 내용입니다. 제가 하고싶은걸 실습한 것이기 때문에 삭제된 내용도 있습니다. Naming/Addressing CouchDB에 저장된 Document들은 DocID를 가진다. DocID는 유니크한 아이디. 두개의 document는 같은 database안에 같은 identifier를 가질 수 없다. "test"라는 이름의 database안의 some_doc_id, another_doc_id, BA1F48C5418E4E68E5183D5BD1F06476 이름의 document가 있다. http://localhost:5984/test/some_doc_id http://localhost:5984/test/another_doc_id http://localhost:598..

backend/DataBase 2009.07.14

[CouchDB] Compaction

CouchDB의 Reference중 Compaction CouchDB 공식 wiki에 적혀있는 내용을 간략히 정리해서 쓴 글입니다. Compaction Compaction은 database파일을 다시 쓰는 것. outdated document revision을 제거하고 document를 삭제한다. curl을 이용하여 테스트해보자! ~]curl http://localhost:5984/buri ('buri'라는 이름의 DB의 간략한 정보를 볼 수 있다.) {"db_name":"buri","doc_count":2,"doc_del_count":2,"update_seq":6,"purge_seq":0,"compact_running":false, "disk_size":16361,"instance_start_time"..

backend/DataBase 2009.07.13

[CouchDB] HTTP database API

CouchDB의 Reference중 HTTP database API CouchDB wiki에 있는 내용을 보고 실행해 본 과정을 올립니다. 제 나름의 정리이기에 생략된 것도 있습니다. 실행은 curl을 통해서 주로 하였습니다. Naming and Addressing database 이름은 모두 소문자 a-z, 숫자 0-9, _$()+-/ 문자로 이뤄져야 하고 slash(/)로 끝나야한다. http://couchserver/databasename/ http://couchserver/another/databasename/ http://couchserver/another/database_name(1)/ 주의! 대문자는 database 이름에 포함되어서는 안된다. http://couchserver/DBNAME/..

backend/DataBase 2009.07.09

제발 저 신문 좀 읽게 해주세요...

아침에는 집에서 출근준비를 하며 뉴스를 보고와서 그런지 회사에 와서 인터넷 뉴스는 잘 읽지 않는 편인데 오늘도 역시 네이버에서 무슨 검색을 하러 왔다가 뉴스에 낚여 클릭하는 순간! 짜증이 확~~~ 밀려오네요.. 도대체 기사를 읽으라는 건지... 참 네이버에서 커스텀하게 원하는 신문만 읽게 해주는데 요런덴 빼야겠군요 26살에 백만장자가 된 비결이 뭘까? 하고 클릭해서 왔더니 20줄 정도 되는 글을 읽기 위해 이렇게 화면 지저분한 광고와 배열로 가득한 화면을 보니 매우 산만합니다. 문제는 이뿐만이 아닙니다. 신문에서 중요한 수입원인 광고. 배치해 놓는거 어쩔수 없고 중요한 거 인정합니다. 글쓰기에서 가장 중요한 초반! 도입부를 저렇게 플래쉬 광고로 띄어놓고 아무리 기다려도 광고는 사라지지 않고, 답답한 마음..

하루하루 2009.07.09

[CouchDB] 초간단 Mac에서 CouchDB 실행하기

one-click으로 가장 간단하게 Mac에서 실행하는 방법! 이보다 더 간단할 수 없다. 링크 : http://janl.github.com/couchdbx/ 2009년 7월 현재 0.9.0-R13B 버젼을 받을 수 있다. 이 버젼엔 Erlang R13B, Spidermonkey 1.7 and ICU 3.8 가 포함되어 있다. 앞으로 계속 업데이트 될테니 저 링크에서 다운로드 받으세요~~ 다운로드 후 더블클릭 하면 실행된다.! 끝!

backend/DataBase 2009.07.07

[CouchDB] 1. CouchDB가 뭐지?

CouchDB???가 뭐지 하고 찾아보니 CouchDB는 아파치 오픈소스 프로젝트이고, DB이지만 Non-Relational Database이고 document-oriented기반이라고 합니다. 뭔가..새로운 포스가 느껴지는데.. 뭔가 개성이 강한 느낌..으로 조금 더 살펴보면, Couch를 사전에서 찾아보면 이런 뜻을 가지고 있는데.. 1a 긴 의자, 소파 《기댈 수 있는 등받이와 팔걸이가 있는》 2 《문어·시어》 침상, 잠자리 3 《일반적으로》 휴식처 《풀밭 등》;(야생 동물의) 은신처, 굴(lair) 딱 이름만 듣고는 이런 DB를 만들고 싶지 않았을까란 생각은 들지만, Cluster Of Unreliable Commodity Hardware의 약자라고 하네요.. 특징은 * RESTful API * ..

backend/DataBase 2009.07.07

2연승이 눈앞을 가리는 군요..

오랫동안 조용하다가 조용히 공군에 입대한 "홍진호"선수! 6월 20일에 있었던 홍진호-김택용 경기에서 황신으로 정말 짜임새 강한 경기로 735일만에 공식전 승리를 거뒀는데 그 경기를 보며 오랫만에 스타크래프트를 보며 눈물이 앞을 가릴때만 해도(gg쳤을때 눈물이 글썽이니깐 옆에서 같이 난생처음 저때문에 스타크래프트 경기를 같이 본 룸메이트가 절 이상하게 보더군요.) 그 감동만으로도 포스팅을 할 생각이 없었는데.. 오늘은 그만.. 김택용에게서 gg를 받아냈을때 환한 웃음ㅋㅋ (출처 : 포모스) 7월 4일 토요일에 있었던 김재훈과의 경기에서 초반에 김재훈 견제에 늦어진 멀티와 자꾸 흔드는 바람에 조마조마하며 설마설마 홍진호가 이길 수 있을까란 마음이... 다시 유리한 상황이 이끌다가 드랍 다크에 본진이 위험해..

잡동재미꺼리 2009.07.05