Article Weekly, Issue 45
|Period
2024-11-03
~ 2024-11-09
Weโre leaving Kubernetes
- Gitpod์ 6๋ ๋์ Kubernetes๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ฐ๋ ๊ฐ๋ฐ ํ๊ฒฝ ํ๋ซํผ์ ๊ตฌ์ถํ์ผ๋, ๊ฒฐ๊ตญ Kubernetes๊ฐ ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถ์ ์ ํฉํ์ง ์๋ค๊ณ ๊ฒฐ๋ก ์ง์
- ๊ฐ๋ฐ ํ๊ฒฝ์ ํน์ฑ
- ๋งค์ฐ ์ํ ์งํฅ์ ์ด๊ณ ์ํธ์์ฉ์ ์
- ๊ฐ๋ฐ์๋ค์ ์์ค ์ฝ๋์ ๋ณ๊ฒฝ ์ฌํญ์ ๊น์ด ๊ด์ฌํจ
- ์์ธก ๋ถ๊ฐ๋ฅํ ๋ฆฌ์์ค ์ฌ์ฉ ํจํด์ ๊ฐ์ง
- ๊ด๋ฒ์ํ ๊ถํ๊ณผ ๊ธฐ๋ฅ์ด ํ์ํจ
- Kubernetes ์ฌ์ฉ ์ ์ฃผ์ ๋ฌธ์ ์
- ๋ฆฌ์์ค ๊ด๋ฆฌ์ ์ด๋ ค์ (CPU, ๋ฉ๋ชจ๋ฆฌ ํ ๋น)
- ์คํ ๋ฆฌ์ง ์ฑ๋ฅ ์ต์ ํ์ ๋ณต์ก์ฑ
- ์๋ ํ์ฅ ๋ฐ ์์ ์๊ฐ ์ต์ ํ์ ์ด๋ ค์
- ๋คํธ์ํน ๋ณต์ก์ฑ
- ๋ณด์ ๋ฐ ๊ฒฉ๋ฆฌ ๋ฌธ์
- ์๋ํ ํด๊ฒฐ์ฑ
๋ค
- CPU ๊ด๋ฆฌ: CFS ๊ธฐ๋ฐ ์คํค๋ง, ์ปค์คํ ์ปจํธ๋กค๋ฌ ๋ฑ
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ: ๊ณ ์ ํ ๋น, ์ค์ ๊ณต๊ฐ ํ์ฉ
- ์คํ ๋ฆฌ์ง: SSD RAID, ๋ธ๋ก ์คํ ๋ฆฌ์ง, PVC ๋ฑ ์คํ
- ์๋ ํ์ฅ: ๊ณ ์คํธ ์ํฌ์คํ์ด์ค, ๋ฐธ๋ฌ์คํธ ํ๋, ์คํ ์ค์ผ์ผ๋ฌ ํ๋ฌ๊ทธ์ธ ๋ฑ
- ์ด๋ฏธ์ง ํ ์ต์ ํ: ๋ฐ๋ชฌ์ ํ๋ฆฌํ, ๋ ์ด์ด ์ฌ์ฌ์ฉ ์ต๋ํ ๋ฑ
- ๋ณด์: ์ฌ์ฉ์ ๋ค์์คํ์ด์ค, ํ์ผ์์คํ UID ์ํํธ ๋ฑ
- ๊ฒฐ๋ก ์ ์ผ๋ก, Kubernetes๋ ์ ์ ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ํฌ๋ก๋๋ฅผ ์คํํ๊ธฐ ์ํด ์ค๊ณ๋์์ผ๋ฉฐ, ๊ฐ๋ฐ ํ๊ฒฝ์ ํน์ํ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑ์ํค๊ธฐ์๋ ๋ถ์ ํฉํ๋ค๊ณ ํ๋จ
- Gitpod์ ์ด๋ฌํ ๊ฒฝํ์ ๋ฐํ์ผ๋ก Kubernetes๋ฅผ ๋ ๋ ์๋ก์ด ์ ๊ทผ ๋ฐฉ์์ ๋ชจ์ํ๊ธฐ๋ก ๊ฒฐ์
Tests as docs? ๐ค
- ํ ์คํธ๋ ๋ฌธ์ํ ์ญํ ์ ํ ์ ์๋ ์ฅ์ ์ด ์์
- ๊ธฐ๋ณธ์ ์ผ๋ก
mix test
๋ช ๋ น์ด๋ ๋ฌธ์ํ์ ์ ํฉํ ์ ๋ณด๋ฅผ ์ ๊ณตํ์ง ์์ - ๋ ๊ฐ์ง ํ๋๊ทธ๋ฅผ ์ถ๊ฐํ์ฌ ํ
์คํธ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ํ ์ ์์
-trace
max-cases
๋ฅผ 1๋ก ์ค์ (๋์์ฑ์ 1๋ก ์ ํ)- ๋ ์์ธํ ์ ๋ณด๋ฅผ ์ถ๋ ฅ
-seed 0
- ํ ์คํธ๋ฅผ ์ ์๋ ์์๋๋ก ์คํ
- ์ด ๋ ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด ํ ์คํธ ์ค๋ช ์ ๋ช ํํ๊ฒ ์ถ๋ ฅํ ์ ์์
- ๊ฒฐ๊ณผ์ ์ผ๋ก ๊ฐ ํ ์คํธ๊ฐ ๋ฌด์์ ๊ฒ์ฆํ๋์ง ์ฝ๊ฒ ํ์ธ ๊ฐ๋ฅ
1 Year of Consistent LeetCoding
- ์ ์๋ 2023๋
9์, ๊ตฌ๊ธ Foobar ์ฑ๋ฆฐ์ง์ ๋์ ํจ
- ์ฒ์ 3๊ฐ ๋ฌธ์ ๋ ์ฝ๊ฒ ํด๊ฒฐํ์ผ๋, 4๋ฒ์งธ ๊ทธ๋ํ ๋ฌธ์ ์์ ์ด๋ ค์์ ๊ฒช์
- ๊ตฌ๊ธ ๋ฉด์ ๊น์ง ๊ฐ์ผ๋ ํฉ๊ฒฉํ์ง ๋ชปํจ
- ์ด ๊ฒฝํ์ ๊ณ๊ธฐ๋ก ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ(DSA) ๊ณต๋ถ๋ฅผ ๊ฒฐ์ฌ
- LeetCode 75 ๋ฌธ์ ์ธํธ๋ก ํ์ต ์์
- ๋งค์ผ LeetCode ๋์ ๋ฌธ์ ๋ฅผ ํ์ด 365์ผ ์ด์ ์ฐ์ ํด๊ฒฐ ๊ธฐ๋ก ๋ฌ์ฑ
- Google Sheet๋ฅผ ์ฌ์ฉํด ๋ฌธ์ ํ์ด ์งํ ์ํฉ ์ถ์
- ๋ฌธ์ ํด๊ฒฐ ์๊ฐ ์ ํ ์ค์
- Easy: 25๋ถ ์ด๋ด
- Medium: 45๋ถ ์ด๋ด
- Hard: 1์๊ฐ ์ด๋ด
- ์ฃผ์ ํ์ต ์ฃผ์
- ๋ฐฐ์ด(Arrays): DSA์ ๊ธฐ๋ณธ
- ๋ฌธ์์ด(Strings): ๋๋ถ๋ถ ์ธ์ด์์ ๋ถ๋ณ(immutable)
- ํด์ ํ ์ด๋ธ(Hash Tables): O(1) ์ฝ์ /์ญ์ ์๋
- ์ ๋ ฌ(Sorting): ์ต์ ๋ ๊ฐ์ง ์๊ณ ๋ฆฌ์ฆ ์์ง ํ์
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ(Greedy Algorithms): ์กฐ๊ฑด ์ถฉ์กฑ ์ ์กฐ๊ธฐ ์ข ๋ฃ ๊ฐ๋ฅ
- ๊ฒฐ๋ก
- DSA ํ์ต์ ์ค๋ ์ฑ์ด ์์ผ๋ฉฐ, ํจํด์ ๋ฐ๊ฒฌํ๋ฉด ๋ฌธ์ ํด๊ฒฐ์ด ๊ธฐ๊ณ์ ์ผ๋ก ๋จ
- ์ ์๋ ๊ตฌ๊ธ ์ฌ๋์ ์ ํฌ๋งํ๋ฉฐ ๊ณ์ํด์ LeetCode ๋ฌธ์ ๋ฅผ ํ ์์
- ์ถ๊ฐ ์ ๋ณด
- NeetCode๋ฅผ DSA ํ์ต ์๋ฃ๋ก ์ถ์ฒ
- LeetCode ๋ฆฌ์คํธ๋ฅผ ํ๊ณ ์ด๋ ค์ด ์ฃผ์ ๋ฅผ ๊น์ด ์๊ฒ ๊ณต๋ถํ๋ ๋ฐฉ๋ฒ ์ ์
Lessons learned from a successful Rust rewrite
- ์ ์๋ C++์์ Rust๋ก์ ์ ์ง์ ์ฌ์์ฑ ํ๋ก์ ํธ๋ฅผ ์๋ฃํจ
- ์ ์๋ํ ์
- ์ ์ง์ ์ฌ์์ฑ ์ ๊ทผ ๋ฐฉ์
- ์ฝ๋ ๋จ์ํ ๋ฐ ์ดํด๋ ํฅ์
- ์ฑ๋ฅ ๊ฐ์ ๊ธฐํ ๋ฐ๊ฒฌ
- ๋ถํ์ํ ์ฝ๋ ์ ๊ฑฐ
- ๊ฒฝ๊ณ ๊ฒ์ฌ ๋ฐ ์ฐ์ ์ค๋ฒํ๋ก์ฐ ๋ฐฉ์ง
- ํฌ๋ก์ค ์ปดํ์ผ ์ฉ์ด์ฑ
- ๋ด์ฅ ํ ์คํธ ํ๋ ์์ํฌ์ ์ ์ฉ์ฑ
- ์ ํ์ฑ์ ๋ํ ๋ ๋ง์ ๊ด์ฌ
- CMake ํ์ผ ์ ๊ฑฐ
- ์ ์๋ํ์ง ์์ ์
- ์ฌ์ ํ ์ ์๋์ง ์์ ๋์(UB) ์ถ์ ํ์
- Miri์ ํ๊ณ์ Valgrind ์ฌ์ฉ ํ์์ฑ
- ๋ฉ๋ชจ๋ฆฌ ๋์ ์ถ์ ์ ์ด๋ ค์
- ํฌ๋ก์ค ์ปดํ์ผ์ ์ผ๋ถ ์ ํ์ฌํญ
- cbindgen์ ํ๊ณ
- ๋ถ์์ ํ ABI
- ์ฌ์ฉ์ ์ ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์ง์ ๋ถ์กฑ
- ๋ณต์ก์ฑ ์ฆ๊ฐ
- ๊ฒฐ๋ก
- ์ ๋ฐ์ ์ผ๋ก ๋ง์กฑ์ค๋ฌ์ด ์ฌ์์ฑ์ด์ง๋ง ์์๋ณด๋ค ๋ง์ ๋ ธ๋ ฅ ํ์
- C ์ํธ ์ด์ฉ์ฑ์ด ๋ง์ Rust ์ฌ์ฉ์ ์์ Rust์ ๋ค๋ฅธ ๊ฒฝํ
- ์์ ํ์ง ์์ ์ฝ๋, ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๋ฌธ์, ๋๊ตฌ ๋ฑ์ ๊ฐ์ ํ์
- ์์ Rust ํ๋ก์ ํธ๋ก ์์ํ๋ ๊ฒ์ ์ถ์ฒ
- ํฅํ ์ ์ฌํ ํ๋ก์ ํธ์์๋ Zig ๊ณ ๋ ค ๊ฐ๋ฅ์ฑ ์ธ๊ธ
Good software development habits
- ์ ์๊ฐ ํจ๊ณผ์ ์ด๋ผ๊ณ ์๊ฐํ๋ 10๊ฐ์ง ์ํํธ์จ์ด ๊ฐ๋ฐ ์ต๊ด
- ์ปค๋ฐ์ ์๊ฒ ์ ์งํ๊ธฐ
- ๋ฒ๊ทธ ์ถ์ ๊ณผ ๋กค๋ฐฑ์ด ์ฉ์ดํด์ง
- ์ง์์ ์ธ ๋ฆฌํฉํ ๋ง ์ค์ฒ
- Kent Beck์ ์กฐ์ธ ๋ฐ๋ฅด๊ธฐ: “๋ณ๊ฒฝ์ ์ฝ๊ฒ ๋ง๋ค๊ณ , ์ฌ์ด ๋ณ๊ฒฝ์ ํ๊ธฐ”
- ๋ชจ๋ ์ฝ๋๋ฅผ ์ฑ
์์ผ๋ก ์ฌ๊ธฐ๊ธฐ
- ๋ฐฐํฌ๋์ง ์์ ์ฝ๋๋ ๊ฐ์ฅ ํฐ ์ฑ ์
- ํ ์คํธ์ ํ๋ก๋์ ๋ฐฐํฌ๋ก ํ์ ์ป๊ธฐ
- ‘์๋ํ๋ ์ํํธ์จ์ด’๋ฅผ ์ง์ ์ ์ฒ๋๋ก ์ผ๊ธฐ
- ๋ฐฐํฌ ๊ฐ๋ฅํ ์ํ๋ฅผ ‘์๋’์ผ๋ก ์ ์
- ํ๋ ์์ํฌ ๊ธฐ๋ฅ ํ
์คํธ ํผํ๊ธฐ
- ์์ ์ปดํฌ๋ํธ ์ ์ง๋ก ํ ์คํธ ํ์์ฑ ์ค์ด๊ธฐ
- ์๋ก์ด ๊ธฐ๋ฅ์ ๋ํด ์ ๋ชจ๋ ์์ฑํ๊ธฐ
- ๋ถ์ ์ ํ ์์น์ ๊ฐ์ ๋ก ๋ฃ์ง ์๊ธฐ
- API ์ค๊ณ ์ ํ
์คํธ ๋จผ์ ์์ฑํ๊ธฐ
- ์ฌ์ฉ์ ๊ด์ ์์ ์๊ฐํ๋๋ก ์ ๋
- ์ฝ๋ ์ค๋ณต์ ๋ ๋ฒ์งธ๋ถํฐ ํผํ๊ธฐ
- ์ธ ๋ฒ์งธ ๋ณต์ฌ๋ถํฐ๋ ์ถ์ํ ๊ณ ๋ ค
- ๋์์ธ์ ๋ณํ๋ฅผ ๋ฐ์๋ค์ด๊ธฐ
- ์ํํธ์จ์ด ๊ฐ๋ฐ์ ํต์ฌ์ ๋ณํ์ ๋ํ ์ ์๋ ฅ
- ๊ธฐ์ ๋ถ์ฑ ๊ด๋ฆฌํ๊ธฐ
- ํ์ฌ์ ๊ฐ๊น์ด ๋ฏธ๋์ ์ํฅ์ ์ฃผ๋ ๋ฌธ์ ์ ์ง์ค
- ์ถ๊ฐ ์กฐ์ธ:
- ํ ์คํธ ๊ฐ๋ฅ์ฑ์ ์ข์ ์ค๊ณ์ ์ฐ๊ด๋จ
- ํ ์คํธํ๊ธฐ ์ด๋ ค์ด ๋ถ๋ถ์ ์ค๊ณ ๋ณ๊ฒฝ ์ ํธ์ผ ์ ์์
API Design in the Post-OpenAPI Era
- OpenAPI ์๋ ์ดํ์ API ์ค๊ณ์ ๋ํ ๊ธ
- ์ฃผ์ ๋ด์ฉ
- OpenAPI์ ์ํฅ๊ณผ ํ๊ณ์ ๋ ผ์
- API ์ค๊ณ์ ์๋ก์ด ์ ๊ทผ ๋ฐฉ์ ์๊ฐ
- OpenAPI์ ์ํฅ
- API ๋ฌธ์ํ์ ์ค๊ณ์ ํ์คํ์ ๊ธฐ์ฌ
- ๋ง์ ๊ฐ๋ฐ์์ ๊ธฐ์ ์์ ์ฑํ
- OpenAPI์ ํ๊ณ
- ๋ณต์กํ API ์ค๊ณ์ ๋ํ ์ ํ์ ์ง์
- ๋์ ์ด๊ณ ์ ์ฐํ API ์๊ตฌ์ฌํญ ๋ฐ์์ ์ด๋ ค์
- ํฌ์คํธ OpenAPI ์๋์ API ์ค๊ณ ํธ๋ ๋:
- ๋ ์ ์ฐํ๊ณ ์ ์๋ ฅ ์๋ ์ค๊ณ ๋ฐฉ์ ํ์์ฑ ๊ฐ์กฐ
- ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ์์ ํตํฉ ๊ณ ๋ ค
- ์ค์๊ฐ ๋ฐ ์ด๋ฒคํธ ๊ธฐ๋ฐ API์ ๋ํ ๊ด์ฌ ์ฆ๊ฐ
- ์๋ก์ด API ์ค๊ณ ์ ๊ทผ ๋ฐฉ์
- ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ(DDD) ์์น ์ ์ฉ
- GraphQL๊ณผ ๊ฐ์ ์ฟผ๋ฆฌ ์ธ์ด์ ํ์ฉ
- API ๋ฒ์ ๊ด๋ฆฌ์ ์๋ก์ด ์ ๋ต ๋ชจ์
- ๊ฒฐ๋ก
- OpenAPI๋ ์ฌ์ ํ ์ค์ํ์ง๋ง, ๋ ์งํ๋ API ์ค๊ณ ๋ฐฉ์ ํ์
- ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ๊ณผ ๊ธฐ์ ๋ฐ์ ์ ๋ฐ์ํ ์ ์ฐํ ์ ๊ทผ ๊ฐ์กฐ
Kafka for Java Developers
- ๋ฉ์์ง ํ์ ์ ์์ ์ฃผ์ ํน์ง ์๊ฐ
- Kafka๊ฐ ์ข์ ๋ฉ์์ง ํ์ธ ์ด์
- ๋์ ์ฒ๋ฆฌ๋
- ํ์ฅ์ฑ
- ๋ด๊ตฌ์ฑ
- ์ฅ์ ํ์ฉ์ฑ
- ๊ณ ๊ฐ์ฉ์ฑ
- ์คํธ๋ฆผ ์ฒ๋ฆฌ
- ๊ฐ๋ ฅํ ์์ ๋ณด์ฅ
- ๋ค์ค ์๋น์ ์ง์
- ์ ์ฐํ ๋ฐ์ดํฐ ๋ณด์กด
- ํจ์จ์ ์ธ ์ ์ฅ
- Kafka์ ์ฃผ์ ๊ฐ๋
- ํ ํฝ, ํ๋ก๋์, ์ปจ์๋จธ
- ํํฐ์ , ์คํ์
- ๋ธ๋ก์ปค, ZooKeeper
- ๋ณต์
- Java ๊ฐ๋ฐ์๋ฅผ ์ํ ์ค์ ์์ญ
- ์ง๋ ฌํ์ ์ญ์ง๋ ฌํ
- Kafka Streams
- Schema Registry
- ์ค๋ฅ ์ฒ๋ฆฌ์ ์ฌ์๋
- ๋ชจ๋ํฐ๋ง๊ณผ ๋ฉํธ๋ฆญ
- ๋ณด์
- ํ๋๊ณผ ์ต์ ํ
- ๋ฐ์ดํฐ ๋ณด์กด ์ฒ๋ฆฌ
- Java API ๊ฐ์
- Maven/Gradle ์์กด์ฑ ์ถ๊ฐ
- KafkaProducer API ์ฌ์ฉ ์
- KafkaConsumer API ์ฌ์ฉ ์
- ๋ค์ค ์ปจ์๋จธ ๊ทธ๋ฃน ๊ตฌ์ฑ
- ๊ณตํต ๊ตฌ์ฑ ์์ฑ
- ์ปจ์๋จธ ๊ทธ๋ฃน๋ณ ๊ตฌ์ฑ ์์
- ์ ์ฒด ์์ ์ฝ๋
- ๊ฒฐ๋ก
- Java ๊ฐ๋ฐ์์๊ฒ ํ์ํ Kafka ๊ฐ๋ ๊ณผ API ์ดํด์ ์ค์์ฑ ๊ฐ์กฐ
- ํจ๊ณผ์ ์ธ ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ ๋ฐ ์ค์๊ฐ ๋ถ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ์ ์ํ ํต์ฌ ์์ญ ์ธ๊ธ
I’m Not Mutable, I’m Partially Instantiated
- Prolog์์์ ์ฌ์ ๊ตฌํ ์๊ฐ
- 6์ค์ ์ฝ๋๋ก ์ ๋ ฌ๋ ์ด์ง ๊ฒ์ ํธ๋ฆฌ ๊ตฌํ
lookup/3
๊ท์น์ ์ฌ์ฉํ์ฌ ์ฌ์ ์ ์ถ๊ฐ ๋ฐ ์กฐํ ๊ฐ๋ฅ
- ๋ถ์์ ๋ฐ์ดํฐ ๊ตฌ์กฐ ๊ฐ๋
- ๋ ผ๋ฆฌ ํ๋ก๊ทธ๋๋ฐ์์ ๊ฐ์ ๋ถ๋ณ์ด์ง๋ง, ์ฌ์ ์ ๋ถ๋ถ์ ์ผ๋ก ์ธ์คํด์คํ๋จ
- ์ด์ง ํธ๋ฆฌ์ ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ๊ฐ์ง๊ฐ ๋ณ์๋ก, ๋์ค์ ๊ฒฐ์ ๋ ์ ์์
- ๋ถ๋ณ์ฑ์ ์ ์งํ๋ฉด์ ๋์ ์ผ๋ก ํ์ฅ ๊ฐ๋ฅ
- ์ฌ์ ๋ฆฌํฉํ ๋ง
- ํค ์กด์ฌ ์ฌ๋ถ ํ์ธ์ ์ํด
nonvar/1
์ฌ์ฉ - ๋จ์ผ ๊ท์น๊ณผ if/then ์ ์ด ๊ตฌ์กฐ ์ฌ์ฉ
compare/3
๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ํค ํ์ ์ง์- ํค-๊ฐ ์์
Key-Value
ํํ๋ก ์ ์ฅ
- ํค ์กด์ฌ ์ฌ๋ถ ํ์ธ์ ์ํด
- ๊ฐ์ ๋ ๊ธฐ๋ฅ
- ์ฌ์ ์ ์์ ๋ฆฌ์คํธ๋ก ์ง๋ ฌํ ๊ฐ๋ฅ
keysort/2
๋ฅผ ์ฌ์ฉํ ์ ๋ ฌ ๊ธฐ๋ฅlookup/3
์add/3
์get/3
๋ก ๋ํํ์ฌ ์ฝ๋ ๋ช ํ์ฑ ํฅ์
- ๊ฒฐ๋ก
- 20๋ ์ “The Art of Prolog"์์ ์ธ๊ธ๋ ์ ํ์ฌํญ๋ค ํด๊ฒฐ
- ํ๋์ ์ด๊ณ ์ ์ฐํ ์ฌ์ ๊ตฌํ ์ ์
T 50 avionics embedded software development using java
- ํ๋ก์ ํธ ์ ๋ณด
- T-50 ํญ๊ณต ์ ์๊ธฐ๊ธฐ ๊ฐ๋ฐ์ ์ํ Java ์ฌ์ฉ
- KAI(ํ๊ตญํญ๊ณต์ฐ์ฃผ์ฐ์ ์ฃผ์ํ์ฌ) ์ฃผ๊ด ์ ๋ถ ์ง์ ํ๋ก์ ํธ
- ์ค์๊ฐ Java ์ธ์ด๋ก ๊ฐ๋ฐ๋ ์๋ฌด ์ํํธ์จ์ด
- ํ๋ก์ ํธ ๊ฐ์
- ํต์ฌ ์ํํธ์จ์ด ๊ฐ๋ฐ
- ํต์ฌ ํญ๊ณต ์ ์๊ธฐ๊ธฐ ํ๋์จ์ด ๋ฐ ์ํ ๋ฒค์น๋ฅผ ํฌํจํ ์ ์ฒด ์์คํ ๊ฐ๋ฐ
- Java ์ ํ ์ด์
- ์ด์ ํ๋ก์ ํธ์์์ C/C++ ๊ฒฝํ
- ํฌ์ธํฐ ๊ด๋ จ ๋ฌธ์
- Java์ ์ฅ์ ๊ณผ ๋จ์
- ์ค์๊ฐ Java ํ์ฉ
- ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ํธ๋ ๋ ๋ถ์
- ์ด์ ํ๋ก์ ํธ์์์ C/C++ ๊ฒฝํ
- ์ฃผ์ ์ํํธ์จ์ด
- ์ด๊ธฐ T-50 OFP๋ณด๋ค ๊ฐ์ ๋ ๊ธฐ๋ฅ์ผ๋ก 6๊ฐ์ ๋ ๋ฆฝ์ ์ธ MFD ํ์ด์ง ์ง์
- ํญ๊ณต ํ๋ จ ๊ธฐ๋ฅ ํฌํจ
- ๊ฐ๋ฐ ๊ณผ์
- OFP ์ค๊ณ์ ์ต์ ํ ๊ณผ์
- ์ฑ๋ฅ ํ๊ฐ ๋ฐ ์ต์ ํ
- Java์ ์๋์ ํฌ๊ธฐ ์ด์
- JNI ํธ์ถ ์ต์ํ ๋ฐ ๋์์ธ ๊ณ ๋ ค
- ๊ฒฐ๊ณผ
- Java์ ๊ธฐ์กด C์ ๋ํ ์ฑ๋ฅ ๋น๊ต: Java๋ C๋ณด๋ค ์ฝ 2๋ฐฐ ๋๋ฆผ
- ์ต์ ํ๋ฅผ ํตํด ์๋ ๋ฌธ์ ์ ํฌ๊ธฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ
- ๊ณ ๋ ค ์ฌํญ ๋ฐ ๊ตํ
- JNI ์ฌ์ฉ์ ๋ฐ๋ฅธ ์ฅ๋จ์
- ์์ ๊ธฐ์ค ์ค์(DO-178C) ๋ฐ ์คํ ์์ค ๋๊ตฌ์ ํ์ฉ
- Java๋ ์์ -critical, ํ๋ ์ค์๊ฐ ๋ด์ฅ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ ํฉํ ์ธ์ด
- ๊ฒฐ๋ก
- ์ ๊ณ ๋ณํ์ ๋ฐ๋ผ Java ๊ธฐ์ ์ ์ ์ฉํ์ฌ ํฅํ ๊ฐ๋ฐ ๋ฐฉํฅ ์ค์
- ํ๋ก์ ํธ ์ฑ ์์ ๋ฐ ๋ฌธ์ ์ ๋ณด ์ ๊ณต
References
- https://www.gitpod.io/blog/we-are-leaving-kubernetes
- https://www.elixirstreams.com/tips/tests-as-docs
- https://dev.to/davinderpalrehal/1-year-of-consistent-leetcoding-26d0
- https://gaultier.github.io/blog/lessons_learned_from_a_successful_rust_rewrite.html
- https://zarar.dev/good-software-development-habits/
- https://nordicapis.com/api-design-in-the-post-openapi-era/
- https://medium.com/@alxkm/kafka-for-java-developers-bdeea0f7e3df
- https://blog.dnmfarrell.com/post/incomplete-data-structures/
- https://www.slideshare.net/slideshow/t-50-avionics-embedded-software-development-using-java/10793710