Formulas 2.0: ๊ธฐ์กด ์ค์ ์ผ๋ก ์๋กญ๊ฒ ๊ฐ์ ๋ Notion ์์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
Notion ์์์ ์ฌ์ฉํด ๋ณธ ์ ์๋ ๋ถ์ด๋ผ๋ฉด ์ด๋ค ๋ถ๋ถ์ด ๋ฐ๋์๋์ง ๊ถ๊ธํ์ค ํ ๋ฐ์. ์ด ๊ฐ์ด๋์์ ์๋กญ๊ฒ ๋ณ๊ฒฝ๋ ์์์ ๋ฌด์์ด๊ณ , ์์ ํ์ ์ ์ ๋ค์ ๊ธฐ์กด ์์ ์๋ ์ด๋ค ์ํฅ์ด ์๋์ง ์์ธํ๊ฒ ์ค๋ช ํด ๋๋ฆด๊ฒ์.

(1) ์ฌ์ฉ์๊ฐ ์ข ๋ ์ฝ๊ฒ ์์์ ์์ฑํ๊ณ , (2) ๋ณด๋ค ์ฌํํ๊ณ ์ง๊ด์ ์ธ Notion ํน์ ์ ์์ ์ถ๋ ฅ์ ๋์ถํ๋ฉฐ, (3) ์์ ์ธ์ด๊ฐ ๋์ฑ๋ ๊ตฌ์ฒด์ ์ธ ์์ฒญ์ ์ํํ ์ ์๋๋ก Notion ์์ ๊ธฐ๋ฅ์ด ๋ํญ ๊ฐ์ ๋์์ต๋๋ค.

๊ธฐ์กด ์์์ ์ด๋ป๊ฒ ๋๋์?
์ด ๊ฐ์ด๋์์ ์์ ๊ธฐ๋ฅ์ด ์ด๋ป๊ฒ ๋ณ๊ฒฝ๋์๋์ง ์ดํด๋ณด๊ณ , ๊ธฐ์กด ์์ ์ฌ์ฉ์๋ฅผ ์ํ ๋ค์ํ ํ์ฉ๋ฒ์ ์๋ ค๋๋ฆด๊ฒ์. ์์ ์์ฒด๋ฅผ ์ฒ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ด๋ณด์๋ฅผ ์ํ ๊ฐ์ด๋์์ ์์์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ฉ์ฑ์ ๋์ฑ ํ์ฅํ๋ ๋ฒ์ ๋ํด ๋จผ์ ์์๋ณด์ธ์.
๊ทธ๋ผ, ์์ 2.0 ๋ฒ์ ์ ์๋ก ์ถ๊ฐ๋ ๊ธฐ๋ฅ์ ์๊ฐํด ๋๋ฆด๊ฒ์.
๋ ๊ฐํธํด์ง ์์ ์์ฑ๊ณผ ํธ์ง โ ํธ์ง๊ธฐ์์ Tab์ด๋ Space ํค ๋ฑ์ ์ด์ฉํด ์์ ์ค๋ฐ๊ฟ๋ ํ ์ ์๊ณ , ์ค๋ฅ๋ ์ข ๋ ์ฝ๊ฒ ํฌ์ฐฉํ ์ ์๊ฒ ๋์์ต๋๋ค. ์์์ ์์ฑํ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ฌ๋ฌ ์ค ํธ์ง์ด ๊ฐ๋ฅํ ์๋ก์ด ํ์ฅํ ํธ์ง๊ธฐ๊ฐ ๋ํ๋ฉ๋๋ค. ๊ธด ์์์ ๋ณด๊ณ ํธ์งํ๊ธฐ๊ฐ ๋์ฑ ์ฌ์์ก์ฃ . ๋ํ, ์ด์ ๋ถํฐ ํ์ ์ฒดํฌ๊ฐ ์คํ๋๋ฉฐ ์ฒดํฌ ์ค ๋ฐ๊ฒฌ๋ ์ค๋ฅ๋ ํธ์ง๊ธฐ์์ ๋ฐ๋ก ๊ฐ์กฐํด ๋ณด์ฌ์ฃผ๊ธฐ ๋๋ฌธ์ ๊ตฌ๋ฌธ์ ์ฝ๊ฒ ์์ ํ๊ณ ์์์ด ์ ์์ ์ผ๋ก ์๋ํ๋์ง ํ์ธํ ์ ์์ด์.
๋ค์ํ ๋ฐ์ดํฐ ์ถ๋ ฅ ์ ํ ์ง์ โ ๋ฌธ์์ด, ์ซ์, ์ฒดํฌ๋ฐ์ค(๋ถ์ธ)๋ง ์ถ๋ ฅ์ผ๋ก ์ง์ํ๋ ์์ ๊ธฐ๋ฅ์ด ์ด์ ํ์ด์ง, ๋ ์ง, ์ฌ๋, ๋ฆฌ์คํธ๊น์ง ์ง์ํฉ๋๋ค.
๋ค์ํ ๋ฐ์ดํฐ ํ์ฉ๋ ํฅ์ โ ์์ ๊ธฐ๋ฅ์ด ์ ๊ทธ๋ ์ด๋๋์ด ์ด์ ๋ฉค๋ฒ์ ์ด๋ฉ์ผ๊ณผ ์ด๋ฆ ๋ฑ์ ์ ๋ณด๋ฟ๋ง ์๋๋ผ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ฑ์๋ ์ก์ธ์คํ ์ ์์ต๋๋ค.

์๋ก์ด ์์ ์ธ์ด
์์์ ์ ๋ฐ์ดํธํ๊ณ ์ฌ๋ฌ ๋ฐ์ดํฐ ์ถ๋ ฅ ์ด์ฉํ๊ธฐ
์ง๊ธ๊น์ง๋ ์์์์ ์ฌ๋ฌ ๋ฐ์ดํฐ ์ ํ์ ๋ฌธ์์ด๋ก๋ง ์ฌ์ฉํด์ผ ํ๋๋ฐ์, ์๋ก ๊ฐ์ ๋ ๋ฒ์ ์ ์์์์๋ ๋ ๋ง์ ์ ํ์ ๋ฐ์ดํฐ ์ถ๋ ฅ๊ฐ์ ์ฐ์ถํ ์ ์์ต๋๋ค.
๊ธฐ์กด์๋ ํธํ์ฑ๊ณผ ์์ ์ฑ์ ์ํด ๋กค์ , ์ฌ๋, ํ์ผ, ๋ค์ค ์ ํ ์์ฑ์ ์ฐธ์กฐํ๋ ๊ธฐ์กด์ ๋ชจ๋ ์์์ ๋ฌธ์์ด๋ก ๋ณํ๋์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ด์ ์๋ prop("Person")์ด ์ฌ๋์ ์ด๋ฆ์ ๋ฌธ์์ด๋ก ๋ฐํํ๋ ์์์ด์์ง๋ง, ์ด์ ๋ prop("Person").map(currentValue.format()).join(",")์ด ๋์ผํ ์์
์ ์ํํฉ๋๋ค.Formulas 2.0์์๋ prop("Person")์ด ์ผํ๋ก ๊ตฌ๋ถ๋ ๋ฌธ์์ด์ด ์๋ ์ฌ๋ ๋ฆฌ์คํธ๋ฅผ ๋ฐํํ๊ธฐ ๋๋ฌธ์
๋๋ค. ์ ๋ฒ์ ์์๋ ๊ธฐ์กด ์์์ ๊ฐ์ด ๋ณ๋ ์์ด ์ ์ง๋ ์ ์๋๋ก "์ฌ๋" ๋ฆฌ์คํธ์ ๊ฐ ํญ๋ชฉ์ ์ผํ๋ก ๊ตฌ๋ถ๋๋ ๋ฌธ์์ด๋ก ๋ณํ๋ฉ๋๋ค.
๋ค์ํ ๋ฐ์ดํฐ ์ ํ์ ์ด์ฉํ๊ณ ์ถ๋ค๋ฉด ๋ณํ ์ธ์ด๋ฅผ ์ง์์ฃผ๋ฉด ๋ฉ๋๋ค. ์์ ์์์๋ prop("Person")๋ง ์ฐ๋ฉด ๋๋ ๊ฒ์ด์ฃ . ์ด ๊ฒฝ์ฐ, ์ผ๋ฐ ํ
์คํธ๊ฐ ์๋ ์ฌ๋ ์ ํ์ ๋ฆฌ์คํธ๊ฐ ๋ฐํ๋ฉ๋๋ค.

๋์ ์์ฑ ๋ฉ์
์์ฑ์์ ์ํฌ์คํ์ด์ค ์ ๋ณด ๋ถ๋ฌ์ค๊ธฐ
์ด์ ๋ณ๋์ ์์ฑ์ ๋ง๋ค์ง ์๊ณ ๋ ๋ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ๊ทธ๋ ์ฌ๋์ ์ด๋ฆ๊ณผ ์ด๋ฉ์ผ ๋ฑ ์ํฌ์คํ์ด์ค ๋ ๋ฒจ์ ์ ๋ณด๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, "์์ฑ์" ์์ฑ์ ์ฌ์ฉํ๊ณ "์ด๋ฆ"์ prop("Created By").name()๋ก, "์ด๋ฉ์ผ"์ prop("Created By").email()๋ก ์ฐธ์กฐํ๋ฉด ์ฌ์ฉ์์ ์ด๋ฆ๊ณผ ์ด๋ฉ์ผ ๋ฑ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค.
์ด๋ฅผ ํตํด ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ๋ค์ํ ์์ฑ์ ๊ฐ์ํํ๋ฉด์๋ ๋ด๊ฒ ํ์ํ ์ ๋ณด๋ฅผ ๋ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๊ฒ์ํ ์ ์๊ฒ ๋ฉ๋๋ค.

์์ ๋ง์นจํ ์ง์
let์ผ๋ก ๋๋ง์ ๋ณ์ ์์ฑํ๊ธฐ
์ด์ ์์์ผ๋ก ๋ณ์๋ฅผ ์์ฑํ ์ ์์ด์! ๊ธฐ์กด์ Javascript์ ๋ง์ฐฌ๊ฐ์ง๋ก let์ ์ด์ฉํด ์ฒซ ๋ฒ์งธ ์ธ์๋ก ์ด๋ฆ์, ๋ ๋ฒ์งธ ์ธ์๋ก ๊ฐ์ ์
๋ ฅํ์ฌ ๋ณ์๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์ธ ๋ฒ์งธ ์ธ์๋ก ์๋ก ์์ฑํ ๋ณ์๋ฅผ ์ฌ์ฉํด ์์์ ๋๋จธ์ง ๋ถ๋ถ์ ์์ฑํ์ธ์.
์๋ฅผ ๋ค์ด, ์ฌ๋ฌ ์์ฑ์ ํฉ์ ๋ชจ๋ ๋ํ ์ด๋น์ฉ์ ๊ตฌํ๋ ์์์ ์์ฑํ๋ค๊ณ ํ ๋, ๊ฐ ์์ฑ์ ํฉ์ ๊ตฌํ ๋ค ์ด๋ฅผ ์ผ์ผ์ด ๋ค์ ๋ํด์ฃผ๋ ์์ ์ ๊ฑฐ์ ๋จ์๋ ธ๋์ ๊ฐ๊น์ด ์ผ์ด์์.
์ด๋, let(SalesTax, (prop("Subtotal")*0.099), prop("Subtotal") + SalesTax)์ ๊ฐ์ ๋ณ์๋ฅผ ๋ง๋ค์ด ๋ณด์ธ์.SalesTax๋ฅผ ์
๋ ฅํ ๋๋ง๋ค ์๊ณ x ์ธ์จ๋ก ์ฌ์ ์ ์๋ ๊ฐ์ด ์ฐ์ถ๋ ๊ฑฐ์์.

๋ณ์๋ ์ธ์ ์ฌ์ฉํ๋ ๊ฑด๊ฐ์?
let ํ์ฉ์ด ์ต์ํด์ก๋ค๋ฉด lets๋ฅผ ์ด์ฉํด ๋ค์ํ ๋ณ์๋ฅผ ํ ๋ฒ์ ํ ๋นํ ์๋ ์์ด์.
์๋ฅผ ๋ค์ด, lets(a, "Hello", b, "world", a + " " + b)์ ๊ฐ์ด 2๊ฐ์ ๋ณ์๋ฅผ ์กฐํฉํ ์ ์์ต๋๋ค.
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐธ์กฐ ์์ฑ(๋กค์ ์ด ํ์์์ด์!)
์ด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋์๊ฒ ํ์ํ ์ ํํ ์ ๋ณด๋ฅผ ์ฐพ์๋ผ ์ ์์ต๋๋ค. ๋ ์ด์ ๊ด๋ จ ์์ฑ์ ์ฐธ์กฐํ ๋กค์ ์ ๋ฐ๋ก ๋ง๋ค์ง ์์๋ ๋์ฃ ! ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ๋ณด์ ํ์ ๋ฐฉ์์ ํธ์งํ๊ณ ์์ ํ ์ ์๋ ๊ฐ๋ ฅํ ์์ ๊ธฐ๋ฅ๊ณผ ๋ง๋ ๊ธฐ์กด์ ๋กค์ ๋ณด๋ค ํ์ธต ์ ๊ทธ๋ ์ด๋๋์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์๋ฅผ ๋ค์ด, ์์
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ด๊ณ๋ ํ๋ก์ ํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ค๋ฉด, ์์
์๋ฃ์จ์ ๊ธฐ์ค์ผ๋ก "โ
ย ์๋ฃ", "โ ๏ธย ์งํ ์ค", "โย ์์ ์ " ๋ฑ์ ํ์ํ ์ผ์ด ์์ฃผ ์๊ธฐ์ฃ .
์ด์ ์๋ ์์
์๋ฃ์จ์ ํ์ํ๊ธฐ ์ํด์๋ ๋กค์
์ ์์ฑํ๊ณ ๊ทธ ๋ค์ ์์์ ์์ฑํด "โ
ย ์๋ฃ", "โ ๏ธย ์งํ ์ค", "โย ์์ ์ "์ ๋ฐํํ๋๋ก ํด์ผ ํ์ต๋๋ค.
์๋ก์ด ๋ฒ์ ์ ์์์์๋ ์ด ์์ ๋ค์ ํตํฉํด "๋กค์ ๊ฐ" ์์ฒด๋ฅผ ๋ณ์๋ก ์ ์ํ ์ ์์ด์.
์ฐ์ ,
map(),filter(), andlength()ํจ์๋ก ์๋ฃ๋ ์์ ์ ์๋ฅผ ๊ณ์ฐํด ์ฃผ์ธ์.
prop("Tasks").map(current.prop("Status")).filter(current == "Done").length()
2. ๊ทธ ๋ค์, percentComplete์ด๋ผ๋ ๋ณ์๋ก ๋กค์
๊ฐ์ ์ ์ํ์ธ์. ์๋ฃ๋ ์์
์ ์ ๋๋๊ธฐ ์ ์ฒด ์์
์์ 100์ ๊ณฑํ๋ฉด ๋๊ฒ ์ฃ . ๊ทธ๋ฆฌ๊ณ ์ด์ ์ ๊ฐ์ ํจ์๋ฅผ ์ ์ฉํ๋ฉด ๋ฉ๋๋ค.
let(
percentComplete,
prop("Tasks").map(current.prop("Status")).filter(current == "Done").length()
/ prop("Tasks").map(current.prop("Status")).length() * 100),
/* ์ฌ๊ธฐ์ ์์์ ๋๋จธ์ง ๋ถ๋ถ์ ์์ฑํ์ธ์ */
)
์ด ์์์์๋ ์ต์ข ์์์ด ์๋์ ๊ฐ์ด ๋ง๋ค์ด์ง ๊ฑฐ์์.
let(percentComplete, round(prop("Tasks").map(current.prop("Status")).filter(current =="Done").length()/ prop("Tasks").map(current.prop("Status")).length() * 100),
ifs(percentComplete == 100, "โ ย ์๋ฃ", percentComplete > 0, "โ ๏ธย ์งํ ์ค (" + percentComplete + ")%","โ ์์ ์ "))
์๋ ํ ๊ธ์ ์ด์ฉํด ํน์ ํจ์์ ๋ํ ๋ณ๊ฒฝ ๋ด์ฉ์ ํ์ธํ์ธ์. ๊ธฐ์กด ์์์ ์๋์ผ๋ก ๋ณํ๋ฉ๋๋ค.

์์ฑ ์ฐธ์กฐ ์ ๋ฐ์ดํธ

์ํ ํจ์ ๋ณ๊ฒฝ

๋ ์ง ํจ์ ์ ๋ฐ์ดํธ

์ํ ํจ์ ์ ๋ฐ์ดํธ

์ฒดํฌ๋ฐ์ค(๋ถ์ธ) ํจ์ ์ ๋ฐ์ดํธ
match(), style() ๋ฑ์ ํจ์๋ ์๋กญ๊ฒ ์ถ๊ฐ๋์์ผ๋ ์ฌ๊ธฐ์์ ์ ์ฒด ๋ชฉ๋ก์ ํ์ธํด ๋ณด์ธ์.

๋ชจ๋ ์์ ๋ฆฌ์์ค
์ค๋ช ๋์ง ์์ ๋ถ๋ถ์ด ์๋์?