목록IT (1477)
오늘도 공부
J2EE(POJO)컴포넌트만들기 카테고리 미분류 지은이 김형준 (구민사, 2006년) 상세보기 서평 옆에 두고 싶은 책 김민재님이 쓰신 서평보기 I 평점 I 조회수(373) I 공감 (0) I 블로그 SI 프로젝트를 하면서 느끼는 것들이지만, 개발자가 하는 고민들이란게 특출나게 틀리는 것들은 별로 없다. 도메인 모델을 잘 설계해서 진정 OO적으로 중복을 제거하고 싶은 욕심과 OR 매핑을 통해 객체 모델과 관계형 DB간에 깔끔한 매핑을 시도하는 것들이 이러한 고민들 중에도 손에 꼽히는 주요 사안일 것이다.현재 수행하고 있는 플젝이 EJB 엔티티빈을 쓰지 않고 세션빈과 OR매핑 프레임워크(iBATIS)를 사용하는데, 이 책을 읽으면서 내 스스로 OR매핑 프레임워크를 만든다면 고... 자바를 공부하면서 이것저..
iBATIS시작 IBATIS 2010/10/02 01:58 http://blog.naver.com/poloecko/70094795635 데이터 매퍼는 자바빈즈, Map구현체, 원시래퍼타입(String, Integer…) 그리고 SQL문을 위한 XML문서를 매핑하기 위한 XML서술자를 사용하는 매우 간단한 프레임워크를 제공한다. 1.Value객체정의 POJO타입의 ?파라미터 객체 정의 파라미터(자바빈즈, Map 또는 원시래퍼)로써 객체를 제공한다. 파라미터 객체는 update문에서 입력값을 셋팅하기 위해 사용되거나 쿼리문의 where절을 셋팅하기 위해서 사용된다 EmpVO package ex1.vo; public class EmpVO { //DB에서 가져올 컬럼명들을 멤버로 선언 //사번 이름,직종,입사일..
JSP http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd 몇버전 부터인지는 정확히 모르겠고 web.xml에 2.4나 2.5에서 를 쓰면 에러메시지가 뜬다. cvc-complex-type.2.4.a:Invalid content was found starting with element 'taglib' 해결 방법은 를 태그안에 넣는다. ex. ... ... [출처] web.xml taglib error|작성자 알콜진
JSTL 설치하기 JSTL 관련 2010/03/17 14:40 http://blog.naver.com/oppasw/150082827283 JSTL (JSP Tag Library) 는 일반적으로 사용하는 JSP 태그들을 표준화 시킨것이다. 여기에는 아래와 같은 것들이 많이 사용된다. CORE http://java.sun.com/jstl/core :: c XML http://java.sun.com/jstl/xml :: x I18N http://java.sun.com/jstl/fmt :: fmt SQL http://java.sun.com/jstl/sql :: sql 이러한 tablib 를 jsp page 에서 사용하려면 다음과 같이 넣어주면 된다. 아래의 경우는 예를 들어 core 부분을 사용하기 위하여 넣어..
범죄/수사 스릴러물을 좋아하는 사람들은, 현장작전요원들이 본부에 현장상황을 실시간 영상으로 보내면서 지원을 받거나 하는 장면을 많이 봤을 것이다. 특히, 미국드라마 24에서 수없이 나오는 장면이다. 만약 당신이 프로요(안드로이드 버젼 2.2)를 사용하고 있다면, IP Webcam 을 통해 당신도 이제 그렇게 할 수 있다. 매우 손쉽게 말이다. 오른쪽 QR코드를 통해 IP Webcam 어플리케이션을 설치하고, 실행해 보자. Login 과 Password 입력필드가 있으나 거기 쓰여진것 처럼, 로그인은 안해도 된다. 그리고 그 아래부턴 영상의 사이즈, 초당 프레임 수, 영상의 품질, TCP Port, 그리고 몇가지 체크옵션들이 보이겠지만 어려운 부분은 없으므로 입맛대로 설정하되, 대부분 디폴트로 사용해도 무..
마지막소스 첨부는 자 이제 마지막 리팩토링이네영.. 책에선 제네릭을 이용한 다양한 형태로의 변환이 되는 자유로운 팩토링을 보였는데 정말 새롭고 유용한 방법인것 같아서 강추!! 암튼 소스는 다음과 같습니다.. 만약 String값을 이용해서 덧붙이는 기능을 사용하고자 할때에는 이런식으로 바꿔주면 되는군요. 우선 Test해볼 메소드입니다.(여기서 파일안에 있는 숫자를 순서대로 덧붙이는 메소드입니다) @Test public void concatenateOfNumber() throws IOException{ String concateStr = calculator.concatenateString(filepath); assertThat(concateStr,is("1243")); } public class Calcul..
3단계에서 보면 calc()랑 multiply()부분에서 while문에서 가져오는 부분이 중복된다는 걸 볼수 있다. 이걸 템플릿/콜백 패턴으로 중복 제거하면(어디까지 갈것인가..두둥..==ㅣ) public class Calculator { public Integer lineReadTempleter(String filepath,LineCallback callback,int initVal) throws IOException{ BufferedReader br = null; try { br = new BufferedReader(new FileReader(filepath)); String line = null; Integer res = initVal; while( (line = br.readLine()) != n..
템플릿/콜백 패턴은 간단한 정의로는 중복되는 코드들을 인터페이스등을 통한 추출로 인하여 코드의 간결함과 효율성을 높이는 데 있다고 한다. 여기 예제에서는 파일입출력시 try/catch/finally등 자원반납에 관해서 모든 메소드가 중복되고 있다. 그래서 그 부분을 빼고자 하는 것이다. 암튼 적용한 다음의 소스는 다음과 같다. (참고 : @Before는 junit실행시 서론, @Test는 본론, @after는 결론) JUnit는 main메소드가 없어도 테스트를 실행함..^^ CalcSumTest.java public class CalcSumTest { Calculator calculator; String filepath; @Before public void setUp(){ calculator = new ..
package springbook.learningtest.template; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class Calculator { public Integer calcSum(String filepath) { BufferedReader br = null; int sum = 0; try { br = new BufferedReader(new FileReader(filepath)); String line = null; while( (line=br.readLine())!=null ){ sum += Integer.parseInt(line); } br.close(); } ca..
출처 : 1400페이지짜리 '토비의 스프링' 서적 간단한 파일 입출력 리펙토링 과정을 보여준다. 우선 기본적으로 알아야 하는 건 JUnit 방법이다.. 검색해보면 금방 알수 있으므로 해보삼^^ 실제 계산하는 Calculator.java package springbook.learningtest.template; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class Calculator { public Integer calcSum(String filepath) throws IOException{ BufferedReader br = new BufferedReader(new FileReade..
http://www.javajigi.net/pages/viewpage.action?pageId=87130115
출처 : http://blog.naver.com/lriberio?Redirect=Log&logNo=80068562529 Spring Framework 다운로드 (2008년 11월 4일 기준) 1. http://www.springsource.org/download 로 간다. 2. http://www.springsource.com/download?project=Spring%20Framework 로 이동된다. 아래로 조금 스크롤 => Community Download [Download Now] 를 클릭한다. 3. [No thanks, take me to the download] 클릭 4. spring-framework-2.5.6-with-dependencies.zip 클릭 5. 저장 후 압축 해제 아래 경로에..
[Spring] 이클립스에 스프링 개발환경 셋팅 Spring 2010/08/25 11:25 http://skyunoe.blog.me/20112368374 Java JDK 설치 : http://java.sun.com (version 1.6.20) Apache Tomcat 설치 : http://apache.org (version 7) Eclipse IDE 설치 ; http://www.eclipse.org (Eclipse IDE for Java EE Developers 3.6 package) Spring Framework 설치 : http://www.springsource.com/download/community?project=Spring%20Framework (version 3.0.4) 1. Help > I..
전체 소스는 밑에..하지만 책과는 좀 다름..내 나름대로 끝에 마음대로 짠것임..T.T 위 기능을 분리해서 담당할 클래스를 만들어보자. 우선 UserDaoTest 클래스다 public class UserDaoTest { public static void main(String[] args) { UserDao user = new DaoFactory().userDao(); } } Factory에서 연결될 오브젝트를 정의를 한다. public class DaoFactory { public UserDao userDao(){ ConnectionMaker connectionMaker = new DConnectionMaker(); UserDao dao = new UserDao(connectionMaker); retur..
그럼 아예 이런식으로 독립시켜버리자. UserDaoTest라는 클래스를 만들어서 여기안에서 실행및 테스트를 할수 있다. UserDao의 생성자 public UserDao(ConnectionMaker connectionMaker){ //초기화 ID 및 PASSWORD this.connectionMaker = connectionMaker; } public class UserDaoTest { public static void main(String[] args) { ConnectionMaker connectionMaker = new DConnectionMaker(); UserDao dao = new UserDao(connectionMaker); } 이렇게 나누어 지면 거의 끝이다. 하지만 위의 코드에서 문제점은..
-토니의 스프링 책참고 위 경우의 해결책은 두개의 클래스가 서로 긴밀하게 연결되어 있지 않도록 중간에 추상적인 느슨한 연결고리를 만들어주는 것이다.추상화란 어떤 것들의 공통적인 성격을 뽑아내어 이를 따로 분리해내는 작업이다.자바가 추상화를 위해 제공하는 가장 유용한 도구는 바로 인터페이스이다. 인터페이스의 최대장점은 추상화가 되는 동시에 실제 이걸이용해서 구현하는 클래스는 밑 바탕 클래스를 몰라도 된다.. 이 바탕 클래스가 별 스트립쇼를 부리든 난동을 부리든.. 인터페이스만 신경쓰면 된다. 아래는 인터페이스 설정이다. public interface ConnectionMaker { public Connection makeNewConnection() throws ClassNotFoundException,SQ..
앞에서 잠시 언급했듯이 다중상속이 허용되지 않는 자바에선 위와 같은 방법은 별로 좋지 못하다. 그래서 우선 Connection 를 주는 클래스를 아예 따로 떼어버리자. 그럼 상속받을 필요도 없고 그냥 생성해서 쓰면 그만이다. abstact일 필요도 없어진다. 자세한 코드는 다음과 같다. Connection만 관리하는 클래스 추출 public class SimpleConnectionMaker { public Connection makeNewConnection() throws ClassNotFoundException,SQLException{ return 만들어질 커넥션; } } 그럼 add와 get 메소드 안에서는 Connection c = simpleConnectionMaker.makeNewConnecti..
1단계에서 메소드 추출을 이용했다. 만약 이 UserDao클래스가 인기가 많아 N사와 D사에 판매를 하는 경우 N사와 D사의 경우 각각 다른 DB을 쓰고 연결관리를 한다는 가정하에선 기존에 만들어 놓은 UserDao방식은 확장성에서 상당히 비효율적이다. 안에 메인클래스를 수정해야 함은 당연지사고 내가 고생해서 만든 UserDao클래스 극비문서를 남에게 보여줘야 한다는 문제점도 있다. 그래서 이번 단계에서는 내가 만든 UserDao클래스를 보호하면서 각기 다른 회사에 맞는 커넥션을 제공해줄수 있는 리팩토링이다. 여기에서 쓰이는 패턴은 템플릿 메소드 패턴(template method pattern:슈퍼클래스에 기본적인 로직의 흐름을 만들고 , 그 기능의 일부를 추상 메소드나 오버라이딩이 가능한 protect..
이전 UserDao 클래스에서 add() 안의 메소드를 보면 세가지 관심사항을 발견할 수 있다. UserDao의 관심사항 1.DB와 연결을 위한 커넥션을 어떻게 가져올까라는 관심 2.사용자 등록을 위해 DB에 보낼 SQL문장을 담을 Statement를 만들고 실행하는 것 3.작업이 끝나면 사용한 리소스를 닫아주는 일 public void add(User user) throws ClassNotFoundException,SQLException{ Connection c = getConnection(); String sql = "insert into users(id,name,password) values(?,?,?)"; PreparedStatement ps = c.prepareStatement(sql); .....
토비의 스프링3이란 책을 보고 공부하는 중..^^; 우선 처음부터 리팩토링에 대해서 간략하게 얘기하는데 좋은 내용이다.. 그래서 한번 따라해봄.^^ 우선 DB 커넥션 클래스 준비 user.java 파일안 package springbook.user.domain; public class User { String id; String name; String password; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Stri..
[서블릿기초] 5. 초간단 MVC 만들어보기 JSP기초정리 / JSP 2010/01/09 20:13 http://blog.naver.com/pksaladin/30077871911 앞서 설명한 이론상의 설명으로는 뭔가 부족하다는 분들을 위해서 이제는 직접 코딩해보고 느껴보도록 하겠습니다. 일단 모델1을 작성해보고 이것을 모델2로 바꿔보는 형식으로 작성하겠습니다. 잘 따라서 해보시길 바랍니다. 먼저 모델 1 패턴으로 간단하게 텍스트 필드에 값을 받고 결과값을 출력받는 예제를 만들어보겠습니다. 모델 1 패턴 index.html 당신의 이름은? result.jsp 당신의 이름은 //name1을 출력합니다. 원하는 이름을 쓰고 확인을 누르면 다음과 같이 출력됩니다. 별다른 과정없이 위에 URL을보시면 다이렉트로 ..
이 코드는 구글맵경위도좌표계(wgs84), 다음/콩나물맵(변형 tm), 네이버맵(katech 또는 tm128) 좌표계를 서로 변환해 주는 소스코드입니다. 이 코드는 aero, hyosang 님등의 블로그를 참고로 만들었으며, 오픈소스와 카피레프트의 정신에 따라 공개하니 자유롭게 사용하시기 바랍니다. 자세한 이론적인 배경은 aero 님 블로그 (http://aero.sarang.net/map/analysis.html) 을 참고해 주세요. 사실 이런 기능은 이미 야후나 다음 맵 오픈 API 등을 통하여 이미 온라인 서비스하고 있지만 안드로이드 앱 내에 포함시키는 경우에 간혹 필요할 수도 있습니다. 사용 가능한 메소드는 다음과 같습니다. 참고로, 질문/답변 란에 올려져 있는 원래 코드를 static 메소드들로..
구글 맵은 위도/경도를 바로 사용해 위치 표시가 가능하고, 네이버 맵은 카텍좌표계...TM인가... 지리학엔 문외한이라 잘 모르겠고... 암튼 둘이 좌표계가 달라서 두 지도에서 같은 위치를 표시하려면 좌표계 변환을 해야 한다. 그런데... 네이버에서도 위/경도를 지원하기 시작했더란 이야기-_-a 그래도 만들어놓은게 아까우니 포스팅은 하자...라는 심보..? 참고 포스팅의 php소스를 javascript로 변환하고 값 전달 방식만 약간씩 바꿨습니다. 함수중에 거리를 구하는 함수도 보이는데 맞는지는 모르겠습니다.. 뭘로 테스트를 해봐야 하는지도 모르겠고-_-a js는 여기 있구요, 사용법은, GEO KATEC 변환 (Language : javascript) 이런식으로 사용하시면 되겠습니다
출처 : http://www.androidpub.com/1104990 FAQ : 프로그래밍적으로 키보드 숨김/감춤/보기. 액티비티 시작시 키보드 숨김/감춤/보기, EditText선택시 키보드 안뜨게하기 등 소프트 키보드 동작 관련 질문에 대한 답변 1. 키보드 감추기 EditText editText = (EditText) findViewById(R.id.myEdit); InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(editText.getWindowToken(), 0); 2. 키보드 보여주기 EditText editText = (EditT..
출처 : http://greenweblog.tistory.com/entry/%EB%A6%AC%EC%8A%A4%ED%8A%B8%EB%B7%B0-%EC%97%90%EB%8B%88%EB%A9%94%EC%9D%B4%EC%85%98리스트뷰 에니메이션Posted by 안드로이드노트 그린웹Animation : 2010/10/19 20:45 Friday, October 16, 2009 ListView and ListActivity, with Layout Animation In the article Layout Animation, list_layout_controller is included in layout, main.xml. In the last article ListView and ListActivity, List..
출처 : http://greenweblog.tistory.com/entry/Animation%EC%97%90-%EB%8C%80%ED%95%9C-%EC%9D%B4%ED%95%B42-AnimationSet-%ED%81%B4%EB%9E%98%EC%8A%A4 AnimationSet extends Animaiton java.lang.Object android.view.animation.Animation android.view.animation.AnimationSet 제 설명이 정확한 것인지 모르겠지만.. AnimationSet 클래스는 복수의 에니메이션(트윈을) 하나의 에니메이션으로 보이게 끔 조합시키는 클래스이다. Animation 추상클래스에서 생성된 다른 객체를 (예: AlphaAnimation ) valu..
출처 : http://greenweblog.tistory.com/92Animation에 대한 이해(1) - animaiton( android.view.animation ) Api 를 보다가..Posted by 안드로이드노트 그린웹Animation : 2010/12/12 02:22 android.view.animation public abstract class Animation Class 예를 들어 아래와 같은 구현부가 있다면. AnimationSet set = new AnimationSet(true); 2. Animation animation = new AlphaAnimation(0.0f, 1.0f); animation.setDuration(100); set.addAnimation(animation); ..
출처 : http://withwani.tistory.com/160 Android의 ListView에서 HeaderView와 FooterView를 사용하는 것은 이전 포스트에서 정리를 하였다. 이번 포스트에서는 Thread를 사용하여 HeaderView와 FooterView를 실행했을 때 List item을 갱신 또는 추가 하는 부분을 해볼까 한다. 코드 구현 시 비교 대상은 Twitter Client로 이야기 목록에서의HeaderView와 FooterView을 흉내 내어 볼 것이다. 우선 Header와 Footer를 구현 할 Activity와 xml layout 파일을 구현해 보자. 접기 MoreListThreadExample.java public class MoreListThreadExample ext..
세상에는 날고 기는 사람들이 참 많은 것 같다.. 안드로이드 리스트 async(비동기) 구성 안드로이드 2010/09/01 23:33 http://blog.naver.com/wono77/140113961263 출처: 안드로이드 리스트 async(비동기) 구성 문서 히스토리: 2010년 9월 1일 글 최초 작성(비공개) 2010년 10월 1일 공개전환 원문: http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+blogspot/hsDu+(Android+Developers+Blog 안드로이드와 같은 모바일 프로그램..
출처 : http://mainia.tistory.com/555 (1) 여러 개의 멀티선택 옵션으로 표현해 주기 다중선택을 위한 다이얼로그 창을 띄운다. 리스트에는 제목과 radio button 이 있다. AlertDialog.Builder 클래스로 구현하며 리스트중 특정행을 클릭했을 때 이벤트는 setSingleChoiceItems 에 등록한다. Ok 버튼클릭 이벤트는 setPositiveButton , Cancel 버튼클릭 이벤트는 setNegativeButton 에 등록하고 기능을 구현하면 된다. view source print? 01 private void DialogSelectOption() { 02 final String items[] = { "item1", "item2", "item3" }; ..
