본문 바로가기

java

아파치 Commons Lang 유익한 기능 활용법 [IBM DW 201009] 무슨 프로그램이든 글이든 보고 듣기엔 참 좋은 프로그램 또는 글인것 같은데 막상 활용해보자니 뭔가 두루뭉실하고 현실에 맞지 않는 것들이 있습니다. 저는 물론 간결하면서 바로 써먹을수 있는 프로그램이나 글이 좋습니다. 그런 의미에서 제가 좋아하는 바로 써먹을수 있는 실용적인 기사를 발견했습니다. 잠깐의 활용법만 알면 아파치 Commons Lang에서 제공하는 유틸리티 기능을 바로 써먹을 수 있습니다. * equals * hashCode * toString 이 3개의 메소드는 자바의 Object 클래스에서 제공하는 자주쓰는 메소드입니다. 특히 equals와 toString은 많이 쓰는 메소드죠~! 근데 보통 이 메소드들 그냥 쓰지만 가끔은 예를 들어 이런 상황이 생깁니다. Account acct1 = new.. 더보기
Excel, XML 및 Java 기술을 사용하여 간편하게 보고하기 [IBM DW 201008] 프로젝트를 하다보면 알게 모르게 자주 쓰는 모듈이 있습니다. 저 같은 경우 사이트를 개발하면서 엑셀을 자바로 자바를 엑셀로 변환하는 요구사항이 종종 생겼습니다. 그때 아마도 jxl 이라는 모듈을 쓴걸로 기억합니다. 그런데 jxl이란 모듈 쓴적이 5년이 넘었으니 이 모듈은 조금 옛날것이 되지 않았나 싶습니다. 여기 IBM DeveloperWorks에서 엑셀 변환 모듈에 대한 설명을 제공합니다. Apache POI라는 아파치 오픈소스기반 엑셀 변환 모듈을 설명합니다. 지금 한창 프로젝트 하면서 엑셀 변환 모듈이 필요하여 고민하던 분이 계시다면 이 기사를 꼭 읽어보시길 바랍니다. Excel, XML 및 Java 기술을 사용하여 간편하게 보고하기 더보기
Apache Click 알아보기 [IBM DW 201008] 제가 항상 많이 했던 생각이 그리고 블로그에도 종종 썼던 내용이 "프레임워크" 다 좋은데 오히려 기술 적응의 난이도와 복잡성 때문에 역효과가 있다는 것입니다. 자바가 정말 많이 쓰이고 오픈소스 환경이 발달했기 때문일까요. 초기 하나의 JSP에 모든 로직을 담아 생기는 유지보수의 불편함을 없애기 위해 스트럿츠등의 프레임워크가 발전하더니 지금은 오히려 복잡하고 어려운 프레임워크를 보완하는 '간단한 모델을 사용하여 신속하게 웹 애플리케이션 작성' 하는 Apache Click 프로젝트가 생겼습니다. 한마디로 틈새시장 공략이군요~! 정말이지 잠깐 관심을 두지 않아도 개발자를 위한 다양한 프로젝트가 생성되는것 같습니다. 아파치 클릭은 그 추구하는 목표답게 어느 프레임워크보다도 무척 가볍겠지만 유닛 테스트등의 개발자.. 더보기
상속과 구성 - 수필 객체지향 시골의 아이들은 어렸을때 물가에서 놀면서 형들이 약간만 알려주면, 저절로 헤엄치기를 배운다. 누가 정석으로 가르쳐 준것도 아닌데 잘도 헤엄친다. 상속은 시골 아이들의 야생 헤엄치기와 같다. 객체지향에 대해 약간의 지식만 익히고 사용할 줄 알면 상속을 습관처럼 저절로 쓰기 때문이다. 아이들의 야생 헤엄치기는 물가에서 놀기는 좋다. 그러나 수영 전문가가 볼때는 비효율적인 동작의 조합으로 조잡해 보인다. 만약 아이들이 물가에서 놀기위해 헤엄치기를 한다면 모르지만 좀더 전문적으로 수영을 하고 수영 대회도 나가고 짝사랑하는 영희에게 멋진 폼을 보여줄라면 지금의 헤엄치기는 문제가 있다. 상속은 복잡하지 않은 프로그램에서 대충 사용하기는 좋다. 그러나 객체지향 전문가가 볼때 상속을 무작정 사용하면 비효율적인 코딩이 .. 더보기
상속과 폴리모피즘 - 수필 객체지향 객체지향 대부분의 장점은 상속과 폴리모피즘으로부터 출발한다. C등의 절차지향 개념을 공부한 사람이 처음 상속과 폴리모피즘 개념을 배울때도, 난생 처음 프로그래밍을 배우는 사람도, 상속과 폴리모피즘 개념을 이해하는데 어려움을 표시한다. 그러다가 결국 나는 절차지향이 좋아~하며 다시 익숙한 방식의 프로그래밍으로 돌아가거나, 상속과 폴리모피즘 개념을 이해하지 않은체 객체지향 언어지만 절차지향적으로 프로그래밍을 하곤 한다. 그러나 상속과 폴리모피즘은 마치 대한민국 젊은 남자의 군대생활 처럼 반드시 거쳐야 하고 반드시 이해해야 하는 과정이다. 상속은, 스승과 제자사이와 비슷하다. 스승은 제자에게 자신의 모든 기술을 전수한다. 제자는 스승의 기술을 고스란히 체득한다. 또는 스승의 기술을 완전히 습득하기 전까지는 스.. 더보기
캡슐화와 정보은닉 - 수필 객체지향 캡슐화란 용어는 용어의 뜻을 이해하는것도 두루뭉실하지만 그 쓰임새도 애매모호하다. 나는 몇년 경력이 되어서도 캡슐화란, 객체의 속성을 private로 만들어 이것을 get/set 메소드로 호출하는 방법으로만 이해했다. 그런데 저 객체지향 캡슐화 이론과는 다르게 실제 프로그래밍에서는 객체의 속성을 public으로 만들어 직접 호출하는것과의 차이점을 느끼지 못했다. 오히려 private로 선언하면 클라이언트에서 저 속성을 가져올때 get/set을 쓰느라 코드 보기가 더 지저분해서 좋게 생각하지 않았다. [삽화] 캡슐화는 객체지향 개발의 중요한 장점중에 하나이지만, 나는 상속과 구성 폴리모피즘의 장점은 이해하면서 유독 캡슐화의 장점을 이해하지 못했다. 캡슐화의 정의와 캡슐화가 왜 좋은지 따로 공부해야 했다. .. 더보기
오버로딩과 오버라이딩 - 수필 객체지향 오버로딩은 마치 맥가이버칼의 부속품과 같다. 같은 몸통(메소드 이름)에서 꺼내는 위치만 바꾸면(인자값) 다양한 기능이 발견된다. 오버로딩은 같은 이름의 메소드의 인자값(=시그네처)를 다르게 주어 개별적으로 개발자 입맛에 맞게 호출할 수 있는 방법이다. 내 경험으로 오버로딩은 생성자 호출에서 특히 많이 쓰인다. 처음 객체를 생성할때 오버로딩된 다양한 생성자들의 용도를 파악하여, 써야 되는 상황에 알맞게 해당 객체를 사용할 수 있다. - 생성자 오버로딩 예제-병아리 부화 클래스 public static void main( String[] args ) throws Exception { ….. Chick chick1 = new Chick(); // 1 Chick chick2 = new Chick(“먹이”); /.. 더보기
인터페이스 - 수필 객체지향 인터페이스(Interface)는 산의 맑은 공기와 같다. 등산할때는 항상 맑은 공기를 마실 수 있지만, 맑은 공기의 고마움은 쉽게 인식하지 못한다. 등산을 마치고 도시속에 찌든 공기를 마시고 기침을 콜록일 때서야 그 고마움을 깨닫곤 한다. 인터페이스는 바다의 해삼과 같다. 해삼은 인간에게 가장 이로운 영양을 주는 해산물로, 해녀가 깊은 바닷속에 잠수해야 겨우 몇마리 건져올리는 해산물이다. 인터페이스는 산의 맑은 공기처럼 늘 객체지향 개발자와 함께 하는 존재이며, 무의식중에 쓰이는 존재이지만, 인터페이스의 고마움을 쉽게 인식하지 못한다. 개발을 마치고 어지럽기만한 코드를 디버깅 하다가 인터페이스 형식으로 리팩토링 해서야 그 고마움을 깨닫곤 한다. 인터페이스는 바다의 해삼처럼 객체지향 요소 중에서 개발자에게.. 더보기
디벨로퍼웍스 늦가을 행사 개발자들의 수다 IT개발자를 위한 사이트 IBM developerWorks 에서 IT개발자를 위한 행사를 준비했다고 합니다. 디벨로퍼웍스 늦가을 행사 개발자들의 수다 IBM developerWorks에서 독자, 필자, 리뷰블로거 등이 함께하는 즐거운 이야기 장을 마련합니다. 이름하여, ‘개발자들의 수다’ 입니다. 이 행사는 '현장에서 참여자들이 토론 주제를 정해서 실시간으로 자유로이 이합집산하면서 토론을 진행'하는 OST(Open Space Technology) 형식으로 진행할 예정입니다. 정해진 아젠다 없이, 현장에서 함께 얘기 나눌만한 주제를 정하거나 건의해서 독자, 필자, 리뷰블로거들이 편안하게 생각을 나누고 그 과정에서 서로 영감을 받을 수 있는 행사입니다. 개발자로서의 진로, 고민이나 기술 및 트렌드에 대한 난.. 더보기
자부심 강한 캐나다 IT개발자 마크를 인터뷰 하다. 예전 블로그에도 올렸지만 제 여동생은 캐나다에서 취직하고 공부하며 생활하고 있습니다. 그곳에서 캐나다인 남자친구 마크를 사겼고, 최근 휴가를 받아 한국에 귀국하여 마크와 함께 우리집에서 2주동안 휴가를 보냈습니다. 처음에는 낯선 외국인하고 같이 지낸다는 것이 무척 부담스러울 것 같았지만 재미있는 일도 많았고 마크와 좌충우돌 콩글리쉬 대화를 통해 영어공부도 하면서 색다른 추억을 만들 수 있었습니다. 특히 저하고 마크랑 친하게 지낼 수 있었던 이유는 마크도 저랑 똑같이 IT개발자였기 때문입니다. 여동생, 마크, 나랑 셋이 대화하다가 화재가 IT로 빠지면 오히려 여동생은 못 알아듣고 마크랑 나랑 통하는 경우도 있었습니다. 마크가 .NET, Spring Framework, Loose Coupling, SOA 등.. 더보기
진화하는 홈 리눅스 그리드 컴퓨터 설치 위키강좌 이 강좌의 저작권은 mckdh.net에게 있고 아래 저작자표시-비영리-변경금지 의 Creative Commons License 약관을 따라야 합니다. 이 강좌는 위키로 제작되어 문서의 추가, 수정, 삭제가 용이하기 때문에 지속적으로 문서가 진화될 예정입니다. Contents 1 홈 리눅스 그리드 컴퓨터 환경 설치 배경 2 서버 설치 (레드헷9) 2.1 네트워크 설정 2.2 telnet, ftp 설정 2.3 java 설치 2.4 mysql 설치 2.5 Apache 설치 2.6 PHP 설치 2.7 Tomcat 설치 2.8 JK 설치 2.9 삼바 설치 2.10 NFS 설치 2.11 SVN 설치 2.12 위키 서버 설치 3 클라이언트 설치 (우분투 7) 3.1 우분투 소개 3.2 우분투 다운로드 3.3 우분투 .. 더보기