Skip to content

Latest commit

ย 

History

History
318 lines (187 loc) ยท 24.2 KB

File metadata and controls

318 lines (187 loc) ยท 24.2 KB

ํŠธ์œ„ํ„ฐ๋ฅผ ํ†ตํ•œ ๋ชจ๋ฅด๋Š” ์ง€์‹์„ ์–ป์–ด๊ฐ€๊ธฐ

1. ์†Œ๋‚˜ํ๋ธŒ๋ž€?

{% embed url="https://www.sonarsource.com/products/sonarqube/?s_campaign=SQ-APJ-2-All-PMax&s_content=content&s_term=&s_category=Paid&s_source=Paid%20Cross%20Network&s_origin=Google&cq_src=google_ads&cq_cmp=21442152206&cq_con=&cq_term=&cq_med=&cq_plac=&cq_net=x&cq_pos=&cq_plt=gp&gad_source=1&gclid=EAIaIQobChMImYPL7cuUiAMV3Q97Bx2L3xZ7EAAYASAAEgLgOPD_BwE" %}

์†Œ๋‚˜ํ๋ธŒ(SonarQube)๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ์ฝ”๋“œ ํ’ˆ์งˆ์„ ๊ด€๋ฆฌํ•˜๊ณ  ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์˜คํ”ˆ ์†Œ์Šค ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ์†Œ๋‚˜ํ๋ธŒ๋Š” ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์ฝ”๋“œ์˜ ํ’ˆ์งˆ๊ณผ ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ์ฐพ์•„๋‚ด๊ณ , ์ด๋ฅผ ์ž๋™์œผ๋กœ ๋ฆฌํฌํŠธํ•ด ์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ๋Š” ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ง€์›ํ•˜๋ฉฐ, ์ง€์†์ ์ธ ํ†ตํ•ฉ(Continuous Integration, CI) ๋ฐ ์ง€์†์ ์ธ ์ „๋‹ฌ(Continuous Delivery, CD) ํŒŒ์ดํ”„๋ผ์ธ์— ํ†ตํ•ฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์†Œ๋‚˜ํ๋ธŒ์˜ ์ฃผ์š” ๊ธฐ๋Šฅ:

  1. ์ •์  ์ฝ”๋“œ ๋ถ„์„:
    • ์†Œ๋‚˜ํ๋ธŒ๋Š” ์ •์  ์ฝ”๋“œ ๋ถ„์„์„ ํ†ตํ•ด ์ฝ”๋“œ ๋‚ด์˜ ๋ฒ„๊ทธ, ๋ณด์•ˆ ์ทจ์•ฝ์ , ์ฝ”๋“œ ์Šค๋ฉœ(Code Smell, ๋‚˜์œ ์ฝ”๋“œ ์Šต๊ด€), ๋ณต์žก์„ฑ ๋“ฑ์„ ์ฐพ์•„๋ƒ…๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ ์ฝ”๋“œ๋ฅผ ์‹ค์ œ๋กœ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋‹ค์–‘ํ•œ ์–ธ์–ด ์ง€์›:
    • ์†Œ๋‚˜ํ๋ธŒ๋Š” Java, C#, JavaScript, Python, PHP, C/C++, Kotlin ๋“ฑ ์ˆ˜๋งŽ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์—ฌ๋Ÿฌ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ์ ํŠธ์—์„œ ์ฝ”๋“œ ํ’ˆ์งˆ์„ ํ†ตํ•ฉ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.
  3. ํ’ˆ์งˆ ๊ฒŒ์ดํŠธ(Quality Gate):
    • ์†Œ๋‚˜ํ๋ธŒ๋Š” ํ’ˆ์งˆ ๊ฒŒ์ดํŠธ๋ผ๋Š” ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์ฝ”๋“œ ํ’ˆ์งˆ ๊ธฐ์ค€์„ ์„ค์ •ํ•˜๊ณ , ๊ทธ ๊ธฐ์ค€์„ ์ถฉ์กฑํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ ๋นŒ๋“œ๋ฅผ ์‹คํŒจ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ฝ”๋“œ ํ’ˆ์งˆ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
  4. CI/CD ํ†ตํ•ฉ:
    • ์†Œ๋‚˜ํ๋ธŒ๋Š” Jenkins, GitLab CI, Azure DevOps ๋“ฑ๊ณผ ๊ฐ™์€ CI/CD ๋„๊ตฌ์™€ ์‰ฝ๊ฒŒ ํ†ตํ•ฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ์ฝ”๋“œ ํ’ˆ์งˆ์„ ๊ฒ€์‚ฌํ•˜๊ณ , ๋ฌธ์ œ๋ฅผ ๋น ๋ฅด๊ฒŒ ๋ฐœ๊ฒฌํ•˜์—ฌ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  5. ์ง€์†์ ์ธ ์ฝ”๋“œ ํ’ˆ์งˆ ๋ชจ๋‹ˆํ„ฐ๋ง:
    • ์†Œ๋‚˜ํ๋ธŒ๋Š” ํ”„๋กœ์ ํŠธ์˜ ์ฝ”๋“œ ํ’ˆ์งˆ์„ ์ง€์†์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ , ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ์ฝ”๋“œ ํ’ˆ์งˆ ๋ณ€ํ™”๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœํŒ€์€ ์ฝ”๋“œ ํ’ˆ์งˆ์ด ์–ด๋–ป๊ฒŒ ๋ณ€ํ™”ํ•˜๊ณ  ์žˆ๋Š”์ง€ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  6. ๋ณด์•ˆ ์ทจ์•ฝ์  ๋ฐœ๊ฒฌ:
    • ์†Œ๋‚˜ํ๋ธŒ๋Š” OWASP Top 10 ๋ฐ SANS Top 25์™€ ๊ฐ™์€ ๋ณด์•ˆ ๊ธฐ์ค€์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฝ”๋“œ ๋‚ด ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ์‹๋ณ„ํ•˜๊ณ  ๊ฒฝ๊ณ ํ•ด ์ค๋‹ˆ๋‹ค. ์ด๋Š” ๋ณด์•ˆ์„ฑ์ด ์ค‘์š”ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์†Œ๋‚˜ํ๋ธŒ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ :

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

๊ฒฐ๊ตญ ์†Œ๋‚˜ํ๋ธŒ๋Š” ์ฝ”๋“œ ํ’ˆ์งˆ์„ ์ง€์†์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ , ํ”„๋กœ์ ํŠธ์˜ ์ „๋ฐ˜์ ์ธ ์•ˆ์ •์„ฑ๊ณผ ์œ ์ง€ ๋ณด์ˆ˜์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ์ค‘์š”ํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

2. Linux์— rust ๋„์ž… ์ƒํ™ฉ

์ข€ ๋” ํ˜„๋Œ€์ ์ธ ์ฃผ์ œ์ธ Linux์— Rust ์–ธ์–ด๊ฐ€ ๋„์ž…๋œ ๊ฒƒ์— ๋Œ€ํ•ด ํ† ๋ฐœ์ฆˆ๋Š” ๋” ๋นจ๋ฆฌ ์ฑ„ํƒ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์— ์‹ค๋งํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. โ€œ์—…๋ฐ์ดํŠธ๊ฐ€ ๋” ๋นจ๋ผ์งˆ ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ–ˆ์ง€๋งŒ, ๊ธฐ์กด ์ปค๋„ ๊ฐœ๋ฐœ์ž๋“ค์€ C์— ์ต์ˆ™ํ•˜๊ณ  Rust๋ฅผ ๋ชจ๋ฅธ๋‹ค๋Š” ๊ฒƒ์ด ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ๋ฉด์—์„œ๋Š” ๋งค์šฐ ๋‹ค๋ฅธ ์ƒˆ๋กœ์šด ์–ธ์–ด๋ฅผ ๋ฐฐ์›Œ์•ผ ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๊ทธ๋‹ค์ง€ ๋‹ฌ๊ฐ€์›Œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ Rust์— ๋Œ€ํ•œ ๋ฐ˜๋ฐœ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.โ€ ๋˜ํ•œ ํ† ๋ฐœ์ฆˆ๋Š” โ€œ๋˜ ๋‹ค๋ฅธ ์ด์œ ๋Š” Rust ์ธํ”„๋ผ ์ž์ฒด๊ฐ€ ๋งค์šฐ ์•ˆ์ •์ ์ด์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ....โ€๋ผ๊ณ  ๋ง๋ถ™์˜€์Šต๋‹ˆ๋‹ค.

{% embed url="https://linux.slashdot.org/story/24/08/25/0256228/linus-torvalds-talks-about-rust-adoption-and-ai" %}

3. ์˜คํ”ˆ์†Œ์Šค ์ปจํŠธ๋ฆฌ๋ทฐํ„ฐ

{% embed url="https://www.contribution.ac/" %}

4. ํƒ€์ž… ์Šคํฌ๋ฆฝํŠธ ๋ฐˆ ์ดํ•ดํ•˜๊ธฐ

์ด๊ฒŒ ๋ญ” ๋œป์ด๋ƒ?

์ด ๋ฐˆ์€ Typescript์™€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํƒ€์ž… ์‹œ์Šคํ…œ์— ๊ด€ํ•œ ์•„์ฃผ ๋…ํŠนํ•œ ์œ ๋จธ์ž…๋‹ˆ๋‹ค. ๋ฐˆ์˜ ๋ฌธ๋งฅ๊ณผ ์ฃผ์–ด์ง„ ์ฝ”๋“œ ๋ธ”๋ก์„ ์ดํ•ดํ•˜๋ ค๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ ๋ถ„์„:

const ฯŸ = Symbol()
const ฮพ = Symbol()
const ฯ— = Symbol()
const โ„ต = Symbol()

์—ฌ๊ธฐ์„œ Symbol()์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ ์œ ์ผ๋ฌด์ดํ•œ ๊ฐ’์„ ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ๊ฐ ์‹ฌ๋ณผ์€ ๋‹ค๋ฅธ ์‹ฌ๋ณผ๊ณผ ์ ˆ๋Œ€ ๊ฐ™์„ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ, ๊ฐ ์‹ฌ๋ณผ์€ ๊ณ ์œ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐˆ์˜ ์š”์ :

  1. "TypeScript is duck typed...":
    • TypeScript๋Š” ๋• ํƒ€์ดํ•‘(duck typing)์„ ์ง€์›ํ•˜๋Š”๋ฐ, ์ด๋Š” ๊ฐ์ฒด์˜ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๊ฐ€ ๊ฐ์ฒด์˜ ํƒ€์ž…์„ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. "ํ•œ ์˜ค๋ฆฌ๋ฅผ ๋‹ค๋ฅธ ์˜ค๋ฆฌ์™€ ํ˜ผ๋™ํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค"๋Š” ๋ง์€ ๊ฐ ์‹ฌ๋ณผ์ด ๊ณ ์œ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  2. "structurally typed vs nominally typed":
    • ๊ตฌ์กฐ์  ํƒ€์ดํ•‘(structural typing)๊ณผ ๋ช…๋ชฉ์  ํƒ€์ดํ•‘(nominal typing) ๊ฐ„์˜ ์ฐจ์ด๋ฅผ ์–ธ๊ธ‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์กฐ์  ํƒ€์ดํ•‘์—์„œ๋Š” ๊ฐ์ฒด์˜ ๊ตฌ์กฐ๊ฐ€ ์ค‘์š”ํ•˜์ง€๋งŒ, ๋ช…๋ชฉ์  ํƒ€์ดํ•‘์—์„œ๋Š” ๋ช…์‹œ์ ์œผ๋กœ ํƒ€์ž…์ด ์ •์˜๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Java๋‚˜ Haskell ๊ฐ™์€ ์–ธ์–ด๋Š” ๋ช…๋ชฉ์  ํƒ€์ดํ•‘์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  3. "Summon the void itself...":
    • ์ด ๋ถ€๋ถ„์€ ์‹ฌ๋ณผ์„ ์ด์šฉํ•ด ๊ณตํ—ˆ(์ฆ‰, ์•„๋ฌด๊ฒƒ๋„ ์—†๋Š” ๊ฒƒ)๋ฅผ ์†Œํ™˜ํ•œ๋‹ค๋Š” ๋‹ค์†Œ ์ฒ ํ•™์ ์ธ ํ‘œํ˜„์ž…๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ์—์„œ๋Š” ์‹ฌ๋ณผ์„ Nil ํƒ€์ž…์œผ๋กœ ์ •์˜ํ•˜์—ฌ ๊ณตํ—ˆ๋ฅผ ํ‘œํ˜„ํ•˜๋ ค๋Š” ์‹œ๋„๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก :

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

๋งํฌ๋œ ๊ธ€์„ ๋ณด๋ฉด ์•„๋งˆ ์ด ์ฝ”๋“œ๊ฐ€ ๋” ํฐ ๋งฅ๋ฝ์—์„œ ์„ค๋ช…๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ฐˆ์€ ๋‹จ์ˆœํžˆ ์ฝ”๋“œ ๊ทธ ์ž์ฒด๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ํƒ€์ž… ์‹œ์Šคํ…œ์˜ ๋ณต์žกํ•จ๊ณผ ๋ฉด์ ‘์—์„œ์˜ ๊ธฐ์ˆ ์ ์ธ ์งˆ๋ฌธ๋“ค์— ๋Œ€ํ•œ ํ’์ž๋ฅผ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Typesrcipt๋กœ proofํ•˜๋ ค๊ณ ํ•˜๋ฉด ๋จผ์ € N-queens๋ฅผ ๊ตฌํ˜„ํ•˜๋ ค๋Š” ๋ฉด์ ‘์ž์˜ ๋ฐˆ์„ ๋“ค๊ณ  ๋งˆ์ค‘๋‚˜์˜ค๋Š” ์ด๊ฐ€ ์žˆ๋‹ค. ๋‚œ ์ด ์ด์•ผ๊ธฐ๋ฅผ ๋ฌด์ฒ™ ์ข‹์•„ํ•œ๋‹ค ํ’€์–ด์„œ ์„ค๋ช…ํ•ด์ค˜

ChatGPT

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

ํ•ต์‹ฌ ๋‚ด์šฉ:

  1. N-Queens ๋ฌธ์ œ:
    • N-Queens ๋ฌธ์ œ๋Š” ๋งค์šฐ ์œ ๋ช…ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜๋กœ, NxN ์ฒด์ŠคํŒ ์œ„์— N๊ฐœ์˜ ํ€ธ(Queen)์„ ์„œ๋กœ ๊ณต๊ฒฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฐฐ์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๊ณ ๋„์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์  ์‚ฌ๊ณ ์™€ ๋ฐฑํŠธ๋ž˜ํ‚น ๊ฐ™์€ ๊ธฐ์ˆ ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  2. TypeScript๋กœ ์ฆ๋ช…(proof)ํ•˜๊ธฐ:
    • "TypeScript๋กœ proofํ•˜๋ ค๊ณ  ํ•˜๋ฉด"์ด๋ผ๋Š” ํ‘œํ˜„์€ TypeScript๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์–ด๋–ค ๋…ผ๋ฆฌ์ ์ธ ์ฆ๋ช…์ด๋‚˜ ๋ณต์žกํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์‹œ๋„ํ•˜๋Š” ์ƒํ™ฉ์„ ๋ฌ˜์‚ฌํ•ฉ๋‹ˆ๋‹ค. TypeScript๋Š” ์ •์  ํƒ€์ž… ๊ฒ€์‚ฌ๊ธฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋…ผ๋ฆฌ์ ์ธ ์ฆ๋ช…์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ํƒ€์ž… ์‹œ์Šคํ…œ์„ ์ด์šฉํ•ด ์ฆ๋ช…์„ ํ•˜๋Š” ๊ฒƒ์€ ๋ณต์žกํ•˜๊ณ , ๋•Œ๋กœ๋Š” TypeScript์˜ ํ•œ๊ณ„์™€ ๋งˆ์ฃผํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  3. ๋ฉด์ ‘์ž์˜ ๋ฐˆ:
    • "N-queens๋ฅผ ๊ตฌํ˜„ํ•˜๋ ค๋Š” ๋ฉด์ ‘์ž์˜ ๋ฐˆ"์ด๋ผ๋Š” ํ‘œํ˜„์€ ๊ธฐ์ˆ  ๋ฉด์ ‘์—์„œ ๋ฉด์ ‘๊ด€์ด ๊ฐ‘์ž๊ธฐ N-Queens ๊ฐ™์€ ์–ด๋ ค์šด ๋ฌธ์ œ๋ฅผ ๋“ค๊ณ  ๋‚˜์™€์„œ ๋„์ „ํ•˜๋Š” ์ƒํ™ฉ์„ ๋น„์œ ์ ์œผ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฉด์ ‘์—์„œ๋Š” ๋•Œ๋กœ๋Š” ๊ธฐ๋Œ€์น˜๊ฐ€ ๋†’๊ฑฐ๋‚˜, ๋งค์šฐ ์–ด๋ ค์šด ๋ฌธ์ œ๊ฐ€ ๋‚˜์˜ค๊ธฐ๋„ ํ•˜๋Š”๋ฐ, ์ด๊ฑธ ๋ฐˆ์œผ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  4. "๋‚œ ์ด ์ด์•ผ๊ธฐ๋ฅผ ๋ฌด์ฒ™ ์ข‹์•„ํ•œ๋‹ค":
    • ์ด ๋ฌธ์žฅ์€ ๋ฐˆ์˜ ์ƒํ™ฉ์ด ์œ ๋จธ๋Ÿฌ์Šคํ•˜๋ฉด์„œ๋„, ํ˜„์‹ค์ ์œผ๋กœ ๊ณต๊ฐ์ด ๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ์ด ์ด์•ผ๊ธฐ๋ฅผ ์ข‹์•„ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ํ‘œํ˜„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋ ค์šด ๋ฌธ์ œ๋‚˜ ๋…ผ๋ฆฌ์ ์ธ ์ฆ๋ช…์„ TypeScript ๊ฐ™์€ ๋„๊ตฌ๋กœ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋А๋ผ๋Š” ์–ด๋ ค์›€๊ณผ ๊ทธ๊ฒƒ์„ ๋ณด๋Š” ์œ ๋จธ๋Ÿฌ์Šคํ•œ ์‹œ๊ฐ์„ ํ‘œํ˜„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ’€์–ด ๋งํ•˜๋ฉด:

๋‹น์‹ ์ด TypeScript๋กœ ์–ด๋–ค ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ฑฐ๋‚˜ ์ฆ๋ช…ํ•˜๋ ค๊ณ  ํ•  ๋•Œ, ๋งˆ์น˜ ๊ธฐ์ˆ  ๋ฉด์ ‘์—์„œ ์–ด๋ ค์šด ๋ฌธ์ œ(N-Queens ๋ฌธ์ œ์™€ ๊ฐ™์€)๋ฅผ ๋งž๋‹ฅ๋œจ๋ฆฌ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋А๊ปด์ง„๋‹ค๋Š” ๊ฒƒ์„ ๋น„์œ ์ ์œผ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, TypeScript์˜ ํƒ€์ž… ์‹œ์Šคํ…œ์„ ์ด์šฉํ•ด์„œ ๋…ผ๋ฆฌ์ ์ธ ์ฆ๋ช…์„ ํ•˜๋ ค๋Š” ๊ฒƒ์€ ๋งˆ์น˜ ๋ฉด์ ‘์—์„œ ์–ด๋ ค์šด ๋ฌธ์ œ๋ฅผ ํ’€๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์œ ๋จธ์ž…๋‹ˆ๋‹ค. ์ด ์ƒํ™ฉ์„ ๋ฐˆ์œผ๋กœ ๋งŒ๋“ค์–ด ์›ƒ์Œ์„ ์ฃผ๋ฉด์„œ๋„, ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋ณต์žกํ•จ์„ ํ’์žํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๋งฅ๋ฝ์—์„œ, ์ด ์ด์•ผ๊ธฐ๋ฅผ ์ข‹์•„ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ํ”„๋กœ๊ทธ๋žจ๋ฐ์˜ ๋ณต์žกํ•จ๊ณผ ๋ฉด์ ‘์˜ ๋„์ „์ ์ธ ์ƒํ™ฉ์— ๋Œ€ํ•œ ๊ณต๊ฐ๊ณผ ์œ ๋จธ๋ฅผ ์ฆ๊ธฐ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

5. verse๋ž€

verse ์ฒซ์ธ์ƒ์€ ์ด๊ฒŒ ์™œ ํ•˜์ดํ”„์ธ์ง€ ๋ชจ๋ฅด๊ฒ ์Œ ๋ฐœ์ „ํ•˜๋Š” ๊ฑธ ๋” ๋ด์•ผ์ง€

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

6. Watchman : ํŒŒ์ผ ๊ฐ์‹œ ์„œ๋น„์Šค

๊ฒฐ๋ก  : ํŽธํ•ด์„œ๋ผ๋Š” ๋Œ“๊ธ€์ด ์žˆ์—ˆ์Œ

Watchman์ด๋ž€?

Watchman์€ ํŒŒ์ผ์„ ๊ฐ์‹œํ•˜๊ณ  ๋ณ€๊ฒฝ ์‹œ ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํŒŒ์ผ ๋ณ€๊ฒฝ์ด ์ผ์น˜ํ•  ๋•Œ ์ž‘์—…(์˜ˆ: ์ž์‚ฐ ์žฌ๊ตฌ์ถ•)์„ ํŠธ๋ฆฌ๊ฑฐํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ํด๋”๋‚˜ ํŒŒ์ผ์„ ๊ฐ์‹œํ•˜๋‹ค๊ฐ€ ๋ณ€ํ™”๊ฐ€ ์ƒ๊ธฐ๋ฉด, ํŠน์ • ๋™์ž‘์œผ๋กœ ์‹คํ–‰ํ•˜๋„๋ก ์„ค์ •ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋…

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

์„ค์น˜

Watchman: https://facebook.github.io/watchman/

  • brew install watchman ์„ค์น˜๋ฅผ ์™„๋ฃŒํ•˜๋ฉด, watchman --version
  • ์ •์ƒ์ ์œผ๋กœ ์„ค์น˜๊ฐ€ ๋˜์–ด ์žˆ์œผ๋ฉด 4.9.0

7. L1 ์บ์‹œ

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

L1 ์บ์‹œ๋ž€?

L1 ์บ์‹œ๋Š” CPU์— ์žˆ๋Š” ๊ฐ€์žฅ ๋น ๋ฅด๊ณ  ์ž‘์€ ๋ฉ”๋ชจ๋ฆฌ์ž…๋‹ˆ๋‹ค. CPU๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ, ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ RAM์—์„œ ์ง์ ‘ ์ฝ์–ด์˜ค๋Š” ๋Œ€์‹ , ์†๋„๊ฐ€ ํ›จ์”ฌ ๋น ๋ฅธ L1 ์บ์‹œ์—์„œ ๋จผ์ € ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. L1 ์บ์‹œ๋Š” CPU ์ฝ”์–ด๋งˆ๋‹ค ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌํ•˜๋ฉฐ, ์ ‘๊ทผ ์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— CPU์˜ ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

์บ์‹œ๋Š” ๋ณดํ†ต ๊ณ„์ธต ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š”๋ฐ, CPU ๋‚ด๋ถ€์— ์žˆ๋Š” ๊ฐ€์žฅ ๋น ๋ฅธ ๋ฉ”๋ชจ๋ฆฌ๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ์™ธ๋ถ€์˜ ๋А๋ฆฐ ๋ฉ”๋ชจ๋ฆฌ๊นŒ์ง€ ์ด์–ด์ง‘๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์บ์‹œ ์ข…๋ฅ˜:

  1. L1 ์บ์‹œ (Level 1 Cache):
    • CPU์—์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์บ์‹œ.
    • ์šฉ๋Ÿ‰์ด ๋งค์šฐ ์ž‘์ง€๋งŒ(๋ณดํ†ต ์ˆ˜์‹ญ KB), ์†๋„๊ฐ€ ๊ฐ€์žฅ ๋น ๋ฆ…๋‹ˆ๋‹ค.
    • CPU ์ฝ”์–ด๋งˆ๋‹ค ๋ณ„๋„๋กœ ์กด์žฌ.
  2. L2 ์บ์‹œ (Level 2 Cache):
    • L1 ์บ์‹œ๋ณด๋‹ค ์•ฝ๊ฐ„ ๋А๋ฆฌ์ง€๋งŒ, ์šฉ๋Ÿ‰์€ ๋” ํฝ๋‹ˆ๋‹ค(๋ณดํ†ต ์ˆ˜๋ฐฑ KB์—์„œ ์ˆ˜ MB).
    • L1 ์บ์‹œ์— ์—†๋˜ ๋ฐ์ดํ„ฐ๋Š” L2 ์บ์‹œ์—์„œ ์ฐพ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
    • ์ผ๋ถ€ CPU์—์„œ๋Š” ์ฝ”์–ด๋งˆ๋‹ค L2 ์บ์‹œ๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌํ•˜๋ฉฐ, ๋‹ค๋ฅธ CPU์—์„œ๋Š” ๊ณต์œ ๋˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.
  3. L3 ์บ์‹œ (Level 3 Cache):
    • L2 ์บ์‹œ๋ณด๋‹ค ๋” ๋А๋ฆฌ๊ณ , ์šฉ๋Ÿ‰์€ ๋” ํฝ๋‹ˆ๋‹ค(๋ณดํ†ต ์ˆ˜ MB์—์„œ ์ˆ˜์‹ญ MB).
    • ์ผ๋ฐ˜์ ์œผ๋กœ ์—ฌ๋Ÿฌ CPU ์ฝ”์–ด๊ฐ€ ๊ณต์œ ํ•˜๋Š” ์บ์‹œ์ž…๋‹ˆ๋‹ค.
    • L1, L2 ์บ์‹œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์ง€ ๋ชปํ–ˆ์„ ๋•Œ, L3 ์บ์‹œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.
  4. ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ (RAM):
    • ์บ์‹œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์ง€ ๋ชปํ•˜๋ฉด, CPU๋Š” ์ƒ๋Œ€์ ์œผ๋กœ ๋А๋ฆฐ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ(RAM)์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
    • RAM์€ ์บ์‹œ์— ๋น„ํ•ด ํ›จ์”ฌ ๋А๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด CPU์˜ ์„ฑ๋Šฅ์— ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
  5. ์Šคํ† ๋ฆฌ์ง€ (HDD/SSD):
    • ์บ์‹œ์™€ RAM์—์„œ๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์ง€ ๋ชปํ•˜๋ฉด, ๊ฐ€์žฅ ๋А๋ฆฐ ๊ณ„์ธต์ธ ํ•˜๋“œ ๋””์Šคํฌ๋‚˜ SSD ๊ฐ™์€ ์Šคํ† ๋ฆฌ์ง€ ์žฅ์น˜์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

๊ฒฐ๋ก :

  • L1 ์บ์‹œ๋Š” CPU์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด, ๊ฐ€์žฅ ๋น ๋ฅธ ๋ฉ”๋ชจ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ด ์บ์‹œ๋ฅผ ๋ฐฉ๋ฐ”๋‹ฅ์— ๋น„์œ ํ•œ ๊ฒƒ์€ ์ž์ฃผ ์“ฐ๋Š” ๋ฌผ๊ฑด์„ ๊ฐ€๊นŒ์ด์— ๋‘๋Š” ์ƒํ™ฉ์„ ์žฌ๋ฏธ์žˆ๊ฒŒ ํ‘œํ˜„ํ•œ ์œ ๋จธ์ž…๋‹ˆ๋‹ค.
  • ์บ์‹œ๋Š” CPU ์„ฑ๋Šฅ์„ ๋†’์ด๊ธฐ ์œ„ํ•œ ํ•„์ˆ˜์ ์ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ, CPU๋Š” ์ž‘์—… ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋น ๋ฅธ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ํƒ์ƒ‰ํ•œ ํ›„, ์บ์‹œ์— ์—†๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋А๋ฆฐ ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต์—์„œ ์ฐพ์•„์˜ค๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

8. Cursor IDE ํˆด

์ปค์„œ๋ž€ Cursor๋Š” Microsoft์˜ ์˜คํ”ˆ ์†Œ์Šค Visual Studio Code ์—๋””ํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ํฌํฌ(fork)์ด๋ฉฐ, ๊ฐœ๋ฐœ์ž๋“ค์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๋””๋ฒ„๊น…ํ•˜๋Š” ๊ณผ์ •์„ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด OpenAI์˜ ๊ธฐ๋Šฅ๋“ค์„ ํ†ตํ•ฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

AI์˜ ํž˜์„ ๋นŒ์–ด ๊ฐœ๋ฐœ์ž๋Š” ์ฝ”๋“œ ๊ฐœ์„ ์‚ฌํ•ญ์„ ๋น ๋ฅด๊ฒŒ ํŒŒ์•…ํ•˜๊ณ  ์ ์šฉํ•จ์œผ๋กœ์จ, ์ „๋ฐ˜์ ์ธ ๊ฐœ๋ฐœ ๊ณผ์ •์˜ ์ƒ์‚ฐ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ, Cursor IDE๋Š” VSCode์˜ ํ™•์žฅ ๊ธฐ๋Šฅ, ํ…Œ๋งˆ, ํ‚ค๋ฐ”์ธ๋”ฉ ๋“ฑ์„ ์†์‰ฝ๊ฒŒ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

9. ํ•œ๊ตญ ์‚ฌ๋žŒ๋“ค์€ ์ž˜ ๋ชจ๋ฅด๋Š” ๊ฑฐ ๊ฐ™์€ ๋ฌด๋ฃŒ ์ž๊ธฐ๊ณ„๋ฐœ ์‚ฌ์ดํŠธ ์ถ”์ฒœ

์ฝ”์„ธ๋ผ๋Š” ์„ธ๊ณ„ ์œ ๋ช… ๋Œ€ํ•™๋“ค์ด ์ œ๊ณตํ•˜๋Š” ๊ฐ•์˜๋ฅผ ๋ฌด๋ฃŒ๋กœ ๋“ค์„ ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ์ž„. ์ธ๋ฌธํ•™, ๊ธฐ์ˆ , ๋น„์ฆˆ๋‹ˆ์Šค, ๋ฐ์ดํ„ฐ ๊ณผํ•™ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ๊ฐ•์ขŒ๋ฅผ ์ œ๊ณตํ•จ. ๊ฐ•์˜ ๋๋‚˜๋ฉด ์œ ๋ฃŒ๋กœ ์ธ์ฆ์„œ๋„ ๋ฐœ๊ธ‰๋ฐ›์„ ์ˆ˜ ์žˆ์Œ.
์ถ”์ฒœ ๊ฐ•์ขŒ: ์˜ˆ์ผ๋Œ€ํ•™๊ต์˜ โ€œํ–‰๋ณต์˜ ๊ณผํ•™โ€, ๊ตฌ๊ธ€์˜ โ€œ๋ฐ์ดํ„ฐ ๋ถ„์„โ€

์นธ ์•„์นด๋ฐ๋ฏธ๋Š” ์ˆ˜ํ•™, ๊ณผํ•™, ๊ฒฝ์ œํ•™ ๋“ฑ ๊ธฐ๋ณธ์ ์ธ ๊ณผ๋ชฉ๋“ค์„ ๋ฌด๋ฃŒ๋กœ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ๋น„์˜๋ฆฌ ๊ต์œก ์‚ฌ์ดํŠธ์ž„. ์ดˆ์ค‘๊ณ  ํ•™์ƒ๋“ค์„ ์œ„ํ•œ ๊ธฐ์ดˆ ๊ต์œก๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ๋Œ€ํ•™ ์ˆ˜์ค€๊นŒ์ง€ ์ปค๋ฒ„๋จ. ์ถ”์ฒœ ๊ฐ•์ขŒ: ์ˆ˜ํ•™ ๋‹จ๊ณ„๋ณ„ ๊ฐ•์ขŒ, ๊ฒฝ์ œํ•™ ๊ฐœ๋ก 

ํ•˜๋ฒ„๋“œ์™€ MIT๊ฐ€ ๋งŒ๋“  ํ”Œ๋žซํผ์ž„. ๋Œ€ํ•™ ์ˆ˜์ค€์˜ ๊ฐ•์˜๋ฅผ ๋ฌด๋ฃŒ๋กœ ๋“ค์„ ์ˆ˜ ์žˆ์Œ. ์ปดํ“จํ„ฐ ๊ณผํ•™, ์ธ๋ฌธํ•™, ๊ณตํ•™ ๋“ฑ ๋‹ค์–‘ํ•œ ์ฃผ์ œ๋ฅผ ๋‹ค๋ฃธ. ๊ณต์‹์ ์ธ ์ˆ˜๋ฃŒ์ฆ ๋ฐœ๊ธ‰์€ ์œ ๋ฃŒ์ž„.
์ถ”์ฒœ ๊ฐ•์ขŒ: MIT์˜ โ€œ์ปดํ“จํ„ฐ ๊ณผํ•™ ๋ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐโ€, ํ•˜๋ฒ„๋“œ๋Œ€ํ•™๊ต์˜ โ€œ๋ฐ์ดํ„ฐ ๊ณผํ•™: R ๊ธฐ์ดˆโ€

์˜๊ตญ ์˜คํ”ˆ ๋Œ€ํ•™๊ต์™€ BBC๊ฐ€ ๋งŒ๋“  ์˜จ๋ผ์ธ ํ•™์Šต ํ”Œ๋žซํผ์ž„. ๋‹ค์–‘ํ•œ ์ฃผ์ œ์˜ ๊ฐ•์ขŒ๊ฐ€ ๋ฌด๋ฃŒ๋กœ ์ œ๊ณต๋˜๋ฉฐ, ์™„๋ฃŒ ํ›„ ์ธ์ฆ์„œ๋„ ์œ ๋ฃŒ๋กœ ๋ฐœ๊ธ‰ ๊ฐ€๋Šฅํ•จ. ์ถ”์ฒœ ๊ฐ•์ขŒ: โ€œ๋””์ง€ํ„ธ ๋งˆ์ผ€ํŒ… ๊ธฐ์ดˆโ€, โ€œ์ธ๊ฐ„์˜ ๋‡Œ ์ดํ•ดํ•˜๊ธฐโ€

์ƒˆ๋กœ์šด AI

11. React ๊ด€๋ จ

React(์›น ๋ฐ ๋„ค์ดํ‹ฐ๋ธŒ)์˜ ์Šคํƒ€์ผ๊ณผ UI๊ฐ€ ์ตœ์ ํ™” ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ๋งŒ๋‚ฉ๋‹ˆ๋‹ค.

Tamagui๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ์ €ํ•˜๋˜๋Š” ๋‘ ๊ฐ€์ง€ ์ธก๋ฉด, ์ฆ‰ ์„ฑ๋Šฅ๊ณผ ์ฝ”๋“œ ํ’ˆ์งˆ์„ ํฌ์ƒํ•˜์ง€ ์•Š๊ณ ๋„ ์›น ๋ฐ ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ ๊ฐ„์— ๋” ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Š” ํ”Œ๋žซํผ๋ณ„ ์ตœ์ ํ™”๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์ตœ์ ํ™” ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ํ†ตํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ๋…ผ๋ฆฌ๋‚˜ ๊ต์ฐจ ๋ชจ๋“ˆ ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์žˆ๋Š” ์Šคํƒ€์ผ์ด ์ ์šฉ๋œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ div์›น์—์„œ๋Š” ๊ฐ„๋‹จํ•˜๊ณ  ์›์ž์ ์ธ CSS๋กœ, ๋„ค์ดํ‹ฐ๋ธŒ์— ์Šคํƒ€์ผ ๊ฐ์ฒด๋ฅผ ๋Œ์–ด์˜ฌ๋ฆฐ ๋ทฐ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

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

์Šคํƒ€ํ„ฐ๋ฅผ ํ™•์ธํ•ด ๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค npm create tamagui@latest. ๊ฐ„๋‹จํ•œ ํ•™์Šต ์˜ˆ์ œ๋ถ€ํ„ฐ ํ”„๋กœ๋•์…˜์— ๋ฐ”๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋…ธ๋ ˆํฌ๊นŒ์ง€ ๋‹ค์–‘ํ•ฉ๋‹ˆ๋‹ค.

react ๊ธฐ๋ฐ˜ ํ”„๋ ˆ์ž„์›Œํฌ

  • vsc๊ฐ€ ๊ฐ€์žฅ ๋งŽ๊ณ  ์›น์Šคํ†ฐ์ด ๋‘ ๋ฒˆ์งธ

12. db ๊ด€๋ จ

์ธ๋ฑ์Šค ํŠœ๋‹

์ธ๋ฑ์Šค ํƒ€๊ณ  ์•ˆํƒ€๊ณ ๋Š” ์„œ๋ฒ„ ๋ฐฑ๋Œ€๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์ฐจ์ด๋ฅผ ๋ณด์ผ ์ˆ˜ ์žˆ์Šต์ฃ . ์‚ฌ์‹ค ๊ฑฐ์˜ ๋ชจ๋“  ์Šค์ผ€์ผ๋ง์˜ ํ•ต์‹ฌ์€ ๋ถ„์‚ฐ์ฒ˜๋ฆฌ๋Š” ๋Œ€๋ถ€๋ถ„ ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ

๐ŸŒฑ ๋งํฌ ๋ชจ์Œ

1. CS ์šฉ์–ด ๋ชจ์Œ

{% embed url="https://csnote.net/" %}

2. ์—ฌ๋Ÿฌ๋ถ„์˜ CS ๊ต์œก์—์„œ ๋ˆ„๋ฝ๋œ ํ•™๊ธฐ

{% embed url="https://missing-semester-kr.github.io/" %}

3. package.json ์„ค์ •ํ•˜๋Š” ์ง€๋ฅผ ๋„˜์–ด์„œ ํ…Œ์ŠคํŠธ๋ž‘ ๋ฐฐํฌ ๋„๊ตฌ ์„ค์ • ์ •๋ฆฌ ๊ธ€

{% embed url="https://www.totaltypescript.com/how-to-create-an-npm-package" %}

๋ฒˆ๋“ค๋Ÿฌ(Bundle)๋ž€?

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

๋ฒˆ๋“ค๋Ÿฌ๋Š” ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฒˆ๋“ค๋Ÿฌ๋Š” ๋‹ค์–‘ํ•œ ํŒŒ์ผ์„ ๋ถ„์„ํ•˜์—ฌ ์˜์กด ๊ด€๊ณ„๋ฅผ ํŒŒ์•…ํ•˜๊ณ , ์ด๋ฅผ ํ•˜๋‚˜์˜ ํŒŒ์ผ ๋˜๋Š” ์ ์€ ์ˆ˜์˜ ํŒŒ์ผ๋กœ ๋ฌถ์–ด์ค๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์œผ๋กœ์จ ํŒŒ์ผ ์š”์ฒญ ์ˆ˜๊ฐ€ ์ค„์–ด๋“ค๊ณ , ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ๋ฒˆ๋“ค๋Ÿฌ๋กœ๋Š” Webpack, Parcel, Rollup, Tsup ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฒˆ๋“ค๋Ÿฌ์˜ ์ฃผ์š” ๊ธฐ๋Šฅ:

  1. ํŒŒ์ผ ๊ฒฐํ•ฉ: ์—ฌ๋Ÿฌ ํŒŒ์ผ์„ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ๊ฒฐํ•ฉํ•ด ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.
  2. ์˜์กด์„ฑ ๊ด€๋ฆฌ: ๋ชจ๋“ˆ ๊ฐ„์˜ ์˜์กด์„ฑ์„ ํŒŒ์•…ํ•˜์—ฌ ํŒŒ์ผ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  3. ์ตœ์ ํ™”: ์ฝ”๋“œ ์••์ถ•, ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์ œ๊ฑฐ(Tree Shaking), ์ด๋ฏธ์ง€ ์ตœ์ ํ™” ๋“ฑ์œผ๋กœ ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ณ  ์„ฑ๋Šฅ์„ ๋†’์ž…๋‹ˆ๋‹ค.
  4. ์ฝ”๋“œ ๋ถ„ํ• : ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ฝ”๋“œ ๋ถ„ํ• (Chunking)์„ ํ†ตํ•ด ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋™์ ์œผ๋กœ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๋Œ€ํ™” ํ•ด์„๊ณผ ํ’€์–ด์„œ ์„ค๋ช…:

  1. XiNiHa์˜ ๋ง:

    XiNiHa๋Š” tsup์ด๋ผ๋Š” ๋นŒ๋“œ ๋„๊ตฌ๊ฐ€ **๋ชจ๋“  ์•„์›ƒํ’‹(์ถœ๋ ฅ ํŒŒ์ผ)**์„ ํ•˜๋‚˜์˜ ํฐ ํŒŒ์ผ๋กœ ๋ฒˆ๋“ค๋งํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์•„์‰ฌ์›€์„ ํ‘œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

    • "tsup์ด ์ข‹๊ธด ํ•˜์ง€๋งŒ ์•„์›ƒํ’‹์„ ์ฃ„๋‹ค ๋ฒˆ๋“ค๋ง ํ•ด๋ฒ„๋ฆฐ๋‹ค๋Š” ์ธก๋ฉด์—์„œ":
      • tsup์ด๋ผ๋Š” ๋„๊ตฌ๋Š” ๋นŒ๋“œ ์„ฑ๋Šฅ์ด ์ข‹๊ณ  ๊ฐ„ํŽธํ•˜์ง€๋งŒ, ์ถœ๋ ฅ๋˜๋Š” ๊ฒฐ๊ณผ ํŒŒ์ผ์„ ๋ชจ๋‘ ํ•˜๋‚˜์˜ ํฐ ํŒŒ์ผ๋กœ ๋ฌถ์–ด๋ฒ„๋ฆฐ๋‹ค๋Š” ์ ์—์„œ ๋ถˆํŽธํ•˜๋‹ค๋Š” ์˜๊ฒฌ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ํŒŒ์ผ์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ๋ถ„๋ฆฌํ•ด์„œ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋ชจ๋“  ๊ฒƒ์„ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ๋ฒˆ๋“ค๋งํ•ด๋ฒ„๋ฆฐ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    • "mkdist ๋‚ด์ง€ ์œ ์‚ฌํ•œ ํŠธ๋žœ์ŠคํŒŒ์ผ ๊ธฐ๋ฐ˜ ๋นŒ๋“œํˆด":
      • mkdist๋Š” ๋ฒˆ๋“ค๋Ÿฌ์™€๋Š” ๋‹ฌ๋ฆฌ, ๊ฐ ํŒŒ์ผ์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ํŠธ๋žœ์ŠคํŒŒ์ผ(ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋‚˜ ES6 ์ฝ”๋“œ๋ฅผ ๊ตฌ๋ฒ„์ „ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋ณ€ํ™˜)ํ•˜์—ฌ ํŒŒ์ผ๋“ค์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. XiNiHa๋Š” ๋ฒˆ๋“ค๋ง๋ณด๋‹ค๋Š” ํŠธ๋žœ์ŠคํŒŒ์ผ๋Ÿฌ ๋ฐฉ์‹์œผ๋กœ ํŒŒ์ผ์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, mkdist ๊ฐ™์€ ๋„๊ตฌ๊ฐ€ ๋” ๋ฐœ์ „๋˜๊ธธ ๋ฐ”๋ผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
    • "๋นจ๋ž‘ ๊ถค๋„์— ์˜ฌ๋ผ์™”์Œ ์ข‹๊ฒ ๋‹ค":
      • mkdist ๊ฐ™์€ ๋„๊ตฌ๊ฐ€ ์ข€ ๋” ์ธ๊ธฐ๋ฅผ ์–ป๊ณ , ๋”์šฑ ๋ฐœ์ „ํ•ด์„œ ๋น ๋ฅด๊ฒŒ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋ฒˆ๋“ค๋ง๋ณด๋‹ค๋Š” ํŒŒ์ผ์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด ๋” ๋„๋ฆฌ ์“ฐ์˜€์œผ๋ฉด ์ข‹๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.
  2. Basix์˜ ๋ง:

    Basix๋Š” XiNiHa์˜ ์˜๊ฒฌ์— ๊ณต๊ฐํ•˜๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งํ•ฉ๋‹ˆ๋‹ค.

    • "๋ฒˆ๋“ค๋Ÿฌ ๊ธฐ๋ฐ˜์œผ๋กœ ๋„๊ตฌ๋ฅผ ๋งŒ๋“ค์–ด๋„ ์ถฉ๋ถ„ํžˆ ํŒŒ์ผ ๋ถ„๋ฆฌ ๋‹ฌ์„ฑ์ด ๊ฐ€๋Šฅํ•œ๋ฐ":
      • Basix๋Š” ์‚ฌ์‹ค ๋ฒˆ๋“ค๋Ÿฌ๋„ ์ ์ ˆํžˆ ์„ค์ •ํ•˜๋ฉด ๊ฐ ํŒŒ์ผ์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ๋‚˜๋ˆ ์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ง€์ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒˆ๋“ค๋ง ๋„๊ตฌ๋„ ์ž˜ ์‚ฌ์šฉํ•˜๋ฉด ํŒŒ์ผ์„ ๋ถ„๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด๋ฅผ ์‰ฝ๊ฒŒ ์ง€์›ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜, ์ผ๋ถ€ ์„ค์ •์ด ๋ถˆํŽธํ•˜๋‹ค๋Š” ์•„์‰ฌ์›€์„ ํ‘œํ˜„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    • "์ข€ ์•„์‰ฌ์šด ์ผ์ด์ฃ ":
      • tsup ๊ฐ™์€ ๋„๊ตฌ๊ฐ€ ๊ฐ•๋ ฅํ•˜๊ณ  ์„ฑ๋Šฅ์ด ์ข‹์ง€๋งŒ, ํŒŒ์ผ์„ ๋” ์„ธ๋ถ€์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ๋ถ€์กฑํ•˜๊ฑฐ๋‚˜ ๋ถˆํŽธํ•˜๋‹ค๋Š” ์ ์—์„œ ์•„์‰ฝ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์š”์•ฝ:

  • XiNiHa: tsup์€ ๊ฐ•๋ ฅํ•˜์ง€๋งŒ, ๋ชจ๋“  ํŒŒ์ผ์„ ํ•˜๋‚˜๋กœ ๋ฒˆ๋“ค๋งํ•˜๋Š” ๋ฐฉ์‹์ด ์•„์‰ฝ๋‹ค. ๋Œ€์‹  mkdist ๊ฐ™์€ ํŠธ๋žœ์ŠคํŒŒ์ผ๋Ÿฌ ๋„๊ตฌ๊ฐ€ ๋นจ๋ฆฌ ์ž๋ฆฌ ์žก์•„ ๋” ๋ฐœ์ „ํ–ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.
  • Basix: ๋ฒˆ๋“ค๋Ÿฌ๋„ ํŒŒ์ผ์„ ๋ถ„๋ฆฌํ•ด์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ทธ๋Ÿฐ ๊ธฐ๋Šฅ์ด ์™„๋ฒฝํ•˜๊ฒŒ ๊ตฌํ˜„๋˜์ง€ ์•Š์•„์„œ ์•„์‰ฌ์šด ์ ์ด ์žˆ๋‹ค๋Š” ์˜๊ฒฌ์„ ์ œ์‹œ.

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

4. ์˜คํ”ˆ์†Œ์Šค ๋งํฌ

{% embed url="https://openapi.tools/#documentation" %}

5. ์Šคํ”„๋ง ์บ ํ”„ 2024 ์˜์ƒ

{% embed url="https://t.co/Ka7uSa6dEA" %}

6. ํ•จ์ˆ˜ํ˜• ์ฝ”๋”ฉ ๊ด€๋ จ ๋ธ”๋กœ๊ทธ ๊ธ€

{% embed url="https://medium.com/@bsidekr/%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%BD%94%EB%93%9C%EB%A5%BC-%EC%9E%98-%EC%9E%91%EC%84%B1%ED%95%A0-%EC%88%98-%EC%9E%88%EC%9D%84%EA%B9%8C-503a74a9981a" %}

7. ai ๊ธฐ๋ฐ˜ ์ฑ… ์š”์•ฝ ์‚ฌ์ดํŠธ

{% embed url="https://sobrief.com/" %}

8. ํ”„๋ก ํŠธ ์—”๋“œ ์ฝ์„ ๊ฑฐ๋ฆฌ

{% embed url="https://velog.io/@teo/frontend" %}