[etc] ๐ŸŒฐ๐Ÿฟ๏ธ ๊ฐ์ข… ๊ฐœ๋ฐœ ๋„๊ตฌ, ์œ ํ‹ธ๋ฆฌํ‹ฐ ์‚ฌ์ดํŠธ, ์–ธ์–ด, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ์Œ

๊ฐœ์š”

์“ฐ๋‹ˆ๋Š” ๋‹ค๋žŒ์ฅ๊ฐ™์€ ์Šต์„ฑ์ด ์žˆ์–ด์„œ ์ผ๋‹จ ๋ชจ์œผ๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

์ž์ฃผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ค‘์š”ํ•œ ๊ฒƒ์€ โญํ‘œ์‹œํ•จ.

1. ๋ฌธ์„œ, ๋ฉ”๋‰ด์–ผ, ์ฐธ๊ณ  ์ž๋ฃŒ

์ผ๋ฐ˜ ๋ฌธ์„œ

  • MDN Web Docs: Mozilla Developer Network์˜ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ๊ธฐ์ˆ  ๋ฌธ์„œ.
  • โญDevDocs: ๊ฐœ๋ฐœ์ž์šฉ API ๋ฌธ์„œ ๋ชจ์Œ ์‚ฌ์ดํŠธ. ๊นƒํ—ˆ๋ธŒ ๋งํฌ
  • WikiDocs: ์˜จ๋ผ์ธ ์ฑ… ์ œ์ž‘ ๊ณต์œ , ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ณ„ ํŠœํ† ๋ฆฌ์–ผ์ด ์žˆ์Œ.
  • The Concise TypeScript Book: TypeScript์˜ ๋ชจ๋“  ๊ฒƒ์„ ์ •๋ฆฌํ•œ ๋ฌธ์„œ.
  • ECMA International: ecma-262: ๋น„์˜๋ฆฌ ๊ตญ์ œ ํ‘œ์ค€ํ™” ๊ธฐ๊ตฌ์ธ ECMA Internation์˜ ์‚ฌ์ดํŠธ. ์ด ๋ฌธ์„œ์—์„œ๋Š” ECMAScript์˜ ๋ฒ„์ „๋ณ„ ๋ช…์„ธ์™€ ํ˜„์žฌ ์œ ํšจํ•œ ํ‘œ์ค€์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • You might not need jQuery: jQuery API ๋Œ€์‹  ์“ธ ์ˆ˜ ์žˆ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ + CSS ์ฝ”๋“œ๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์‚ฌ์ดํŠธ. ์˜ˆ๋ฅผ ๋“ค์–ด $(el).show()๋ฅผ ์ฐพ์œผ๋ฉด, el.style.display = ''๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์‹์ด๋‹ค.
  • standard-readme: ๋ˆ„๊ตฐ๊ฐ€ ๋งŒ๋“ค์–ด๋†“์€ README ์ž‘์„ฑ ํ‘œ์ค€

ํŠนํ™” ๊ฐ€์ด๋“œ

  • โญCan I use: ์›น API, HTML, CSS ๋“ฑ์„ ์–ด๋–ค ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง€์›ํ•˜๋Š”์ง€๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์‚ฌ์ดํŠธ.
  • 0.30000000000000004.com: ๋ถ€๋™ ์†Œ์ˆ˜์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๋Š” ๋ฌธ์„œ
  • link anatomy: location ํ•ด๋ถ€ํ•™(?)
  • JS Is Weird: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ˜ผ๋ˆ์˜ ์นด์˜ค์Šค ๊ฐ™์€ ์—ฌ๋Ÿฌ ํ˜„์ƒ๋“ค์„ ํ€ด์ฆˆ ํ˜•์‹์œผ๋กœ ์„ค๋ช…ํ•˜๋Š” ์‚ฌ์ดํŠธ

HTTP ํ‘œ์ค€

  • rfc9110 | HTTP Semantics)
  • rfc6648 | Deprecating the "X-" Prefix and Similar Constructs in Application Protocols
  • The W3C Markup Validation Service: W3C์—์„œ ์šด์˜ํ•˜๋Š” ๊ฑธ๋กœ ๋ณด์ด๋Š” ๋งˆํฌ์—… ๊ฒ€์‚ฌ๊ธฐ. ์†Œ์Šค ์ž…๋ ฅ ๋ฐฉ๋ฒ•์œผ๋กœ URL, ํŒŒ์ผ, ์ง์ ‘ ์ž…๋ ฅ ์„ธ ๊ฐ€์ง€๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด ๊ฒ€์‚ฌ๊ธฐ๋Š” ์ˆœ์ˆ˜ HTML์„ ๋Œ€์ƒ์œผ๋กœ ์ž‘์„ฑ๋œ ๊ฒ€์‚ฌ๊ธฐ๋ผ์„œ ๋ฆฌ์•กํŠธ ๊ฐ™์€ ํ”„๋ก ํŠธ์—”๋“œ์šฉ ํ”„๋ ˆ์ž„์›Œํฌ ์†Œ์Šค๋ฅผ ๊ฒ€์‚ฌํ•˜๋ฉด ์ฃ„ ํ‹€๋ ธ๋‹ค๊ณ  ๋‚˜์˜จ๋‹ค. ์ž๋งคํ’ˆ์œผ๋กœ CSS Validator๋„ ์žˆ๋‹ค.

๋ณด์•ˆ

  • MITRE | CVE: ๊ณตํ†ต ์ทจ์•ฝ์  ์•„์นด์ด๋น™ ์‚ฌ์ดํŠธ
  • CVE.report
  • DevHub Advisory: mitre ๋ณด๋‹ค ์ฝ๊ธฐ ์ข‹์€ ํ˜•์‹์œผ๋กœ ์„ค๋ช…ํ•ด์ฃผ๋Š” ์‚ฌ์ดํŠธ์ธ๋ฐ, ์ด๋Ÿฐ์‹์œผ๋กœ https://devhub.checkmarx.com/cve-details/CVE-2016-1000027 ๋งจ ๋’ค path๋งŒ ๋ฐ”๊ฟ”์„œ ์กฐํšŒํ•˜๋ฉด ํŽธํ•˜๋‹ค.

2. ์œ ๋‹‰์Šค/๋ฆฌ๋ˆ…์Šค Unix/Linux

  • Crontab.guru: Cron(๋ฆฌ๋ˆ…์Šค/์œ ๋‹‰์Šค์˜ ์Šค์ผ€์ค„๋Ÿฌ) ํ‘œํ˜„์‹์„ ํ…Œ์ŠคํŠธํ•˜๊ฑฐ๋‚˜ ๋žœ๋ค์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์‚ฌ์ดํŠธ. Cron Job์˜ ๋ชจ๋‹ˆํ„ฐ๋ง ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ํŒŒ๋Š” Cronitor์—์„œ ์šด์˜ํ•œ๋‹ค.

3. ๊ฐœ๋ฐœ ๋„๊ตฌ

์ฝ”๋“œ ์—๋””ํ„ฐ, IDE

  • โญSublime Text: ์œˆ๋„์šฐ ๊ธฐ๋ณธ ๋…ธํŠธํŒจ๋“œ๋ฅผ ์™„๋ฒฝํžˆ ๋Œ€์ฒด ๊ฐ€๋Šฅํ•œ ์•ฑ. ๋น ๋ฅด๊ณ  ๊ฐ€๋ณ๊ณ  ๋ฉ€ํ‹ฐ ์บ๋Ÿฟ์„ ์ง€์›ํ•œ๋‹ค. ๋ฌด๋ฃŒ ๋ฒ„์ „์€ ๊ฐ€๋” ์ €์žฅํ•  ๋•Œ ํŒ์—…์ด ๋œฌ๋‹ค.
  • Notepad++: ์ข€ ์˜ค๋ž˜๋์ง€๋งŒ ๊ฐ€๋ณ๊ฒŒ ์“ฐ๊ธฐ ์ข‹์Œ. ์„œ๋ธŒ๋ผ์ž„์œผ๋กœ ์—ด์—ˆ์„ ๋•Œ ์•ฑ์ด ๋ฉˆ์ถฐ๋ฒ„๋ฆด ์ •๋„๋กœ ํฐ ํŒŒ์ผ๋„ ๋…ธํŠธํŒจ๋“œ++ ์—์„  ์ž˜ ์—ด๋ฆฐ๋‹ค.
  • โญVisual Studio Code
  • Obsidian: ์‹ ๊ฐœ๋… ํ…์ŠคํŠธ ์—๋””ํ„ฐ. ๋งˆํฌ๋‹ค์šด๊ณผ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ๊ธฐ๋ณธ์œผ๋กœ ์ง€์›ํ•˜๊ณ , ๋…ธํŠธ๋ผ๋ฆฌ ๋งํฌ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž‘์„ฑ๋œ ๋…ธํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž๋™ ์ƒ์„ฑ๋˜๋Š” ๋งˆ์ธ๋“œ๋งต ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค. ์ž‘์„ฑํ•œ ํŒŒ์ผ์˜ ํด๋ผ์šฐ๋“œ ๋™๊ธฐํ™” ๊ธฐ๋Šฅ(Obsidian Sync)์€ ์œ ๋ฃŒ๋‹ค.
  • Cursor: AI ๊ธฐ๋ฐ˜ ์ฝ”๋“œ ์—๋””ํ„ฐ. ์ผ๋ ‰ํŠธ๋ก  + ๋ชจ๋‚˜์ฝ” ์—๋””ํ„ฐ ๊ธฐ๋ฐ˜์ด๋ผ VSCode์™€ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋งค์šฐ ์œ ์‚ฌํ•˜๋‹ค.
  • Zed: ์œˆ๋„์šฐ๋Š” ์•„์ง ์ง€์› ์˜ˆ์ •(2025-02-05)์ด๋ผ ๊ธฐ๋Œ€๋งŒ ํ•˜๊ณ  ์žˆ๋Š” ํ…์ŠคํŠธ ์—๋””ํ„ฐ. ํŠน์ง•์€ ๊ณ ์„ฑ๋Šฅ, ๊ฒฝ๋Ÿ‰, ์‹ค์‹œ๊ฐ„ ํ˜‘์—… ๊ธฐ๋Šฅ์ด๋‹ค.
  • Eclipse
  • IntelliJ
  • jEdit
  • NetBeans
  • Cloud9
  • WebStorm
  • Aptana

์˜จ๋ผ์ธ ์ฝ”๋“œ ์—๋””ํ„ฐ, ์Šค๋‹ˆํŽซ

  • CodePen: ์˜จ๋ผ์ธ ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ #1. ์›น์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•˜๊ฑฐ๋‚˜ ๋‚จ๋“ค๊ณผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค.
  • JSFiddle: ์˜จ๋ผ์ธ ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ #2
  • CodeSandbox: ์˜จ๋ผ์ธ ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ #3. ์›น์œผ๋กœ ์ง์ ‘ ์ž‘์„ฑ ๋ง๊ณ ๋„ CLI ์—…๋กœ๋“œ๋ฅผ ์ง€์›ํ•œ๋‹ค.
  • StackBlitz: ์˜จ๋ผ์ธ ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ #4. ํ”„๋กœํŠธ์—”๋“œ์— ํŠนํ™”๋˜์–ด ์žˆ๋‹ค. ๊นƒํ—ˆ๋ธŒ ์ €์žฅ์†Œ์™€ ์—ฐ๋™ํ•  ์ˆ˜ ์žˆ๊ณ , Node.js ๊ฐ™์€ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•œ๋‹ค. public ํ”„๋กœ์ ํŠธ์— ํ•œํ•ด ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.
  • GitHub Gist: ์ฝ”๋“œ ์Šค๋‹ˆํŽซ ๊ณต์œ ์šฉ ์•ฑ #1. ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊นƒํ—ˆ๋ธŒ ์•„์ด๋”” ํ•„์š”
  • Pastebin: ์ฝ”๋“œ ์Šค๋‹ˆํŽซ ๊ณต์œ ์šฉ ์•ฑ #2. ๋กœ๊ทธ์ธ ํ•„์š”ํ•จ
  • [Hastebin Toptal](https://www.toptal.com/developers/hastebin): ์ฝ”๋“œ ์Šค๋‹ˆํŽซ ๊ณต์œ ์šฉ ์•ฑ #3. ๋กœ๊ทธ์ธ ํ•„์š” ์—†์Œ
  • Snippet.host: ์ฝ”๋“œ ์Šค๋‹ˆํŽซ ๊ณต์œ ์šฉ ์•ฑ #4. ๋กœ๊ทธ์ธ ํ•„์š” ์—†์Œ
  • Carbon: ์ฝ”๋“œ ์Šค๋‹ˆํŽซ ๊ณต์œ ์šฉ ์•ฑ #5. ์ด์ชฝ์€ ์ฝ”๋“œ๋ฅผ ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์‚ฌ์ดํŠธ๋‹ค.

์ •๊ทœ์‹ Regular Expressions

  • regular expressions 101: ์ •๊ทœ์‹ ํ…Œ์ŠคํŠธ ๊ฒธ ์ฝ”๋“œ ๊ณต์œ  ์‚ฌ์ดํŠธ. (๊ทผ๋ฐ ์™œ 101์ผ๊นŒ)
  • RegExr: ์ •๊ทœ์‹ ํ…Œ์ŠคํŠธ ์‚ฌ์ดํŠธ
  • REGEXPER: ์ •๊ทœ์‹์„ (๋‚˜๋ฆ„)์ด์˜๊ฒŒ ์„ค๋ช…ํ•ด์คŒ. ์š”๋”ด์‹์œผ๋กœ https://regexper.com/#^M[^iI]*%3F[iI][^iI]*%3F%24 URL์— ์ •๊ทœ์‹์„ ๋•Œ๋ ค๋„ฃ๋Š”๊ฒŒ ํŠน์ง•
  • [^grex$](https://pemistahl.github.io/grex-js/): ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์ •๊ทœ์‹์„ ๋งŒ๋“ค์–ด์คŒ

์˜์กด์„ฑ ๊ด€๋ฆฌ(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜/์กฐํšŒ/์‚ญ์ œ)

  • Chocolatey: Windows OS์šฉ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ๋„๊ตฌ. NuGet ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ๋‹ค ํ•œ๋‹ค. ๋น„์Šทํ•œ ๊ฒƒ์œผ๋กœ MS ๊ณต์‹ ๋„๊ตฌ์ธ Winget์ด ์žˆ๋‹ค.
  • Scoop: Chocolatey๋ณด๋‹ค ๊ทœ๋ชจ์™€ ์‚ฌ์šฉ์ž๋Š” ์ ์ง€๋งŒ, ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ๋งค์šฐ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋‹ค๊ณ  ํ•จ.
  • uv: pip, virtualenv, pip-tools๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ํŒŒ์ด์ฌ์˜ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €. ์˜์กด์„ฑ ๊ด€๋ฆฌ์™€ ๊ฐ€์ƒ ํ™˜๊ฒฝ ๊ด€๋ฆฌ ๋“ฑ์„ ์ง€์›ํ•œ๋‹ค.

SDK Manager

  • Node Version Manager: Node.js์˜ ์„ค์น˜/๋ฒ„์ „ ๊ด€๋ฆฌ ๋„๊ตฌ. ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ Node.js๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์ง€๊ธˆ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๋ฒ„์ „์œผ๋กœ ์†์‰ฝ๊ฒŒ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. ํ†ต์นญ nvm
  • SDKMAN: nvm์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ SDK๋ฅผ ์„ค์น˜ํ•˜๊ณ  ํŠน์ • ๋ฒ„์ „์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” SDK ๊ด€๋ฆฌ ๋„๊ตฌ๋‹ค. ์ง€์›ํ•˜๋Š” SDK๋กœ Java, Scala, Groovy, Kotlin, Ceylon, Gradle, Maven ๋“ฑ์ด ์žˆ๋‹ค. ๋‹จ์ ์œผ๋กœ, SDKMAN์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด bash ํ™˜๊ฒฝ์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— WSL์ด ์•„๋‹ˆ๋ฉด ์œˆ๋„์šฐ์—์„œ๋Š” ์“ธ ์ˆ˜ ์—†์Œ.

JSON ๋„๊ตฌ

  • โญJSON Placeholder: JSON ์‘๋‹ต์„ ๋ฐ›์•„์•ผํ•˜๋Š”๋ฐ ๋ฐฑ์—”๋“œ๋ฅผ ๋งŒ๋“ค๊ธฐ ๊ท€์ฐฎ์œผ๋ฉด ์“ฐ๋Š” Free Fake JSON API ์„œ๋ฒ„
  • jsoneditoronline.org: JSON ํŽธ์ง‘ ๋ฐ ๋ทฐ์–ด
  • jsonviewer.codeplex.com: JSON ๋ทฐ์–ด

4. ํ”„๋ ˆ์ž„์›Œํฌ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ

  • Vue: ํ”„๋ก ํŠธ์—”๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ #1.
  • โญReact: ํ”„๋ก ํŠธ์—”๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ #2.
  • React Native: ๋ฆฌ์•กํŠธ ๊ธฐ๋ฐ˜์˜ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ ํ•˜๋‚˜๋กœ ์•ˆ๋“œ๋กœ์ด๋“œ์™€ iOS์—์„œ ์ž‘๋™ํ•˜๋Š” ์•ฑ์„ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Svelte: ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ. ๊ฐ€๋ณ๊ณ  ๋‹จ์ˆœํ•œ ๊ฒŒ ํŠน์ง•. ์ผ๋ฐ˜์ ์ธ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋‹ค๋ฅด๊ฒŒ ๋Ÿฐํƒ€์ž„ ๋Œ€์‹  ์ปดํŒŒ์ผ๋Ÿฌ๋กœ ์ž‘๋™ํ•œ๋‹ค. ์ด ๋ง์€ ๋นŒ๋“œ ํ›„์— ๋ณ„๋„๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—†์–ด ์„ฑ๋Šฅ๊ณผ ๋กœ๋”ฉ ์†๋„์—์„œ ์ด์ ์ด ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.
  • Flutter: ๊ตฌ๊ธ€์ด ๋งŒ๋“  UI ํˆดํ‚ท(SDK) ๊ฒธ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ. ์ง€์›๋˜๋Š” ํ”Œ๋žซํผ์€ Windows, macOS, ์›น์ด๋‹ค. ์‚ฌ์šฉ์–ธ์–ด๋Š” Dart
  • Vite: ๋ชจ๋˜ ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ๋นŒ๋“œ ๋„๊ตฌ. ๋ฆฌ์•กํŠธ, ๋ทฐ, ์Šค๋ฒจํŠธ์™€ ์ˆœ์ˆ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•œ๋‹ค. ๋น ๋ฅธ ์ฝœ๋“œ ์Šคํƒ€ํŠธ, ํ•ซ ๋ชจ๋“ˆ ๊ต์ฒด, ๋นŒ๋“œ ์ตœ์ ํ™”, ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ ๋“ฑ์ด ํŠน์ง•์ด๋‹ค.
  • Gatsby: ๋ฆฌ์•กํŠธ ๊ธฐ๋ฐ˜์˜ ์ •์  ์‚ฌ์ดํŠธ ์ƒ์„ฑ(SSG, Static Site Generation) ํ”„๋ ˆ์ž„์›Œํฌ. ์˜คํ”ˆ ์†Œ์Šค๋‹ค.
  • โญNext.js: ๋ฆฌ์•กํŠธ ๊ธฐ๋ฐ˜ ํ’€์Šคํƒ ํ”„๋ ˆ์ž„์›Œํฌ. SSR, SSG, CSR์„ ๋ชจ๋‘ ์ง€์›ํ•œ๋‹ค. ์ฃผ๋กœ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์— ์‚ฌ์šฉ๋œ๋‹ค.
  • โญReact Router: ๋ฆฌ์•กํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ผ์šฐํŒ…์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. 7.x ๋ฒ„์ „๋ถ€ํ„ฐ๋Š” Remix 3์™€ ํ†ตํ•ฉ๋œ ํ”„๋ ˆ์ž„์›Œํฌ ๋ชจ๋“œ๋ฅผ ์ง€์›ํ•œ๋‹ค.
  • โญRemix: ๋ฆฌ์•กํŠธ ๊ธฐ๋ฐ˜ ํ’€์Šคํƒ ์›น ํ”„๋ ˆ์ž„์›Œํฌ. Next.js๋ณด๋‹ค ๊ฐ€๋ณ๊ณ  ๋ฐฐ์šฐ๊ธฐ ์‰ฝ๋‹ค. Remix๋Š” ํ‘œ์ค€ ์›น API๋ฅผ ํ™œ์šฉํ•ด ๋งŒ๋“ค์–ด์กŒ๊ธฐ ๋•Œ๋ฌธ์— ๋ธŒ๋ผ์šฐ์ €, Node.js, ์„œ๋ฒ„๋ฆฌ์Šค ํ”Œ๋žซํผ, ํด๋ผ์šฐ๋“œ ์—ฃ์ง€ ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์— ๋™์ผํ•œ ์ฝ”๋“œ ๋ฒ ์ด์Šค๋กœ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋‹ค(Next.js๋Š” Node.js ํ™˜๊ฒฝ์—์„œ๋งŒ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค). ์ตœ์‹  ๋ฒ„์ „์ธ Remix 3์€ React Router 7์˜ ํ”„๋ ˆ์ž„์›Œํฌ ๋ชจ๋“œ๋กœ ํ†ตํ•ฉ๋˜์—ˆ์œผ๋‹ˆ, ๋„์›€๋ง์ด ํ•„์š”ํ•˜๋ฉด React Router์˜ ๋ฌธ์„œ๋ฅผ ๋ณผ ๊ฒƒ.
  • Quasar Framework: ๋ทฐ ์ „์šฉ์ธ๋“ฏ?
  • Vuetify: ๋ทฐ์šฉ ์ปดํฌ๋„ŒํŠธ ํ”„๋ ˆ์ž„์›Œํฌ

๋ฐฑ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ

  • โญNetty: ์ž๋ฐ” ๋„คํŠธ์›Œํฌ ์•ฑ ๊ฐœ๋ฐœ์šฉ NIO(๋น„๋™๊ธฐ ์ž…์ถœ๋ ฅ) ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ํ”„๋ ˆ์ž„์›Œํฌ
  • Spring: ์ž๋ฐ” ๋ฐฑ์—”๋“œ์˜ ๋Œ€๋ช…์‚ฌ ๊ฒฉ์ธ ์ž๋ฐ” ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ
  • NestJS: ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ฐ˜์˜ ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(=API ์„œ๋ฒ„) ๊ตฌ์ถ•์„ ์œ„ํ•œ Node.js ํ”„๋ ˆ์ž„์›Œํฌ. ์˜์กด์„ฑ ๊ด€๋ฆฌ, ๋ชจ๋“ˆํ™”, ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง, ์›น์†Œ์ผ“ ๋“ฑ์„ ์ง€์›ํ•œ๋‹ค.
  • Tiles: ์ž๋ฐ”์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ…œํ”Œ๋ฆฟ ํ”„๋ ˆ์ž„์›Œํฌ. ์ง€๊ธˆ์€ retired ์ƒํƒœ๋ผ์„œ ์—…๋ฐ์ดํŠธ๋Š” ์—†๋‹ค.
  • SiteMesh: ํƒ€์ผ์ฆˆ์™€ ๊ฐ™์€ JSP ํ…œํ”Œ๋ฆฟ ํ”„๋ ˆ์ž„์›Œํฌ. ์˜ค๋ž˜๋˜๊ธด ๋งˆ์ฐฌ๊ฐ€์ง€๊ธด ํ•˜์ง€๋งŒ ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ผ์—ˆโ€ฆ๋˜๊ฐ€?

CSS ํ”„๋ ˆ์ž„์›Œํฌ, UI ์ปดํฌ๋„ŒํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • Bootstrap: ๋ฒ”์šฉ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ๋ถ„๋ฅ˜๋จ
  • Bulma: Flexbox ๊ธฐ๋ฐ˜
  • Foundation Framework
  • โญTailwind CSS: ๋ฏธ๋ฆฌ ์ž‘์„ฑ๋œ ์Šคํƒ€์ผ๋ง ํด๋ž˜์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ์‹. ์œ ํ‹ธ๋ฆฌํ‹ฐ ๊ธฐ๋ฐ˜ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ๋ถ„๋ฅ˜๋จ
  • daisyUI: Tailwind CSS์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ, ์ž์ฃผ ์“ฐ๋Š” ํด๋ž˜์Šค๋ฅผ ์กฐํ•ฉํ•ด ๋งŒ๋“  ์ปดํฌ๋„ŒํŠธ ์„ธํŠธ๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ํ…Œ์ผ์œˆ๋“œ์กฐ์ฐจ ๊ท€์ฐฎ๊ฒŒ ๋А๊ปด์งˆ ๋•Œ ์œ ์šฉํ•˜์ง€๋งŒ, ๋ณต์žกํ•œ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—” ๋‹ค์†Œ ๋ถˆํŽธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • StyleX: ๋ฉ”ํƒ€(ํŽ˜๋ถ)์—์„œ ๋งŒ๋“ฆ. ํ…Œ์ผ์œˆ๋“œ ๊ฒฝ์Ÿ์ž๋ผ ํ•จ. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ์กฐ๊ฑด๋ถ€ ์Šคํƒ€์ผ ์„ค์ •, ์ปดํŒŒ์ผ, ํƒ€์ž… ์•ˆ์ •์„ฑ(type safe)์ด ํŠน์ง•์ด๋‹ค. ๋ฆฌ์•กํŠธ ์—†์ด๋„ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž„.
  • Open Props
  • Basscss
  • Water.css
  • MVP.css
  • Materialize CSS
  • System.css: ๋ ˆํŠธ๋กœ ๊ฐฌ์„ฑ. ์• ํ”Œ ์‹œ์Šคํ…œ OS์™€ ๋˜‘๊ฐ™๋‹ค๊ณ  ํ•œ๋‹ค.
  • NES.css: ๋‹Œํ…๋„ ์Šคํƒ€์ผ
  • PSone.css: ํ”Œ์Šค 1 ์Šคํƒ€์ผ
  • 98.css: ์ด๊ฑด ์œˆ๋„์šฐ 98
  • XP.css: ์œˆ๋„์šฐ XP
  • 7.css: ์ด๊ฑด ์œˆ๋„์šฐ 7
  • Bojier: ๋ฉ”์ผ์šฉ
  • Chota
  • Pico.css
  • ChakraUI: React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ๊ฐ„๊ฒฐํ•œ ๋ชจ๋“ˆ์‹
  • Mantine: ๋ฆฌ์•กํŠธ์šฉ UI ์ปดํฌ๋„ŒํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • Ant Design: ๋ฆฌ์•กํŠธ์šฉ UI ์ปดํฌ๋„ŒํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • NextUI: ๋ฆฌ์•กํŠธ์šฉ UI ์ปดํฌ๋„ŒํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • Reach UI: ๋ฆฌ์•กํŠธ์™€ ๋ทฐ์šฉ UI ์ปดํฌ๋„ŒํŠธ
  • Headless UI: ๋ฆฌ์•กํŠธ์™€ ๋ทฐ์šฉ UI ์ปดํฌ๋„ŒํŠธ
  • โญshadcn/ui: ๋ฆฌ์•กํŠธ์šฉ UI ์ปดํฌ๋„ŒํŠธ ์ปฌ๋ ‰์…˜. ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•ด ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ์ „ํ†ต์ ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค. Tailwindd CSS์™€ Radix UI ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ๋‹ค. ์‚ฌ์‹ค CSS ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๊ธฐ๋ณด๋‹จ UI ์ปดํฌ๋„ŒํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๊ฐ€๊น๋‹ค.
  • Storybook: ํ”„๋ก ํŠธ์—”๋“œ ์›Œํฌ์ƒต์ด๋ผ๊ณ  ํ•œ๋‹ค(๊ทธ๊ฒŒ๋ญ์•ผ). UI ์ปดํฌ๋„ŒํŠธ๋‚˜ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค ๋•Œ ์“ด๋‹ค๋Š”๋ฐ ์•„์ง ๋ชฒ. ๊ทผ๋ฐ ๊ฐ€๊ธ‰์  ๋นจ๋ฆฌ ์จ๋ณด๋Š” ๊ฒŒ ์ข‹์„ ๊ฒƒ ๊ฐ™์€ ๋А๋‚Œ์ ์ธ ๋А๋‚Œ
  • component.gallery: CSS ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋””์ž์ธ ์‹œ์Šคํ…œ ๊ฐ™์€ ๊ฒƒ์„ ๋ชจ์•„๋†“์€ ์‚ฌ์ดํŠธ
  • Material UI: ๋ฆฌ์•กํŠธ์šฉ UI ์ปดํฌ๋„ŒํŠธ ๋ชจ์Œ
  • @mdi/svg: MDI(Material Design Icons) ํ”„๋กœ์ ํŠธ์˜ SVG ์•„์ด์ฝ˜์„ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. ๋‹จ๋… ๊ธฐ๋Šฅ์€ ํ•„์š”ํ•œ ์•„์ด์ฝ˜์„ svg๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฒŒ ์žˆ๋‹ค. (์•„๋งˆ๋„?)
  • Vitebook

JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • Moment.js: ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ๋‹ค๋ฃจ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ #1. ํฌ๋งคํ„ฐ๊ฐ€ ํ•„์š”ํ•˜๋ฉด ์ด๊ฑธ ์“ฐ์ž
  • โญDay.js: ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ๋‹ค๋ฃจ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ #2. ํฌ๋งคํ„ฐ ์ง€์›ํ•จ. MUI์˜ Date picker์— ์ ์šฉ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค.
  • Lodash: ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์„ ์ง€์›ํ•˜๋Š” ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ์“ฐ์ธ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ lodash.debounce๊ฐ€ ์žˆ์Œ.
  • babel: ์ผ์ข…์˜ ์ปดํŒŒ์ผ๋Ÿฌ(?). ์ž‘์„ฑํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ์˜ ์ตœ์‹  ๋ฌธ๋ฒ•๊ณผ ๊ธฐ๋Šฅ์„ ๊ตฌ๋ฒ„์ „์˜ ๋ธŒ๋ผ์šฐ์ €๋‚˜ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ๋ณ€ํ™˜ํ•ด ์ค€๋‹ค.
  • Immer: ๋ถˆ๋ณ€์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๊ฐ์ฒด๋ฅผ ์‰ฝ๊ฒŒ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. ๋ฆฌ์•กํŠธ์—์„œ ์ƒํƒœ๊ฐ’์ด ๊ฐ์ฒด์ผ ๋•Œ ํ™œ์šฉํ•˜๊ธฐ ์ข‹๋‹ค. ์ œ๊ณต๋œ draft๋ฅผ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„๋งŒ ๋ณต์ œํ•˜๋„๋ก ์ตœ์ ํ™”๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด ์ „์ฒด์˜ ๊นŠ์€ ๋ณต์ œ์šฉ์œผ๋กœ๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.
  • sharp: ๊ณ ์„ฑ๋Šฅ์˜ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ Node.js ํŒจํ‚ค์ง€. ์ด๋ฏธ์ง€ ์ตœ์ ํ™”์— ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์ œ๊ณต๋˜๋Š” ๊ธฐ๋Šฅ์€ ์ด๋ฏธ์ง€ ํฌ๊ธฐ ์กฐ์ •, ํฌ๋งท ๋ณ€ํ™˜, ์ž๋ฅด๊ธฐ, ํšŒ์ „, ๋ฐ˜์ „, ํ•„ํ„ฐ ์ ์šฉ ๋“ฑ.
  • Execa: Node.js ํ™˜๊ฒฝ์—์„œ ์™ธ๋ถ€ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ํ”„๋กœ์„ธ์Šค ์‹คํ–‰ ํŒจํ‚ค์ง€. child_process ๋ชจ๋“ˆ์˜ ๊ฐœ์„ ๋œ ๋Œ€์•ˆ์œผ๋กœ, ๋” ๋‚˜์€ API๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ ๋ช…๋ น์–ด ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์‰ฝ๊ฒŒ ๋‹ค๋ฃจ๊ณ , ๋น„๋™๊ธฐ ์ž‘์—…๊ณผ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๋“ฑ์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Puppeteer: Google์—์„œ ๊ฐœ๋ฐœํ•œ ํ—ค๋“œ๋ฆฌ์Šค ๋ธŒ๋ผ์šฐ์ € ์ œ์–ด Node.js ํŒจํ‚ค์ง€, Chrome ๋˜๋Š” Chromium ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ž๋™ํ™”ํ•˜๊ฑฐ๋‚˜ ์›น ์Šคํฌ๋ž˜ํ•‘, UI ํ…Œ์ŠคํŠธ, PDF ์ƒ์„ฑ, ์Šคํฌ๋ฆฐ์ƒท ์ฐ๊ธฐ, ์„ฑ๋Šฅ ์ธก์ • ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ํ—ค๋“œ๋ฆฌ์Šค ๋ชจ๋“œ(๋ธŒ๋ผ์šฐ์ € UI ์—†์ด ์‹คํ–‰)๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ, ํ—ค๋“œ ๋ชจ๋“œ๋กœ ์‹ค์ œ ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์„ ๋„์›Œ ์ž‘์—…์„ ์‹คํ–‰ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
  • fullPage.js: ์–ด๋–ค ๊ฒŒ์ž„์˜ ์ด๋ฒคํŠธ ํŽ˜์ด์ง€์—์„œ ์ค์–ด์˜จ ๊ฑฐ. ์ „์ฒด ํ™”๋ฉด ์Šคํฌ๋กค ์›น ์‚ฌ์ดํŠธ(๋‹จ์ผ ํŽ˜์ด์ง€ ์›น ์‚ฌ์ดํŠธ ๋˜๋Š” ๋‹จ์ผ ํŽ˜์ด์ง€ ์‚ฌ์ดํŠธ๋ผ๊ณ ๋„ ํ•จ)๋ฅผ ๋งŒ๋“ค๊ณ  ์‚ฌ์ดํŠธ ์„น์…˜ ๋‚ด์— ๊ฐ€๋กœ ๋ฐฉํ–ฅ ์Šฌ๋ผ์ด๋”๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฐ„๋‹จํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๋‹คโ€ฆ๋Š”๋ฐ ์‚ฌ์‹ค ๋ญ”์ง€ ์ž˜ ๋ชฒ.
  • Dexie.js: ๋ธŒ๋ผ์šฐ์ €์˜ IndexedDB๋ฅผ ๋‹ค๋ฃจ๋Š” ์„œ๋“œ ํŒŒํ‹ฐ ์ค‘ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. Promise ๊ธฐ๋ฐ˜ API๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
  • pug: Node.js ๊ธฐ๋ฐ˜ ํ…œํ”Œ๋ฆฟ ์—”์ง„. HTML์„ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋งํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์˜ˆ์ „ ์ด๋ฆ„์€ Jade
  • json-server: JSON ํŒŒ์ผ๋งŒ์œผ๋กœ API ์„œ๋ฒ„๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” fake API server ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ.
  • โญlive-server: ๋กœ์ปฌ ์ „์šฉ ์›น ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์„ค์น˜ํ•˜๋Š” ํŒจํ‚ค์ง€. ํŽ˜์ด์ง€ ์ƒˆ๋กœ๊ณ ์นจ์„ ์ž๋™์œผ๋กœ ํ•ด์ฃผ๋Š” live reload ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ index ํŒŒ์ผ์ด ํ•„์š” ์—†์–ด์„œ ํŽธํ•˜๋‹ค.
  • โญserve: ๋น ๋ฅด๊ณ  ๊ฐ€๋ฒผ์šด ์ •์  ํŒŒ์ผ ์ œ๊ณต์šฉ ์›น ์„œ๋ฒ„. Live reload ๊ธฐ๋Šฅ์€ ์—†์œผ๋ฉฐ, ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์„ ๋ฏธ๋ฆฌ ๋ณด๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

React ์ „์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • Million: ๋ฆฌ์•กํŠธ๋ฅผ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค์–ด์ค€๋‹ค๊ณ  ํ•จ. (๋ฌด๋ ค 70%)
  • Redux: ๋ฆฌ๋•์Šค. ๋ฆฌ์•กํŠธ์šฉ ์ƒํƒœ(reactive state) ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ #1. ๋ชจ๋“  ์ƒํƒœ ๋ณ€ํ™”๊ฐ€ ์ค‘์•™์—์„œ ๊ด€๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ˆ์ธก๊ณผ ๋””๋ฒ„๊น… ๋“ฑ ์œ ์ง€๋ณด์ˆ˜์— ๋„์›€์ด ๋œ๋‹ค๊ณ  ํ•œ๋‹ค. ๋ฆฌ์•กํŠธ์—์„œ๋Š” ๋ณต์žกํ•œ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ์ปดํฌ๋„ŒํŠธ๋“ค ์‚ฌ์ด์—์„œ state์˜ ๋ณ€ํ™”๋ฅผ ์ „๋‹ฌํ•  ๋•Œ props drilling์ด๋ผ ๋ถˆ๋ฆฌ๋Š” ๋ฒˆ๊ฑฐ๋กœ์šด ์ž‘์—…์ด ํ•„์š”ํ•œ๋ฐ, ๋ฆฌ๋•์Šค๋Š” ์ด๋Ÿฌํ•œ ์ž‘์—…์„ ๊ฐ„์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ฌธ๋ฒ•์ด ๋„ˆ๋ฌด ๋ณต์žกํ•œ ํƒ“์ธ์ง€ ์ธ๊ธฐ๊ฐ€ ์ ์  ์‹œ๋“คํ•ด์ง„๋‹ค๊ณ โ€ฆ
  • โญzustand: ๋ฆฌ์•กํŠธ์šฉ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ #2. ๋ฆฌ๋•์Šค์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ props drilling ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ์ƒํƒœ๋ฅผ ์ „์—ญ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. ๋ฆฌ๋•์Šค๋ณด๋‹ค ์ฝ”๋“œ ์ž‘์„ฑ์ด ๊ฐ„๊ฒฐํ•˜๋‹ค.
  • recoiljs: ๋ฆฌ์•กํŠธ์šฉ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ #3
  • Jotai: ๋ฆฌ์•กํŠธ์šฉ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ #4
  • React Hook Form: ์ž…๋ ฅ ํผ์„ ์‰ฝ๊ฒŒ ๋‹ค๋ฃจ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. ์“ฐ๊ธฐ ์ข€ ๋ณต์žกํ•˜๊ธด ํ•œ๋ฐ ์ฑ—ํ”ผํ‹ฐ๊ฐ€ ์ž๊พธ ์ข‹๋‹ค๊ณ  ๋“ค์ด๋Œ.
  • useHooks: ๋ฆฌ์•กํŠธ ํ›… ๋ชจ์Œ #1. ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ์—์„œ ์ž์ฃผ ๋ฐ˜๋ณต๋˜๋Š” ๊ธฐ๋ณธ์ ์ธ ๋กœ์ง(ํด๋ฆฝ๋ณด๋“œ ๋ณต์‚ฌ, ๋””๋ฐ”์šด์Šค, ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€ ๊ด€๋ฆฌ ๋“ฑ)์„ ์ปค์Šคํ…€ ํ›… ํ˜•ํƒœ๋กœ ๋ชจ์•„๋†“์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค. ์•„๋ž˜์˜ react-use์— ๋น„ํ•ด ๋น„๊ต์  ๊ฐ„๋‹จํ•˜๊ณ  ํ•„์ˆ˜์ ์ธ ํ›… ์œ„์ฃผ๋กœ ๋ชจ์•„์ ธ์žˆ๋‹ค. usehooks.com๋Š” ์›๋ž˜ ๋ฆฌ์•กํŠธ์˜ ์ปค์Šคํ…€ ํ›…์„ ์ง์ ‘ ๋งŒ๋“ค์–ด๋ณด๋ฉฐ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋„๋ก ์˜ˆ์‹œ์™€ ๊ฐœ๋…์„ ์„ค๋ช…ํ•˜๋Š” ํŠœํ† ๋ฆฌ์–ผ ์‚ฌ์ดํŠธ์˜€์Œ.
  • react-use: ๋ฆฌ์•กํŠธ ํ›… ๋ชจ์Œ #2. ์ด ํŒจํ‚ค์ง€๋„ ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ์—์„œ ์ž์ฃผ ๋ฐ˜๋ณต๋˜๋Š” ๋กœ์ง(๋ธŒ๋ผ์šฐ์ € API ์—ฐ๋™, ์ƒํƒœ ๊ด€๋ฆฌ, UI ์ƒํ˜ธ์ž‘์šฉ ๋“ฑ)์„ ํ›… ํ˜•ํƒœ๋กœ ๋ชจ์•„๋†“์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค. useHooks ๋ณด๋‹ค ๋ฐฉ๋Œ€ํ•˜๊ณ  ํญ ๋„“์€ ํ›…๋“ค์„ ์ œ๊ณตํ•œ๋‹ค.
  • โญTanStack Query: ๋ฐ์ดํ„ฐ ํŽ˜์นญ, ์บ์‹ฑ, ์ƒํƒœ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ฐ„๋‹จํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค. ๋„คํŠธ์›Œํฌ ์š”์ฒญ๊ณผ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•ด ์ฃผ๋Š” '๋ฐ์ดํ„ฐ ์ƒํƒœ ๊ด€๋ฆฌ' ์†”๋ฃจ์…˜์ด๋ผ ์„ค๋ช…ํ•˜๋„ ํ•จ. ์˜ˆ์ „ ์ด๋ฆ„์€ React Query์˜€๋‹ค.
  • โญSWR: ๋ฐ์ดํ„ฐ ํŽ˜์นญ๊ณผ ์บ์‹ฑ์„ ๊ฐ„ํŽธํžˆ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. Vercel์— ๋งŒ๋“ฆ.

Vue ์ „์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • Pinia: ๋ทฐ์—์„œ ๊ณต์‹์œผ๋กœ ์ง€์›ํ•˜๋Š” ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค.

๋ฒˆ๋“ค๋Ÿฌ

UI ์ปดํฌ๋„ŒํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • Air Datepicker: ํ”„๋ก ํŠธ์—”๋“œ์šฉ ๋‹ฌ๋ ฅ ์ปดํฌ๋„ŒํŠธ. ์ˆœ์ˆ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ฐ˜์ด๋ฉฐ, ์–ธ์–ด ๊ธฐ๋ณธ๊ฐ’์ด ๋Ÿฌ์‹œ์•„์–ด์ธ ๊ฑธ ๋ณด๋‹ˆ ๋Ÿฌ์‹œ์•„์‚ฐ์ธ ๋ชจ์–‘
  • Tom Select: ์…€๋ ‰ํŠธ๋ฐ•์Šค. ์ˆœ์ˆ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ฐ˜์ด๋‹ค.
  • AG Grid: ์ฃผ๋ณ€ ์‚ฌ๋žŒ์ด ์ถ”์ฒœํ•œ ์œ ๋ฃŒ ๊ทธ๋ฆฌ๋“œ
  • jqxgrid
  • Toast UI Grid: ์ค„์—ฌ์„œ TUI Grid. NHN์—์„œ ๋งŒ๋“ค์—ˆ๊ณ  MIT ๋ผ์ด์„ ์Šค์˜ ์˜คํ”ˆ ์†Œ์Šค ๊ทธ๋ฆฌ๋“œ. ๊ฐ€๋ณ๊ฒŒ ์“ฐ๊ธฐ ์ข‹์ง€๋งŒ ๊นƒํ—ˆ๋ธŒ ๋Œ€์‘์ด ์ข€ ๋งŽ์ด ๋А๋ฆฌ๋‹ค.
  • Fontello: ์•„์ด์ฝ˜์„ ํฐํŠธ๋กœ ๊ตฌํ˜„ํ•  ๋•Œ ์”€. ์‚ฌ์ดํŠธ์—์„œ ์„ ํƒํ•œ ์•„์ด์ฝ˜๋งŒ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Œ.
  • Reveal.js: HTML๋กœ ๋งŒ๋“œ๋Š” PPT

5. ์ธํ”„๋ผ, ๋ฐฐํฌ

Web server/WAS

  • Apache HTTP Server: ๊ฒ€์ƒ‰์œผ๋ก  ๋‹ค์šด๋กœ๋“œ ๋งํฌ ์ฐพ๊ธฐ ํž˜๋“ฌ.

PaaS (Platform as a Service)

PaaS ์ค‘์— ์œ ๋ช…ํ•œ ๊ฒƒ๋“ค์€ ๋Œ€์ฒด๋กœ ์›น ์•ฑ ์†Œ์Šค๋ฅผ ์˜ฌ๋ฆฌ๋ฉด ๋Œ€์‹  ๋นŒ๋“œ์™€ ๋ฐฐํฌ๋ฅผ ํ•ด์ฃผ๋Š” ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค๋“ค์ด๋‹ค.

  • Heroku: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ๊ณผ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ PaaS ์„œ๋น„์Šค. ์ดˆ๋ฐ˜์— ์žˆ์—ˆ๋‹ค๋Š” ์ผ๋ถ€ ๋ฌด๋ฃŒ ์ •์ฑ…(์•ฑ 5๊ฐœ๊นŒ์ง€ ๋ฌด๋ฃŒ)์€ ์—†์–ด์ง„ ๋ชจ์–‘์ด๋‹ค. ๋‹ค์Œ ๋ชฉ๋ก์€ ์ถ”์ฒœ ๋ฐ›์€ ๋Œ€์ฒด์ œ๋“ค: Koyeb, Fly.io, Northflank
  • Kubernetes: ํ†ต์นญ K8s, ์ปจํ…Œ์ด๋„ˆํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ด€๋ฆฌํ•˜๊ณ  ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•œ ์˜คํ”ˆ ์†Œ์Šค ํ”Œ๋žซํผ์ด๋‹ค. ๊ธฐ์กด PaaS ๋ฒ”์ฃผ์™€ ๋น„์Šทํ•˜์ง€๋งŒ ๋‹ค๋ฅด๋‹ค๊ณ  ํ•œ๋‹ค. ๊ณต์‹ ๋ฌธ์„œ ๋งํฌ. "์ปจํ…Œ์ด๋„ˆํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌ, ๊ด€๋ฆฌ, ํ™•์žฅํ•  ๋•Œ ์ˆ˜๋ฐ˜๋˜๋Š” ๋‹ค์ˆ˜์˜ ์ˆ˜๋™ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž๋™ํ™”ํ•˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํ”Œ๋žซํผ"์ด๋ผ ์†Œ๊ฐœ๋œ๋‹ค.
  • cloudtype: ์ตœ์Šค๋‹˜์ด ์•Œ๋ ค์คŒ. ์•ˆ์จ๋ด„
  • smolsite: ์Šค๋ชฐ์‚ฌ์ดํŠธ, ZIP์œผ๋กœ ์••์ถ•ํ•ด์„œ ์—…๋กœ๋“œํ•˜๋ฉด ๋ฌด๋ฃŒ๋กœ ํ˜ธ์ŠคํŒ… ํ•ด์คŒ
  • Vercel: ํ”„๋ก ํŠธ์—”๋“œ์šฉ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ. Next.js์˜ ๊ฐœ๋ฐœ์‚ฌ์ด๊ธฐ๋„ ํ•˜๋‹ค. ์ •์  ์‚ฌ์ดํŠธ์™€ Jamstack ์ดํ‚คํ…์ฒ˜์— ์ตœ์ ํ™”๋˜์–ด ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.
  • โญNetlify: ์ •์  ์›น์‚ฌ์ดํŠธ ๋ฐ ํ”„๋ก ํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋น ๋ฅด๊ณ  ์‰ฝ๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ ํ”Œ๋žซํผ. ์›น ์•ฑ ๋ฐฐํฌ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ์ฃผ์š” ํŠน์ง•์œผ๋กœ ์ž๋™ ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ, ์„œ๋ฒ„๋ฆฌ์Šค, ๊ธ€๋กœ๋ฒŒ CDN, ์ปค์Šคํ…€ ๋„๋ฉ”์ธ, ๋ฌด๋ฃŒ SSL ์ธ์ฆ์„œ ๋“ฑ์ด ์žˆ๋‹ค. ๋ญ”์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ JAMstack(?) ์•„ํ‚คํ…์ฒ˜์™€ ์ž˜ ๋งž๋Š”๋‹ค๊ณ  ํ•จ. ๋ฌด๋ฃŒ ํ”Œ๋žœ์—์„  ์›” 100GB์˜ ํŠธ๋ž˜ํ”ฝ ์ œํ•œ์ด ์žˆ๋‹ค.

IaaS (Infrastructure as a Service)

์ธํ”„๋ผ๋งŒ ์ œ๊ณตํ•˜๋Š” ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค.

  • AWS: ์•„๋งˆ์กด์˜ the AWS. ์ œํ•œ์ ์ธ ๋ฌด๋ฃŒ ํ‹ฐ์–ด๋ฅผ ์ œ๊ณตํ•จ
  • Google Cloud Platform (GCP)
  • Azure
  • Oracle Cloud Infrastructure (OCI): ์˜ค๋ผํด OCI. ์–˜๋„ค๋„ ๋ฌด๋ฃŒ ํ‹ฐ์–ด๊ฐ€ ์žˆ์Œ
  • Pulumi: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋กœ ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” IaC ์„œ๋น„์Šค. ๊ฐœ์ธ ์šฉ๋„๋Š” ๋ฌด๋ฃŒ(2023-09-13)

โ„น๏ธ IaC(Infrastructure as Code): ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜๋™ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•„๋‹Œ ์ž๋™์œผ๋กœ ์ธํ”„๋ผ๋ฅผ ์ •์˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก ์˜ ์ผ์ข…

BaaS (Backend as a Service)

BaaS๋ž€ ๋ฐฑ์—”๋“œ์˜ ์ „๋ฐ˜์ ์ธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ์˜๋ฏธํ•จ.

  • Firebase: ํŒŒ์ด์–ด๋ฒ ์ด์Šค
  • Supabase: PostgreSQL ๊ธฐ๋ฐ˜์˜ ๋ฐฑ์—”๋“œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” BaaS ํ”Œ๋žซํผ. ์ธ์ฆ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ํŒŒ์ผ ์ €์žฅ์†Œ, ์„œ๋ฒ„๋ฆฌ์Šค ๊ธฐ๋Šฅ ๋“ฑ์„ ์ œ๊ณตํ•œ๋‹ค.
  • PocketBase: ์˜คํ”ˆ ์†Œ์Šค ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค #2. ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์ธ์ฆ, ํŒŒ์ผ ์ €์žฅ์†Œ, ์–ด๋“œ๋ฏผ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ํŒŒ์ผ ํ•˜๋‚˜๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค. ๋‹ค๋ฅธ ์„œ๋น„์Šค์™€ ๋‹ค๋ฅด๊ฒŒ ํด๋ผ์šฐ๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ ์„œ๋ฒ„๋ฅผ ์ง์ ‘ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

CDN

  • cdnjs: Cloudflare์— ์˜ํ•ด ํ˜ธ์ŠคํŒ…๋˜๋Š” ๋ฌด๋ฃŒ ์˜คํ”ˆ ์†Œ์Šค CDN
  • JSDELIVR: ์—ญ์‹œ ๋ฌด๋ฃŒ CDN. npm๊ณผ GitHub์— ์ตœ์ ํ™”๋˜์–ด ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.
  • UNPKG: npm์œผ๋กœ ๋ฐฐํฌ๋œ ํŒจํ‚ค์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋Š” CDN. unpkg.com/react@16.7.0/umd/react.production.min.js ์š”๋Ÿฐ์‹์œผ๋กœ ์”€

ํ˜ธ์ŠคํŒ…, ํ„ฐ๋„๋ง

  • ngrok: ๋กœ์ปฌ ๊ตฌ๋™ ์„œ๋ฒ„(localhost)๋ฅผ ์™ธ๋ถ€์—์„œ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋กœ์ปฌ ํ„ฐ๋„๋ง ๋„๊ตฌ. HTTPS ํ”„๋กœํ† ์ฝœ๋„ ์ง€์›ํ•œ๋‹ค. ์œˆ๋„์šฐ์—์„  chocolatey๋กœ ์„ค์น˜ํ•˜๊ณ , ๋ณ„๋„๋กœ ๋ฐœ๊ธ‰ ๋ฐ›์€ ํ† ํฐ์„ ngrok config add-authtoken MY_TOKEN ๋ช…๋ น์œผ๋กœ ๋“ฑ๋กํ•œ ๋’ค ngrok http http://localhost:8080 ๋ช…๋ น์œผ๋กœ ๋กœ์ปฌ ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐํ•˜๋Š” ์‹์œผ๋กœ ๊ตฌ๋™ํ•œ๋‹ค. expo๋Š” ํ„ฐ๋„๋ง ์˜ต์…˜์„ ์œ„ํ•ด ngrok์„ ๋‚ด์žฅํ•˜๊ณ  ์žˆ๊ธฐ๋„ ํ•˜๋‹ค.

ํ”„๋กœ์„ธ์Šค ๋งค๋‹ˆ์ €

  • PM2: Node.js ์•ฑ์„ ์šด์˜ํ•˜๋Š”๋ฐ ์ž์ฃผ ์“ฐ์ด๋Š” ํ”„๋กœ์„ธ์Šค ๋งค๋‹ˆ์ €. ์ž๋™ ์žฌ์‹œ์ž‘, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ, ๋ชจ๋‹ˆํ„ฐ๋ง, ๋กœ๊ทธ ๊ด€๋ฆฌ, ๋ฌด์ค‘๋‹ค ๋ฐฐํฌ(Zero downtime deployment) ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค(๋ฉ”์‹œ์ง€ ํ ์‹œ์Šคํ…œ)

  • Apache Kafka: ์นดํ”„์นด. ์•„ํŒŒ์น˜ ์†Œํ”„ํŠธ์›จ์–ด ์žฌ๋‹จ์ด ์Šค์นผ๋ผ๋กœ ๊ฐœ๋ฐœํ•œ ์˜คํ”ˆ ์†Œ์Šค ๋ถ„์‚ฐ ์ŠคํŠธ๋ฆฌ๋ฐ ํ”Œ๋žซํผ. '๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค ํ”„๋กœ์ ํŠธ' ํ˜น์€ '๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆฌ๋ฐ ํ”Œ๋žซํผ'์œผ๋กœ ์†Œ๊ฐœ๋œ๋‹ค. ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋™๊ธฐํ™” ์ž‘์—…์ด๋‚˜, ๋น„๋™๊ธฐ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค(๋ฐ์ดํ„ฐ ์ž…์ถœ๋ ฅ๋„ ์—ฌ๊ธฐ์— ํ•ด๋‹นํ•จ). ์—์ด์ „ํŠธ๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ์‹์ด๋ผ ์นด๋”๋ผ.
  • RabbitMQ: MQTT, AMQP๋ฅผ ๊ตฌํ˜„ํ•œ ์˜คํ”ˆ ์†Œ์Šค ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค. Erlang์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ๋‹ค(์–ผ๋žญ?). ์‚ฌ์šฉ์ž ์š”์ฒญ์˜ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ, ์•ฑ ๊ฐ„ ๋ฉ”์‹œ์ง€ ๊ตํ™˜, ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ์˜ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋ง ๋“ฑ์— ํ™œ์šฉ๋œ๋‹ค.

6. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

DBMS

  • โญSQLite: ์˜คํ”ˆ ์†Œ์Šค RDBMS #1. ๋งค์šฐ ๊ฐ€๋ฒผ์›Œ์„œ ๋ณดํ†ต ์„œ๋ฒ„๊ฐ€ ์•„๋‹Œ ์†Œํ”„ํŠธ์›จ์–ด์— ๋‚ด์žฅ์‹œํ‚ค๋Š” ์ž„๋ฒ ๋””๋“œ์šฉ์œผ๋กœ ์“ฐ์ธ๋‹ค. ACID(Atomicity, Consistency, Isolation, Durability) ํŠน์„ฑ์„ ์ค€์ˆ˜ํ•˜๋Š” ๊ธฐ๋Šฅ๊ณผ ํŠธ๋žœ์žญ์…˜์„ ์ง€์›ํ•œ๋‹ค. ์‹œ์Šคํ…œ์ด ๋งค์šฐ ์•ˆ์ •์ ์ด๋ผ ํ”„๋กœ์‹œ์ € ๊ฐ™์€ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•œ ๊ฒŒ ์•„๋‹ˆ๋ผ๋ฉด ์„œ๋ฒ„์šฉ์œผ๋กœ ์จ๋„ ๋œ๋‹ค๊ณ  ํ•˜๋Š” ์‚ฌ๋žŒ๋„ ์žˆ๋‹ค. ์—์Šคํ์—˜๋ผ์ดํŠธ ํ˜น์€ ์‹œํ€„๋ผ์ดํŠธ๋ผ๊ณ  ์ฝ๋Š”๋‹ค. ๊ฒฝ๋Ÿ‰ DB๋ผ์„œ SQL ํ‘œ์ค€ ๊ธฐ๋Šฅ์ด ์ผ๋ถ€ ๋น ์ ธ์žˆ๊ฑฐ๋‚˜ ์ œํ•œ์ ์œผ๋กœ ์ œ๊ณตํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์™ธ๋ž˜ํ‚ค๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๊ณ  ์‚ฌ์šฉ ์ œํ•œ์ด ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ์‹œ์ €๋Š” ๋ฏธ์ง€์›, ํŠธ๋ฆฌ๊ฑฐ์™€ ์œˆ๋„์šฐ ํ•จ์ˆ˜ ๋“ฑ์€ ๋ถ€๋ถ„์ ์œผ๋กœ ์ง€์›ํ•œ๋‹ค. ๋™์‹œ์„ฑ ์ œ์–ด์™€ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€๋„ ๋‹ค๋ฅธ DBMS๋งŒํผ ์„ธ๋ฐ€ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž์˜ ๋™์‹œ ์“ฐ๊ธฐ ์‹œ ์ถฉ๋Œ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ SQLite๋ฅผ ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ๋งŒ ์„ค๊ณ„ํ•˜๊ณ , ์“ฐ๊ธฐ๋Š” ๋‹ค๋ฅธ ์ˆ˜๋‹จ์„ ๋งˆ๋ จํ•  ๊ฒƒ. ๊ทธ๋ฆฌ๊ณ  ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฒดํฌ์„ฌ์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ๋””์Šคํฌ ์†์ƒ์œผ๋กœ ์ธํ•œ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์€ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.
  • โญPostgreSQL: ์˜คํ”ˆ ์†Œ์Šค RDBMS #2. SQL ํ‘œ์ค€์„ ๋†’์€ ์ˆ˜์ค€์œผ๋กœ ์ค€์ˆ˜ํ•˜๋ฉฐ ACID์™€ ํŠธ๋žœ์žญ์…˜์„ ์ง€์›ํ•œ๋‹ค. JSON์ด๋‚˜ XML ๊ฐ™์€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๊ทธ๋Œ€๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ณ , ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ํ™•์žฅ ๋ชจ๋“ˆ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜๋‚˜, ๋ฐ์ดํ„ฐ ํƒ€์ž…, ์ธ๋ฑ์Šค ๋ฐฉ์‹ ๋“ฑ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ๊ธฐ์กด RDBMS๋“ค๊ณผ ๋‹ค๋ฅด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด PGMQ ํ™•์žฅ์„ ์„ค์น˜ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋ฉ”์‹œ์ง€ ํ๋ฅผ ๋ณต์žกํ•œ ๊ตฌ์„ฑ ์—†์ด ๋‹จ์ผ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ๋ฌถ์„ ์ˆ˜ ์žˆ๋‹ค.
  • โญRedis: ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ค‘ ๊ฐ€์žฅ ์ธ์ง€๋„ ๋†’์Œ. ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด์„œ ์†๋„๊ฐ€ ๋น ๋ฅธ๊ฒŒ ํŠน์ง•์ด๋ฉฐ ๋””์Šคํฌ ๋ฐฑ์—… ๊ธฐ๋Šฅ๋„ ์ œ๊ณตํ•จ.
  • SwayDB: ๋ ˆ๋””์Šค๊ฐ™์€ ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค. ๋ ˆ๋””์Šค์ฒ˜๋Ÿผ ์„œ๋ฒ„์šฉ์€ ์•„๋‹ˆ๊ณ  ์ž„๋ฒ ๋””๋“œ๋กœ ์“ฐ์ด๋Š” ๋ชจ์–‘?

DBMS Tool

  • DBeaver: ๋ฒค๋” ์•ˆ๊ฐ€๋ฆฌ๋Š” ๋„๊ตฌ. ์ดํด๋ฆฝ์Šค์™€ ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์ถ”์ •.
  • QueryBox: ๋ฒค๋” ๊ฐ€๋ฆฌ์ง€ ์•Š๊ณ  ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋Š” ๊ตญ์‚ฐ ์•ฑ. ๊ธฐ์—…์šฉ์€ ์œ ๋ฃŒ.
  • Flyway: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฒ„์ „ ๊ด€๋ฆฌ ๋„๊ตฌ. ๋งˆ๊ตฌ์žก์ด๋กœ ํ—ค์ง‘์–ด๋†“์€ ๋ฐ์ดํ„ฐ๋„ ์›ํ•˜๋Š” ์‹œ์ ์œผ๋กœ ๋˜๋Œ๋ฆฌ๋Š” ๊ธฐ๋Šฅ ๋“ฑ์„ ์ œ๊ณตํ•œ๋‹ค. ๊ฐœ๋ฐœ๊ณผ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์ถ•์— ๋งค์šฐ ์“ธ๋งŒํ•œ ์˜คํ”ˆ ์†Œ์Šค ๋„๊ตฌ.
  • โญDataGrip: IntelliJ IDEA Ultimate ํŒจํ‚ค์ง€์— ํฌํ•จ๋œ ์ œํ’ˆ. ์„ฑ๋Šฅ์€ ๋ˆ ๊ฐ’ ํ•œ๋‹ค.

ERD

  • dbdiagram.io: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ERD ์ „์šฉ. ์›น ๋ฒ„์ „๋งŒ ์žˆ๊ธด ํ•˜์ง€๋งŒ ์“ธ๋งŒํ•จ. ๋ณ„๋„์˜ ์Šคํ‚ค๋งˆ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฑด ์•ˆ์ข‹์Œ.
  • โญerd-editor: VSCode์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹์€ ๋ฌด๋ฃŒ ERD ์—๋””ํ„ฐ. IntelliJ์™€ ์›น ๋ฒ„์ „๋„ ์ง€์›ํ•œ๋‹ค.

7. ํ…Œ์ŠคํŠธ, ํ’ˆ์งˆ ๊ด€๋ฆฌ

์œ ๋‹› ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ

  • JUnit: ์ž๋ฐ” ํ…Œ์ŠคํŒ… ํ”„๋ ˆ์ž„์›Œํฌ. JUnit Platform + JUnit Jupiter + JUnit Vintage ์„ธ ๊ฐœ๋ฅผ ํ•ฉ์นœ JUnit 5 ๋ฒ„์ „์ด ๋‚˜์™”์Œ. (2023-02-15)
  • AssertJ Core: ํ…Œ์ŠคํŠธ์šฉ ์ž๋ฐ” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. Spring boot starter ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ํฌํ•จ๋ผ ์žˆ๋‹ค. (์‚ฌ์‹ค JUnit๋„ ๊ฐ™์ด ์žˆ์Œ) ๋“ค๋ฆฌ๋Š” ๋ง๋กœ๋Š” ์š”๊ฒŒ ๋” ์ข‹๋‹ค๊ณ  ํ•จ.
  • Mocha: ์˜ค๋ž˜๋œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ…Œ์ŠคํŒ… ํ”„๋ ˆ์ž„์›Œํฌ #1. ์ดํ•˜ ๋ชจ์นด
  • Chai: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์šฉ Assertion ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. ๊ฐ€๋…์„ฑ ์ข‹๊ณ  ์œ ์—ฐํ•œ ๋ฌธ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค. ๋ณดํ†ต ๋ชจ์นด์™€ ๊ฐ™์ด ์“ด๋‹ค.
  • Jest: ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ŠคํŒ… ํ”„๋ ˆ์ž„์›Œํฌ. Facebook์—์„œ ๊ฐœ๋ฐœํ–ˆ๋‹ค. ์ง€๊ธˆ์€ OpenJS ์žฌ๋‹จ์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๋ชจ์–‘.
  • โญVitest: Vite ์ƒํƒœ๊ณ„์˜ ํ…Œ์ŠคํŒ… ํ”„๋ ˆ์ž„์›Œํฌ. Vite์™€์˜ ์‰ฌ์šด ํ†ตํ•ฉ, ๋น ๋ฅธ ์‹คํ–‰ ์†๋„๊ฐ€ ํŠน์ง•. ESM์„ ์ง€์›ํ•œ๋‹ค.

ํ…Œ์ŠคํŠธ ๋„๊ตฌ

  • postman: HTTP Request/Response ํ…Œ์ŠคํŠธ
  • Selenium: ๋™์  ์›น ์•ฑ(ํŽ˜์ด์ง€ ๋กœ๋”ฉ ํ›„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋“ฑ์— ์˜ํ•ด ๋™์ ์œผ๋กœ ๊ตฌ์„ฑ์ด ๋ณ€๊ฒฝ๋˜๋Š” ์‚ฌ์ดํŠธ) ํ…Œ์ŠคํŠธ ํ˜น์€ ํฌ๋กค๋ง์— ์‚ฌ์šฉ๋˜๋Š” ๋„๊ตฌ๋‹ค.

8. ์ธํ”„๋ผ ๋ชจ๋‹ˆํ„ฐ๋ง, ์„ฑ๋Šฅ ๋ถ„์„

APM(Application Performance Management), ํ”„๋กœํŒŒ์ผ๋ง

ํ†ต์นญ ๋ชจ๋‹ˆํ„ฐ๋ง ๋„๊ตฌ ๋ชจ์Œ. ์–˜๋„ค๋“ค์€ ์›ฌ๋งŒํ•˜๋ฉด ์ƒ์šฉ์ด๋‹ค.

  • Datadog: ๋ฐ์ดํ„ฐ๋…. ์ธํ”„๋ผ ๋ชจ๋‹ˆํ„ฐ๋ง. APM ๊ธฐ๋Šฅ๋„ ์žˆ์ง€๋งŒ ์‹œ์Šคํ…œ ์„ฑ๋Šฅ ์ง€ํ‘œ ๋ถ„์„ ๊ธฐ๋Šฅ์ด ์ฃผ๋ ฅ์ด๋‹ค. ์„ค์น˜ํ˜•์ด ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ๋Š” ์ €์ชฝ์—์„œ ๊ด€๋ฆฌํ•˜๋ฉฐ, ๋น„์‹ธ๋‹ค.
  • ์ œ๋‹ˆํผ: ์ž๋ฐ”์•ฑ ๋ชจ๋‹ˆํ„ฐ๋ง
  • VisualVM: ํ”„๋กœํŒŒ์ผ๋ง ๋„๊ตฌ#1. ์ž๋ฐ” ์•ฑ์šฉ. VM์˜ ํ™˜๊ฒฝ, CPU์™€ ๋ฉ”๋ชจ๋ฆฌ์˜ ์‚ฌ์šฉ๋Ÿ‰, ํด๋ž˜์Šค์™€ ์Šค๋ ˆ๋“œ์˜ ์ ์œ ์œจ, CPU/๋ฉ”๋ชจ๋ฆฌ/JDBC ํ”„๋กœํŒŒ์ผ๋ง ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ์˜คํ”ˆ ์†Œ์Šค
  • Eclipse Memory Analyzer: ํ”„๋กœํŒŒ์ผ๋ง ๋„๊ตฌ #2. ์ž๋ฐ” ์•ฑ์šฉ. VisualVM๋ณด๋‹ค ๊ธฐ๋Šฅ์ด ์กฐ๊ธˆ ๋” ๋งŽ๊ณ  ๋„์›€๋ง์ด ์ž˜ ๋˜์–ด ์žˆ์–ด์„œ ์“ฐ๊ธฐ ํŽธํ•จ. UI๋Š” ์ดํด๋ฆฝ์Šค ๊ธฐ๋ฐ˜์ž„. ์˜คํ”ˆ ์†Œ์Šค
  • XRebel: ํ”„๋กœํŒŒ์ผ๋ง ๋„๊ตฌ #3. ์ž๋ฐ” ์›น ์•ฑ ์ „์šฉ์ด๋‹ค. ์ƒ์šฉ
  • JProfiler: ํ”„๋กœํŒŒ์ผ๋ง ๋„๊ตฌ #4. 10์ผ ๋ฌด๋ฃŒ. IDE์™€ ์—ฐ๋™ํ•  ์ˆ˜ ์žˆ์Œ. ์ƒ์šฉ
  • YourKit Java Profiler: ํ”„๋กœํŒŒ์ผ๋ง ๋„๊ตฌ#5. ์ด๊ฒƒ๋„ IDE ์—ฐ๋™ ์Œ‰๊ฐ€๋Šฅ. ๋‹จ, Java 1.7 ๋ฏธ๋งŒ์˜ ํ™˜๊ฒฝ์€ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ƒ์šฉ์ด๋‹ค.
  • Jennifer: APM #2. ์ž๋ฐ”/PHP/๋‹ท๋„ท ์•ฑ ๋ชจ๋‹ˆํ„ฐ๋ง. ์ƒ์šฉ
  • WhaTap: APM #3. ์•ฑ/์„œ๋ฒ„/DB/URL/์ปจํ…Œ์ด๋„ˆ/์ธํ”„๋ผ ๋ชจ๋‹ˆํ„ฐ๋ง. ์ƒ์šฉ์ด๋ฉฐ ํ•œ๊ตญ๊ธฐ์—…์ด๋ผ ํ•œ๊ตญ์–ดํŒ์„ ์ œ๊ณตํ•œ๋‹ค.
  • โญPinpoint: ์˜คํ”ˆ ์†Œ์Šค APM. ๋„ค์ด๋ฒ„์—์„œ ๋งŒ๋“ค์—ˆ๋‹ค ํ•จ
  • Scouter: ์˜คํ”ˆ ์†Œ์Šค APM. LG CNS๋ž‘ ๊ด€๋ จ์ด ์žˆ๋‚˜ ๋ด„. ์ด๊ฑฐ ๋งŒ๋“  ์‚ฌ๋žŒ๋“ค์ด WhaTap ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ํ•˜๋˜๋””โ€ฆ?

๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”

  • Grafana: ๋ฉ”ํŠธ๋ฆญ/๋กœ๊ทธ ์‹œ๊ฐํ™” ๋„๊ตฌ. ์˜คํ”ˆ ์†Œ์Šค๋‹ค. ๋ฉ”ํŠธ๋ฆญ์ด๋ž€ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ํฌํ•จํ•œ ์ˆ˜์น˜ ๋ฐ์ดํ„ฐ๋ผ๊ณ  ํ•œ๋‹ค.
  • Kibana: Elastic Stack์˜ ์ผ๋ถ€์ธ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” ๋ฐ ๋ถ„์„ ๋„๊ตฌ. ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ APM ๊ธฐ๋Šฅ๋„ ์ œ๊ณต๋จ.

9. ๋ณด์•ˆ, ์ธ์ฆ

  • Let's Encrypt: ๋น„์˜๋ฆฌ ๋‹จ์ฒด์ธ ISRG, Internet Security Research Group์—์„œ ์ œ๊ณตํ•˜๋Š” TLS(SSL) ์ธ์ฆ์„œ ๋ฌด๋ฃŒ ๋ฐœ๊ธ‰ ์‚ฌ์ดํŠธ.
  • certbot: Let's Encrypt์—์„œ ๋ฐœ๊ธ‰ํ•˜๋Š” TLS ์ธ์ฆ์„œ๋ฅผ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋„์™€์ฃผ๋Š” ์˜คํ”ˆ ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด. EFF(Electronic Frontier Foundation)์—์„œ ๋งŒ๋“ค์—ˆ๊ณ  ์ธ์ฆ์„œ ์ž๋™ ๊ฐฑ์‹  ๊ฐ™์€ ์ž‘์—…์„ ์ง€์›ํ•œ๋‹ค.
  • HashiCorp Vault: ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ด€๋ฆฌ, ์•”ํ˜ธํ™” ํ‚ค ๊ด€๋ฆฌ, ์ ‘๊ทผ ์ œ์–ด ๋“ฑ์„ ํ†ตํ•ฉ ์ œ๊ณตํ•˜๋Š” ์˜คํ”ˆ ์†Œ์Šค. ์•”ํ˜ธํ™” ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์šฉ๋„๋กœ ์“ด๋‹ค. ํด๋ผ์šฐ๋“œ, ์˜จํ”„๋ ˆ๋ฏธ์Šค ๋ชจ๋‘ ์ง€์›ํ•œ๋‹ค. ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๋ฒ„์ „์€ ์ „์šฉ ์„œ๋ฒ„๊ฐ€ ์ œ๊ณต๋˜์ง€๋งŒ ๋ฌด๋ฃŒ ๋ฒ„์ „์€ ์ง์ ‘ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค.

10. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด Programming Language

  • โญRust: ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(GC)์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „์„ฑ(memory safe)์„ ์ถ”๊ตฌํ•˜๋Š” ์–ธ์–ด #1. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ GC๊ฐ€ ์—†์ง€๋งŒ memory unsafeํ•œ C์™€ C++์˜ ๋Œ€์ฒด์ œ๋กœ ๊ผฝํžŒ๋‹ค. ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ์›น ์–ด์…ˆ๋ธ”๋ฆฌ, ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฒ”์šฉ ์–ธ์–ด๋‹ค. Mozilla Research์—์„œ ๊ฐœ๋ฐœํ–ˆ๋‹ค.
  • Elixir: BEAM(Erlang์˜ ๊ฐ€์ƒ๋จธ์‹ ) ์œ„์—์„œ ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด. ๋™์‹œ์„ฑ๊ณผ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ์— ๊ฐ•ํ•˜๋ฉฐ, ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ๊ฒฉ๋ฆฌ(ํ•œ ํ”„๋กœ์„ธ์Šค์˜ ์‹คํŒจ๊ฐ€ ์‹œ์Šคํ…œ ์ „์ฒด์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Œ)๋ฅผ ํ†ตํ•œ ์•ˆ์ •์„ฑ์ด ํŠน์ง•์ด๋‹ค. Erlang์ด ์ž๋ฐ”๋ผ๋ฉด Elixir๋Š” ์ฝ”ํ‹€๋ฆฐ์— ๋น„๊ฒฌ๋œ๋‹ค. ๋””์Šค์ฝ”๋“œ๋Š” ์‹ค์‹œ๊ฐ„ ๋ฉ”์‹œ์ง• ์ฒ˜๋ฆฌ๋ฅผ Elixir๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค๊ณ  ํ•จ. ๋น„๊ฒฐ์€ Erlang VM์ด ๊ด€๋ฆฌํ•˜๋Š” Erlang ํ”„๋กœ์„ธ์Šค(OS์˜ ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ์™€ ๋‹ค๋ฅธ ๊ฐœ๋…)์™€ concurrency ์ง€์› ๊ธฐ๋Šฅ ๋•๋ถ„์ด๋ผ๋‚˜โ€ฆ
  • Erlang: 1980๋…„๋Œ€์— ํ†ต์‹  ์‹œ์Šคํ…œ ๊ตฌ์ถ•์„ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ์–ธ์–ด(๊ทธ๋ž˜์„œ Erlang/OTP, Open Telecom Platform์ด๋ผ ํ•จ). ์งง์€ ์ง€์—ฐ์‹œ๊ฐ„, ๊ฒฌ๊ณ ํ•จ, ๋‚ด๊ฒฐํ•จ์„ฑ, ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ์ง€์› ๋“ฑ์ด ํŠน์ง•์ด๋‹ค. ์ž๋ฐ”์™€ ์œ ์‚ฌํ•˜๊ฒŒ ๋‹ค๋ฅธ ์–ธ์–ด๊ฐ€ ์ปดํŒŒ์ผํ•˜๋Š” ๊ฐ€์ƒ๋จธ์‹ (Erlang์˜ VM, BEAM์ด๋ผ ๋ถ€๋ฅธ๋‹ค)์—์„œ ์ž‘๋™ํ•œ๋‹ค.
  • Ada: GC๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „์„ฑ์„ ์ถ”๊ตฌํ•˜๋Š” ์–ธ์–ด #2. ํ•ญ๊ณต, ๋ฐฉ์œ„, ์šฐ์ฃผ ์‚ฐ์—…์ฒ˜๋Ÿผ ๋†’์€ ์ˆ˜์ค€์˜ ์•ˆ์ „์„ฑ๊ณผ ์ •ํ™•์„ฑ์ด ์š”๊ตฌ๋˜๋Š” ์‹œ์Šคํ…œ์—์„œ ์“ฐ์ธ๋‹ค๊ณ  ํ•œ๋‹ค.
  • Zig: GC๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „์„ฑ์„ ์ถ”๊ตฌํ•˜๋Š” ์–ธ์–ด #3. ์…‹ ์ค‘ ๊ฐ€์žฅ ์ตœ์‹  ์–ธ์–ด๋‹ค(Ada์˜ ํ‘œ์ค€ํ™”๋Š” 1983๋…„, Rust์˜ ์ตœ์ดˆ ๋ฆด๋ฆฌ์ฆˆ๊ฐ€ 2010๋…„, Zig๋Š” 2015๋…„์— ๊ฐœ๋ฐœ ์‹œ์ž‘).
  • Scala: ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ฒฐํ•ฉํ•œ ๊ฐœ๋ฐœ ์–ธ์–ด. ์™œ์ธ์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๊ฐœ๋ฐœ์ž ์„ค๋ฌธ์กฐ์‚ฌ ์–ธ์–ด๋ณ„ ํ‰๊ท ์—ฐ๋ด‰ ํ•ญ๋ชฉ์—์„œ ๋Š˜ ์ƒ์œ„๊ถŒ์„ ์ฐจ์ง€ํ•œ๋‹ค. ์ž๋ฐ” ๊ธฐ๋ฐ˜์ด๋ฉฐ JVM์—์„œ ์‹คํ–‰๋œ๋‹ค.
  • Kotlin: JVM์—์„œ ์‹คํ–‰๋˜๋Š” ์ž๋ฐ”์™€ ์ƒํ˜ธ ์šด์šฉ ๊ฐ€๋Šฅํ•œ ์–ธ์–ด. ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์— ์ฃผ๋กœ ์“ฐ์ธ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(?)๊นŒ์ง€ ์ง€์›ํ•œ๋‹ค๊ณ  ํ•˜๋ฉฐ ๊ธฐ์กด์˜ ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ํ˜ธํ™˜ํ•ด์ค˜์„œ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.
  • Apache Groovy: JVM์—์„œ ์ž‘๋™ํ•˜๋Š” ๋™์  ํƒ€์ž… ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด(? ๊ทธ๊ฒŒ ๋ญ”๋ฐ). ์ž๋ฐ”, ํŒŒ์ด์ฌ, ๋ฃจ๋น„ ๋“ฑ์˜ ์–ธ์–ด์—์„œ ์˜ํ–ฅ์„ ๋ฐ›์•˜๋‹ค ํ•œ๋‹ค.
  • Go: ํ•œ ๋•Œ ์„ธ๊ณ„์—์„œ ๊ฐ€์žฅ ๋ˆ์„ ๋งŽ์ด ๋ฒ„๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ง‘๊ณ„๋˜๊ธฐ๋„ ํ–ˆ์œผ๋ฉฐ ๊ฐœ๋ฐœ ์†๋„์™€ ์‹คํ–‰ ์†๋„ ๋‘˜ ๋‹ค ๋น ๋ฅธ ํš๊ธฐ์ ์ธ ์–ธ์–ด๋ผ๊ณ  ํ•จ. ์–ธ์–ด ์ž์ฒด๊ฐ€ ๊ฒฝ๋Ÿ‰์ด๋ผ ๋Š˜ ์“ฐ๋˜๊ฒƒ๋งŒ ์“ด๋‹ค๋Š” ์†Œ์†Œํ•œ ๋‹จ์ ์ด ์žˆ์ง€๋งŒ, ๊ทธ๋งŒํผ ๋น ๋ฅด๊ณ  ์‰ฝ๊ฒŒ ์ตํž ์ˆ˜ ์žˆ๋‹ค๊ณ โ€ฆ
  • Dart: ๊ตฌ๊ธ€์ด ๋ฉ€ํ‹ฐ ํ”Œ๋žซํผ ์ž‘๋™์„ ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“  ์–ธ์–ด. ๋ฌธ๋ฒ•์€ C์™€ ๋น„์Šทํ•˜๋‹ค๊ณ  ํ•จ. ์ž๋ฐ”์ฒ˜๋Ÿผ DVM(Dart VM) ์ƒ์—์„œ ์ž‘๋™ํ•˜๊ฑฐ๋‚˜ ๋„ค์ดํ‹ฐ๋ธŒ ์ปดํŒŒ์ผ์„ ๋”ฐ๋กœ ํ•œ๋‹ค.
  • โญTypeScript: ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์Šˆํผ์…‹(superset)์œผ๋กœ, ์ด๋ฆ„์ฒ˜๋Ÿผ ์ •์  ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ์ถ”๊ฐ€๋˜์–ด ์ปดํŒŒ์ผ ์—๋Ÿฌ ๊ฒ€์ถœ์ด ๊ฐ€๋Šฅํ•œ ๊ฒŒ ๋Œ€ํ‘œ์ ์ธ ํŠน์ง•์ด๋‹ค. ์ปดํŒŒ์ผ ํƒ€์ž„์ด ์กด์žฌํ•˜๋ฉฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜๋œ๋‹ค.
  • Mojo: ํŒŒ์ด์ฌ์˜ ์Šˆํผ์…‹. ํŒŒ์ด์ฌ์˜ ๋А๋ฆฐ ์†๋„๋ฅผ ๊ฐœ์„ ํ–ˆ์œผ๋ฉฐ ์ €์ˆ˜์ค€์˜ ์ œ์–ด๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด ํŠน์ง•. Python 3.x๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ํ˜ธํ™˜ํ•œ๋‹ค.
  • Jsonnet: ํ™˜๊ฒฝ ์„ค์ •์šฉ ์–ธ์–ด(A configuration language). ์˜ค์ง JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์–ธ์–ด๋กœ, ๊ธฐ์กด JSON์—์„  ๋ถˆ๊ฐ€๋Šฅํ•˜๋˜ ๋ณ€์ˆ˜ ์ฐธ์กฐ, ์กฐ๊ฑด ๋ถ„๊ธฐ, ํ•จ์ˆ˜, import ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์–ธ์–ด ๋ณ€ํ™˜ ๋ฐ ๋ถ„์„

  • Figstack: ์ฝ”๋“œ๋ฅผ ๋‹ค๋ฅธ ์–ธ์–ด๋กœ ๋ฒˆ์—ญ, ์˜์–ด๋กœ ํ•ด์„ค, documentation comments ๋งŒ๋“ค๊ธฐ, ์‹œ๊ฐ„ ๋ณต์žก๋„ ๊ณ„์‚ฐ, ์ž‘์„ฑํ•œ ์ฝ”๋“œ ๊ธฐ๋ฐ˜ ์ž์—ฐ์–ด๋กœ ์งˆ๋ฌธ๊นŒ์ง€. ์•„์ง์€ ์ชผ๋” ๋А๋ฆฐ๊ฒŒ ํ .
  • OneLang.io: ๊ฐœ๋ฐœ ์–ธ์–ด ๋ณ‘๋ ฌ ๋ฒˆ์—ญ๊ธฐ

11. ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ Runtime Environments

  • Node.js: ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋Ÿฐํƒ€์ž„
  • Deno: Node.js ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŒ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ Rust๊ธฐ๋ฐ˜์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ/ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์šฉ ๋Ÿฐํƒ€์ž„. Node.js ๊ฐœ์„  ๋ฒ„์ „์ด๋ผ๊ณ  ๋ณด๋ฉด ๋จ.
  • Bun: Node.js๋ณด๋‹ค ์ตœ์ ํ™”๋œ ์„ฑ๋Šฅ, ๋” ๋‚˜์€ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๋“ฑ์ด ๋ชฉํ‘œ์ธ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋Ÿฐํƒ€์ž„. ๋‹ค๋ฅธ ๋Ÿฐํƒ€์ž„๋ณด๋‹ค ๋น ๋ฅด๋‹ค๊ณ  ์ฃผ์žฅํ•œ๋‹ค.

12. ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๊ฐœ๋ฐœ

  • Electron: ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๋ฐ์Šคํฌํƒ‘ ์•ฑ ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ. ์˜คํ”ˆ ์†Œ์Šค๊ณ  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ฐ˜์ด๋‹ค. VSCode, Atom, Notion desktop ๋“ฑ์ด ์ด๊ฑธ๋กœ ๋งŒ๋“ค์–ด์ง.
  • Tauri: ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์•ฑ ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ(์•ˆ๋“œ๋กœ์ด๋“œ๋‚˜ iOS๋„ ๋˜๋Š” ๋ชจ์–‘). ์ผ๋ ‰ํŠธ๋ก ์˜ ๊ฒฝ์Ÿ ๋ชจ๋ธ์ด๋‹ค. OS์˜ ๋„ค์ดํ‹ฐ๋ธŒ ์›น ๋Ÿฐํƒ€์ž„์„ ํ™œ์šฉํ•˜๋ฉฐ ๋ฐฑ์—”๋“œ๋Š” ๋Ÿฌ์ŠคํŠธ, ํ”„๋ก ํŠธ์—”๋“œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ฐ˜์ด๋‹ค. ๋ฆฌ์•กํŠธ๋‚˜ ๋ทฐ ๋“ฑ์˜ ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋ก ํŠธ์—”๋“œ์šฉ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ง€์›ํ•œ๋‹ค. ์ผ๋ ‰ํŠธ๋ก ๋ณด๋‹ค ๊ฐ€๋ณ๊ณ  ๋น ๋ฅด๋ฉฐ, ๋” ๋‚˜์€ ๋ณด์•ˆ์„ ์žฅ์ ์œผ๋กœ ๋‚ด์„ธ์šด๋‹ค.

13. ๋””์ž์ธ, ๋‹ค์ด์–ด๊ทธ๋žจ

๋‹ค์ด์–ด๊ทธ๋žจ, UML

  • โญeraser: ๋งˆํฌ๋‹ค์šด ๋…ธํŠธ์™€ ๋“œ๋กœ์ž‰ ์•ฑ์„ ํ•ฉ์ฒด์‹œํ‚จ ์‹ ๋ฐ•ํ•œ ๋ฌผ๊ฑด. ์—”์ง€๋‹ˆ์–ด๋ง ํŒ€์„ ์œ„ํ•œ ํ™”์ดํŠธ๋ณด๋“œ๋ผ ์†Œ๊ฐœ๋œ๋‹ค. ํ‚ค๋ณด๋“œ๋กœ ํ”Œ๋กœ์šฐ ์ฐจํŠธ ๊ทธ๋ฆฌ๊ธฐ ์ˆ˜์›”ํ•˜๋‹ค. Diagram as Code, ์ฝ”๋ฉ˜ํŠธ ๊ธฐ๋Šฅ ์ง€์›. ๋ฌด๋ฃŒ ํ”Œ๋žœ ์ œ๊ณต
  • Excalidraw: ์›น ์ „์šฉ ๋“œ๋กœ์ž‰ ์•ฑ. ๋ฌด๋ฃŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ. eraser์— ๋น„ํ•ด ๊ฐ€๋ณ๊ฒŒ ์“ฐ๊ธฐ ์ข‹๋‹ค.
  • Balsamiq: UML, ์™€์ด์–ดํ”„๋ ˆ์ž„ ๋“ฑ์„ ์œ„ํ•œ ๋“œ๋กœ์ž‰ ์•ฑ. ์ข‹์ง€๋งŒ ๋ฌด๋ฃŒ ํ”Œ๋žœ์ด ์—†๋Š” ๊ฒŒ ๋‹จ์ 
  • StarUML
  • Draw.io
  • Gliffy
  • โญMermaid: ๊ฐ„๋‹จํ•œ ํ…์ŠคํŠธ ๊ตฌ๋ฌธ์„ ์ด์šฉํ•ด ๋‹ค์ด์–ด๊ทธ๋žจ์„ ์ƒ์„ฑํ•ด์ฃผ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ฐ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. ์ด๋Ÿฐ๊ฑธ Diagram as Code๋ผ๊ณ  ํ•œ๋‹ค. ํ”Œ๋กœ์šฐ ์ฐจํŠธ, ๊ฐ„ํŠธ ์ฐจํŠธ, ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ, ๊นƒ ๊ทธ๋ž˜ํ”„, ์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ, ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ, ERD ๋“ฑ์„ ์ง€์›ํ•œ๋‹ค. ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ์„œ ํ™•์ธ.
  • chart.xkcd: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋งŒ๋“œ๋Š” ์ฐจํŠธ. ๊ฒฐ๊ณผ๋ฌผ์€ svg๋กœ ๋‚˜์˜ด. ๋ฐœ๋กœ ๊ทธ๋ฆฐ ๊ฒƒ ๊ฐ™์€ ๋ชจ์–‘์ƒˆ๊ฐ€ ํŠน์ง•
  • โญtree.nathanfriend.com: ํŠธ๋ฆฌ ๊ตฌ์กฐ์˜ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ์ƒ์„ฑํ•ด์ฃผ๋Š” ์‚ฌ์ดํŠธ. ์ž…๋ ฅํ•œ ๊ฐ’์€ URL์˜ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์— ํฌํ•จ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณต์œ ๊ฐ€ ์‰ฝ๋‹ค.

๋งˆ์ธ๋“œ๋งต

์™€์ด์–ดํ”„๋ ˆ์ž„, ๊ธฐํš

  • MockFlow
  • Moqups
  • Cacoo
  • Wireframe.cc
  • โญAxure: ๊ธฐํš์•ˆ/์™€์ด์–ดํ”„๋ ˆ์ž„ ์ž‘์„ฑ์— ์‚ฌ์šฉํ•˜๋Š” ์•ฑ. ๋ฌด๋ฃŒ ํ”Œ๋žœ์€ ์—†๋‹ค. ๊ฐ€๊ฒฉ์€ ์›” 25๋‹ฌ๋Ÿฌ(2024-07-11)

๋””์ž์ธ ๋ฆฌ์†Œ์Šค

  • Figma: ์š”์ฆ˜(2021-05-03) ๋œฌ๋‹ค๋Š” UI ๋””์ž์ธ ๋„๊ตฌ. ๊ธฐ๋ณธ์€ ๋ฌด๋ฃŒ๊ณ , ๋Œ€-์ถฉ ๋น„๊ณต๊ฐœ ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฌ๋Ÿฌ ๋ช…์ด ์‚ฌ์šฉํ•  ๋• ์œ ๋ฃŒ์ธ๋“ฏ
  • ThemeForest: ์–ธ์–ด, ์—”์ง„, ํ”„๋ ˆ์ž„์›Œํฌ ๋ณ„ ํ…Œ๋งˆ(HTML๊ณผ CSS ๋ฌถ์Œ. ํ•„์š”ํ•˜๋ฉด JS๊นŒ์ง€) ํŒŒ๋Š” ์‚ฌ์ดํŠธ
  • loading.io: ๋กœ๋”ฉ ์ด๋ฏธ์ง€, ํŒจํ„ด, ํ…์ŠคํŠธ ๋“ฑ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์‚ฌ์ดํŠธ. ๋ฌด๋ฃŒ๋ฒ„์ „์ธ ๊ฒฝ์šฐ ์ƒ‰ ์ •๋„๋ฐ–์— ๋ชป๋ฐ”๊ฟˆ.
  • ๋ฏธ๋ฆฌ์บ”๋ฒ„์Šค: ์ž์นญ ๋””์ž์ธ ํ”Œ๋žซํผ. ํ…œํ”Œ๋ฆฟ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ„ํŽธํ•œ ๋””์ž์ธ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ ๋งž์ถค ๋””์ž์ธ ์˜๋ขฐ๋„ ๊ฐ€๋Šฅํ•จ.
  • Fluent Icons: ๋งˆ์†Œ์˜ ์˜คํ”ˆ ์†Œ์Šค ์•„์ด์ฝ˜ ์ €์žฅ์†Œ. ๋งˆ์†Œ๊ฐ€ ๋งŒ๋“ ๊ฑด ์•„๋‹˜. SVG ํ˜น์€ PNG๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
  • Awesome list of free CSS Generator - DEV Community: CSS ์ฝ”๋“œ ์ƒ์„ฑ๊ธฐ ๋ชจ์Œ

14. ๋„คํŠธ์›Œํฌ, ๋ณด์•ˆ

SSH/ํ…”๋„ท/FTP ํด๋ผ์ด์–ธํŠธ

์‚ฌ์‹ค ์œˆ๋„์šฐ 10๋ถ€ํ„ฐ๋Š” Windows Terminal์ด ์žˆ์–ด์„œ ์ด๋Ÿฐ ๊ฑฐ ํ•„์š” ์—†์ง€๋งŒโ€ฆ ๐Ÿคญ

  • WinSCP
  • PuTTY
  • Xshell: ๊ฐ€์žฅ ์ข‹์œผ๋‚˜ ์œ ๋ฃŒ ๋ผ์ด์„ ์Šค.
  • bitvise: ์„œ๋ฒ„ ๋”ฑ ํ•˜๋‚˜์— ๋ถ™๋Š” ์šฉ๋„๋กœ๋Š” ์•„์ฃผ ์ข‹๋‹ค. ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋ถ™์œผ๋ ค๋ฉด ๋งค๋ฒˆ ํ”„๋กœํ•„๋“ค์„ ๋ถˆ๋Ÿฌ์™€์•ผ ํ•ด์„œ ๋ถˆํŽธ.
  • MobaXterm: ๋ฌด๋ฃŒ ์•ฑ ์ค‘์—์„œ ์—ฌ๋Ÿฌ ์„œ๋ฒ„ ๋™์‹œ ์ ‘์† ๊ธฐ๋Šฅ์€ ๊ทธ๋‚˜๋งˆโ€ฆ

VPN

  • OpenVPN GUI: OpenVPN ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฒ„์ „์˜ ํด๋ผ์ด์–ธํŠธ ์•ฑ. ๊ณต์‹ ์•ฑ์˜ ์ด๋ฆ„์€ OpenVPN Connect์ด๋ฉฐ OpenVPN GUI์™€๋Š” ๋‹ค๋ฅด๋‹ค. VPN ์„ค์ •๊ณผ ๊ฐ™์€ ๋„คํŠธ์›ค์—์„œ๋„ ์•ฑ์— ๋”ฐ๋ผ ์ฐจ์ด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด OpenVPN Connect๋กœ ํŠน์ • VPN์— ๋ถ™์—ˆ๋”๋‹ˆ ์ธํ„ฐ๋„ท ๋จนํ†ต ํ˜„์ƒ์ด ๋ฐœ์ƒํ–ˆ๋Š”๋ฐ, OpenVPN GUI์—์„  ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ.
  • Surfshark: ์ ‘์† ๊ตญ๊ฐ€ ๋ณ€์กฐ์šฉ ์œ ๋ฃŒ VPN

ํŠธ๋ž˜ํ”ฝ ์บก์ฒ˜

  • Fiddler: ๋„คํŠธ์›Œํฌ ๋””๋ฒ„๊น… ๋„๊ตฌ. ํŒŒํญ์€ SSL ์ธ์ฆ์„œ ๋•Œ๋ฌธ์— ๋นก์น  ์ˆ˜ ์žˆ๋‹ค. ์œ ๋ฃŒ
  • Wirehsark: ํŒจํ‚ท ์ถ”์  ๋„๊ตฌ.

IP ํ™•์ธ

  • https://icanhazip.com: ๋‚ด ๊ณต์ธ IP๋งŒ ํ…์ŠคํŠธ๋กœ ์‘๋‹ตํ•˜๋Š” ์‚ฌ์ดํŠธ.
  • https://whatismyipaddress.com: ์ ‘์†ํ•œ PC์˜ IP ๊ด€๋ จ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์‚ฌ์ดํŠธ #1. ์˜ˆ์ „์— bot์ด ์žˆ์—ˆ๋Š”๋ฐ ์‚ฌ๋ผ์ง.
  • https://ipinfo.io: ์ ‘์†ํ•œ PC์˜ IP ๊ด€๋ จ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์‚ฌ์ดํŠธ #2

15. ๋ฒ„์ „ ๊ด€๋ฆฌ

  • โญSublime Merge: Git GUI ํด๋ผ์ด์–ธํŠธ #1. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฌด๋ฃŒ ์•ฑ์ด๋ฉฐ ๋‹คํฌ ๋ชจ๋“œ๋ฅผ ์“ฐ๊ณ  ์‹ถ์„ ๋•Œ๋งŒ ๊ฒฐ์ œํ•˜๋ฉด ๋œ๋‹ค. ์†๋„๊ฐ€ CLI ์ˆ˜์ค€์œผ๋กœ ๋น ๋ฅด๊ณ  ํ‚ค๋ณด๋“œ ๋‹จ์ถ•ํ‚ค ์ง€์›์ด ํ›Œ๋ฅญํ•œ ํŽธ.
  • Fork: Git GUI ํด๋ผ์ด์–ธํŠธ #2. ๊ฐ€๋ณ๊ณ  ๊ทธ๋ž˜ํ”„๊ฐ€ ๋ณด๊ธฐ ์ข‹์€๊ฒŒ ํŠน์ง•. ๋ฌด๋ฃŒ์ง€๋งŒ ํ›„์› ๋ฐฉ์‹์œผ๋กœ ๋ผ์ด์„ ์Šค ๊ตฌ์ž…์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • GitKraken: Git GUI ํด๋ผ์ด์–ธํŠธ #3. ์†๋„๋Š” ๋А๋ฆฌ์ง€๋งŒ ํŽธ์˜์„ฑ์€ ํƒ‘. ์‚ฌ์„ค ์„œ๋ฒ„ ํ˜น์€ ๋น„๊ณต๊ฐœ ์ €์žฅ์†Œ๋Š” ์œ ๋ฃŒ๋ฒ„์ „์ด ์•„๋‹ˆ๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ๐Ÿ˜ฉ
  • gitui: Mdir(?) ์Šคํƒ€์ผ์˜ GUI ์•ฑ. ์˜›๋‚  ๊ฐฌ์„ฑ์ด ์ข‹์œผ๋ฉด ์“ธ๋งŒํ•˜๋‹ค. ๋‹จ์ ์œผ๋กœ ์ปค๋ฐ‹ ๊ทธ๋ž˜ํ”„ ๊ธฐ๋Šฅ์ด ์—†๊ณ , ์…ธ์—์„œ ์ €์žฅ์†Œ ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•˜์—ฌ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ด๋ผ ์—ฌ๋Ÿฌ ์ €์žฅ์†Œ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ๋ถˆํŽธํ•˜๋‹ค.
  • GitHub Desktop: GitHub ๊ณต์‹ GUI ํด๋ผ์ด์–ธํŠธ. ๋‹จ์ ์œผ๋กœ ์ปค๋ฐ‹ ๊ทธ๋ž˜ํ”„ ๊ธฐ๋Šฅ์ด ์—†๋‹ค.

16. ์ฝ”๋“œ ํ•˜์ด๋ผ์ดํŒ…

  • prismjs: ์ฝ”๋“œ ํ•˜์ด๋ผ์ดํŒ… JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. HTML๋กœ ์ž‘์„ฑ๋œ ํŽ˜์ด์ง€๋Š” ์–ด๋””๋“  ์ ์šฉํ•  ์ˆ˜ ์žˆ์Œ. ๊นƒํ—ˆ๋ธŒ
  • Code Beautify: ์ธ๋ผ์ธ ์ฝ”๋“œ ํ•˜์ด๋ผ์ดํ„ฐ #1. ์ž…๋ ฅํ•œ ํ…์ŠคํŠธ์— CSS๋ฅผ ์ ์šฉํ•ด HTML๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์‚ฌ์ดํŠธ. ์ฝ”๋“œ ๋ธ”๋ก์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ฉ”์ผ์ด๋‚˜ ๊ฒŒ์‹œํŒ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹๋‹ค.
  • Color Scripter: ์ธ๋ผ์ธ ์ฝ”๋“œ ํ•˜์ด๋ผ์ดํ„ฐ #2.
  • hilite.me: ์ธ๋ผ์ธ ์ฝ”๋“œ ํ•˜์ด๋ผ์ดํ„ฐ #3

17. ์ƒ์‚ฐ์„ฑ, ๊ด€๋ฆฌ

์ผ์ •, TODO

  • โญWorkflowy: ์˜จ๋ผ์ธ ํ•  ์ผ ๊ด€๋ฆฌ ๋„๊ตฌ
  • โญClickUp: ์˜จ๋ผ์ธ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๋„๊ตฌ. ๋ฌด๋ฃŒ ํ”Œ๋žœ๋„ ์“ธ๋งŒํ•˜๊ณ  ๊ฐ„ํŠธ ์ฐจํŠธ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
  • Calendly: ๋ฉ”์ผ๋กœ ์ผ์ • ๋งž์ถ”๊ธฐ
  • Linear
  • Markwhen: Project planning example: ์ฝ”๋“œ๋กœ ํ”„๋กœ์ ํŠธ ์ผ์ • ํ‘œ๋ฅผ ๋งŒ๋“œ๋Š” ์‚ฌ์ดํŠธ

๋ฉ”์ผ ์„œ๋น„์Šค

  • Guerrilla Mail: ์ผํšŒ์šฉ ๋ฉ”์ผ ์„œ๋ฒ„. 60๋ถ„ ๋™์•ˆ๋งŒ ์œ ํšจํ•œ ๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ์ œ๊ณต.
  • sharklasers.com: ์ผํšŒ์šฉ ๋ฉ”์ผ ์„œ๋ฒ„ #2. ์ด๊ฑด ๊ฝค ์˜ค๋ž˜๊ฐ.
  • Firefox Relay: ํŒŒํญ ๊ณ„์ •์œผ๋กœ ์‚ฌ์šฉํ•œ ๋ฉ”์ผ์— ๋ณ„์นญ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ํ•ด๋‹น ๋ณ„์นญ์œผ๋กœ ๋ฉ”์ผ์ด ์˜ค๋ฉด ํŒŒํญ์ด ํฌ์›Œ๋”ฉ ํ•ด์คŒ. fใ…”์ดํฌ ๋ฉ”์ผ์„ ์ง„์งœ์ฒ˜๋Ÿผ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ.
  • Mailgun: ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ ๋ฉ”์ผ ์ธํ”„๋ผ ์„œ๋น„์Šค. ์›น API๋ฅผ ํ†ตํ•ด์„œ ๋ฉ”์ผ์„ ๋ฐœ์†กํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜๋ฃจ 100๊ฑด์€ ๋ฌด๋ฃŒ
  • stibee: ๋ฉ”์ผ ๋งˆ์ผ€ํŒ… ์„œ๋น„์Šค. ์ฝ๊ธฐ ์‰ฌ์šด ๋ฉ”์ผ ์ž‘์„ฑ ์ง€์›

๊ฒฐ์ œ

  • stripe: ๊ฒฐ์ œ ๋Œ€ํ–‰ ์›น ์•ฑ. ํ•ด์™ธํŒ PG์‚ฌ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ๋…ธ์…˜๊ณผ ํ—˜๋ธ”๋ฒˆ๋“ค์—์„œ ์“ฐ๋”๋ผ.
  • PortOne: 30๋ถ„์ด๋ฉด ๋œ๋‹ค๋Š” ํ†ตํ•ฉ ๊ฒฐ์ œ ์„œ๋น„์Šค. ์ด ์„œ๋น„์Šค๋Š” PG์˜ PG์— ๊ฐ€๊น๋‹ค(?).
  • i'mport: ์•„์ž„ํฌํŠธ. ๊ฒฐ์ œ/๋ณธ์ธ์ธ์ฆ ์ค‘๊ณ„ ์„œ๋น„์Šค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ์‡ผํ•‘๋ชฐ๊ณผ PG์‚ฌ(ํ˜น์€ ์‹ ์šฉ์กฐํšŒํšŒ์‚ฌ)์˜ ์ค‘๊ฐ„์— ์œ„์น˜ํ•œ๋‹ค๊ณ  ๋ณด๋ฉด ๋จ.

18. AI, ๋จธ์‹ ๋Ÿฌ๋‹

  • ChatGPT: OpenAI ์‚ฌ์˜ GPT ๊ธฐ๋ฐ˜ ๋Œ€ํ˜• ์–ธ์–ด ๋ชจ๋ธ #1
  • GPTForge: GPT๋ฅผ ํ™œ์šฉํ•œ ์›น์•ฑ, ํˆด, ์•ฑ ๋“ฑ์„ ๋ชจ์•„๋†“์€ ์‚ฌ์ดํŠธ. ๋ˆ„๊ฐ€ ๋”ฐ๋กœ ๋ชจ์œผ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๋งŒ๋“  ์‚ฌ๋žŒ๋“ค์ด ๊ปด๋‹ฌ๋ผ๊ณ  ์‹ ์ฒญํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.
  • FUTUREPEDIA: AI ๊ด€๋ จ ๋„๊ตฌ ๋ชจ์Œ ์‚ฌ์ดํŠธ
  • Teachable Machine: ๊ตฌ๊ธ€ ํ‹ฐ์ฒ˜๋ธ” ๋จธ์‹ . ์ดˆ๋“ฑํ•™์ƒ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์›น ๊ธฐ๋ฐ˜ ๋จธ์‹  ๋Ÿฌ๋‹ ๋„๊ตฌ๋‹ค. ์•„์ง(2023-12-28)์€ ์˜ค๋””์˜ค๋‚˜ ์ด๋ฏธ์ง€ ์ •๋„๋งŒ ์ง€์›ํ•จ.
  • Claude: Anthropic ์‚ฌ์˜ GPT ๊ธฐ๋ฐ˜ ๋Œ€ํ˜• ์–ธ์–ด ๋ชจ๋ธ #2. ๋ฐœ์Œ์€ 'ํด๋กœ๋“œ'. ์Šค์Šค๋กœ ์ฃผ์žฅํ•˜๊ธฐ๋ฅผ ChatGPT๋ณด๋‹ค ์„ฑ๋Šฅ์ด ์ข‹๋‹ค๊ณ  ํ•จ.
  • Tabnine: ์ฝ”ํŒŒ์ผ๋Ÿฟ ๊ฐ™์€ ์ฝ”๋“œ ์–ด์‹œ์Šคํ„ดํŠธ. ํŠน์ง•์œผ๋กœ๋Š” ๋‚ด ์ฝ”๋“œ์—์„œ ๋ชจ๋ธ์„ ํ•™์Šตํ•œ๋‹ค๋Š” ๊ฒƒ. ๊ฐœ์ธ์˜ ์ฝ”๋”ฉ ํŒจํ„ด, ํŒ€ ์ „์ฒด์˜ ์ฝ”๋”ฉ ์Šคํƒ€์ผ ๋“ฑ์„ ํ•™์Šตํ•˜๊ณ  ์—ฌ๊ธฐ์— ๋งž์ถฐ ์ฝ”๋“œ๋ฅผ ์ถ”์ฒœํ•ด ์ค€๋‹ค๊ณ  ํ•œ๋‹ค. ๋กœ์ปฌ ๊ธฐ๋ฐ˜ ํ•™์Šต์ด๋ผ ๋ฐ์ดํ„ฐ ์œ ์ถœ ๋ฌธ์ œ์—์„œ๋„ ์•ˆ์‹ฌ๋“ฑ์‹ฌ.
  • Grok: xAI์—์„œ ๊ฐœ๋ฐœํ•œ ๋Œ€ํ˜• ์–ธ์–ด ๋ชจ๋ธ #3

19. ๋ชจ๋ฐ”์ผ ๊ฐœ๋ฐœ

20. ๊ธฐํƒ€ ์œ ํ‹ธ๋ฆฌํ‹ฐ

๊ฐœ๋ฐœ ๊ด€๋ จ

  • โญmockaroo: mock ๋ฐ์ดํ„ฐ(๋”๋ฏธ ๋ฐ์ดํ„ฐ, ๊ฐ€์งœ ๋ฐ์ดํ„ฐ) ๋งŒ๋“ค์–ด์ฃผ๋Š” ์‚ฌ์ดํŠธ
  • โญSmall Dev tools: ์ธ์ฝ”๋”ฉ/๋””์ฝ”๋”ฉ, ํฌ๋งคํ„ฐ, ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ ๋“ฑ ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ์›น ๋„๊ตฌ ๋ชจ์Œ.
  • Itty bitty: ๊ฐ„๋‹จํ•œ ์„œ์‹์˜ ๊ธ€์„ ์ž‘์„ฑํ•˜๊ณ  URL๋กœ ๊ณต์œ ํ•˜๋Š” ์‚ฌ์ดํŠธ. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  URL์— ์ž‘์„ฑํ•œ ๊ธ€ ๋‚ด์šฉ์ด ๋ชจ๋‘ ๋‹ด๊ฒจ์žˆ๋Š” ๊ฒŒ ํŠน์ง•. ์„ค๋ช…์„œ๋Š” ์—ฌ๊ธฐ์—.
  • TypeForm: ์„ค๋ฌธ ์กฐ์‚ฌ์šฉ ์›น ์‚ฌ์ดํŠธ. ์—ฌํƒœ ๋ดค๋˜๊ฒƒ ์ค‘ ๊ฐ€์žฅ ๊น”๋”. ์œ ๋ฃŒ์ผ๋“ฏ?
  • Chatbase: ์›น ์‚ฌ์ดํŠธ์— ์œ„์ ฏ์ฒ˜๋Ÿผ ๊ฐ„๋‹จํžˆ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” AI ์ฑ—๋ด‡.
  • GitBook: ๋งˆํฌ๋‹ค์šด์œผ๋กœ ์›น ๋ฌธ์„œ ๋งŒ๋“œ๋Š” ์‚ฌ์ดํŠธ. ์›น์—์„œ ์ง์ ‘ ์—๋””ํŠธ๋„ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋„์ €ํžˆ ์“ธ ๋ฌผ๊ฑด์ด ์•„๋‹ˆ๋ผ์„œ(๋‹ค๊ตญ์–ด ์ž…๋ ฅํ•˜๋‹ค ๋ณด๋ฉด ๋จนํ†ต๋จ) ๋งˆํฌ๋‹ค์šด์ด๋‚˜ ๋…ธ์…˜์œผ๋กœ ์ž‘์„ฑํ•œ ํ›„ ๋ณต๋ถ™ํ•ด์•ผ ๋จ. ๋ฌธ์„œ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ณด๋‹จ ์™„์„ฑ๋œ ๊ฒฐ๊ณผ๋ฌผ์˜ ์ถœํŒ์šฉ์œผ๋กœ ์ ํ•ฉํ•œ ์„œ๋น„์Šค.
  • ON24: ์›จ๋น„๋‚˜(Webinar, ์›น ์„ธ๋ฏธ๋‚˜) ์„œ๋น„์Šค ์‚ฌ์ดํŠธ. Why Slack์—์„œ ์“ฐ๊ธธ๋ž˜ ์ค์ค
  • Firefox Monitor: ๋‹ค๋ฅธ ์‚ฌ์ดํŠธ ๊ฐ€์ž…ํ•  ๋•Œ ์‚ฌ์šฉํ•œ ๋‚ด ๊ณ„์ • ์ •๋ณด๊ฐ€ ํ„ธ๋ ธ๋Š”์ง€ ์•ˆํ„ธ๋ ธ๋Š”์ง€ ์•Œ๋ ค์คŒ
  • evanw: Source Map Visualization: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์†Œ์Šค ๋งต ์‹œ๊ฐํ™” ๋„๊ตฌ #1
  • sokra: source-map-visualization: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์†Œ์Šค ๋งต ์‹œ๊ฐํ™” ๋„๊ตฌ #2
  • Meta Tags: ๋ฉ”ํƒ€ ํƒœ๊ทธ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์‚ฌ์ดํŠธ.
  • โญEmmet: ์˜ˆ์ „ ์ด๋ฆ„์€ Zen Coding. ๋งˆํฌ์—…์ด๋‚˜ CSS ์ฝ”๋“œ๋ฅผ ์งง์€ ๋ฌธ๋ฒ•์„ ํ†ตํ•ด ์ž๋™์œผ๋กœ ํ™•์žฅํ•ด์ฃผ๋Š” ์ฝ”๋“œ ๋‹จ์ถ• ๋„๊ตฌ. ์›ฌ๋งŒํ•œ ํŽธ์ง‘๊ธฐ๋‚˜ IDE์—๋Š” ๊ธฐ๋ณธ์œผ๋กœ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.
  • Advent of Code: ๋งค๋…„ ์ผ์ • ์‹œ๊ฐ„๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ๊ณต๊ฐœ๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํผ์ฆ ์‚ฌ์ดํŠธ. ๋ชจ๋“  ์–ธ์–ด๋กœ ํ’€ ์ˆ˜ ์žˆ์Œ. UI์—์„œํ•ด์ปค๋ƒ„์ƒˆ๊ฐ€๋‚œ๋‹ค

์‹œ์Šคํ…œ ์œ ํ‹ธ๋ฆฌํ‹ฐ

  • โญMicrosoft PowerToys: ์œˆ๋„์šฐ ๊ณ ๊ธ‰ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ชจ์Œ. Color Picker, ํ•ญ์ƒ ์œ„, ๋งˆ์šฐ์Šค ์ฐพ๊ธฐ, PowerToys Run(์œˆ๋„์šฐํŒ Spotlight) ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด ์ค€๋‹ค. ๊ทธ ์ค‘ ๊ฐ€์žฅ ์ฉŒ๋Š”๊ฑด PowerRename(์ด์ œ ํŒŒ์ผ๋ช… ๋ฐ”๊พผ๋‹ค๊ณ  ์ฝ”๋”ฉ ์•ˆํ•ด๋„ ๋จ ๐Ÿฅน)
  • Caffeine: ์›”๊ธ‰๋ฃจํŒก์˜ ํ•„์ˆ˜ํ’ˆ PC๊ฐ€ ์ ˆ์ „ ๋ชจ๋“œ ํ˜น์€ ํ™”๋ฉด ๋ณดํ˜ธ๊ธฐ ๋ชจ๋“œ๋กœ ๋ฐ”๋€Œ์ง€ ์•Š๊ฒŒ ํ•ด์ฃผ๋Š” ์•ฑ. ๊ฐœ๋ฐœ์‚ฌ๋Š” Zhorn Software.
  • RunCat: CPU ์‚ฌ์šฉ๋Ÿ‰์ด ๋†’์„ ์ˆ˜๋ก ๋‹ค๋ฆฌ๊ฐ€ ๋นจ๋ผ์ง€๋Š” ๊ณ ์–‘์ด. ํŠธ๋ ˆ์ด์— ๊ฑฐ์ฃผํ•จ.
  • ์Šคํ…”๋ผ๋ฆฌ์›€: ์Šคํ…”๋ผ๋ฅจ. ์˜คํ”ˆ ์†Œ์Šค ์ฒœ์ฒด ํˆฌ์˜๊ด€
  • SoundSwitch: ์˜ค๋””์˜ค ์žฅ์น˜๊ฐ€ ๋‘˜ ์ด์ƒ์ผ ๋•Œ ์ถœ๋ ฅ ์„ ํƒ์„ ๋‹จ์ถ•ํ‚ค๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Œ
  • Meld: ์œˆ๋„์šฐ ์šฉ GUI diff ์•ฑ. ํŒŒ์ผ ๋น„๊ต ํ›„ ๋จธ์ง€๊นŒ์ง€ ํ•  ์ˆ˜ ์žˆ๊ณ  3-way merge๋„ ๊ฐ€๋Šฅ. macOS๋Š” ์•„์ง ์ง€์› ์•ˆํ•จ.
  • FFmpeg: CLI ๋ฐฉ์‹์˜ ๋™์˜์ƒ ๋ณ€ํ™˜/ํŽธ์ง‘ ๋„๊ตฌ. ๋‹ˆ์ฝœ๋ผ์Šค ์œ ํŠœ๋ธŒ | FFmpeg ์†Œ๊ฐœ ์˜์ƒ
  • CPU-Z: ์„ค์น˜๋œ ์ปดํ“จํ„ฐ์˜ ํ•˜๋“œ์›จ์–ด ์ŠคํŽ™ ์กฐํšŒ ์œ ํ‹ธ๋ฆฌํ‹ฐ. ์นฉ์…‹, ์บ์‹œ, ๋ฉ”์ธ๋ณด๋“œ, ๋ฉ”๋ชจ๋ฆฌ, ๊ทธ๋ž˜ํ”ฝ์นด๋“œ์˜ ๋ชจ๋ธ๋ช…๊ณผ ์ŠคํŽ™์ด ํ‘œ์‹œ๋จ.
  • HWMonitor: ํ•˜๋“œ์›จ์–ด ๋ชจ๋‹ˆํ„ฐ๋ง ์œ ํ‹ธ๋ฆฌํ‹ฐ. ์ฟจ๋ง ํŒฌ ์†๋„, ์‚ฌ์šฉ ์ „์••, ์˜จ๋„ ๋“ฑ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ณด์—ฌ ์คŒ.
  • OCCT: ์˜ค๋ฒ„ํด๋Ÿญ ํ…Œ์ŠคํŠธ์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ณผ๋ถ€ํ•˜ ์•ฑ์ธ๋ฐ, ๋ฐด์น˜๋งˆํ‚น, ๋ชจ๋‹ˆํ„ฐ๋ง, ์•ˆ์ •์„ฑ ํ…Œ์ŠคํŠธ, ์‹œ์Šคํ…œ ์ •๋ณด ํ™•์ธ ๋“ฑ์˜ ๊ธฐ๋Šฅ๋„ ์ œ๊ณตํ•œ๋‹ค.
  • ํ•œ๊ตญํ‘œ์ค€๊ณผํ•™์—ฐ๊ตฌ์›: ํ‘œ์ค€์‹œ๊ฐ ๋งž์ถ”๊ธฐ: ํ•œ๊ตญํ‘œ์ค€๊ณผํ•™์—ฐ๊ตฌ์›์—์„œ ์ œ๊ณตํ•˜๋Š” ํ˜„์žฌ ์‹œ๊ฐ„ ๋ฐ ์„ธ๊ณ„ ์‹œ๊ฐ„ ํ™•์ธ/๋™๊ธฐํ™” ์œ ํ‹ธ๋ฆฌํ‹ฐ. ์„ค์น˜ํ˜•์ด๊ณ  ์•ฑ ์ด๋ฆ„์€ UTCk, ํ˜„์žฌ(2023-08-09) ๋ฒ„์ „์€ 3.1
  • Revo Uninstaller: ์•ฑ์„ ์‚ญ์ œํ•  ๋•Œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๊ฐ™์€ ์ผ์ข…์˜ ์ฐŒ๊บผ๊ธฐ(?)๋„ ์™„์ „ํžˆ ์‚ญ์ œํ•ด ์ค€๋‹ค๋Š” ์–ธ์ธ์Šคํ†จ๋Ÿฌ. ์ƒ์šฉ์ธ Pro ๋ฒ„์ „์ด ๋”ฐ๋กœ ์žˆ์Œ.
  • ๊ตฌ๋ผ์ œ๊ฑฐ๊ธฐ: ์•…์„ฑ ์ฝ”๋“œ ์ œ๊ฑฐ ๋„๊ตฌ

๋งคํฌ๋กœ, ํ‚ค ๋งคํ•‘

  • autohotkey: ์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑํ•˜๋Š” ๋งคํฌ๋กœ
  • joytokey: ๊ฒŒ์ž„ํŒจ๋“œ-ํ‚ค๋ณด๋“œ(์™€ ๋งˆ์šฐ์Šค) ๋งคํ•‘ ์•ฑ
  • REWASD: ๊ฒŒ์ž„ํŒจ๋“œ-ํ‚ค๋ณด๋“œ(์™€ ๋งˆ์šฐ์Šค) ๋งคํ•‘ ์•ฑ. ๋งคํฌ๋กœ์™€ ํ„ฐ๋ณด ๊ธฐ๋Šฅ์€ ์œ ๋ฃŒ๋‹ค.

๋ฏธ๋””์–ด ํ”Œ๋ ˆ์ด์–ด

  • VLC media player: ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์— ์ถฉ์‹คํ•œ ๋ฏธ๋””์–ด ํ”Œ๋ ˆ์ด์–ด

๋ฏธ๋””์–ด ํŽธ์ง‘

  • โญpaint.net: ์ด๋ฏธ์ง€ ํŽธ์ง‘๊ธฐ. ์ข‹์Œ
  • Audacity: ๊ฐ„๋‹จํ•œ ์Œ์› ํŽธ์ง‘๊ธฐ
  • PDF2JPG: PDF๋ฅผ JPG๋กœ ๋ณ€ํ™˜
  • Segment Anything: AI๋กœ ๋งŒ๋“  ์ž๋™ ๋ˆ„๋ผ(?) ์•ฑ์ด๋ผ๋Š”๋ฐ ์•„์ง ์•ˆ ์จ๋ด„. ์ผ๋‹จ ๊นƒํ—ˆ๋ธŒ ์„ค๋ช…์„ ๋ณด๋ฉด ํŒŒ์ด์ฌ์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ๋ชจ์–‘
  • OpenCut: ์˜คํ”ˆ ์†Œ์Šค ์˜์ƒ ํŽธ์ง‘๊ธฐ. ๋ฆฌ์•กํŠธ ๊ธฐ๋ฐ˜์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋ฉฐ ์†Œ์Šค๋ฅผ ๋ฐ›์•„ ๋กœ์ปฌ ์„œ๋ฒ„๋ฅผ ๋„์›Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

์›๊ฒฉ ์—ฐ๊ฒฐ

21. ๋ธŒ๋ผ์šฐ์ €, ํ”Œ๋Ÿฌ๊ทธ์ธ

๋ธŒ๋ผ์šฐ์ €

  • Firefox: ๋ถˆ์—ฌ์‹œ ๋ธŒ๋ผ์šฐ์ €. ๊ฐœ๋ฐœ์ž์šฉ ๋ถˆ์—ฌ์‹œ๋Š” ์—ฌ๊ธฐ๋กœ. about:config์—์„œ browser.uidensity๋ฅผ 1๋กœ ํ•ด๋ณผ ๊ฒƒ
  • DuckDuckGo browser
  • Brave: ํ”„๋ผ์ด๋ฒ„์‹œ์™€ ์„ฑ๋Šฅ์— ์ค‘์ ์„ ๋‘” ํฌ๋กœ๋ฏธ์›€ ๊ธฐ๋ฐ˜ ๋ธŒ๋ผ์šฐ์ € #1
  • Ladybird: ๋‹ค๋ฅธ ๋ธŒ๋ผ์šฐ์ €์˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋…๋ฆฝ์ ์ธ ์›น ๋ธŒ๋ผ์šฐ์ € ๊ฒธ ์—”์ง„. 2026๋…„ ์—ฌ๋ฆ„ ์ •์‹ ์ถœ์‹œ ์˜ˆ์ •
  • Nyxt: ํ•ด์ปค์šฉ ๋ธŒ๋ผ์šฐ์ €(?). ๊ณ ๊ธ‰ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ๋ธŒ๋ผ์šฐ์ €๋กœ, ํ‚ค๋ณด๋“œ ํƒ์ƒ‰, ์ ํ”„ ํ—ค๋”ฉ, ์‰ฌ์šด ํƒญ ๊ด€๋ฆฌ, ๋ช…๋ น ํผ์ง€ ๊ฒ€์ƒ‰, ๋‚ด์žฅ REPL, ์Šค๋งˆํŠธ ๋ถ๋งˆํฌ ๊ฒ€์ƒ‰, ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ€๋Šฅํ•œ ์ž๋™ ์™„์„ฑ, ํด๋ฆฝ๋ณด๋“œ ๊ธฐ๋ก, ํŠธ๋ฆฌ ๊ธฐ๋ฐ˜์˜ ๋ฐฉ๋ฌธ ํŽ˜์ด์ง€ ๊ธฐ๋ก ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค๊ณ  ํ•จ. 2024-12-09 ๊ธฐ์ค€ ์œˆ๋„์šฐ๋Š” ์•„์ง ๋ฏธ์ง€์›.
  • Chromium: ๊ตฌ๊ธ€์˜ ์˜คํ”ˆ ์†Œ์Šค ์›น ๋ธŒ๋ผ์šฐ์ € ํ”„๋กœ์ ํŠธ. ํฌ๋กฌ์˜ ๊ธฐ๋ฐ˜ ์ฝ”๋“œ์ด๋ฉฐ ์š”์ฆ˜(2023-09-13) ์ ์œ ์œจ ๋†’์€ ๋ธŒ๋ผ์šฐ์ €๋“ค์€ ๋Œ€๋ถ€๋ถ„ Chromiun ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

Firefox ํ”Œ๋Ÿฌ๊ทธ์ธ

  • Mate Translate
  • PocketTube
  • Save webP as PNG or JPEG
  • uBlacklist
  • uBlock Origin

Chrome ํ”Œ๋Ÿฌ๊ทธ์ธ

  • Go Back With Backspace
  • Mate Translate
  • Chrome Remote Desktop

์—ฌ๊ธฐ์— ๊ฐœ๋ฐœ์šฉ ํฌ๋กฌ์ด๋ฉด:

  • CSSViewer
  • JSON Formatter
  • Vue.js devtools
  • Wappalyzer
  • Authenticator(์ธ์ฆ ๋„๊ตฌ)

22. ๊ธฐํƒ€ ์„œ๋น„์Šค

  • stream: ์ฑ„ํŒ… ๊ด€๋ จ ์˜คํ”ˆ ์†Œ์Šค ๊ฐ™์€๋ฐ ๋ญ”์ง€ ์ž˜ ๋ชฒ
  • Sanity: CMS(Content Management System)๋ผ๋Š”๋ฐ ์ด๊ฒŒ ๋ญ˜๊นŒ
  • Apache Tika: ํŒŒ์ผ ์ฝ˜ํ…์ธ ๋ฅผ ๋ถ„์„ํ•ด์ฃผ๋Š” ์ž๋ฐ” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • โญKeystoneJS: ์–ด๋“œ๋ฏผ ํŒจ๋„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•„์š”ํ•œ ๊ด€๋ฆฌ์ž ํ™”๋ฉด์„ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ˜น์€ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ. ๋‹ˆ์ฝœ๋ผ์Šค ์œ ํŠœ๋ธŒ | KeystoneJS ์†Œ๊ฐœ ์˜์ƒ
  • Chosic: ๋น„์Šทํ•œ ๋…ธ๋ž˜ ์ฐพ๊ธฐ ๋“ฑ ๋…ธ๋ž˜ ๊ด€๋ จ ํƒ์ƒ‰ ์„œ๋น„์Šค ์ œ๊ณตํ•˜๋Š” ์‚ฌ์ดํŠธ
  • Everynews: ๋‰ด์Šค๋ ˆํ„ฐ ์„œ๋น„์Šค์ธ ๊ฒƒ ๊ฐ™์€๋ฐโ€ฆ
  • ํ”„๋ฆฌ๋žœ์„œ๋ฅผ ์œ„ํ•œ ๋ฉ”์„ธ์ง€ ํ…œํ”Œ๋ฆฟ ์„œ๋น„์Šค

23. ํ†ต๊ณ„, ๋ถ„์„

  • Worldometer: ์ „ ์„ธ๊ณ„์˜ ๊ฐ์ข… ์ •๋ณด ์‹ค์‹œ๊ฐ„ ์นด์šดํ„ฐ. ์ธ๊ตฌ ์ฆ๊ฐ, ๋‚จ์€ ์„์œ ๋Ÿ‰ ๋“ฑ
  • statcounter: ์ „ ์„ธ๊ณ„ ๋Œ€์ƒ ๋ธŒ๋ผ์šฐ์ €, OS ์ ์œ ์œจ ๋“ฑ์˜ ํ†ต๊ณ„์ž๋ฃŒ ์กฐํšŒ ์‚ฌ์ดํŠธ
  • A/B Testing Significance Calculator: A/B ํ…Œ์ŠคํŠธ ํ†ต๊ณ„์  ์œ ์˜์„ฑ ๊ณ„์‚ฐ๊ธฐ. ์‹ ๋ขฐ๋„๋ฅผ ๊ณ„์‚ฐํ•ด์ฃผ๋Š” ์‚ฌ์ดํŠธ์ธ๊ฐ€๋ณด๋‹ค. ํ†ต๊ณ„์˜ ์‹ ๋ขฐ๊ตฌ๊ฐ„๊ณผ ์‹ ๋ขฐ๋„
  • built with: trends: ์›น/์ธํ„ฐ๋„ท ๊ธฐ์ˆ  ์‚ฌ์šฉ ํŠธ๋žœ๋“œ์™€ ํ†ต๊ณ„ ๋ณด๊ธฐ. ์—ฌ๊ธฐ๋Š” ์›๋ž˜ ํŠน์ • ์‚ฌ์ดํŠธ๊ฐ€ ๋ญ˜๋กœ ๋งŒ๋“ค์–ด์ง„๊ฑด์ง€๋ฅผ ๋ถ„์„ํ•ด์ฃผ๋Š” ์‚ฌ์ดํŠธ์ž„.

24. ๋ฌธ์„œ ์ž‘์„ฑ ๋„๊ตฌ

  • WPS Office: ๋ฌด๋ฃŒ ํ”Œ๋žœ์€ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ๊ณผ 1GB ํด๋ผ์šฐ๋“œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.
  • LibreOffice

Presentation