KR20080002838A - 썸네일 이미지를 관리하기 위한 방법 및 시스템 - Google Patents

썸네일 이미지를 관리하기 위한 방법 및 시스템 Download PDF

Info

Publication number
KR20080002838A
KR20080002838A KR1020077023759A KR20077023759A KR20080002838A KR 20080002838 A KR20080002838 A KR 20080002838A KR 1020077023759 A KR1020077023759 A KR 1020077023759A KR 20077023759 A KR20077023759 A KR 20077023759A KR 20080002838 A KR20080002838 A KR 20080002838A
Authority
KR
South Korea
Prior art keywords
thumbnail
thumbnail image
cache
file
image
Prior art date
Application number
KR1020077023759A
Other languages
English (en)
Inventor
마르크 밀러
브렌다 에이. 야니티
데이비드 지. 드 보르칙
파브리스 에이. 데브리
제프리 씨. 벨트
마뉴엘 밀레
폴 에이. 구스모리노
폴 엘. 컷싱어
로버트 이. 싱클레어
타일러 케이. 빔
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20080002838A publication Critical patent/KR20080002838A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/58Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/54Browsing; Visualisation therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Multimedia (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Processing Or Creating Images (AREA)

Abstract

사용자별/시스템별 썸네일 캐시에 썸네일 이미지를 저장하고 이를 검색하기 위한 시스템 및 방법이 제공된다. 다양한 크기의 썸네일 이미지를 저장하기 위해 하나 이상의 데이터 파일이 사용될 수 있다. 특정 파일에 대한 썸네일의 위치 또는 위치들로 인덱스가 업데이트되며, 그 인덱스 내에서 썸네일을 찾는 키로서 이 특정 파일의 URL 및 수정 시각이 사용될 수 있다. 썸네일 이미지의 직접 메모리 매핑이 제공된다. 여러 프로세스들 간에 캐시로의 협동적인 액세스를 유지하기 위해 병행성(concurrency) 기술이 이용된다. 고아가 되거나 사용되지 않는 캐시 내용은 새로이 사용되는 썸네일 이미지 또는 좀 더 자주 사용되는 썸네일 이미지가 사용하기 위해 회수된다.
썸네일 캐시, 데이터 파일, 인덱스

Description

썸네일 이미지를 관리하기 위한 방법 및 시스템{LOCAL THUMBNAIL CACHE}
본 발명은 컴퓨터 상의 이미지를 캐싱하는 것에 관한 것이다. 보다 구체적으로는, 본 발명은 시스템 전체에 걸친(system-wide) 썸네일(thumbnail) 이미지 데이터베이스에 이미지를 캐싱하는 것을 제공한다.
썸네일 이미지는 이미지 또는 파일을 실제로 오픈하지 않고도 이미지 또는 파일의 내용을 전달하기 위한, 컴퓨터에서 사용되는 일반적인 방식이다. 썸네일은 이미지, 워드 프로세싱 문서, 웹 페이지, 프레젠테이션 슬라이드 등의 소형화된 이미지 묘사(miniaturized portrait)를 제공할 수 있다. 썸네일은 그래픽 운영 체제에서 파일을 나타내는 아이콘으로서 종종 사용된다.
도 2a는 종래 기술에 있어서의, 그래픽 운영 체제에서의 썸네일 사용의 일례를 도시한다. 윈도우(201)는 공통 파일 디렉토리에 포함된 JPEG 포맷된 파일들의 모음(202)의 썸네일 이미지를 디스플레이한다. 각각의 썸네일 이미지는 파일 내용의 복제품이며, 표준 크기에 맞도록 크기가 조정되었다. 특히 한 파일을 선택하면, 윈도우(201)는 선택된 파일의 썸네일(203)을 디스플레이한다.
도 2b는 종래 기술에 있어서의, 컴퓨터(110)에 사용가능한 파일 계층 구조(205)에서의 썸네일 저장의 일례를 도시한다. 파일 계층 구조(205)에 표시된 파 일들은 컴퓨터(110)에(예를 들면 하드 드라이브 상에, 또는 동적 메모리에), 이동식 매체에(예를 들면, 플로피 드라이브 또는 USB 썸드라이브에), 네트워크 서버에, 또는 컴퓨터(110)에 액세스가능한 어느 위치에 저장될 수 있다. 파일 계층 구조(205) 내의 파일들은, 파일들 뿐만 아니라 다른 파일 폴더들도 포함하는, 파일 폴더들 시스템을 이용하여 계층 구조적인 방식으로 저장될 수 있다. 제1 파일 폴더(211)는 제1 파일 모음(212)을 저장하고, 제2 파일 폴더(221)는 제2 파일 모음(222)을 저장한다.
종래의 방법을 이용하여, 컴퓨터(110)의 운영 체제는 파일 폴더(211,221)에 파일들의 썸네일을 생성한다. 예를 들면, 윈도우(201)의 폴더 뷰를 생성하기 위해, 운영 체제는 각 파일들 사이를 순회하고(iterate), 그 내용을 정밀 검사하여 그 내용의 표준 크기의 복제품을 생성함으로써, 파일들의 썸네일을 생성할 수 있다. 일부 운영 체제에서, 이 단계는 특정 썸네일 집합이 필요할 때마다 반복될 수 있다. 다른 운영 체제에서는, 썸네일이 일단 생성되면 이후의 검색을 위해 그래픽 파일로서(예를 들면 비트맵 또는 jpeg) 저장될 수 있다. 이러한 시스템은 향후의 썸네일 검색에 소요되는 처리 시간을 절약한다. 컴퓨터(110)는 이전에 렌더링된 썸네일을 썸네일 캐시(thumbnail cache)(214,224)에 저장한다.
제1 썸네일 캐시(214)는 제1 모음(212)의 파일들 각각에 대한 썸네일을 포함할 수 있다. 호출될 때마다, 제1 썸네일 캐시(214)는 운영 체제 또는 소프트웨어의 제3자에 의해 사용될 수 있도록 이 이미지들을 제공할 수 있다. 마찬가지로, 제2 썸네일 캐시(224)도 요구 시 제2 모음(222)으로부터 이미지를 제공할 수 있다. 이렇게 폴더 별로 썸네일을 저장하는 것은 간단하지만, 컴퓨터(110) 사용자에게는 문제를 만들 수 있다.
현재의 방법을 사용하면, 컴퓨터(110)는 그것이 쓰기 액세스를 갖는 파일 폴더에서만 생성된 썸네일들을 저장할 수 있다. 예를 들면, 컴퓨터(110)의 사용자가 판독 전용 CD-ROM에 저장된 이미지를 브라우징하는 경우, 운영 체제가 CD-ROM에 저장된 파일 폴더에 썸네일 캐시를 생성할 수 없기 때문에 생성된 썸네일은 앞으로의 재사용을 위해 저장될 수 없다. 또한, 현재의 방법으로는 민감한 파일들로의 안전한 액세스가 손상될 수 있다. 예를 들면, 슬라이드 프레젠테이션(223)의 소유자가 컴퓨터(110)의 다른 모든 사용자들에 대해 그 파일을 액세스불가하게 만들어도, 또 다른 사용자는 운영 체제에 의해 생성된 썸네일을 여전히 볼 수 있고, 제2 썸네일 캐시(224)에 저장할 수 있다. 이것이 비록 프레젠테이션 슬라이드의 소형화된 버전이라 할지라도, 썸네일은 여전히 민감한 정보를 노출하기에 충분할 수 있다. 썸네일 이미지의 크기 및 상세한 사항이 증가함에 따라, 이러한 보안 이슈가 점점 염려되고 있다.
여러 사본의 썸네일 이미지가 썸네일 내용으로서 메모리에 생성되도록 하는 종래의 썸네일 시스템은 디스플레이가 중복되고, 필요한 것보다 더 많은 메모리를 이용한다. 또한, 전혀 다르게 저장된 썸네일 캐시 때문에, 덜 사용되는 썸네일을 지능적으로 제거하는 것(예를 들면, 추가의 디스크 공간이 필요할 때) 또한 방해된다. 그리고 컴퓨터(110)의 사용자가 여러 디렉토리로부터의 파일을 포함하는 파일 검색 결과를 볼 때, 쿼리 결과는 썸네일로서 디스플레이 가능하지 않다.
그러므로, 당 기술 분야에서는, 파일 액세스 특권(priviliges)을 지키고 사용자가 자신이 액세스를 하는 파일들에 대한 썸네일만을 볼 수 있도록 하는 썸네일 캐시에 대한 요구가 있다. 판독 전용 위치에 상주할 수 있는 파일들에 대한 썸네일을 저장할 수 있는 썸네일 캐시에 대한 요구가 또한 있다. 메모리에서 썸네일 이미지의 불필요한 중복을 최소화하는 썸네일 캐시에 대한 요구가 또한 있다. 마지막으로, 지능적으로 썸네일을 제거하는 것이 가능하며, 파일 위치에 상관없이 썸네일 이미지를 전체적으로 디스플레이하는 것이 가능한 썸네일 캐시에 대한 요구가 있다.
이하에서는 본 발명의 일부 양태에 대한 기본 이해를 제공하기 위해 간단한 요약을 제공한다. 이 요약은 본 발명의 광범위한 개요가 아니다. 이것은 본 발명의 키 또는 주요 구성 요소를 식별하고자 하는 것이 아니며, 또한 본 발명의 범위를 서술하고자 하는 것도 아니다. 이하의 요약은 단지 이하에 제공되는 더 상세한 설명의 도입부로서 간단한 형식으로 본 발명의 일부 개념을 제공하고자 하는 것이다.
제1 예시적인 실시예는 썸네일을 로컬 썸네일 캐시에 저장하기 위한 방법을 제공한다. 썸네일 이미지와 식별 정보(예를 들면, 수정 타임스탬프, 파일 경로 또는 문자열 URL의 CRC-64 해시)가 이미지 저장을 위한 요청과 함께 제공된다. 이미지는 하나 이상의 데이터 파일들 중 하나에 저장되며, 식별 정보는 그 데이터 파일 내의 썸네일 위치에 의해 수반되는 인덱스 파일에 저장된다.
제2 예시적인 실시예는 썸네일 캐시를 관리하기 위한 시스템을 제공한다. 시스템은 데이터 파일과 인덱스 파일을 저장하기 위한 기억 장치를 포함한다. 시스템은 또한 파일과 관련된 식별 정보에 의해 수반되는 썸네일 이미지를 저장하기 위한 요청을 수신하도록 구성된 프로세서를 포함한다. 프로세서는 또한 썸네일 이미지를 데이터 파일에 저장하고, 식별 정보와 함께 그 데이터 파일 내의 위치를 인덱스 파일에 저장하도록 구성된다.
도 1은 본 발명의 예시적인 실시예의 하나 이상의 양태가 구현될 수 있는 운영 체제의 기능 블록도.
도 2a 및 도 2b는 종래 기술의 썸네일 캐시를 도시하는 도면.
도 3은 본 발명의 하나 이상의 예시적인 실시예에 따르는 로컬 썸네일 캐시의 블록도.
도 4는 본 발명의 하나 이상의 예시적인 실시예에 따라 관련된 데이터 파일을 지니는 썸네일 캐시 인덱스 파일을 도시하는 도면.
도 5는 본 발명의 하나 이상의 예시적인 실시예에 따라 썸네일 캐시에 썸네일을 저장하기 위한 프로세스를 도시하는 도면.
도 6은 본 발명의 하나 이상의 예시적인 실시예에 따라 썸네일 캐시에 썸네일을 저장하고 이를 검색하기 위한 프로세스를 도시하는 도면.
본 발명은, 예로서 그리고 제한하는 것이 아니며, 첨부된 도면에서 도시되어 있으며, 이 도면에서 동일한 참조 번호는 동일하거나 유사한 구성 요소를 나타낸다.
각종 실시예의 이하의 기술에서, 본 명세서의 일부를 형성하는 첨부된 도면을 참조하며, 도면에서 본 발명이 실행될 수 있는 각종 실시예가 예시로서 도시된다. 다른 실시예가 이용될 수 있으며, 본 발명의 범위와 취지를 벗어나지 않고 구조적 및 기능적 수정이 있을 수 있다는 것을 이해할 것이다.
도 1은 본 발명이 구현되기에 적합한 컴퓨팅 시스템 환경(100)의 일례를 도시하고 있다. 컴퓨팅 시스템 환경(100)은 적합한 컴퓨팅 환경의 일례에 불과하며, 본 발명의 용도 또는 기능성의 범위에 관해 어떠한 제한을 암시하고자 하는 것이 아니다. 컴퓨팅 환경(100)이 예시적인 운영 환경(100)에 도시된 컴포넌트들 중 임의의 하나 또는 그 컴포넌트들의 임의의 조합과 관련하여 어떤 의존성 또는 요구사항을 갖는 것으로 해석되어서는 안 된다.
본 발명은 많은 기타 범용 또는 특수 목적의 컴퓨팅 시스템 환경 또는 구성에서 동작할 수 있다. 본 발명에서 사용하는데 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경 및/또는 구성의 예로는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드-헬드 및 PDA와 같은 기타 휴대용 장치, 태블릿 PC 또는 랩톱 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 게이밍 콘솔, 셋톱 박스, 프로그램가능한 가전제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템이나 장치 등의 임의의 것을 포함하는 분산 컴퓨팅 환경이 있지만 이에 제한되는 것은 아니다.
본 발명의 양태는 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실 행가능 명령어와 관련하여 기술될 것이다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 개체, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명의 양태는 또한 통신 네트워크를 통해 링크된 원격 처리 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 실행되도록 설계된다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 비롯한 로컬 및 원격 컴퓨터 저장 매체 둘 다에 위치할 수 있다.
도 1과 관련하여, 예시적인 컴퓨팅 시스템 환경(100)은 컴퓨터(110)의 형태인 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트는 처리 장치(120), 시스템 메모리(130) 및 시스템 메모리를 비롯한 각종 시스템 컴포넌트를 처리 장치(120)에 연결시키는 시스템 버스(121)를 포함하지만 이에 제한되는 것은 아니다. 시스템 버스(121)는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스 및 각종 버스 아키텍처 중 임의의 것을 이용하는 로컬 버스를 비롯한 몇몇 유형의 버스 구조 중 어느 것이라도 될 수 있다. 예로서, 이러한 아키텍처는 ISA(industry standard architecture) 버스, MCA(micro channel architecture) 버스, EISA(Enhanced ISA) 버스, VESA(video electronics standard association) 로컬 버스 그리고 메자닌 버스(mezzanine bus)로도 알려진 PCI(peripheral component interconnect) 버스 등을 포함하지만 이에 제한되는 것은 아니다.
컴퓨터(110)는 통상적으로 각종 컴퓨터 판독가능 매체를 포함한다. 컴퓨터(110)에 의해 액세스 가능한 매체는 그 어떤 것이든지 컴퓨터 판독가능 매체가 될 수 있고, 이러한 컴퓨터 판독가능 매체는 휘발성 및 비휘발성 매체, 이동식 및 비이동식 매체를 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함하지만 이에 제한되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보를 저장하는 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 컴퓨터(110)에 의해 액세스되고 원하는 정보를 저장할 수 있는 임의의 기타 매체를 포함하지만 이에 제한되는 것은 아니다. 통신 매체는 통상적으로 반송파(carrier wave) 또는 기타 전송 메커니즘(transport mechanism)과 같은 피변조 데이터 신호(modulated data signal)에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등을 구현하고 모든 정보 전달 매체를 포함한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 배선 접속과 같은 유선 매체, 그리고 음향, 블루투스 또는 초광대역(Ultra-wide band) 표준 무선 링크와 같은 RF, 적외선, 기타 무선 매체와 같은 무선 매체를 포함한다. 상술된 매체들의 모든 조합이 또한 컴퓨터 판독가능 매체의 영역 안에 포함되어야 한다.
시스템 메모리(130)는 판독 전용 메모리(ROM)(131) 및 랜덤 액세스 메모리(RAM)(132)와 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 시동 중과 같은 때에 컴퓨터(110) 내의 구성요소들 사이의 정보 전송을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템(BIOS)(133)은 통상적으로 ROM(131)에 저장되어 있다. RAM(132)은 통상적으로 처리 장치(120)가 즉시 액세스 할 수 있고 및/또는 현재 동작시키고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 예로서, 도 1은 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)를 도시하고 있지만 이에 제한되는 것은 아니다.
컴퓨터(110)는 또한 기타 컴퓨터 저장 매체를 포함한다. 단지 예로서, 도 1은 비이동식; 비휘발성 자기 매체에 기록하거나 그로부터 판독을 하는 하드 디스크 드라이브(141), CD-ROM 또는 기타 광 매체 등의 이동식; 비휘발성 자기 디스크(152)에 기록하거나 그로부터 판독을 하는 자기 디스크 드라이브(151) 이동식; 비휘발성 광 디스크(156)로 기록하거나 그로부터 판독을 하는 광 디스크 드라이브(155)를 포함한다. 예시적인 운영 환경에서 사용될 수 있는 기타 컴퓨터 저장 매체로는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고상(solid state) RAM, 고상 ROM 등이 있지만 이에 제한되는 것은 아니다. 하드 디스크 드라이브(141)는 통상적으로 인터페이스(140)와 같은 비이동식 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광 디스크 드라이브(155)는 통상적으로 인터페이스(150)와 같은 이동식 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
위에서 설명되고 도 1에 도시된 드라이브들 및 이들과 관련된 컴퓨터 저장 매체는, 컴퓨터(110)를 위해 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터를 저장한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)를 저장하는 것으로 도시되어 있다. 여기서 주의할 점은 이 컴포넌트들이 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)와 동일할 수도 있고 다를 수도 있다는 것이다. 이에 관해, 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)에 다른 번호가 주어졌다는 것은 적어도 이들이 서로 다른 사본(copy)이라는 것을 나타내기 위한 것이다.
사용자는 키보드(162), 마우스, 트랙볼(trackball) 또는 터치 패드와 같은 포인팅 장치(161) 등의 입력 장치를 통해 명령 및 정보를 컴퓨터(110)에 입력할 수 있다. 이들 장치들 각각은 그 자신의 입력을 제공하는 복수의 입력 컴포넌트들을 포함할 수 있다. 키보드의 경우, 각각의 키들 또는 특수화된 버튼들이 입력 컴포넌트로서 기능할 수 있다. 또한, 키의 조합은, Control, Alt, Shift 또는 다른 키들의 조합을 동시에 누름으로써 사용자가 키 입력을 수정하는 것과 같은, 고유의 입력 컴포넌트로서 기능할 수 있다. 마우스, 트랙볼, 또는 기타 포인팅 장치의 경우, 각각이 제공하는 위치 정보 외에, 입력 컴포넌트들은 그 장치에 있는 버튼, 휠 또는 기타 입력 메커니즘을 포함할 수 있다.
추가의 입력 장치(도시 생략)로는 마이크, 조이스틱, 게임 패드, 스캐너 등을 포함할 수 있다. 이들 및 기타 입력 장치는 종종 시스템 버스(121)에 결합된 사용자 입력 인터페이스(160)를 통해 처리 장치(120)에 접속되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus) 또는 IEEE 1394 직렬 버스(FIREWIRE) 등 의 다른 인터페이스 및 버스 구조에 의해 접속될 수도 있다. 모니터(184) 또는 다른 유형의 디스플레이 장치도 비디오 어댑터(183)와 같은 인터페이스를 통해 시스템 버스(121)에 접속될 수 있다. 비디오 어댑터(183)는 그 자신의 특수화된 프로세서와 메모리 외에, 향상된 2D 또는 3D 그래픽 기능을 포함한다.
컴퓨터(110)는 또한 사용자가 스타일러스(186)를 이용하여 입력을 제공할 수 있는 디지타이저(185)를 포함할 수 있다. 디지타이저(185)는 모니터(184) 또는 다른 디스플레이 장치에 통합될 수 있고, 또는 디지타이저 패드와 같이 별도 장치의 일부일 수 있다. 컴퓨터(110)는 또한 출력 주변 장치 인터페이스(187)를 통해 접속될 수 있는, 스피커(189) 및 프린터(188)와 같은 기타 출력 주변 장치를 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 또 하나의 퍼스널 컴퓨터, 서버, 라우터, 위성 중계(satellite relay), 네트워크 PC, 피어 장치 또는 다른 공통 네트워크 노드일 수 있고, 통상적으로 컴퓨터(110)와 관련하여 상술된 구성요소의 대부분 또는 그 전부를 포함하지만, 도 1에는 메모리 저장 장치(181)만이 도시되어 있다. 도 1에 도시된 논리적 접속으로는 LAN(171) 및 WAN(173)이 있지만, 기타 네트워크를 포함할 수도 있다. 이러한 네트워킹 환경은 사무실, 전사적 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷 및 인터넷에서 일반적인 것이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 인터넷과 같은 WAN(173) 상에서의 통신을 설정하기 위한 모뎀(172), 위성 안테나(도시 생략) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메커니즘을 통해 시스템 버스(121)에 접속된다. 네트워크화된 환경에서, 컴퓨터(110) 또는 그의 일부와 관련하여 기술된 프로그램 모듈은 원격 메모리 저장 장치(181)에 저장될 수 있다. 그 예로서, 도 1은 원격 애플리케이션 프로그램(182)이 메모리 장치(181)에 있는 것으로 도시하고 있지만 이에 제한되는 것은 아니다. 도시된 네트워크 접속은 예시적인 것이며 이 컴퓨터들 사이에 통신 링크를 설정하는 기타 수단이 사용될 수 있다는 것을 이해할 것이다.
도 3은 본 발명의 하나 이상의 예시적인 실시예에 따른 로컬 썸네일 캐시(local thumbnail cache)(301)의 블록도를 도시한다. 로컬 썸네일 캐시는 썸네일 이미지의 생성, 저장 및 디스플레이와 관련된, 더 큰 컴포넌트 집합의 일부일 수 있다. 이들 컴포넌트로는 썸네일 클라이언트(310)를 포함하며, 썸네일 소비자(313)는 이 썸네일 클라이언트로 프로그램적으로 상호작용할 수 있다. 썸네일 소비자(313)는 운영 체제(314)의 컴포넌트들(예를 들면, 그래픽 파일 브라우저) 또는 제3자 소프트웨어(예를 들면, 그래픽 편집 소프트웨어)를 포함할 수 있다. 썸네일 소비자(313)는 특정 파일에 대한 썸네일을 요청하고 검색할 수 있다. 이러한 요청을 받자마자, 썸네일 클라이언트(310)는 썸네일 이미지의 생성을 요청하거나(아마도 백그라운드 프로세스로서) 또는 로컬 썸네일 캐시(301)에서 이미지를 검색 해 올 수 있다.
특정 파일과 관련된 정보는 썸네일을 저장하고 검색하기 위한 "키"로서 사용될 수 있다. 이 관련된 정보는 그것이 특정 파일의 위치 또는 속성을 식별하는 데에 사용될 수 있다는 점에서 "식별 정보(identifying information)"로서 기술될 수 있다. 이러한 정보로는 특정 파일의 이름, 파일의 위치(예를 들면 URL 또는 파일 경로), 수정 타임스탬프, 생성 타임스탬프, 파일 크기 등이 있다. 식별 정보는 또한 상술된 임의의 것의 암호 해시를 포함할 수 있다. 예를 들면, 파일과 관련된 URL은 수정 날짜 및 시각과 조합되어, CRC-64 해시가 추출되는 식별 문자열을 형성할 수 있다. 이러한 식별 문자열은 로컬 썸네일 캐시(301) 내에서 썸네일을 인덱싱하는 데에 사용될 수 있다.
예를 들어, 썸네일 소비자들(313) 중 하나는, 파일에 대한 식별 정보(예를 들면, URL 및/또는 수정 날짜 및 시각)를 제공함으로써, 썸네일 클라이언트(310)로부터 파일(312)의 썸네일 이미지를 요청할 수 있다. 식별 정보를 룩업(lookup) 키로 사용함으로써, 썸네일 클라이언트(310)는 파일(312)이 저장된 썸네일 이미지를 이미 갖고 있는지 여부를 알아보기 위해 로컬 썸네일 캐시(301)를 먼저 살펴볼 수 있다. 로컬 썸네일 캐시(301)가 썸네일을 가지고 있지 않은 경우, 썸네일 클라이언트(310)는 등록된 썸네일 추출자(311)에게 파일(312)에 대한 썸네일 이미지를 생성할 것을 요청할 수 있다. 일단 생성되면, 썸네일 클라이언트(310)는 이 새로이 생성된 썸네일의 사본으로 또는 이를 참조하여 소비자 요청에 응답할 수 있다. 썸네일 클라이언트(310)는 또한 로컬 썸네일 캐시(301)에 저장하기 위해 이 새로운 썸네일을 전달할 수 있다. 다음, 썸네일 소비자는 파일(312)에 대한 썸네일을 요청하고, 썸네일 클라이언트(310)는 신규로 썸네일 이미지를 생성하는 데에 처리 시간을 허비하지 않고 로컬 썸네일 캐시(301)에 저장된 이미지의 사본 또는 이에 대한 참조로 응답할 수 있다.
로컬 썸네일 캐시(301)는 이것이 현재 인식된 사용자에 의해서만 액세스될 수 있기 때문에 "로컬"이라 기술된다. 인식된 사용자라는 용어는, 운영 체제(134)에 의해 인식된 컴퓨터(110)의 사용자를 의미한다. 컴퓨터가 많은 사용자를 지닐 수 있지만, 인식된 사용자에게만이 이 파일들의 보안에 관한 제어와 로컬 설정(local setting)에 대한 제어가 허가(grant)될 수 있다. 인식된 사용자들은 통상적으로 개별적인 로그인 식별자와 암호를 갖는다. 인식된 사용자들 각각은, 보안 특권(security privileges)(예를 들면, 사용자 파일에 대해 다른 사용자들을 잠금) 뿐만 아니라 데스크톱 환경 설정(desktop preference)(예를 들면, 배경 컬러)을 포함할 수 있는, 자기 고유의 로컬 설정 집합으로 액세스할 수 있다.
로컬 썸네일 캐시(301)는 인식된 사용자의 로컬 파일들 사이에 저장될 수 있다. 컴퓨터(110)의 인식된 사용자 각각에게는 자기 고유의 로컬 썸네일 캐시(301)가 할당될 수 있다. 이것은 중복될 수도 있지만, 이것은 민감할 수 있는 파일들로의 구속 없는 액세스를 방지한다. 상술된 바와 같이, 전체적으로 액세스가능한 썸네일 캐시를 사용함으로써, 인가되지 않은 사용자도 자신이 액세스할 수 없는 파일의 썸네일 이미지로 액세스할 수 있다. 인식된 사용자들에게만 사용가능한 로컬 캐시에 모든 썸네일을 캐싱함으로써, 잠재적인 보안 구멍(security hole)이 플러그 될 수 있다(plugged). 각종 최적화 방식이 썸네일 생성 프로세스를 합리적으로 할 수 있다(streamline). 이들 방식으로는, 다른 로컬 캐시 또는 원격 캐시에 캐싱된 썸네일을 공유하는 것이 있다(그러면서 보안 수단이 방해되지 않음을 보장함). 이 캐싱 방식은 컴퓨터(110)의 인식된 사용자 각각에 대해 별도의 캐시가 생성되기 때문에 사용자별/기계별 캐시라 할 수 있다.
로컬 썸네일 캐시(301)는 데이터 저장소(303)와 인덱스 저장소(304)와 결합된 썸네일 서버(302)의 형태로, 장치(120)에 의해 처리함으로써 실행가능한 소프트웨어 코드를 포함할 수 있다. 데이터 저장소(303)는 그래픽 정보로서 저장된 썸네일 이미지를 포함하는 하나 이상의 데이터 파일을 포함할 수 있다. 데이터 저장소(303)는 이미지의 치수(dimension) 또는 파일 크기(size)에 상관없이, 모든 썸네일 이미지를 저장하기 위해 오직 단 하나의 데이터 파일만을 포함할 수 있다. 또는, 상이한 치수의 썸네일을 저장하기 위해 여러 데이터 파일이 사용될 수도 있다. 인덱스 파일(304)은 데이터 저장소(303) 내의 관련 썸네일의 위치(또는 위치 오프셋)과 결합된 파일 식별 정보를 포함하는 인덱스 파일을 포함할 수 있다. 인덱스 저장소(304)와 데이터 저장소(303)는 운영 체제(134)에서 별도의 파일로서 저장될 수 있다. 명세서 전반에 걸쳐 별도의 파일로서 설명되지만, 이들 파일은 메모리에 저장될 때 하나의 합쳐진(federated) 캐시 파일로 결합될 수도 있다.
썸네일 서버(302)는 특정 썸네일 관련 프로그램 인터페이스를 구현하는 실행 가능 코드의 모음일 수 있다. 썸네일 서버(302)는 실행가능 파일(예를 들면, thumbs.exe)이거나, 또는 실행가능 코드의 동적으로 링크가능한 라이브러리(예를 들면, thumbcache.dll)일 수 있다. 썸네일 서버(302)에 의해 구현된 IThumbnailCache 인터페이스는, 썸네일 클라이언트(310)가 캐시에 저장된 썸네일을 가져올 수 있고(예를 들면, GetThumbnail()), 썸네일을 캐시 내에 넣을 수 있는(예를 들면, SetThumbnail()) 두 개의 필수 함수를 포함할 수 있다.
썸네일 클라이언트(310)가 로컬 썸네일 캐시(310)로부터 썸네일 이미지를 가져오고자 하면, 썸네일 클라이언트(310)는 썸네일 서버(302)에 식별 정보를 제공함으로써 이것을 요청할 수 있다. 상술된 바와 같이, 이 식별 정보로는, URL, 날짜, 시각, 상술된 임의의 것의 해시 등이 있다. 또는, 로컬 썸네일 캐시(310)가 여러 가지 크기의 썸네일 이미지를 저장하고 있는 경우, 식별 정보는 또한 썸네일 치수(예를 들면, 32×32 또는 128×128)를 또한 포함할 수 있다. 로컬 썸네일 캐시(310)가 모든 식별 정보와 일치하는 썸네일을 갖고 있지 않는 경우에는, 캐시(301)는 썸네일 클라이언트(310)로 캐시 없음 표시자(cache miss dindicator)를 반환할 수 있다.
로컬 썸네일 캐시(310)가 요청된 썸네일의 저장된 사본을 갖고 있는 경우, 이것은 이 썸네일 이미지의 사본 또는 캐시 내로 직접 가리키는 이미지에 대한 참조를 반환할 수 있다. 이것을 "직접 매핑(direct mapping)"이라 지칭한다. 썸네일 이미지로의 직접 캐시 참조를 사용함으로써, 관리되어야만 하는 썸네일의 추가의 버퍼 사본들의 생성들 피할 수 있다(예를 들면, 기초가 되는 썸네일이 수정될 때마다 사본들이 리프레시되어야만 함). 캐시에 저장된 썸네일 이미지로의 참조를 제공함으로써, 비디오 어댑터(183)는 운영 체제(134)에 의해 이용된 메모리 관리 메커니즘에 따라, 하드 디스크(141)로부터 직접 썸네일을 참조할 수 있다.
도 4는 본 발명의 하나 이상의 예시적인 실시예에 따르는, 관련 데이터 파일(402,403,404)을 갖는 썸네일 캐시 인덱스(401)를 도시한다. 로컬 썸네일 캐시(301)는 인덱스(401)를 포함할 수 있다. 인덱스(401)는 판독/쓰기 잠금을 관리하기 위한 필드 뿐만 아니라 인덱스 버전 번호와 같은 정보를 갖는 헤더(411)를 포함할 수 있다. 인덱스(401) 내의 각각의 엔트리들, 예를 들면 인덱스 엔트리(421)는 식별 정보(예를 들면, URL 문자열 및/또는 수정 날짜 및 시각의 생성된 해시)를 포함할 수 있다. 또한, 각각의 인덱스 엔트리는 위치 정보 어레이를 포함할 수 있으며, 하나의 어레이 엔트리는 썸네일을 포함할 수 있는 썸네일 데이터 파일 각각에 대한 것이다. 인덱스(401)에 저장된 인덱스 엔트리는 신속한 액세스를 위해 해시 테이블 또는 분산 테이블(scatter table)을 이용하여 저장될 수 있다. 특히, 인덱스 엔트리는 선형 프로브 시퀀스(linear probe sequence)를 갖는 오픈 어드레스형 분산 테이블(open addressed scatter table)에 저장될 수 있다. 인덱스(401) 내의 인덱스 엔트리의 구성은 조정되고 최적화되어 파일의 로컬성(locality)을 증가시킬 수 있으며, 그리하여, 자주 요청되는 썸네일들은 신속한 액세스를 위해 서로에게 편리한 위치에 함께 저장될 수 있다.
로컬 썸네일 캐시(301)는 특정 크기 또는 치수의 썸네일을 각각 포함하는, 하나 이상의 관련된 데이터 파일(402,403,404)을 포함할 수 있다. 각각의 데이터 파일은 고아(orphan) 제거 및 판독기/기록기/유지기 잠금을 관리하기 위한 필드뿐만 아니라 데이터 파일 버전 번호, 관련된 썸네일의 크기(예를 들면 32×32, 또는 128×128)와 같은 정보를 포함할 수 있는 헤더(412,413,414)를 포함할 수 있다. 단 하나의 썸네일 크기를 갖는 데이터 파일을 사용하면, 번호순으로 나열된(serialized) 비트맵(또는 다른 그래픽 포맷)이 표준 크기를 요구할 수 있기 때문에, 코딩을 단순화할 수 있고, 데이터 파일 선회(traversal)와 조작을 더 단순하게 할 수 있다. 정확한 픽셀 또는 파일 크기 요건을 충족시키지 않는 (예를 들면, 표준 영상비와 다른 영상비를 지니는) 썸네일 이미지들은, 표준 엔트리 크기를 유지하기 위해 패드 인(pad in)될 수 있다. 예를 들면, 썸네일의 직접 매칭을 가능하게 하는 데에 필요한 특정 파일 크기를 달성하기 위해 이미지가 패딩될 수 있다.
데이터 파일들(402,403,404)의 헤더(412,413,414)에 이어, 저장된 비트맵(또는 JPEGs 또는 다른 그래픽 포맷)의 번호순으로 나열된 버전이 각 데이터 파일에 나타날 수 있다. 썸네일, 특별히 큰 이미지를 저장하는 데에 압축 포맷이 사용될 수 있다. 이 압축된 이미지들은 검색될 때 압축 해제된다. 인덱스(401)의 각각의 인덱스 엔트리에 저장된 위치 정보는, 각 데이터 파일 내의 고정 시작점으로부터 카운트되는 바이트 수 또는 이미지 수를 제공하는, 오프셋 정보를 포함할 수 있다. 인덱스(401)의 각 인덱스 엔트리 내에 저장된 위치 정보는, 썸네일 이미지 내용의 CRC-32 체크섬(또는 유사한 체크섬)을 또한 포함할 수 있다. 이것을 이용하여 로컬 썸네일 캐시(301)는, 썸네일 이미지가 저장된 이후로 이 썸네일 이미지의 내용이 의도하지 않게(또는 악의로) 수정되었는지 여부를 점검할 수 있다.
도 4의 썸네일 캐시 사용의 한 가지 가능한 예제가 이하에 있다. 인덱스 엔트리(421)는 동일한 식별 정보와 관련된 세 개의 썸네일에 대한 위치 정보를 포함 한다. 엔트리에 대한 키로서 사용된 값 "0xA984EDF1012A33D1"은, 관련된 파일 위치 및/또는 수정 날짜 및 시각의 CRC-64 해시일 수 있다. 세 개의 데이터 파일 엔트리(422,423,424)는 동일한 이미지의 썸네일들이지만, 이 각각은 서로 다른 표준 크기를 갖는다. 인덱스 엔트리(421)와 관련된 썸네일을 요청할 때, 요청자는 특정 크기를 표시할 수 있다. 어떤 크기가 요청되는지에 따라, 썸네일 서버(302)는 식별 정보를 이용하여 인덱스 엔트리(421)에 대해 인덱스(401)를 검색하고, 요청된 썸네일 크기에 대응하는 인덱스 엔트리 내의 위치 정보를 찾고, 위치 정보를 이용하여 적절한 데이터 파일에 있는 썸네일 이미지를 찾고, 그리고 나서 이 썸네일 이미지의 사본 또는 이에 대한 참조를 반환한다. 인덱스 엔트리에 대한 키로서 식별 정보가 아닌 CRC-64 해시를 사용하면 충돌의 가능성이 있다. 비록 아주 드물긴 하지만, 썸네일과 함께 식별 정보의 사본을 데이터 파일에 저장하고 썸네일이 검색될 때 정보를 비교함으로써 이러한 충돌을 피할 수 있다.
로컬 썸네일 캐시(301)는 각 클라이언트 프로세스의 인-프로세스 서버(in-process server) 컴포넌트를 통해 액세스될 수 있다. 썸네일 캐시로의 액세스를 중재하기 위해 사용자별 또는 시스템별 중개(broker) 서비스를 사용하는 대신, 각 클라이언트 프로세스는, 동일한 파일 또는 동일한 메모리 공간을 액세스할 때 경합(contention)을 피하기 위해, 협동하여 액세스를 동기화할 수 있다. 인덱스(401) 상에서의 경합은 매우 낮을 수 있다. 인덱스(401)에서의 경합에 대항하여 보호하기 위해, 표준의 다수 판독기/단일 기록기 그룹 잠금이 사용될 수 있다. 그룹 잠금 구현은 "기록기 부족(writer-starved)"일 수 있으며, 판독기 잠금에 우선 순위를 둔다. 하나 이상의 데이터 파일(402,403,404)에서의 경합은 높을 수 있다. 데이터 파일(402,403,404)에서의 경합을 피하기 위해 판독기/기록기/유지기 잠금이 이용될 수 있다. 유지기는 판독기에 의해 액세스될 수 없는 데이터 파일 엔트리(예를 들면, 인덱스 엔트리 위치의 이동으로 인해 데이터 파일 엔트리가 고아가 됨(orphaned))를 수정할 때에만 허용될 수 있고, 그리고 백그라운드 정밀 검사 및 단편화 해소 시도(defragmentation passes)를 수행하는 것뿐만 아니라 한물 간 썸네일의 "쓰레기 수집(garbage collect)"에만 허용될 수 있다.
로컬 썸네일 캐시(301)가 (데이터베이스에 반대되는) 캐시이기 때문에, 캐시 파일 크기를 관리하기 위한 전략 집합이 이용될 수 있다. 소정의 시간 동안 캐시 내에 특정 썸네일 이미지가 계속 유지된다는 것을 보장할 수 없다. 새로운 썸네일을 위한 공간을 만들기 위해, 규칙적으로, 덜 사용되거나 또는 날짜가 이미 지나버린 썸네일은 버려질 수 있다. 캐시 크기를 관리하기 위한 전략들로는, 각 사용자의 썸네일 캐시(또는 모든 사용자의 캐시)를 특정 크기 또는 사용가능한 디스크 공간의 특정 백분율로 제한하는 것, 선택적으로 사용자로 하여금 디스크 정리 마법사의 일부로서 모든 썸네일 캐시를 삭제하는 것을 가능하게 하는 것, "쓰레기"를 수집합으로써 고아가 된(참조되지 않은) 데이터 파일 엔트리를 제거하는 것 및 새로운 썸네일이 사용하도록 오래되거나 및/또는 사용되지 않은 캐시 엔트리에 의해 점유된 공간을 회수하는(reclaim) 것 등이 있다. 회수 전략은 사용 빈도, 마지막 사용 이래의 시각, 원래 변환된 파일의 크기 등을 고려할 수 있다. 예를 들면, 원래의 파일이 크다면(그리고 썸네일을 생성하는 데에 시간이 더 걸린다면), 그 원래의 파일이 자주 사용되지 않는다 하더라도, 캐시 내에 계속 유지하고 회수하지 않을 수 있다.
특정 썸네일 이미지가 현재 사용 중인지(즉, 쓰레기가 아님) 여부를 판정할 때, 종래의 접근 방법 또는 종래의 접근 방법이 아닌 접근 방법이 이용될 수 있다. 썸네일이 사용 중인지 여부를 추적하기 위한 한 가지 방법은, 아마도 인덱스(401)와 함께 공유 메모리에 저장되어 있는 참조 카운트(reference count)를 통해 썸네일로의 참조를 계속 추적하는 것이다. 그러나, 참조 카운트는 돌연 종료한 프로세스에 의해서는 감소되지 않는데, 이것은 이제 고아가 된 썸네일 이미지의 폐영역 회수(garbage collection)를 막는다.
데이터 파일의 이미지에 대한 참조를 추적하기 위한 한 대안의 방법은, 판독되고 있는 썸네일 이미지 각각에 대해 고유하게 명명된 커널 객체를 생성하는 것이다. 예를 들면, 커널 객체를 명명하기 위해 URL과 이미지 이름의 CRC-64를 연결하여, 썸네일을 판독할 때 쉬운(cheap) 커널 객체(예를 들면, 뮤텍스(mutex) 또는 이벤트)가 생성될 수 있다. 썸네일을 판독할 때 프로세스가 죽는 경우, 운영 체제는 커널 객체를 정리한다(clean up). 특정 썸네일이 사용 중인지 여부를 점검할 때, 시스템은 단지 고유한 이름에 대해 커널을 질의하거나, 또는 동일한 객체의 생성을 시도하여 그에 오류가 있는지 여부를 살펴본다. 오류가 있으면, 이것은 그 객체가 이미 존재하며, 썸네일은 "사용 중"이라는 것을 의미한다.
폐영역 회수를 행하기 위해(예를 들면, 인덱스에 의해 더 이상 참조되지 않거나 더 이상 "사용 중"이 아닌 썸네일 이미지를 제거하거나 또는 이를 오버라이트 함), 회수 알고리즘이 사용될 수 있다. 이러한 알고리즘은 고아가 되거나 사용 중이 아닌 썸네일을 검색하는, (백그라운드 프로세스로서) 데이터 파일 전체를 선회하는 것을 포함할 수 있다. 고아가 된 썸네일은 새로운 썸네일로 즉시 대체되거나, 또는 앞으로의 재사용을 위해 플래그될 수 있다. 데이터 파일 내의 썸네일은 저장된 이미지들 각각의 시작 부분에 헤더 엔트리를 포함할 수 있다. 이 헤더는 고아 상태인지를 나타내는 플래그를 포함할 수 있다. 또는, 저장된 이미지 각각의 헤더는 "다음으로 고아가 된(next orphaned)" 데이터 파일 엔트리에 대한 값을 포함할 수 있다. "다음으로 고아가 된" 엔트리의 연결 리스크를 검토함으로써(walk), 고아가 된 썸네일 이미지 모두를 탐색하고 차례로 처리할 수 있다. 또는, 단편화 해소 시도는 고아가 된 썸네일 이미지를 데이터 파일로부터 완전히 제거할 수 있고, 간극(gap)을 없애기 위해 참조된 썸네일을 시프트할 수 있다. 이들 시도는 또한 시간에 따라 계속적으로 업데이트되는 사용 카운트의 막대 그래프와 같은 사용 전략에 기초하여, 더 나은 로컬성을 위해 이미지들을 재배치할 수 있다.
도 5는 상술한 바와 같은 회수 전략에 의해 제안되는, 로컬 썸네일 캐시(301)에 썸네일 이미지를 저장하기 위한 프로세스를 도시한다. 단계(500)에서, 식별 정보와 함께 썸네일 이미지 저장 요청이 수신된다. 동일한 식별 정보를 이용하는 이 썸네일 크기의 이미지가 이전에 저장되었는지 여부를 알아보기 위해 판정 단계(501)에서 인덱스(401)를 점검한다. 이미지가 이전에 저장되었다면, 판정 단계(502)에서, 오래된 이미지가 현재 사용 중인지를 알아보기 위해 오래된 이미지를 점검한다. 만약 사용 중이라면, 단계(503)에서, 이전에 저장된 이미지의 위치가 이후에 정리될 고아가 된 위치의 리스트에 저장된다. 이미지가 현재 사용 중이 아니라면, 단계(505)에서, 이 위치는 새 이미지를 위해 재사용된다. 단계(503) 이후 또는 판정 단계(501)에서 이미지가 이전에 저장되지 않았다면, 판정 단계(504)에서, 현재 사용 중이지 않은 것이 하나라도 있는지 알아보기 위해 고아 리스트를 점검한다. 사용 중이 아닌 고아가 있는 경우, 단계(506)에서, 고아의 이미지 크기가 대체 이미지를 수용하기에 충분히 크다면 고아의 위치는 새 이미지를 위해 사용된다. 사용가능한 고아가 없는 경우에는, 판정 블록(507)에서, 상술된 제약 하에서, 데이터 파일이 증가할 수 있는지 여부를 알아보기 위해 데이터 파일을 점검한다. 데이터 파일이 증가할 수 있는 경우, 단계(508)에서 새 이미지가 데이터 파일에 첨부된다. 데이터 파일이 더 이상 증가할 수 없는 경우, 판정 블록(511)에서, 고아는 아니지만 사용 중이 아닌, 회수할 이미지를 선택하기 위해 상술된 회수 전략을 사용하기로 한다. 이미지가 발견되지 않으면, 단계(512)에서, 새 이미지는 캐시에 의해 저장되지 않는다. 회수가능한 이미지가 발견되면, 단계(509)에서, 저장 위치가 회수되고 새 이미지는 선택된 회수가능한 이미지를 대체한다. 상술된 단계들(505,506,508 또는 509) 중 임의의 단계에 의해 새로운 이미지가 저장되면, 단계(510)에서, 인덱스(401)에 새 엔트리를 업데이트하기 위해 이미지의 새 위치가 사용된다.
도 6은 로컬 썸네일 캐시(301)에 썸네일을 저장하고 이로부터 썸네일을 검색해 오기 위한 일반적인 프로세스를 도시한다. 단계(601)에서, 로컬 썸네일 캐시(301)는 인덱스(401)와 하나 이상의 데이터 파일을 이용하여 유지된다. 단 게(602)에서, 식별 정보와 함께 썸네일 저장 요구가 수신된다. 단계(603)에서, 썸네일 이미지는 아마도 상술된 프로세스를 이용하여 데이터 파일에 저장된다. 단계(604)에서, 식별 정보가 인덱스(401)에 저장되고, 단계(605)에서, 데이터 파일 내의 이미지의 위치가 식별 정보와 함께 인덱스(401)에 저장된다. 단계(606)에서, 그 식별 정보에 의해 나타난 바와 같이, 썸네일 이미지를 검색하기 위한 요청이 수신된다. 단계(607)에서, 상술한 프로세스를 이용하여, 이미지 또는 이미지에 대한 참조가 검색된다.
본 발명의 양태들이 본 발명을 수행하는 현재의 바람직한 모드를 포함하는 특정 예에 관해 설명되었지만, 당업자들은 첨부된 청구항에 설명된 바와 같이, 본 발명의 취지 및 범위 내의 상술된 시스템과 기술의 각종 변형 및 교환이 있다는 것을 알 것이다.

Claims (20)

  1. 썸네일 이미지들을 관리하기 위한 컴퓨터 구현 방법으로서,
    컴퓨터에 인덱스와 데이터 저장소를 포함하는 썸네일 캐시(thumbnail cache)를 유지하는 단계;
    상기 썸네일 캐시에 썸네일 이미지를 추가하는 제1 요청을 수신하는 단계 -상기 제1 요청은 상기 썸네일 이미지, 식별 정보 및 썸네일 크기를 포함함-;
    상기 썸네일 이미지를 상기 데이터 저장소에 저장하는 단계; 및
    상기 식별 정보, 상기 썸네일 크기 및 상기 데이터 저장소 내의 상기 썸네일 이미지의 위치를 상기 인덱스에 저장하는 단계
    를 포함하는 썸네일 이미지들을 관리하기 위한 컴퓨터 구현 방법.
  2. 제1항에 있어서, 상기 식별 정보는 파일 위치 및 수정 시각을 포함하는 방법.
  3. 제1항에 있어서,
    상기 썸네일 이미지를 검색하는(retrieve) 제2 요청을 수신하는 단계 -상기 제2 요청은 상기 식별 정보와 상기 썸네일 크기를 포함함-; 및
    상기 썸네일 이미지로 상기 제2 요청에 응답하는 단계
    를 더 포함하는 방법.
  4. 제3항에 있어서, 상기 썸네일 이미지를 디스플레이 상에 디스플레이하는 단계를 더 포함하며, 상기 디스플레이와 관련된 메모리는 상기 썸네일 캐시로부터 상기 썸네일 이미지의 압축되지 않은 사본을 직접 판독하는 방법.
  5. 제1항에 있어서,
    상기 데이터 저장소는 복수의 데이터 파일을 포함하며, 하나의 데이터 파일은 복수의 서로 다른 썸네일 크기 각각에 대한 것이며,
    상기 인덱스의 엔트리는 상기 식별 정보와 상기 복수의 데이터 파일 내의 복수의 썸네일 이미지 위치를 포함하는 방법.
  6. 제1항에 있어서, 상기 컴퓨터의 인식된 사용자 각각은 전용 썸네일 캐시를 갖는 방법.
  7. 제6항에 있어서, 전용 썸네일 캐시 각각은 대응하는 인식된 사용자에 의해서만 액세스가능한 방법.
  8. 제1항에 있어서, 상기 썸네일 캐시는 상기 컴퓨터 상에서 실행되는 복수의 프로세스에 의해 동시에 액세스가능한 방법.
  9. 제8항에 있어서, 상기 복수의 프로세스는 상기 썸네일 캐시로의 액세스를 서로 협동하여 동기화하는 방법.
  10. 제1항에 있어서, 상기 썸네일 이미지를 상기 데이터 저장소에 저장하는 단계는,
    상기 식별 정보와 관련된 오래된 썸네일 이미지가 상기 데이터 저장소의 한 위치에 이미 존재하는지 여부를 판정하는 단계; 및
    상기 오래된 썸네일 이미지가 상기 데이터 저장소에 존재하는 것에 응하여, 상기 썸네일 이미지를 상기 오래된 썸네일 이미지의 위치에 저장하는 단계
    를 포함하는 방법.
  11. 썸네일 이미지들을 관리하기 위한 시스템으로서,
    인덱스 파일과 하나 이상의 데이터 파일들을 포함하는 썸네일 캐시를 저장하기 위한 기억 장치; 및
    상기 썸네일 캐시에 썸네일 이미지를 저장하기 위한 제1 요청 -상기 제1 요청은 상기 썸네일 이미지와 식별 정보를 포함함-을 수신하고, 상기 썸네일 이미지를 상기 하나 이상의 데이터 파일들 중 하나에 저장하고, 상기 식별 정보와 상기 하나 이상의 데이터 파일들 중 하나 내의 상기 썸네일 이미지의 위치를 상기 인덱스에 저장하고, 상기 썸네일 이미지를 검색하기 위한 제2 요청 -상기 제2 요청은 상기 식별 정보를 포함함- 을 수신하고, 상기 썸네일 이미지에 대한 참조로 상기 제2 요청에 응답하도록 구성된 프로세서
    를 포함하는 썸네일 이미지들 관리 시스템.
  12. 제11항에 있어서, 상기 식별 정보는 파일 위치와 수정 날짜 및 시각을 포함하는 시스템.
  13. 제12항에 있어서, 상기 파일 위치는 URL(uniform resource locator)인 시스템.
  14. 제10항에 있어서,
    디스플레이; 및
    메모리를 더 포함하며,
    상기 썸네일 이미지에 대한 참조는 상기 썸네일 이미지의 표시가 위치하고 있는 상기 메모리 내의 메모리 위치를 가리키며, 상기 프로세서는 상기 메모리 위치를 직접 참조함으로써 상기 디스플레이 상에 상기 썸네일 이미지를 디스플레이하도록 또한 구성되는 시스템.
  15. 제11항에 있어서, 상기 프로세서는,
    상기 식별 정보에 대한 오래된 썸네일 이미지가 메모리의 한 위치에 이전에 저장되었는지 여부를 판정하고,
    상기 오래된 썸네일 이미지가 이전에 저장되었다는 판정에 응하여, 상기 하나 이상의 데이터 파일들 중 하나 내의 상기 오래된 썸네일 이미지의 메모리 위치를 재사용하여 상기 썸네일 이미지를 저장하도록 또한 구성된 시스템.
  16. 제11항에 있어서, 상기 시스템의 인식된 사용자는 전용 썸네일 캐시를 갖는 시스템.
  17. 제11항에 있어서, 상기 썸네일 캐시는 상기 컴퓨터 상에서 실행되는 여러 프로세스에 의해 동시에 액세스가능한 시스템.
  18. 제11항에 있어서,
    상기 썸네일 캐시는 복수의 데이터 파일을 포함하고, 하나의 데이터 파일은 복수의 서로 다른 썸네일 이미지 크기 각각에 대한 것이며,
    상기 인덱스 파일의 엔트리는 상기 식별 정보와 상기 복수의 데이터 파일 내의 하나 이상의 썸네일 이미지 위치를 포함하며,
    상기 제1 요청은 상기 복수의 서로 다른 썸네일 이미지 크기 중 하나의 표시자를 더 포함하는 시스템.
  19. 썸네일 이미지를 관리하기 위한 시스템으로서,
    디스플레이;
    썸네일 캐시를 저장하기 위한 기억 장치 -상기 썸네일 캐시는 인덱스 파일과 복수의 데이터 파일을 포함함-; 및
    상기 썸네일 캐시에 썸네일 이미지를 저장하기 위한 제1 요청 -상기 제1 요청은 상기 썸네일 이미지, 파일 위치, 수정 날짜 및 시각 및 썸네일 크기를 포함함-을 수신하고, 상기 썸네일 이미지를 상기 복수의 데이터 파일 중 하나에 저장하고, 상기 복수의 데이터 파일 중 하나 내의 상기 썸네일 이미지의 파일 위치, 수정 날짜 및 시각 및 썸네일 크기를 상기 인덱스 파일에 저장하고, 상기 썸네일 이미지를 검색하기 위한 제2 요청 -상기 제2 요청은 상기 파일 위치, 상기 수정 날짜 및 시각 및 상기 썸네일 크기를 포함함- 을 수신하고, 상기 썸네일 이미지에 대한 참조로 상기 제2 요청에 응답하고, 상기 디스플레이 상에 상기 썸네일 이미지를 디스플레이하도록 구성된 프로세서
    를 포함하는 썸네일 이미지들 관리 시스템.
  20. 제18항에 있어서,
    상기 썸네일 캐시로부터 상기 썸네일 이미지를 직접 판독하는 비디오 어댑터를 더 포함하는 시스템.
KR1020077023759A 2005-04-22 2005-07-28 썸네일 이미지를 관리하기 위한 방법 및 시스템 KR20080002838A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/111,986 US20060242163A1 (en) 2005-04-22 2005-04-22 Local thumbnail cache
US11/111,986 2005-04-22

Publications (1)

Publication Number Publication Date
KR20080002838A true KR20080002838A (ko) 2008-01-04

Family

ID=37188303

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077023759A KR20080002838A (ko) 2005-04-22 2005-07-28 썸네일 이미지를 관리하기 위한 방법 및 시스템

Country Status (6)

Country Link
US (1) US20060242163A1 (ko)
EP (1) EP1872197A4 (ko)
JP (1) JP2008538627A (ko)
KR (1) KR20080002838A (ko)
CN (1) CN101167047B (ko)
WO (1) WO2006115517A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170104799A (ko) * 2016-03-08 2017-09-18 엘지전자 주식회사 이동단말기 및 그 제어방법

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080022218A1 (en) * 2006-07-24 2008-01-24 Arcsoft, Inc. Method for cache image display
TW200840357A (en) * 2006-12-26 2008-10-01 Sony Corp Information processing apparatus, information processing method, and program
US20080244469A1 (en) * 2007-03-30 2008-10-02 Research In Motion Limited Method of optimizing the displaying of image media on a wireless communications device
US7941749B2 (en) * 2007-05-15 2011-05-10 Microsoft Corporation Composition of electronic document layout
CN101193074A (zh) * 2007-05-22 2008-06-04 腾讯科技(深圳)有限公司 一种在即时通信展示框上显示图片的方法和系统
US7975109B2 (en) 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
US20090064045A1 (en) * 2007-09-04 2009-03-05 Christopher Tremblay Low memory rendering of graphical objects
DE102008008138A1 (de) 2008-02-08 2009-08-13 Rhode & Schwarz Gmbh & Co. Kg Konfigurierbares Messgerät und entsprechendes Messverfahren
KR101531499B1 (ko) * 2008-03-19 2015-06-26 엘지전자 주식회사 미들웨어, 녹화물 정보 제공 방법 및 녹화물 정보 제공방법을 기록한 기록매체
US8229945B2 (en) 2008-03-20 2012-07-24 Schooner Information Technology, Inc. Scalable database management software on a cluster of nodes using a shared-distributed flash memory
US8732386B2 (en) * 2008-03-20 2014-05-20 Sandisk Enterprise IP LLC. Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory
JP5782214B2 (ja) 2008-05-30 2015-09-24 富士通株式会社 情報検索プログラム、情報検索装置および情報検索方法
JP5419486B2 (ja) * 2009-02-10 2014-02-19 キヤノン株式会社 データ処理装置、データ処理方法、およびプログラム
US9076239B2 (en) 2009-04-30 2015-07-07 Stmicroelectronics S.R.L. Method and systems for thumbnail generation, and corresponding computer program product
JP5504722B2 (ja) * 2009-07-15 2014-05-28 富士ゼロックス株式会社 情報処理装置及びコンピュータプログラム
JP5515507B2 (ja) * 2009-08-18 2014-06-11 ソニー株式会社 表示装置及び表示方法
EP2336910B1 (en) * 2009-11-23 2018-02-21 BlackBerry Limited Generating device specific thumbnails
CN102088568B (zh) * 2009-12-08 2016-08-10 新奥特(北京)视频技术有限公司 一种字幕制作系统
CN102088573A (zh) * 2009-12-08 2011-06-08 新奥特(北京)视频技术有限公司 一种管理字幕素材文件的服务器
CN101807199B (zh) * 2010-02-05 2012-10-24 腾讯科技(深圳)有限公司 一种缩略图显示方法及装置
US8725951B2 (en) 2010-04-12 2014-05-13 Sandisk Enterprise Ip Llc Efficient flash memory-based object store
US9047351B2 (en) 2010-04-12 2015-06-02 Sandisk Enterprise Ip Llc Cluster of processing nodes with distributed global flash memory using commodity server technology
US9164554B2 (en) 2010-04-12 2015-10-20 Sandisk Enterprise Ip Llc Non-volatile solid-state storage system supporting high bandwidth and random access
US8868487B2 (en) 2010-04-12 2014-10-21 Sandisk Enterprise Ip Llc Event processing in a flash memory-based object store
US8856593B2 (en) 2010-04-12 2014-10-07 Sandisk Enterprise Ip Llc Failure recovery using consensus replication in a distributed flash memory system
US8666939B2 (en) 2010-06-28 2014-03-04 Sandisk Enterprise Ip Llc Approaches for the replication of write sets
CN102024057B (zh) * 2010-12-24 2015-07-01 中兴通讯股份有限公司 海量数据记录的索引建立方法及装置
US8694733B2 (en) 2011-01-03 2014-04-08 Sandisk Enterprise Ip Llc Slave consistency in a synchronous replication environment
US8874515B2 (en) 2011-04-11 2014-10-28 Sandisk Enterprise Ip Llc Low level object version tracking using non-volatile memory write generations
CN102760131B (zh) * 2011-04-28 2015-11-04 腾讯科技(深圳)有限公司 一种网络相册的展示方法及系统
CN102789458B (zh) * 2011-05-18 2016-01-13 腾讯科技(深圳)有限公司 一种影像文件处理方法及系统
US9204175B2 (en) 2011-08-03 2015-12-01 Microsoft Technology Licensing, Llc Providing partial file stream for generating thumbnail
DE102011081600A1 (de) * 2011-08-25 2013-02-28 Bayerische Motoren Werke Aktiengesellschaft Verfahren zum Betreiben eines Fahrzeuginformationssystems, Fahrzeuginformationssystem und Computerprogramm
US9135064B2 (en) 2012-03-07 2015-09-15 Sandisk Enterprise Ip Llc Fine grained adaptive throttling of background processes
JP5952612B2 (ja) * 2012-03-28 2016-07-13 キヤノン株式会社 情報処理装置、情報処理方法、およびプログラム
US20160119675A1 (en) * 2012-09-06 2016-04-28 Flextronics Ap, Llc Programming user behavior reporting
US11368760B2 (en) 2012-08-17 2022-06-21 Flextronics Ap, Llc Applications generating statistics for user behavior
CN103678357B (zh) * 2012-09-13 2018-12-11 腾讯科技(深圳)有限公司 一种移动终端获取图片缩略图的方法及装置
CN102857949B (zh) * 2012-09-14 2018-11-20 中兴通讯股份有限公司 一种规划数据一致性保证的方法和装置
US9785307B1 (en) * 2012-09-27 2017-10-10 Open Text Corporation Reorder and selection persistence of displayed objects
CN103873918B (zh) * 2012-12-14 2017-08-29 腾讯科技(深圳)有限公司 图片处理方法、装置及终端
CN103905496A (zh) * 2012-12-27 2014-07-02 腾讯科技(深圳)有限公司 一种图片下载方法及装置
CN103064627B (zh) * 2013-01-11 2016-03-02 广东欧珀移动通信有限公司 一种应用程序管理方法及装置
US9110937B2 (en) * 2013-01-30 2015-08-18 Dropbox, Inc. Providing a content preview
CN104079600B (zh) * 2013-03-27 2018-10-12 中兴通讯股份有限公司 文件存储方法、装置、访问客户端及元数据服务器系统
CN103246729A (zh) * 2013-05-09 2013-08-14 北京暴风科技股份有限公司 一种处理安卓移动端的多媒体文件的方法和系统
CN104168252A (zh) * 2013-05-17 2014-11-26 深圳市同洲电子股份有限公司 一种媒体资源管理方法及系统
CN103699566B (zh) * 2013-11-01 2018-07-10 北京奇虎科技有限公司 一种图片实时切图装置及方法
US10885104B2 (en) 2014-02-27 2021-01-05 Dropbox, Inc. Systems and methods for selecting content items to store and present locally on a user device
US9787799B2 (en) 2014-02-27 2017-10-10 Dropbox, Inc. Systems and methods for managing content items having multiple resolutions
US9489413B2 (en) * 2014-03-31 2016-11-08 Oracle International Corporation Asynchronous global index maintenance during partition maintenance
JP2015215740A (ja) * 2014-05-09 2015-12-03 キヤノン株式会社 情報処理装置、情報処理方法及びプログラム
CN103995706A (zh) * 2014-06-06 2014-08-20 广州金山网络科技有限公司 一种图片缩略图显示方法及装置
TWI502482B (zh) * 2014-07-29 2015-10-01 Insyde Software Corp Handheld electronic device with the function of starting electronic device and its method, computer program product
CN104268012B (zh) * 2014-09-28 2017-10-24 广州华多网络科技有限公司 一种图片数据处理方法及装置
US10198355B2 (en) 2015-10-29 2019-02-05 Dropbox, Inc. Proving a dynamic digital content cache
CN108228646B (zh) * 2016-12-21 2022-02-08 伊姆西Ip控股有限责任公司 用于访问数据的方法和电子设备
US10983677B2 (en) * 2018-11-16 2021-04-20 Dropbox, Inc. Prefetching digital thumbnails from remote servers to client devices based on a dynamic determination of file display criteria
CN112597110B (zh) * 2020-12-17 2023-05-09 海信视像科技股份有限公司 一种显示设备及文件展示方法
CN116561351A (zh) * 2022-01-29 2023-08-08 华为技术有限公司 缩略图存储方法及电子设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5893116A (en) * 1996-09-30 1999-04-06 Novell, Inc. Accessing network resources using network resource replicator and captured login script for use when the computer is disconnected from the network
US5933824A (en) * 1996-12-23 1999-08-03 Lsi Logic Corporation Methods and apparatus for locking files within a clustered storage environment
JPH11284948A (ja) * 1998-03-30 1999-10-15 Matsushita Electric Ind Co Ltd サムネイル作成方法及びサムネイル表示方法
JP2002225377A (ja) * 2001-02-02 2002-08-14 Seiko Epson Corp 印刷装置及びコンピュータ可読媒体
JP4253498B2 (ja) * 2002-12-09 2009-04-15 オリンパス株式会社 画像検索プログラム、そのプログラムを記憶した記憶媒体、画像検索装置及び画像検索方法
US7248753B2 (en) * 2003-07-31 2007-07-24 Kyocera Mita Corporation Image displaying apparatus and program product for displaying image

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170104799A (ko) * 2016-03-08 2017-09-18 엘지전자 주식회사 이동단말기 및 그 제어방법

Also Published As

Publication number Publication date
EP1872197A2 (en) 2008-01-02
JP2008538627A (ja) 2008-10-30
WO2006115517A2 (en) 2006-11-02
EP1872197A4 (en) 2008-09-03
CN101167047B (zh) 2010-12-08
US20060242163A1 (en) 2006-10-26
WO2006115517A3 (en) 2007-02-01
CN101167047A (zh) 2008-04-23

Similar Documents

Publication Publication Date Title
KR20080002838A (ko) 썸네일 이미지를 관리하기 위한 방법 및 시스템
CN106575297B (zh) 使用盲更新操作的高吞吐量数据修改
US9734158B2 (en) Searching and placeholders
RU2646334C2 (ru) Управление файлами с помощью заполнителей
US8959075B2 (en) Systems for storing data streams in a distributed environment
US7860907B2 (en) Data processing
US8738572B2 (en) System and method for storing data streams in a distributed environment
KR102128138B1 (ko) 플레이스홀더에 의한 하이드레이션 및 디하이드레이션 기법
US8095678B2 (en) Data processing
US20090300013A1 (en) Optimized Reverse Key Indexes
KR20060095448A (ko) 데이터베이스 내부에 표현된 파일 시스템
US8090925B2 (en) Storing data streams in memory based on upper and lower stream size thresholds
US20140358868A1 (en) Life cycle management of metadata
Chivers et al. Forensic data recovery from the windows search database
JP2017151974A (ja) キーバリューシステム格納装置への高速キャッシュアクセス方法及びシステム
US8977657B2 (en) Finding lost objects in a file system having a namespace
US8176087B2 (en) Data processing
US7421451B2 (en) Padding management for content files
US20080177785A1 (en) System, and program product for rebasing an application
KR20060063653A (ko) 모호한 네임을 허용하는 컴퓨터 파일 시스템
US8886656B2 (en) Data processing
CN111444179B (zh) 数据处理方法、装置、存储介质及服务器
US9063948B2 (en) Versioning file system
US8290993B2 (en) Data processing
CN118120212A (zh) 一种文件去重方法、装置和设备

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid