Libelektra: ์œ ํ˜•์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

์— ๋งŒ๋“  2020๋…„ 09์›” 22์ผ  ยท  26์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ElektraInitiative/libelektra

์ด์ œ ์œ ํ˜• ๊ฐœ๋…์ด ๋‚ด์žฅ๋œ ๋‹ค์–‘ํ•œ ์ €์žฅ ํ˜•์‹(์˜ˆ: YAML, TOML, JSON)์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๋“ค ๋ชจ๋‘๋Š” ์œ ํ˜•์„ ๋‚˜ํƒ€๋‚ด๋Š” Elektras ๋ฐฉ์‹์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ type ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์–ด๋–ค ์‹์œผ๋กœ๋“  ์˜์กดํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ด์ƒ์ ์ธ IMO๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋Œ€์‹  type ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ผ๋ถ€๋ฅผ type ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ถ”์ถœํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ •ํ™•ํžˆ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ( @bauhaus93 ์ด ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Œ), ์ด๋Ÿฌํ•œ ๋ชจ๋“  ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์œ ํ˜•์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ๋ถˆํ•„์š”ํ•œ ๋…ธ๋ ฅ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ IMO type ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋‚ด์žฅ ์œ ํ˜•์ด ์—†๋Š” ์ €์žฅ ํ˜•์‹์—๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Elektras ์œ ํ˜•์˜ ํ•˜์œ„ ์ง‘ํ•ฉ๋งŒ ์ง€์›ํ•˜๋Š” ํ˜•์‹์˜ ๊ฒฝ์šฐ type ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋ถ€๋ถ„์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด type ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ์ด ๋งค์šฐ ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ type ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์ €์žฅ ํ˜•์‹์—๋งŒ ์œ ํ˜•์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.


์ฐธ๊ณ : ์ด ๋ฌธ์ œ๋Š” @bauhaus93์ด toml ์— ๋Œ€ํ•œ ๋‚˜๋จธ์ง€ ์ž‘์—…์— ๋„์›€์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•˜์ง€ ์•Š๋Š” ํ•œ 1.0 ์ดํ›„์— ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ํ‘œ์‹œํ•˜์—ฌ ์ž์œ ๋กญ๊ฒŒ ๋‹ซ์œผ์‹ญ์‹œ์˜ค.

low priority proposal

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

์ œ์•ˆ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ด๋ก€์ ์ธ ๋ฐฉ๋ฒ•์ด์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ฐ„์— ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ์ถ”์ถœํ•˜๊ณ  ์ด๋ฅผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. @bauhaus93 ์˜ TOML ํ”Œ๋Ÿฌ๊ทธ์ธ์—๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(์˜ˆ: ์ฃผ์„ ์ฒ˜๋ฆฌ ์ฝ”๋“œ)์— ๋„ฃ์–ด์•ผ ํ•˜๋Š” ๋งŽ์€ ์–‘์˜ ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜คํ•ดํ•˜์ง€ ๋งˆ์„ธ์š”. @bauhaus93์— ๋Œ€ํ•œ ์ข‹์€ ์ •๋ณด์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ํ•„์š”๋กœ ํ•˜๋Š” ๋‘ ๋ฒˆ์งธ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์žˆ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋„ฃ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ณ ์œ ์˜ ์ฝ”๋“œ๋ฅผ ๊ฐ–๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋งŽ์€ ๋…ธ๋ ฅ์„ ์š”ํ•˜๋ฉฐ ์‹ค์ œ๋กœ ์ตœ์†Œํ•œ ๋‘ ๋ช…์˜ ๊ณ ๊ฐ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋…ธ๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@bauhaus93 ์œ ํ˜• ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ฆ‰๊ฐ์ ์ธ ์ด์ ์ด ์—†๋Š” ๊ฒฝ์šฐ(์˜ˆ: ๋‹ค๋ฅธ ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ํ•จ๊ป˜ ์žฌ์‚ฌ์šฉ) ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•˜์‹ญ์‹œ์˜ค.

๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ํ•„์š”๋กœ ํ•˜๋Š” ๋‘ ๋ฒˆ์งธ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์žˆ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋„ฃ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฒซ ๋ฒˆ์งธ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ฐพ์„ ์œ„์น˜์™€ ๋ชจ๋“  ๊ฒƒ์„ ๊นจ๋œจ๋ฆฌ์ง€ ์•Š๊ณ  ์ฝ”๋“œ๋ฅผ ์ถ”์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ๋Š” ํ•œ ์ข‹์€ ์ „๋žต์ž…๋‹ˆ๋‹ค. ์•ˆํƒ€๊น๊ฒŒ๋„ ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์ฒซ ๋ฒˆ์งธ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ์ผ๋ถ€ ์ž‘์—…์ด ์ด๋ฏธ ์™„๋ฃŒ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์€ ์‹ค์ œ๋กœ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ƒˆ ์ €์žฅ์†Œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ž‘์„ฑํ•˜๋„๋ก ๊ถŒ์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์ด๊ฒƒ์„ low priority ๋กœ ํƒœ๊ทธ๋ฅผ ๋ถ™

์œ ํ˜•์˜ ๊ฒฝ์šฐ 10์ง„์ˆ˜๊ฐ€ ์•„๋‹Œ ์ •์ˆ˜(2์ง„์ˆ˜/8์ง„์ˆ˜/16์ง„์ˆ˜) ๋˜๋Š” ๋‚ ์งœ ์‹œ๊ฐ„(TOML์€ RFC 3339 ๋‚ ์งœ ์‹œ๊ฐ„ ์‚ฌ์šฉ)์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ/๋ณ€ํ™˜์„ ์ œ์™ธํ•˜๊ณ  ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ์„ฑ์— ๋Œ€ํ•ด ํ™•์‹ ์ด ์—†์Šต๋‹ˆ๋‹ค.
์œ ํ˜•๊ณผ ๊ด€๊ณ„์—†์ด ์ž‘์„ฑํ•  KeySets ์ค€๋น„์—์„œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: array ๋ฉ”ํƒ€ํ‚ค๋ฅผ ์—…๋ฐ์ดํŠธ/์ถ”๊ฐ€ํ•˜๋Š” ํ•จ์ˆ˜, ์œ ํšจํ•˜์ง€ ์•Š์€ ๋ฐฐ์—ด์˜ array ๋ฉ”ํƒ€ํ‚ค ์ œ๊ฑฐ ๋˜๋Š” ๋ˆ„๋ฝ๋œ comment/#X ์™„์ „ ์‚ญ์ œ)

์•„์ง ๋ˆˆ์น˜์ฑ„์ง€ ๋ชปํ–ˆ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ•˜๋Š” ๋ถ€์šธ ์ •๊ทœํ™”์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ํ˜•์‹์ด true / false ์‚ฌ์šฉํ•˜์ง€๋งŒ Elektra๋Š” 1 / 0 ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ์•„๋งˆ๋„ ๊ฐ€์žฅ ๋งŽ์ด ์žฌ์‚ฌ์šฉ๋˜๋Š” ์ฝ”๋“œ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. yamlcpp ํŠน์ˆ˜ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ๋ถ€์šธ์ด ์ •์ˆ˜๋กœ ๋ณ€ํ™˜๋˜๊ฑฐ๋‚˜ ๊ทธ ๋ฐ˜๋Œ€๋กœ ๋ณ€ํ™˜๋˜์ง€ ์•Š๋„๋ก(๋˜๋Š” ํ•ด๋‹น ๋ผ์ธ์„ ๋”ฐ๋ผ) ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์•„, ์žŠ์–ด๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค. TOML ํ”Œ๋Ÿฌ๊ทธ์ธ๋„ ์ด ๊ฐ’์„ ์ •๊ทœํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” ๊ฐ’์„ ์ •๊ทœํ™”ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ๋งŒ์ด ์•„๋‹™๋‹ˆ๋‹ค. kdbSet ๋‹จ๊ณ„์—์„œ toml ํ”Œ๋Ÿฌ๊ทธ์ธ๋ณด๋‹ค ๋จผ์ € ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— type ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ์ •ํ™•ํžˆ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๊ฒƒ์„ ๊ตฌํ˜„ํ–ˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ type ํ”Œ๋Ÿฌ๊ทธ์ธ์ด 1 / 0 ๋˜๋Š” true /๋งŒ ์ƒ์„ฑํ•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. false kdbSet ๋‹จ๊ณ„์˜ toml ๋Š” type ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ตฌ์„ฑ์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์•„๋ž˜ ํ…Œ์ŠคํŠธ ์‚ฌ๋ก€ ์ฐธ์กฐ).

https://github.com/ElektraInitiative/libelektra/blob/4b0e9f8bdd6d890a1a3abaf04c543b9c7d33e984/src/plugins/type/testmod_type.c#L734 -L771

ํฅ๋ฏธ๋กœ์šด ๋ถ€๋ถ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

https://github.com/ElektraInitiative/libelektra/blob/4b0e9f8bdd6d890a1a3abaf04c543b9c7d33e984/src/plugins/type/testmod_type.c#L749 -L753

type ํ”Œ๋Ÿฌ๊ทธ์ธ ์ˆ˜์‹  1 ์—์„œ kdbGet (์žˆ์„ ์ˆ˜์—์„œ toml ),ํ•˜์ง€๋งŒ ๋ฆฌํ„ด t ์—์„œ kdbSet . ์ด๊ฒƒ์€ true = 0 ๋ฐ false = 1 ๋ฅผ ์ •์˜ํ•˜๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ๊นŒ์ง€ ๊ฐˆ ์ˆ˜ ์žˆ์–ด toml ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์™„์ „ํžˆ ํ˜ผ๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๋‚˜๋Š” ๋ชจ๋“  ๋ถ€์šธ์ด kdbSet ๋งˆ๋‹ค ๋’ค์ง‘ํž ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค)


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

toml ํ”Œ๋Ÿฌ๊ทธ์ธ์€ 16์ง„์ˆ˜๋„ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ hexnumber ํ”Œ๋Ÿฌ๊ทธ์ธ ์‚ฌ์šฉ์„ ๋ช…์‹œ์ ์œผ๋กœ ํ—ˆ์šฉํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. (์ด ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ)

๋˜ํ•œ ์ผ๋ถ€ ์ž‘์—…์ด ์ด๋ฏธ ์™„๋ฃŒ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์€ ์‹ค์ œ๋กœ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ƒˆ ์ €์žฅ์†Œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ž‘์„ฑํ•˜๋„๋ก ๊ถŒ์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž๋Š” ์•„๋งˆ๋„ ๋ฌธ๋ฒ•๋งŒ ์ž‘์„ฑํ•˜๊ธฐ๋ฅผ ์›ํ•  ๊ฒƒ์ด๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋งˆ๋ฒ•์ฒ˜๋Ÿผ ์ €์ ˆ๋กœ ์ผ์–ด๋‚˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. @bauhaus93 ์˜ TOML ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์‹ค์ œ๋กœ ์ด ๋ชฉํ‘œ๋ฅผ ์–ผ๋งˆ๋‚˜ ๋‹ฌ์„ฑํ–ˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. TOML ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ฝ”๋“œ ๊ธฐ๋ฐ˜์œผ๋กœ non-TOML ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ํฅ๋ฏธ๋กœ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์œ ํ˜• ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งŒ์œผ๋กœ๋Š” "์ €์žฅ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ž‘์„ฑ"์ด๋ผ๋Š” ํฐ ์ž‘์—…์— ์ง€๋‚˜์น˜๊ฒŒ ์œ ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ „๋ฌธํ™”๋˜์–ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์œ ํ˜•์˜ ๊ฒฝ์šฐ 10์ง„์ˆ˜๊ฐ€ ์•„๋‹Œ ์ •์ˆ˜(2์ง„์ˆ˜/8์ง„์ˆ˜/16์ง„์ˆ˜) ๋˜๋Š” ๋‚ ์งœ ์‹œ๊ฐ„(TOML์€ RFC 3339 ๋‚ ์งœ ์‹œ๊ฐ„ ์‚ฌ์šฉ)์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ/๋ณ€ํ™˜์„ ์ œ์™ธํ•˜๊ณ  ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ์„ฑ์— ๋Œ€ํ•ด ํ™•์‹ ์ด ์—†์Šต๋‹ˆ๋‹ค.

๋‚ ์งœ/์‹œ๊ฐ„์€ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์œ„ํ•ด์„œ๋งŒ Elektra์— ์กด์žฌํ–ˆ์ง€๋งŒ RFC2822๋งŒ ์ง€์›๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ ์งœ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ํŒŒ์„œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜์—ฌ RFC 3339๋ฅผ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ €๋Š” ์ด๊ฒƒ์„ ๋งค์šฐ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค.

์กฐ๊ธˆ ๋” ํฅ๋ฏธ๋กœ์šด ๊ฒƒ์€ (TOML) ๋‚ ์งœ๊ฐ€ ์žˆ๋Š” ํ‚ค์˜ keyGetDateTime(Key *k, struct tm *tm) ์™€ ๊ฐ™์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์œ ํ˜•๊ณผ ๊ด€๊ณ„์—†์ด ์ž‘์„ฑํ•  KeySets ์ค€๋น„์—์„œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ๋ฐฐ์—ด ๋ฉ”ํƒ€ํ‚ค๋ฅผ ์—…๋ฐ์ดํŠธ/์ถ”๊ฐ€ํ•˜๋Š” ํ•จ์ˆ˜, ์œ ํšจํ•˜์ง€ ์•Š์€ ๋ฐฐ์—ด์˜ ๋ฐฐ์—ด ๋ฉ”ํƒ€ํ‚ค๋ฅผ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ๋ˆ„๋ฝ๋œ ์ฃผ์„/#X ๋ฉ”ํƒ€ํ‚ค ๋ฐ์ดํ„ฐ๋ฅผ ์™„๋ฃŒํ•˜๋Š” ๊ธฐ๋Šฅ).

์˜ˆ, ํฅ๋ฏธ๋กœ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ›จ์”ฌ ๋” ๋งค๋ ฅ์ ์ธ ๊ฒƒ์€ ๋ฌธ๋ฒ•๊ณผ ํ„ฐ์น˜ ์ฝ”๋“œ๋ฅผ ๊ฐ€๋Šฅํ•œ ํ•œ ์ ๊ฒŒ ์ง์ ‘ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•„์ง ๋ˆˆ์น˜์ฑ„์ง€ ๋ชปํ–ˆ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ•˜๋Š” ๋ถ€์šธ ์ •๊ทœํ™”์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ˆ„๋ฝ๋œ ๊ฒƒ์€ doc/tutorials/storage-plugins.md์˜ ์ผ๋ถ€ ์ž์Šต์„œ/์„ค๋ช…์œผ๋กœ, ์ €์žฅ์†Œ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์‹ค์ œ๋กœ ์˜์กดํ•ด์•ผ ํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•œ ์ตœ์‹  ๋ณด๊ธฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. #2330์€ "๋ฐ”์ด๋„ˆ๋ฆฌ"๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ๊ณ  ์—ฌ์ „ํžˆ ๊ธฐ๋ณธ ์Šคํ† ๋ฆฌ์ง€๋กœ ์ ํ•ฉํ•œ์ง€ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ kdbSet ๋‹จ๊ณ„์—์„œ toml ํ”Œ๋Ÿฌ๊ทธ์ธ๋ณด๋‹ค ๋จผ์ € ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— type ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ์ •ํ™•ํžˆ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ ์‚ฌ์šฉ์„ ์ค‘์ง€ํ•˜๊ณ  ๋‹จ์ˆœํžˆ ์ž์ฒด์ ์œผ๋กœ ์ •๊ทœํ™”๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(ํ˜•์‹์ด true/false์—์„œ Elektra ๋“ฑ์˜ 1/0๊นŒ์ง€). @bauhaus93 ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๋‹ค๋ฅธ ์–ด๋–ค ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์‹ญ๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ์‚ฌ์šฉ์ž๊ฐ€ true = 0 ๋ฐ false = 1๋กœ ์ •์˜ํ•˜์—ฌ toml ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์™„์ „ํžˆ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๊ธฐ๋Šฅ์„ ์ค„์ด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์žˆ๋‹ค๋ฉด, ์ผ๋ถ€ ์ถ”๊ฐ€์ ์ธ ์ฐธ/๊ฑฐ์ง“ ๊ฐ’์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ด์ „์—๋Š” ๋ถ„๋ช…ํžˆ ์ฐธ/๊ฑฐ์ง“ ๊ฐ’์ด ์•„๋‹ˆ์—ˆ์Œ).

toml ํ”Œ๋Ÿฌ๊ทธ์ธ์€ 16์ง„์ˆ˜๋„ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ hexnumber ํ”Œ๋Ÿฌ๊ทธ์ธ ์‚ฌ์šฉ์„ ๋ช…์‹œ์ ์œผ๋กœ ํ—ˆ์šฉํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. (์ด ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ)

ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ•จ๊ป˜ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ‘œํ˜„ํ•  ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค(์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์ด ์žˆ์œผ๋ฉด ๋งˆ์šดํŠธ๊ฐ€ ํ›จ์”ฌ ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค. ๋˜ํ•œ ์–ด๋–ค ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์–ด๋–ค ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ์ž‘๋™ํ•˜๋Š”์ง€ ํ…Œ์ด๋ธ”์„ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ๋„ ๋„ˆ๋ฌด ๋งŽ์€ ์ž‘์—…์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.). ๊ทธ๋Ÿฌ๋‚˜ TOML ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ด๋ฏธ ์ด ๊ธฐ๋Šฅ๊ณผ ๊ทธ ์ด์ƒ(์˜ˆ: ์ด์ง„์ˆ˜)์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•„๋งˆ ์•„๋ฌด๋„ ๊ทธ๊ฒƒ๋“ค์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ƒ๊ฐ์„ ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž๋Š” ์•„๋งˆ๋„ ๋ฌธ๋ฒ•๋งŒ ์ž‘์„ฑํ•˜๊ธฐ๋ฅผ ์›ํ•  ๊ฒƒ์ด๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋งˆ๋ฒ•์ฒ˜๋Ÿผ ์ €์ ˆ๋กœ ์ผ์–ด๋‚˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๋งˆ๋ฒ• ๊ฐ™์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ˆ˜์ •๋œ Yacc ๋˜๋Š” ANTLR ๋ฌธ๋ฒ•์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ์ฝ”๋“œ ์ƒ์„ฑ๊ธฐ๋กœ ๊ฐ€๋Šฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ JSON, XML, TOML ๋ฐ edn ๊ณผ ๊ฐ™์€ ๋งค์šฐ ๋‹ค์–‘ํ•œ ํ˜•์‹์˜ ๋ฌธ๋ฒ•์—์„œ ๋‹จ์ˆœํžˆ KeySet ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. @'sanssecours๋Š” ํ‘œ์ค€ ๋ฌธ๋ฒ• ํ˜•์‹์œผ๋กœ ํ‘œํ˜„ํ•˜๊ธฐ ๋งค์šฐ ์–ด๋ ค์šด YAML๊ณผ ๊ฐ™์€ ํ˜•์‹๋„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์œ ํ˜• ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งŒ์œผ๋กœ๋Š” "์ €์žฅ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ž‘์„ฑ"์ด๋ผ๋Š” ํฐ ์ž‘์—…์— ์ง€๋‚˜์น˜๊ฒŒ ์œ ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ „๋ฌธํ™”๋˜์–ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ €์žฅ์†Œ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•œ ๋” ๋งŽ์€ ๋„์šฐ๋ฏธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์ผ๋ฐ˜ storage ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: stdin / stdout ๋ฐ ๊ฐ€์ ธ์˜ค๊ธฐ/๋‚ด๋ณด๋‚ด๊ธฐ์šฉ ํŒŒ์ดํ”„ ์ฒ˜๋ฆฌ). ๊ทธ๋Ÿฌ๋ฉด ์œ ํ˜• ํ•ญ๋ชฉ์ด ๊ทธ ์ผ๋ถ€๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์œ ํ˜• ํ•ญ๋ชฉ์ด ์–ผ๋งˆ๋‚˜ ๋ณต์žกํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ณผ์†Œํ‰๊ฐ€ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ‘œ์ค€ ์œ ํ˜• ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋‹ค๋ฉด ์œ ํ˜• ์‹œ์Šคํ…œ์„ ํ™•์žฅํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค(์˜ˆ: ๊ตฌ๋ฌธ ๋ถ„์„ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•œ ๋ฌธ์ž์—ด ๋ฒ„์ „์— ์ถ”๊ฐ€๋กœ). storage ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” Elektra ๊ฐœ๋ฐœ์ž๊ฐ€ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋‚ด๋ถ€ API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ํ‘œ์ค€ ์œ ํ˜• ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์œ ํ˜• ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ‘œ์ค€ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ๋„ ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์กฐ๊ธˆ ๋” ํฅ๋ฏธ๋กœ์šด ๊ฒƒ์€ keyGetDateTime(Key *k, struct tm *tm)๊ณผ ๊ฐ™์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

libease ( elektraKeyToDateTime (const Key * key, struct tm * dateTime) )์˜ ๋ณ€ํ™˜ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์ž‘์—…์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค.

@bauhaus93 ๊ฑฐ๊ธฐ์— ์žˆ๋Š” ๊ธฐ๋Šฅ์€ toml ์—๋„ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด elektraKeyToFloat ๋ฐ elektraFloatToString ์™„๋ฒฝํ•˜๊ณ  ์†์‹ค ์—†์ด ์™•๋ณตํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ(ํ”Œ๋กœํŠธ ๋ฌธ์ž์—ด๋กœ ์‹œ์ž‘ํ•˜๋”๋ผ๋„ ์ƒ๊ด€์—†์Œ) ๊ณ ๊ธ‰ API์—์„œ๋„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ toml ๊ฐ€ elektra*ToString ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์ƒ์œ„ ์ˆ˜์ค€ API์—์„œ ํ™•์‹คํžˆ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฝ์„ ์ˆ˜ ์žˆ๊ณ  toml ๋Š” highlevel API๋กœ ์ƒ์„ฑ๋œ ๋ชจ๋“  ๊ฒƒ์„ ํ™•์‹คํžˆ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. elektraKeyTo* .

์ €์žฅ์†Œ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์‹ค์ œ๋กœ ์˜์กดํ•ด์•ผ ํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•œ ์ตœ์‹  ๋ณด๊ธฐ.

IMO, ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋‹ค๋ฅธ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์ ˆ๋Œ€ _์˜์กด_ํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. ์ €์žฅ์†Œ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋‹ค๋ฅธ ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ํ–ฅ์ƒ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด์ƒ์ ์œผ๋กœ๋Š” ๋…๋ฆฝ ์‹คํ–‰ํ˜•์œผ๋กœ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ”์ด๋„ˆ๋ฆฌ ํ‚ค๋ฅผ ๋‹ค๋ฃจ๋”๋ผ๋„ ์Šคํ† ๋ฆฌ์ง€/ํƒ€์ž… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋” ์ž˜ ํ•ด๊ฒฐ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ ๋“ฑ์— ๋Œ€ํ•œ ์ผ๋ถ€ ๊ธฐ์ค€ ํ‘œ์ค€์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํ•„์š”ํ•˜์ง€ ์•Š์€ ํ˜•์‹์— ๋Œ€ํ•ด binary ํ”Œ๋Ÿฌ๊ทธ์ธ ์‚ฌ์šฉ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. binary quickdump ์™€ ๊ฒฐํ•ฉํ•˜๋ฉด ์ž‘๋™ํ•˜์ง€๋งŒ ์†๋„์™€ ์ €์žฅ ๊ณต๊ฐ„ ๋ชจ๋‘์— ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ ์‚ฌ์šฉ์„ ์ค‘๋‹จํ•˜๊ณ  ๋‹จ์ˆœํžˆ ์ž์ฒด์ ์œผ๋กœ ์ •๊ทœํ™”๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋„์„œ๊ด€์„ ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…์— ๋Œ€ํ•œ ๋น„๊ณต์‹์ ์ธ ์„ค๋ช…(๋˜๋Š” ๊ณต์‹ ์‚ฌ์–‘)์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์ข‹์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์‚ฌ์–‘์ด ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ.

์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๊ธฐ๋Šฅ์„ ์ค„์ด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ ๊ตฌํ˜„๋œ ๊ธฐ๋Šฅ์„ ์ œ๊ฑฐํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์›๋ž˜๋Š” boolean ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋”ฐ๋กœ ๋งŒ๋“ค ์ƒ๊ฐ์ด์—ˆ๋Š”๋ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ˆœ์„œ ๋“ฑ์œผ๋กœ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๊ธฐ๋„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์žˆ๋‹ค๋ฉด, ์ผ๋ถ€ ์ถ”๊ฐ€์ ์ธ ์ฐธ/๊ฑฐ์ง“ ๊ฐ’์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ด์ „์—๋Š” ๋ถ„๋ช…ํžˆ ์ฐธ/๊ฑฐ์ง“ ๊ฐ’์ด ์•„๋‹ˆ์—ˆ์Œ).

์ •๋ง ๊ทธ๋Ÿด ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‘˜ ์ด์ƒ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋ถ€์šธ ๊ฐ’์ด ๋ฌด์—‡์ธ์ง€ ์ •์˜ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

true = 0 ๋ฐ false = 1 ๋„ ์™„์ „ํžˆ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. Elektra ์ž์ฒด๋Š” " 1 ๊ฐ€ ์œ ์ผํ•œ true ๊ฐ’์ด๊ณ  0 ๊ฐ€ ์œ ์ผํ•œ false ๊ฐ’"์ด๋ฏ€๋กœ ๋ถ€์šธ์„ ๋ฒŒ๊ธˆ์œผ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ•จ๊ป˜ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ‘œํ˜„ํ•  ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค(์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์ด ์žˆ์œผ๋ฉด ๋งˆ์šดํŠธ๊ฐ€ ํ›จ์”ฌ ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค. ๋˜ํ•œ ์–ด๋–ค ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์–ด๋–ค ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ์ž‘๋™ํ•˜๋Š”์ง€ ํ…Œ์ด๋ธ”์„ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ๋„ ๋„ˆ๋ฌด ๋งŽ์€ ์ž‘์—…์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.).

๋‚˜๋Š” ๋™์˜ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ฌผ๋ก  ์™„์ „ํ•œ ๋ชฉ๋ก์€ ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€๋งŒ(๊ฒฐ๊ตญ ํƒ€์‚ฌ ํ”Œ๋Ÿฌ๊ทธ์ธ๋„ ์žˆ์Œ) ์†”๋ฃจ์…˜์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์Šค์Šค๋กœ ์ ๊ฒ€ํ•˜๋„๋ก ํ•˜์‹ญ์‹œ์˜ค. elektra<Plugin>Get ๋˜๋Š” kdb mount ๋™์•ˆ ํ˜ธ์ถœ๋˜๋Š” ๋‹ค๋ฅธ ํ•จ์ˆ˜์—์„œ.

๋ถ€์šธ ์™ธ์—๋„ TOML ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ฝ์„ ๋•Œ string, double ๋ฐ (unsigned_)long_long ์œ ํ˜•๋„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

@kodebach ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. type ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ƒํ˜ธ ์ž‘์šฉ์˜ ์–ด๋ ค์›€ ๋•Œ๋ฌธ์— ๋‚ด์žฅํ˜• ์‹œ์Šคํ…œ์ด ์—†๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ. TOML ํ”Œ๋Ÿฌ๊ทธ์ธ์€ 10์ง„์ˆ˜๊ฐ€ ์•„๋‹Œ ๊ฐ’์—์„œ๋„ ์ฝ์„ ๋•Œ ์ •์ˆ˜์— ๋Œ€ํ•œ type ๋ฉ”ํƒ€ํ‚ค๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค(10์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋™์•ˆ 10์ง„์ˆ˜๊ฐ€ ์•„๋‹Œ ํ‘œํ˜„์€ origvalue ). ๊ทธ๋Ÿฌ๋‚˜ kdb set ๋กœ ์ž…๋ ฅ๋œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ ค๋Š” ๊ฒฝ์šฐ(๋ฐ ์ด์ง„/8์ง„์ˆ˜/16์ง„์ˆ˜ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ) ์ง์ ‘ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(ํ‚ค ๊ฐ’ ์„ค์ •). ์™œ๋ƒํ•˜๋ฉด type ํ”Œ๋Ÿฌ๊ทธ์ธ ์œ ํ˜• ๊ฒ€์‚ฌ๊ฐ€ ์„ฑ๊ณตํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  origvalue ๋ฉ”ํƒ€ํ‚ค๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (์ƒˆ ๊ฐ’์„ ์„ค์ •ํ•˜๊ธฐ ์ „์— type ๋ฉ”ํƒ€ ํ‚ค๋ฅผ ์‚ญ์ œํ•˜๋ฉด ์ฝ์„ ๋•Œ ๋ฉ”ํƒ€ ํ‚ค๊ฐ€ ์žฌ์„ค์ •๋˜๋ฏ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)

๋ฌธ์ œ๋Š” ๊ฐ’์„ ์ •๊ทœํ™”ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ๋งŒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋˜ํ•œ kdbSet ๋‹จ๊ณ„์—์„œ toml ํ”Œ๋Ÿฌ๊ทธ์ธ๋ณด๋‹ค ๋จผ์ € ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— type ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ์ •ํ™•ํžˆ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌํ˜„ํ–ˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ์‚ฌ์šฉ์ž๊ฐ€ ์ œ๊ณตํ•œ ๊ตฌ์„ฑ์— ๊ด€๊ณ„์—†์ด ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์ด kdbSet ๋‹จ๊ณ„์—์„œ 1/0 ๋˜๋Š” true/false๋งŒ ์ƒ์„ฑํ•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉ์ž ์ •์˜ true ๋ฐ false ๊ฐ’์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ toml์€ ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ตฌ์„ฑ์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์•„๋ž˜ ํ…Œ์ŠคํŠธ ์‚ฌ๋ก€ ์ฐธ์กฐ).

์˜ˆ, ์‚ฌ์šฉ์ž ์ •์˜ ๋ถ€์šธ ๊ฐ’์„ ์‹ค์ œ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๊ฐ€ ์ด๋ฏธ ๊ถ๊ธˆํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ TOML ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ž‘์„ฑ ์‹œ "1" ๋ฐ "true" ๊ฐ’๋งŒ true๋กœ ๊ฐ„์ฃผํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” false๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.

@kodebach ๋Š” ๋‹ค์Œ

๊ทธ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๋งˆ๋ฒ• ๊ฐ™์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Augeas๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ์–ป๋Š” ๋‚˜๋ฌด๋Š” ๊ทธ๋‹ค์ง€ ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค). ์šฐ๋ฆฌ๊ฐ€ ํ˜„์žฌ TOML ์†”๋ฃจ์…˜๊ณผ ์–ผ๋งˆ๋‚˜ ๋ฉ€๋ฆฌ ๋–จ์–ด์ ธ ์žˆ๋Š”์ง€๋Š” ํฅ๋ฏธ๋กœ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด๋ฏธํ„ฐ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ทธ๋ ‡๊ฒŒ ๊ทน์ ์ด์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

JSON, XML

Elektra์˜ ์žฅ์ ์€ ์ด์ฒ˜๋Ÿผ ๋งค์šฐ ๋‹ค์–‘ํ•œ ํ˜•์‹์ด ๋‹ค๋ฅธ ๊ธฐ์ˆ ๋กœ ๊ตฌํ˜„๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. XML์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ์•„๋งˆ๋„ ์ตœ์„ ์˜ ์ƒ๊ฐ์ด ์•„๋‹ ๊ฒƒ์ž…๋‹ˆ๋‹ค. INI์™€ ๊ฐ™์€ ํ˜•์‹์„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ด๋ฏธ ๋†€๋ž์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ฌผ๋ก  ๊ฐ€์žฅ ๋จผ์ € ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ข‹์€ TOML ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์–ป๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค :1st_place_medal:

๋˜ ๋‹ค๋ฅธ ํ‘œ์ค€ ์œ ํ˜• ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์œ ํ˜• ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ‘œ์ค€ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

ํ™•์ธ์€ ๋‹ค๋ฅธ ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์‰ฝ๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(#2963์ด ์™„๋ฃŒ๋˜๋ฉด). ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์•„๋ฆ„๋‹ค์šด ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ ํ™•์ธ ๋ฐ ์‹คํŒจ๋งŒ ํ•˜๋Š” ๊ฒฝ์šฐ ์ƒํ˜ธ ์ž‘์šฉ์ด ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค.

libase์˜ ๋ณ€ํ™˜ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์ž‘์—…์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค.

์˜ˆ, ์•„๋งˆ๋„ TOML์˜ ์ผ๋ถ€ ํ•ญ๋ชฉ์€ libease ๋˜๋Š” libmeta๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

IMO, ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋‹ค๋ฅธ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์˜์กดํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

๋ฐ”์ด๋„ˆ๋ฆฌ์˜ ๊ฒฝ์šฐ (๊ธฐ๋ณธ ๋ฐฑ์—”๋“œ์—๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒƒ์ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ) ๋‹ค๋ฅธ ๋ชจ๋“  ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด์„œ๋Š” ์ด๊ฒƒ์ด ์ œ ๊ฒฐ๋ก ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๊ฒฐ๋ก ์€ ์•„์ง ๋„๋ฆฌ ๋ฐ›์•„๋“ค์—ฌ์ง€์ง€๋„ ์•Š๊ณ (@sanssecours?) ๋ฌธ์„œํ™”๋˜์ง€๋„ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋„์„œ๊ด€์„ ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…์— ๋Œ€ํ•œ ๋น„๊ณต์‹์ ์ธ ์„ค๋ช…(๋˜๋Š” ๊ณต์‹ ์‚ฌ์–‘)์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์ข‹์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์‚ฌ์–‘์ด ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ.

๊ทธ๊ฒƒ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์œ ํšจํ•œ ๊ฐ€๋Šฅ์„ฑ์ด ์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ๋‹ค๋ฉด ํŠœํ† ๋ฆฌ์–ผ/์„ค๋ช…์ด ์–ด๋–ป๊ฒŒ๋“  ์ด๋Ÿฌํ•œ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•˜๋ ค๊ณ  ํ•˜๋Š” ๋ณต์žกํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ณด๋‹ค ๋” ๋‚˜์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ง๋ ฌํ™”์˜ ๊ฒฝ์šฐ ์œ ํšจํ•œ ๊ฐ€๋Šฅ์„ฑ์˜ ๊ด‘๋Œ€ํ•œ ๋ฒ”์œ„๊ฐ€ ์žˆ์œผ๋ฉฐ ๊ทธ ์ค‘ ๋‹ค์ˆ˜๋Š” ๊ฐ„๋‹จํ•œ ๊ตฌํ˜„(์˜ˆ: ์ผ๋ถ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ elektraFormat ํ˜ธ์ถœ)์—์„œ ๋ณต์žกํ•œ ๊ตฌํ˜„(์˜ˆ: ๋งŽ์€ ํŽธ์˜ ํ‘œํ˜„์„ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ)๊นŒ์ง€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ ๊ตฌํ˜„๋œ ๊ธฐ๋Šฅ์„ ์ œ๊ฑฐํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

Elektra๋Š” ํ˜„์žฌ ๋„ˆ๋ฌด ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋‹ด์œผ๋กœ ์ธํ•ด ๋ฌด๋„ˆ์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ œ๊ฑฐํ•˜๋Š” ๋ชจ๋“  ์“ธ๋ชจ์—†๋Š”(์•„๋ฌด๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์˜๋ฏธ์—์„œ) ์ฝ”๋“œ ๋ผ์ธ์€ Elektra๋ฅผ ๋” ์ข‹๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋ถˆํ–‰ํžˆ๋„ ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ๋ถ„๋ฆฌ๋œ ์ฝ”๋“œ๋„ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋นŒ๋“œ ์„œ๋ฒ„์—์„œ ๋˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์›์น˜ ์•Š๋Š” ์ƒํ˜ธ ์ž‘์šฉ/๋ฌธ์„œ ๋ˆ„๋ฝ/...

ํ˜„์žฌ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์„ 1.0์œผ๋กœ ์ถœ์‹œํ•  ์ˆ˜๋Š” ์—†์œผ๋ฉฐ Elektra๋Š” ์‹ค๋ง์Šค๋Ÿฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋ชจ๋“  ๊ฒƒ์„ ์ œ๊ฑฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ท€ํ•˜๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์ฒญ์†Œ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด TOML์ด INI๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ์ด์œ ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. #3491

ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์Šค์Šค๋กœ ์ ๊ฒ€ํ•˜๋„๋ก ํ•˜์‹ญ์‹œ์˜ค.

์ด๊ฒƒ์€ ๋“œ๋ฌผ๊ฒŒ ์ข‹์€ ํ•ด๊ฒฐ์ฑ…์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋งค์šฐ ์ผ๊ด€์„ฑ์ด ์—†์œผ๋ฉฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ถ”๊ฐ€ํ•˜๋Š” ์ˆœ์„œ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ€ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ์ฝ”๋“œ๊ฐ€ ์ด๋ฏธ ์–ด๋”˜๊ฐ€์— ์กด์žฌํ•ฉ๋‹ˆ๊นŒ?

@bauhaus93 ์€ ๋‹ค์Œ

๋ถ€์šธ ์™ธ์—๋„ TOML ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ฝ์„ ๋•Œ string, double ๋ฐ (unsigned_)long_long ์œ ํ˜•๋„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ ์—†์ด๋„ ๋ชจ๋“  ๊ฒƒ์ด ์ž์ฒด์ ์œผ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๊นŒ? ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋ฌด์—‡์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ?

๋Œ€์‹  origvalue ๋ฉ”ํƒ€ํ‚ค๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ, ์—ฌ๊ธฐ์—๋Š” ์•„์ง ์ข‹์€ ์†”๋ฃจ์…˜์ด ์—†์Šต๋‹ˆ๋‹ค(#3056). keySetString์€ origvalue๋ฅผ ์ œ๊ฑฐํ•˜์ง€๋งŒ ์–ด๋–ป๊ฒŒ ๋“  ๋™์ž‘์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์‚ฌ์šฉ์ž๊ฐ€ ์˜ˆ์ƒํ•˜๋Š” ๊ฒƒ๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

ํ˜„์žฌ TOML ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ž‘์„ฑ ์‹œ "1" ๋ฐ "true" ๊ฐ’๋งŒ true๋กœ ๊ฐ„์ฃผํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” false๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ์šฐ๋ฆฌ๋Š” "0" ๋˜๋Š” "1"์ด ์•„๋‹Œ ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•ด ๋” ์—„๊ฒฉํ•˜๊ณ  ์‹คํŒจํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. TOML ํŒŒ์ผ ์ž์ฒด์—์„œ "true"์™€ "false"๋งŒ ํ—ˆ์šฉํ•˜๊ณ  ๋‹ค๋ฅธ ๊ฒƒ์€ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

๊ทธ๋Ÿฌ๋‚˜ ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ ์—†์ด๋„ ๋ชจ๋“  ๊ฒƒ์ด ์ž์ฒด์ ์œผ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๊นŒ? ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋ฌด์—‡์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ?

์˜ˆ, ์ž์ฒด์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ๋ ‰์‹ฑ ์ค‘์— ๋‹ค์–‘ํ•œ ์œ ํ˜•์ด ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์†Œ์ˆ˜/์ด์ค‘ ๊ฐ’์ด long_long / double ์ดˆ๊ณผ/์–ธ๋”ํ”Œ๋กœ์ธ์ง€ ํ™•์ธํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ type ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์ˆ˜ํ–‰ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ์šฐ๋ฆฌ๋Š” "0" ๋˜๋Š” "1"์ด ์•„๋‹Œ ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•ด ๋” ์—„๊ฒฉํ•˜๊ณ  ์‹คํŒจํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. TOML ํŒŒ์ผ ์ž์ฒด์—์„œ "true"์™€ "false"๋งŒ ํ—ˆ์šฉํ•˜๊ณ  ๋‹ค๋ฅธ ๊ฒƒ์€ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

์˜ˆ, ๋” ์—„๊ฒฉํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ ์ž์ฒด์—์„œ true ๋˜๋Š” false ๋ถ€์šธ๋กœ ์“ฐ๊ฑฐ๋‚˜ ์ฝ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋ชจ๋“  ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์ด๊ฒƒ์ด ์ œ ๊ฒฐ๋ก ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ type ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์œ ํ˜•์ด ์žˆ๋Š” ํ˜•์‹์— ๋Œ€ํ•œ ์ €์žฅ์†Œ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์œ ํ˜• ํ•ญ๋ชฉ์„ ๋‹ค์‹œ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๋‹ค๋ฅธ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์˜์กดํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—).

์œ ํšจํ•œ ๊ฐ€๋Šฅ์„ฑ์ด ์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ๋‹ค๋ฉด ํŠœํ† ๋ฆฌ์–ผ/์„ค๋ช…์ด ๋” ๋‚˜์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด ๊ฒฝ์šฐ ๋ณ„๋„์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ๋„ ์†”๋ฃจ์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋‘ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ชจ๋‘์—์„œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์ˆ˜๋งŽ์€ ๊ฐ€๋Šฅํ•œ ์ƒํ˜ธ ์ž‘์šฉ๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ์ฝ”๋“œ๊ฐ€ ์ด๋ฏธ ์–ด๋”˜๊ฐ€์— ์กด์žฌํ•ฉ๋‹ˆ๊นŒ?

AFAIK ๊ทธ๊ฒƒ์€ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋งˆ์šดํŠธ ๋œ ๋‹ค๋ฅธ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ฐ์ง€ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€์กฐ์ฐจ ํ™•์‹ ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ ์—†์ด๋„ ๋ชจ๋“  ๊ฒƒ์ด ์ž์ฒด์ ์œผ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๊นŒ? ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋ฌด์—‡์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ?

์˜ˆ, ์ž์ฒด์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ๋ ‰์‹ฑ ์ค‘์— ๋‹ค์–‘ํ•œ ์œ ํ˜•์ด ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์†Œ์ˆ˜์ /์ด์ค‘ ๊ฐ’์ด long_long / double ์ดˆ๊ณผ/์–ธ๋”ํ”Œ๋กœ์ธ์ง€ ํ™•์ธํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ type ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์ˆ˜ํ–‰ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ type ๋˜ํ•œ ๋ฒ”์œ„ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  float / double ๋ฐ enum ์™€ ๊ฐ™์€ ๊ธฐํƒ€ ํ•ญ๋ชฉ์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ์šฐ๋ฆฌ๋Š” "0" ๋˜๋Š” "1"์ด ์•„๋‹Œ ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•ด ๋” ์—„๊ฒฉํ•˜๊ณ  ์‹คํŒจํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. TOML ํŒŒ์ผ ์ž์ฒด์—์„œ "true"์™€ "false"๋งŒ ํ—ˆ์šฉํ•˜๊ณ  ๋‹ค๋ฅธ ๊ฒƒ์€ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์œ ํ˜• ๋˜๋Š” ๋ณด๋‹ค ๊ตฌ์ฒด์ ์œผ๋กœ ๋ณ€ํ™˜/์ •๊ทœํ™”์— ๋Œ€ํ•œ ๋งค์šฐ ๋ณต์žกํ•˜๊ณ  ๋ณต์žกํ•œ ๊ฒฝ์šฐ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

ํ•˜์ž๊ฐ€ ๊ฐ€์ • toml ๋งŒ ์ˆ˜๋ฝ true / false ์ž…๋ ฅ์œผ๋กœ ๋งŒ ์ƒ์‚ฐ 0 / 1 ์—์„œ kdbGet ๊ณผ ๋งŒ ์ˆ˜๋ฝ 0 / 1 ๋งŒ ์ƒ์„ฑ true / false ์˜ kdbSet . ์ด๋Š” ๋ถ€์šธ์— ๋Œ€ํ•œ Elektra ์‚ฌ์–‘๊ณผ TOML ์‚ฌ์–‘์„ ๋ชจ๋‘ ์ค€์ˆ˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์šฉ์ž๋Š” kdb set /some/key/mounted/with/toml true ๊ฐ€ ์ž‘๋™ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. type ๋Œ€ํ•œ ์˜ฌ๋ฐ”๋ฅธ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ธˆ์„ธ ์–ด์ƒ‰ํ•ด์ง‘๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ‚ค๊ฐ€ ์ด์ „์— ์กด์žฌํ–ˆ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ๊ทธ๋Ÿฌ๋ฉด type ๋ฉ”ํƒ€ํ‚ค๊ฐ€ ์—†๊ณ  type ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ด๋ฅผ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค. toml ๋Š” true ๋ฐ›๊ณ  true ๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š๋‹ค๊ณ  ๋ถˆํ‰ํ•ฉ๋‹ˆ๋‹ค. ๋ถ€์šธ...

์ด๊ฒƒ์€ ์ €์žฅ์†Œ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋‹ค๋ฅธ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ €์žฅ์†Œ ํ˜•์‹์ด ์ง€์›ํ•˜๋Š” ๋ชจ๋“  ์œ ํ˜•๊ณผ ๊ด€๋ จ ๋ณ€ํ™˜์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

Elektra๋Š” ํ˜„์žฌ ๋„ˆ๋ฌด ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋‹ด์œผ๋กœ ์ธํ•ด ๋ฌด๋„ˆ์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ œ๊ฑฐํ•˜๋Š” ๋ชจ๋“  ์“ธ๋ชจ์—†๋Š”(์•„๋ฌด๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์˜๋ฏธ์—์„œ) ์ฝ”๋“œ ๋ผ์ธ์€ Elektra๋ฅผ ๋” ์ข‹๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‹จ์ˆœํžˆ ์ฝ”๋“œ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ ํ•ด๊ฒฐ์ฑ…์€ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ์€ ์ •๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ ์–ด๋„ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๊ด€ํ•ด์„œ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ์ฝ”์–ด ๋‚ด์—์„œ LOC๊ฐ€ ์ ์„์ˆ˜๋ก ๋” ์ข‹๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๊ฒฝ์šฐ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋˜๋Š” ๊ทธ ์ผ๋ถ€๊ฐ€ ์‹คํ—˜์ ์ด๋ผ๊ณ  ์‰ฝ๊ฒŒ ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

IMO, ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋‹ค๋ฅธ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์˜์กดํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด ๊ฒฐ๋ก ์€ ์•„์ง ๋„๋ฆฌ ๋ฐ›์•„๋“ค์—ฌ์ง€์ง€๋„ ์•Š๊ณ (@sanssecours?) ๋ฌธ์„œํ™”๋˜์ง€๋„ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์•„๋Š” ํ•œ, ๋ฌธ์„œ์—๋Š” ์ €์žฅ์†Œ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋‹ค๋ฅธ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์˜์กดํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค๋Š” ๋‚ด์šฉ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ ๊ทธ๊ฒƒ์ด ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ์˜ ๊ด€์ ์—์„œ ํ›Œ๋ฅญํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ข‹์€ ์ €์žฅ์†Œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ์ œ ์ƒ๊ฐ์— ์ด๋ฏธ ๊ฝค ๋งŽ์€ ์ž‘์—…์ž…๋‹ˆ๋‹ค. ์ €์žฅ์†Œ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์œ ํ˜• ๋ณ€ํ™˜, ๋””๋ ‰ํ† ๋ฆฌ ํ‚ค ๋ฐ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ(Base64 ์ธ์ฝ”๋”ฉ)๋ฅผ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์š”๊ตฌํ•œ๋‹ค๊ณ  ํ•ด์„œ ์ž‘์—…์ด ๋” ์‰ฌ์›Œ์ง€๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ ๊ทธ๊ฒƒ์ด ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ์˜ ๊ด€์ ์—์„œ ํ›Œ๋ฅญํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ข‹์€ ์ €์žฅ์†Œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ์ œ ์ƒ๊ฐ์— ์ด๋ฏธ ๊ฝค ๋งŽ์€ ์ž‘์—…์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ํ—ฌํผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์š”์ ์ž…๋‹ˆ๋‹ค. ๊ณตํ†ต ์ฝ”๋“œ๋ฅผ ๋ถ„ํ• ํ•˜์—ฌ ๋ฌธ์ œ์˜ (์ผ๋ถ€) ๋ถ„๋ฆฌ๋ฅผ ์ œ๊ณตํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ฐœ๋ฐœ์„ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋ฒ”์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์ด ์œ ์‚ฌํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ๋ณด๋‹ค ์–ด๋ ต๋‹ค๋Š” @markus2330 ์˜ ์šฐ๋ ค์™€ ๊ด€๋ จํ•˜์—ฌ: ํ˜„์žฌ elektraTypeGet ํ•จ์ˆ˜์˜ ์•ฝ๊ฐ„ ์ˆ˜์ •๋œ ๋ฒ„์ „์„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์‹ค์€ ํ‹€๋ฆฝ๋‹ˆ๋‹ค. Plugin * handle ๋ฅผ KeySet * config ๋กœ ๋ฐ”๊ฟ”์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ ์–ด๋„ ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์œ ํ˜• ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์‹œ๊ธฐ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด toml ๋Š” TOML ์œ ํ˜• ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋Œ€์‹  type ๋ฅผ ์—ฐ๊ธฐํ•˜๋Š” INI ํด๋ฐฑ ๋ชจ๋“œ์™€ elektraTypeGet ์ œ๊ณตํ•˜๋Š” ์ผ๋ฐ˜ TOML ๋ชจ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด TOML ์‚ฌ์–‘์„ ์ค€์ˆ˜ํ•˜๋„๋ก ํ•˜๋Š” ๋งค์šฐ ์ •ํ™•ํ•œ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๊ด€์ ์—์„œ ๋ณผ ๋•Œ ํ”Œ๋Ÿฌ๊ทธ์ธ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์œ ์—ฐํ•ฉ๋‹ˆ๋‹ค. ์ ์–ด๋„ ํ˜„์žฌ ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ €์žฅ์†Œ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์œ ํ˜• ๋ณ€ํ™˜, ๋””๋ ‰ํ† ๋ฆฌ ํ‚ค ๋ฐ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ(Base64 ์ธ์ฝ”๋”ฉ)๋ฅผ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์š”๊ตฌํ•œ๋‹ค๊ณ  ํ•ด์„œ ์ž‘์—…์ด ๋” ์‰ฌ์›Œ์ง€๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ๋ถ„ํ•ดํ•ด๋ณด์ž:

  • ์ด์ง„ ๋ฐ์ดํ„ฐ: ์‹ค์ œ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋…ธ๋ ฅ์€ ์—†์Šต๋‹ˆ๋‹ค.
    if (keyIsBinary (key)) { writeValue (elektraBase64Encode (keyValue (key), keyGetValueSize (key))); } else { writeValue (keyString (value)); }
    ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋ชจ๋“  ์ƒํ™ฉ์—์„œ ๋‹ค๋ฅธ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋งˆ์šดํŠธ๋˜๋„๋ก ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ๊ณ  ๋‹จ์ˆœํžˆ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ‚ค๊ฐ€ ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ ๋ณ„๋„์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์—ฌ์ „ํžˆ keyIsBinary ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ด ์†”๋ฃจ์…˜์—๋Š” ์•„๋ฌด๋Ÿฐ ์ด์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ณ„๋„์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ „์ฒด KeySet ๋ฅผ ํ•œ ๋ฒˆ์— ๋ณ€ํ™˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ๋„ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋ชจ๋“  Base64 ํ‚ค๊ฐ€ ์ƒ๋‹นํ•œ ์–‘์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‚ญ๋น„ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • ๋””๋ ‰ํ† ๋ฆฌ ํ‚ค: ์šฐ์„  ๊ฑฐ์˜ ๋ชจ๋“  ์ƒํ™ฉ์—์„œ ๊ฐ’์ด ์žˆ๋Š” ์žŽ์ด ์•„๋‹Œ ํ‚ค๊ฐ€ ์ด์ƒํ•˜๋ฏ€๋กœ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. #3256์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์ด๋Ÿฌํ•œ ํ‚ค๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ด ๊ฒฝ์šฐ์— ํ›จ์”ฌ ๋” ์ ํ•ฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๋ฐ ์ฒ˜๋ฆฌ ์˜ค๋ฒ„ํ—ค๋“œ, ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋ณต์žกํ•œ ๋งˆ์šดํŠธ ํฌ์ธํŠธ ๊ตฌ์„ฑ ๋ฐ ์œ ์—ฐ์„ฑ์„ ๋น„๋กฏํ•œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. @markus2330์ด (๋‹ค์†Œ) ์ด ์ ์— ๋™์˜ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • ์œ ํ˜•: ๊ธฐ๋ณธ ์œ ํ˜• ์‹œ์Šคํ…œ์ด ์žˆ๋Š” ํ˜•์‹์šฉ ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์œ ํ˜•์— ๋Œ€ํ•ด ์ตœ์†Œํ•œ ์ผ๋ถ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ „์ฒด ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์ผ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ ๋‹ค๋ฅธ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ๋‹ค์–‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์€ ๊ฒฐ์ฝ” ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ง์ ‘์ ์ธ ๊ตฌ์„ฑ์ด ํ•„์š”ํ•˜์ง€ ์•Š๋„๋ก ์œ ํ˜•์— ๋Œ€ํ•œ ๋งค์šฐ ์ƒ์„ธํ•œ ํ˜•์‹ ์‚ฌ์–‘์ด ์žˆ๋”๋ผ๋„ ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ด ์‚ฌ์–‘์„ ์–ด๋–ค ์‹์œผ๋กœ๋“  ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ decimal/double ๊ฐ’์ด long_long/double์„ ์˜ค๋ฒ„/์–ธ๋”ํ”Œ๋กœํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋Š” ํ™•์ธํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ typeplugin์—์„œ ์ˆ˜ํ–‰ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ข‹์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™•์ธ์šฉ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜์ด ๊ฒฝ์šฐ ๋ณ„๋„์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ๋„ ์†”๋ฃจ์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค.

์•„๋‹ˆ์š”, ๋ถˆํ–‰ํžˆ๋„ ๋ณ„๋„์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์†”๋ฃจ์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฑฐ๊ธฐ์—์„œ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์†”๋ฃจ์…˜์€ ๋ชจ๋“  ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด doc/tutorials/storage-plugins.md๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ชจ๋“  ๊ฒƒ(๋ฐ”์ด๋„ˆ๋ฆฌ ์ฒ˜๋ฆฌ ์ œ์™ธ)์„ ๊ตฌํ˜„ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์šฉ์ž๋Š” ์•„๋งˆ๋„ kdb set /some/key/mounted/with/toml true๊ฐ€ ์ž‘๋™ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์˜ˆ์ƒํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•„๋‹ˆ์š”, ์‚ฌ์šฉ์ž๋Š” ์ด๋ฅผ ๊ธฐ๋Œ€ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. Elektra์—์„œ 1/0์€ ์ฐธ/๊ฑฐ์ง“์ž…๋‹ˆ๋‹ค. ์ €์žฅ์†Œ ํ”Œ๋Ÿฌ๊ทธ์ธ๋งŒ์ด ์ด๊ฒƒ์„ ๋‹ค๋ฅธ ๊ฒƒ์— ๋งคํ•‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทผ๊ฑฐ: ์ตœ์†Œํ•œ ์‚ฌ์–‘ ์ˆ˜์ค€์—์„œ๋Š” 1/0๋งŒ ์ž‘๋™ํ•˜๋ฏ€๋กœ ๋‹ค๋ฅธ ๊ณณ์—์„œ true/false๋ฅผ ์ž‘๋™์‹œํ‚ค๋Š” ๊ฒƒ์€ ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ๋ฟ์ž…๋‹ˆ๋‹ค(์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ œ์™ธ).

์ด๊ฒƒ์€ ์ €์žฅ์†Œ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋‹ค๋ฅธ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ €์žฅ์†Œ ํ˜•์‹์ด ์ง€์›ํ•˜๋Š” ๋ชจ๋“  ์œ ํ˜•๊ณผ ๊ด€๋ จ ๋ณ€ํ™˜์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

๊ทธ๋ž˜, ๋‚œ ๋™์˜.

๋‹จ์ˆœํžˆ ์ฝ”๋“œ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ ํ•ด๊ฒฐ์ฑ…์€ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ์€ ์ •๋‹นํ•ฉ๋‹ˆ๋‹ค.

๋ฌผ๋ก  ์šฐ๋ฆฌ๋Š” "์˜ฌ๋ฐ”๋ฅธ" ์ฝ”๋“œ๋ฅผ ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋Œ€๋ฅผ ์ถฉ์กฑ์‹œํ‚ค์ง€ ์•Š๊ณ  Elektra์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„์— ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค์ง€ ์•Š๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์œ ํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ผ๋ถ€ ๊ธฐ๋Šฅ์€ Elektra์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„๊ณผ ํ•จ๊ป˜ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ ์–ด๋„ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๊ด€ํ•ด์„œ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ์ฝ”์–ด ๋‚ด์—์„œ LOC๊ฐ€ ์ ์„์ˆ˜๋ก ๋” ์ข‹๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๊ฒฝ์šฐ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋˜๋Š” ๊ทธ ์ผ๋ถ€๊ฐ€ ์‹คํ—˜์ ์ด๋ผ๊ณ  ์‰ฝ๊ฒŒ ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถˆํ–‰ํžˆ๋„ ์ด๊ฒƒ์€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์•„์ง*). ์‚ฌ๋žŒ๋“ค์€ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ƒํƒœ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํŒ๋‹จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ตœ๊ทผ์— ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”. #3472 ์—ฌ๊ธฐ์„œ ์œ ์ง€ ๊ด€๋ฆฌ๋˜์ง€ ์•Š๊ณ  ๋ฒ„๊ทธ๊ฐ€ ๋งŽ์€ INI ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ๋” ๋‚˜์œ ๊ฒƒ์€ ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š” ๋ ˆ๊ฑฐ์‹œ xmltool ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•œ๋‹ค๊ณ  ๋ฏฟ์—ˆ์Šต๋‹ˆ๋‹ค.

  • #666์„ ์žฌ์ž‘์—…ํ•˜๊ณ  ๋งˆ์šดํŠธํ•˜๋Š” ๋™์•ˆ ๊ฒฝ๊ณ ๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ๋” ์ž˜ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €์žฅ์†Œ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์œ ํ˜• ๋ณ€ํ™˜, ๋””๋ ‰ํ† ๋ฆฌ ํ‚ค ๋ฐ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ(Base64 ์ธ์ฝ”๋”ฉ)๋ฅผ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์š”๊ตฌํ•œ๋‹ค๊ณ  ํ•ด์„œ ์ž‘์—…์ด ๋” ์‰ฌ์›Œ์ง€๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

@sanssecours YAML ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์œ ํ˜• ๋ณ€ํ™˜์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๊นŒ?

๊ทธ๊ฒƒ์€ ์‚ฌ์‹ค ์ž˜๋ชป๋œ

์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์ด ์™„๋ฃŒ๋˜๋ฉด ๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค :stuck_out_tongue_winking_eye:

๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๊ด€์ ์—์„œ ๋ณผ ๋•Œ ํ”Œ๋Ÿฌ๊ทธ์ธ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์œ ์—ฐํ•ฉ๋‹ˆ๋‹ค. ์ ์–ด๋„ ํ˜„์žฌ ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ฌด๋„ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋…ผ์Ÿํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์œ ์—ฐ์„ฑ์—๋Š” ๋•Œ๋กœ ์—„์ฒญ๋‚œ ๋Œ€๊ฐ€๊ฐ€ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ๋…ธ๋ ฅ์€ ์—†์Šต๋‹ˆ๋‹ค.

base64๊ฐ€ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ธ์ฝ”๋”ฉํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ์•„๋‹™๋‹ˆ๋‹ค. base64๊ฐ€ ํ•„์š”ํ•œ ํ‘œ์ค€์˜ ๊ฒฝ์šฐ ํ•˜๋“œ ์ฝ”๋”ฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ( @sanssecours YAML์˜ ๊ฒฝ์šฐ์ธ๊ฐ€์š”?)

๊ทธ๋Ÿฌ๋‚˜ TOML์˜ ๊ฒฝ์šฐ ๋‹จ์ˆœํžˆ "Base64 ๋˜๋Š” ๋‹ค๋ฅธ ์ ์ ˆํ•œ ASCII ๋˜๋Š” UTF-8 ์ธ์ฝ”๋”ฉ"์ด๋ผ๊ณ  ํ‘œ์‹œ๋˜๋ฏ€๋กœ ๋‹ค๋ฅธ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ˜„์žฌ ์†”๋ฃจ์…˜์€ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๊ฑฐ๋‚˜ ํ•„์š”์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋งˆ์šดํŠธํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@bauhaus93 - infos/needs = base64 ๋Š” - infos/needs = binary ๋กœ ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋จผ์ € ๊ฑฐ์˜ ๋ชจ๋“  ์ƒํ™ฉ์—์„œ ๊ฐ’์ด ์žˆ๋Š” ์žŽ์ด ์•„๋‹Œ ํ‚ค๊ฐ€ ์ด์ƒํ•˜๋ฏ€๋กœ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋งŽ์€ ํ˜•์‹์—์„œ ๋งค์šฐ ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์–‘์„ ํ™•์žฅํ•  ๋•Œ ๋งค์šฐ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๊ฐ’์ด ์žˆ๋Š” ํ‚ค์—์„œ ํ•˜์œ„ ํ‚ค ์ƒ์„ฑ).

[๋””๋ ‰ํ† ๋ฆฌ ํ‚ค] @markus2330์ด (๋‹ค์†Œ) ์ด ์ ์— ๋™์˜ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ด๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค(์ด์Šค์ผ€์ดํ”„๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๊ณ  ์˜ฌ๋ฐ”๋ฅธ ์ด์Šค์ผ€์ดํ”„๊ฐ€ ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ฃผ์š” ์ž‘์—… ์ค‘ ํ•˜๋‚˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์ง€๋งŒ "directoryvalue" ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์•„๋‹ ์ˆ˜๋„ ์žˆ์Œ).

์ข‹์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™•์ธ์šฉ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

" toml ํ”Œ๋Ÿฌ๊ทธ์ธ์€ type ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค"๋ผ๋Š” ๋ฌธ๊ตฌ์— ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ฒ„์ „์—์„œ๋Š” type ๋งŒ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

https://github.com/ElektraInitiative/libelektra/blob/c61e388c4aa950cf84aa2f00fba7cdd34a47640e/src/plugins/toml/README.md#L5 -L6

type ๊ฐ€ needs ๋กœ ์„ ์–ธ๋˜๋”๋ผ๋„ ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ "using"์ด๋ผ๊ณ  ๋ถ€๋ฅด์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. toml ์‹ค์ œ๋กœ type ๋Œ€ํ•œ ์ง์ ‘์ ์ธ ์ œ์–ด ๊ถŒํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋‚ด๊ฐ€ toml ๊ฐ€ type ์— ์˜์กดํ•œ๋‹ค๊ณ  ๋งํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค. type ๊ฐ€ ํŠน์ • ๋ฐฉ์‹์œผ๋กœ ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์•„๋ฌด ๊ฒƒ๋„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

#666์„ ์žฌ์ž‘์—…ํ•˜๊ณ  ๋งˆ์šดํŠธํ•˜๋Š” ๋™์•ˆ ๊ฒฝ๊ณ ๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ๋” ์ž˜ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋™์˜ํ•œ๋‹ค. ํŠน๋ณ„ํ•œ "์ด ๋งˆ์šดํŠธ ํฌ์ธํŠธ๊ฐ€ ์‹คํ—˜์  ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•จ์„ ์ธ์ •ํ•ฉ๋‹ˆ๋‹ค" ํ‚ค๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š๋Š” ํ•œ ๋ชจ๋“  kdbGet ์—๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

base64๊ฐ€ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ธ์ฝ”๋”ฉํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ์•„๋‹™๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์‹ค์ œ๋กœ binary ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•œ ์ธ์ˆ˜์ž…๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ํ‚ค๋ฅผ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์—ฌ์ „ํžˆ ์›ํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์–ด๋Š ์ •๋„ ์ ˆ์•ฝํ•˜๊ณ  ์„ฑ๋Šฅ๋„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (ํ•˜์ง€๋งŒ ๊ทธ๊ฑด ๋‹ค๋ฅธ ๋ฌธ์ œ)

๋งŽ์€ ํ˜•์‹์—์„œ ๋งค์šฐ ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค.

์˜ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋ฆฌ๊ณ  ์‚ฌ์–‘์„ ํ™•์žฅํ•  ๋•Œ ๋งค์šฐ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๊ฐ’์ด ์žˆ๋Š” ํ‚ค์—์„œ ํ•˜์œ„ ํ‚ค ์ƒ์„ฑ).

์‚ฌ์‹ค์ด์ง€๋งŒ ๊ทธ ๊ฒฝ์šฐ์—๋Š” (์ตœ์ข… ์‚ฌ์šฉ์ž POV์—์„œ) "๋‘˜ ์ค‘ ํ•˜๋‚˜ ๋˜๋Š” ๋‘˜ ์ค‘ ํ•˜๋‚˜" ์†”๋ฃจ์…˜์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ผ ๊ฐ’๊ณผ ํ•จ๊ป˜ ์ด์ „ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ํ•˜์œ„ ํ‚ค์™€ ํ•จ๊ป˜ ์ƒˆ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ตฌ์„ฑ์ด ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ ๋งํ•ด์„œ, ๊ฐ’์ด ์žˆ๋Š” ๋ฆฌํ”„๊ฐ€ ์•„๋‹Œ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ๊ฐ€๋Šฅํ•˜๋ฉด ํ”ผํ•ด์•ผ ํ•˜๋ฉฐ ์„ ํ˜ธ๋˜๋Š” ์†”๋ฃจ์…˜์€ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด์Šค์ผ€์ดํ”„๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— "directoryvalue" ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

#3256์—์„œ ๋‚˜๋Š” ํƒˆ์ถœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด์Šค์ผ€์ดํ”„ ๋ฌธ์ œ( directoryvalue ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ชจ๋“  ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•ด)์™€ ๋‹ค๋ฅธ ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” #3223์˜ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. (๋งค์šฐ ํ˜•์‹์ ์ธ) ์ œ์•ˆ ๋„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ๋‚˜๋Š” ์—ฌ์ „ํžˆ ์ด๋Ÿฌํ•œ ๋ณ€ํ™”์— ๋งค์šฐ ์ฐฌ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋Š˜์ด๋‚˜ ๋‚ด์ผ ๊ทธ ๋ฌธ์„œ์— ํ‰๋ฒ”ํ•œ ์˜์–ด ์„ค๋ช…์„ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@sanssecours YAML ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์œ ํ˜• ๋ณ€ํ™˜์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๊นŒ?

Yan LR ๋ฐ YAML CPP๋Š” ๋ถ€์šธ์— type ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. YAML CPP๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ์— base64 ํ”Œ๋Ÿฌ๊ทธ์ธ๋„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

base64๊ฐ€ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ธ์ฝ”๋”ฉํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ์•„๋‹™๋‹ˆ๋‹ค. base64๊ฐ€ ํ•„์š”ํ•œ ํ‘œ์ค€์˜ ๊ฒฝ์šฐ ํ•˜๋“œ ์ฝ”๋”ฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ( @sanssecours YAML์˜ ๊ฒฝ์šฐ์ธ๊ฐ€์š”?)

์˜ˆ, ์ œ๊ฐ€ ์•„๋Š” ํ•œ YAML์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋Š” ํ•ญ์ƒ Base64 ์ธ์ฝ”๋”ฉ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

[๊ฐ’์ด ์žˆ๋Š” ๋ฆฌํ”„๊ฐ€ ์•„๋‹Œ ํ‚ค] ์˜ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

XML ๋ฐ ๋Œ€๋ถ€๋ถ„์˜ INI ๋ฐฉ์–ธ( [key] ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋„ key=value ํ—ˆ์šฉ)

์‚ฌ์‹ค์ด์ง€๋งŒ ๊ทธ ๊ฒฝ์šฐ์—๋Š” (์ตœ์ข… ์‚ฌ์šฉ์ž POV์—์„œ) "๋‘˜ ์ค‘ ํ•˜๋‚˜ ๋˜๋Š” ๋‘˜ ์ค‘ ํ•˜๋‚˜" ์†”๋ฃจ์…˜์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ผ ๊ฐ’๊ณผ ํ•จ๊ป˜ ์ด์ „ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ํ•˜์œ„ ํ‚ค์™€ ํ•จ๊ป˜ ์ƒˆ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ตฌ์„ฑ์ด ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ, ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. ๋ฌด์–ธ๊ฐ€๊ฐ€ ์„น์…˜์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ์„น์…˜ ๋‚ด ์–ด๋”˜๊ฐ€๋กœ ๊ฐ’์„ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด deluser.conf ์—๋Š” BACKUP = 0 ๋ฐ BACKUP_TO = "." ์žˆ์Šต๋‹ˆ๋‹ค. ์„น์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋Œ€๋ถ€๋ถ„์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋‹จ์ˆœํžˆ BACKUP ๋Œ€์‹  BACKUP_ENABLE ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์ด์Šค์ผ€์ดํ”„ ๋ฌธ์ œ( directoryvalue ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ชจ๋“  ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•ด)์™€ ๋‹ค๋ฅธ ๋ช‡ ๊ฐ€์ง€๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” #3223์˜ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ #3223์˜ ์ œ์•ˆ์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋” ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค(์•„์ง๋„ ๋งค์šฐ ๊น๋‹ˆ๋‹ค).

https://github.com/kodebach/libelektra/blob/dcec6e865bba32f6d83c40c2f711c2e70dde6d62/doc/proposals/keynames.md

๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋Š” ๋ˆ„๊ฐ€ ์ด ๋ชจ๋“  ๊ฒƒ์„ ๊ตฌํ˜„ํ•  ๊ฒƒ์ธ๊ฐ€ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ํ˜„์ƒ ์œ ์ง€, ์ฆ‰ ๋งŽ์€ ์ž‘์—…๊ณผ๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ ๋ฉ€๋‹ค(์šฉ์–ด์˜ ๋ณ€๊ฒฝ๋งŒ์œผ๋กœ๋„ ์—„์ฒญ๋‚œ ์ž‘์—…๋Ÿ‰์ด๋‹ค). ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ œ์•ˆ์„œ์™€ ํ•จ๊ป˜ PR์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋…ผํ‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ•œ ๋ฐœ ๋ฌผ๋Ÿฌ์„œ์„œ ์šฐ๋ฆฌ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„ ๋‚ด์—์„œ ์‹คํ˜„ ๊ฐ€๋Šฅํ•œ ์†”๋ฃจ์…˜์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ใ…‹ ์ œ์•ˆ์„œ์˜ ์ฒซ ๋ฒˆ์งธ ๋ถ€๋ถ„์€ ์‹ค์ œ๋กœ ํ‚ค ์ด๋ฆ„์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•œ ํ›Œ๋ฅญํ•œ ์ž์Šต์„œ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ํŠœํ† ๋ฆฌ์–ผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด ๋†€๋ž์Šต๋‹ˆ๋‹ค. :sparkling_heart:

๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋Š” ๋ˆ„๊ฐ€ ์ด ๋ชจ๋“  ๊ฒƒ์„ ๊ตฌํ˜„ํ•  ๊ฒƒ์ธ๊ฐ€ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒŒ ํ•ญ์ƒ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค...

๊ทธ๊ฒƒ์€ ํ˜„์ƒ ์œ ์ง€, ์ฆ‰ ๋งŽ์€ ์ž‘์—…๊ณผ๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ ๋ฉ€๋‹ค(์šฉ์–ด์˜ ๋ณ€๊ฒฝ๋งŒ์œผ๋กœ๋„ ์—„์ฒญ๋‚œ ์ž‘์—…๋Ÿ‰์ด๋‹ค).

์šฉ์–ด์˜ ๋ณ€๊ฒฝ์€ ํ™•์‹คํžˆ ๊ฐ€์žฅ ํฐ ๋ถ€๋ถ„์ด๋ฉฐ ํŠนํžˆ ๋ชจ๋“  ๋ฌธ์„œ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ์ž‘์—…์„ ํ•œ ์‚ฌ๋žŒ์ด ์ˆ˜ํ–‰ํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ์€ ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ณ  ์ง€๋ฃจํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ์— ๋Œ€ํ•œ ๊ด‘๋ฒ”์œ„ํ•œ ์ง€์‹์ด ์—†์–ด๋„ ๋ˆ„๊ตฌ๋‚˜ ๋„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ๋ฌธ์„œ๋ฅผ ์ฝ๊ณ  "๊ธฐ๋ณธ ์ด๋ฆ„"๊ณผ ๊ฐ™์€ ํ•ญ๋ชฉ์„ ๊ต์ฒดํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ œ์•ˆ์„œ์™€ ํ•จ๊ป˜ PR์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋…ผํ‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ•œ ๋ฐœ ๋ฌผ๋Ÿฌ์„œ์„œ ์šฐ๋ฆฌ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„ ๋‚ด์—์„œ ์‹คํ˜„ ๊ฐ€๋Šฅํ•œ ์†”๋ฃจ์…˜์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ™๋ณด๋ฅผ ์‹œ์ž‘ํ•˜๊ฒ ์ง€๋งŒ, (ํ˜ผ์ž์„œ) ์‹œ๊ฐ„์ด ์ด‰๋ฐ•ํ•˜๊ฒŒ ๋๋‚ผ ์ˆ˜ ์žˆ์„์ง€๋Š” ์žฅ๋‹ดํ•  ์ˆ˜ ์—†๋‹ค.
keyBaseName , keySetBaseName ๋ฐ keyAddBaseName ๋Œ€ํ•œ ๋ชจ๋“  ํ˜ธ์ถœ์ด keyLastUnescapedPart , keySetLastUnescapedPart / keySetLastLiteralPart ๋กœ ๋Œ€์ฒด๋œ ๋กœ์ปฌ ์ง€์ ์ด ์ด๋ฏธ ์žˆ์Šต๋‹ˆ๋‹ค. keyAddUnescapedPart / keyAddLiteralPart . ์ฒซ ๋ฒˆ์งธ ์ œ์•ˆ์„ ์ž‘์„ฑํ•œ ํ›„ ๋ฐ˜์ž๋™ ์ •๊ทœ์‹ ๋ฐ”๊พธ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ํ•ด๋‹น ๋ถ„๊ธฐ์—์„œ ์ƒˆ ๊ธฐ๋Šฅ์€ ์ด์ „ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ #define ์ด๋ฏ€๋กœ ์‹ค์ œ ๊ตฌํ˜„์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ž‘์„ฑ๋˜์–ด์•ผ ํ•˜๊ณ  ํ…Œ์ŠคํŠธ ๋ฐ ์•„๋งˆ๋„ ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ €์—๊ฒŒ ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋Š” ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์ž…๋‹ˆ๋‹ค. ์ฝ”์–ด ๋ฐ ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ์™€ ํ•˜๋‚˜์˜ ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•œ ์ฝ”๋“œ๋ฅผ ์—ฐ๊ตฌํ•˜๊ณ  ๋ชจ๋“  ํ˜•์‹์˜ ๋ชจ๋“  ๋ณต์žก์„ฑ์„ ํŒŒ์•…ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋ฉด ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

ใ…‹ ์ œ์•ˆ์„œ์˜ ์ฒซ ๋ฒˆ์งธ ๋ถ€๋ถ„์€ ์‹ค์ œ๋กœ ํ‚ค ์ด๋ฆ„์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•œ ํ›Œ๋ฅญํ•œ ์ž์Šต์„œ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ํŠœํ† ๋ฆฌ์–ผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด ๋†€๋ž์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ด๋ ‡๊ฒŒ ์ผ์Šต๋‹ˆ๋‹ค. ๋‚ด ๊ณ„ํš์€ ์ด ์ œ์•ˆ์˜ ์ผ๋ถ€๋ฅผ #3447์˜ ๋ฌธ์„œ์— ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋งค์šฐ ์ค‘์š”ํ•œ ์ผ๋ถ€๋ฅผ ์ƒ๋žตํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— 1:1๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(์˜ˆ: ํ‘œ์ค€ ๋Œ€ ๋น„ํ‘œ์ค€).

๋‚˜๋Š” ์†”์งํ•˜๊ฒŒ ๋งํ•ด์•ผ ํ•˜๋ฉฐ ์ž˜๋ชป๋œ ํฌ๋ง์„ ์ฃผ์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. LCDproc์—์„œ ๋ณด์•˜๋“ฏ์ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์ž‘์—…์„ ์™„๋ฃŒํ•˜๋Š” ๋ฐ ๋›ฐ์–ด๋“œ๋Š” ์ผ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์ง€๋ฃจํ•  ๋•Œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ํ•˜๋‚˜๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํŒŒ๊ดดํ•˜๋Š” PR์€ ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ด PR์—์„œ ๋งŽ์€ ์ด์ ์„ ์–ป์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ง€๊ธˆ ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ์— ๊ตฌ๋ฌธ ์˜ค๋ฅ˜๋ฅผ ๊ฐ‘์ž๊ธฐ ์ƒ์„ฑํ•œ๋‹ค๋Š” ์ ์—์„œ "๋” ๋‚˜๋น ์ง‘๋‹ˆ๋‹ค". ์ด๊ฒƒ์ด ์ „๋ฐ˜์ ์œผ๋กœ ๋‚˜์œ ์ƒ๊ฐ์„ ์˜๋ฏธํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์•ฝ๊ฐ„์˜ ๊ฐœ์„ ์„ ํ†ตํ•ด ํ˜„์žฌ ์ƒํƒœ๋ณด๋‹ค ๋” ๋‚˜์„ ์ˆ˜ ์žˆ์ง€๋งŒ ํ˜„์žฌ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋‹ค๋ฅธ ๊ธด๊ธ‰ํ•˜๊ณ  ์ค‘์š”ํ•œ ๋ฏธํ•ด๊ฒฐ ์ž‘์—…๊ณผ ํ•จ๊ป˜ ์–ด๋–ป๊ฒŒ ๊ทธ๋ ‡๊ฒŒ ํฐ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ #3447(docu)์— ์ง‘์ค‘ํ•˜์—ฌ ๋งˆ์นจ๋‚ด #2969๋ฅผ ์™„๋ฃŒํ•˜๊ณ  TOML ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ฐœ์„ ํ•˜๊ณ  1.0(https://github.com/ElektraInitiative/libelektra/milestone/12 ๋ฐ https://github.com/ElektraInitiative/libelektra/milestone/12)์— ํ•„์š”ํ•œ ๊ธฐํƒ€ ์ค‘์š”ํ•œ ์ฃผ์ œ๋ฅผ ๊ฐœ์„ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. github.com/ElektraInitiative/libelektra/milestone/14). ์ด๊ฒƒ์ด ์ข‹์•„ ๋ณด์ด๋ฉด ์šฐ๋ฆฌ๊ฐ€ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ์•„์ด๋””์–ด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ ์ด ํ† ๋ก ์˜ ๊ฒฐ๋ก ์€ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์ด ์ž‘๋™ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋” ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ™•์‹คํžˆ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๊ฒฝ์šฐ ์ œ์™ธ). ์ด ๊ฒฐ๋ก ์€ ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ ํŠœํ† ๋ฆฌ์–ผ์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
@bauhaus93 ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ ํŠœํ† ๋ฆฌ์–ผ์„ ๊ณ„์†

ํ•˜๋‚˜๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํŒŒ๊ดดํ•˜๋Š” PR์€ ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์•„๋ฌด๋„ ๊ทธ๋Ÿฐ PR์„ ๋ณ‘ํ•ฉํ•  ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค... ๋‚˜๋Š” ๋‹จ์ง€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ ์—…๋ฐ์ดํŠธ์— ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ด๋ผ๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์›๋ž˜ ์ž‘์„ฑ์ž์ž…๋‹ˆ๋‹ค. #3491 ์ดํ›„์—๋Š” ๋” ๋ณต์žกํ•œ ์ €์žฅ์†Œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ค‘ ์ผ๋ถ€๊ฐ€ ์ œ๊ฑฐ๋˜๋ฏ€๋กœ ์ „์ฒด ์ž‘์—…์ด ๋” ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ด PR์—์„œ ๋งŽ์€ ์ด์ ์„ ์–ป์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ง€๊ธˆ ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ์— ๊ตฌ๋ฌธ ์˜ค๋ฅ˜๋ฅผ ๊ฐ‘์ž๊ธฐ ์ƒ์„ฑํ•œ๋‹ค๋Š” ์ ์—์„œ "๋” ๋‚˜๋น ์ง‘๋‹ˆ๋‹ค".

์ด๋Ÿฐ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์ œ์•ˆ ๋ง๋ฏธ์— ๋ถ€๋ถ„์ ์ธ ์„ค๋ช…๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด๋กœ ๋ฒˆ์—ญ ๋  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— AFAIK๋Š” ์ €์žฅ ํ”Œ๋Ÿฌ๊ทธ์ธ ํŒŒ์ผ์„ ๊ฑฐ๋ถ€ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ,์ด ์•ˆ KeySet .

ํ•œ ๊ฐ€์ง€ ์˜ˆ์™ธ๋Š” Elektra์˜ ํ‚ค ์ด๋ฆ„(์ด์Šค์ผ€์ดํ”„ ์ฒ˜๋ฆฌ ๋˜๋Š” ์ด์Šค์ผ€์ดํ”„ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์Œ)์„ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ํ˜•์‹์ž…๋‹ˆ๋‹ค. ์ด ์ œ์•ˆ ์ดํ›„์—๋Š” ์ด์ „๋ณด๋‹ค ๋” ์ ์€ ์ˆ˜์˜ ํŒŒ์ผ์„ ์ˆ˜๋ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ํŒŒ์ผ์— ๋Œ€ํ•œ ๊ตฌ๋ฌธ์€ ํ•ญ์ƒ ํ‚ค ์ด๋ฆ„์— ๋Œ€ํ•œ ๊ตฌ๋ฌธ์— ์˜์กดํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Š” ์ „์ ์œผ๋กœ ์˜ˆ์ƒ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•ฝ๊ฐ„์˜ ๊ฐœ์„ ์„ ํ†ตํ•ด ํ˜„์žฌ ์ƒํƒœ๋ณด๋‹ค ๋” ๋‚˜์„ ์ˆ˜ ์žˆ์ง€๋งŒ ํ˜„์žฌ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋‹ค๋ฅธ ๊ธด๊ธ‰ํ•˜๊ณ  ์ค‘์š”ํ•œ ๋ฏธํ•ด๊ฒฐ ์ž‘์—…๊ณผ ํ•จ๊ป˜ ์–ด๋–ป๊ฒŒ ๊ทธ๋ ‡๊ฒŒ ํฐ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ์ œ์•ˆ์ด ์ฆ‰์‹œ ์ฑ„ํƒ๋˜๋ฆฌ๋ผ๊ณ ๋Š” ์ „ํ˜€ ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ 1.0 ์ด์ „์— ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์„ ๋ฐ˜๋“œ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. 1.0์ด ์ถœ์‹œ๋˜๋ฉด ์ด ์ œ์•ˆ์€ ์—„์ฒญ๋‚œ ๋ณ€ํ™”๋ฅผ ์ผ์œผํ‚ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Elektra์˜ ํƒ€๊ฒŸ์ธต์„ ๊ณ ๋ คํ•  ๋•Œ 1.0 ์ดํ›„ 1~2๋…„ ํ›„์— ๋ฒ„์ „ 2.0์„ ์ถœ์‹œํ•˜๋Š” ๊ฒƒ์€ ์ข‹์€ ์ƒ๊ฐ์ด ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ #3447(docu)์— ์ง‘์ค‘ํ•˜๊ณ  ๋งˆ์นจ๋‚ด #2969๋ฅผ ์™„๋ฃŒํ•˜๊ณ  TOML ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฐ 1.0์— ํ•„์š”ํ•œ ๊ธฐํƒ€ ์ค‘์š”ํ•œ ์ฃผ์ œ๋ฅผ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.

์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ 1.0์ด ๋ฆด๋ฆฌ์Šค๋œ ํ›„ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ํ•œ๋™์•ˆ ๋งค์šฐ ์–ด๋ ค์šธ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ ์žˆ์–ด ์ด ํ† ๋ก ์˜ ๊ฒฐ๋ก ์€ ์ €์žฅ์†Œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋” ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ™•์‹คํžˆ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๐Ÿ‘

๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

IMO, ์ด์ง„ ๊ฐ’์˜ ๊ฒฝ์šฐ๋Š” ๋งค์šฐ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋งŽ์€ ๊ฒƒ๋“ค( rgbcolor , macaddr , ipaddr ๋“ฑ)๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ 1:1 ํ‚ค ๊ฐ’ ๋ณ€ํ™˜์ด๋ฏ€๋กœ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์‹ค์ œ๋กœ ์—ฌ๊ธฐ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ํ‚ค๋งŒ ์ฒ˜๋ฆฌํ•˜๋Š” ์ƒˆ๋กœ์šด ํ”Œ๋Ÿฌ๊ทธ์ธ API๊ฐ€ ๊ฐœ์„ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜ํ–‰๋˜๋ฉด ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— 1.0 ์ดํ›„์— ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„ -> ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์˜ˆ, ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋ด…๋‹ˆ๋‹ค. 1.0์ด ๋‚˜์˜ค๋ฉด ์ด ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋น„ํ˜„์‹ค์ ์ด๋ฉฐ(1.0์˜ ์ „์ฒด ๋ชฉ์ ์€ ๊ทธ๋Ÿฌํ•œ ๊ฒฐ์ •์„ ๋™๊ฒฐํ•˜์—ฌ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๊ฒƒ์— ์˜์กดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค) ๊ทธ๋Ÿฌํ•œ ๊ฐœ์„ ์ด ์ด์ „์— ์žˆ์—ˆ์œผ๋ฉด ์ข‹์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. . ๊ทธ๋Ÿฌ๋‚˜ ๋งํ–ˆ๋“ฏ์ด ์šฐ๋ฆฌ๋Š” ์ •๋ง๋กœ ์ค‘์š”ํ•œ ์ผ์„ ๋๋‚ด๋Š” ๋ฐ ์ง‘์ค‘ํ•ด์•ผ ํ•˜๋ฉฐ ํ˜„์žฌ์˜ ์ธ๋ ฅ์œผ๋กœ ์ด๊ธธ ์ˆ˜ ์—†๋Š” ์ข‹์€ ์ „ํˆฌ์—์„œ ์—๋„ˆ์ง€๋ฅผ ์žƒ์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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