본문 바로가기

프로그래머로 살아가기

빠른 개발 생산성을 위한 Spring roo 와 OpenXava framework 그리고 스캐폴딩 현대 프로그래밍 언어나 프래임웍중에 스캐폴딩이라는 개념이 있다. 이게 원래의 사전적인 의미는 다음과 같다. 출처: http://experientia.co.kr/?p=244 스캐폴딩(scaffolding)의 개념– 스캐폴딩이란 교수자가 학생에 대하여 적절한 교수학습적 도움을 제공함으로써 유의미한 학습을 수행할 수 있도록 하는 것으로, 특히 학습자들로 하여금 자신의 현재 기능수준을 넘어서 다음단계의 수준까지 이르도록 돕기 위해 제공되는 지원 프로그래밍 언어에서의 스캐폴딩은 Data Model을 이용해서 CRUD(Create/Read/Update/Delete) 동작을 자동으로 제어해주는 코드를 생성해주거나 기능을 제공하는 것을 이야기한다. Ruby on rails 에서 이런 기능을 제공하면서 인기를 끌게 되면.. 더보기
Spring에서 배치잡 Background 프로세스 구동시키기 일명 배치잡(Batch Job) 이라고 하는 주기적으로 구동시켜야 하는 작업들을 Spring에서 구동 시키기 위하여서는 Spring Batch 라는 프로젝트가 따로 존재 합니다. Spring Batch가 배치작업의 끝판왕이라면 Spring이 주로 사용되기 이전부터 Quartz라는 라이브러리를 java쪽에서는 많이 사용을 했었는데요. Spring에서도 이 Quartz를 지원해서 간단하게 주기적인 배치작업을 구동시킬수 있습니다. 이렇게 스케줄러를 이용해서 Spring project상에서 배치작업을 Invoke시키는 방식은 통합적인 코드로 스케줄 작업들을 관리할수 있기 때문에 관리 측면에서 유리한 점이 있습니다. Spring 프로젝트 배포 시스템에서 따로 설정을 해주거나 관리를 해줄 필요가 없구요. 반면 WA.. 더보기
AWS(Amazon web service) 지역별 네트웍 Latency를 한눈에 알수 있는곳 http://www.cloudping.info 한국에서 가장 빠른 곳은 일본(Tokyo) region 으로써 51ms를 기록하고 있네요. 나쁘지 않습니다만 한국 IDC에 올라가 있는 서버에 비하면 아직 좀 느리기는 하네요. 한국쪽 서버는 대략 0.00X seconds ( X ms ) 정도가 나올것 같습니다. 예전에 비하면 상당한 발전으로 이젠 느려서 못쓰겠다는 소리는 못할것 같습니다. 더보기
한눈에 정리되는 HashMap TreeMap LinkedHashMap의 차이점 맨날 헷갈리는 부분이다. 한눈에 정리되는 HashMap TreeMap LinkedHashMap의 차이점 출처는 아래와 같다. 출처 : http://stackoverflow.com/questions/2889777/difference-between-hashmap-linkedhashmap-and-treemap 결론 : Sorting이 필요 없으면 괜히 TreeMap 같은거 쓸필요 없다. 더보기
Spring에서 apache HttpClient4 사용하기 Apache commons의 하위 프로젝트였던 HttpClient 프로젝트가 HttpComponent 프로젝트로 독립되면서 다양한 기능 지원과 함께 사용방법이 많이 바뀌었다. Spring에 integration해서 사용하기 위한 문서도 매우 부족하고 검색에서 나오는 예제들은 모두 이전 버전대에 해당하는 것들이라서, 기본적인 사용법을 참고 삼아 보라고 함 올려본다. Spring configuration Code @Autowired HttpClientBuilder httpClient; ... private void sendRequest(String url, String server, String counter) throws IOException { String parameter = "{host:" + ser.. 더보기
Spring 설정에서 콤마로 구분된 String을 array로 변환하여 사용하기 제목이 길고 이해하기가 어렵지만. 콤마로 구분된 스트링 (Comma separated string)을 array로 변환하여 사용하고자 할때가 많이 있습니다. 예를 들면 서버들이 여러대가 있을경우 property에서 server.host = server1, server2, server3 이렇게 표현을 하는게 심플하기 때문이죠. 물론 server1.host = server1server2.host = server2.. 뭐 이렇게 표현을 할수도 있습니다만 왠지 이런건 싫잖아요? 설정을 담을 수 있는 bean을 하나 만들어줍니다. Colored By Color Scripter™12345678910111213 public class ChatServerBean { private String[] servers; pub.. 더보기
Data Serialization / Deserialization 라이브러리 선택하기 최근에 굉장히 많은 수의 Data Serialization / Deserialization 라이브러리들이 나오고 있어서, 어떤 라이브러리를 선택해서 사용을 해야 하는지 고민하는 프로그래머들이 많으실것 같습니다. 위키피디아를 보면 정말 수많은 라이브러리들이 존재하고 있고 여기에 올라와 있지 않은 라이브러리들도 많은 실정입니다. http://en.wikipedia.org/wiki/Comparison_of_data_serialization_formats 저도 상황에 따라서 그때 그때 적당한 라이브러리를 선택해서 사용하고 있는데요. 그 기준에 대하여 이야기를 해보도록 하겠습니다. 우선 가장 먼저 고민을 해야 하는 것은 내가 사용하는 언어 지원 여부 입니다. Data Serialization / Deseriali.. 더보기
OpenCSV를 이용한 CSV파일 파싱 CSV 파일을 파싱해서 처리해야 하는 경우 선택가능한 라이브러리가 여러개 있는게 가장 많이 사용하시는게 3가지 정도 있는것 같습니다. 1. commons-csv : apache commons의 csv 라이브러리 http://commons.apache.org/proper/commons-csv/ 2. openCSV : http://opencsv.sourceforge.net 3. superCSV : http://supercsv.sourceforge.net/ 그중에 CSV파일을 Bean 오브젝트로 간단하게 변환하는 것을 제공하는 것은 OpenCSV입니다. 아래 같이 사용하시면 되는데요. public List getCsvObjectList(File file, Class className) throws IOExce.. 더보기
spring4.1 에서 response를 Json포멧으로 변환하여 출력 하는 방법 Spring에서 json포멧으로 결과를 출력하는 다양한 방법이 존재 합니다. 가장 간단한거로는 ModelAndView에서 출력하는 View를 json포멧으로 수동으로 찍어주는 방법도 있구요. View를 상속받은 JsonView 같은 거를 만들거나 라이브러리를 사용하여 Controller에서 리턴해주는 방법도 있구요. ViewResolver에서 JacksonJsonView를 매핑하여 사용하는 방법도 있습니다. 3.1버전 이상에서 부터 지원됐던걸로 기억합니다. (확인필요) Gson이라는 Google에서 만든 Json라이브러리를 사용하기위하여 찾아보던중에... 발견한것인데요. Spring4.1 버전에서 부터는 각종 message converter를 기본 지원하기 시작하는데요... 그중에 Gson도 지원을 하기.. 더보기
ProtoBuffer와 Spring을 이용하여 Rest 서비스 구현하기 ProtoBuffer와 spring을 이용하여 Rest 서비스 구현하기 Protobuffer를 차기 프로젝트에서 사용 예정인데, 이를 이용하여 바로 RESTful한 API를 구현할수 있는 방법이다. 딱 내가 찾던 방식인데 실제 서비스에서 사용할지는 미지수. http://www.slideshare.net/mokeefe/javaone-2009-ts5276-restful-protocol-buffers JavaOne 2009 - TS-5276 - RESTful Protocol Buffers from Matt O'Keefe 더보기