2009/09 6

[CouchDB] HTTP view API

CouchDB wiki에 있는 내용을 보고 정리한 내용입니다. 제가 하고싶은걸 실습한 것이기 때문에 삭제된 내용도 있습니다. view(뷰)는 Couch document를 쿼리하거나 리포팅할때 사용되는 주요툴이다. 뷰는 자바스크립트 function으로 정의된다. function(doc) { emit(null, doc); } Creating Views permanent view를 만들기 위해 function은 특별한 design document에 먼저 저장되어 있어야 한다. design document의 id는 _design으로 시작하고 view attribute는 map과 optional하게 reduce를 갖는다. design document의 모든 view는 index되어 있다. design docume..

backend/DataBase 2009.09.29

[Effective Java] 9. equals 메소드를 오버라이드 할 땐 hashCode 메소드도 항상 오버라이드 하자.

9. equals 메소드를 오버라이드 할 땐 hashCode 메소드도 항상 오버라이드 하자. Java API Object.hashCode 메소드 spec에 명시 - 애플리케이션 실행 중에 같은 객체에 대해 한 번 이상 호출되더라도 hashCode 메소드는 같은 정수를 일관성있게 반환해야 한다. - equals(Object) 메소드 호출 결과 두 객체가 동일하다면, 두 객체 각각에 대해 hashCode 메소드를 호출했을 때 같은 정수 값이 나와야 한다. - equals(Object) 메소드 호출 결과 두 객체가 다르다고 해서 두 객체 각각에 대해 hashCode 메소드를 호출했을 때 반드시 다른 정수 값이 나올 필요는 없다. 그러나 같지 않은 객체들에 대해 hashCode 메소드에서 서로 다른 정수 값을 ..

backend/Java 2009.09.28

[Effective Java] 8. equals 메소드를 오버라이딩 할 때는 보편적 계약을 따르자.

8. equals 메소드를 오버라이딩 할 때는 보편적 계약을 따르자. equals메소드를 오버라이드 하지 않고 써야할때 - 클래스의 각 인스턴스가 본래부터 유일한 경우 - 두 인스턴스가 논리적으로 같은지 검사하지 않아도 되는 클래스의 경우 - 수퍼 클래스에서 equals를 이미 오버라이딩 했고, 그 메소드를 그대로 사용해도 좋은 경우 - private나 패키지 전용 클래스라서 이 클래스의 equals 메소드가 절대 호출되지 않아야 할 경우 그럼 언제 해야하나? 객체 참조만으로 인스턴스의 동일 여부를 판단하는 것이 아니라, 인스턴스가 갖는 값을 비교하여 논리적으로 같은지 판단할 필요가 있는 클래스로써, 자신의 수퍼클래스에서 equals 메소드를 오버라이드하지 않았을 때다. 일반적으로 값(value) 클래스..

backend/Java 2009.09.24

[Effective Java] 5. 불필요한 객체 생성을 피하자

5. 불필요한 객체 생성을 피하자 불변(immutable) 객체는 항상 재사용가능하다. String s = new String("buri"); 이렇게 쓰지 말고 String s = "buri"; 이렇게 쓰자는거 실행될 때마다 새로운 인스턴스를 생성하지 않고 하나의 String 인스턴스를 사용하며 같은 JVM에서 실행되는 어떤 코드에서도 동일한 문자열 리터럴(literal)을 갖도록 재사용될 것이다. 불변 클래스의 불필요한 객체 생성을 막으려면 생성자보다는 static 팩토리 메소드를 사용하는 것이 좋다. 생성자인 Boolean(String)보다는 static 팩토리 메소드인 Boolean.valueOf(String)을 사용하는 것이 더 좋다. 생성자는 호출될 때마다 새 객체를 만드는 반면, static ..

backend/Java 2009.09.23

[Windows] Vista에서 명령프롬프트창의 글꼴 바꾸기

Vista에서 기본으로 제공해주는 글꼴이 영~ 맘에 들지않아, 구글링을 해보니, 역시나 맘에 안드는 사람이 많나보군요. 간략하게 정리해보자면, 한글 Vista인 경우!!!를 전제로, 실행(Run) -> regedit 명령어를 치면 레지스트리 편집가능하게 되고 HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Console\TrueTypeFont 경로로 가서 키가 949인 변수의 값을 바꿔준다. (원하는 글꼴로, 글꼴은 이미 설치되어있어야겠죠~) 그리고 재부팅하면 끝~ 저는 한글 Vista인데 영문 Vista인 경우의 글을 따라해서 자꾸 실패했는데, 그거에 따라 키가 다릅니다.(아마도~) 자세한 건 여기를 참고하세요. 정리가 잘 되어있는듯 해요~

[Effective Java] 4. private 생성자를 사용해서 인스턴스 생성을 못하게 하자

4. private 생성자를 사용해서 인스턴스 생성을 못하게 하자 static 메소드나 static 필드만을 모아 놓은 클래스를 만들필요가 있는 유틸리티성 클래스는 인스턴스 생성이 무의미하다. 그러나 그런 클래스라도 명시적으로 지정한 생성자가 없을때 컴파일러가 디폴트 생성자 (public 이며 매개변수가 없는)를 만들어주기 때문에 javadoc 프로그램으로 생성하는 API 문서에도 나타나기 때문에 인스턴스 생성이 가능한 클래스로 오인될 수 있다. 생성자 호출을 통한 인스턴스 생성을 방지하고 API 문서에도 나타나지 않도록 하려면? private 생성자를 정의하면 인스턴스 생성이 불가능한 클래스를 만들 수 있다. public class UtilityClass { //이 클래스는 인스턴스 생성이 불가능하다라..

backend/Java 2009.09.17