Libelektra: yajl : Elektra์˜ ๋ถ€์šธ์€ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2019๋…„ 04์›” 02์ผ  ยท  24์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ElektraInitiative/libelektra

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

kdb mount config.json user/tests/yajl yajl type
kdb set user/tests/yajl true
kdb setmeta user/tests/yajl type boolean
kdb set user/tests/yajl 1

kdb rm user/tests/yajl
kdb umount user/tests/yajl

์˜ˆ์ƒ ๊ฒฐ๊ณผ

์—ฌ์ „ํžˆ true ์€ true ๋ฐ 1 ์ด ๋™์ผํ•ด์•ผํ•˜๋ฏ€๋กœ ๊ตฌ์„ฑ ํŒŒ์ผ์— ์žˆ์Šต๋‹ˆ๋‹ค.

cat `kdb file user/tests/yajl`
#> true

์‹ค์ œ ๊ฒฐ๊ณผ

 Sorry, 1 warning was issued ;(
 Warning (#78):
        Description: Unknown or unsupported type found during streaming, assume key as string, type lost
        Ingroup: plugin
        Module: yajl
        At: /home/jenkins/workspace/libelektra_master-Q2SIBK3KE2NBEMJ4WVGJXAXCSCB77DUBUULVLZDKHQEV3WNDXBMA/libelektra/src/plugins/yajl/yajl_gen.c:166
        Reason: got boolean which is neither true nor false
        Mountpoint: user/tests/yajl
        Configfile: /home/markus/.config/config.json.26097:1554202289.309349.tmp
Set string to "1"
cat `kdb file user/tests/yajl`
#> "1"

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

  • Elektra ๋ฒ„์ „ : master

๊ตฌํ˜„ ํžŒํŠธ

yajl ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

  • [] Elektra์˜ "0"๋ฐ "1"๊ฐ’์„ JSON์˜ ๊ฑฐ์ง“ ๋ฐ ์ฐธ์œผ๋กœ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค.
  • ์ง€์›๋˜์ง€ ์•Š๋Š” ์œ ํ˜•์ด ๋ฐœ๊ฒฌ๋˜๋ฉด [] ์‹คํŒจํ•˜๊ณ  ์œ ํ˜• ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
bug lanc

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ํ‚ค๋„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์˜ˆ, ๊ณ„์•ฝ ํ‚ค ์„ธํŠธ์— ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ์ค„์€ YAML CPP๊ฐ€ type ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

https://github.com/ElektraInitiative/libelektra/blob/5519cb8066a096215a3701ca3d8c02fcebe54914/src/plugins/yamlcpp/yamlcpp.cpp#L44
.

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

@kodebach ๋Š” ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์ด "1"๋Œ€์‹  "true"๋กœ ์ •๊ทœํ™”๋˜๋„๋ก ์žฌ๊ตฌ์„ฑ ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

์•„๋‹ˆ์š” ์ด๊ฒƒ์€ ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ๋Š”์ง€ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค.

IMO ๊ทธ๊ฒƒ์€ ๋˜ํ•œ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ถ€์šธ์„ ๋‚˜ํƒ€๋‚ด๋Š” Elektra ๋ฐฉ์‹์€ 0 ๋ฐ 1 ์ž…๋‹ˆ๋‹ค. ์ €์žฅ ํ˜•์‹์ด ์œ ํ˜•์„ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ Elektra ํ‘œ์‹œ์—์„œ ์ €์žฅ ํ˜•์‹ ํ‘œ์‹œ๋กœ์˜ ๋ณ€ํ™˜์€ ์ €์žฅ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์˜ํ•ด ์ˆ˜ํ–‰๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ํ˜•์‹ X์˜ ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ Elektra์™€ ํ˜•์‹ X ์‚ฌ์ด์˜ ๋‹ค๋ฆฌ๊ฐ€๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ฐ€์น˜ ํšŒ๋ณต์ด ๋” ํฐ ๋ฌธ์ œ๊ฐ€ ์•„๋‹Œ๊ฐ€? ๋ณต์›์€ presetstorage ์—์„œ ์ˆ˜ํ–‰๋˜๋ฉฐ ๋ช…์‹œ ์ ์œผ๋กœ ์š”์ฒญํ•˜๋ฉด ๊ฐ’์„ ์„ค์ •ํ•  ๋•Œ ํ•ญ์ƒ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ํ‘œํ˜„์œผ๋กœ ๊ฐ’์ด ๋ณต์›๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์˜ˆ์ œ์—์„œ kdb set user/tests/yajl on ๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ yajl ํ”Œ๋Ÿฌ๊ทธ์ธ์€ on ๊ฐ’์„๋ฐ›์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์‹ค์ œ๋กœ ํ•„์š”ํ•œ ๊ฒƒ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ’์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๊ด€๊ณ„์—†์ด ๊ฐ’์ด ๋ณต์›๋˜๋Š” ํ‘œํ˜„์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋งค์šฐ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ˜„์žฌ ๋‹ค๋ฅธ ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ตฌ์„ฑ์„ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” yajl ์‚ฌ์šฉํ•  ๋•Œ ์—ฌ์ „ํžˆ type ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๊ฐ’์€ ํ•ญ์ƒ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ํ‘œํ˜„์œผ๋กœ ๋ณต์›๋ฉ๋‹ˆ๋‹ค.

JSON์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์œ ์ผํ•œ ํ”„๋ฆฌ์   ํ…Œ์ด์…˜์ด ์ฐธ / ๊ฑฐ์ง“์ด๋ฏ€๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ด๊ฒƒ์€ ๋ฌธ์ œ๊ฐ€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๋Š” yajl์„ ์‚ฌ์šฉํ•  ๋•Œ ์—ฌ์ „ํžˆ ์œ ํ˜•์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

yajl์ด ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์žฌ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ์„ฑ / ํ•„์š”๋ฅผ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ๋ฌธ์ œ๊ฐ€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ถ€์šธ์„ ๋‚˜ํƒ€๋‚ด๋Š” Elektra ๋ฐฉ์‹์€ 0๊ณผ 1์ž…๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ์ง€ ํ˜•์‹์ด ์œ ํ˜•์„ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ Elektra- ํ‘œํ˜„์—์„œ ์Šคํ† ๋ฆฌ์ง€ ํ˜•์‹์˜ ํ‘œํ˜„์œผ๋กœ์˜ ๋ณ€ํ™˜์€ ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์˜ํ•ด ์ˆ˜ํ–‰๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ, ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ ‘๊ทผ ๋ฐฉ์‹์˜ ์žฅ์ ์€ ์ค‘๊ฐ„ ํ”Œ๋Ÿฌ๊ทธ์ธ (์œ ํ˜•๊ณผ ์ €์žฅ์†Œ ์‚ฌ์ด)์ด ๋ถ€์šธ์˜ ์˜ฌ๋ฐ”๋ฅธ ํ‘œํ˜„์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋ฅผ ๋ฐ˜์˜ํ•˜๊ธฐ ์œ„ํ•ด ์œ„์˜ "๊ตฌํ˜„ ํžŒํŠธ"๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

@kodebach ๋˜ ๋‹ค๋ฅธ ์งˆ๋ฌธ : JSON์€ ์ด์ค‘ / ๋ถ€์šธ / ๋ฌธ์ž์—ด ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด 3 ๊ฐ€์ง€ ์œ ํ˜• ๋งŒ ํ—ˆ์šฉ๋œ๋‹ค๊ณ  ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ๋˜ํ•œ # 1092์— ์–ธ๊ธ‰ ๋œ JSON ์œ ํ˜•์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

JSON์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์œ ์ผํ•œ ํ”„๋ฆฌ์   ํ…Œ์ด์…˜์ด ์ฐธ / ๊ฑฐ์ง“์ด๋ฏ€๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ด๊ฒƒ์€ ๋ฌธ์ œ๊ฐ€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

JSON์—์„œ๋Š” ์„ ํƒํ•  ์ˆ˜ ์—†์ง€๋งŒ kdb set ์‚ฌ์šฉ์‹œ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ ํ˜•๊ณผ ์ €์žฅ ์‚ฌ์ด

์ˆœ์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผํ•ฉ๋‹ˆ๋‹ค. getstorage , type , [other], type , setstorage , ์œ ํ˜•๊ฐ„์— ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์—†์–ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ฐ ์ €์žฅ.

์ด๋ฅผ ๋ฐ˜์˜ํ•˜๊ธฐ ์œ„ํ•ด ์œ„์˜ "๊ตฌํ˜„ ํžŒํŠธ"๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

type ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์œผ๋ฉด kdb set user/tests/yajl on ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์—ฌ์ „ํžˆ ์žˆ์Šต๋‹ˆ๋‹ค.์ด ๊ฒฝ์šฐ type ๋Š” on ์„ setstorage์— ์ „๋‹ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ.

JSON์€ ์ด์ค‘ / ๋ถ€์šธ / ๋ฌธ์ž์—ด ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด 3 ๊ฐ€์ง€ ์œ ํ˜• ๋งŒ ํ—ˆ์šฉ๋œ๋‹ค๊ณ  ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ตฌ์„ฑ์„ ํ†ตํ•ด ํ—ˆ์šฉ๋˜๋Š” ์œ ํ˜•์„ ์ œํ•œํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

JSON์—์„œ ์„ ํƒํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ kdb ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kdb set ์—์„œ ์„ ํƒํ•œ ํ•ญ๋ชฉ์€ ํŒŒ์ผ ํ˜•์‹์ด ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ์–ตํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด kdb set user / tests / yajl on์ด ์œ ํ˜•์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์œผ๋ฉด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.์ด ๊ฒฝ์šฐ ์œ ํ˜•์€ ๊ฐ’์„ setstorage ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์ „๋‹ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ ์™œ "1"๋กœ ๋ณ€ํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

๊ตฌ์„ฑ์„ ํ†ตํ•ด ํ—ˆ์šฉ๋˜๋Š” ์œ ํ˜•์„ ์ œํ•œํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์–ด์ฉŒ๋ฉด ๊ทธ๊ฒƒ์€ ์ค‘์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋˜๋Š” ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์œ ํ˜•์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ‘œ์‹œ๋˜๋ฉด ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์Šคํ† ๋ฆฌ์ง€ ํŠœํ† ๋ฆฌ์–ผ์ด ์œ ํ˜•์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ•˜๋ฉด โ€‹โ€‹์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค ( @sanssecours ?)

์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋˜๋Š” ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์œ ํ˜•์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ‘œ์‹œ๋˜๋ฉด ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚ด๊ฐ€ ์•Œ๊ธฐ๋กœ๋Š” ์•„๋‹ˆ์•ผ. ์‚ฌ์šฉ์ž๋Š” ๋ฌธ์ œ๊ฐ€ type ์‚ฌ์šฉ์ด ์•„๋‹ˆ๋ผ yajl ์‚ฌ์šฉ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ธฐ ๋•Œ๋ฌธ์— ์ €์žฅ์†Œ ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์ด ๋” ๋‚˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ ์™œ "1"๋กœ ๋ณ€ํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

์ •๊ทœํ™” / ๋ณต์› ์ ˆ์ฐจ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์— ์„ค๋ช… ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์‚ฌ๋ก€ 1 : ํ‚ค๊ฐ€ kdbGet ์กด์žฌํ•˜๊ณ  kdbGet ์—์„œ kdbSet ์‚ฌ์ด์—์„œ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
    ์ด๊ฒƒ์€ ๊ฐ€์žฅ ์‰ฝ๊ณ  ๋ช…๋ฐฑํ•œ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ๊ฐ’์€ kdbGet ์—์„œ ์ •๊ทœํ™”๋˜๊ณ  ์›๋ž˜ ๊ฐ’์€ kdbSet ์—์„œ ๋ณต์›๋˜๋ฏ€๋กœ ๊ธฐ๋ณธ ์Šคํ† ๋ฆฌ์ง€ ํŒŒ์ผ์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (๋ฌธ์ œ์˜ ํ‚ค๋กœ).
  • ์‚ฌ๋ก€ 2 : ํ‚ค๊ฐ€ kdbGet ์กด์žฌํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
    ์—ฌ๊ธฐ์„œ ๊ฐ’์„ ์ •๊ทœํ™”ํ•˜์—ฌ ์œ ํ˜•์„ ํ™•์ธํ•œ ๋‹ค์Œ ์ฆ‰์‹œ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ๋ก€ 3 : ํ‚ค๊ฐ€ kdbGet ์— ์žˆ์—ˆ์ง€๋งŒ ํ•ด๋‹น ๊ฐ’์ด kdbGet ์—์„œ kdbSet ์‚ฌ์ด์—์„œ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    ์ด๊ฒƒ์€ Case 2์™€ ๋™์ผํ•˜๊ฒŒ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. keySetString ๋Š” origvalue ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐํ•˜๋ฏ€๋กœ type ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ํ‚ค๊ฐ€ kdbGet ์กด์žฌํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. .

ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ๊ฐ€ ํ•˜๋‚˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ด๋ฏธ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค (์ •๋ณด / ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์Šต๋‹ˆ๋‹ค).

https://github.com/ElektraInitiative/libelektra/blob/6e609f7e78039db188e32d32d2ea13908c0abe38/src/plugins/type/README.md#L84 -L88

yajl ๊ฐ€ ๋ชจ๋“  ๋ถ€์šธ ํ‚ค์— ๋Œ€ํ•ด check/boolean/true = true ๋ฐ check/boolean/false = false ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๋ฉด ๋ชจ๋“  ์ •๊ทœํ™” ๋ฐ ๋ณต์›์ด ์˜๋„ ํ•œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด type ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋ถ€์šธ ํ‚ค (get ๋ฐ set์—์„œ)์— ๋Œ€ํ•ด true , 1 , false ๋ฐ 0 ๊ฐ’์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•ญ์ƒ true ๋˜๋Š” false ๋ฅผ setstorage ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. yajl ํ”Œ๋Ÿฌ๊ทธ์ธ์€ get์—์„œ ์—ฌ์ „ํžˆ 0 / 1 ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผํ•˜๋ฉฐ true / false ๋ฐ 0 / 1 ๋กœ ์„ค์ •๋˜์–ด type ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฐ ์‹์œผ๋กœ ๋‚ด๋ ค ๊ฐ€๊ธฐ๋กœ ์„ ํƒํ•˜๋ฉด ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋งˆ์šดํŠธํ•˜๋ฉด ๋” ์ด์ƒ kdb set ๋ถ€์šธ ํ‚ค์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์„œํ™”๋ฅผ ์ž˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. yajl ์€๋ฐ€ํžˆ ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ ๋ชจ๋“  ๊ตฌ์„ฑ์„ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์•Œ๊ธฐ๋กœ๋Š” ์•„๋‹ˆ์•ผ. ์ €์žฅ์†Œ ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์ด ๋” ๋‚˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์‚ฌ์šฉ์ž๋Š” ๋ฌธ์ œ๊ฐ€ ์œ ํ˜• ์‚ฌ์šฉ์ด ์•„๋‹ˆ๋ผ yajl ์‚ฌ์šฉ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋ฐ”๋กœ ๊ทธ๊ฑฐ์ฃ .

์ •๊ทœํ™” / ๋ณต์› ์ ˆ์ฐจ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์— ์„ค๋ช… ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
[...] (์ •๋ณด / ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์Šต๋‹ˆ๋‹ค)

์ž์„ธํ•œ ์„ค๋ช… ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ๋ฌธ์„œ์— ์ถ”๊ฐ€ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋” ์ด์ƒ kdb ์„ธํŠธ์˜ ๋ถ€์šธ ํ‚ค์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

"config / needs"๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด yajl์€ "check / boolean / true = true ๋ฐ check / boolean / false = false"๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ ํ˜•์ด ๋งˆ์šดํŠธ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๊ตฌํ˜„ ํžŒํŠธ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

"config / needs"๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด yajl์€ "check / boolean / true = true ๋ฐ check / boolean / false = false"๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ ํ˜•์ด ๋งˆ์šดํŠธ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜คํ•ดํ•˜์…จ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ check/boolean/true ๋ฐ check/boolean/false ์€ (๋Š”) type ๊ตฌ์„ฑ์ด ์•„๋‹Œ ๊ฐœ๋ณ„ ํ‚ค์— ๋Œ€ํ•œ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋กœ ์„ค์ •๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ๋‚ด์—์„œ ์ผ๋ฐ˜์ ์ธ ์ง€์›์„ ์ถ”๊ฐ€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค (์ถฉ๋ถ„ํžˆ ์‰ฌ์›€).

ํ™•์ธ. ์•„๋‹ˆ์š”, ๊ทธ๋Œ€๋กœ ๋‘ก๋‹ˆ๋‹ค. yajl ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ๋ชจ๋“  ๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ๋” ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค.
๊ตฌํ˜„ ํžŒํŠธ๋กœ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

yajl ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

  • [] Elektra์˜ "0"๋ฐ "1"๊ฐ’์„ JSON์˜ ๊ฑฐ์ง“ ๋ฐ ์ฐธ์œผ๋กœ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค.
  • ์ง€์›๋˜์ง€ ์•Š๋Š” ์œ ํ˜•์ด ๋ฐœ๊ฒฌ๋˜๋ฉด [] ์‹คํŒจํ•˜๊ณ  ์œ ํ˜• ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

@sanssecours ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ ํŠœํ† ๋ฆฌ์–ผ์—์ด ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

yajl ๋˜ํ•œ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” check/boolean/true = true ๋ฐ check/boolean/false = false ์™€ ๊ฐ ํ‚ค์— type = boolean . ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์œ„์—์„œ ์–ธ๊ธ‰ ํ•œ kdb set /some/key on ๋Œ€ํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

yajl๋„ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

yajl์ด ํ•ญ์ƒ ๋ถ€์šธ์— ๋Œ€ํ•ด "0"๊ณผ "1"๋งŒ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

์˜ˆ, ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๊ฐ€ kdbGet ์ดํ›„์— ํ‚ค ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. yajl ๋Š” ๊ทธ๊ฒƒ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์–ด์จŒ๋“  type ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋ณ€๊ฒฝํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ƒˆ ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ณ  ์†”๋ฃจ์…˜์ด ์ž‘๋™ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ •๊ทœํ™”๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋„๋ก kdbSet ๊ฒฝ๋กœ์—์„œ ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋‘ ๋ฒˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๊นŒ? ์ด์Šˆ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”. # 2582 yajl (๋˜๋Š” ์‚ฌ์šฉ์ž)๋Š” type ๋Œ€ํ•œ ๊ตฌ์„ฑ์— ๋‹ค์Œ์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค.

  • booleans ๋ฐฐ์—ด ๋ฐ boolean/restore = #1
    ๋˜๋Š”
  • #X ๋ฐ boolean/restore = #X ์œ„์น˜์— #X "true" ๋ฐ "false" ๊ฐ€ ํฌํ•จ ๋œ booleans ๋ฐฐ์—ด์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ ํ•˜์ง€๋งŒ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์„ค์ • ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๋‚˜์š” type=boolean ๋ฐ type/boolean/restoreas=none ๋‚ด๊ฐ€์—์„œ ๋ถ€์šธ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋Š” ํ‚ค์— elektraYajlGet ? ๊ทธ๋Ÿฐ ๋‹ค์Œ elektraYajlSet 1 ๋˜๋Š” 0์˜ ๊ฐ’์œผ๋กœ์ด ํ‚ค๋ฅผ ๋ฐ›์•„์•ผํ•ฉ๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๊นŒ?

ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ์‚ฌ์šฉ์ž๊ฐ€ ์ œ๊ณต ํ•œ ๊ฐ’์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

# kdb mount conf.json user/tests/yajl yajl type
# kdb set user/tests/yajl 1
Set string to "1"
# kdb setmeta user/tests/yajl type boolean
# kdb set user/tests/yajl false
Sorry, 1 warning was issued ;(
    Sorry, module yajl issued the warning C03200:
    Validation Semantic: Got boolean which is neither true nor false
Set string to "false"
Case 2: The Key didn't exist in `kdbGet`
  Here we normalize the value to verify the type and then restore it immediately.

๋ฟก๋ฟก
์ด ๊ฒฝ์šฐ type/boolean/restoreas=none ๊ฒฝ์šฐ์—๋„ ๊ฐ’์ด ํ•ญ์ƒ ๋ณต์› ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

/boolean/restoreas ์€ (๋Š”) ๊ฐœ๋ณ„ ํ‚ค์— ๋Œ€ํ•œ ๋ฉ”ํƒ€ ํ‚ค๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ „์ฒด ๋งˆ์šดํŠธ ์ง€์ ์— ์‚ฌ์šฉ๋˜๋Š” type ํ”Œ๋Ÿฌ๊ทธ์ธ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ๊ตฌ์„ฑ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค.

src/pluigns/yajl/README.md ํ—ค๋”์— config/needs = type/boolean/restoreas=none ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. (์ ์–ด๋„ kdb mount ๋ฅผ ํ†ตํ•œ ๋งˆ์šดํŠธ ์šฉ)

- infos/config/needs = type/boolean/restoreas=none ์ถ”๊ฐ€๋Š” ์ปดํŒŒ์ผ๋Ÿฌ ์˜ค๋ฅ˜ ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

/elektra/build/src/plugins/yajl/readme_yajl.c:11:55: error: expected โ€˜)โ€™ before โ€˜keyNewโ€™
 "- infos/config/needs = type/boolean/restoreas=none\n"
                                                       ^
                                                       )

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ํ‚ค๋„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‹ค๋ฅธ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

infos/config/needs ์ด ์•„๋‹ˆ๋ผ config/need ์ด์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

README์˜ ํ—ค๋”๋Š” keyNew ํ–‰์œผ๋กœ ๋ฐ”๋€Œ๊ณ  ํ”Œ๋Ÿฌ๊ทธ์ธ get ๋ฉ”์†Œ๋“œ์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ž๋™์œผ๋กœ ๋ฌธ์„œ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— README๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜๋™์œผ๋กœ ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ํ‚ค๋„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์˜ˆ, ๊ณ„์•ฝ ํ‚ค ์„ธํŠธ์— ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ์ค„์€ YAML CPP๊ฐ€ type ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

https://github.com/ElektraInitiative/libelektra/blob/5519cb8066a096215a3701ca3d8c02fcebe54914/src/plugins/yamlcpp/yamlcpp.cpp#L44
.

๋‘˜ ๋‹ค ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

# 3012์—์„œ yajl ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋™์ž‘์„ํ•ฉ๋‹ˆ๋‹ค.

์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ ์‚ฌ์šฉ

kdb mount conf.json user/tests/yajl yajl type
kdb set user/tests/yajl 1
kdb get user/tests/yajl
#> 1
kdb setmeta user/tests/yajl type boolean
kdb set user/tests/yajl on
kdb get user/tests/yajl
#> 1
kdb set user/tests/yajl/subkey disable
kdb setmeta user/tests/yajl/subkey type boolean
kdb get user/tests/yajl/subkey
#> 0

cat `kdb file user/tests/yajl`
{
    "___dirdata": true,
    "subkey": true
}

์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์—†์ด

yajl ํ”Œ๋Ÿฌ๊ทธ์ธ์€ get์—์„œ ์—ฌ์ „ํžˆ 0 / 1 ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผํ•˜๋ฉฐ true / false ๋ฐ 0 / 1 ๋กœ ์„ค์ •๋˜์–ด type ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

kdb mount conf.json user/tests/yajl yajl
kdb set user/tests/yajl 1
kdb getmeta user/tests/yajl type
#> boolean
kdb set user/tests/yajl false
kdb getmeta user/tests/yajl type
#> boolean
kdb get user/tests/yajl
#> 0

# Without the type plugin, 'on' is mapped to a string and a warning is emitted.
kdb set user/tests/yajl on
#> RET: 2
* fail with type errors if non-supported types are found

์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋งˆ์šดํŠธ๋˜๊ฑฐ๋‚˜ ๋งˆ์šดํŠธ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๊นŒ?

์ด ๋งˆ์ง€๋ง‰ ๊ฒฝ์šฐ์—๋Š” ์ง€๊ธˆ๊นŒ์ง€ ๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

 Sorry, 1 warning was issued ;(
    Sorry, module yajl issued the warning C03200:
    Validation Semantic: Got boolean which is neither 1 or true nor 0 or false

์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์—†์œผ๋ฉด ์œ ํ˜• ๊ฒ€์‚ฌ๊ฐ€ ์—†์–ด์•ผํ•˜๋ฏ€๋กœ ์—ฌ์ „ํžˆ ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ๋Š” "1"๋˜๋Š” "0"์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•ด ๊ฒฝ๊ณ  (๋˜๋Š” ์‹คํŒจ)ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ "true", "false"๋Š” Elektra์˜ ๋ถ€์šธ์ด ์•„๋‹™๋‹ˆ๋‹ค.

Imho, yajl ํ”Œ๋Ÿฌ๊ทธ์ธ์—๋Š” ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•œ "ํ•„์ˆ˜"์ข…์†์„ฑ์ด ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. (๊ทธ๋Ÿฌ๋‚˜ ๋จผ์ € Elektra์˜ ์œ ํ˜• ์ค‘ ํ•˜๋‚˜๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— "์ˆซ์ž"๋ฅผ ์ˆ˜์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค).

์‹ค์ œ๋กœ๋Š” "1"๋˜๋Š” "0"์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•ด ๊ฒฝ๊ณ  (๋˜๋Š” ์‹คํŒจ)ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ "true", "false"๋Š” Elektra์˜ ๋ถ€์šธ์ด ์•„๋‹™๋‹ˆ๋‹ค.

@kodebach ์ผ๋‹ค

yajl ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹get์—์„œ 0/1์„ ๋ฐ˜ํ™˜ํ•ด์•ผํ•˜๋ฉฐ ์„ธํŠธ์—์„œ 0/1๋ฟ๋งŒ ์•„๋‹ˆ๋ผ true / false๋„ ํ—ˆ์šฉํ•ด์•ผํ•˜๋ฏ€๋กœ ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์žˆ๋“  ์—†๋“  ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ ๋˜ํ•œ "์ฐธ"๊ณผ "๊ฑฐ์ง“"์„ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Imho, yajl ํ”Œ๋Ÿฌ๊ทธ์ธ์—๋Š” ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•œ "ํ•„์ˆ˜"์ข…์†์„ฑ์ด ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. (๊ทธ๋Ÿฌ๋‚˜ ๋จผ์ € Elektra์˜ ์œ ํ˜• ์ค‘ ํ•˜๋‚˜๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— "์ˆซ์ž"๋ฅผ ์ˆ˜์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค).

์˜ˆ, ์ €๋Š” ์˜์กด์„ฑ์— ๋Œ€ํ•ด ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ "true"๋ฐ "false"์— ๋Œ€ํ•œ ์ง€์›์„ ์ œ๊ฑฐ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆซ์ž ๋ฌธ์ œ์™€ ๊ด€๋ จํ•˜์—ฌ Yajl์€ Number ์œ ํ˜•์„ double๋กœ ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋น ๋ฅธ ํ™•์ธ์„ ํ†ตํ•ด ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ด์ค‘ ์œ ํ˜•๋„ json์˜ E- ํ‘œ๊ธฐ (์˜ˆ : 3.4e2 )๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?

๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?

์•„, ์ด์ œ src / plugins / yajl / testmod_yajl.c 240-251์ด ์ฃผ์„ ์ฒ˜๋ฆฌ ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ œ๊ฑฐ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. (์•„์ง ์ˆซ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.)

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

๊ด€๋ จ ๋ฌธ์ œ

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

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

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

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

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