TW201327168A - 使用記憶體和暫時記憶體的修補方法及使用其之修補伺服器和客戶端 - Google Patents

使用記憶體和暫時記憶體的修補方法及使用其之修補伺服器和客戶端 Download PDF

Info

Publication number
TW201327168A
TW201327168A TW101134887A TW101134887A TW201327168A TW 201327168 A TW201327168 A TW 201327168A TW 101134887 A TW101134887 A TW 101134887A TW 101134887 A TW101134887 A TW 101134887A TW 201327168 A TW201327168 A TW 201327168A
Authority
TW
Taiwan
Prior art keywords
memory
patching
patch
data
file
Prior art date
Application number
TW101134887A
Other languages
English (en)
Inventor
Sung-Gook Jang
Kwang-Hee Yoo
Joo-Hyun Sung
Hye-Jin Jin
Yoon-Hyung Lee
Original Assignee
Neowiz Games Co 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 Neowiz Games Co Ltd filed Critical Neowiz Games Co Ltd
Publication of TW201327168A publication Critical patent/TW201327168A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

茲揭示一種修補方法。該修補方法是在修補客戶端中進行。該修補客戶端可為連接至修補伺服器,並且含有儲存裝置及記憶體。該修補方法包含下列步驟,即(a)存取該修補伺服器並且自該修補伺服器接收修補資料;(b)計算該記憶體的可獲用空間;(c)若該修補資料的大小為小於或等於該記憶體的可獲用空間,則利用該記憶體的可獲用空間以執行修補處理;以及(d)若該修補資料的大小為大於該記憶體的可獲用空間,則將對應於該修補資料大小之容量的暫時記憶體配置予該儲存裝置,並且利用該所配置暫時記憶體以執行修補處理。

Description

使用記憶體和暫時記憶體的修補方法及使用其之修補伺服器和客戶端
本發明概略關於一種修補技術,並且尤其是關於一種利用記憶體和暫時記憶體的修補方法,該方法能夠更加快速地且可靠地修補大量資料,以及運用該修補方法的修補伺服器和客戶端。
隨著計算環境的發展,硬體的效能提高,而且在硬體上運行的軟體能夠運用眾多資源。因此,軟體的大小顯現出逐漸擴增的趨勢。同時,隨著網路環境的開發,軟體在網路上的傳輸與散佈變得更為普及。尤其,軟體的內容可基於各種原因,像是釋出新的軟體版本,而頻繁地變動或擴充。然後將所改變或擴增的內容提供給使用者以對軟體進行更新,這稱為修補或更新。
傳統的修補技術包含運用關於修補版本之資訊的修補方法。例如,有一種對客戶端進行修補的方法,即存取修補伺服器,將目前的修補版本與該修補伺服器上的修補版本加以比較,以及若有必要進行修補,則下載並儲存相對應內容。這種傳統修補方法的問題在於並未有效率地運用該修補伺服器及該修補客戶端的資源,同時倘若關於修補版本的資訊有誤或者修補作業僅為部份地執行,則就可能會發生修補冗餘而在該伺服器上出現瓶頸。
為解決此項問題,現已開發出一種技術,即提供有關 一待予修補檔案中之所改變內容的資訊,並且按照該項資訊以進行修補。不過,在這項技術裡,演算法本身是一次地或接續地將修補資料儲存於單一段的記憶體內然後執行修補處理。因此,相較於傳統的修補技術,該項技術雖確略微地減少修補資料,然用以配置記憶體及執行修補處理的演算法並未獲得改善。基於此項原因會發生許多問題,因為假使當正在下載待予修補的檔案時出現錯誤,則必須再度下載所有待予修補的資料,當對大型檔案進行修補時修補程序緩慢,而且未能有效率地運用硬體資源。此外還有一項問題,就是由於修補客戶端的作業效率不足,故而會對修補伺服器上施加沉重的負載。
從而針對於先前技藝中所出現的前述問題以製作本發明,同時本發明之一目的即在於,利用經改良的修補演算法,藉由將修補客戶端的資源運用度最大化俾使更快速地且更有效率地進行修補。
本發明之另一目的為更快速地且更可靠地修補高容量的修補檔案。
本發明的又另一目的為根據待予修補之資料的大小而定利用經優化的修補演算法以更快速地施用修補。
本發明的又另一目的為,若在修補程序的過程中出現錯誤,則藉由僅對錯誤部份,而非整個待予修補檔案,進行修改以按具有資源效率性及容錯的方式施用修補。
為達到前述目的,本發明提供一種修補方法,該修補方法是在修補客戶端中執行,該修補客戶端可連接於修補伺服器並且含有儲存裝置及記憶體,該修補方法包含下列步驟:(a)存取該修補伺服器並且自該修補伺服器接收修補資料;(b)計算該記憶體的可獲用空間;(c)若該修補資料的大小為小於或等於該記憶體的可獲用空間,則利用該記憶體的可獲用空間以執行修補處理;以及(d)若該修補資料的大小為大於該記憶體的可獲用空間,則將對應於該修補資料大小之容量的暫時記憶體配置予該儲存裝置,並且利用所配置的暫時記憶體以執行修補處理。
為達到前述目的,本發明提供一種修補方法,該修補方法是在修補客戶端中執行,該修補客戶端可連接於修補伺服器並且含有儲存裝置及記憶體,該修補方法包含下列步驟:(a)存取該修補伺服器並且自該修補伺服器接收含有複數個待予修補之檔案的修補資料;(b)計算該記憶體的可獲用空間;(c)若該等複數個待予修補之檔案的至少一者為小於或等於該記憶體的可獲用空間,則利用該記憶體的可獲用空間以修補該至少一檔案;以及(d)若該等複數個待予修補之檔案的至少一者大於該記憶體的可獲用空間,則利用配置予該儲存裝置的暫時記憶體以修補該至少一檔案。
為達到前述目的,本發明提供一種修補伺服器,該修補伺服器係連接於修補客戶端並且提供修補資料,該修補伺服器含有記憶體;散列產生單元,此者係經組態設定以產生對於所收資料的至少一散列值;以及控制單元,此者 係經組態設定以將原始檔案及修補檔案載入至該記憶體,控制該散列產生單元故而該散列產生單元比較該所載入原始檔案及該所載入修補檔案並且產生對於差異的至少一散列值,產生含有該所產生散列值的修補表單,以及產生含有該所產生修補表單的修補資料。
為達到前述目的,本發明提供一種修補客戶端,該修補客戶端能夠利用記憶體及儲存裝置,並且存取修補伺服器、接收修補資料及執行修補處理,該修補客戶端含有控制單元,以供比較該所收修補資料的大小和該記憶體的可獲用空間,若該記憶體的可獲用空間為大於或等於該所收修補資料的大小則利用該記憶體以執行修補處理,以及若該記憶體的可獲用空間為小於該所收修補資料的大小則將對應於該修補資料大小之容量的暫時記憶體配置予該儲存裝置,然後利用所配置的暫時記憶體以執行修補處理。
本揭技術說明僅為示範性以達結構性或功能性描述之目的。本揭技術之範疇不應被詮釋為受限於後述的具體實施例。換言之,可依照各種方式修改該等具體實施例,並且應將本揭技術之範疇詮釋為涵蓋亦能實現該等具體實施例之技術精神的等同項目。
在此同時,應依下列方式解讀本申請案文中所描述之詞彙的意義。
該等辭彙「第一」、「第二」等等各者是用以將一構 件區分於另一構件,而且該等構件不應受限於這些詞彙。例如可將第一構件稱為第二構件,或者按類似方式將第二構件稱為第一構件,而不致悖離本發明的範躊及技術精神。
當描述一構件為經「耦接於」或「連接於」另一構件時,應瞭解前者構件可為直接地耦接於或連接於後者構件,然該等確可透過一或更多的中介構件所耦接或連接合一。相對地,當描述一構件為「直接地耦接於」或「直接地連接於」另一構件時,則應瞭解該等係經耦接或連接合一而無一些其他構件中介於其間。同時,其他用以描述構件間之關係的表示詞句,像是「於…之間」及「直接地於…之間」或是「鄰近於…」及「直接地鄰近於…」,亦應依相同方式所解讀。
除另予顯明定義外,單性表示詞句可包含複數表示詞句。在本申請案中,應瞭解該等「包含」、「含有」或「具備」詞彙意指納入本說明文件內所述及的特性、編號、步驟、操作、元件、部份或其等組合,然並非意味排除一或更多的任何其他特性、編號、步驟、操作、元件、部份或其等組合。
在步驟中,符號(即如「a」、「b」及「c」)是為便於描述所運用,而且該等符號並非描述該等步驟的次序。除在前後文中顯明地說明特定次序外,該等步驟確可依照與所述次序相異的次序執行。換言之,該等步驟可按所述次序執行,可大致同時地執行,並亦可按逆反次序執行。
除另予定義外,本揭中所使用的所有詞彙皆具有如熟 諳本發明所歸屬的技術領域中一般知識之人士眾所知曉的相同意義。除在本申請案文中顯明地定義外,常用辭典內所定義之詞彙應予解讀為具有與在相關技藝情境下所詮釋之意義相一致的意義,並且不應解譯為具有理想性或過度形式性的意義。
在後文說明中,原始檔案是指在施行修補之前的檔案,並且修補檔案為既已對其進行修補的檔案。修補資料為執行修補處理所必須的資料,並且可依照具體實施例而定含有關於修補檔案與原始檔案間之差異的修補檔案或資訊。
圖1顯示一可供施用本揭技術之修補系統具體實施例之組態的圖式。
現參照圖1,該修補系統可包含修補伺服器100及修補客戶端200。
該修補伺服器100可產生修補資料,並且可在當該修補客戶端200存取該修補伺服器100時將該修補資料提供予該修補客戶端200。在此,該修補伺服器100是指一種能夠當併同於該修補客戶端200進行操作時執行修補處理的伺服器功能,並且不受特定實作方式所限制。例如,該修補伺服器100可為按單一伺服器或伺服器場集所實作,或者可予實作為一般目的性伺服器的單項功能。後文中將參照圖2以說明該修補伺服器100的詳細建構內容或功能。
該修補客戶端200可透過網路以存取該修補伺服器100,並如後文詳述藉由執行特定的修補程序以在該修補客 戶端200運行於其上之終端機上進行修補處理。在此,該修補客戶端200是指一種能夠當併同於該修補伺服器100進行操作時執行修補處理的終端機功能,並且不受特定實作方式所限制。例如,該修補客戶端200可為依照在終端機上執行之軟體或者按如經邏輯設計的硬體所實作。後文中將參照圖4至6以說明該修補客戶端的詳細建構內容或功能。
該修補伺服器100及該修補客戶端200可為經由網路所連接。在此,該網路不受限於特定、標準式網路。該修補客戶端200可經由有線或無線網路,或者有線或無線網路的組合,連接至該修補伺服器100。例如,若該修補客戶端200運行於個人電腦(PC)上,則可利用有線或Wi-Fi通訊網路來作為該網路。或另者,若該修補客戶端200係智慧型手機或平板PC,則該網路可為組態設定如透過行動通訊網路3G或4G。
圖2為顯示一圖1修補伺服器100具體實施例的建構圖式。
現參照圖2,該修補伺服器100可含有通訊單元110、記憶體120、散列產生單元130、修補資料儲存單元140以及控制單元150。在一具體實施例裡,該修補伺服器100可進一步包含客戶端管理單元160。
該通訊單元110可回應於來自該控制單元150的請求以建立或維護連於該修補客戶端200的通訊線路。
該記憶體120可含有為產生修補資料所必要的儲存空 間。該記憶體120可被分割成多個特定空間,藉以在該控制單元150的控制下儲存不同的資料。
該散列產生單元130可產生對於所收資料的散列值。該散列產生單元130可在該控制單元150之控制下產生對於原始資料或是對於修補資料的散列值,並且可將所產生的散列值提供至該控制單元150。
該修補資料儲存單元140可儲存修補資料。即如前述,修補資料為執行修補處理所必須的資料,並且可依照具體實施例而定含有關於修補檔案與原始檔案間之差異的修補檔案或資訊。該修補資料儲存單元140可儲存由該控制單元150所提供的修補資料或是關於修補資料的資訊(即如有關修補版本的資訊、修補資料的總體大小,以及在修補資料含有複數個檔案之情況下各個檔案的大小)。
該控制單元150通常會控制該修補伺服器100的構件,藉以令該修補伺服器100執行修補處理。後文中將針對該控制單元150的各項功能進一步詳細說明。
該控制單元150可對原始檔案與修補檔案進行比較,並且產生修補資料。
在一具體實施例裡,該控制單元150可將修補檔案及原始檔案載入至該記憶體120上,並且請求該散列產生單元130比較該修補檔案及該原始檔案,而藉以產生對於其等間之差異的散列值。該控制單元150可產生一修補表單,此者含有所產生的散列值以及與該所產生散列值相關聯的索引;產生含有該修補表單和該修補檔案的修補資料;並 且將所產生的修補資料儲存在該修補資料儲存單元140內。
在另一具體實施例裡,該控制單元150可利用對於該修補檔案的散列值來產生修補資料。換言之,該控制單元150可產生修補表單,其中含有對於整個修補檔案的散列值以及對於該散列值的索引,並且產生含有該修補表單和該修補檔案的修補資料。
該控制單元150可將修補資料提供給該修補客戶端200。
在一具體實施例裡,該控制單元150可控制該通訊單元110,從而維護連於該修補客戶端200的通訊線路;依據有關經儲存在該修補資料儲存單元140內之修補資料的資訊來決定是否有必要進行修補處理;然後將該修補資料提供至該修補客戶端200。
在另一具體實施例裡,當該通訊單元110在該控制單元150之控制下建立連於該修補客戶端200的通訊線路時,該控制單元150可請求有關經連接至該客戶端管理單元160之修補客戶端200的資訊;依據回應於該請求所收到的資訊來決定修補資料;然後將該修補資料提供至該修補客戶端200。
該客戶端管理單元160可對該修補客戶端200進行管理。在一具體實施例裡,該客戶端管理單元160可對該修補客戶端200進行認證。在一具體實施例裡,該客戶端管理單元160可管理有關在該修補客戶端200上所執行之修補處理的資訊(即如修補時間和關於修補版本的資訊)。
圖3為略圖說明一由圖2控制單元150所執行之修補表單產生程序範例的參考圖式。
現參照圖3,原始檔案及修補檔案係經分別地載入該記憶體120內。由於既已將原始檔案及修補檔案載入至該記憶體120內,因此該控制單元150可利用該記憶體120以更快速地進行比較。該等原始檔案及修補檔案的4位數二進位數字是指在該記憶體120之內的位址。而該等原始及修補檔案之內容的2位數二進位數字則是指在相對應資料的索引。在所述範例中,該等原始及修補檔案各者含有四段資料。這四段資料可為四個不同檔案,或者至少一檔案的部份。
該控制單元150可對該原始檔案及該修補檔案進行比較。換句話說,該控制單元150可比較經載入至該記憶體120內之原始檔案的各段資料之內容與經載入至該記憶體120內之修補檔案的各段資料之內容。即如圖式所示,該控制單元150可決定索引01的內容和索引11的內容彼此相異,並且組態設定一修補表單300。該修補表單300可含有索引310、散列值320以及修補檔案位址330。該等散列值320是指對應於該等索引01及11之修補檔案的散列值,並且該修補檔案位址330可指明該修補檔案的內容實際上存放於何處。例如,該等該修補檔案位址330可指明該修補資料儲存單元140中該修補檔案所存放的位址或位置。
圖3的具體實施例說明範例,其中會對原始檔案與修補檔案進行比較,並且按照對應於差異的修補檔案內容以 及該內容的散列值來產生修補資料。在本範例中,該修補客戶端200可在該原始檔案上覆寫該修補檔案,計算散列值,比較所算得的散列值與修補資料的散列值,然後執行修補處理。
圖4為顯示根據本揭技術之修補客戶端200具體實施例的建構圖式,圖5及6為說明由該修補客戶端200執行之修補法則具體實施例的參考圖式。
現參照圖4,該修補客戶端200可包含通訊單元210、記憶體220、暫時記憶體230及控制單元240。在一具體實施例裡,該修補客戶端200可進一步含有修補資料儲存單元250及散列產生單元260之至少一者。
該通訊單元210可依照該控制單元240的請求以建立或維護連於該修補伺服器100的通訊線路。
該記憶體220為用以提供儲存空間的記憶體裝置。
該暫時記憶體230是利用儲存裝置(即如HDD、RAID或SSD)所配置。由於可提供儲存空間,故而該暫時記憶體230是執行與該記憶體220相同的功能,然其效能確低於該記憶體220,因為是在資料載入的過程中出現I/O處理。
該控制單元240可控制該修補客戶端200的構件,因此能夠在終端機上進行修補處理。
該控制單元240可利用該記憶體220來執行修補處理。
在一具體實施例裡,該控制單元240可藉由將該記憶體220的可獲用空間分割成至少兩個範圍,並且將原始檔案及修補資料載入至個別範圍上以執行修補處理。例如, 該控制單元240可藉由對該記憶體220配置三個範圍,並且將原始檔案、修補檔案及修補資料載入(產生)於個別範圍上(或內),來執行修補處理。圖5為說明本具體實施例的參考圖式。現參照圖5,該控制單元240可對該記憶體220配置三個範圍,並且按照範圍510為用於原始檔案、範圍520用於修補檔案而範圍530用於修補資料的方式來利用這三個範圍。該控制單元240可將待予修補的原始檔案載入至該原始檔案範圍510上,將自該修補伺服器100收到的修補資料載入至該修補資料範圍530上,然後在該修補檔案範圍520中產生修補檔案。例如,該控制單元240可分析該修補資料範圍530的修補表單;決定對應於索引01及11的內容係經標定予以修補;決定相對應的修補內容是存放在位址11001及11010處;以及依據經載入至該原始檔案範圍510內的資料和載入至該修補資料範圍530內的資料在該修補檔案範圍520內產生修補檔案。換言之,該控制單元240可自該原始檔案讀取對應於該修補表單內並未包含之索引的資料,並且依照所讀取資料產生該修補檔案。該控制單元240可搜尋對於對應至經納入在該修補表單內之索引的資料之修補資料,並且藉由將所發現的修補資料寫入至該修補檔案內來產生該修補檔案。
在此,該控制單元240可產生該等原始檔案、修補檔案及修補資料,並且利用不同方法將該等載入至該記憶體220上。例如,可利用記憶體貯池方法將該原始檔案載入至該記憶體220,利用緩衝器重疊貯池方法將該修補檔案載入 至該記憶體220,並且利用記憶體檔案對映方法將該修補資料載入至該記憶體220。
如此進行的原因是在於倘若是運用相同方法以將資料載入至該記憶體220,則在特定載入程序中出現的錯誤可能會對其他的載入程序造成影響。
此外,當按照圖5所揭示的具體實施例執行自該記憶體220讀取該等原始檔案、修補檔案及修補資料的程序或者將該等原始檔案、修補檔案及修補資料寫入至該記憶體220上的程序時,該控制單元240可依不同方式改變位移值。例如,當讀取該原始檔案時,該控制單元240可利用隨機位移值移位方法。而當寫入該修補檔案時,該控制單元240可利用循序位移值遞增方法。此外,當讀取該修補資料時,該控制單元240可利用循序位移值遞增方法。若如前述般以不同方式改變位移值,就不會因為在特定程序內出現錯誤而影響到其他程序,同時可提高處理器的操作效率。
在另一具體實施例裡,該控制單元240可利用該暫時記憶體230來執行修補處理。圖6為說明一利用暫時記憶體230執行修補之具體實施例的參考圖式。圖6中所示的具體實施例是對應於改變該原始檔案資料次序之修補處理的範例。現參照圖6,該控制單元240可藉由比較原始檔案與修補資料以事先地測量待予改變之原始檔案部份的大小,並且在該暫時記憶體230裡配置對應於該所測得大小的空間。現參照圖6所示範例,由於分析該修補資料之修 補表單的結果,該控制單元240決定該原始檔案中有三個區塊需予改變;請求自該暫時記憶體230中具有對應於該等三個區塊大小之大小的空間;並且將具有該所請求大小的空間配置予該暫時記憶體230。該控制單元240可利用該所配置暫時記憶體230以改變該原始檔案的資料,並且依據該所改變資料來產生修補檔案。在此,該控制單元240可利用輸出緩衝器記憶體貯池方法將所改變資料載入至該暫時記憶體230上。就以修補錯誤復原而言,該輸出緩衝器記憶體貯池方法較為簡便且快速,因為當發生修補失敗時會將有關失敗修補處理的資訊自動地記錄在檔案上。當需修補大量資料時,利用圖6所示之暫時記憶體230的修補方法具有效率性。亦即,在參照圖5所描述的修補方法裡能夠更快速地執行載入,故整體修補程序會因為運用該記憶體220而變快。不過,當須予修補之資料量超過該記憶體220的容量時可能不會使用圖5的修補方法,理由是該記憶體220的實際容量為有限。相對地,在圖6所示的修補方法中,則能夠簡易地修補龐大的資料檔案(即如具有等於或大於1 Giga位元組大小的修補檔案),原因是將該暫時記憶體230配置予儲存裝置然後進行修補。
在又另一具體實施例裡,該控制單元240可決定待予修補之資料的大小,並且利用該記憶體220及該暫時記憶體230的至少一者來執行修補處理。換言之,該控制單元240可利用圖5及6所示之具體實施例的組合來進行修補。尤其,當收到修補資料後,該控制單元240可檢查待予修 補的資料大小,並且檢查該記憶體220的目前可獲用大小。若該資料的大小為等於或小於該記憶體220的目前可獲用大小,則該控制單元240可利用該記憶體220來進行修補處理。相反地,假使該資料的大小為大於該記憶體220的目前可獲用大小,則該控制單元240可利用該暫時記憶體230來進行修補處理。後文中將參照圖9以進一步詳細說明此具體實施例。
該修補資料儲存單元250可暫時地儲存自該修補伺服器100所收到的修補資料。例如,若自該修補伺服器100下載修補資料,則該控制單元240可將該修補資料儲存在該修補資料儲存單元250內,並且根據該所存修補資料利用該記憶體220和該暫時記憶體230來進行修補處理。
在一具體實施例裡,該修補資料儲存單元250可儲存有關先前所執行之修補處理的資訊。例如,在進行修補之後,該控制單元240可產生關於該項修補處理的資訊(即如關於修補版本的資訊、修補資料和修補容量),並且將所產生的資訊提供至該修補資料儲存單元250。該修補資料儲存單元250可儲存該所產生資訊。
該散列產生單元260可產生對於該所收資料的散列值。例如,該控制單元240可控制該散列產生單元260,故而該散列產生單元260產生對於所修補資料的散列值,藉以在完成修補之後檢查是否既已正確地執行修補處理。該控制單元240可比較由該散列產生單元260所產生的散列值與一修補表單裡所含有的散列值,並且決定是否既已正 確地執行修補處理。
圖7為說明一由圖4修補客戶端200執行之修補方法具體實施例的流程圖。圖7所揭示的修補方法具體實施例是關聯於利用該記憶體220進行的修補具體實施例。
在步驟S710處,該控制單元240接收來自該修補伺服器100的資料,並且在步驟S720處配置該記憶體220以供修補處理。在此,該控制單元240可針對原始檔案、修補資料及修補檔案將該記憶體220分割成三個範圍,然後配置該記憶體220。
在步驟S730處,該控制單元240可將該原始檔案及該修補資料載入至該記憶體220的範圍上。在此,該控制單元240可利用不同方法將該原始檔案及該修補資料載入至該記憶體220內。例如,若已利用記憶體貯池方法將該原始檔案載入至該記憶體220內,則可利用檔案對映記憶體方法將該修補資料載入至該記憶體220內。若如前述般是以不同方法來載入資料,則不需執行整個載入程序,並且可避免傳播錯誤,即使是當在特定的載入方法中出現錯誤時亦然。
在步驟S740處,該控制單元240檢查是否既已成功地執行載入處理。若在特定資料中出現錯誤(步驟S740處為「否」),則該控制單元240可執行僅載入相對應資料的程序。在圖7的流程圖中,該記憶體220雖經繪示為在步驟S720重新配置並且說明錯誤資料說明是在步驟S730重新載入,然在一具體實施例裡確可能僅重新載入該資料而未配 置該記憶體220。
若確已成功地執行載入處理,則該控制單元240可在步驟S750處依照經載入至該記憶體220中的原始檔案和修補資料來產生修補檔案。例如,該控制單元240可分析該修補資料的修補表單;依據該修補資料以將該原始檔案分割成將會移動其等內容而未予變更的一或更多部份以及將於其等之上進行修補的一或更多部份;並且按照該分割結果在經配置予該修補檔案的範圍內產生該修補檔案。在此,該控制單元240可依接續片段或全部一次性地產生該修補檔案。換言之,該控制單元240可在一個從經配置予該修補檔案起點之記憶體單元至配置予該修補檔案終點之記憶體單元的範圍裡自該原始檔案或該修補資料循序地讀取相對應內容,並且讀取該內容,藉以產生修補檔案。在一具體實施例裡,該控制單元240可針對將會移動其等內容而未予變更的一或更多部份來檢查該原始檔案;自該原始檔案讀取該等部份;寫入該等被一次性地讀入該修補檔案之至少一部份內的部份;並且寫入該修補檔案的內容將被一次性地移動至該修補檔案之至少一部份上的一或更多部份。
在步驟S760處,該控制單元240可對該所獲修補檔案的錯誤進行檢查。在此,該控制單元240可利用該修補資料內所包含的修補表單來檢查該所產生修補檔案的錯誤。例如,假設該修補表單裡含有對於該修補資料的散列值,那麼該控制單元240可藉由計算對於該修補檔案之所修補 部分的散列值並且比較該所修補部分的散列值與該修補表單的散列值來運行錯誤檢查。
若無錯誤(在步驟S770處為「否」),則該控制單元240終結該修補程序。而若確有錯誤(在步驟S770處為「是」),則該控制單元240可在步驟S780處執行錯誤處置程序。例如,若漏失前文所述經配置予該記憶體220的資料,則該控制單元240可重複一系列的步驟S720至S760,如此再度地配置該記憶體220並再度地載入資料,藉以再度地修補具有不同散列值的部份。即如另一範例,若經配置予該記憶體220的原始檔案及修補資料保持在記憶體內,則該控制單元240可執行一系列的步驟S750及S760,即依據該等原始檔案及修補資料僅重新寫入與錯誤相關聯的部份,並且執行錯誤處理。
在前文說明裡,雖既已參照圖7以描述其中是將該記憶體220分割成三個範圍並且執行修補的範例,然另一其中是將該記憶體220分割成兩個範圍並且執行修補的範例亦為可行。換言之,該控制單元240可將該記憶體220分割成一個用於原始檔案的範圍以及一個用於修補資料的範圍;自該修補資料讀取對應於該原始檔案裡一或更多需予改變之部份的內容;以及藉由覆寫該讀取內容來改變該原始檔案,藉此產生修補檔案。
圖8為說明另一由圖4修補客戶端執行之修補方法具體實施例的流程圖。圖8所揭示的修補方法具體實施例是關聯於利用暫時記憶體230進行的修補具體實施例。
在步驟S810處該控制單元240可自該修補伺服器100讀取資料,並且在步驟S820處測量待予修補之資料(亦即原始檔案中需予變更之資料)的大小。在一具體實施例裡,該控制單元240按照修補資料的修補表單來測量資料的大小。
在步驟S830處,該控制單元240可配置具有對應於該待予變更資料大小之容量的暫時記憶體230,並且在步驟S840處將該待予變更資料載入至所配置的暫時記憶體中。在一具體實施例裡,該暫時記憶體230可配置該暫時記憶體230,並且利用輸出緩衝器記憶體貯池方法將該待予變更資料載入至所配置的暫時記憶體。在輸出緩衝器記憶體貯池方法中,當修補失敗時,會自動地將有關於修補失敗的資訊記錄在檔案內。從而,可簡便地執行一系列的錯誤處理步驟S870至S890。
在步驟S850處,該控制單元240檢查是否成功地進行載入處理。若確出現錯誤(在步驟S850處為「否」),則該控制單元240可再度地執行資料載入的步驟。於圖8的流程圖裡,雖在步驟S830處說明重新配置該暫時記憶體230並且在步驟S840處說明重新載入該待予變更資料,然在一具體實施例裡確可僅重新載入該待予變更資料而無須配置該暫時記憶體230。
在步驟S860處,該控制單元240可基於經載入至該暫時記憶體230內的資料產生修補檔案,並且在步驟S870處對該產生修補檔案運行錯誤檢查。而若確出現錯誤(在步驟S880處為「是」),則該控制單元240可在步驟S890處執 行錯誤處置程序。
圖9為說明又另一由圖4修補客戶端200執行之修補方法具體實施例的流程圖。圖9所示的具體實施例係按照圖7及8具體實施例組合所執行之修補方法的具體實施例。
現參照圖9,在步驟S910處,該控制單元240可自該修補伺服器100接收修補資料並且對該修補資料進行檢查。例如,該控制單元240可接收修補資料,然後檢查該修補資料的整體大小。
在檢查該修補資料之後,在步驟S920處,該控制單元240可計算該記憶體220的目前可獲用空間。接著,在步驟S930處,該控制單元240比較該記憶體220的可獲用空間與該修補資料的大小。若該記憶體220的可獲用空間為足夠,則利用該記憶體220進行修補處理。相反地,若該記憶體220的可獲用空間並不足夠,則利用該暫時記憶體230進行修補處理。
在一具體實施例裡,當計算該記憶體220的可獲用空間時,該控制單元240可將待予返回的記憶體空間納入考量。如此可表示為下列等式1:Memory_total=Memory_enable+(Memory_return t) (1)
現參照等式1,當進行修補處理時,可獲用的記憶體空間(Memory_total)可為該目前可獲用記憶體空間(Memory_enable)及在一特定時間內待予返回之記憶體空間(Memory_ returnt)的總和。此處,在該特定時間內待予返回的記憶體空間可表示為在該特定時間內預期返回的記憶體空間(Memory_return)乘以特定的機率值t。例如,假設在既已收到該修補資料之後預期施用整個修補所需耗費的時間約為1分鐘,則若已決定該預期返回的記憶體空間,該控制單元240可將預期予以返回的記憶體空間設定在1分鐘之內來作為該預期返回的記憶體空間(Memory_return)。在此該機率值t可為與該預期返回時間成正比。例如,記憶體空間Memory_return A預期在10秒鐘之內返回的機率值t可為高於記憶體空間Memory_return B預期在40秒鐘之內返回的機率值。
若該可獲用記憶體空間等於或大於該修補資料的大小(在步驟S930處為「是」),則在步驟S940至S970處該控制單元240可利用該記憶體220來執行修補處理。在此,由於前文中既已參照圖7說明利用該記憶體220執行修補的步驟,故而省略其詳細說明。而若該可獲用記憶體空間為小於該修補資料的大小(在步驟S930處為「否」),則在步驟S941至S971處該控制單元240可利用該暫時記憶體230來執行修補處理。在此,由於前文中既已參照圖8說明利用該暫時記憶體230執行修補的步驟,故而省略其詳細說明。
圖9流程圖中雖省略錯誤處置程序,然該錯誤處置程序確可按如前述具體實施例方式執行。
圖9所示的具體實施例是基於圖7利用該記憶體220 之方法與圖8利用該暫時記憶體230之方法的組合所執行。圖9所示的具體實施例說明先執行利用該記憶體220的修補方法。換言之,若所有的修補資料皆可配置予該記憶體220,則可利用該記憶體220快速地執行修補處理。然假使該記憶體220的容量為小於修補資料的總體大小,則可利用該暫時記憶體230進行修補。故而能夠更快速地修補大量的修補資料。
圖10為說明又另一在圖4修補客戶端200中執行之修補方法具體實施例的流程圖。圖10的具體實施例是對應於依據圖7及8具體實施例之組合所執行的修補方法之另一具體實施例,並且關聯於一具體實施例,其中,當修補資料含有複數個檔案時,根據優化方法以對該等複數個待予修補的檔案各者執行修補處理。換句話說,在圖9的具體實施例中,究係利用該記憶體220抑或該暫時記憶體230是基於該修補資料的整體性所決定。在圖10的具體實施例裡,修補資料含有複數個檔案,並且是針對各個檔案利用該記憶體220或該暫時記憶體230的其一者進行修補處理。
現參照圖10,在步驟S1010處,該控制單元240可自該修補伺服器100接收修補資料並且對該修補資料進行檢查。在一具體實施例裡,在收到含有待予修補之複數個檔案的修補資料後,該控制單元240可檢查該等複數個檔案各者的大小。在另一具體實施例裡,該修補資料可包含關於該等複數個檔案之大小的資訊,並且該控制單元240可依照該項資訊對該等複數個檔案各者檢查其等的大小。
在步驟S1020處,該控制單元240可計算該記憶體220的目前可獲用空間。在本例下,該控制單元240可比較該記憶體220的可獲用空間與該修補資料內所含有之各個複數個的大小。相對地,該控制單元240可利用該記憶體220來修補具有等於或小於該記憶體220可獲用空間之大小的檔案。該控制單元240可利用該暫時記憶體230來修補具有大於該記憶體220可獲用空間之大小的檔案。在此,由於可按圖9所示方式計算該記憶體220的可獲用空間,故而省略其詳細說明。
在步驟S1030處,該控制單元240檢查是否存在有一些各者具有等於或小於該記憶體220可獲用空間之大小的檔案。若有一些檔案確為如此(在步驟S1030處為「是」),則在步驟S1040至S1070處該控制單元240可利用該記憶體220來修補該修補資料的一些檔案。在此,可針對各個檔案來執行利用該記憶體220修補該修補資料之一些檔案的步驟。若該記憶體220的可獲用空間為大於該等檔案其中兩者的大小,則該控制單元240可同時地修補兩個或更多檔案。由於前文中既已參照圖7以說明利用該記憶體220執行修補處理的詳細方法,故而省略其詳細說明。
在步驟S1041至S1071處,該控制單元240可利用該暫時記憶體230來修補該修補資料裡各者具有大於該記憶體220可獲用空間之大小的其餘檔案。例如,該控制單元240可加總該修補資料之其餘檔案的大小並且配置對應於該總和的暫時記憶體230。由於前文中既已參照圖8以說明 利用所配置暫時記憶體230執行修補處理的詳細方法,故而省略其詳細說明。
在圖10的具體實施例裡,是利用該記憶體220及該暫時記憶體230的至少一者來修補含有複數個檔案的修補資料。從而能夠更為快速地進行修補處理。在此,該控制單元240可根據其計算效能而定平行地利用該記憶體220及該暫時記憶體230執行修補處理。換句話說,該控制單元240可利用該記憶體220來修補多個檔案,而各者具有小於該記憶體220之可獲用空間的大小,並同時利用該暫時記憶體230修補其餘檔案。若平行地執行修補處理,則可大幅地縮短執行修補處理所需的時間。
在本揭技術中,可藉由將該修補客戶端之資源的運用度最大化俾使更快速地且有效率地進行修補處理。
在本揭技術中,可快速地且可靠地修補具有高容量的修補檔案。
在本揭技術中,可依照待予修補之資料的大小而定來運用優化的修補演算法以更快速地執行修補處理。
在本揭技術中,若在修補程序中出現錯誤,則可藉由僅修改錯誤部份,然非整個待予修補檔案,以按高資源效率性與錯誤容忍度的方式執行修補處理。
前文雖既已依照示範之目的說明本發明的較佳具體實施例,然熟諳本項技藝之人士將能瞭解確可進行各式修改、添增及替換而不致悖離依如後載申請專利範圍中所揭示的本發明範疇與精神。
100‧‧‧修補伺服器
110‧‧‧通訊單元
120‧‧‧記憶體
130‧‧‧散列產生單元
140‧‧‧修補資料儲存單元
150‧‧‧控制單元
160‧‧‧客戶端管理單元
200‧‧‧修補客戶端
210‧‧‧通訊單元
220‧‧‧記憶體
230‧‧‧暫時記憶體
240‧‧‧控制單元
250‧‧‧修補資料儲存單元
260‧‧‧散列產生單元
300‧‧‧修補表單
310‧‧‧索引
320‧‧‧散列值
330‧‧‧修補檔案位址
510‧‧‧範圍
520‧‧‧範圍
530‧‧‧範圍
併同於隨附圖式,即可自上述詳細說明而更加顯知本發明之前揭與其他目的、特性和優點,其中:圖1顯示一可供施用本揭技術之修補系統具體實施例之組態的圖式;圖2為顯示一圖1修補伺服器具體實施例之建構的圖式;圖3為說明產生在圖2控制單元中執行之修補資料的程序之參考圖式;圖4為顯示一根據本揭技術的修補客戶端具體實施例之建構的圖式;圖5為說明一利用記憶體執行修補之具體實施例的參考圖式;圖6為說明一利用暫時記憶體執行修補之具體實施例的參考圖式;圖7為說明一由圖4修補客戶端執行之修補方法具體實施例的流程圖;圖8為說明另一由圖4修補客戶端執行之修補方法具體實施例的流程圖;圖9為說明又另一由圖4修補客戶端執行之修補方法具體實施例的流程圖;以及圖10為說明再另一由圖4修補客戶端執行之修補方法具體實施例的流程圖。
100‧‧‧修補伺服器
110‧‧‧通訊單元
120‧‧‧記憶體
130‧‧‧散列產生單元
140‧‧‧修補資料儲存單元
150‧‧‧控制單元
160‧‧‧客戶端管理單元

Claims (15)

  1. 一種修補方法,該修補方法可在修補客戶端上執行,該修補客戶端可連接至修補伺服器並且含有儲存裝置及記憶體,該修補方法包含下列步驟:(a)存取該修補伺服器並且自該修補伺服器接收修補資料;(b)計算該記憶體的可獲用空間;(c)若該修補資料的大小為小於或等於該記憶體的可獲用空間,則利用該記憶體的可獲用空間以執行修補處理;以及(d)若該修補資料的大小為大於該記憶體的可獲用空間,則將具有對應於該修補資料大小之容量的暫時記憶體配置予該儲存裝置,並且利用該所配置暫時記憶體以執行修補處理。
  2. 如申請專利範圍第1項所述之修補方法,其中該修補資料包含對於至少一修補檔案的散列值。
  3. 如申請專利範圍第1項所述之修補方法,其中步驟(b)包含:(b1)檢查該記憶體的目前可獲用空間;(b2)計算在一特定時間內應予返回的記憶體空間;以及(b3)藉由加總該目前可獲用空間和該應予返回記憶體空間來計算該記憶體的可獲用空間。
  4. 如申請專利範圍第3項所述之修補方法,其中步驟(b2) 包含如下步驟,即藉由將該應予返回記憶體空間乘以與該應予返回記憶體空間之期望返回時間成正比的機率值來計算在該特定時間內應予返回的記憶體空間。
  5. 如申請專利範圍第1項所述之修補方法,其中步驟(c)包含下列步驟:(c-1)將該記憶體的可獲用空間分割成對於原始檔案、修補資料及修補檔案的第一至第三範圍,然後將該等第一至第三範圍分別地配置予該原始檔案、該修補資料及該修補檔案;(c-2)將該原始檔案及該修補資料分別地載入於該第一及該第二範圍上;以及(c-3)利用該等所載入原始檔案及修補資料在該第三範圍內產生該修補檔案。
  6. 如申請專利範圍第5項所述之修補方法,其中步驟(c-2)包含下列步驟,即利用不同的記憶體載入方法以載入該原始檔案及該修補資料。
  7. 如申請專利範圍第5項所述之修補方法,其中步驟(c)進一步包含下列步驟:檢查是否既已成功地執行步驟(c-2);以及若在特定資料中出現錯誤,則僅再度地載入該特定資料。
  8. 如申請專利範圍第5項所述之修補方法,其中步驟(c-3)包含:分析該修補資料中所含有的修補表單;以及 將該原始檔案至少一部份與該待予修補的原始檔案至少一部份加以區分。
  9. 如申請專利範圍第1項所述之修補方法,其中步驟(d)包含如下步驟,即根據輸出緩衝器記憶體貯池方法利用所配置的暫時記憶體執行修補處理。
  10. 如申請專利範圍第1項所述之修補方法,其中步驟(d)包含下列步驟:(d1)計算該原始檔案中待予改變之資料的大小;以及(d2)配置與該所算得資料大小相對應之容量的暫時記憶體。
  11. 一種修補伺服器,該修補伺服器係連接至修補客戶端並且提供修補資料,該修補伺服器含有:記憶體;散列值產生單元,此者係經組態設定以產生對於所收資料的至少一散列值;以及控制單元,此者係經組態設定以將原始檔案及修補檔案載入至該記憶體內,以控制該散列產生單元,故而該散列產生單元對所載入的原始檔案與所載入的修補檔案進行比較,並且產生對於差異的至少一散列值,以產生含有該所產生散列值的修補表單;以及產生含有該所產生修補表單的修補資料。
  12. 如申請專利範圍第11項所述之修補伺服器,進一步包含:有關該修補資料的資訊,其中含有關於該修補資料之 修補版本的資訊、關於該修補資料之總體大小的資訊和關於該修補資料內所含之複數個檔案各者的大小之資訊的至少其中一者;以及修補資料儲存單元,此者係經組態設定以儲存該修補資料。
  13. 一種修補客戶端,該修補客戶端能夠利用記憶體及儲存裝置,而且存取修補伺服器、接收修補資料和執行修補處理,該修補客戶端含有:控制單元,此者係用以對該所收修補資料的大小與該記憶體的可獲用空間進行比較;若該記憶體的可獲用空間等於或大於該所接收修補資料的大小,則利用該記憶體來執行修補處理;以及若該記憶體的可獲用空間小於該所接收修補資料的大小,則將具有對應於該修補資料大小之容量的暫時記憶體配置予該儲存裝置,然後利用該所配置暫時記憶體來執行修補處理。
  14. 如申請專利範圍第13項所述之修補客戶端,其中若該記憶體的可獲用空間等於或大於該所接收修補資料的大小,則該控制單元將該記憶體的可獲用空間分割成至少兩個範圍,將原始檔案及修補資料載入至個別的所分割範圍上,並且執行修補處理。
  15. 如申請專利範圍第13項所述之修補客戶端,其中若該記憶體的可獲用空間小於該所收修補資料的大小,則該控制單元比較原始檔案的大小與該修補資料的大小;事先地測量該原始檔案中待予改變之至少一部份的大小;以及 將具有對應於該所測得大小之容量的暫時記憶體配置予該儲存裝置。
TW101134887A 2011-12-30 2012-09-24 使用記憶體和暫時記憶體的修補方法及使用其之修補伺服器和客戶端 TW201327168A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110147740A KR101246360B1 (ko) 2011-12-30 2011-12-30 메모리 및 임시 메모리를 이용한 패치 방법 및 그를 이용한 패치 서버, 패치 클라이언트

Publications (1)

Publication Number Publication Date
TW201327168A true TW201327168A (zh) 2013-07-01

Family

ID=47728119

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101134887A TW201327168A (zh) 2011-12-30 2012-09-24 使用記憶體和暫時記憶體的修補方法及使用其之修補伺服器和客戶端

Country Status (4)

Country Link
KR (1) KR101246360B1 (zh)
CN (1) CN102945170A (zh)
TW (1) TW201327168A (zh)
WO (1) WO2013100302A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002166304A (ja) * 2000-11-30 2002-06-11 Ngk Spark Plug Co Ltd スローアウェイバイト
US9780938B2 (en) * 2015-06-25 2017-10-03 Intel IP Corporation Patch download with improved acknowledge mechanism
CN107113307B (zh) 2015-11-18 2019-10-01 深圳市大疆创新科技有限公司 外接设备的管理方法、装置、系统以及存储器、无人机
CN107944021B (zh) * 2017-12-11 2021-06-18 北京奇虎科技有限公司 文件替换方法、装置及终端设备
CN110109695B (zh) * 2019-04-17 2021-08-27 华为技术有限公司 补丁方法、相关装置及系统
CN111179913B (zh) * 2019-12-31 2022-10-21 深圳市瑞讯云技术有限公司 一种语音处理方法及装置
CN112788384A (zh) * 2021-02-07 2021-05-11 深圳市大鑫浪电子科技有限公司 无线数字电视投屏方法、装置、计算机设备及存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030182414A1 (en) * 2003-05-13 2003-09-25 O'neill Patrick J. System and method for updating and distributing information
JP2003150396A (ja) * 2001-11-12 2003-05-23 Casio Comput Co Ltd 情報処理装置及びパッチ処理方法
EP1632848A1 (en) * 2004-09-06 2006-03-08 Irdeto Access B.V. Method of providing patches for software
KR100670797B1 (ko) * 2004-12-17 2007-01-17 한국전자통신연구원 보조 저장장치가 없는 환경에서 실시간 패치 장치 및 그방법
JP2008198060A (ja) 2007-02-15 2008-08-28 Seiko Epson Corp 情報処理装置、パッチコード実装システム、電子機器及びパッチコードの実装方法
US20100131698A1 (en) * 2008-11-24 2010-05-27 Tsai Chien-Liang Memory sharing method for flash driver
CN102215479B (zh) * 2011-06-22 2018-03-13 中兴通讯股份有限公司 升级包下载及安装的方法、服务器及系统

Also Published As

Publication number Publication date
WO2013100302A1 (en) 2013-07-04
KR101246360B1 (ko) 2013-03-22
CN102945170A (zh) 2013-02-27

Similar Documents

Publication Publication Date Title
TW201327168A (zh) 使用記憶體和暫時記憶體的修補方法及使用其之修補伺服器和客戶端
US10545792B2 (en) Hashing data-processing steps in workflow environments
US10713210B2 (en) Distributed self-directed lock-free RDMA-based B-tree key-value manager
US10789062B1 (en) System and method for dynamic data deduplication for firmware updates
US20190087450A1 (en) Verifying data consistency
US9798731B2 (en) Delta compression of probabilistically clustered chunks of data
US9864685B2 (en) Method and system for cache tiering
US20160093397A1 (en) Method and system for improving flash storage utilization using read-threshold tables
US10996993B2 (en) Adaptive work distribution in distributed systems
US9116904B2 (en) File system operation on multi-tiered volume
CN111194437B (zh) 使用存储中代码执行的数据处理卸载
US9535925B2 (en) File link migration
US10346150B2 (en) Computerized system and method for patching an application by separating executables and working data using different images
US10909086B2 (en) File lookup in a distributed file system
JP7088897B2 (ja) データアクセス方法、データアクセス装置、機器及び記憶媒体
CN111049889B (zh) 一种静态资源上传方法、装置、集成服务器和系统
CN115344284A (zh) 自动驾驶软件升级方法、装置、存储介质及计算机设备
US9588884B2 (en) Systems and methods for in-place reorganization of device storage
US10884986B2 (en) Analyzing and correcting corruption which caused filesystem checker failure so that the filesystem checker will run without error
JP6812826B2 (ja) 格納方法、格納装置及び格納プログラム
US9542120B2 (en) Systems and methods for processing instructions while repairing and providing access to a copied volume of data
JP2009282604A (ja) 重複データ排除システム、重複データ排除方法及び重複データ排除プログラム
KR102456017B1 (ko) 응용 프로그램간 파일 공유 장치 및 방법
US10282243B2 (en) Performance enhancement for platform data dump collection
US12013774B2 (en) Verification of core file debugging resources