Article Weekly, Issue 26
|Period
2024-06-23
~ 2024-06-29
A Three-Step Framework For Solving Problems ๐
- ์์ด๋น์ค๋น์ ์ ์ฌํด ๋ฐฐ์ด ์ ์ค ํ๋๋ ๋ฌด์๋ณด๋ค๋ ๋ฌธ์ ์ ์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ํ๋ ๊ฒ์ด ์ค์ํ๋ค๋ ๊ฒ
- ํ๋ก์ ํธ๋ฅผ ์คํจ๋ก ์ด๋๋ ๋ง์ ์์ธ์ด ์์ง๋ง ํด๊ฒฐ ์ค์ธ ๋ฌธ์ ๋ฅผ ์คํดํ๋ ๊ฒ๋ณด๋ค ๋ ํ์คํ ๊ฑด ์์
- ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฐ์ฅ ์ค์ํ ๋จ๊ณ๋ ๋ฌธ์ ์ ์๋ฅผ ์์ฑํ๋ ๊ฒ
- ๋ฌธ์ ์ ์๋ฅผ ์ํด์ ์ธ ๊ฐ์ง ๊ฐ๋จํ ๋จ๊ณ๋ง ๊ฑฐ์น๋ฉด ๋จ
- 1๋จ๊ณ: ํด๊ฒฐํ๋ ค๋ ๋ฌธ์ ๊ตฌ์ฒดํ
- 2๋จ๊ณ: ํ ๋ฐ ์ดํด๊ด๊ณ์์ ๋ฌธ์ ์กฐ์จ
- 3๋จ๊ณ: ๋ค์ ๋ฌธ์ ๋ก ๋์์ค๊ธฐ
- ์ด ํ๋ ์์ํฌ๋ ์๋ก์ด ์ ํ์ด๋ ์๋ก์ด ๊ธฐ๋ฅ์ ์ผ๋์ ๋๊ณ ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ํ ๋ ๊ฐ์ฅ ํจ๊ณผ์ ์ด๋ฉฐ, ์์ง๋์ด๋ง ์ ์ ์ํํด์ผ ํจ
- Step 1: Crystallize the problem you areย solving
- Description: What is it?
- Problem:ย What problem is this solving?
- Why:ย How do we know this is a real problem and worth solving?
- Success:ย How do we know if weโve solved this problem?
- Audience: Who are we building for?
- What: What does this look like in the product?
- Step 2: Align on the problem with your team and stakeholders
- 1 ๋จ๊ณ๋ฅผ ์ํํฉ๋๋ค.
- ์ด ํ๋ก์ ํธ์ ์ฐธ์ฌํ ์ ์ฒด ํ๊ณผ ์ด์์ ๊ณต์ ํ๊ณ ํผ๋๋ฐฑ์ ์์ฒญํ์ธ์. ์ดํ ํผ๋๋ฐฑ์ ํตํฉํ๊ณ ๋ค์ ๊ณต์ ํฉ๋๋ค.
- ํผ๋๋ฐฑ์ด ๋ชจ์์ง๊ณ ์๊ฒฌ์ด ์ผ์นํ๋ค๋ฉด ๋์ด๊ฐ์ธ์. ๊ทธ๋ฌ๋ ๊ทธ๋ ์ง ์๋ค๋ฉด ๋ชจ๋ ์ฌ๋์ ํ๋ฐ ๋ชจ์ ์๊ฒฌ ๋ถ์ผ์น๋ฅผ ์ง์ ๋ ผ์ํด์ผ ํฉ๋๋ค.
- ํ์ด ์กฐ์จ๋๋ฉด ์ดํด๊ด๊ณ์์ ๊ณต์ ํ์ธ์. ๋์์ธ์ด๋ ์์ง๋์ด๋ง ๋จ๊ณ์ ๋๋ฌด ๊น๊ฒ ๋ค์ด๊ฐ๊ธฐ ์ ์ ํ ๊ทธ๋ฆฌ๊ณ ํ๋ก์ ํธ์ ์ฑ๊ณต ์ ๋ฌด๋ฅผ ํ๋จํ๋ ์ฌ๋๋ค๊ณผ ํด๊ฒฐํ๋ ค๋ ๋ฌธ์ ๋ฅผ ์กฐ์จํด์ผ ํฉ๋๋ค.
- ๋๋ฉด์ผ๋ก ๋ฌธ์ ์ ์๋ฅผ ๋ค์ ๊ฒํ ํ๊ณ , ์ง๋ฌธ์ ๋ฐ๊ณ , ํ์ด ํด๋น ์ ๋ฌด๋ฅผ ์ํํ๋ ๋ฐ ํ์ํ ๊ฒ๋ค์ ๊ฐ์ถ๊ณ ์๋์ง ํ์ธํ์ธ์.
- Step 3: Keep coming back to theย problem
- ์ ํ ๊ฐ๋ฐ์์ ์๊ธฐ๋ ๊ณ ์ ์ ์ธ ํจ์ ์ โ์์์ ์ํํ์ง๋ง ๊ฐ์ฅ ์ค์ํ ์๊ฐ, ์ฆ ์์ ์ด ์ค์ ๋ก ์ํ๋ ๋ ํด๊ฒฐํ๊ณ ์ ํ๋ ๋ฌธ์ ๋ฅผ ๊ณ ์ํ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.โ๋ ๊ฒ
- ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋ง์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ง๋ง, ์คํ๋ ค ์ด๋ค ๋ฌธ์ ๋ ํด๊ฒฐํ์ง ๋ชปํ๋ ๋ฉ์ง๊ธฐ๋ง ํ ์ ํ์ ๋ง๋ค ์๋ ์์
- ์ด๋ฐ ํจ์ ์ ํผํ๊ธฐ ์ํ ๋ช ๊ฐ์ง ์ข์ ์ต๊ด๋ค
- ๋์์ธ ๋ฆฌ๋ทฐ๋ ๋์์ด๋๊ฐ ๋ฌธ์ ์ ์๋ฅผ ๊ฒํ ํ๋ ๊ฒ์์๋ถํฐ ์์ํ์ธ์. ๋ง์ฝ ๊ทธ๊ฒ ๋ช ํํ์ง ์๋ค๋ฉด “์ฐ๋ฆฌ๊ฐ ์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๊ณ ํ์ง?“๋ผ๊ณ ์ง๋ฌธํ๊ธฐ
- ์ดํด๊ด๊ณ์์๊ฒ ์งํ ์ํฉ์ ์ ๋ฐ์ดํธํ ๋๋ง๋ค ๋ฌธ์ ์ ์๋ฅผ ๊ฒํ ํ์ฌ ๋ชจ๋ ์ฌ๋์ด ๊ฒฐ๊ณผ์ ๋์ํ๊ณ ์๋์ง ํ์ธํ๊ธฐ
- ๋์์ธ์ ๋ง๋ฌด๋ฆฌํ๊ธฐ ์ ์ ์ค์ค๋ก์๊ฒ ๋ฌผ์ด๋ณด์ธ์ “์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ํด๊ฒฐํ๊ณ ์ ํ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ ๊ฒ์ด๋ผ๊ณ ํ์ ํ๋๊ฐ?โ
1-click Exploit in South Korea’s biggest mobile chat app
- ์นด์นด์คํก
10.4.3
๋ฒ์ ์์ ์๊ฒฉ ๊ณต๊ฒฉ์๊ฐ WebView์์ ์์์ JavaScript๋ฅผ ์คํํด HTTP ์์ฒญ ํค๋์ ์ก์ธ์ค ํ ํฐ์ ์ ์ถํ ์ ์๋ ๋ฅ ๋งํฌ ๊ฒ์ฆ ๋ฌธ์ ๊ฐ ์์ - ์ด ํ ํฐ์ ์ฌ์ฉํด ๋ค๋ฅธ ์ฌ์ฉ์์ ๊ณ์ ์ ํ์ทจํ๊ณ ๊ณต๊ฒฉ์๊ฐ ์ ์ดํ๋ ์ฅ์น์ ๋ฑ๋กํด ์ฑํ ๋ฉ์์ง๋ฅผ ์ฝ์ ์ ์์
- ์ด ๋ฒ๊ทธ๋ CVE-2023-51219๋ก ํ ๋น๋จ
assert vs Validate.isTrue
- assert
- ๋ชฉ์ : ๋ฉ์๋๊ฐ ํธ์ถ๋ ์ ์๋ ์กฐ๊ฑด๊ณผ ํธ์ถ ํ ๋ณด์ฅ๋๋ ์กฐ๊ฑด์ ๋ฌธ์ํํ๊ธฐ ์ํด ์ฌ์ฉ๋จ
- ๊ธฐ๋ฅ: ์คํ ์ ์กฐ๊ฑด์ด ๋ง์กฑ๋์ง ์์ผ๋ฉด AssertionError ์์ธ๋ฅผ ๋์ง
- ์ฌ์ฉ ์ฌ๋ก: ์ฌ์ ์กฐ๊ฑด, ์ฌํ ์กฐ๊ฑด, ํด๋์ค ๋ถ๋ณ ์กฐ๊ฑด์ ์ ์ํ๋ ๋ฐ ์ฌ์ฉ๋จ. ์กฐ๊ฑด์ด ๋ง์กฑ๋์ง ์์ผ๋ฉด ์์คํ ์ ์ค๊ณ๋ ๊ตฌํ์ ๋ฌธ์ ๊ฐ ์์์ ๋ํ๋.
- Validate.isTrue (org.apache.commons.lang.Validate)
- ๋ชฉ์ : ์กฐ๊ฑด์ ํ์ธํ๊ณ ์กฐ๊ฑด์ด ๋ง์กฑ๋์ง ์์ผ๋ฉด IllegalArgumentException ์์ธ๋ฅผ ๋์ง
- ๊ธฐ๋ฅ: ์๋ชป๋ ์ ๋ ฅ์ ๋ํด ๊ด๋ํ๊ฒ ์ฒ๋ฆฌํ๋ฉฐ, ์๋ชป๋ ์ ๋ ฅ์ด ์์ ๊ฒฝ์ฐ IllegalArgumentException์ ๋์ง
- ์ ํ ์ฌํญ: postconditions๋ invariants๋ฅผ ์ฒดํฌํ๋ ๋ฐ ์ ํฉํ์ง ์์. assertion์ ์คํ ์ ๋นํ์ฑํ๋ ์ ์์ผ๋ฏ๋ก ์ฌ์ฉ์ ์ ๋ ฅ ๊ฒ์ฆ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ถ์ ์ ํจ
- ๋์์ ์ฌ์ฉ
- ๋ฐฉ๋ฒ: ์๋ก ๋ค๋ฅธ ๋ชฉ์ ์ ๋ง๊ฒ ๋ ๋ค ์ฌ์ฉํ ์ ์์
- Validate.isTrue: ํน์ ์ ๋ ฅ์ ๋ํด IllegalArgumentException์ ๋ฐ์์ํค๋๋ก ๊ณ์ฝํ๊ณ ์ด๋ฅผ ๊ตฌํ
- assert: ๋ถ๋ณ ์กฐ๊ฑด๊ณผ ์ฌํ ์กฐ๊ฑด์ ์ฒ๋ฆฌํ๋ฉฐ, ์ถ๊ฐ ์ฌ์ ์กฐ๊ฑด๋ assert๋ก ์ฒ๋ฆฌ
- ์ด๋ฅผ ํตํด ์ ๋ ฅ ์ ํจ์ฑ ๊ฒ์ฌ๋ Validate.isTrue๋ก, ์์คํ ์ค๊ณ ๊ด๋ จ ์กฐ๊ฑด ๊ฒ์ฌ๋ assert๋ก ๊ฐ๊ฐ ์ฒ๋ฆฌํ ์ ์์
- ๋ฐฉ๋ฒ: ์๋ก ๋ค๋ฅธ ๋ชฉ์ ์ ๋ง๊ฒ ๋ ๋ค ์ฌ์ฉํ ์ ์์
Never* use Datagrams
TCP vs UDP
- ์ธํฐ๋ท ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋ TCP์ UDP ์ค ํ๋๋ฅผ ์ ํํด์ผ ํจ
- TCP: ์ ๋ขฐ์ฑ ์๋ ๋ฐ์ดํฐ ์ ์ก์ ๋ณด์ฅํจ
- UDP: ์ ๋ขฐ์ฑ ์๋ ๋ฐ์ดํฐ ์ ์ก์ ์ ๊ณตํจ
- ์ ๋ขฐ์ฑ ์๋ ์ ์ก์ด ํ์ํ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์์
“์ ๋ขฐ์ฑ ์๋”(โUnreliableโ)
- ์ค์๊ฐ ๋น๋์ค ํ๋กํ ์ฝ์ ์ค๊ณํ๋ ๋ชจ์์์ SUBSCRIBE๊ฐ ์ ๋ขฐ์ฑ ์๋๋ก ํด์ผ ํ๋ค๋ ์๊ฒฌ์ด ์์์
- ์ค์ ๋ก ํ์ํ ๊ฒ์ **์ ์์ฑ(timeliness)**์
- ์ค์๊ฐ ๋น๋์ค์์๋ ์ต์ ๋ฐ์ดํฐ๋ฅผ ์ฐ์ ์ ์ผ๋ก ์ ๋ฌํ๋ ๊ฒ์ด ์ค์ํจ
๋ฐ์ดํฐ๊ทธ๋จ
- ๋ฐ์ดํฐ๊ทธ๋จ(IP ํจํท)์ ์ถ๋ฐ์ง ์ฃผ์์์ ๋ชฉ์ ์ง ์ฃผ์๋ก ์ ์ก๋๋ ๋ฐ์ดํฐ์ ๋จ์์
- ๋ฐ์ดํฐ๊ทธ๋จ์ ์์ค๋๊ฑฐ๋ ์์๊ฐ ๋ค๋ฐ๋ ์ ์์
- ๋ฐ์ดํฐ๊ทธ๋จ์ ์ฌ์ฉํ๋ ์ด์ ๋ ๋คํธ์ํฌ ํผ์ก ์ ํจํท์ ๋๋กญํ๋ ๊ฒ์ด ๋ ๋์ ์ ํ์ด๊ธฐ ๋๋ฌธ์
๋น์ , ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์
- UDP๋ฅผ ์ง์ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ๋ฌธ์ ์ ์ง๋ฉดํ ์ ์์
- UDP ์์ ์์ฒด ์ ์ก ํ๋กํ ์ฝ์ ๊ตฌ์ถํ๋ ค๋ฉด ์ฌ์ ์ก, ํผ์ก ์ ์ด ๋ฑ์ ๊ตฌํํด์ผ ํจ
- QUIC ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ๋์ ์ ํ์
์ ์์ฑ
- ์ ์์ฑ์ ๋ฌ์ฑํ๊ธฐ ์ํด QUIC๋ฅผ ์ฌ์ฉํ ์ ์์
- ๋ฒํผ๋ฅผ ๋น์ฐ๊ธฐ: ํผ์ก ์ ์ด๋ฅผ ํตํด ํ๋ฅผ ๊ฐ์งํ๊ณ ์ ์ก ์๋๋ฅผ ์ค์
- ๋ฐ์ดํฐ๋ฅผ ์คํธ๋ฆผ์ผ๋ก ๋ถํ : ๊ฐ ์คํธ๋ฆผ์ ๋ ๋ฆฝ์ ์ผ๋ก ์ ์ก๋จ
- ์คํธ๋ฆผ ์ฐ์ ์์ ์ง์ : ์ค์ํ ์คํธ๋ฆผ์ ์ฐ์ ์ ์ผ๋ก ์ ๋ฌํจ
๋ฐ์ดํฐ๊ทธ๋จ ๋ฐฉ์ด
- QUIC์ MoQ๋ ๋ฐ์ดํฐ๊ทธ๋จ์ ์ง์ํจ
- ๋ฐ์ดํฐ๊ทธ๋จ ์ง์์ ์คํ์ ํ์ฉํ๊ธฐ ์ํด ์ค์ํจ
- ๊ทธ๋ฌ๋ ๋ฐ์ดํฐ๊ทธ๋จ ์ฌ์ฉ์ ํจ์ ์ผ ์ ์์
๊ฒฐ๋ก
- ๋ฐ์ดํฐ๊ทธ๋จ ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๊ณํ์ง ๋ง์์ผ ํจ
- UDP ์์ ๋ ๋ค๋ฅธ ๋น๋์ค ํ๋กํ ์ฝ์ ๋ง๋ค์ง ๋ง๊ณ , Media over QUIC์ ์ฐธ์ฌํ๋ ๊ฒ์ด ์ข์
Zig vs Rust at work: the choice we made
- 2023๋ ํํด ๋์ Rust์ Zig ์ค ์ด๋ค ์ธ์ด๋ฅผ ์ฑํํ ์ง์ ๋ํ ๋ ผ์ ์งํ
- ์ฃผ์ ๊ณ ๋ ค ์ฌํญ
- C ์ธ์ด์์ ์ํธ ์ด์ฉ์ฑ
- ์์ง๋์ด ํ์ฅ์ฑ (์ฑ์ฉ, ์ ์ง๋ณด์ ๋ฑ)
- ์ต์ข ์ ํ: Zig
- ์ด ์ ํ ๊ณผ์ ์ ๋๊ท๋ชจ ํ์ฌ์์ “์ฝ๋๊ฐ ๋ค์ํ ๋์์์ ์คํ๋๊ณ ์์ต ๋ช ์ ์ฌ์ฉ์์๊ฒ ์ํฅ์ ๋ฏธ์น ๋ ๊ณ ๋ คํ๋ ์์"๋ค์ ์ ๋ณด์ฌ์ค๋ค๊ณ ์๊ฐํด์ ๊ณต์ ํจ
๊ฒฐ๋ก
- Zig๊ฐ ๊ธฐ์กด ์ฝ๋๋ฒ ์ด์ค ํฌํ ๋ฐ ๋ชจ๋ ํ๋ซํผ ํธํ์ฑ ๋ณด์ฅ์ ํ์ํ ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ ํฌ๊ฒ ๊ฐ์์ํด
- ์์ ์ธ ๊ฒฐ์ ์์ธ๋ค
- ํ์ต ์ฉ์ด์ฑ๊ณผ ์ฑ์ฉ์ด ์์๋ณด๋ค ํฐ ์ํฅ์ ๋ฏธ์นจ (Zig ์ ์ ๋ฆฌ)
- ํด์ฒด์ธ ๊ด๋ จ ๊ฐ๋ฐ์ ๊ฒฝํ์ด ์ค์ํ ์ญํ
- Zig ์ปดํ์ผ๋ฌ์ ๋น๋ ์์คํ ์ด ๊ธฐ์กด ์ฝ๋๋ฒ ์ด์ค์์ ํธํ์ฑ์ผ๋ก ์ธํด ํฌ๊ฒ ๋์๋จ
- Rust์ ์ํ๊ณ, ์ปค๋ฎค๋ํฐ, ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ ๋ณด์ฅ์ ์์๋ณด๋ค ์ํฅ๋ ฅ์ด ์ ์
Automated Unit Test Improvement using Large Language Models at Meta
๋ฉํ์ ์๋ํ๋ ๋จ์ ํ ์คํธ ๊ฐ์ ๋๊ตฌ: TestGen-LLM
- ๋ฉํ์์ ๊ฐ๋ฐํ TestGen-LLM ๋๊ตฌ๋ ๋๊ท๋ชจ ์ธ์ด ๋ชจ๋ธ(LLMs)์ ์ฌ์ฉํ์ฌ ๊ธฐ์กด์ ์ธ๊ฐ์ด ์์ฑํ ํ ์คํธ๋ฅผ ์๋์ผ๋ก ๊ฐ์ ํจ
- TestGen-LLM์ด ์์ฑํ ํ ์คํธ ํด๋์ค๋ ์๋ ํ ์คํธ ์ค์ํธ์ ๋นํด ์ธก์ ๊ฐ๋ฅํ ๊ฐ์ ์ ๋ณด์ฅํ๋ ์ผ๋ จ์ ํํฐ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ํต๊ณผํ์ฌ LLM ํ๊ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํจ
- ๋ฉํ์ Instagram๊ณผ Facebook ํ๋ซํผ์ ์ํ ํ ์คํธ ๋ํ(test-a-thons)์์ TestGen-LLM์ ๋ฐฐํฌ๋ฅผ ์ค๋ช ํจ
TestGen-LLM์ ์ฑ๋ฅ ํ๊ฐ
- Instagram์ Reels์ Stories ์ ํ์ ๋ํ ํ๊ฐ์์ TestGen-LLM์ ํ ์คํธ ์ผ์ด์ค ์ค 75%๊ฐ ์ ํํ๊ฒ ๋น๋๋์๊ณ , 57%๊ฐ ์ ๋ขฐ์ฑ ์๊ฒ ํต๊ณผํ์ผ๋ฉฐ, 25%๊ฐ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ์ฆ๊ฐ์ํด
- ๋ฉํ์ Instagram๊ณผ Facebook ํ ์คํธ ๋ํ์์ TestGen-LLM์ ์ ์ฉ๋ ๋ชจ๋ ํด๋์ค์ 11.5%๋ฅผ ๊ฐ์ ํ์ผ๋ฉฐ, ๋ฉํ ์ํํธ์จ์ด ์์ง๋์ด๋ค์ด ์ ์ ๋ฐฐํฌ๋ฅผ ์ํด 73%์ ๊ถ์ฅ ์ฌํญ์ ์๋ฝํจ
- ์ด๋ LLM์ด ์์ฑํ ์ฝ๋์ ์ฐ์ ๊ท๋ชจ ๋ฐฐํฌ์ ๋ํ ์ฒซ ๋ฒ์งธ ๋ณด๊ณ ์์ด๋ฉฐ, ์ฝ๋ ๊ฐ์ ์ ๋ํ ์ด๋ฌํ ๋ณด์ฆ์ ๋ฐ์ ๊ฒ์
References
- https://www.lennysnewsletter.com/p/a-three-step-framework-for-solving
- https://stulle123.github.io/posts/kakaotalk-account-takeover/
- https://stackoverflow.com/a/5452329
- https://quic.video/blog/never-use-datagrams/
- https://ludwigabap.bearblog.dev/zig-vs-rust-at-work-the-choice-we-made/
- https://arxiv.org/abs/2402.09171