전체 글

개발에 대한 내용을 주로 다루는 블로그입니다.
개발

객체 지향 설계 원칙 5가지

나쁜 설계의 경우 다음과 같은 요소들을 가지고 있다. 경직성 : 무엇인듯 하나를 바꿀 때마다 반드시 다른 것도 바꿔야하고 변화의 사슬이 끊이지 않아 시스템 변경이 힘듦.부서지기 쉬움 : 시스템 한 부분을 변경하면 전혀 상관없는 다른 부분에 이상이 생김.부동성 : 시스템이 여러 컴포넌트로 분해되어 있어 다른 시스템에서 재사용하기 힘듦.끈끈함 : 편집-컴파일-테스트 순환을 한 번 도는 시간이 엄청나게 길다.쓸데없이 복잡함 : 괜히 머리를 굴려서 짠 코드 구조가 많다.필요 없는 반복 : 복사/붙여넣기, 중복코드가 많음.불투명함 : 코드 작성 의도가 불분명하다, 코드와 그에 대한 설명에 괴리가 있다. 잘못 관리한 의존 관계가 위 요소들의 원인이다.위와 같은 요소들을 발견하면 다음 원칙들을 이용하여 개선을 해보자..

개발/자바

Mybatis 쿼리 파라미터에서 jdbcType

Mybatis 쿼리 파리미터 프로퍼티 중에 jdbcType가 있는데 항상 헷갈려서 정리해본다. Mybatis 공식 문서에 이렇게 설명되어 있다. jdbcType : 지원되는 타입 목록에서 설명하는 JDBC 타입. JDBC타입은 insert, update 또는 delete 하는 null 입력이 가능한 칼럼에서만 필요하다. JDBC의 요구사항이지 마이바티스의 요구사항이 아니다. JDBC로 직접 코딩을 하다보면 null이 가능한 값에 이 타입을 지정할 필요가 있을 것이다. nulll값을 처리하기 위해 필요한 프로퍼티인데 Mybatis에서 null값에 대한 처리를 하기 위함이아니라 JDBC에서 필요해서 넣어줘야 한다고 되어있다. NULL이면 그냥 NULL로 쿼리를 날리면 될일이지 JDBC는 왜 그것이 필요한지 ..

개발

리눅스 /bin/sh^M: bad interpreter 에러

/bin/sh^M: bad interpreter 서버 작업을 위한 스크립트를 eclipse 에서 작업을 하고, svn에을 통해서 서버에 script를 받고 실행할 경우 발생할 가능성이 있는 /bin/sh^M: bad interpreter 에러. 특별하게 문제없다가 새로운 script에서 발생하면 이건 도대체 잡기가 어렵다. 그냥 봐서는 아 이상한 문자가 들어가서 깨졌다는 의심은 일단 들기 시작한다. 그래서 서버에서 vi 를 통해서 동일한 내용으로 스크립트를 작성하며 정상동작하고 eclipse에서 작업 하면 동일한 문제가 발생할 경우 이부분을 의심해야 한다. 우선 Window 와 Unix/Linux 기반의 text 개행 문자가 다르기때문에 발생하는 경우이다. 이것을 알려면 문제가 되는 파일을 vi 로 열때..

개발/자바

자바 정규표현식 관련 클래스

자바의 정규 표현식 관련한 클래스인 Pattern 클래스와 Matcher 클래스에 대해 알아보도록 하겠습니다. 간단한 예제를 통해서 알아보도록 하겠습니다. 이 예제는 original 문자열에서 life라는 단어를 대문자로 치환해주는 코드입니다. 정규표현식에 대한 자료가 아니기 때문에, 정규표현식은 간단하게 life를 사용했습니다. 자세한 정규표현식은 다른 자료를 참조하시길 바라며.. 그럼 예제를 살펴보겠습니다. package com.may.study.reg; import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegExpr { public static void main(String[] args) { String orig..

개발/테스트

DbUnit 개념과 기본적인 사용법

DbUnit 개념 근래에 만들어지는 프로그램들 중에서 데이터베이스를 사용하지 않는 것은 드물다고 할 수 있다. 그런데 이 데이터베이스 부분을 포함한 테스트(DAO)를 할 때에는 BO나 Controller과는 다르게 데이터베이스를 직접 Access하기 때문에 테스트하기 힘든 부분이 있다. 테스트 코드가 데이터베이스의 상태에 의존적으로 작성되게 된다면 깨지기 쉬운 테스트 코드가 된다는 점이다. 예를 들어서 다음과 같은 테스트 코드를 작성했다고 하자. @Test public void testSelectPersonById() { Person person = personDAO.selectPersonById("happy"); assertThat(person.getId(), is("happy")); assertTha..

기타

블로그를 시작합니다.

TISTORY 블로그를 시작합니다. IT, 프로그래밍 관련 내용 및 기타 생각들을 공유하는 곳으로 사용할 예정입니다. 좋은 내용을 많이 올릴 수 있을런지..

bebeside77
Spread your wings