Upload
bash0c7
View
2.392
Download
3
Embed Size (px)
DESCRIPTION
2009-07-17 RubyKaigi2009 LightningTalks
Citation preview
“Good for you. Good for me. Mmm, good.”
Key-Value StoreFor Local Environment
誰でも使える技術で使えるローカル環境向けKey-Value Store
こしば としあき
mostimportant
most important
Good for you. Good for me. Mmm, good.
俺に良し
お前に良し
みんなに良し
about me
about me
TOSHIAKIkoshiba
こしば としあき
twitter:bash0C7
hatenaid:bash0C7
about me
• RubyKaigi2009 実行委員– 受付/オペレーション担当
• 東京Ruby会議01 スピーカー
–「オフィスで踏み出すRubyの世界」
about me
• 最近の趣味–プロジェクトを設計すること
• 昼の仕事–ソフトウェア開発
• 金融業/運輸業 適用業務システム開発
– IBM COBOL on CICS
–MFCOBOL on MTP
–RPG on AS/400
• その他、Web、開発ツール開発
–社員の提案・不満の収集窓口
about me
•IBM COBOL on CICS
•MFCOBOL on MTP
•RPG on AS/400
outline
outline
Ruby Script
This KVS
User
Entity Layer
Rich Client(GUI)
local file
requirement
requirement
• store hash
• business person integrate
• on memory running
• without Web Application
• max_size < 1,000,000
design
design
This KVS
<<Entity>>middle ware
Rich Client(GUI)
API
local file
implement
implement
This KVS Class
XLS_KVS
Win32OLE
<<Entity>>Microsoft Excel
<<Presentation>>Microsoft Excel
COM API
Excel Workbook
concealedInternal processing
Microsoft Excel
Entity & Presentation
feature
feature
• store key-value
• on memory running
• edit stored values
storekey-values
store key-value
defined same method as "Hash"–[](key)
–store(key, value)
–delete(key)
store key-value – find(1)
YAML.load(@app.WorksheetFunction.VLookup(YAML.dump(key),
@sheet.Range(KEYVALUE_COLS), 2, false ))
store key-value – find(2)
@sheet.range(KEY_COLS).Find(YAML.dump(key),
@app.ActiveCell,
-4163, #xlValues,
1, #xlWhole,
1, #xlByRows,
1, #xlNext,
true,
false)
store key-value – insert
get tail row offset in worksheet
max_row = @sheet.UsedRange.Row + @sheet.UsedRange.Rows.count
@sheet.range("A#{max_row}").value =YAML.dump(key)
@sheet.range("B#{max_row}").value =YAML.dump(value)
store key-value – update
range = find(key)
range.offset(0, 1).value = YAML.dump(value)
store key-value - delete
target_row = find(key).Row
sheet.Range("#{target_row}:#{target_row}").Delete (-4162)
on memoryrunning
on memory running
• if call XLS_KVS#new–create XLS_KVS::Hash instance
–lunch Microsoft Excel
• if call XLS_KVS::Hash#Close–save&close Excel Workbook
–unload Microsoft Excel
editstored values
edit stored values
kvs = XLS_KVS.load(@xls_file, 1, false)
kvs.store(1, [Time.now, 'new running', 19])
kvs.store(2, [Time.now, 'I am Koshiba', 9])
kvs.store(3, self)
edit stored values
kvs = XLS_KVS.load(@xls_file, 1, false)
kvs.store(1, [Time.now, 'new running', 19])
kvs.store(2, [Time.now, 'I am Koshiba', 9])
kvs.store(3, self)
edit directly!
edit directly!
edit stored values
kvs = XLS_KVS.load(@xls_file, 1, false)
kvs.store(1, [Time.now, 'new running', 19])
kvs.store(2, [Time.now, 'I am Koshiba', 9])
kvs.store(3, self)
Excel is usefulfor many people!engineers,business personsstudents,my mother, etc
edit stored values
Microsoft Excel is
many people's friend
summary
summary
•Ruby is programmer's friend
summary
•Ruby is programmer's friend
•Excel is many people's friend
summary
•Ruby is programmer's friend
•Excel is many people's friend
•Ruby × Excel =everyone's friend
"everyone's friend"Ruby × Excel
XLS_KVSKey-Value Store Library
coming soon!
Thank youfor
listening.
ご清聴ありがとうございました