Base32 ์ธ์ฝ”๋”ฉ/๋””์ฝ”๋”ฉ (๋ฐ”์ด๋„ˆ๋ฆฌ)

100% ํด๋ผ์ด์–ธํŠธ ์ธก ์ฒ˜๋ฆฌ (์„œ๋ฒ„ ์—…๋กœ๋“œ ์—†์Œ). ์„ ํƒ ๊ฐ€๋Šฅํ•œ ์•ŒํŒŒ๋ฒณ(RFC 4648/Base32hex/Crockford), ํŒจ๋”ฉ ์ œ์–ด, ์„ ํƒ์  ์ค„ ๋ฐ”๊ฟˆ ๋ฐ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์ถœ๋ ฅ ํ˜•์‹์œผ๋กœ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ(๋ฐ”์ดํŠธ)์„ Base32 ํ…์ŠคํŠธ๋กœ ์ธ์ฝ”๋”ฉํ•ฉ๋‹ˆ๋‹ค.

Loadingโ€ฆ

์†Œ๊ฐœ Base32 ๋ฐ”์ด๋„ˆ๋ฆฌ ์ธ์ฝ”๋”

์ด ํŽ˜์ด์ง€๋Š” ์ธ์ฝ”๋”ฉ์— ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค: ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜์—ฌ Base32 ํ…์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์•ŒํŒŒ๋ฒณ(RFC 4648, Base32hex ๋˜๋Š” Crockford)์„ ์„ ํƒํ•˜๊ณ , ํŒจ๋”ฉ์„ ์ œ์–ดํ•˜๋ฉฐ, ๋ฌธ์ž ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ์„ค์ •ํ•˜๊ณ , ํ•„์š”์— ๋”ฐ๋ผ ์ถœ๋ ฅ ์ค„์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์ด ํ•„์š”ํ•˜์‹ ๊ฐ€์š”? ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

๊ธฐ๋Šฅ

  • ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ(File/Blob/Uint8Array/ArrayBuffer)์„ Base32 ํ…์ŠคํŠธ๋กœ ์ธ์ฝ”๋”ฉ
  • Base32 ๋ฐฉ์–ธ ์„ ํƒ: RFC 4648 (Base32), RFC 4648 (Base32hex) ๋˜๋Š” Crockford Base32
  • ํŒจ๋”ฉ(=) ์ œ์–ด: ์ž๋™, ํ•ญ์ƒ ํฌํ•จ ๋˜๋Š” ์ƒ๋žต
  • ๋ฌธ์ž ๋Œ€์†Œ๋ฌธ์ž ์ถœ๋ ฅ: ๋Œ€๋ฌธ์ž ๋˜๋Š” ์†Œ๋ฌธ์ž (์ธ์ฝ”๋”ฉ ๋ชจ๋“œ)
  • ์„ ํƒ์  ์ค„ ๋ฐ”๊ฟˆ: 0โ€“120 ์—ด์—์„œ ์ค„ ๋ฐ”๊ฟˆ (0์€ ์ค„ ๋ฐ”๊ฟˆ ๋น„ํ™œ์„ฑํ™”)
  • ์ถœ๋ ฅ ํ˜•์‹ ๋„์šฐ๋ฏธ: ์ค„ ๊ตฌ๋ถ„์ž(LF ๋˜๋Š” CRLF) ๋ฐ ์„ ํƒ์  ์ตœ์ข… ์ค„ ๋ฐ”๊ฟˆ
  • ์ผ๊ด„ ์ธ์ฝ”๋”ฉ์„ ์œ„ํ•œ ๋‹ค์ค‘ ํŒŒ์ผ ๋“œ๋กญ์กด ์›Œํฌํ”Œ๋กœ์šฐ (ํด๋ผ์ด์–ธํŠธ ์ธก)
  • 100% ํด๋ผ์ด์–ธํŠธ ์ธก ์ฒ˜๋ฆฌ (์„œ๋ฒ„ ์—…๋กœ๋“œ ์—†์Œ).

์‚ฌ์šฉ ๋ฐฉ๋ฒ• for base32-binary-encoder

1

ํŒŒ์ผ ๋ถ™์—ฌ๋„ฃ๊ธฐ ๋˜๋Š” ๋“œ๋กญ

ํ•˜๋‚˜ ์ด์ƒ์˜ ํŒŒ์ผ์„ ์—…๋กœ๋“œ ์˜์—ญ์— ๋“œ๋กญํ•˜์„ธ์š”(๋ฐ”์ด๋„ˆ๋ฆฌ ์ž…๋ ฅ). ์ด ์ธ์ฝ”๋”๋Š” ์ผ๋ฐ˜ ํ…์ŠคํŠธ ๋ฌธ์ž์—ด์ด ์•„๋‹Œ ๋ฐ”์ดํŠธ(File/Blob/Uint8Array/ArrayBuffer)๋ฅผ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

2

"์ธ์ฝ”๋”ฉ" ํด๋ฆญ

๋™์ž‘์„ "ํŒŒ์ผ โ†’ Base32 ์ธ์ฝ”๋”ฉ"์œผ๋กœ ์„ค์ •ํ•˜๊ณ , ํ˜•์‹(RFC 4648 / Base32hex / Crockford)์„ ์„ ํƒํ•˜๋ฉฐ, ํ•„์š”์— ๋”ฐ๋ผ ํŒจ๋”ฉ, ๋ฌธ์ž ๋Œ€์†Œ๋ฌธ์ž, ์ค„ ๋ฐ”๊ฟˆ ๋ฐ ์ค„ ๋ฐ”๊ฟˆ ์˜ต์…˜์„ ์กฐ์ •ํ•˜์„ธ์š”.

3

๋ณต์‚ฌ/๋‹ค์šด๋กœ๋“œ

ํŽธ์ง‘๊ธฐ์—์„œ Base32 ์ถœ๋ ฅ์„ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜, ์ธ์ฝ”๋”ฉ๋œ ๊ฒฐ๊ณผ๋ฅผ ํŒŒ์ผ๋กœ ๋‹ค์šด๋กœ๋“œ/๋‚ด๋ณด๋‚ด์„ธ์š” (๋„๊ตฌ UI์—์„œ *.b32.txt์™€ ๊ฐ™์€ ํŒŒ์ผ๋ช…์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).

๊ธฐ์ˆ  ์‚ฌ์–‘

์‹คํ–‰ ๋ชจ๋ธ

๋Ÿฐํƒ€์ž„ ๊ณต๊ฐœ, ์ œ์•ฝ ์‚ฌํ•ญ ๋ฐ ์ด ํŽ˜์ด์ง€ ๋ณ€ํ˜•(์ธ์ฝ”๋”ฉ)์—์„œ ์ธ์ฝ”๋”๊ฐ€ ์ˆ˜๋ฝํ•˜๋Š” ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

์ธก๋ฉด์ƒ์„ธ ๋‚ด์šฉ
๋Ÿฐํƒ€์ž„100% ํด๋ผ์ด์–ธํŠธ ์ธก ์ฒ˜๋ฆฌ (์„œ๋ฒ„ ์—…๋กœ๋“œ ์—†์Œ).
๋ณ€ํ˜• ๋ฒ”์œ„์ธ์ฝ”๋”ฉ ์ „์šฉ (ํŒŒ์ผ/๋ฐ”์ดํŠธ โ†’ Base32 ํ…์ŠคํŠธ)
์ž…๋ ฅ ์œ ํ˜•File/Blob/Uint8Array/ArrayBuffer/TypedArray (๋ฐ”์ด๋„ˆ๋ฆฌ). ์ธ์ฝ”๋”ฉ์—๋Š” ํ…์ŠคํŠธ ๋ฌธ์ž์—ด์ด ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค.
์ถœ๋ ฅ ์œ ํ˜•ํ…์ŠคํŠธ (Base32)
ํ˜•์‹RFC 4648 (Base32), RFC 4648 (Base32hex), Crockford Base32
์„œ์‹ ์ œ์–ดํŒจ๋”ฉ (์ž๋™/ํฌํ•จ/์ƒ๋žต), ๋ฌธ์ž ๋Œ€์†Œ๋ฌธ์ž (๋Œ€๋ฌธ์ž/์†Œ๋ฌธ์ž), ์ค„๋ฐ”๊ฟˆ ๊ธธ์ด (0โ€“120), ์ค„ ๊ตฌ๋ถ„์ž (LF/CRLF), ์ตœ์ข… ์ค„๋ฐ”๊ฟˆ ์‚ฝ์ž…
์ œํ•œ~1โ€“2MB ๋ฌธ์ž; ~25000ms ํƒ€์ž„์•„์›ƒ
๋ณด์กด๋ชจ๋“  ์ฒ˜๋ฆฌ๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋กœ์ปฌ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค (์—…๋กœ๋“œ ์—†์Œ)
๋น„๋ฐ€ ์ •๋ณด๋‚˜ ๊ทœ์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ฒฝ์šฐ, ์ด ํŽ˜์ด์ง€๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋กœ์ปฌ๋กœ ์‹คํ–‰๋˜๋”๋ผ๋„ ์˜คํ”„๋ผ์ธ/๋กœ์ปฌ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ

์ธ์ฝ”๋”๊ฐ€ ์ƒ์„ฑํ•˜๋Š” ๊ฒฐ๊ณผ์˜ ์ตœ์†Œํ•œ์˜ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค. (์ •ํ™•ํ•œ ์ถœ๋ ฅ์€ ์„ ํƒํ•œ ํ˜•์‹, ํŒจ๋”ฉ, ๋Œ€์†Œ๋ฌธ์ž, ์ค„๋ฐ”๊ฟˆ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.)

ํ•ญ๋ชฉ๊ฐ’
์ž…๋ ฅ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ (๋ฐ”์ดํŠธ)
์ž‘์—…ํŒŒ์ผ ์ธ์ฝ”๋”ฉ โ†’ Base32
์ถœ๋ ฅBase32 ํ…์ŠคํŠธ (RFC 4648 / Base32hex / Crockford)
๋™์ผํ•œ ์ž…๋ ฅ ๋ฐ”์ดํŠธ์™€ ์˜ต์…˜์— ๋Œ€ํ•ด Base32 ์ถœ๋ ฅ์€ ๊ฒฐ์ •์ ์ž…๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ ๋ฐ ์˜ˆ์™ธ ์ƒํ™ฉ

์ž…๋ ฅ์ด๋‚˜ ์„ค์ •์ด ์ธ์ฝ”๋”ฉ ์›Œํฌํ”Œ๋กœ์™€ ์ผ์น˜ํ•˜์ง€ ์•Š์„ ๋•Œ ์˜ˆ์ƒ๋˜๋Š” ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

์ฆ์ƒ๊ฐ€๋Šฅํ•œ ์›์ธํ™•์ธ ์‚ฌํ•ญ
์ด ๋„๊ตฌ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ธ์ฝ”๋”ฉํ•ฉ๋‹ˆ๋‹คโ€ฆ ํ…์ŠคํŠธ ๋ฌธ์ž์—ด์ด ์•„๋‹™๋‹ˆ๋‹ค๋ฐ”์ด๋„ˆ๋ฆฌ ์ „์šฉ ์ธ์ฝ”๋”ฉ ์˜์—ญ์— ํ…์ŠคํŠธ๋ฅผ ๋ถ™์—ฌ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹คํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๋Œ€์‹  ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜๊ฑฐ๋‚˜ ๋ฐ”์ดํŠธ๋ฅผ ์ œ๊ณตํ•˜์„ธ์š”
์ง€์›๋˜์ง€ ์•Š๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ์ž…๋ ฅ ์œ ํ˜•์ž…๋ ฅ์ด File/Blob/Uint8Array/ArrayBuffer/TypedArray๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค๋ธŒ๋ผ์šฐ์ €๊ฐ€ File/Blob๋ฅผ ์ œ๊ณตํ•˜๋Š”์ง€ ๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ๋ฐ”์ดํŠธ ๋ฒ„ํผ๋ฅผ ์ „๋‹ฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”
์ž…๋ ฅ์ด ๋„ˆ๋ฌด ํผ (์ตœ๋Œ€ 2MB)ํŒŒ์ผ/๋ฐ”์ดํŠธ๊ฐ€ ๋„๊ตฌ ๋‚ด ์ฒ˜๋ฆฌ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ์ดˆ๊ณผํ–ˆ์Šต๋‹ˆ๋‹ค๋” ์ž‘์€ ์ƒ˜ํ”Œ์„ ์‹œ๋„ํ•˜๊ฑฐ๋‚˜ ์ธ์ฝ”๋”ฉ ์ „์— ํŒŒ์ผ์„ ์ฒญํฌ๋กœ ๋ถ„ํ• ํ•˜์„ธ์š”
์–ด๋Œ‘ํ„ฐ ํ˜ธ์ถœ ์‹œ๊ฐ„ ์ดˆ๊ณผ์ธ์ฝ”๋”ฉ ์ž‘์—…์ด ~25000ms ํƒ€์ž„์•„์›ƒ์„ ์ดˆ๊ณผํ–ˆ์Šต๋‹ˆ๋‹ค์ž…๋ ฅ ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ณ , ์ ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ๋นˆ๋ฒˆํ•œ ์ค„๋ฐ”๊ฟˆ๊ณผ ๊ฐ™์€ ๊ณ ๋น„์šฉ ์„œ์‹์„ ๋น„ํ™œ์„ฑํ™”ํ•˜์„ธ์š”
์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ถœ๋ ฅ ์„œ์‹๋ž˜ํ•‘/ํŒจ๋”ฉ/์ผ€์ด์Šค/์ค„๋ฐ”๊ฟˆ ์˜ต์…˜์ด ํ…์ŠคํŠธ ํ‘œํ˜„์„ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹คํŒจ๋”ฉ ๋ชจ๋“œ, wrapLineLength, ๊ตฌ๋ถ„์ž(LF/CRLF), ์ตœ์ข… ์ค„๋ฐ”๊ฟˆ ์„ค์ •์„ ํ™•์ธํ•˜์„ธ์š”

๋ช…๋ น์ค„ ๋Œ€์•ˆ

์ž๋™ํ™”, ์žฌํ˜„์„ฑ ๋˜๋Š” ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์œ„ํ•ด ํ„ฐ๋ฏธ๋„์ด๋‚˜ CI ํ™˜๊ฒฝ์—์„œ ๋กœ์ปฌ ์‹คํ–‰์„ ์„ ํ˜ธํ•˜์„ธ์š”.

macOS / Linux

ํŒŒ์ผ์„ Base32๋กœ ์ธ์ฝ”๋”ฉ (์‹œ์Šคํ…œ์— base32 ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ํ•„์š”)

base32 < input.bin > output.b32.txt

ํ”Œ๋žซํผ์ด base32 ๋ช…๋ น์–ด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ์šฐ ๋กœ์ปฌ Base32 ์ธ์ฝ”๋”๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค (์ผ๋ฐ˜์ ์œผ๋กœ GNU coreutils์—์„œ ์ œ๊ณต). ๋™์ž‘(ํŒจ๋”ฉ/๋ž˜ํ•‘)์€ ๊ตฌํ˜„์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

Windows (PowerShell)

Base32 ์ธ์ฝ”๋”ฉ์„ ์œ„ํ•ด ๋กœ์ปฌ ์–ธ์–ด/๋Ÿฐํƒ€์ž„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ (๊ถŒ์žฅ)

python -c "import base64,sys; data=open('input.bin','rb').read(); print(base64.b32encode(data).decode('ascii'))"

Python์˜ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” Base32 ์ธ์ฝ”๋”ฉ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ์ถœ๋ ฅ๊ณผ ์ผ์น˜ํ•˜๋„๋ก ์Šคํฌ๋ฆฝํŠธ์—์„œ ํ˜•์‹(๋ž˜ํ•‘/์ค„๋ฐ”๊ฟˆ/์ผ€์ด์Šค)์„ ์กฐ์ •ํ•˜์„ธ์š”.

์‚ฌ์šฉ ์‚ฌ๋ก€

๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋กœ ๊ณต์œ 

  • ์ž‘์€ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ธ”๋กญ์„ ์ธ์ฝ”๋”ฉํ•˜์—ฌ ํ‹ฐ์ผ“, ์ฑ„ํŒ… ๋˜๋Š” ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์— ๋ถ™์—ฌ๋„ฃ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•จ
  • Aโ€“Z/2โ€“7(RFC 4648)๋กœ ์ž…๋ ฅ์„ ์ œํ•œํ•˜๋Š” ์‹œ์Šคํ…œ์„ ์œ„ํ•œ Base32 ํ‘œํ˜„ ์ƒ์„ฑ

Base32 ๋ฐฉ์–ธ ๊ฐ„ ์ƒํ˜ธ ์šด์šฉ์„ฑ ํ…Œ์ŠคํŠธ

  • ๋™์ผํ•œ ํŒŒ์ผ์— ๋Œ€ํ•œ RFC 4648 vs Base32hex vs Crockford ์ถœ๋ ฅ ๋น„๊ต
  • ํŒ€์›๋“ค์ด ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป๋„๋ก ํŒจ๋”ฉ ๋ฐ ์ผ€์ด์Šค ๊ทœ์น™ ํ‘œ์ค€ํ™”

CI ์นœํ™”์ ์ธ ํ”ฝ์Šค์ฒ˜ ๋ฐ ๊ณจ๋“  ์ถœ๋ ฅ

  • ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ๊ฒฐ์ •๋ก ์  Base32 ํ”ฝ์Šค์ฒ˜ ์ƒ์„ฑ
  • ํ”Œ๋žซํผ ๊ฐ„ ์ฐจ์ด๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๋ž˜ํ•‘ ๋ฐ ์ค„๋ฐ”๊ฟˆ ๋™์ž‘ ๊ณ ์ •

์„ฑ๋Šฅ ๋ฐ ํฌ๊ธฐ ์ ์ •์„ฑ ๊ฒ€์‚ฌ

  • ์ž‘์€ ํŒŒ์ผ ์ƒ˜ํ”Œ์— ๋Œ€ํ•œ Base32 ํ™•์žฅ ๋น ๋ฅธ ์ถ”์ •
  • ์ค„ ๋ž˜ํ•‘ ๋ฐ ๊ตฌ๋ถ„์ž๊ฐ€ ๋‹ค์šด์ŠคํŠธ๋ฆผ ํŒŒ์„œ ๊ธฐ๋Œ€์น˜์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ๊ฒ€์ฆ

โ“ Frequently Asked Questions

์ด ์ธ์ฝ”๋”์— ๋Œ€ํ•œ ๊ณต๊ฐœ API๊ฐ€ ์žˆ๋‚˜์š”?

์•„๋‹ˆ์š”. ์ด ํŽ˜์ด์ง€๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ์˜ ๋Œ€ํ™”ํ˜• ์‚ฌ์šฉ์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ ๊ณต๊ฐœ API ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋…ธ์ถœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฒ˜๋ฆฌ๋Š” ๋กœ์ปฌ์ธ๊ฐ€์š” ์›๊ฒฉ์ธ๊ฐ€์š”?

100% ํด๋ผ์ด์–ธํŠธ ์ธก ์ฒ˜๋ฆฌ (์„œ๋ฒ„ ์—…๋กœ๋“œ ์—†์Œ). ๋ชจ๋“  ์ธ์ฝ”๋”ฉ์€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋กœ์ปฌ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋น„๋ฐ€์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ธ์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

์ด ๋„๊ตฌ๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋กœ์ปฌ๋กœ ์‹คํ–‰๋˜์ง€๋งŒ, ํ™˜๊ฒฝ์ด ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ๋งค์šฐ ๋ฏผ๊ฐํ•œ ๋น„๋ฐ€์„ ์–ด๋–ค ์˜จ๋ผ์ธ ํŽ˜์ด์ง€์—๋„ ๋ถ™์—ฌ๋„ฃ๊ฑฐ๋‚˜ ์—…๋กœ๋“œํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฏผ๊ฐํ•œ ์›Œํฌํ”Œ๋กœ์šฐ์˜ ๊ฒฝ์šฐ ๋กœ์ปฌ CLI ๋˜๋Š” ์˜คํ”„๋ผ์ธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

๋„๊ตฌ๊ฐ€ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋Œ€ํ•œ๋‹ค๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

์ด ์ธ์ฝ”๋” ํŽ˜์ด์ง€๋Š” ํŒŒ์ผ/๋ฐ”์ดํŠธ์šฉ์ž…๋‹ˆ๋‹ค. ํ…์ŠคํŠธ ๋ฌธ์ž์—ด์„ ๋ถ™์—ฌ๋„ฃ์œผ๋ฉด ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค. ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๋Œ€์‹  ํŒŒ์ผ์„ ์—…๋กœ๋“œ(๋˜๋Š” ๋ฐ”์ดํŠธ ์ œ๊ณต)ํ•˜์„ธ์š”.

๋‹ค๋ฅธ ๋„๊ตฌ์™€ ์ถœ๋ ฅ ๊ฒฐ๊ณผ(๋Œ€์†Œ๋ฌธ์ž, ํŒจ๋”ฉ, ์ค„๋ฐ”๊ฟˆ)๊ฐ€ ๋‹ค๋ฅธ ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

Base32 ํ…์ŠคํŠธ ํ‘œํ˜„์€ ์˜ต์…˜๊ณผ ๋ฐฉ์–ธ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์„ ํƒ๋œ ํ˜•์‹(RFC 4648/Base32hex/Crockford), ํŒจ๋”ฉ ๋ชจ๋“œ, ๋ฌธ์ž ๋Œ€์†Œ๋ฌธ์ž, ์ค„๋ฐ”๊ฟˆ ๊ธธ์ด, ๊ตฌ๋ถ„์ž(LF vs CRLF), ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰ ์ค„๋ฐ”๊ฟˆ ์ถ”๊ฐ€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

Pro Tips

CI Tip

PR์ด๋‚˜ CI์—์„œ ์•ˆ์ •์ ์ธ diff๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด, ํฌ๋งทํŒ…์„ ๊ณ ์ •ํ•˜์„ธ์š”: ๋‹จ์ผ ๋ฐฉ์–ธ ์„ ํƒ, ํŒจ๋”ฉ ๋ชจ๋“œ ๊ณ ์ •, wrapLineLength ๋ช…์‹œ์  ์„ค์ •, ๋งˆ์ง€๋ง‰ ์ค„๋ฐ”๊ฟˆ ์ถ”๊ฐ€ ์—ฌ๋ถ€ ๊ฒฐ์ •.

Best Practice

์—„๊ฒฉํ•œ ์†Œ๋น„์ž์™€์˜ ์ตœ๋Œ€ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด, ํŒจ๋”ฉ "์ž๋™" ๋˜๋Š” "ํ•ญ์ƒ = ํฌํ•จ"์œผ๋กœ RFC 4648์„ ์‚ฌ์šฉํ•˜๊ณ  ์ถœ๋ ฅ์„ ๋Œ€๋ฌธ์ž๋กœ ์œ ์ง€ํ•˜์„ธ์š”.

Best Practice

๋‹ค์šด์ŠคํŠธ๋ฆผ ํŒŒ์‹ฑ์ด ์ค„๋ฐ”๊ฟˆ์— ๋ฏผ๊ฐํ•˜๋‹ค๋ฉด, ๋Œ€์ƒ ํ”Œ๋žซํผ๊ณผ ์ผ์น˜ํ•˜๋„๋ก ์ค„ ๊ตฌ๋ถ„์ž(LF vs CRLF)๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•˜์„ธ์š”.

Best Practice

๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ, ์ด ๋„๊ตฌ๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์‹คํ–‰๋˜๋”๋ผ๋„, ํŠนํžˆ ๊ณต์œ  ๋จธ์‹ ์ด๋‚˜ ๊ด€๋ฆฌ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ๋กœ์ปฌ CLI/๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‹คํ–‰์„ ์„ ํ˜ธํ•˜์„ธ์š”.

Additional Resources

Other Tools