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"
yajl ํ๋ฌ๊ทธ์ธ์ ๋ค์์ ์ํํด์ผํฉ๋๋ค.
@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"๋ก ๋ณํ๋์ง ์์ต๋๊น?
์ ๊ทํ / ๋ณต์ ์ ์ฐจ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ค๋ช ํ ์ ์์ต๋๋ค.
kdbGet
์กด์ฌํ๊ณ kdbGet
์์ kdbSet
์ฌ์ด์์ ๋ณ๊ฒฝ๋์ง ์์์ต๋๋ค.kdbGet
์์ ์ ๊ทํ๋๊ณ ์๋ ๊ฐ์ kdbSet
์์ ๋ณต์๋๋ฏ๋ก ๊ธฐ๋ณธ ์คํ ๋ฆฌ์ง ํ์ผ์ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค (๋ฌธ์ ์ ํค๋ก).kdbGet
์กด์ฌํ์ง ์์์ต๋๋ค.kdbGet
์ ์์์ง๋ง ํด๋น ๊ฐ์ด kdbGet
์์ kdbSet
์ฌ์ด์์ ๋ณ๊ฒฝ๋์์ต๋๋ค.keySetString
๋ origvalue
๋ฉํ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ๋ฏ๋ก type
ํ๋ฌ๊ทธ์ธ์ ๊ฒฝ์ฐ ์ด๋ฌํ ์ข
๋ฅ์ ํค๊ฐ kdbGet
์กด์ฌํ์ง ์์์ต๋๋ค. .ํน๋ณํ ๊ฒฝ์ฐ๊ฐ ํ๋ ์์ต๋๋ค. ์ฌ๊ธฐ์์ ์ฌ์ฉํ ์์๋ ๊ธฐ๋ฅ์ ์ด๋ฏธ ์ถ๊ฐํ์ต๋๋ค (์ ๋ณด / ๋ฉํ ๋ฐ์ดํฐ์ ์ถ๊ฐํ๋ ๊ฒ์ ์์์ต๋๋ค).
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 ํ๋ฌ๊ทธ์ธ์ ๋ค์์ ์ํํด์ผํฉ๋๋ค.
@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
ํ๋ฌ๊ทธ์ธ์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
๋ ๋ค ๊ฐ์ฌํฉ๋๋ค!
# 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์ด ์ฃผ์ ์ฒ๋ฆฌ ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์ ๊ฑฐ๋์ด์ผํฉ๋๋ค. (์์ง ์ซ์๊ฐ ์์ต๋๋ค.)
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์, ๊ณ์ฝ ํค ์ธํธ์ ์ถ๊ฐํ์ญ์์ค. ์๋ฅผ ๋ค์ด ๋ค์ ์ค์ YAML CPP๊ฐ
type
ํ๋ฌ๊ทธ์ธ์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.https://github.com/ElektraInitiative/libelektra/blob/5519cb8066a096215a3701ca3d8c02fcebe54914/src/plugins/yamlcpp/yamlcpp.cpp#L44
.