2015. 3. 16. 16:00

문서(혹은 파일)을 저장하는 메커니즘을 설계하기 위해 "문서관리시스템 (EDMS : Electronic Document Management System)" 관련 기술을 구글에 검색하니, 스택오버플로우(stackoverflow) 사이트에 아래와 같은 질의 응답이 올라와 있는 것을 발견했다. 한 때, EDMS 와 그룹웨어(groupware) 제품을 개발했었는데, 한동안 다른 일을 하다보니 최신 표준과 기술 변화를 감지하지 못한 것을 반성한다. 돌다리도 다시 두들겨 보라는 옛말을 이제는 아는 것도 구글링 해봐야 한다는 말로 바꾸어야 할 듯 싶다.


스택오버플로우 질의응답 : 단순한 문서 관리 시스템 구현 질의응답


다음은 영문 질의 응답 내용을 요약한 것이다.


[질문]

다음과 같은 요구사항을 만족하는 단순한 문서관리 시스템을 구현하려면 어떻게 해야 하는가?

(단순함의 의미가 기능이 적다는 의미일 수도 있고, 쉽게 구현할 수 있다는 의미가 될 수도 있음)


  1. 분산 웹 어플리케이션
  2. 문서 버전 관리 지원
  3. 문서 잠금(locking) 기능 지원
  4. 문서 검색

[답변]

바퀴를 다시 만들지 말고 표준 기술인 JCR을 활용하세요. JCR은 잘 정의된 표준 (많은 사람들의 시간과 기술을 투자한)입니다. JCR의 구현체(implementation)인 jackrabbit 을 권장합니다.


[관련 표준]

JSR : 자바 스펙 요구서(Java Specification Request,JSR)은 자바 플랫폼에 추가된 사양 및 기술을 기술하는 공식 문서.

Posted by 곽중선
2015. 3. 14. 23:38

오픈소스 문서관리 시스템의 첫 단계인 "파일 중복 검사 어플리케이션" 제작 과정에 대한 요약 및 안내 입니다.


문서(document) 정의와 구조

 : "문서"에 대한 용어 정의와 문서의 속성들에 대한 정리, 문서의 하위 객체와 문서의 관계 등을 정립 등.


파일(File) 클래스 설계 - 상태과 행위

  : "파일" 클래스의 역할, 행위와 속성들에 대한 설계


파일(File) 클래스 설계 - 버전 클래스 분리

  : "파일" 클래스에서 버전 클래스를 분리하게된 이유 설명


파일(File) 클래스 설계 - 인스턴스 생성

  : 인스턴스를 생성하는 2가지 기법에 대한 설명과 파일 인스턴스를 생성 방식을 결정하기 위한 기술 검토.


문서(document)의 색인 속성 설계 

  : 문서에 포함되는 속성들에 대한 자료형, 타입 등에 대한 검토


FileVersion 클래스 구현

  : FileVersion 클래스 소스 및 설명


File 클래스 구현 

  : File 클래스 소스 및 설명


Document 클래스 구현

  : Document 클래스 소스 및 설명


DocumentBuilder 클래스 구현

  : DocuemntBuilder 클래스 소스 및 설명


파일 중복 검사

  : 파일 중복 검사 어플리케이션 소스 및 설명


Posted by 곽중선
2015. 3. 14. 22:59
  • 문서 관리 시스템의 로드맵(loadmap) 중에서 첫번째 어플리케이션은 파일 중복 검사 프로그램입니다.

  • 중복 방지 (preventing duplication) : 다양한 저장 매체(storage media)에서 문서를 수집할 때, 중복이 발생할 여지는 충분하다. 사용자가 다양한 환경에서 작업하면서 파일을 복사하는 경우가 빈번하기 때문이다. (USB 복사, 이메일 전송, SNS 공유 및 백업 등) 따라서, 다양한 매체에서  데이터를 수집할 때 이미 수집된 파일이 존재할 경우 새롭게 입력된 파일을 무시하는 기능은 필수적이다. 중복 방지 기능을 구현하기 위해서는 무결성 검사 혹은 check sum 기법을 적용해야 한다. 중복 방지 절차를 간단히 묘사하면 아래와 같다.

    • 파일을 저장소에 등록할 때 컨텐츠에 대한 체크섬을 생성한다.
    • 해당 체크섬에 해당하는 파일이 이미 존재하는지 검사한다. 만일 동일한 체크섬을 가진 파일이 존재한다면, checksum collision을 감안하여 동일한 파일 유무에 대한 정밀 확인 (파일 크기, 제목, 형식, 요약 등을 검사하고, 필요하다면 파일의 전반부 바이너리 데이터를 대조한다.)을 수행한다.
    • 동일한 파일이 존재하는 것으로 판단되면, 저장소에 등록하지 않는다.

  • 실행 결과 예시는 아래와 같습니다.


Posted by 곽중선