kdb mount config.json user/tests/yajl yajl
kdb set user/tests/yajl 'This May Be the Year I Disappear'
kdb ls user/tests/yajl
#> user/tests/yajl
kdb get user/tests/yajl
๋ง์ง๋ง ๋ช
๋ น์ This May Be the Year I Disappear
ํ
์คํธ๋ฅผ ์ธ์ํด์ผํฉ๋๋ค.
๋ง์ง๋ง ๋ช ๋ น์ ๋น ์ค์ ์ธ์ํฉ๋๋ค.
๋ฌธ์ ๋ฅผ ์ ๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
์ด๋ฌํ JSON ๋ฌธ์๋ ์ด๋ป๊ฒ ์๊ฒผ์๊น ์? ๋ํ ๋ถ๋ชจ ํค๋ง ํฌํจํ๋ ๊ตฌ์ฑ ํ์ผ์ ํน์ํ ์๋ฏธ์ ๋ํ ๋ฌธ์๊ฐ ํ์ํฉ๋๋ค.
์ด๋ฌํ JSON ๋ฌธ์๋ ์ด๋ป๊ฒ ์๊ฒผ์๊น ์?
์ด ๊ฒฝ์ฐ ๋ฌธ์์๋ ๋ฌธ์์ด ๋ง ํฌํจ๋ฉ๋๋ค.
"This May Be the Year I Disappear"
. ๊ตฌ์ฑ ํ์ผ์ ์์ ๋ด์ฉ์ผ๋ก ๋ฐ๊พธ๋ฉด ํ๋ฌ๊ทธ์ธ์ ์ด๋ฏธ ์ฌ๋ฐ๋ฅธ ๊ฐ์ ์ฝ์ต๋๋ค.
printf '"This May Be the Year I Disappear"' > (kdb file user/tests/yajl/)
kdb get user/tests/yajl
#> This May Be the Year I Disappear
.
๊ทธ๋์ ์ธํธ ๋ง ์์ ํ๋ฉด ๋๋์? ์ด๊ฒ์ ์์ฃผ ์ฝ๊ฒ ๋ค๋ฆฝ๋๋ค!
๊ทธ๋์ ์ธํธ ๋ง ์์ ํ๋ฉด ๋๋์?
๋ด๊ฐ ๋งํ ์์๋ ํ ๊ทธ๋ ์ต๋๋ค.
๋๋ ์ด๊ฒ์ ๋์ ์ฒซ ๋ฒ์งธ ๋ฌธ์ ๋ก ๋ณผ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. @ markus2330์์ ์์ํด์ผ ํ ๋ช ๊ฐ์ง ์ง์นจ์ ์๋ ค ์ฃผ์๊ฒ ์ต๋๊น? ๊ฐ์ฌ.
์์ค๋ src / plugins / yajl / yajl_gen.c ๋ฐ src / plugins / yajl / yajl_parse.c์ ์์ต๋๋ค.
๋คํ์ค๋ฝ๊ฒ๋ @sanssecours ๋ ์คํ ๋ฆฌ์ง ํ๋ฌ๊ทธ์ธ์ ์๋ ๋ฐฉ์์ ์ค๋ช ํ๋ ํ๋ฅญํ ํํ ๋ฆฌ์ผ์ ์์ฑํ์ต๋๋ค (doc / tutorials /
๋น json ๋ฌธ์๋ฅผ ๋ง์ดํธํ๋ฉด ( {}
๋ง ํฌํจ๋จ์ ์๋ฏธ) kdb set system/lvas/cm/yajl "test"
ํธ์ถํ๋ฉด ๋ค์์ด ๋ฐ์ํฉ๋๋ค.
elektraYajlSet
๋ jus (system/lvas/cm/yajl,test)
๊ฐ์ด์๋ KeySet์ ์ฌ์ฉํ์ฌ ํธ์ถ๋ฉ๋๋ค.
elektraGenEmpty
๋ํ ํธ์ถ์์ ๋ ๋ฒ์งธ ์ ์ KeySet ํฌ๊ธฐ๊ฐ 1์ด๊ธฐ ๋๋ฌธ์ ์คํ๋ฉ๋๋ค.
parentKey๊ฐ Keyset์ ๋ง์ง๋ง ํค์ ๋์ผํ ๊ฐ์ ๊ฐ๊ธฐ ๋๋ฌธ์ strcmp๋ ์ฑ๊ณตํฉ๋๋ค.
๋น ๋งต์ด ์์ฑ๋๊ณ elektraYajlSet์ด ์ข ๋ฃ๋ฉ๋๋ค. ๋ฐ๋ผ์ ํจ์๋ ๊ฐ์ ๋ฐ์ง๋ง ๊ฐ์ผ๋ก ์๋ฌด๊ฒ๋ํ์ง ์์ต๋๋ค.
๋ฐ๋ผ์ ๋น ๋งต์ด ์์ฑ๋๋ ์ง์ ์์ @sanssecours here์์ ์ค๋ช
ํ๋๋ก json ๋ฌธ์์ ํค ๊ฐ์ ์ถ๋ ฅํ๋ ์ฝ๋๋ฅผ ์ถ๊ฐ ํ ์ ์์ต๋๋ค.
kdb get์ด ํด๋น ๊ฐ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฝ๊ณ kdb set system/lvas/cm/yajl/second "hi"
์ ๊ฐ์ ํธ์ถ์ด ์์๋๋ก ํค๋ฅผ ๋งคํํ๋ {"__dirdata": "test", "second": "hi"}
์ ๊ฐ์ json ๋ฌธ์๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ์๋ํฉ๋๋ค.
์ด ์๋ฃจ์
์ด ์๋ ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง json ๋ฌธ์๋ฅผ ์๋ฏธ ์ ๋์ผํ๊ฒ {"__dirdata": "test"}
์ง์ ์ค์ ํ ์ ์๋ค๋ฉด ๋ ๊น๋ ํ ๊ฒ์
๋๋ค.
ํ์ง๋ง ์ด๋ป๊ฒํด์ผํ ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ directoryvalue ํ๋ฌ๊ทธ์ธ์ด elektraYajlSet๊ฐ ์์ ํ๋ Keyset์ ์์ ํ๋ ๊ฒ์ ๋๋ค. ๋๋ elektraYajlSet์์ KeySet์ ์ง์ ์์ ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
@ markus2330์ ์ ์์ด ์์ต๋๊น?
์, ๋๋ ํ ๋ฆฌ ๊ฐ์ elektraYajlSet์ด ์์ ํ๋ KeySet์ ์์ ํฉ๋๋ค. ๊ทธ๋ฌ๋ parentKey ๋ง์๋ ๊ฒฝ์ฐ ( "๋๋ ํ ๋ฆฌ"๋ก ๊ฐ์ฃผ๋์ง ์์) ์ด๋ฐ ์ผ์ด ๋ฐ์ํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๋ฏธ ์๊ณ ์๋ฏ์ด ๋ถ๋ชจ ํค๋ง ์ค์ ํ๋ฉด elektraGenEmpty๊ฐ ์คํ๋๊ณ strcmp๊ฐ ์คํ๋ฉ๋๋ค. ์ฑ๊ณตํฉ๋๋ค.
๊ทธ๋ฌ๋ elektraGenEmpty๋ ์ด์ ๋ ์ด์ ์ฌ์ค์ด ์๋ ๋ช ๊ฐ์ง ๊ฐ์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค (๋๋ ํ ๋ฆฌ ๊ฐ์ด ์กด์ฌํ๊ธฐ ์ ์ ์์ฑ๋์์ต๋๋ค). ๊ทธ๋์ ๋ค๋ฅธ ๋ฒ๊ทธ๊ฐ ์์ต๋๋ค. ์ : # 2132
์ด ์๋ฃจ์ ์ด ์๋ ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง json ๋ฌธ์๋ฅผ ์๋ฏธ ์ ๋์ผํ๊ฒ { "__dirdata": "test"}๋ก ์ง์ ์ค์ ํ ์ ์๋ค๋ฉด ๋ ๊น๋ ํ ๊ฒ์ ๋๋ค.
{"": "test"}
๊ฐ ๋จ์ผ ๊ฐ์ ์ค๋ช
ํ๋ ์ต์ํ์ ๋ฌธ์๊ฐ ์๋๊น์? ์ด๊ฒ์ ๋ํ "๋ํ"ํ๋ฌ๊ทธ์ธ์ ๋์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
@sanssecours parentKeys ๋ฐ "๋น ํค"(%) (๋๋ ์ ์ด๋ ์ง๊ธ์ TODO)๋ฅผ ์ค๋ช ํ๊ธฐ ์ํด ์คํ ๋ฆฌ์ง ์์ต์๋ฅผ ํ์ฅ ํ ์ ์์ต๋๊น?
๋ํ parentKeys๋ฅผ ์ค๋ช ํ๊ธฐ ์ํด ์คํ ๋ฆฌ์ง ํํ ๋ฆฌ์ผ์ ํ์ฅ ํ ์ ์์ต๋๊น?
ํ๋ฌ๊ทธ์ธ ํํ ๋ฆฌ์ผ์ด ์ด๋ฏธ ์ค๋ช ํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
. ๋๋ ๋ถ๋ชจ ํค์ ๋ํด ํน๋ณํ ๊ฒ์ด ๋ฌด์์ธ์ง ๋ชจ๋ฆ ๋๋ค.
๋ฐ "๋น ํค"(%) (๋๋ ์ ์ด๋ ์ง๊ธ์ TODO)?
๋น ์ด์ ์ ๋ํด ์ฒ์ ๋ค์ ๊ธฐ ๋๋ฌธ์ ๋๋ ๊ทธ๊ฒ์ ํ ์ ์ ํ ์ฌ๋์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
์ฌ๊ธฐ @sanssecours๊ฐ ์ค๋ช ํ๋๋ก json ๋ฌธ์์ ํค ๊ฐ์ ์ถ๋ ฅํ๋ ์ฝ๋๋ฅผ ์ถ๊ฐ ํ ์ ์์ต๋๋ค.
์ ํจํ JSON ๋ฌธ์๋ ํญ์ ์ต์์ ์์ค์์ ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด๋ฅผ ํ์๋กํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด YAJL์ด ๋ ์ด์ ๋ฌธ์ ๋ฅผ ์ฒ๋ฆฌํ๋ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ํ์ ํ์ง ์์ต๋๋ค.
๋๋ ๋ถ๋ชจ ํค์ ๋ํด ํน๋ณํ ๊ฒ์ด ๋ฌด์์ธ์ง ๋ชจ๋ฆ ๋๋ค.
๋ํ ์ผ๋ถ ๊ตฌ์ฑ ํ์ผ ํ์์๋ ํค์์ด ๊ฐ์ ๊ฐ๋จํ ์ค๋ช ํ๋ ๋ฐฉ๋ฒ์ด ์๋ค๋ ์ ์ ์ ์ธํ๋ฉด ํน๋ณํ ์ ์ด ์์ต๋๋ค.
"๋น ํค"(%)
๋น ํค๋ฅผ ์ฌ์ฉํ๋ฉด {"root": {"": "something"}}
์ ๊ฐ์ ๋ฌธ์๋ฅผ ๋งคํ ํ ์ ์์ต๋๋ค. ํ์ฌ ์ด๊ฒ์ KeySet์ ์ด๋ป๊ฒ ๋งคํํฉ๋๊น?
์ ํจํ JSON ๋ฌธ์๋ ํญ์ ์ต์์ ์์ค์์ ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด๋ฅผ ํ์๋กํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด YAJL์ด ๋ ์ด์ ๋ฌธ์ ๋ฅผ ์ฒ๋ฆฌํ๋ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ํ์ ํ์ง ์์ต๋๋ค.
์ด๊ฒ์ ๋ณ๊ฒฝ๋ ๊ฒ ๊ฐ์ต๋๋ค : https://stackoverflow.com/questions/13318420/is-a-single-string-value-considered-valid-json
https://www.ietf.org/rfc/rfc7159.txt ์๋ "๊ฐ๋ง"ํ์ฉ๋จ์ ๋ณด์ฌ์ฃผ๋ ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ yajl์ด ์ด๊ฒ์ ์ง์ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค ... (yajl 2.1.0-2 + โโb3๋ Expected โ{โ but found โ"โ
์ค๋ฅ๋ฅผ ์์ฑํฉ๋๋ค)
RFC 7159์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ๋ค์์ ๋งคํ ํ ์ ์์ต๋๋ค.
"some value"
-> parent = "์ผ๋ถ ๊ฐ"
{"", "some value"}
-> ๋ถ๋ชจ / % = "์ผ๋ถ ๊ฐ์น"
๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ yajl์ ํด๊ฒฐํด์ผ ํ ๊ฒ์ ๋๋ค ... (๋ณ๊ฒฝ ๋ก๊ทธ๋ ๋ํ์ด ๊ธฐ๋ฅ์ด ๋์ค์ ์ถ๊ฐ๋์์์ ๋ํ๋ด์ง ์์ต๋๋ค).
๋น ํค๋ฅผ ์ฌ์ฉํ๋ฉด { "root": { "": "something"}}๊ณผ ๊ฐ์ ๋ฌธ์๋ฅผ ๋งคํ ํ ์ ์์ต๋๋ค. ํ์ฌ ์ด๊ฒ์ KeySet์ ์ด๋ป๊ฒ ๋งคํํฉ๋๊น?
YAML CPP๊ฐ์ด ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
kdb mount config.yaml user/tests/yaml yamlcpp
printf '{"root": {"": "something"}}' > "$(kdb file user/tests/yaml)"
kdb ls user/tests/yaml
#> user/tests/yaml/root/%
kdb get user/tests/yaml/root/%
#> something
. ๊ทธ๋๋ ๋น ํค์ ํ๋ฌ๊ทธ์ธ์ ์ ์ฉ ํ์ง ์์์ต๋๋ค . ์คํ ๋ฆฌ์ง ํ๋ฌ๊ทธ์ธ์์ ์ฌ๋ฐ๋ฅธ ๋ฌธ์์ด ๊ฐ ( ""
)์ ์ฌ์ฉํ์ฌ setBaseName
๋ฅผ ํธ์ถํ๋ ๊ฒ๋ง์ผ๋ก๋์ด ๊ธฐ๋ฅ์ ์ง์ํ ์ ์์ต๋๋ค.
์ด๊ฒ์ด ํน๋ณํ ์ฒ๋ฆฌ์์ด ๋ฐ๋ก ์๋ํ๋ค๋ ๊ฒ์ ๋ณด๋ ๋ฐ๊ฐ์ต๋๋ค : +1 :
@sanssecours ์ด์ RFC 7159๋ฅผ ์ง์ ํ์๊ฒ ์ต๋๊น? parentKey ๋ง ์ค์ ๋ ๊ฒฝ์ฐ ํ๋ฌ๊ทธ์ธ์ ๋ฌด์์ํฉ๋๊น?
์ด์ RFC 7159๋ฅผ ์ง์ ํ์๊ฒ ์ต๋๊น?
์ ์๊ฐ์๋ ์ต์์ ์์ค์์ ๋ชจ๋ ๋ฐ์ดํฐ ์ ํ์ ์ง์ํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
parentKey ๋ง ์ค์ ๋ ๊ฒฝ์ฐ ํ๋ฌ๊ทธ์ธ์ ๋ฌด์์ํฉ๋๊น?
ํค์์ด ํ ์คํธ ๋ง ์ ์ฅํฉ๋๋ค.
kdb mount config.yaml user/tests/yaml yamlcpp
kdb set user/tests/yaml value
kdb file user/tests/yaml | xargs cat
#> value
.
์ด ์ปค๋ฐ ์์ ์ต์์ ์์ค์ ๋ํ ํน์ ์ฒ๋ฆฌ๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
๊ทธ๊ฒ์ yajl ๋ชจ๋์ ํ
์คํธ๋ฅผ ๊นจ๋จ๋ฆฌ์ง ๋ง, ๋ด๊ฐ ๊ฐ๊ธฐ ์ ์ ๋จผ์ ์ฒดํฌ์ธํ๊ณ ์ถ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ฐ ์๊ฐ์ ํ ์ ํ๊ธฐ ์ ์ @ markus2330์ด ์์ฉ ๊ฐ๋ฅํ ์๋ฃจ์
์ด๋ผ๋ฉด?
์กฐ๊ธ ๋ ์์ธํ ์ค๋ช
ํ์๋ฉด : KeySet์ ํฌ๊ธฐ๊ฐ 1์ด๋ฉด ์ต์์ ํค๋ง ํฌํจ๋์ด ์์์ ํ์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ํด๋น ํค์ ๊ฐ์ ์์ฑํฉ๋๋ค. ๊ทธ๋ฌ๋์ด ๊ฒฝ์ฐ elektraGenOpenValue
๊ฐ ํธ์ถ๋์ง ์๋๋กํด์ผํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ํค๋ฅผ ๋ฌธ์์ด๋ก ์์ฑํ๊ธฐ ๋๋ฌธ์
๋๋ค.
YAML CPP๊ฐ์ด ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
...
์ด ์์ ๋ yajl๊ณผ ํจ๊ป ์๋ํฉ๋๋ค. ๋ด๊ฐ ๋ญ๊ฐ๋ฅผ ๋์น๊ณ ์์ต๋๊น?
yajl ๋ชจ๋์์ ํ ์คํธ๋ฅผ ์ค๋จํฉ๋๋ค.
์ด๋ค ํ ์คํธ? (์๋ ์ฐธ์กฐ)
๊ทธ๊ฒ ํ์ฉ ๊ฐ๋ฅํ ํด๊ฒฐ์ฑ ์ด๋ผ๋ฉด ๋จผ์ ์ฒดํฌ์ธํ๊ณ ์ถ์์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์ด๋ค ๊ฒ์ด ํ์ฉ ๊ฐ๋ฅํ ์๋ฃจ์ ์ธ์ง ํ์ธํ๋ ๊ฒ์ด ๋ ์ฝ์ต๋๋ค.
์ด ์์ ๋ yajl๊ณผ ํจ๊ป ์๋ํฉ๋๋ค. ๋ด๊ฐ ๋ญ๊ฐ๋ฅผ ๋์น๊ณ ์์ต๋๊น?
์๋์,์ด ์๋ {"", "some value"}
๊ฐ parentKey์ ๊ฐ์ ๋ํ๋ด๋ ์ด์์ ์ธ ๋ฐฉ๋ฒ์ด ์๋์ ๋ณด์ฌ์ค๋๋ค.
์ด์ RFC 7159๋ฅผ ์ง์ ํ์๊ฒ ์ต๋๊น?
์ ์๊ฐ์๋ ์ต์์ ์์ค์์ ๋ชจ๋ ๋ฐ์ดํฐ ์ ํ์ ์ง์ํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ ์ ์ ์ผ๋ก ๋์ํฉ๋๋ค.
ํค์์ด ํ ์คํธ ๋ง ์ ์ฅํฉ๋๋ค.
๋ฐ๋ผ์ yajl์ ์ฌ์ฉํ์ฌ ๋์ผํ๊ฒ ๊ตฌํํ๊ฒ ์ต๋๋ค.
์ด์ ์๋ฒฝํ๊ฒ ์๋ํฉ๋๋ค!