JP5019578B2 - 記憶装置に記憶されたコンテンツのバージョンを更新する方法およびシステム - Google Patents

記憶装置に記憶されたコンテンツのバージョンを更新する方法およびシステム Download PDF

Info

Publication number
JP5019578B2
JP5019578B2 JP2006516812A JP2006516812A JP5019578B2 JP 5019578 B2 JP5019578 B2 JP 5019578B2 JP 2006516812 A JP2006516812 A JP 2006516812A JP 2006516812 A JP2006516812 A JP 2006516812A JP 5019578 B2 JP5019578 B2 JP 5019578B2
Authority
JP
Japan
Prior art keywords
content
version
item
storage device
old
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Lifetime
Application number
JP2006516812A
Other languages
English (en)
Other versions
JP2007521555A (ja
JP2007521555A5 (ja
Inventor
エヴィアター メラー
シャロン ペレグ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Red Bend Ltd
Original Assignee
Red Bend Ltd
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 Red Bend Ltd filed Critical Red Bend Ltd
Publication of JP2007521555A publication Critical patent/JP2007521555A/ja
Publication of JP2007521555A5 publication Critical patent/JP2007521555A5/ja
Application granted granted Critical
Publication of JP5019578B2 publication Critical patent/JP5019578B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Description

本発明は、記憶装置に記憶されたコンテンツのコンパクトな更新バージョンの作成に関する。
特許文献1には、旧プログラムと新プログラムとの間のコンパクトな差分結果を生成する方法が開示されている。
各プログラムは、プログラム中の他のエントリーを参照する参照を含むエントリーを有する。この方法は、旧プログラムを走査するステップを含み、参照エントリー毎に、独自のラベルマークによってエントリーの参照を置き換えるステップを実行し、これにより、変更された旧プログラムが生成される。更に、この方法は、新プログラムを走査するステップを含み、参照エントリー毎に、独自のラベルマークによってエントリーの参照を置き換えるステップを実行し、これにより、変更された新プログラムが生成される。更に、変更後の旧プログラムおよび変更後の新プログラムを直接的にまたは間接的に利用して特定の差分結果を生成するステップも行われる。
この技術分野においては、記憶装置に記憶されたコンテンツのバージョンを更新する新しい方法およびシステムが、求められている。
米国特許第6,546,552号明細書
本発明は、更新システムを用いて、旧バージョンのコンテンツを新バージョンのコンテンツに更新する方法であって、
前記更新システムの記憶装置には前記旧バージョンのコンテンツが記憶されており、
前記旧バージョンのコンテンツ及び前記新バージョンのコンテンツは、少なくとも2つの項目を含み、
前記項目は、参照される項目への参照を含む項目である参照項目を含み、
(i)前記更新システムが、
前記新バージョンのコンテンツの前記参照される項目におけるシフトを反映するように前記旧バージョンのコンテンツの前記参照項目を更新するための変換子と、
a)前記変換子を適用することにより変更された前記旧バージョンのコンテンツを前記新バージョンのコンテンツと比較することにより、又は、b)前記旧バージョンのコンテンツを前記変換子を適用することにより変更された前記新バージョンのコンテンツと比較することにより、取得される変更の集合である変更デルタと、
を含む更新パッケージであって、
前記変換子は、前記旧バージョンのコンテンツと前記新バージョンのコンテンツとの差異を反映した数値シフト規則又は参照シフト規則を含む、
更新パッケージを取得するステップと、
(ii)前記取得された更新パッケージの前記変更デルタが、前記変換子を適用することにより変更された前記旧バージョンのコンテンツを前記新バージョンのコンテンツと比較することにより取得される変更の集合である場合には、
a)前記更新システムが、前記記憶装置から取得した前記旧バージョンのコンテンツに、前記取得した前記更新パッケージに含まれる前記変換子を適用することにより、前記変更バージョンのコンテンツを生成し、当該生成した変更バージョンのコンテンツを前記記憶装置に記憶させるステップと、
b)前記更新システムが、前記記憶装置から呼び出した前記変更バージョンのコンテンツに、前記取得した前記更新パッケージに含まれる前記変更デルタを適用することにより、前記新バージョンのコンテンツを生成するステップと、を実行し、
(iii)前記取得された更新パッケージの前記変更デルタが、前記旧バージョンのコンテンツを前記変換子を適用することにより変更された前記新バージョンのコンテンツと比較することにより取得される変更の集合である場合には、
a)前記更新システムが、前記記憶装置から取得した前記旧バージョンのコンテンツに、前記取得した前記更新パッケージに含まれる前記変更デルタを適用することにより、前記変更バージョンのコンテンツを生成し、当該生成した変更バージョンのコンテンツを前記記憶装置に記憶させるステップと、
b)前記更新システムが、前記記憶装置から呼び出した前記変更バージョンのコンテンツに、前記取得した前記更新パッケージに含まれる前記変換子を適用することにより、前記新バージョンのコンテンツを生成するステップと、を実行する、
方法である。
また本発明は、更新システムを用いて、旧バージョンのコンテンツを新バージョンのコンテンツに更新するための更新パッケージを生成する方法であって、
前記更新システムの記憶装置には前記旧バージョンのコンテンツ及び前記新バージョンのコンテンツが記憶されており、
前記旧バージョンのコンテンツ及び前記新バージョンのコンテンツは、少なくとも2つの項目を含み、
前記項目は、参照される項目への参照を含む項目である参照項目を含み、
(i)前記更新システムが、前記記憶装置から呼び出した前記旧バージョンのコンテンツ及び前記新バージョンのコンテンツに基づいて、前記新バージョンのコンテンツの前記参照される項目におけるシフトを反映するように前記旧バージョンのコンテンツの前記参照項目を更新するための変換子であって、前記旧バージョンのコンテンツと前記新バージョンのコンテンツとの差異を反映した数値シフト規則又は参照シフト規則を含む変換子を生成し、当該生成した変換子を前記記憶装置に記憶させるステップと、
(ii)前記更新システムが、前記記憶装置から呼び出した前記変換子を、前記旧バージョンのコンテンツ又は前記新バージョンのコンテンツのいずれか一方のコンテンツに適用することにより変更バージョンのコンテンツを生成し、当該生成した変更バージョンのコンテンツを前記記憶装置に記憶させるステップと、
(iii)前記更新システムが、前記記憶装置から呼び出した前記変更バージョンのコンテンツを前記旧バージョンのコンテンツ又は前記新バージョンのコンテンツのいずれか他方のコンテンツと比較することにより取得される変更の集合である変更デルタを生成するステップと、
(iv)前記更新システムが、前記生成した変更デルタと、前記記憶装置から呼び出した前記変換子と、を含む前記更新パッケージを生成するステップと、
を有する方法である。
また本発明は、請求項1から7のいずれか一項に記載の方法を、前記更新システムとしてのコンピュータに実行させるためのプログラムである。
また本発明は、旧バージョンのコンテンツを新バージョンのコンテンツに更新する更新システムであって、
前記旧バージョンのコンテンツ及び前記新バージョンのコンテンツは、少なくとも2つの項目を含み、
前記項目は、参照される項目への参照を含む項目である参照項目を含み、
前記旧バージョンのコンテンツを記憶するよう構成された記憶装置と、
前記新バージョンのコンテンツの前記参照される項目におけるシフトを反映するように前記旧バージョンのコンテンツの前記参照項目を更新するための変換子と、
a)前記変換子を適用することにより変更された前記旧バージョンのコンテンツを前記新バージョンのコンテンツと比較することにより、又は、b)前記旧バージョンのコンテンツを前記変換子を適用することにより変更された前記新バージョンのコンテンツと比較することにより、取得される変更の集合である変更デルタと、
を含む更新パッケージであって、
前記変換子は、前記旧バージョンのコンテンツと前記新バージョンのコンテンツとの差異を反映した数値シフト規則又は参照シフト規則を含む、
更新パッケージを取得するよう構成された入力モジュールと、
(i)前記取得された更新パッケージの前記変更デルタが、前記変換子を適用することにより変更された前記旧バージョンのコンテンツを前記新バージョンのコンテンツと比較することにより取得される変更の集合である場合には、
a)前記記憶装置から取得した前記旧バージョンのコンテンツに、前記取得した前記更新パッケージに含まれる前記変換子を適用することにより、前記変更バージョンのコンテンツを生成し、当該生成した変更バージョンのコンテンツを前記記憶装置に記憶させ、
b)前記記憶装置から呼び出した前記変更バージョンのコンテンツに、前記取得した前記更新パッケージに含まれる前記変更デルタを適用することにより、前記新バージョンのコンテンツを生成し、あるいは、
(ii)前記取得された更新パッケージの前記変更デルタが、前記旧バージョンのコンテンツを前記変換子を適用することにより変更された前記新バージョンのコンテンツと比較することにより取得される変更の集合である場合には、
a)前記記憶装置から取得した前記旧バージョンのコンテンツに、前記取得した前記更新パッケージに含まれる前記変更デルタを適用することにより、前記変更バージョンのコンテンツを生成し、当該生成した変更バージョンのコンテンツを前記記憶装置に記憶させ、
b)前記記憶装置から呼び出した前記変更バージョンのコンテンツに、前記取得した前記更新パッケージに含まれる前記変換子を適用することにより、前記新バージョンのコンテンツを生成する、プロセッサと、
を備える更新システムである。
また本発明は、旧バージョンのコンテンツを新バージョンのコンテンツに更新するための更新パッケージを生成する更新システムであって、
前記旧バージョンのコンテンツ及び前記新バージョンのコンテンツは、少なくとも2つの項目を含み、
前記項目は、参照される項目への参照を含む項目である参照項目を含み、
前記旧バージョンのコンテンツ及び前記新バージョンのコンテンツを記憶するよう構成された記憶装置と、
前記記憶装置から呼び出した前記旧バージョンのコンテンツ及び前記新バージョンのコンテンツに基づいて、前記新バージョンのコンテンツの前記参照される項目におけるシフトを反映するように前記旧バージョンのコンテンツの前記参照項目を更新するための変換子であって、前記旧バージョンのコンテンツと前記新バージョンのコンテンツとの差異を反映した数値シフト規則又は参照シフト規則を含む変換子を生成し、当該生成した変換子を前記記憶装置に記憶させるよう構成された変換子生成部と、
前記記憶装置から呼び出した前記変換子を、前記旧バージョンのコンテンツ又は前記新バージョンのコンテンツのいずれか一方のコンテンツに適用することにより変更バージョンのコンテンツを生成し、当該生成した変更バージョンのコンテンツを前記記憶装置に記憶させるよう構成された変更バージョン生成部と、
前記記憶装置から呼び出した前記変更バージョンのコンテンツを前記旧バージョンのコンテンツ又は前記新バージョンのコンテンツのいずれか他方のコンテンツと比較することにより取得される変更の集合である変更デルタを生成し、当該生成した変更デルタと前記記憶装置から呼び出した前記変換子とを含む前記更新パッケージを生成するよう構成された更新パッケージ生成部と、
を備える更新システムである。
以下に、本発明を理解し、本発明をどのように実施するかを知るために、添付の図面を参照し非限定的な例を用いて好ましい実施の形態を説明する。
図1は、本発明の一実施の形態による、セルラーネットワークにおいてバージョンの更新を提供するシステム101を示す概略図である。メモリ装置に接続されているセルラー電話機102は、その動作を有効にするプログラムを実行する。以降、セルラー電話機で現在実行されているプログラムのバージョンを「旧バージョン」と称する。電話機102がその新バージョンを実行するために、プログラムを更新する必要が時々ある。新バージョンは、パーソナルコンピュータ(PC)のようなバージョン生成部105で生成される。新バージョンは、サーバ103に記憶され、送信部104を介してセルラー電話機102に送信される。
図1に示されるシステム101は、非限定的な例であり、本発明がセルラーネットワークまたはプログラムの更新に限定されないことに注意されたい。他の多種のコンテンツ、例えば、記憶装置に記憶されているデータは、更新を必要とする。例えば、パーソナルコンピュータ(PC)または全ての他のコンピュータは、その動作または実行されるプログラムの動作に必要なデータを含むファイル(例えば、当該技術分野において知られている「情報ファイル(info file)」)を記憶する。このデータをインターネット等の通信線を介して更新することが時として必要である。
従って、以降「コンテンツ」なる用語を「プログラム」の代わりに用いる。同様に、「記憶装置」なる用語を、図1のセルラー電話機のメモリ装置の代わりに用いる。
記憶装置に記憶されたコンテンツを更新するために、更新パッケージが生成され、サーバに記憶され、記憶装置またはそれに接続されている他の装置に送信される。
記憶装置は、組み込み機器(embedded device)と関連付けることができることに注意されたい。組み込み機器は、例えば、セルラー電話機および/または家庭用電化製品よりなる群のいずれかとすることができる。あるいは、記憶装置は、コンピュータと関連付けることができる。
図2は、コンテンツ202の旧バージョンを新バージョン203に更新するよう構成された更新パッケージ201の概略図である。コンテンツの旧バージョン(例えば、旧バージョン202)は、単に「旧バージョン」とも称される。同様に、コンテンツの新バージョン(例えば、新バージョン203)は、単に「新バージョン」とも称される。
更新パッケージ201は、当業者に知られた方法自体に従って生成できることに注意されたい。同様に、旧バージョン202を新バージョン203に更新する際にこの更新パッケージを適用する方法も、既知である。
更新パッケージは、「デルタファイル」、「差分ファイル」、または単に「デルタ」、「差分」と称される。「デルタ」とは、旧バージョンから新バージョンへの更新の際に発生する変更の集合である。従って、更新パッケージがデルタファイルであること、あるいは更新パッケージがデルタファイルおよび追加情報を含み得ることは、当業者には明らかである。
旧バージョン202は、5項目よりなるブロック204を含み、各項目は少なくとも1ワードのサイズ、1バイト以上のサイズ、または他の適用可能な寸法を用いてもよい。ブロック204の後に、例えば500項目よりなる第2のブロック205が続く。次に、旧バージョン202は、第2のブロック205中のある項目207に対する参照(例えば、ポインタ)を少なくとも含む項目206を有する。以降、少なくとも1つの参照を含む項目を「参照項目」と称する。例えば、参照項目206は、項目207に対する絶対参照と関連付けられる命令(例えば、「項目207の絶対アドレスにジャンプする」)を含むことができる。
例えば、旧および新バージョン(例えば、202および203)によって表されるコンテンツがコンピュータプログラムである場合、ブロックは、当業者に知られているように、プログラム機能を表すことは理解されるであろう。
参照項目206の後に、第2のブロック205中の異なる項目209に対する参照を含む別の参照項目208が続く。参照項目208の後に、他の参照項目が続き、これらの項目はそれぞれ第2のブロック205内の項目への参照を含み、最後が参照項目210となる。図示されないが、一例によると、例えば、100個の参照項目が参照項目206と参照項目210との間に存在する。
旧バージョン202が非参照項目、即ち参照を含まない項目も含み得ることは理解されるであろう。項目211は、非参照項目の例である。以降、別段の記載のない限り、「項目」なる語は、参照項目および非参照項目の両方を意味する。
更に、旧バージョン202は、旧バージョン202に含まれていない他の項目への参照項目、即ち、コンテンツの外部にある項目への参照も含む。例えば、旧バージョンが、その実行中にコンピュータのRAM(ランダムアクセスメモリ)にロードされたコンピュータプログラムを表す場合、このような参照項目は、当該プログラムを記憶するために使用される領域の外のRAM領域に記憶された他の項目を参照する。
以降、コンテンツに含まれる項目に対する参照を少なくとも含む参照項目を「明示参照項目」と称し、コンテンツの外部にある項目に対する参照を少なくとも含む参照項目を「暗示参照項目」と称する。
図2を再び参照するに、図示されていないが、最後の参照項目210に続いて70項目が存在する。便宜上、これら70項目(項目211を含む)を以降「末端項目」212と称する。当該70項目は、非参照項目(例えば、項目211)および/または暗示参照項目(例えば、項目213)を含む。本例に従って更新される全てのコンテンツのサイズが非限定的であり、従って、このコンテンツのブロックのサイズも非限定的であることは明らかである。
図2に図示されないが、非参照項目は、参照項目間に存在してもよく、参照項目は必ずしも連続である必要はない。例えば、参照項目206、208、・・・、210間のどこかに非参照項目が1つ以上存在してもよい。
更新パッケージ201は、コンテンツの旧バージョン202を変更して、コンテンツの新バージョン203を生成するよう構成される。更新処理は、この新バージョン203を生成するよう更新パッケージ201に従って動作する。
本例における旧バージョン202と新バージョン203との間の1つの差分は、新バージョン203からブロック204が欠如している点であり、第2のブロック205は後方にシフトし、記憶装置内のブロック204を占有する。本例によると、ブロック204は、5項目を含むため、第2のブロック205は5ブロック分後方にシフトする。従って、ブロック205の後方へのシフトに引き続き、そこに含まれる全ての項目がこれに応じて(5項目分)シフトされることは明らかである。これは、例えば、項目207および209(および新バージョンにおけるそれぞれの対応項目207’および209’)の場合も同様である。ここで、項目206が項目207への参照を含むことに注意されたい。項目206を後方にシフトして項目206’を生成した後にも、当該項目はまだ項目207を参照している、即ち、旧バージョンにおける項目207のアドレスを参照している。新バージョン内の新しい場所の項目207’を参照するよう項目206’のコンテンツを置換する必要がある。
参照を含まない非参照項目211のコンテンツと暗示参照項目213のコンテンツとが、それぞれの場所が5項目分上方にシフトされているにも関わらず、変更を要しないことに注意されたい。本明細書中、別段の記載のない限り、明示参照項目に適用される例は暗示参照項目にも適用可能であることに注意されたい。
ここで更新パッケージ201に戻ると、更新パッケージ201は、旧バージョン202を新バージョン203に更新するコマンドを含む。本例では、コマンドは、旧コンテンツを更新することで実行される1つ以上の動作を表す文字列(例えば、「コピー(copy)」、「置換(replace)」等)として例示される。しかし、例えばオペレーションコード(単に「オペコード(op-code)」とも称する)を用いた他のコマンド表現方法も可能であり、コマンド毎に所定のオペコードが割り当てられる。更に、コマンドは更新パッケージ201に示されるものに代わる方法でしばしば表される。例えば、「置換(replace)」コマンドは、既存コンテンツを置換する挿入コマンドによって表すことができる。
図示するように、パッケージ201に含まれる第1のコマンドは、5項目を削除(delete)することであり、これにより、旧バージョン202における最初の5項目(すなわちブロック204)が削除される。次に、更新パッケージは、500項目を新バージョンの始めにコピーしブロック205を後方に5項目分シフトしブロック205’を生じさせるコマンドを含む。
ブロック205のコピー後、一見したところでは、項目206、208、・・・、210の位置を5ブロック分シフトしつつこれらの項目をコピーして、対応する項目206’、208’、・・・、210’を生じさせることが必要のようである。しかし、前述のように、項目206’、208’、・・・、210’に含まれる参照は、項目207、209、・・・ではなく、参照項目207’、209’、・・・に更新される必要がある。つまり、これらの参照項目または少なくともその一部は置き換える必要がある。参照項目をコピーし、そして、シフトされた参照で置換する代わりに、コピー動作を省略して、項目を直接置換することも可能である。従って、更新パッケージ201は、対応するシフトされた項目(206’、208’、・・・、210’)への参照で参照項目206、208、・・・、210を置換するための100個の置換コマンドを、各参照項目206、208、・・・、210に対して1つずつ含む。
100個の置換コマンドに続いて、更新パッケージ201は、コピーコマンドを含む。コピーコマンドは、新バージョン203内の置換された100個の参照項目に後続するよう70個の末端項目212、即ち、新バージョン203において後方に5項目分シフトされた70項目(項目211’および213’を生じさせる項目211および213を含む)をコピーするものである。
当業者には、上述の例における更新パッケージ201がとりわけ100個の置換コマンドを含み各置換コマンドが置換項目を含むということは明らかである。つまり、更新パッケージ201は、100個の置換項目を含む。更新パッケージがインターネットまたはモバイル(セルラー)ネットワークのような限られた帯域幅の通信回線上で伝送され得ることを考慮して、更新パッケージのサイズを減少することは有益である。
従って、本発明は、更新パッケージを生成し適用するための既知の方法とは異なる、以降「コンパクトな更新パッケージ」と称する効率的な更新パッケージを生成することができる方法を開示する。このような効率的な更新パッケージを生成する一実施の形態を、以降「整数表記形態(integer notation embodiment)」と称し、当該実施の形態は「整数シフト規則」を生成する。整数シフト規則を説明するための背景を、図2および図3を参照して以下に説明する。
本発明の幾つかの実施の形態によれば、旧および新バージョン(それぞれ202および203)における項目を表すために整数値を用いることができることは明らかである。項目は、ディスクまたはメモリのような記憶装置に記憶されたデータであることは明らかである。1項目のサイズが4バイトである場合、4バイトを使用する整数として1項目に記憶されたデータを視覚化することが可能である。図3は、本発明の一実施の形態による、4バイトの項目301の整数表示の概略図である。最上位バイト(最も左のバイト)302は、2進値00001011(16進数では0x0B)によって占有され、第2のバイト303は、2進値10011101(16進数では0x9D)によって占有され、第3のバイト304は11110111(16進数では0xF7)によって占有され、最下位バイト305は、値10000101(16進数では0x85)によって占有される。従って、4バイトは、0x0B9DF785の16進数を有する1つの整数として解釈することができる。つまり、整数0x0B9DF785は、項目301の整数表示であり、以降int(301)と表記される。「int」は、「整数」を意味する。
非参照項目を含む全ての項目が同様に整数で表すことができる。従って、例えば、int(211)は項目211の整数表示である。
図2を再び参照するに、例えば、明示参照項目206は、「項目207の絶対アドレスにジャンプする」なるプログラム命令を含む。項目207の絶対アドレスが0x9DF785である場合、項目206に含まれる命令は、「0x9DF785にジャンプする」に相当する。プログラム命令を、所定のオペコードによって表してもよい。従って、「〜にジャンプする」ためのオペコードは、例えば、10進整数「11」(または16進数では0xB)である。図3を参照して説明したように、本例による項目206の整数表示は0x0B9DF785である。この場合のオペコードは、バイト302によって表され、バイト303、304および305は、参照される項目を表示する。つまり、バイト303、304および305は、参照される項目を一緒に示し、以降ind(207)と称される。「ind」は、「表示」を意味する。
または、整数全体を、参照される項目を示すものとしてみることも可能である。本例では、項目206が命令「項目207にジャンプする」を含む場合、0x9DF785のみを表示値とした前の実施の形態とは異なり、整数0x0B9DF785をind(207)として考えることができる。「項目207を呼び出す」のような命令を含む別の参照項目(図2には図示せず)が存在してもよいことは明らかである。呼び出し命令に対するオペコードは10進整数27(または16進数では0x1B)である。本例では、int(参照項目)は0x1B9DF785である。なお、0x1B9DF785は、この場合、ind(参照される項目)またはind(207)として参照可能である。つまり、本実施の形態では、参照される項目のアドレスに対して表示値が1つ以上存在してもよい。
また、表示値が項目の整数表示のどの部分(全体でもよい)でもよいことは明らかである。また、本例は4バイトのサイズの項目に言及する。このサイズは、ここでは単に例として使用され(以下で再び使用される)、他の項目サイズを用いてもよい。数値を整数として表すことは非限定的な例に過ぎず、他の既知の数値表示を用いてもよい。
項目(参照項目および/または非参照項目を含む)を整数値で表すことができることを考慮しつつ、図2を再び参照するに、更新パッケージ201における置換コマンドを整数で表すことが可能である。例えば、「int(206)、int(206’)を置換する」は、更新パッケージ201の一部である「Replace 206、206’」と等価である。
図4は、本発明の一実施の形態に従って、整数表記を用いて図2の更新パッケージの一部分を示すものである。部分401は、置換コマンドを含む更新パッケージ201の部分である。部分401は従来技術に従っていることが分かる。本例における全ての置換コマンドが、1つが旧バージョン内のものであり1つが新バージョン内のものである2つの参照項目と関連付けられることに注意されたい。以降、この2つの参照項目を「置換対」として称する。
当業者には、部分402が部分401と等価であることは明らかであり、置換コマンドは、本発明の一実施の形態に従って、整数表記を用いて表される。整数表記が用いられるとき、各置換コマンドと関連付けられる2つの整数が存在する。以降、この2つの整数を「整数置換対」と称する。整数置換対における一方の整数を「変更前整数」(旧バージョンにおける項目を表す)と称し、他方を「変更後整数」(新バージョンにおける項目を表す)と称する。
旧バージョン202における明示参照項目に対する整数置換対を見ると、即ち部分402における整数置換対を見ると、整数値が参照される項目のシフトを反映していることが分かる。例えば、項目208および項目208’がそれぞれ項目209および209’を参照する場合、整数置換対を<int(208)、int(208’)>と見ることができる。項目209がアドレス0x9DF785に元々位置し、項目のサイズが4バイトである場合、項目209のコンテンツを後方に5項目分(即ち、後方に20バイト分)シフトして項目209’を得た後の項目209’はアドレス0x9DF771に位置する。参照項目の最下位バイトが、参照される項目のアドレスを示す値を含むことを考えると、参照項目208を表す整数の最下位バイトは0x9DF785(つまり、項目208が項目209を参照する)であり、参照項目208’の最下位バイトは0x9DF771(即ち、項目208’が項目209’を参照する)であることが理解できる。従って、整数置換対を一緒に有する2つの整数の間の差分は、旧バージョン202を新バージョン203に更新する間に実行されるシフトを反映する。以降、この差分を「変更差分」と称する。変更差分は、例えば、diff(208)のように、変更された整数と共にdiffによって表される。
従って、変更前整数と変更後整数とを関連付けて整数置換対とする代わりに、変更前整数または変更後整数を変更差分と関連付けることが可能である。変更前整数を変更差分に関連付けてなる対を、以降「整数シフト対」と称する。
図4において、部分403は、整数シフト対の表記を用いた、部分401および402と等価の部分である。
図3および図4を参照した説明は、整数表記を利用する本発明の実施の形態を理解するための背景であり、以降「整数表記形態」と称する。
図5は、整数表記形態を例示し説明するために、旧および新バージョンのより複雑な例(図2に示す旧バージョンおよび新バージョンと比較して)を示すものである。図中、旧バージョン501は、新バージョン502を生じさせるよう更新される。よって、旧バージョン501は、新しいバージョン502の生成の際に削除されるブロック503を含む。削除されたブロックのサイズを、以降size(503)と称する。図2の例に従って、ブロック503の削除に引き続き、新バージョン中の項目がsize(503)の項目分だけ後方にシフトされることとなることは理解されるであろう。
旧バージョンでは、ブロック504はブロック503に後続する。6個の項目(505、506、507、508、509および510)がブロック504内でマーキングされている。項目の開始アドレスは、例えば、addr(505)、addr(506)およびaddr(507)等のように、以降、addr(項目)としてマーキングされる。ブロック508、509および510は明示参照項目である。項目509は項目507を参照し、項目508、510はそれぞれ項目511および512を参照する。項目511および512は旧バージョンの一部であり、ブロック504の前方に位置することが分かる。従って、明示参照項目508、509および510は、それぞれaddr(511)、addr(507)およびaddr(512)を示す値を含む。
新バージョン502では、ブロック504’はブロック504に対応する。予想される通り、ブロック504’は、size(503)だけ後方にシフトされている。項目505’、506’、507’、508’、509’および510’は、それぞれ項目505、506、507、508、509および510に対応する。ブロック504’と同様に、項目505’、506’、507’、508’、509’および510’は、size(503)分だけ後方にシフトされる。
ブロック504に続いて、旧バージョン501は、マーキングされた1つの項目514を有するブロック513を含む。項目514は、項目506を参照する明示参照項目であり、即ち、参照項目514は、アドレスaddr(506)を示す値を含む。新バージョンでは、ブロック513’はブロック513に対応し、項目514’は項目514に対応する。しかしながら、1つ以上の項目よりなる新しいブロック515が、ブロック513’の項目514’の前に挿入される。つまり、size(513’)>size(513)である。本例においては、size(515)がsize(503)よりも小さいため、項目514’は(size(503)−size(515))だけ後方にシフトされる。
旧バージョン501を参照するに、ブロック513に続く第3のブロック516が存在する。このブロック内では、5項目がマーキングされている。具体的には、項目517、518、519、511および512がある。項目517および518はそれぞれ項目519および505を参照する明示参照項目であり、つまり、項目517および518は、参照される項目519および505を示す、換言すれば、それぞれaddr(519)およびaddr(505)を示す値を含む。
新バージョンでは、ブロック516’はブロック516に対応する。同様に、項目517’、518’、519’、511’および512’は、それぞれ項目517、518、519、511および512に対応する。ブロック513’へのブロック515の挿入に続いて、ブロック516’中の項目が(size(503)−size(515))項目分だけ後方にシフトされることは明らかである。
図5の例も、旧バージョンにおける末端ブロック517の存在を示しており、これは新バージョンにおけるブロック517’に対応する。更新処理は、1つ以上の項目よりなる新しいブロック520をブロック517’に挿入する。本例によると、新しいブロック520のサイズが(size(503)−size(515))であるため、新バージョン502の全体的なサイズは、旧バージョン501と略同じになる。
図5を参照して提供される例は、如何なる制限も設けられるものではない。この例に適用できるように、如何なるコンテンツの旧または新バージョンも、任意の数の項目をそれぞれ含む任意の数のブロックを有することができる。同様に、旧バージョンを新バージョンに更新する際、更新処理は、特定用途に依存して、項目またはブロックのサイズを変更させつつ、必要に応じて何回でも、挿入、削除、置換および/または全ての所要の動作を実行することができる。
項目のサイズも非限定的であるが、以降、図5に示すコンテンツの1項目のサイズを4バイトとして示す。
本発明の一実施の形態によれば、旧バージョン501を新バージョン502に更新するために、ブロック504とブロック513の第1の部分とを新バージョンにコピーし、新しいブロック515を挿入し、ブロック516および517と共にブロック513の第2の部分を新バージョンにコピーしてもよいことは、当業者に明らかである。しかしながら、図2を参照して説明したように、そのようにすると、新バージョンにおける明示参照項目は、旧バージョンにそうであってように、元のアドレスの項目を参照する。例えば、旧バージョンでは、明示参照項目508は項目511を参照するため、項目508の最下位バイトはaddr(511)を示す値を含む。旧バージョンでは、項目508は、addr(508)に位置する。本例では、ブロック504を新バージョンにコピーした後、addr(508)の後方のaddr(508’)に項目508が配置されることが分かる。しかしながら、項目508は依然として項目511に対する参照を含む、即ち、addr(511)を示す値を含む。そこで、addr(511’)を示す値を含むことによって項目511’に対する参照を含むとなる。従って、本実施の形態では、旧バージョンから新しいバージョンにコンテンツをコピーした後、且つ、新しいブロック(例えば、ブロック515)を挿入した後、更新パッケージは、「項目508’において、addr(511)を示す値を、addr(511’)を示す値で置き換える」、または簡単に、「replace 508、508’」のような、参照項目を置き換えるためのコマンドを含む。
整数表記形態(上述の図3および図4を参照した)ならびに旧バージョンおよび新バージョン(図5を参照した)の例についての背景を説明した。以下では、整数表記形態に従って、更新パッケージの一部分をどのように得るかを、従来技術より得られる更新パッケージの等価部分と比較して例示する(図6を参照する)。説明から明らかとなるように、本実施の形態に従って得られる部分は、従来技術において既知の方法に従って得られるものよりも大幅に小さい。
図6を参照するに、部分601は、図5に例示する明示参照項目を更新する置換命令を含む。部分601は、図5の旧および新バージョンに対して従来のdiff法を適用することによって生成されることが分かる。また、部分601は、旧バージョン501を新バージョン502に更新するために使用される完全な更新パッケージの一部であることが分かる(完全な更新パッケーは図示せず)。この部分は、置換コマンドのみを含み、挿入および/または削除等の他のコマンドは省略されている。図5の例においては6個の参照項目があるため、部分601には6個の置換コマンドがあることに注意されたい。部分602は、整数置換対で表現された、部分601の対応部分であり、図3および図4の説明を鑑みると、参照項目に対して、「int(項目)」なる用語がアドレス参照を反映していることが理解される。
更に、整数置換対の表記を用いる代わりに整数シフト対を用いて置換コマンドを表わすことが可能であることが図4を参照して説明された。つまり、参照項目を置換する代わりに、参照される項目の位置のシフトを反映するために、オペコードのような一緒に記憶されている他の情報とは無関係に、含まれている参照を変更することができる。
図5より、この例における幾つかの項目の変更差分がsize(503)であり、他の項目が(size(503)−size(515))の変更差分によって特徴付けられていることが分かる。従って、部分602を変更することが可能であり、また、置換コマンドを用いる代わりに、603に示されるような変更前整数シフト対表記を用いる変更コマンドを用いてもよい。
整数シフト対における変更差分が、参照項目のシフトではなく参照される項目のシフトを示すことに注意されたい。
部分604では、更新パッケージの同じ部分が示され、変更コマンドは、変更差分に従ってソートされている。ソートされた部分604は2つのグループを含むことに注意されたい。一方のグループは、int(509)、int(514)およびint(518)を変更するコマンドを含み、変更差分はsize(503)である。第2のグループは、int(508)、int(510)およびint(517)を変更するコマンドを含み、変更差分は(size(503)−size(515))である。
整数またはその一部が、参照される項目のアドレスを示すことを思い出すべきである。また、項目が更新される間、これに関連付けられるオペコードまたは他の情報に関わらず、参照は変更される必要があることに注意されたい。従って、整数シフト対では、整数を引用する代わりに、参照される項目を示す値、または「ind(参照される項目)」を引用することができる。以降、ind(参照される項目)およびこれに関連付けられる変更差分の対を、「表示シフト対」と称する。
図5および図6には図示されないが、同じ項目を参照する参照項目が2つ以上存在する場合もある。参照される項目の表示値が参照する項目の整数表示の一部である場合、時として、全ての参照する項目を同様の表示値によって表すことができる。整数全体が、参照される項目の表示値として使用される場合、参照する項目を表す表示値が2つ以上存在してもよい。
例えば、参照される項目のアドレスを0x5F8B23とする。アドレスを指定することによって、4個の参照項目がこの項目を参照する。第1の参照項目はオペコード0xA2を有し、第2の参照項目はオペコード0x0Fを有し、第3の参照項目は0x1Bを有する。第4の参照項目は、第1の参照項目と同様のオペコード(即ち、0xA2)を有する。表示値が3つの最下位バイトによって表される場合、4個の参照項目は全てind(0x5F8B23)として表される。一方、整数全体が、表示値として使用される場合、4個の参照項目を表す3つの異なる表示値が存在する。第1および第4の参照項目はind(0xA25F8B23)として表わされ、第2の参照項目はind(0x0F5F8B23)として表され、第3の参照項目はind(0x1B5F8B23)として表わされる。
図6を再び参照するに、部分605には、表示シフト対表記を用いて、部分604と等価であるソートされた部分が例示される。部分605は、ブロック504における項目を参照する参照項目をシフトするときにその中の表示値がsize(503)分のシフトを反映するように変更されるべきであることを示している。ブロック516における項目を参照する参照項目をシフトするとき、その中の表示値は、(size(503)−size(515))分のシフトを反映するように変更されるべきである。
部分605に二つのグループが存在することが分かれば、ind(参照項目)に従って各グループを内部的にソートすることができ、その結果、606が生成される。ブロック504中の項目を示す値を有する参照項目を変更する3つの変更コマンドを有する代わりに、1つの合成変更コマンドを生成してsize(503)分のシフトを反映するようブロック504中の項目を示す全ての値を更新するようにしてもよい。つまり、参照項目が項目505および507を含みそれらの間にある項目を示す値を有する場合、この値はsize(503)分のシフトを反映するよう変更されるべきである。同様に、ブロック516中の項目を示す値を有する参照項目を変更するために3つの変更コマンドを有する代わりに、(size(503)−size(515))分のシフトを反映するようブロック516中の項目を示す全ての値を更新するために1つの合成変更コマンドを生成することができる。つまり、参照項目が項目511および519を含みそれらの間にある項目を示す値を有する場合、この値は部分607に示されるように(size(503)−size(515))分のシフトを反映するよう変更されるべきである。以降、このような合成変更コマンドを「整数シフト規則」と称する。つまり、部分607は、図5の例における明示参照項目を更新するために適用することができる2つの整数シフト規則を示す。
従って、整数シフト規則を用いた部分607が置換コマンドを用いた部分601と等価であることは理解されるであろう。部分607は、部分601に含まれる6個の置換コマンドの代わりに2個の整数シフト規則だけを含む。従って、部分607を含む更新パッケージは、部分601を含む更新パッケージと等価である。整数シフト規則を記憶するために必要な空間が、等価の置換コマンドを記憶するために必要な空間よりも小さい場合、等価の整数シフト規則を用いることによって更新パッケージのサイズを削減することができる。
更新パッケージのサイズは大幅に減少してもよい。例えば、セルラー電話機のソフトウェアのバージョンを更新する非限定的なアプリケーションを考えると、整数シフト規則は、時として、何万もの置換コマンドを節約することができる。
整数シフト規則を用いる代わりに、任意の数値シフト規則を同様に適用することができるため、以降「数値シフト規則」なる語を用いる。
図7は、本発明の一実施の形態による、更新パッケージにおける数値シフト規則の生成を詳細に説明するフローチャートである。更新パッケージおよび数値シフト規則を作成する場合、新旧2つのバージョン間の差分を検出するために、新旧バージョン間においてdiffが利用される(701、既知の方法で)。UNIX(登録商標)のdiffプログラムのように、バージョン間の差分を検出する利用可能なツールが現在多数ある。diffは、新旧バージョン間の差分の対を生成し、これには置換対も含まれ得る。diffが置換対を含む(702)場合、その幾つかがグループ化されて(703)diffの一部分が形成され、これにより、例えば図6の部分601のような部分が形成される。次に(704)、置換対は、図4および図6(部分402および602を参照)を参照して前述した整数表記を用いて変換され、整数置換対が形成される。
置換対が整数置換対に変換された後、整数置換対は、変更前整数をその変更差分と関連付けることによって整数シフト対に変換(705)され、これは、図4(部分403)および図6(603)を参照して先に示したステージである。整数シフト対は、図6の部分604のように、変更差分に従ってソート(706)される。
ソート後、整数シフト対における変更前整数は、それぞれの参照される項目の表示値で置換(707)され、表示シフト対が形成され、これは、図6(部分605)を参照して先に例示したステージである。これらの場合において、同じ変更差分を有する表示シフト対が複数存在する場合(708)、これらの表示シフト対は、それぞれの表示値に応じてソートされる(709)ことに注意されたい。これらの場合において、整数全体を参照される項目の表示値として考える場合、ブロック707が冗長でありこれをスキップすることができ、一方、int値を規則生成処理にわたってindの代わりに用いることができる。図6のブロック606は、本図におけるブロック709の一例である。
同じ変更差分を有する表示シフト対を2つ以上含むグループが存在する場合、1グループにおける表示シフト対を結合して、図6(部分607を参照)を参照して先に説明したように、当該グループにおける最初および最後の参照される項目の表示値ならびにこれらを特徴付ける変更差分を示す数値シフト規則が形成される(710)。
時として、更なる最適化も適用可能である。例えば、同じ変更差分を有する2つの数値シフト規則が存在し、第1の規則の最後の参照される項目の表示値および第2の規則の最初の参照される項目の表示値が十分に近い場合、2つの規則を結合して1つの合成数値シフト規則が形成される。合成数値シフト規則は、第1の数値シフト規則の最初の参照される項目の表示値および第2の数値シフト規則の最後の参照される項目の表示値を、これらを特徴付ける変更差分と共に示す。2つの非調整数値シフト規則を結合した場合、それらの間の数値シフト規則(または表示シフト対)は結合された規則に吸収されるため、その変更前参照項目は誤った更新を起こしやすい(つまり、誤ったシフトを反映して更新される)ことに注意されたい。
本発明は、図7に説明される整数シフト規則を得るための特定のシーケンスの動作および方法、または図6の部分607で使用される整数シフト規則の語に制限されないことに注意されたい。
なお、これまで例示した実施の形態によると、数値シフト規則を用いることによって更新パッケージのサイズが低減され、コンパクトな更新パッケージが生成される。「diff」の「デルタ」または「差分」等の、更新パッケージの説明に異なる語が用いられる場合、コンパクトな更新パッケージは、例えば、「コンパクトな差分結果」と称してよい。
別の実施の形態では、時として、コンテンツは、以降「メタデータ」と称する、関連付けられた記述データを伴うことがある。一般に、メタデータは、コンピュータプログラムの記述に使用されるシンボルテーブル、デバッグテーブルおよびリンカーマップの形態で与えられる。しかし、メタデータは、コンピュータプログラムに制限されず、他のタイプのコンテンツもメタデータを有することができる。例えば、異なるファイルあるいはデータベースに記憶することで、関連するメタデータをコンテンツから分離できることに注意されたい。あるいは、この場合のように、メタデータをコンテンツの一部として記憶してもよい。
図8に、コンテンツの例およびこれに関連するメタデータを示す。コンテンツ801は、4個のブロック802、803、804および805を含む。ブロック803は、アドレスaddr(803)から始まり、ブロック804は、addr(804)から始まり、ブロック805は、addr(805)から始まる。関連するメタデータ806は、コンテンツおよびそのブロックを記述し、メタデータ806は各ブロックに対し、ブロックの開始アドレス(start address)およびブロックの長さ(length)を提供する。しかし、これは非限定的な例であり、メタデータは、各ブロックの開始アドレスおよび長さの代わりに、他のデータを含んでもよい。
コンテンツの旧バージョンをその新バージョンに更新するための更新パッケージを生成する際に、メタデータがコンテンツと関連付けられている場合、図9および図10を参照して以下に説明するように、参照に対する変更を符号化するためにメタデータを使用することができる。
旧バージョン901およびその更新から得られる新バージョン902の概略図である図9を参照するとともに、本発明の一実施の形態による図9の新旧バージョンに関連付けられるメタデータおよび差分テーブル(それぞれ9A03、9A04および1000)の概略図である図9Aを参照して、更に詳細に説明するように、図8の例および説明は、本発明の別の実施の形態によるいわゆる「参照シフト規則」をどのように得るかを理解するための基礎となる。
旧バージョン901は、4個のブロック(905、906、907および908)を含み、それぞれのアドレスはaddr(905)、addr(906)、addr(907)およびaddr(908)である。新バージョンでは、少なくとも1つの項目よりなる新しいブロック909がブロック905に追加され、対応するブロック905’が生成される。ブロック905’のサイズは、size(909)だけブロック905のサイズより大きいことが分かる。なお、更新処理中にコンテンツへの項目の追加的な挿入またはコンテンツからの項目の削除が更に行われることのない限り、新しいブロック909の前方にある項目は、サイズ(909)分だけ前方にシフトされることとなる。
ブロック905’の前方では、ブロック906’がブロック906に対応し、ブロック907’がブロック907に対応し、ブロック908’がブロック908に対応する。1つ以上の項目よりなる新しいブロック910もブロック907’に挿入される。この新しいブロックのサイズはsize(910)である。従って、新しい項目910の前方にある項目は、(size(909)+size(910))分だけ前方にシフトされる。
旧バージョンでは、ブロック906は、項目914、915および916を参照する少なくとも3つの明示参照項目911、912および913を含む。参照される項目914はブロック908内にあり、参照される項目915はブロック907内にあり、参照される項目916はブロック906内にある。なお、ブロック908は、項目918を参照する少なくとも1つの明示参照項目917を含む。参照される項目915と同様に、参照される項目918もブロック907内にある。
旧バージョン901と関連付けられるメタデータ9A03は、4個のブロック、つまりそれぞれの開始アドレスおよび長さを記述する。新バージョン902と関連付けられるメタデータ9A04は、その中に含まれるブロックを記述する。メタデータ9A03とメタデータ9A04とを比較すると、この場合のブロック905’の開始アドレスが旧バージョンのブロック905のものと同様であることが分かる。しかしながら、ブロック906’の開始アドレスは(addr(906)+size(909))に等しい。同様に、旧バージョンのブロック907の開始アドレスと比較されたとき、ブロック907’の開始アドレスもsize(909)分のシフトを反映している、即ち、addr(907’)=addr(907)+size(909)である。他方で、ブロック908’の開始アドレスは、(size(909)+size(910))分のシフトを反映している、即ち、addr(908’)=addr(908)+size(909)+size(910)である。
図9の具体的な例について参照シフト規則をどのように得るかを以下に説明するが、図9、図9Aおよび図10の例は非限定的であることに注意されたい。新旧バージョンは、任意の数のブロックを有することができ、旧バージョンから新バージョンへの更新の際に新たなブロックおよび項目が任意の場所に挿入されてもよいし、削除されてもよい。旧バージョンにおけるアドレスを用いるとともに、適用可能であれば、挿入されたブロックのサイズを追加することによって、新バージョンのメタデータ9A04を示すことができることが分かる。変更差分(つまり、旧バージョンにおける各ブロックおよび新バージョンにおける対応ブロックの開始アドレスを特徴付けるシフト)と共に、結果は「差分テーブル」として称される。これは、メタデータ9A03および9A04に対応する差分テーブルである1000(図10参照)に示される。
参照シフト規則が差分テーブル1000に従って生成されることが分かる。例えば、参照項目がブロック906’中の別の項目を参照する場合、差分テーブルの情報に従って、新バージョンでは、その対応する参照項目が、参照される項目の場所におけるsize(909)分のシフトを反映するよう変更されるべきであることが理解できる。同様に、第2の参照項目がブロック908’中の別の項目を参照する場合、新バージョンでは、その対応する参照項目が、参照される項目の場所におけるsize(909)+size(910)分のシフトを反映するよう変更されるべきであることが理解できる。
従って、概して言えば、差分テーブルは、参照シフト規則を反映する。例えば、ブロック906’中の各参照される項目について、特徴的シフトはsize(909)である。同様に、ブロック907’中の各参照される項目について、特徴的シフトはsize(909)であり、ブロック908’中の各参照される項目について、特徴的シフトはsize(909)+size(910)である。
差分テーブルに示されるブロックの開始アドレスおよび長さに従って、参照項目が他のブロックにおける別項目を参照するか否かを判定することができる。従って、参照シフト規則は、例示的な表記「modify <addr(参照されるブロック),size(参照されるブロック)>,シフト」によって表すことができる。
図9Aの例では、ブロック906’および907’の両方が同じシフトによって特徴付けられていることが分かる。ブロック906’および907’が連続的であることが分かると、それぞれの2つの参照シフト規則を結合して、「modify <addr(906’),size(906’)+size(907’)>,size(909)」と述べる1つの参照シフト規則を形成することができる。
図10では、ブロック1001は、差分テーブル1000に基づく参照シフト規則を例示する。この場合、3つの参照シフト規則(1002、1003および1004)が例示される。既知のとおり、メタデータがコンテンツの1つ以上のブロックを記述しない場合がある。例えば図9および図11を参照する。図11では、図9の旧バージョン901のメタデータ1101および図9の新バージョン902のメタデータ1102が例示される。メタデータ1101および1102は部分的であり、つまり、ブロック907およびその対応するブロック907’が記述されていないことが分かる。従って、図12の差分テーブルにおいて、ブロック907’についての差分は示されない。これにより、1202に示される参照シフト規則の生成が影響を受ける。図9および図10の例のように、本例において、3つの参照シフト規則1203、1204および1205が存在する。しかしながら、ブロック907’が示されていないため、第2の規則1204は、前の例の第2の規則1003と比べてより小さいブロックに対応する。従って、ブロック907’中の別の項目を参照する参照項目は、この場合の参照シフト規則に従って変更することができない。
それでもなお、上述の図5、図6および図7を参照した数値シフト規則の記述に従って、当業者は、参照シフト規則を適用できない場所であればどこでも数値シフト規則を試して適用できることを理解することができる。数値シフト規則を利用する方法はメタデータを必要としないため、この場合は数値シフト規則が使用可能となる。
図13は、本発明の一実施の形態による、更新パッケージにおける参照シフト規則の生成を詳細に説明するフローチャートである。新旧バージョンそれぞれのメタデータを受け取った(1301)後、差分テーブル(例えば、図10の差分テーブル1000)が形成される(1302)。差分テーブルは、新バージョンにおける対応ブロックに関する情報(例えば、開始アドレス)と関連付けられる、旧バージョンにおけるブロックに関する情報(例えば、開始アドレス)を少なくとも含む。または、差分テーブルは、それぞれの変更差分に関する情報(即ち、それぞれのシフト値)と関連付けられる、旧バージョンにおけるブロックに関する情報を少なくとも含む。他の例、例えば、それぞれの変更差分に関する情報と関連付けられる、新バージョンにおけるブロックに関する情報を少なくとも含むことも可能であることに注意されたい。
差分テーブルで記述される各ブロックについて、参照シフト規則が作成されている(1304)。次に、隣接するブロックに言及する参照シフト規則が結合される(1305)。本発明が図13に説明されるような参照シフト規則を得るための特定のシーケンスの動作および方法に限定されないことに注意されたい。
また、参照シフト規則の記述に用いる表記も非限定的であり、他の表記も適用可能であることに注意されたい。例えば、規則の対象となるブロックあるいは複数のブロック(換言すれば「セクション」)の最初の項目および長さを指定する代わりに、セクションにおける最初および最後の項目を指定してもよい。後者は、必要な変更を加えて、図7を参照して説明された数値シフト規則にも当てはまることに注意されたい。
上の説明は、旧バージョンから新バージョンへの更新の際に参照項目における参照を更新する数値シフト規則および参照シフト規則を生成するための実施の形態を説明している。本発明は、上述の特定の数値シフト規則および参照シフト規則によって制限されないことに注意すべきである。より一般的には、「シフト規則」なる語は、新バージョンにおける参照項目のシフトを反映するよう参照項目を更新するものを意味する。
以降、「変換子」なる語が、更新パッケージと関連付けられるシフト規則の集合に言及するのに用いられる。つまり、変換子は、少なくとも1つの数値シフト規則および/または少なくとも1つの参照シフト規則ならびに/もしくは旧バージョンから新バージョンへの更新の際に適用できる他のシフト規則を含むことができる。従って、上述の説明によると、当業者には、少なくとも1つの変換子を含む更新パッケージがコンパクトな更新パッケージであることは明らかである。
旧バージョンに変換子を適用した場合、参照項目が誤って更新されることがある。例えば、挿入された項目910が項目915’の後方のブロック907に挿入された、図9に示す例を考える。この例における変化は、差分テーブル1000に影響を与えず、参照シフト規則は図10に説明されたものと同様である(ブロック1001を参照)。しかしながら、項目915’および918’が、差分テーブル1000から予想されるように、size(909)ではなく、(size(909)+size(910)分だけ前方にシフトされることが分かる。従って、ブロック1001の参照シフト規則によって示されるものとは違って、参照項目912’および917’は、size(909)ではなく(size(909)+size(910)分のシフトを反映するように変更される必要がある。
以降「変更された」実施の形態と称する本発明の一実施の形態によると、図10のブロック1001の参照シフト規則を含む変換子を適用でき、それにより変更バージョンが生成され、その後、変更バージョンおよび新バージョンの間にdiffユーティリティを適用することによってこの変換子によって影響を受けた誤った参照項目の改善方法が提供される。このdiff処理は、時として単に「diff」と称されるが、変更バージョンと新バージョンとを比較するものであり、「変更diff」と称される。変換子の生成に利用される第1のdiff(旧バージョンと新バージョンとを比較する)は「完全diff」と称される。完全diffの出力を「完全デルタ」と称し、変更diffの出力を「変更デルタ」と称する。
概して言えば、完全diffは、例えば、置換対(即ち、上述のようにシフトされた明示参照項目)ならびに挿入された項目および削除された項目等の変動を含み新旧バージョン間に存在する全ての変動を検出する一方で、変更diffは、誤っている可能性のある置換対および他の変動とともに、実質的により少ない置換を検出する。従って、変更デルタは、完全なデルタよりもサイズが小さい。
変換子を有する変更デルタは、旧バージョンを更新しその新バージョンを作成することができる更新パッケージを構成する。少なくとも1つの変換子および変更デルタよりなる出力パッケージを、以降「合成更新パッケージ」と称する。これは、完全なデルタを含み変換子を含まない「単純な更新パッケージ」とは異なる。変換子がその対応する置換コマンドと比べてサイズが小さいことを念頭におくと、結果として生ずる合成更新パッケージは、既知の単純な更新パッケージと比べて通常、サイズが小さい。従って、合成更新パッケージは、以降コンパクトな更新パッケージとみなされる。本発明の実施の形態によると、コンパクトな更新パッケージは、少なくとも変換子およびそれと関連付けられる変更デルタを含む。
コンパクトな更新パッケージにおいて、変更子を適用し、その後これに関連付けられる変更diffを適用すること(「順変換順序(forward conversion order)」、換言すれば「順方向更新表示(forward update indicator)」)によって、新バージョンが生成されることが分かる。新バージョンにおいては、変換子によって誤って変更された項目は、変更デルタによって置換され、新バージョンにおける正しいコンテンツが受け取られるように補正される(更新パッケージを適用する手順は以下に詳細に説明する)。しかしながら、時として、変更diffは、変更子の前に適用されるべきであり、これを以降「逆変換順序(backward conversion order)」と称する。逆変換順序を以下に詳細に説明する。
コンパクトな更新パッケージを形成するために変更デルタを変換子に結合する代わりに、変更デルタから追加の変換子を抜き出すことができ、これにより、前の変換子に寄与することができ、または、前の変更子およびデルタに関連付けられる追加的な変換子を生成してよりコンパクトな更新パッケージを形成することができる。以下、「繰り返し形態(iterations embodiment)」と称する本発明の別の実施の形態を、図14を参照して説明する。
図14は、本発明の繰り返し形態による、コンテンツのバージョンを更新するための繰り返しの例示的な概略図である。バージョン1401は旧バージョンであり、バージョン1402は新バージョンである。同図は、本発明の繰り返し形態による、旧バージョン1401を新バージョン1402に更新するコンパクトな更新パッケージの生成を示す。旧バージョン1401は、ブロック1403を含む。ブロック1403に続いて、少なくとも幾らかの明示参照項目1405、1406、1407、1408、1409、1410、1411、1412、1413および1414を含む別のブロック1404が存在する。ブロック1404は、非参照項目1415も含む。
新バージョン1402において、ブロック1403’および1404’は、ブロック1403および1404に対応し、項目1405’、1406’、1407’、1408’、1409’、1410’、1411’、1412’、1413’、1414’および1415’はそれぞれ項目1405、1406、1407、1408、1409、1410、1411、1412、1413、1414および1415に対応する。少なくとも1つの項目1416がブロック1403’に挿入され、これによりsize(1416)分だけサイズが拡大され、size(1417)の少なくとも1つの項目1417が項目1405’の後方でブロック1404’に挿入される。
参照項目1405、1411および1414のコンテンツが略同一であるため、対応する参照項目1405’、1411’および1414’のコンテンツも略同一であることに注意する。同様に、項目1406、1412および1414のコンテンツが略同一であるため、対応する参照項目1406’、1412’および1414’のコンテンツも略同一である。
項目1405’、1406’、・・・、1410’は、明示参照項目であり、そのコンテンツは旧バージョンと比べて、新バージョンにおいて変更される(即ち、参照される項目がシフトされる)。同じことが明示参照項目1411’、1412’、1413’および1414’にもいえる。既知のdiffユーティリティは、項目1417が新バージョン1402に挿入された新しい項目で、項目1405’、1406’、・・・、1410’がシフトされた項目であることを認識することができないため、diffユーティリティは、項目1417が項目1405を置換したものであると誤検出する。更に、diffユーティリティは、項目1415’が項目1415と同一(従って、そのコピー)であると識別し、項目1411’が項目1411を置換する等と(今回は正しく)検出するよう同期化する。
従って、完全diffに続いて、次のことを(部分的に誤って)示す完全なデルタが生成される:
項目1417は項目1405の置き換え;
項目1405’は項目1406の置き換え;
項目1406’は項目1407の置き換え;
項目1407’は項目1408の置き換え;
項目1408’は項目1409の置き換え;
項目1409’は項目1410の置き換え;
項目1415’は項目1415のコピー;
項目1411’は項目1411の置き換え;
項目1412’は項目1412の置き換え;
項目1413’は項目1413の置き換え;および
項目1414’は項目1414の置き換え。
変換子は、完全なデルタに基づいて、例えば、図7および図13に示される方法に従って生成される。
項目1405、1411および1414が略同一(従ってその対応する項目も同一)であること、更に、項目1406、1412および1414も略同一(従ってその対応する項目も同一)であることを考慮すると、項目1411’が項目1411の置き換えであり項目1413’が項目1413の置き換えであることを検出した時に、変換子は、項目1405が項目1405’によって置き換えられるべきと推定することができる。同様に、項目1412’が項目1412の置き換えであり項目1414’が項目1414の置き換えであることを検出した時、変換子は、項目1406が項目1406’によって置き換えられるべきと推定することができる。
この変換子は、旧バージョン1401に適用され、変更バージョン1418が生成される。旧バージョン1401における複数の項目が変換子によって変更(または変換)されているが、項目の削除および/または挿入等の全ての変動を扱うことに注意されたい。従って、変更バージョン1418は、旧バージョン1401に対してシフトされたものではない。
本発明の変更された実施の形態によれば、変更バージョン1418と新バージョン1402とを比較する変更diffが利用される。結果として生じる変更デルタは、追加的な変換子の挿入、他の変換子の削除、および残り(中でも変換子によって扱われない項目1407、1408、1409および1410)の置換を認識する。この変更デルタは、変換子と共に、コンパクトな更新パッケージを生成するための基礎をなす。
あるいは、本発明の繰り返し形態によると、変更デルタは、コンパクトな更新パッケージを生成する代わりに、例えば、図7および図13に示される方法に従って、追加的な新しい変換子を生成するための基礎をなす。この新しい変換子は、前の繰り返しにおいて生成された変換子と共に複合変換子を構成する。新しい変換子は、変更バージョン1418に適用され、変更diffによって新バージョン1402に対して比較されるべき別の変更バージョン(図示せず)が生成される。繰り返しを停止させるための終了条件の一例は、繰り返しによって生成された変更デルタのサイズを、新しい変換子のサイズと合わせたときに、前の変更デルタのサイズを前の複合変換子のサイズと合わせたもの以上であることである。繰り返しが停止されると、コンパクトな更新パッケージが、複合変換子および変更デルタに基づいて生成される。
繰り返し形態を、全般的に、図15のフローチャートに関して以下に説明するが、図14の例は非限定的であることに注意されたい。新旧バージョンは、任意の適用可能な数のブロックを有することができ、旧バージョンから新バージョンへの更新の際、新たなブロックおよび項目を任意の場所に挿入することができ、または削除することができる。繰り返しは任意の回数実行することができ、任意の適用可能な終了条件(または「停止基準」)を繰り返しを停止するのに用いてよい。つまり、この処理は、停止基準が満たされなければ次の繰り返しに進む。
図15は、本発明の繰り返し形態を詳細に説明するフローチャートである。このフローチャートに従って生成された更新パッケージは順変換順序であることに注意する。
開始時、記載された方法は、更新されるべきコンテンツの少なくとも新旧のバージョンと、可能であればメタデータと、を受け取る。これら2つのバージョンとメタデータとは、変換子の生成(1501)および初期デルタのサイズの決定(1502)の基礎をなすものである。ここで、最初は、複合変換子は1501において生成された変換子と同一(1503)であることが分かる。変換子は、旧バージョンに適用(1504)され、これにより変更バージョンが生成される。次に、変更バージョンと新バージョンとに対して変更diffを利用しつつ変更デルタが生成(1505)され、変更デルタは、新しい変換子を生成(1506)するための基礎をなす。この新しい変換子のサイズが決定(1507)される。
新しい変換子は、統合され複合変換子となる(1508)。新しい変換子のサイズが決定(1509)され、変更デルタのサイズが決定(1510)される。
複合変換子のサイズをデルタのサイズと合わせたものが新しい変換子のサイズを変更デルタのサイズと合わせたものよりも小さい場合(1511)、新しい変換子が変換子となり(1512)、デルタのサイズが新しいデルタのサイズとなり(1513)、新しい変換子が変更バージョンに適用され(1514)、これにより新しい変更バージョンが生成される。1505に戻り、新しい変更デルタが作成される。
しかしながら、1511において、変更子のサイズを変更デルタのサイズと合わせたものが複合変換子のサイズをデルタのサイズと合わせたもの以上であると判定された場合、更新パッケージは、複合変換子と変更デルタとに基づいて生成される(1515)。あるいは、1511において、コンパクトな更新パッケージが前の繰り返しにおいて生成されたコンパクトな更新パッケージより大きい場合、停止基準が満たされる。
繰り返し形態は、逆変換順序で動作させることもできる。即ち、初期の変換子を生成するために完全diffを旧バージョンと新バージョンとの間に適用し、変換子を新バージョンに適用して、変更バージョンを生成してもよい。次に、新しい変換子を生成する等のために変更デルタが旧バージョンと新バージョンとの間に生成される。
更新パッケージは、生成された更新パッケージに従って変換順序を示すためにマーキングされる。
本発明は、図15に説明された更新パッケージを生成する特定のシーケンスの動作および方法に限定されないことに注意されたい。
本発明の様々な非限定的な実施の形態による更新パッケージの生成を説明したが、新バージョンを生じさせるよう旧バージョンを更新する更新パッケージを以下に説明する。非限定的な例として、更新パッケージは、無線通信媒体を介して送信され、セルラー電話装置によって受信される。セルラー電話装置は、プロセッサを有し、このプロセッサは、受信した更新パッケージを処理し、プログラムの旧バージョンおよび/またはそこに記憶されているデータを更新して、セルラー電話装置に記憶され動作可能である新バージョンを生じさせるよう構成される。
これを念頭において、本発明の一実施の形態による、コンテンツの新バージョンを生じさせる、コンテンツの旧バージョンの更新について説明するフローチャートを示す図16を参照する。本実施の形態による更新パッケージは、変換子および変更デルタを含む。更新パッケージが順方向更新表示または逆方向更新表示のいずれかを含むことに注意されたい。
コンパクトな更新パッケージを取得(1601)した後、そこに含まれる変換子が抽出される(1602)。
更新パッケージが、1603で検出されるように、順方向更新表示を含む場合、変換子が旧バージョンに適用(1604)され、変更バージョンが生成される。そして、変更デルタが、更新パッケージから抽出(1605)され、変更バージョンに適用(1606)される。一方、1603および1607において、更新パッケージが逆方向更新表示を含むと判断された場合、変更デルタが、最初に抽出され(1605)、旧バージョンに適用(1606)され、そして、変更バージョンを生成した旧バージョンに変換子が適用(1608)される。いずれの場合も、新バージョンが結果として生成される。
図17は、本発明の一実施の形態による、コンテンツの旧バージョンおよびコンテンツの新バージョンの間のコンパクトな更新パッケージを生成するシステム1701を例示する。システム1701は、旧バージョンおよび新バージョンに関連付けられる変換子を生成する変換子生成部1702と、旧バージョンに変換子を適用して変更バージョンを生成する変更バージョン生成部1703と、コンパクトな更新パッケージを生成する更新パッケージ生成部1704と、を含む。コンパクトな更新パッケージは、変換子、ならびに変更バージョンおよび新バージョンに基づく変更デルタを含む。
図18は、本発明の一実施の形態による、コンテンツの旧バージョンを更新してコンテンツの新バージョンを生じさせるシステム1801を例示する。システム1801は、入力モジュール1802およびプロセッサ1803を含む。
入力モジュール1802は、上記旧バージョンおよび新バージョンと関連付けられる変換子、変更デルタ、ならびに順方向更新または逆方向更新の表示を含む、コンパクトな更新パッケージを得るよう構成される。順方向更新表示の場合、プロセッサ1803は、旧バージョンに変換子を適用して変更バージョンを生成するよう構成される。また、プロセッサ1803は、変更バージョンに変更デルタを適用して新バージョンを生成するよう構成される。逆方向更新表示の場合、プロセッサ1803は、旧バージョンに変更デルタを適用して変更バージョンを生成するよう構成される。また、プロセッサ1803は、変更バージョンに変換子を適用して新バージョンを生成するよう構成される。
本発明によるシステムは適切にプログラムされたコンピュータでもよいことが分かるであろう。同様に、本発明は、本発明の方法を実行するコンピュータによって読み取り可能なコンピュータプログラムを考慮したものである。更に、本発明は、本発明の方法を実行する機械によって実行可能な命令のプログラムを明白に具現化する機械読み取り可能なメモリを考慮したものである。
本発明は、ある程度の具体性をもって説明されたが、当業者には、後続の特許請求の範囲から逸脱することなく様々な変化および変更を行えることが容易に理解されるであろう。
本発明の一実施の形態による、セルラーネットワークにおいてバージョンの更新を行うシステムの概略図である。 コンテンツの旧バージョンを新バージョンに更新するよう構成された更新パッケージの概略図である。 本発明の一実施の形態による、項目を表す整数値の概略図である。 本発明の一実施の形態による、整数表記法を用いた図2の更新パッケージの一部分を示す図である。 本発明の一実施の形態による、旧バージョンおよびその更新より得られる新バージョンの概略図である。 図5の旧バージョンを新バージョンに更新するために使用される更新パッケージの一部分を示す。 本発明の一実施の形態による、更新パッケージにおける数値シフト規則の生成を詳細に説明するフローチャートである。 本発明の一実施の形態による、例示的なコンテンツおよび関連するメタデータを示す。 本発明の一実施の形態による、旧バージョンおよびその更新から得られる新バージョンの概略図である。 本発明の一実施の形態による、図9の旧バージョンおよび新バージョンと関連付けられるメタデータの概略図である。 本発明の一実施の形態による、図9の例に応じた差分テーブルおよびその対応する参照シフト規則を示す。 本発明の一実施の形態による、図9の新旧バージョンと関連付けられる部分的なメタデータの概略図である。 本発明の一実施の形態による、図9および図11の例に応じた差分テーブルおよびその対応する参照シフト規則を示す。 本発明の一実施の形態による、更新パッケージにおける参照シフト規則の生成を詳細に説明するフローチャートである。 本発明の繰り返し形態による、コンテンツのバージョンを更新する繰り返しの概略図である。 本発明の繰り返し形態を詳細に説明するフローチャートである。 コンテンツの新バージョンを生じさせる、コンテンツの旧バージョンの更新を説明するフローチャートである。 本発明の一実施の形態による、コンテンツの旧バージョンとコンテンツの新バージョンとの間のコンパクトな更新パッケージを生成するシステムを示す。 本発明の一実施の形態による、コンテンツの旧バージョンを更新してコンテンツの新バージョンを生成するシステムを示す。

Claims (10)

  1. 更新システムを用いて、旧バージョンのコンテンツを新バージョンのコンテンツに更新する方法であって、
    前記更新システムの記憶装置には前記旧バージョンのコンテンツが記憶されており、
    前記旧バージョンのコンテンツ及び前記新バージョンのコンテンツは、少なくとも2つの項目を含み、
    前記項目は、参照される項目への参照を含む項目である参照項目を含み、
    (i)前記更新システムが、
    前記新バージョンのコンテンツの前記参照される項目におけるシフトを反映するように前記旧バージョンのコンテンツの前記参照項目を更新するための変換子と、
    a)前記変換子を適用することにより変更された前記旧バージョンのコンテンツを前記新バージョンのコンテンツと比較することにより、又は、b)前記旧バージョンのコンテンツを前記変換子を適用することにより変更された前記新バージョンのコンテンツと比較することにより、取得される変更の集合である変更デルタと、
    を含む更新パッケージであって、
    前記変換子は、前記旧バージョンのコンテンツと前記新バージョンのコンテンツとの差異を反映した数値シフト規則又は参照シフト規則を含む、
    更新パッケージを取得するステップと、
    (ii)前記取得された更新パッケージの前記変更デルタが、前記変換子を適用することにより変更された前記旧バージョンのコンテンツを前記新バージョンのコンテンツと比較することにより取得される変更の集合である場合には、
    a)前記更新システムが、前記記憶装置から取得した前記旧バージョンのコンテンツに、前記取得した前記更新パッケージに含まれる前記変換子を適用することにより、前記変更バージョンのコンテンツを生成し、当該生成した変更バージョンのコンテンツを前記記憶装置に記憶させるステップと、
    b)前記更新システムが、前記記憶装置から呼び出した前記変更バージョンのコンテンツに、前記取得した前記更新パッケージに含まれる前記変更デルタを適用することにより、前記新バージョンのコンテンツを生成するステップと、を実行し、
    (iii)前記取得された更新パッケージの前記変更デルタが、前記旧バージョンのコンテンツを前記変換子を適用することにより変更された前記新バージョンのコンテンツと比較することにより取得される変更の集合である場合には、
    a)前記更新システムが、前記記憶装置から取得した前記旧バージョンのコンテンツに、前記取得した前記更新パッケージに含まれる前記変更デルタを適用することにより、前記変更バージョンのコンテンツを生成し、当該生成した変更バージョンのコンテンツを前記記憶装置に記憶させるステップと、
    b)前記更新システムが、前記記憶装置から呼び出した前記変更バージョンのコンテンツに、前記取得した前記更新パッケージに含まれる前記変換子を適用することにより、前記新バージョンのコンテンツを生成するステップと、を実行する、
    方法。
  2. 前記更新パッケージは、順方向更新を行うことの表示又は逆方向更新を行うことの表示を含み、
    (i)前記取得した前記更新パッケージに前記順方向更新を行う表示が含まれている場合には、
    a)前記更新システムが、前記記憶装置から取得した前記旧バージョンのコンテンツに、前記取得した前記更新パッケージに含まれる前記変換子を適用することにより、前記変更バージョンのコンテンツを生成し、当該生成した変更バージョンのコンテンツを前記記憶装置に記憶させるステップと、
    b)前記更新システムが、前記記憶装置から呼び出した前記変更バージョンのコンテンツに、前記取得した前記更新パッケージに含まれる前記変更デルタを適用することにより、前記新バージョンのコンテンツを生成するステップと、を実行し、
    (ii)前記取得した前記更新パッケージに前記逆方向更新を行う表示が含まれている場合には、
    a)前記更新システムが、前記記憶装置から取得した前記旧バージョンのコンテンツに、前記取得した前記更新パッケージに含まれる前記変更デルタを適用することにより、前記変更バージョンのコンテンツを生成し、当該生成した変更バージョンのコンテンツを前記記憶装置に記憶させるステップと、
    b)前記更新システムが、前記記憶装置から呼び出した前記変更バージョンのコンテンツに、前記取得した前記更新パッケージに含まれる前記変換子を適用することにより、前記新バージョンのコンテンツを生成するステップと、を実行する、
    請求項1に記載の方法。
  3. 更新システムを用いて、旧バージョンのコンテンツを新バージョンのコンテンツに更新するための更新パッケージを生成する方法であって、
    前記更新システムの記憶装置には前記旧バージョンのコンテンツ及び前記新バージョンのコンテンツが記憶されており、
    前記旧バージョンのコンテンツ及び前記新バージョンのコンテンツは、少なくとも2つの項目を含み、
    前記項目は、参照される項目への参照を含む項目である参照項目を含み、
    (i)前記更新システムが、前記記憶装置から呼び出した前記旧バージョンのコンテンツ及び前記新バージョンのコンテンツに基づいて、前記新バージョンのコンテンツの前記参照される項目におけるシフトを反映するように前記旧バージョンのコンテンツの前記参照項目を更新するための変換子であって、前記旧バージョンのコンテンツと前記新バージョンのコンテンツとの差異を反映した数値シフト規則又は参照シフト規則を含む変換子を生成し、当該生成した変換子を前記記憶装置に記憶させるステップと、
    (ii)前記更新システムが、前記記憶装置から呼び出した前記変換子を、前記旧バージョンのコンテンツ又は前記新バージョンのコンテンツのいずれか一方のコンテンツに適用することにより変更バージョンのコンテンツを生成し、当該生成した変更バージョンのコンテンツを前記記憶装置に記憶させるステップと、
    (iii)前記更新システムが、前記記憶装置から呼び出した前記変更バージョンのコンテンツを前記旧バージョンのコンテンツ又は前記新バージョンのコンテンツのいずれか他方のコンテンツと比較することにより取得される変更の集合である変更デルタを生成するステップと、
    (iv)前記更新システムが、前記生成した変更デルタと、前記記憶装置から呼び出した前記変換子と、を含む前記更新パッケージを生成するステップと、
    を有する方法。
  4. 前記一方のコンテンツは、前記旧バージョンのコンテンツであり、
    前記他方のコンテンツは、前記新バージョンのコンテンツである、
    請求項3記載の方法。
  5. 前記一方のコンテンツは、前記新バージョンのコンテンツであり、
    前記他方のコンテンツは、前記旧バージョンのコンテンツである、
    請求項3記載の方法。
  6. 前記(i)から前記(iv)のステップを実行した後、少なくとも1回以上実行されるステップ(a)から(e)を含む方法であって、
    前記ステップ(a)において、前記更新システムは、前記旧バージョンのコンテンツ又は前記新バージョンのコンテンツの前記いずれか他方のコンテンツの前記参照される項目におけるシフトを反映するように、それまでに生成された前記変更バージョンのコンテンツの中で最新の前記変更バージョンのコンテンツの前記参照項目を更新する変換子を生成し、
    前記ステップ(b)において、前記更新システムは、前記ステップ(a)で生成された前記変換子を、それまでに生成された前記変更バージョンのコンテンツの中で最新の前記変更バージョンのコンテンツに適用することにより、変更バージョンのコンテンツを生成し、
    前記ステップ(c)において、前記更新システムは、前記ステップ(b)で生成された前記変更バージョンのコンテンツを、前記旧バージョンのコンテンツと前記新バージョンのコンテンツの前記いずれか他方のコンテンツと比較することにより取得される変更の集合である変更デルタを生成し、
    前記ステップ(d)において、前記更新システムは、それまでに生成された変換子を含む複合変換子と、前記ステップ(c)で生成された変更デルタと、を有する更新パッケージを生成し、
    前記ステップ(e)において、前記更新システムは、所定の停止基準を満たさない場合には、次の前記(a)から次の当該(e)を実行し、所定の停止基準を満たす場合には、それまでに生成された前記更新パッケージの中から最小サイズの前記更新パッケージを、最終的な更新パッケージとして選択する、
    請求項3から請求項5のいずれか一項に記載の方法。
  7. 前記複合変換子は、前記新バージョンのコンテンツの前記参照される項目におけるシフトを反映するように、前記旧バージョンのコンテンツの前記参照項目を更新するためのシフト規則を少なくとも1つ含む、
    請求項6に記載の方法。
  8. 前記請求項1から7のいずれか一項に記載の方法を、前記更新システムとしてのコンピュータに実行させるためのプログラム。
  9. 旧バージョンのコンテンツを新バージョンのコンテンツに更新する更新システムであって、
    前記旧バージョンのコンテンツ及び前記新バージョンのコンテンツは、少なくとも2つの項目を含み、
    前記項目は、参照される項目への参照を含む項目である参照項目を含み、
    前記旧バージョンのコンテンツを記憶するよう構成された記憶装置と、
    前記新バージョンのコンテンツの前記参照される項目におけるシフトを反映するように前記旧バージョンのコンテンツの前記参照項目を更新するための変換子と、
    a)前記変換子を適用することにより変更された前記旧バージョンのコンテンツを前記新バージョンのコンテンツと比較することにより、又は、b)前記旧バージョンのコンテンツを前記変換子を適用することにより変更された前記新バージョンのコンテンツと比較することにより、取得される変更の集合である変更デルタと、
    を含む更新パッケージであって、
    前記変換子は、前記旧バージョンのコンテンツと前記新バージョンのコンテンツとの差異を反映した数値シフト規則又は参照シフト規則を含む、
    更新パッケージを取得するよう構成された入力モジュールと、
    (i)前記取得された更新パッケージの前記変更デルタが、前記変換子を適用することにより変更された前記旧バージョンのコンテンツを前記新バージョンのコンテンツと比較することにより取得される変更の集合である場合には、
    a)前記記憶装置から取得した前記旧バージョンのコンテンツに、前記取得した前記更新パッケージに含まれる前記変換子を適用することにより、前記変更バージョンのコンテンツを生成し、当該生成した変更バージョンのコンテンツを前記記憶装置に記憶させ、
    b)前記記憶装置から呼び出した前記変更バージョンのコンテンツに、前記取得した前記更新パッケージに含まれる前記変更デルタを適用することにより、前記新バージョンのコンテンツを生成し、あるいは、
    (ii)前記取得された更新パッケージの前記変更デルタが、前記旧バージョンのコンテンツを前記変換子を適用することにより変更された前記新バージョンのコンテンツと比較することにより取得される変更の集合である場合には、
    a)前記記憶装置から取得した前記旧バージョンのコンテンツに、前記取得した前記更新パッケージに含まれる前記変更デルタを適用することにより、前記変更バージョンのコンテンツを生成し、当該生成した変更バージョンのコンテンツを前記記憶装置に記憶させ、
    b)前記記憶装置から呼び出した前記変更バージョンのコンテンツに、前記取得した前記更新パッケージに含まれる前記変換子を適用することにより、前記新バージョンのコンテンツを生成する、プロセッサと、
    を備える更新システム。
  10. 旧バージョンのコンテンツを新バージョンのコンテンツに更新するための更新パッケージを生成する更新システムであって、
    前記旧バージョンのコンテンツ及び前記新バージョンのコンテンツは、少なくとも2つの項目を含み、
    前記項目は、参照される項目への参照を含む項目である参照項目を含み、
    前記旧バージョンのコンテンツ及び前記新バージョンのコンテンツを記憶するよう構成された記憶装置と、
    前記記憶装置から呼び出した前記旧バージョンのコンテンツ及び前記新バージョンのコンテンツに基づいて、前記新バージョンのコンテンツの前記参照される項目におけるシフトを反映するように前記旧バージョンのコンテンツの前記参照項目を更新するための変換子であって、前記旧バージョンのコンテンツと前記新バージョンのコンテンツとの差異を反映した数値シフト規則又は参照シフト規則を含む変換子を生成し、当該生成した変換子を前記記憶装置に記憶させるよう構成された変換子生成部と、
    前記記憶装置から呼び出した前記変換子を、前記旧バージョンのコンテンツ又は前記新バージョンのコンテンツのいずれか一方のコンテンツに適用することにより変更バージョンのコンテンツを生成し、当該生成した変更バージョンのコンテンツを前記記憶装置に記憶させるよう構成された変更バージョン生成部と、
    前記記憶装置から呼び出した前記変更バージョンのコンテンツを前記旧バージョンのコンテンツ又は前記新バージョンのコンテンツのいずれか他方のコンテンツと比較することにより取得される変更の集合である変更デルタを生成し、当該生成した変更デルタと前記記憶装置から呼び出した前記変換子とを含む前記更新パッケージを生成するよう構成された更新パッケージ生成部と、
    を備える更新システム。
JP2006516812A 2003-06-23 2004-06-23 記憶装置に記憶されたコンテンツのバージョンを更新する方法およびシステム Expired - Lifetime JP5019578B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US48022503P 2003-06-23 2003-06-23
US60/480,225 2003-06-23
US54616304P 2004-02-23 2004-02-23
US60/546,163 2004-02-23
PCT/IL2004/000559 WO2004114130A2 (en) 2003-06-23 2004-06-23 Method and system for updating versions of content stored in a storage device

Publications (3)

Publication Number Publication Date
JP2007521555A JP2007521555A (ja) 2007-08-02
JP2007521555A5 JP2007521555A5 (ja) 2009-05-28
JP5019578B2 true JP5019578B2 (ja) 2012-09-05

Family

ID=33544431

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006516812A Expired - Lifetime JP5019578B2 (ja) 2003-06-23 2004-06-23 記憶装置に記憶されたコンテンツのバージョンを更新する方法およびシステム

Country Status (7)

Country Link
US (2) US7860834B2 (ja)
EP (2) EP2273361B1 (ja)
JP (1) JP5019578B2 (ja)
KR (1) KR101438215B1 (ja)
AU (1) AU2004250442B2 (ja)
CA (1) CA2530395C (ja)
WO (1) WO2004114130A2 (ja)

Families Citing this family (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8479189B2 (en) 2000-11-17 2013-07-02 Hewlett-Packard Development Company, L.P. Pattern detection preprocessor in an electronic device update generation system
US7409685B2 (en) 2002-04-12 2008-08-05 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
US8233893B2 (en) * 2002-08-22 2012-07-31 Hewlett-Packard Development Company, L.P. Mobile handset update package generator that employs nodes technique
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
DE102004010179A1 (de) * 2004-03-02 2005-10-06 Siemens Ag Verfahren und Datenverarbeitungsgerät zur Aktualisierung von Rechnerprogrammen per Datenübertragung
WO2005088449A1 (en) 2004-03-15 2005-09-22 Red Bend Ltd. Method and apparatus for reliably updating a stored version of content
WO2005088448A1 (en) 2004-03-15 2005-09-22 Red Bend Ltd. Method and apparatus for reliable in-place update
US8453138B2 (en) 2004-04-13 2013-05-28 Red Bend Ltd. Method and apparatus for generating an update package
US7904895B1 (en) 2004-04-21 2011-03-08 Hewlett-Packard Develpment Company, L.P. Firmware update in electronic devices employing update agent in a flash memory card
JP5057519B2 (ja) 2004-06-01 2012-10-24 レッド・ベンド・リミテツド 記憶装置に記憶されたコンテンツをインプレース更新するための方法およびシステム
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US7661102B2 (en) * 2004-08-20 2010-02-09 Smith Micro Software, Inc. Method for reducing binary image update package sizes
DE102005034047A1 (de) * 2005-07-21 2007-01-25 Robert Bosch Gmbh Datenübertragungsverfahren und Datenübertragungssystem
EP1934727B1 (en) 2005-08-23 2019-01-16 Red Bend Ltd. Method and system for in-place updating content stored in a storage device
EP1934729B1 (en) 2005-10-06 2021-06-23 Red Bend Ltd. Methods and systems for updating content including a compressed version
KR100750169B1 (ko) * 2006-03-08 2007-08-21 삼성전자주식회사 델타 파일 생성 방법 및 이를 이용한 소프트웨어 업데이트방법
JP4911576B2 (ja) * 2006-03-24 2012-04-04 株式会社メガチップス 情報処理装置および追記型メモリ利用方法
EP1855197B1 (en) * 2006-05-10 2012-12-19 Research In Motion Limited Method and system for incremental patching of binary files
US8055096B2 (en) 2006-05-10 2011-11-08 Research In Motion Limited Method and system for incremental patching of binary files
EP2025095A2 (en) 2006-06-08 2009-02-18 Hewlett-Packard Development Company, L.P. Device management in a network
EP2030119A4 (en) * 2006-06-19 2009-07-22 Samsung Electronics Co Ltd INFORMATION UPDATE SYSTEM AND METHOD FOR AN OTA DEVICE
US7779401B2 (en) 2006-06-26 2010-08-17 Research In Motion Limited Method and system for generating a reverse binary patch for undoing a software update
EP2047420A4 (en) 2006-07-27 2009-11-18 Hewlett Packard Development Co USER EXPERIENCE AND DEPENDENCE MANAGEMENT IN A MOBILE DEVICE
US7653640B2 (en) * 2006-07-31 2010-01-26 Microsoft Corporation Two-way and multi-master synchronization over web syndications
US7908589B2 (en) 2006-08-29 2011-03-15 Sap Ag Deployment
US7831568B2 (en) 2006-08-29 2010-11-09 Sap Ag Data migration
US7831637B2 (en) 2006-08-29 2010-11-09 Sap Ag System on the fly
US7823124B2 (en) 2006-08-29 2010-10-26 Sap Ag Transformation layer
US8065661B2 (en) 2006-08-29 2011-11-22 Sap Ag Test engine
WO2011130879A1 (en) * 2010-04-23 2011-10-27 Hewlett-Packard Development Company, L.P. Match analysis for encoding optimized update packages
US8131644B2 (en) 2006-08-29 2012-03-06 Sap Ag Formular update
US7827528B2 (en) 2006-08-29 2010-11-02 Sap Ag Delta layering
US7912800B2 (en) 2006-08-29 2011-03-22 Sap Ag Deduction engine to determine what configuration management scoping questions to ask a user based on responses to one or more previous questions
WO2008025514A1 (en) * 2006-08-29 2008-03-06 Sap Ag Systems and methods for rapid application configuration and deployment
US8949825B1 (en) 2006-10-17 2015-02-03 Manageiq, Inc. Enforcement of compliance policies in managed virtual systems
US8949826B2 (en) 2006-10-17 2015-02-03 Managelq, Inc. Control and management of virtual systems
US9697019B1 (en) 2006-10-17 2017-07-04 Manageiq, Inc. Adapt a virtual machine to comply with system enforced policies and derive an optimized variant of the adapted virtual machine
US8752045B2 (en) 2006-10-17 2014-06-10 Manageiq, Inc. Methods and apparatus for using tags to control and manage assets
US8612971B1 (en) 2006-10-17 2013-12-17 Manageiq, Inc. Automatic optimization for virtual systems
US9015703B2 (en) * 2006-10-17 2015-04-21 Manageiq, Inc. Enforcement of compliance policies in managed virtual systems
US8234640B1 (en) 2006-10-17 2012-07-31 Manageiq, Inc. Compliance-based adaptations in managed virtual systems
US9086917B1 (en) 2006-10-17 2015-07-21 Manageiq, Inc. Registering and accessing virtual systems for use in a managed system
US9038062B2 (en) 2006-10-17 2015-05-19 Manageiq, Inc. Registering and accessing virtual systems for use in a managed system
US8234641B2 (en) 2006-10-17 2012-07-31 Managelq, Inc. Compliance-based adaptations in managed virtual systems
US8458695B2 (en) 2006-10-17 2013-06-04 Manageiq, Inc. Automatic optimization for virtual systems
EP2118746B1 (en) 2007-01-11 2019-01-02 Red Bend Ltd. Method and system for in-place updating content stored in a storage device
US8418173B2 (en) 2007-11-27 2013-04-09 Manageiq, Inc. Locating an unauthorized virtual machine and bypassing locator code by adjusting a boot pointer of a managed virtual machine in authorized environment
US8407688B2 (en) 2007-11-27 2013-03-26 Managelq, Inc. Methods and apparatus for storing and transmitting historical configuration data associated with information technology assets
US8219595B2 (en) 2008-02-14 2012-07-10 Hewlett-Packard Development Company, L.P. System and method for efficient remote data access for server management
EP2329366B1 (en) 2008-08-04 2013-12-11 Red Bend Ltd. Performing a pre-update on a non volatile memory
EP2329367B1 (en) 2008-08-04 2014-06-11 Red Bend Ltd. Performing an in-place update of an operating storage device
WO2010016062A2 (en) 2008-08-04 2010-02-11 Red Bend Ltd. Updating content without using a mini operating system
US8135659B2 (en) 2008-10-01 2012-03-13 Sap Ag System configuration comparison to identify process variation
US8396893B2 (en) 2008-12-11 2013-03-12 Sap Ag Unified configuration of multiple applications
US8255429B2 (en) 2008-12-17 2012-08-28 Sap Ag Configuration change without disruption of incomplete processes
JP2010198155A (ja) * 2009-02-24 2010-09-09 Fujitsu Ten Ltd プログラム更新装置、プログラム更新方法、及び情報処理装置
US8584087B2 (en) 2009-12-11 2013-11-12 Sap Ag Application configuration deployment monitor
WO2011136809A1 (en) * 2010-04-30 2011-11-03 Hewlett-Packard Development Company, L.P. Preprocessor for file updating
US20110283271A1 (en) * 2010-05-17 2011-11-17 Samsung Electronics Co. Ltd. Techniques for reunion of veneers
US8762980B1 (en) * 2010-09-09 2014-06-24 Symantec Corporation Rolling incremental updates
JP2012163994A (ja) * 2011-02-03 2012-08-30 Nec Corp ソフトウェア管理システム、ソフトウェア管理装置、制御方法、及びプログラム
US8997085B2 (en) * 2011-06-24 2015-03-31 International Business Machines Corporation Image delta-based upgrade of complex stack in software appliance
CN102955816B (zh) 2011-08-30 2016-04-20 国际商业机器公司 利用串匹配进行数据同步的方法和系统
US9588884B2 (en) * 2012-06-26 2017-03-07 Red Bend Ltd. Systems and methods for in-place reorganization of device storage
US9052978B2 (en) * 2013-07-24 2015-06-09 Oracle International Corporation Applying hot fixes for metadata customizing user interactions based on a software program deployed in multiple versions
EP2993578A1 (en) * 2014-09-02 2016-03-09 Gemalto M2M GmbH Method for adapting firmware of a wireless communication device
EP3510483B1 (en) 2016-09-23 2023-12-20 Huawei Technologies Co., Ltd. Binary image differential patching
US10725771B2 (en) * 2018-02-21 2020-07-28 Verizon Patent And Licensing, Inc. Artifact transformation in network devices
US10509642B2 (en) * 2018-03-30 2019-12-17 International Business Machines Corporation Intelligent discovery and application of API changes for application migration
US10963239B2 (en) * 2018-10-18 2021-03-30 International Business Machines Corporation Operational file management and storage
WO2020093398A1 (zh) * 2018-11-09 2020-05-14 华为技术有限公司 空中下载升级的方法及相关装置
KR102088167B1 (ko) * 2019-08-27 2020-03-12 루나 주식회사 소프트웨어 업데이트 에이전트 장치 및 이를 통한 패치방법

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06274384A (ja) * 1993-03-22 1994-09-30 N T T Data Tsushin Kk 実行ファイル差分抽出/更新装置及び実行ファイル差分抽出方法
JP3582030B2 (ja) 1995-07-05 2004-10-27 富士通株式会社 クロスコネクト装置
US5832520A (en) * 1996-07-03 1998-11-03 Miller, Call, Plauck And Miller Automatic file differencing and updating system
JPH10105394A (ja) * 1996-09-26 1998-04-24 Nec Commun Syst Ltd 電子交換機のファイル入れ替え方法
IL125846A0 (en) * 1998-08-19 1999-04-11 Emony Incremental program update
US6748584B1 (en) * 1999-12-29 2004-06-08 Veritas Operating Corporation Method for determining the degree to which changed code has been exercised
US7409685B2 (en) * 2002-04-12 2008-08-05 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
JP2002189618A (ja) * 2000-12-21 2002-07-05 Hitachi Information Systems Ltd 差分キャッシュを用いたwwwサーバとwwwブラウザの処理方法、およびそのプログラム
US6925467B2 (en) * 2002-05-13 2005-08-02 Innopath Software, Inc. Byte-level file differencing and updating algorithms
US7096311B2 (en) * 2002-09-30 2006-08-22 Innopath Software, Inc. Updating electronic files using byte-level file differencing and updating algorithms
US7089270B2 (en) * 2003-06-20 2006-08-08 Innopath Software Processing software images for use in generating difference files
DE10333673A1 (de) * 2003-07-24 2005-02-17 Ina-Schaeffler Kg Abdichtung für ein Wälzlager

Also Published As

Publication number Publication date
CA2530395A1 (en) 2004-12-29
JP2007521555A (ja) 2007-08-02
KR101438215B1 (ko) 2014-09-04
WO2004114130A3 (en) 2005-04-14
WO2004114130A2 (en) 2004-12-29
EP1642204A2 (en) 2006-04-05
US8341113B2 (en) 2012-12-25
AU2004250442B2 (en) 2010-11-18
US20040267833A1 (en) 2004-12-30
KR20060069361A (ko) 2006-06-21
EP2273361A1 (en) 2011-01-12
CA2530395C (en) 2014-01-21
EP2273361B1 (en) 2012-09-19
AU2004250442A1 (en) 2004-12-29
US20110093841A1 (en) 2011-04-21
US7860834B2 (en) 2010-12-28
EP1642204B1 (en) 2012-10-10

Similar Documents

Publication Publication Date Title
JP5019578B2 (ja) 記憶装置に記憶されたコンテンツのバージョンを更新する方法およびシステム
US7676479B2 (en) Method and system for updating versions of content stored in a storage device
US8438558B1 (en) System and method of updating programs and data
CN110837393A (zh) 一种固件差分升级包的制作方法及装置、可读存储介质
US20070067759A1 (en) Computer system for compiling source program
JP4638484B2 (ja) データ処理装置におけるデータ整合性
US6901584B2 (en) Assembling an object code module
CN111400256B (zh) 一种应用程序调用资源文件的方法及装置
CN115688675A (zh) 一种灵活在线检查和校正电路原理图参数方法
CN108694049B (zh) 一种更新软件的方法和设备
JP2009048259A (ja) プログラム変換方法及び変換用プログラム
US10310871B2 (en) Non-transitory computer-readable recording medium storing control program, control device and control method
US7127711B2 (en) Forming an executable program
US20030220939A1 (en) Information processing system, information processing method, and information processing program
JP4036852B2 (ja) 差分データ生成装置、差分データ生成方法および差分データ生成プログラム
US20070245336A1 (en) Method of generating patch file and computer readable recording medium storing programs for executing the method
CN100517220C (zh) 对存储在存储装置中的内容的版本进行更新的方法和系统
US7155709B2 (en) Displaying user readable information during linking
WO2022215185A1 (ja) コード補正装置、および、コード補正方法
JP2016151973A (ja) 制御コントロールシステム、その開発支援装置、制御装置
CN117056300A (zh) 对日志数据进行存储和解析的方法和装置
JPH05265742A (ja) プログラムパッチ方式
JPH0969042A (ja) パッチデ−タ自動作成方式

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20070621

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070622

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070622

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20070625

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070621

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20080604

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20080605

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090407

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101214

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110312

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110322

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110413

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110420

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110512

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110519

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110608

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120511

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120606

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120611

R150 Certificate of patent or registration of utility model

Ref document number: 5019578

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150622

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term