Libelektra: YAJL : ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋งˆ์šดํŠธ ์ง€์  ๋ฐ”๋กœ ์•„๋ž˜์— ๊ฐ’์„ ์ €์žฅํ•˜์ง€ ์•Š์Œ

์— ๋งŒ๋“  2018๋…„ 07์›” 27์ผ  ยท  17์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ElektraInitiative/libelektra

๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋Š” ๋‹จ๊ณ„

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 ํ…์ŠคํŠธ๋ฅผ ์ธ์‡„ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ๊ฒฐ๊ณผ

๋งˆ์ง€๋ง‰ ๋ช…๋ น์€ ๋นˆ ์ค„์„ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ ์ •๋ณด

  • Elektra ๋ฒ„์ „ : master
  • ์šด์˜์ฒด์ œ : macOS 10.13.6
bug good first issue usability

๋ชจ๋“  17 ๋Œ“๊ธ€

๋ฌธ์ œ๋ฅผ ์‹ ๊ณ  ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ด๋Ÿฌํ•œ 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 ๋ชจ๋“ˆ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ํ…Œ์ŠคํŠธ? (์•„๋ž˜ ์ฐธ์กฐ)

๊ทธ๊ฒŒ ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ํ•ด๊ฒฐ์ฑ…์ด๋ผ๋ฉด ๋จผ์ € ์ฒดํฌ์ธํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ์–ด๋–ค ๊ฒƒ์ด ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ์†”๋ฃจ์…˜์ธ์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค.

  • PR์„ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค (๊ทธ๋Ÿฌ๋ฉด ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์‚ฌ๋ก€๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค).
  • ํ…Œ์ŠคํŠธ ๋ฐ ํ˜„์žฌ ๊ตฌํ˜„ํ•˜๋ ค๋Š” ๋™์ž‘์„ ์˜ˆ์ œ๋กœ ์„ค๋ช…

์ด ์˜ˆ์ œ๋Š” yajl๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ญ”๊ฐ€๋ฅผ ๋†“์น˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”,์ด ์˜ˆ๋Š” {"", "some value"} ๊ฐ€ parentKey์˜ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ด์ƒ์ ์ธ ๋ฐฉ๋ฒ•์ด ์•„๋‹˜์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์ด์ œ RFC 7159๋ฅผ ์ง€์› ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
์ œ ์ƒ๊ฐ์—๋Š” ์ตœ์ƒ์œ„ ์ˆ˜์ค€์—์„œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚œ ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

ํ‚ค์—†์ด ํ…์ŠคํŠธ ๋งŒ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ yajl์„ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด์ œ ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

markus2330 picture markus2330  ยท  4์ฝ”๋ฉ˜ํŠธ

e1528532 picture e1528532  ยท  4์ฝ”๋ฉ˜ํŠธ

markus2330 picture markus2330  ยท  4์ฝ”๋ฉ˜ํŠธ

sanssecours picture sanssecours  ยท  3์ฝ”๋ฉ˜ํŠธ

mpranj picture mpranj  ยท  3์ฝ”๋ฉ˜ํŠธ