본문 바로가기

프로그래머로 살아가기/Java

빠른 개발 생산성을 위한 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.. 더보기
한눈에 정리되는 HashMap TreeMap LinkedHashMap의 차이점 맨날 헷갈리는 부분이다. 한눈에 정리되는 HashMap TreeMap LinkedHashMap의 차이점 출처는 아래와 같다. 출처 : http://stackoverflow.com/questions/2889777/difference-between-hashmap-linkedhashmap-and-treemap 결론 : Sorting이 필요 없으면 괜히 TreeMap 같은거 쓸필요 없다. 더보기
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.. 더보기
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 더보기
Netty개발자가 설명하는 Netty에 대한 개념 설명 DEView2012에 발표한 Netty Internals and Core Concepts [E6]2012. netty internals from NAVER D2 더보기
Groovy on Grails 에서 Maven 사용하기 요새 Groovy on Grails를 공부하고 있는데요, 재미있군요. java base 에서Rails 스타일로 프로그래밍을 가능하게 해줘서 생산성을 높여주는데 촛점이 맞춰진 언어입니다. 기본적인 내용들은 자료가 많이 있으니 찾아 보시면 될 것 같구요. 오늘은 Maven을 Integration하는 방법을 정리 해보려고 합니다. 기본적인 내용은 일단 아래 링크를 참조하시구요. http://grails.org/doc/latest/guide/4.%20The%20Command%20Line.html#4.5%20Ant%20and%20Maven 간략하게 핵심만 정리해 보도록 하겠습니다. 기본적인 컨셉은 다음과 같습니다. 1. grails maven plugin을 이용하여 프로젝트 생성 2. 프로젝트 초기화 3. mav.. 더보기
쓸만한 Cassandra Web Console Cassandra GUI Client 프로그램을 찾던중에 괜찮은 녀석을 발견해서 올려봅니다. Java 기반이고 war를 tomcat의 webapp 디렉토리에 넣어주기만 하면 됩니다. 처음실행시 Cassrandra Host , Thrift Port (보통 9160) , JMX port 를 입력해주시면 접속이 됩니다. 왼쪽의 Configuration 메뉴에서도 변경 가능하구요. 다운로드 페이지 http://github.com/suguru/cassandra-webconsole 소개하는 블로그 http://nosql.mypopescu.com/post/611576467/cassandra-web-console 스크린샷 더보기
작은 Tip , Freemarker에서 Httprequest의 Parameter를 사용하고 싶다면? ${RequestParameters['test']} 또는 ${RequestParameters.test} 로 사용하면 HttpRequest의 모든 Parameter를 사용할 수 있다. 또한 httpRequest의 Attribute를 사용하고 싶다면 다음과 같이 하면 된다. ${Request['AttributeName']} 또는 ${Request.AttributeName} 더보기
Java의 랜덤한 숫자 발생시 주의할점 Effective Java에 나오는 내용이긴 합니다만, 우리가 자주 저지르는 실수가 있습니다. 프로그램을 하다가 보면 자주 난수(Random number)를 발생시켜야 할 때가 있습니다. 아래와 같은 코드를 사용하여 많이 발생을 시키죠. private static final Random rnd = new Random(); static int random(int n) { return Math.abs(rnd.nextInt()) % n; } 논리적으로는 아무런 문제가 없어 보입니다. 그렇지만 실제적으로 다음과 같은 코드를 사용하여 테스트를 해보도록 합시다. public static void main(String[] args) { int n = 2 * (Integer.MAX_VALUE / 3); int low .. 더보기