본문 바로가기

.주제별

(98)
Pre-Condition vs Post-Condition 구글 검색을 해보니 객체지향설계나 UML쪽에서 자주 언급이 되는 말이였군. 일단 우리말로는 Pre-Conditions 은 사전 조건, Post-Conditions 은 사후 조건이라 한다. 점 더 와닿는 설명을 한 곳이 있길래 인용하면 (참고 : 여기 가보시라) "소프트웨어의 검증이라는 입장에서는 서비스란 메소드나 함수의 호출이 된다 예를 들면, 제곱근을 계산하는 서비스를 제공하는 메소드 double sqrt (double x )에 관한 계약은 서비스를 받는 측의 의무(0 혹은 정수의 인수 x를 건네주는 서비스를 제공하는 측의 의무) 결과를 제곱하면 인수와 동일한 것이 된다 서비스를 받는 측의 의무를 사전 조건(Pre-conditions)이라 하고, 서비스를 제공하는 측의 의무를 사후 조건(Post-con..
RFC2119 - MUST, SHOULD, MAY, SHALL + NOT 차이 흔히 어느 스펙을 명시하고 있는 표준문서들을 보면 다음과 같은 문구가 나오는 것을 알 수 있다. " The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in [RFC2119] " 자자 그럼 이건 어디서 나오는 말들일까? RFC (Request For Comments) 문서 2119번을 보자. (자세한 것은 여기 참고^^) * MUST : REQUIRED, SHALL과 마찬가지로 '해당 정의가 표준에서 절대적으로 요구된다는 것' * MUS..
Java) Sublist , Not-serializable 자바 프로그램의 상태를 저장할때, 일반 텍스트 파일로 저장할 수도 있고, 직렬화를 통해서 저장할 수도 있다. 직렬화를 하려면, Class에서 "implements Serializable"을 통해서 인터페이스를 구현해야 한다. 또, 직렬화를 하면, 이 객체와 관련된 것이 모두 직렬화(자동) 되어서 저장이 된다. 하지만, 직렬화 되지 않는 경우가 있다. 예를들어, Collection 클래스에서 'sublist'라는 메서드를 사용하는 경우 sublist 는 'java.util.RandomAccessSubList'의 instance를 리턴하게 되는데, 이는 직렬화가 안된다. 이런 경우, ArrayLIst와 같은 'Serializable List'에 그 내용을 담아야 한다. 다음은 직렬화 되지 않는 경우 Coll..
Java) Matrix Package (Jama, Colt, MTJ) Java 에서 SVD 계산하는 일이 있어서, 관련 Package 를 찾아봤는데, 제목에 있는 3개가 유명하다는 것을 알았다. 1. Jama JAMA 링크 Dense Matrix을 다루는데 있어서 작고 가볍다. LNPACK , EISPACK 에 적용된 알고리즘과 같은 알고리즘을 사용한다. 2. Colt COLT 링크 Jama 보다 조금 높은 성능을 보인다 하는데, (테스트 결과로는 별 차이 없다) 다양한 Matrix Algorithm을 보여주고 있다. 3. MTJ MJT 링크 Jama 보다 더 많은 Matrix Type을 포함하고 있고, Colt 보다 조금더 최적화된 Sparse matrix을 다룰 수 있다 한다. * 위 3개의 Library을 통해서 MxN Matrix에 대한 SVD 을 구해보았다. M,..
SQL) 오라클 페이징 오라클 페이징 처리에는 두가지 방법이 있다고 한다. 1. HINT(힌트) 이용 /* * 추후 내용 보강하겠슴. */ 2. row_number() 이용 예제1) SQL 문 select * from (select tb.*, row_number() over(order by title asc) as num from TABLE01 tb ) where num between 10 and 20 설명 목적: TABLE01 인 tb에서 모든 field 값들을 얻어온다. 01. tb에서 title 내림차순으로 field값을 얻어오고, 02. 그 결과 중, 순서가 10~20 사이에 값들을 얻어온다. 예제2) SQL 문 select * from (select seqno , title, name, memo, row_number(..
Java) Exception 요약 참고 : http://benelog.egloos.com/1901121 http://crosscutter.info/56 http://crosscutter.info/63 1. Exception 사용 예제 1) 예외를 던지는 위험한 코드 코드에서 예외를 던진다면, 반드시 메소드를 선언하는 부분에서 throws 키워드를 써서 선언해줘야한다. public void takeRisk() throws BadException { if(abandonAllHope) { throw new BadException(); } } exception를 선언하는 과정을 통해, BadException을 던질 수 있다는 것을 외부에 알린다. 2) 위험한 메소드를 호출하는 코드 예외를 던지는 메소드를 호출하면, 예외발생 가능성이 있음을 알고..
Java) 정렬, Collections 사용 Java에서 정렬을 하려면, TreeSet을 이용하는 방법이 있다. 또 다른 방법으로는, Collections 클래스를 활용하는 방법이 있다. Song 클래스를 다음과 같이 정의하자 public class Song { private String title; private String author; private int rank; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } pub..
SQL)강의- 제 16 장 시스템 권한(Privileges) 출처 : http://naver.kaist.ac.kr/oracle_sql/s16.htm 1. 시스템 권한 ◈80개 이상의 권한이 있다. ◈DBA는 상위 레벨의 시스템 권한을 갖는다. ◈새로운 사용자 생성 ◈사용자 삭제 ◈테이블 삭제 ◈테이블 백업 ◈DBA는 SQL 명령인 CREATE USER를 써서 사용자를 생성한다. ◈시스템 권한은 대개 데이터 베이스 관리자 (DBA)가 부여한다. 시스템 권한 할 수 있는 일 CREATE USER 다른 Oracle 사용자를 생성할 수 있게 한다. DROP USER 다른 사용자를 삭제 할 수 있다. DROP ANY TABLE 스키마에 있는 테이블을 삭제 할 수 있다. ♣ 사용자 생성 ◈DBA는 여러 시스템 권한을 사용하여 Oracle의 새로운 사용자를 생성 할 수도 있다..