Key Value Store For Local Environment

Post on 24-May-2015

2.390 views 3 download

description

2009-07-17 RubyKaigi2009 LightningTalks

Transcript of Key Value Store For Local Environment

“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.

ご清聴ありがとうございました