Skip to content

Latest commit

ย 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŒ™ Markdown Editor

macOS ๋„ค์ดํ‹ฐ๋ธŒ ๋””์ž์ธ์˜ ์‹ค์‹œ๊ฐ„ ๋งˆํฌ๋‹ค์šด ์—๋””ํ„ฐ

License HTML5 CSS3 JavaScript

โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

๐ŸŽจ ์—๋””ํ„ฐ ๊ธฐ๋Šฅ

  • ์‹ค์‹œ๊ฐ„ ๋ฏธ๋ฆฌ๋ณด๊ธฐ: ์ž…๋ ฅ๊ณผ ๋™์‹œ์— ๋งˆํฌ๋‹ค์šด ๋ Œ๋”๋ง
  • ์Šคํฌ๋กค ๋™๊ธฐํ™”: ์ขŒ์šฐ ์ฐฝ ์Šคํฌ๋กค ์—ฐ๋™ (ํ† ๊ธ€ ๊ฐ€๋Šฅ)
  • ๊ณ ์ •ํญ ํฐํŠธ: ๋‚˜๋ˆ”๊ณ ๋”•์ฝ”๋”ฉ์„ ๋‚ด์žฅํ•ด ํ•œ๊ธ€ยท์˜๋ฌธ ํ˜ผ์šฉ ์‹œ์—๋„ ์ •๋ ฌ์ด ํํŠธ๋Ÿฌ์ง€์ง€ ์•Š์Œ (์„ค์น˜ ๋ถˆํ•„์š”)
  • Mermaid ๋‹ค์ด์–ด๊ทธ๋žจ: ```mermaid ์ฝ”๋“œ๋ธ”๋ก์œผ๋กœ ํ”Œ๋กœ์šฐ์ฐจํŠธยท์‹œํ€€์Šคยทํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ ๋“ฑ์„ ๊ทธ๋ฆผ์œผ๋กœ ๋ Œ๋”๋ง (mermaid.min.js ํŒŒ์ผ์ด ๊ฐ™์€ ํด๋”์— ์žˆ์„ ๋•Œ)
  • ์ฐฝ ํฌ๊ธฐ ์กฐ์ ˆ: ๋งˆ์šฐ์Šค ๋“œ๋ž˜๊ทธ๋กœ ์ขŒ์šฐ ๋น„์œจ ์กฐ์ •
  • ์‹ค์‹œ๊ฐ„ ํ†ต๊ณ„: ๋‹จ์–ด/๋ฌธ์ž/์ค„ ์ˆ˜ ์นด์šดํŠธ ๋ฐ ์ปค์„œ ์œ„์น˜ ํ‘œ์‹œ

๐ŸŽญ ํ…Œ๋งˆ & ๋””์ž์ธ

  • ๋‹คํฌ/๋ผ์ดํŠธ ๋ชจ๋“œ: ์›ํด๋ฆญ ํ…Œ๋งˆ ํ† ๊ธ€ (โŒ˜+D)
  • macOS ๋„ค์ดํ‹ฐ๋ธŒ ๋””์ž์ธ: Traffic Light ๋ฒ„ํŠผ, ๋„ค์ดํ‹ฐ๋ธŒ ์ƒ‰์ƒ ํŒ”๋ ˆํŠธ
  • ๋ฐ˜์‘ํ˜• ๋””์ž์ธ: ๋ชจ๋ฐ”์ผ/ํƒœ๋ธ”๋ฆฟ ์ตœ์ ํ™”
  • ๋ถ€๋“œ๋Ÿฌ์šด ์• ๋‹ˆ๋ฉ”์ด์…˜: ๋ชจ๋“  ์ƒํ˜ธ์ž‘์šฉ์— ์ž์—ฐ์Šค๋Ÿฌ์šด ์ „ํ™˜ ํšจ๊ณผ

๐Ÿ“ ํŒŒ์ผ ๊ด€๋ฆฌ

  • ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ: ๋งˆํฌ๋‹ค์šด ํŒŒ์ผ์„ ์ฐฝ์— ๋Œ์–ด๋‹ค ๋†“๊ธฐ
  • ํŒŒ์ผ ์ €์žฅ: ๋งˆํฌ๋‹ค์šด(.md) ํ˜•์‹์œผ๋กœ ์ €์žฅ
  • PDF ๋‚ด๋ณด๋‚ด๊ธฐ: ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ PDF๋กœ ์ €์žฅ (โŒ˜+P)
  • ์ง€์› ํ˜•์‹: .md, .markdown, .txt
  • ๋ฏธ์ €์žฅ ๋ณ€๊ฒฝ์‚ฌํ•ญ ํ™•์ธ: ์ €์žฅํ•˜์ง€ ์•Š์€ ๋‚ด์šฉ์ด ์žˆ๋Š” ์ƒํƒœ์—์„œ ์ƒˆ ํŒŒ์ผ ๋งŒ๋“ค๊ธฐยท๋‹ค๋ฅธ ํŒŒ์ผ ์—ด๊ธฐ(๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ํฌํ•จ)ยทํƒญ ๋‹ซ๊ธฐ/์ƒˆ๋กœ๊ณ ์นจ ์‹œ ํ™•์ธ์ฐฝ ํ‘œ์‹œ

โŒจ๏ธ ํ‚ค๋ณด๋“œ ๋‹จ์ถ•ํ‚ค

๊ธฐ๋Šฅ macOS Windows/Linux
์ƒˆ ํŒŒ์ผ โŒ˜+N Ctrl+N
ํŒŒ์ผ ์—ด๊ธฐ โŒ˜+O Ctrl+O
ํŒŒ์ผ ์ €์žฅ โŒ˜+S Ctrl+S
PDF ์ €์žฅ โŒ˜+P Ctrl+P
ํ…Œ๋งˆ ํ† ๊ธ€ โŒ˜+D Ctrl+D
๊ตต๊ฒŒ โŒ˜+B Ctrl+B
๊ธฐ์šธ์ž„ โŒ˜+I Ctrl+I

๐Ÿš€ ์‹œ์ž‘ํ•˜๊ธฐ

๐Ÿ“‹ ํ•„์š” ์กฐ๊ฑด

  • ๋ชจ๋˜ ์›น๋ธŒ๋ผ์šฐ์ € (Chrome 88+, Firefox 85+, Safari 14+, Edge 88+)
  • JavaScript ํ™œ์„ฑํ™”

๐Ÿ’พ ์„ค์น˜ ๋ฐฉ๋ฒ•

๊ตฌ์„ฑ ํŒŒ์ผ: md-editor.html(์—๋””ํ„ฐ ๋ณธ์ฒด)๊ณผ mermaid.min.js(๋‹ค์ด์–ด๊ทธ๋žจ ๋ Œ๋”๋ง, MIT ๋ผ์ด์„ ์Šค)๋ฅผ ๊ฐ™์€ ํด๋”์— ๋‘์„ธ์š”. mermaid.min.js๊ฐ€ ์—†์–ด๋„ ์—๋””ํ„ฐ ์ž์ฒด๋Š” ์ •์ƒ ๋™์ž‘ํ•˜๋ฉฐ, ```mermaid ์ฝ”๋“œ๋ธ”๋ก๋งŒ ๊ทธ๋ฆผ ๋Œ€์‹  ์›๋ณธ ํ…์ŠคํŠธ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  1. ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ

    # Git์œผ๋กœ ํด๋ก 
    git clone https://github.com/your-repo/markdown-editor.git
    cd markdown-editor
    
    # ๋˜๋Š” ์ง์ ‘ ๋‹ค์šด๋กœ๋“œ
    wget https://your-domain.com/markdown-editor.html
    wget https://your-domain.com/mermaid.min.js
  2. ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰

    # ๋กœ์ปฌ ์„œ๋ฒ„ ์‹คํ–‰ (๊ถŒ์žฅ)
    python -m http.server 8000
    # ๋˜๋Š”
    npx serve .
    
    # ๋ธŒ๋ผ์šฐ์ €์—์„œ http://localhost:8000 ์ ‘์†
  3. ์ง์ ‘ ์‹คํ–‰

    • md-editor.html ํŒŒ์ผ์„ ๋”๋ธ”ํด๋ฆญํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์—ด๊ธฐ (mermaid.min.js๊ฐ€ ๊ฐ™์€ ํด๋”์— ์žˆ์–ด์•ผ ๋‹ค์ด์–ด๊ทธ๋žจ์ด ๋ Œ๋”๋ง๋จ)

๐Ÿ“– ์‚ฌ์šฉ๋ฒ•

1๏ธโƒฃ ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

  1. ์ขŒ์ธก ์—๋””ํ„ฐ์— ๋งˆํฌ๋‹ค์šด ํ…์ŠคํŠธ ์ž…๋ ฅ
  2. ์šฐ์ธก์—์„œ ์‹ค์‹œ๊ฐ„ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํ™•์ธ

2๏ธโƒฃ ํŒŒ์ผ ์ž‘์—…

# ์ƒˆ ํŒŒ์ผ ์ƒ์„ฑ
โŒ˜+N ๋˜๋Š” "์ƒˆ ํŒŒ์ผ" ๋ฒ„ํŠผ ํด๋ฆญ

# ํŒŒ์ผ ์—ด๊ธฐ
โŒ˜+O ๋˜๋Š” "์—ด๊ธฐ" ๋ฒ„ํŠผ ํด๋ฆญ
๋˜๋Š” ํŒŒ์ผ์„ ์ฐฝ์— ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ

# ํŒŒ์ผ ์ €์žฅ
โŒ˜+S ๋˜๋Š” "์ €์žฅ" ๋ฒ„ํŠผ ํด๋ฆญ

# PDF ์ €์žฅ
โŒ˜+P ๋˜๋Š” "PDF ์ €์žฅ" ๋ฒ„ํŠผ ํด๋ฆญ

3๏ธโƒฃ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ

  • ์Šคํฌ๋กค ๋™๊ธฐํ™”: ๐Ÿ”— ๋ฒ„ํŠผ์œผ๋กœ ํ™œ์„ฑํ™”/๋น„ํ™œ์„ฑํ™”
  • ์ฐฝ ๋ถ„ํ•  ์กฐ์ •: ์ค‘์•™ ๊ตฌ๋ถ„์„ ์„ ๋“œ๋ž˜๊ทธํ•˜์—ฌ ์ขŒ์šฐ ๋น„์œจ ์กฐ์ • (๋ชจ๋ฐ”์ผ์—์„œ๋Š” ํ„ฐ์น˜ ๋“œ๋ž˜๊ทธ๋„ ์ง€์›)

๐ŸŽจ ํฐํŠธ

๋ฏธ๋ฆฌ๋ณด๊ธฐ ํฐํŠธ๋Š” ๋‚˜๋ˆ”๊ณ ๋”•์ฝ”๋”ฉ(SIL Open Font License 1.1) ํ•˜๋‚˜๋กœ ๊ณ ์ •๋˜์–ด ์žˆ์œผ๋ฉฐ, WOFF2๋กœ ๋ณ€ํ™˜ํ•ด md-editor.html์— base64๋กœ ์ง์ ‘ ๋‚ด์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณผ๊ฑฐ์—๋Š” 10์ข… ์ค‘ ์›ํ•˜๋Š” ํฐํŠธ๋ฅผ ๊ณ ๋ฅผ ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„์˜ ๋ผํ‹ด ์ „์šฉ monospace ํฐํŠธ(JetBrains Mono ๋“ฑ)๋Š” ํ•œ๊ธ€ ๊ธ€๋ฆฌํ”„๊ฐ€ ์—†์–ด ํ•œ๊ธ€์ด ์„ž์ธ ์ค„์—์„œ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ค๋ฅธ ํฐํŠธ๋กœ ๊ทธ ๊ธ€์ž๋งŒ ์กฐ์šฉํžˆ ๋Œ€์ฒดํ•ด ๊ทธ๋ฆฌ๊ณ , ๋‘ ํฐํŠธ์˜ ๊ธ€์ž ํญ ๋น„์œจ์ด ๋‹ฌ๋ผ ์ •๋ ฌ์ด ์–ด๊ธ‹๋‚˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์„ ํƒ์ง€๋ฅผ ์—†์• ๊ณ  ํ•œ๊ธ€ยท์˜๋ฌธ์„ ์ž์ฒด ๋น„์œจ๋กœ ์ผ๊ด€๋˜๊ฒŒ ๊ทธ๋ฆฌ๋Š” ํฐํŠธ ํ•˜๋‚˜๋กœ ๊ณ ์ •ํ•ด ์ด ๋ฌธ์ œ๋ฅผ ๊ทผ๋ณธ์ ์œผ๋กœ ์—†์•ด๊ณ , ์‹œ์Šคํ…œ์— ๋‚˜๋ˆ”๊ณ ๋”•์ฝ”๋”ฉ์ด ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š์•„๋„ ํ•ญ์ƒ ๋™์ผํ•˜๊ฒŒ ๋ Œ๋”๋ง๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“ ๋ฐ•์Šค ๋“œ๋กœ์ž‰ ๋ฌธ์ž(โ”€โ”‚โ”Œโ”โ””โ”˜ ๋“ฑ) ์ •๋ ฌ

๋‚˜๋ˆ”๊ณ ๋”•์ฝ”๋”ฉ์€ ๋ฐ•์Šค ๋“œ๋กœ์ž‰ ๋ฌธ์ž(U+2500~257F)๋ฅผ ๋ฐ˜๊ฐ์ด ์•„๋‹Œ ์ „๊ฐ์œผ๋กœ ๊ทธ๋ฆฌ๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ์–ด, ์—๋””ํ„ฐ(๋ฐ˜๊ฐ)์™€ ํ”„๋ฆฌ๋ทฐ(์ „๊ฐ)์—์„œ ํญ์ด ๋‹ฌ๋ผ ํ‘œ(ASCII ๋‹ค์ด์–ด๊ทธ๋žจ) ์ •๋ ฌ์ด ๊นจ์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๊ฐ™์€ font-family: 'Nanum Gothic Coding' ์ด๋ฆ„์œผ๋กœ unicode-range: U+2500-257F๋งŒ ์ง€์ •ํ•œ @font-face๋ฅผ ํ•˜๋‚˜ ๋” ์ถ”๊ฐ€ํ•ด, ์ด ๋ฒ”์œ„์˜ ๋ฌธ์ž๋งŒ Sarasa Mono K(SIL Open Font License 1.1)์—์„œ ๋ฐ˜๊ฐ์œผ๋กœ ์„œ๋ธŒ์…‹(์•ฝ 2KB)ํ•ด ์˜ค๋ฒ„๋ผ์ด๋“œํ•ฉ๋‹ˆ๋‹ค. ๋‘ ํฐํŠธ ๋ชจ๋‘ unitsPerEm=1000, ๋ฐ˜๊ฐ ๋ฌธ์ž advance width๊ฐ€ 500์œผ๋กœ ๋™์ผํ•ด์„œ ๋ณ„๋„ ํฌ๊ธฐ ๋ณด์ • ์—†์ด ๊ฒฉ์ž๊ฐ€ ์ •ํ™•ํžˆ ๋งž์Šต๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ฌธ์ž ๋‹จ์œ„๋กœ ์•Œ๋งž์€ @font-face๋ฅผ ์ž๋™ ์„ ํƒํ•˜๋ฏ€๋กœ, ํ•œ๊ธ€ยท์˜๋ฌธยท๋ฐ•์Šค๋ฌธ์ž๊ฐ€ ํ•œ ์ค„(์ฝ”๋“œ๋ธ”๋ก ํฌํ•จ)์— ์„ž์—ฌ๋„ ํ•ญ์ƒ ์ •๋ ฌ์ด ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“Š Mermaid ๋‹ค์ด์–ด๊ทธ๋žจ

```mermaid ์ฝ”๋“œ๋ธ”๋ก ์•ˆ์— Mermaid ๋ฌธ๋ฒ•์œผ๋กœ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ฉด ๊ทธ๋ฆผ์œผ๋กœ ๋ Œ๋”๋ง๋ฉ๋‹ˆ๋‹ค.

```mermaid
graph TD
  A[์‹œ์ž‘] --> B{์กฐ๊ฑด}
  B -->|์˜ˆ| C[์ฒ˜๋ฆฌ1]
  B -->|์•„๋‹ˆ์˜ค| D[์ฒ˜๋ฆฌ2]
```
  • ๋™์ž‘ ๋ฐฉ์‹: md-editor.html๊ณผ ๊ฐ™์€ ํด๋”์˜ mermaid.min.js(๋กœ์ปฌ ํŒŒ์ผ, MIT ๋ผ์ด์„ ์Šค, ์•ฝ 3.4MB)๋ฅผ <script src="mermaid.min.js">๋กœ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค. CDN์„ ์“ฐ์ง€ ์•Š์œผ๋ฏ€๋กœ ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ ์—†์ด๋„ ๋™์ž‘ํ•˜์ง€๋งŒ, ๋‹จ์ผ HTML ํŒŒ์ผ์ด ์•„๋‹ˆ๋ผ ๋‘ ํŒŒ์ผ์„ ํ•จ๊ป˜ ๋ฐฐํฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์„ ํƒ์  ๊ธฐ๋Šฅ: mermaid.min.js๊ฐ€ ์—†๊ฑฐ๋‚˜ ๋กœ๋“œ์— ์‹คํŒจํ•ด๋„ ์—๋””ํ„ฐ์˜ ๋‚˜๋จธ์ง€ ๊ธฐ๋Šฅ์€ ๊ทธ๋Œ€๋กœ ๋™์ž‘ํ•˜๋ฉฐ, ```mermaid ๋ธ”๋ก์€ ๊ทธ๋ฆผ ๋Œ€์‹  ์›๋ณธ ํ…์ŠคํŠธ๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค(์—๋Ÿฌ ์—†์Œ).
  • ์‹ค์‹œ๊ฐ„ ๋ Œ๋”๋ง: ํƒ€์ดํ•‘์„ ๋ฉˆ์ถ˜ ๋’ค ์•ฝ 0.4์ดˆ ํ›„ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ๋‹ค์‹œ ๊ทธ๋ฆฝ๋‹ˆ๋‹ค(๋งค ํ‚ค ์ž…๋ ฅ๋งˆ๋‹ค ๋‹ค์‹œ ๊ทธ๋ฆฌ๋ฉด ๋ฏธ์™„์„ฑ ๊ตฌ๋ฌธ ๋•Œ๋ฌธ์— ๊ณ„์† ์—๋Ÿฌ๊ฐ€ ๋œจ๊ณ  ์„ฑ๋Šฅ๋„ ๋‚ญ๋น„๋˜๊ธฐ ๋•Œ๋ฌธ).
  • ํ…Œ๋งˆ ์—ฐ๋™: ๋‹คํฌ/๋ผ์ดํŠธ ๋ชจ๋“œ ์ „ํ™˜ ์‹œ ๋‹ค์ด์–ด๊ทธ๋žจ ๋ฐฐ์ƒ‰๋„ ํ•จ๊ป˜ ๋ฐ”๋€๋‹ˆ๋‹ค.
  • ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ: ๋‹ค์ด์–ด๊ทธ๋žจ ๋ฌธ๋ฒ•์ด ์ž˜๋ชป๋˜๋ฉด Mermaid ์ž์ฒด ์˜ค๋ฅ˜ ํ‘œ์‹œ๋งŒ ๋‚˜ํƒ€๋‚˜๊ณ , ๋‚˜๋จธ์ง€ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋‚ด์šฉ์—๋Š” ์˜ํ–ฅ์ด ์—†์Šต๋‹ˆ๋‹ค.
  • ๋ณด์•ˆ: securityLevel: 'strict'๋กœ ์ดˆ๊ธฐํ™”ํ•ด ๋‹ค์ด์–ด๊ทธ๋žจ ํ…์ŠคํŠธ์— ์Šคํฌ๋ฆฝํŠธ๋‚˜ ํด๋ฆญ ์ด๋ฒคํŠธ๊ฐ€ ์„ž์—ฌ ์žˆ์–ด๋„ ๋ฌด์‹œํ•˜๋„๋ก ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์Šคํƒ

๐Ÿ—๏ธ ์•„ํ‚คํ…์ฒ˜

๐Ÿ“ฆ Markdown Editor
โ”œโ”€โ”€ ๐ŸŽจ Frontend (HTML5/CSS3/JavaScript)
โ”œโ”€โ”€ ๐Ÿ“š ๋งˆํฌ๋‹ค์šด ํŒŒ์‹ฑ์€ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—†์Œ (์ž์ฒด ํŒŒ์„œ, ์™„์ „ ์˜คํ”„๋ผ์ธ ๋™์ž‘)
โ”œโ”€โ”€ ๐Ÿ”ค ๋‚˜๋ˆ”๊ณ ๋”•์ฝ”๋”ฉ ๋‚ด์žฅ + Sarasa Mono K ๋ฐ•์Šค๋ฌธ์ž ์˜ค๋ฒ„๋ผ์ด๋“œ (ํ•œ๊ธ€ยท์˜๋ฌธยท๋ฐ•์Šค๋ฌธ์ž ์ •๋ ฌ ๋ณด์žฅ)
โ”œโ”€โ”€ ๐Ÿ“Š mermaid.min.js (์„ ํƒ์  ๋กœ์ปฌ ํŒŒ์ผ, ๊ฐ™์€ ํด๋”์— ์žˆ์œผ๋ฉด ๋‹ค์ด์–ด๊ทธ๋žจ ๋ Œ๋”๋ง)
โ”œโ”€โ”€ ๐Ÿ’พ ์ €์žฅ์†Œ (localStorage ์šฐ์„ , ์ ‘๊ทผ ๋ถˆ๊ฐ€ ์‹œ ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜ ์ž๋™ ํด๋ฐฑ)
โ””โ”€โ”€ ๐ŸŽฏ API (File, Print)

๐Ÿ’ก ํ•ต์‹ฌ ๊ธฐ์ˆ 

  • ๋ฐ”๋‹๋ผ JavaScript: ํ”„๋ ˆ์ž„์›Œํฌ ์—†๋Š” ์ˆœ์ˆ˜ JS, ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ ์˜์กด์„ฑ ์—†์Œ
  • ์ž์ฒด ๋งˆํฌ๋‹ค์šด ํŒŒ์„œ: ์ž…๋ ฅ์„ ์šฐ์„  HTML ์ด์Šค์ผ€์ดํ”„ํ•œ ๋’ค ์ธ์‹๋œ ๋ฌธ๋ฒ•๋งŒ ์•ˆ์ „ํ•œ ํƒœ๊ทธ๋กœ ๋ณ€ํ™˜(XSS ๋ฐฉ์ง€), CDN ์—†์ด ์˜คํ”„๋ผ์ธ์—์„œ๋„ ํ•ญ์ƒ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘
  • ๋‚ด์žฅ ์›นํฐํŠธ: ํ•œ๊ธ€ยท์˜๋ฌธ ํ˜ผ์šฉ ์‹œ์—๋„ ์ •๋ ฌ์ด ๊นจ์ง€์ง€ ์•Š๋Š” ๋‚˜๋ˆ”๊ณ ๋”•์ฝ”๋”ฉ์„ WOFF2(base64)๋กœ ๋‚ด์žฅํ•ด, ์‹œ์Šคํ…œ ํฐํŠธ ์„ค์น˜ ์—ฌ๋ถ€์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ์–ด๋””์„œ๋‚˜ ๋™์ผํ•˜๊ฒŒ ๋ Œ๋”๋ง
  • Mermaid ๋‹ค์ด์–ด๊ทธ๋žจ: ๋กœ์ปฌ mermaid.min.js๋ฅผ ๋ถˆ๋Ÿฌ์™€ ๋””๋ฐ”์šด์Šค๋œ ๋ Œ๋”๋ง, ํ…Œ๋งˆ ์—ฐ๋™, ์˜ค๋ฅ˜ ๊ฒฉ๋ฆฌ(๋‹ค์ด์–ด๊ทธ๋žจ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋จธ์ง€ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์— ์˜ํ–ฅ ์—†์Œ)๊นŒ์ง€ ์ฒ˜๋ฆฌ
  • CSS ๋ณ€์ˆ˜: ํ…Œ๋งˆ ์‹œ์Šคํ…œ ๊ตฌํ˜„
  • CSS Grid/Flexbox: ๋ฐ˜์‘ํ˜• ๋ ˆ์ด์•„์›ƒ
  • File API: ํŒŒ์ผ ์ฝ๊ธฐ/์ €์žฅ
  • Print API: PDF ์ €์žฅ
  • localStorage ๋Œ€์ฒด: ์ ‘๊ทผ ๋ถˆ๊ฐ€ ์‹œ(์ƒŒ๋“œ๋ฐ•์Šค, ํ”„๋ผ์ด๋น— ๋ธŒ๋ผ์šฐ์ง• ๋“ฑ) ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜ ์„ค์ • ์ €์žฅ์†Œ๋กœ ์ž๋™ ์ „ํ™˜

๐Ÿ”ง ์ตœ์ ํ™” ๊ธฐ๋ฒ•

  • ์ˆœํ™˜ ์Šคํฌ๋กค ๋ฐฉ์ง€: requestAnimationFrame ๊ธฐ๋ฐ˜ ํ”Œ๋ž˜๊ทธ๋กœ ์ขŒ์šฐ ์Šคํฌ๋กค ๋™๊ธฐํ™” ์‹œ ๋ฌดํ•œ ๋ฃจํ”„ ์—†์ด ๋งค๋„๋Ÿฝ๊ฒŒ ๋™์ž‘
  • ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ: ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ ์ •๋ฆฌ
  • CSS ์ตœ์ ํ™”: ํ•˜๋“œ์›จ์–ด ๊ฐ€์† ํ™œ์šฉ

๐Ÿ”ง ์ปค์Šคํ„ฐ๋งˆ์ด์ง•

๐ŸŽจ ํ…Œ๋งˆ ์ˆ˜์ •

:root {
  /* ๋‹คํฌ ๋ชจ๋“œ ์ƒ‰์ƒ */
  --bg-primary: #1e1e1e;
  --text-primary: #ffffff;
  --accent-blue: #0a84ff;
  
  /* ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํฐํŠธ (๋‚˜๋ˆ”๊ณ ๋”•์ฝ”๋”ฉ ๋‚ด์žฅ, ๊ณ ์ •๊ฐ’) */
  --preview-font: 'Nanum Gothic Coding', 'D2Coding', 'SF Mono', Monaco, Consolas, 'Courier New', monospace;
}

.light-mode {
  /* ๋ผ์ดํŠธ ๋ชจ๋“œ ์ƒ‰์ƒ */
  --bg-primary: #ffffff;
  --text-primary: #1d1d1f;
  --accent-blue: #007aff;
}

โš™๏ธ ๊ธฐ๋Šฅ ์„ค์ •

// ๊ธฐ๋ณธ ์„ค์ • ๋ณ€๊ฒฝ
let memoryStorage = {
  theme: 'dark',        // ๊ธฐ๋ณธ ํ…Œ๋งˆ
  scrollSync: 'true'    // ์Šคํฌ๋กค ๋™๊ธฐํ™” ๊ธฐ๋ณธ๊ฐ’
};

๐Ÿ› ๋ฌธ์ œ ํ•ด๊ฒฐ

โ— ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ

Q: localStorage ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ด์š”

์›์ธ: ์ƒŒ๋“œ๋ฐ•์Šค ํ™˜๊ฒฝ ๋˜๋Š” ํ”„๋ผ์ด๋น— ๋ธŒ๋ผ์šฐ์ง•
ํ•ด๊ฒฐ: ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜ ์ €์žฅ์†Œ ์ž๋™ ์‚ฌ์šฉ (์„ค์ • ์œ ์ง€ ์•ˆ๋จ)

Q: PDF ์ €์žฅ์ด ์•ˆ ๋ผ์š”

์›์ธ: ํŒ์—… ์ฐจ๋‹จ ๋˜๋Š” ๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ
ํ•ด๊ฒฐ: ํŒ์—… ํ—ˆ์šฉ ์„ค์ • ๋ฐ ๋ชจ๋˜ ๋ธŒ๋ผ์šฐ์ € ์‚ฌ์šฉ

Q: ํŒŒ์ผ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ์ด ์•ˆ ๋ผ์š”

์ง€์› ํ˜•์‹: .md, .markdown, .txt
ํ™•์ธ์‚ฌํ•ญ: ํŒŒ์ผ ํ™•์žฅ์ž ๋ฐ ๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ

Q: mermaid ์ฝ”๋“œ๋ธ”๋ก์ด ๊ทธ๋ฆผ์ด ์•„๋‹ˆ๋ผ ํ…์ŠคํŠธ ๊ทธ๋Œ€๋กœ ๋ณด์—ฌ์š”

์›์ธ: mermaid.min.js๊ฐ€ md-editor.html๊ณผ ๊ฐ™์€ ํด๋”์— ์—†๊ฑฐ๋‚˜ ํŒŒ์ผ๋ช…์ด ๋‹ค๋ฆ„
ํ•ด๊ฒฐ: mermaid.min.js๋ฅผ ๊ฐ™์€ ํด๋”์— ๋‘๊ณ  ์ƒˆ๋กœ๊ณ ์นจ (์—†์–ด๋„ ์—๋””ํ„ฐ ์ž์ฒด๋Š” ์ •์ƒ ๋™์ž‘ํ•จ)

Q: ํƒญ์„ ๋‹ซ์„ ๋•Œ ๋œจ๋Š” ํ™•์ธ์ฐฝ ๋ฌธ๊ตฌ๊ฐ€ ๋งˆ์Œ์— ์•ˆ ๋“ค์–ด์š”

์›์ธ: ๋ธŒ๋ผ์šฐ์ € ์ •์ฑ…์ƒ beforeunload ํ™•์ธ์ฐฝ ๋ฌธ๊ตฌ๋Š” ์›นํŽ˜์ด์ง€๊ฐ€ ์ž„์˜๋กœ ์ง€์ •ํ•  ์ˆ˜ ์—†๊ณ 
      ํ•ญ์ƒ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ •ํ•œ ๊ณ ์ • ๋ฌธ๊ตฌ๋งŒ ํ‘œ์‹œ๋จ(์•…์šฉ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ์ˆ˜๋…„ ์ „๋ถ€ํ„ฐ ๋ง‰ํ˜€ ์žˆ์Œ)
์ฐธ๊ณ : "์ƒˆ ํŒŒ์ผ"/"์—ด๊ธฐ"/๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ์œผ๋กœ ๋‹ค๋ฅธ ํŒŒ์ผ์„ ์—ด ๋•Œ ๋œจ๋Š” ํ™•์ธ์ฐฝ์€
      ์ด ์•ฑ์ด ์ง์ ‘ ๋งŒ๋“  ๊ฒƒ์ด๋ผ ๋ฌธ๊ตฌ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Œ

Q: ๋ชจ๋ฐ”์ผ์—์„œ๋Š” ํƒญ์„ ๋‹ซ์•„๋„ ํ™•์ธ์ฐฝ์ด ์•ˆ ๋– ์š”

์›์ธ: iOS Safari ๋“ฑ ์ผ๋ถ€ ๋ชจ๋ฐ”์ผ ๋ธŒ๋ผ์šฐ์ €๋Š” beforeunload ํ™•์ธ์ฐฝ ์ž์ฒด๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Œ
์ฐธ๊ณ : "์ƒˆ ํŒŒ์ผ"/"์—ด๊ธฐ"/๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ์‹œ ๋œจ๋Š” ํ™•์ธ์ฐฝ์€ ๋ชจ๋ฐ”์ผ์—์„œ๋„ ์ •์ƒ ๋™์ž‘ํ•จ

๐Ÿ” ๋””๋ฒ„๊น… ๋„๊ตฌ

  1. ๋กœ๊ทธ ํ™•์ธ

    // ๊ฐœ๋ฐœ์ž ๋„๊ตฌ ์ฝ˜์†”์—์„œ "[Markdown Editor]" ํƒœ๊ทธ ํ™•์ธ
  2. ๋„คํŠธ์›Œํฌ ํ™•์ธ

    ๊ฐœ๋ฐœ์ž ๋„๊ตฌ โ†’ Network ํƒญ์—์„œ ์™ธ๋ถ€ ์š”์ฒญ์ด ์—†๋Š”์ง€ ํ™•์ธ (์™„์ „ ์˜คํ”„๋ผ์ธ ๋™์ž‘ ๊ฒ€์ฆ)
    

๐Ÿค ๊ธฐ์—ฌํ•˜๊ธฐ

๐Ÿ”„ ๊ฐœ๋ฐœ ์›Œํฌํ”Œ๋กœ์šฐ

  1. ์ด์Šˆ ์ƒ์„ฑ ๋˜๋Š” ํ™•์ธ
  2. ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ: git checkout -b feature/new-feature
  3. ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ปค๋ฐ‹: git commit -m "Add new feature"
  4. ๋ธŒ๋žœ์น˜ ํ‘ธ์‹œ: git push origin feature/new-feature
  5. Pull Request ์ƒ์„ฑ

๐Ÿ“ ์ฝ”๋”ฉ ์Šคํƒ€์ผ

  • ๋“ค์—ฌ์“ฐ๊ธฐ: 4 ์ŠคํŽ˜์ด์Šค
  • ๋„ค์ด๋ฐ: camelCase (JavaScript), kebab-case (CSS)
  • ์ฃผ์„: JSDoc ์Šคํƒ€์ผ
  • ํ•จ์ˆ˜: ๋‹จ์ผ ์ฑ…์ž„ ์›์น™

๐Ÿงช ํ…Œ์ŠคํŠธ

// ๊ธฐ๋ณธ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ
1. ๋งˆํฌ๋‹ค์šด ์ž…๋ ฅ โ†’ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํ™•์ธ
2. ํ…Œ๋งˆ ํ† ๊ธ€ โ†’ ์ƒ‰์ƒ ๋ณ€๊ฒฝ ํ™•์ธ
3. ํŒŒ์ผ ์ €์žฅ/๋ถˆ๋Ÿฌ์˜ค๊ธฐ โ†’ ๋‚ด์šฉ ํ™•์ธ
4. PDF ์ €์žฅ โ†’ ์ถœ๋ ฅ ํ™•์ธ

๐Ÿ“š ์ฐธ๊ณ  ์ž๋ฃŒ

๐Ÿ”— ๊ด€๋ จ ๋งํฌ

๐Ÿ“– ๋งˆํฌ๋‹ค์šด ๋ฌธ๋ฒ•

# ์ œ๋ชฉ 1
## ์ œ๋ชฉ 2
์ œ๋ชฉ๋„ ๊ฐ€๋Šฅ (๋‹ค์Œ ์ค„์„ ===๋กœ)
=====================

**๊ตต์€ ํ…์ŠคํŠธ**
*๊ธฐ์šธ์ž„ ํ…์ŠคํŠธ*
~~์ทจ์†Œ์„ ~~
`์ธ๋ผ์ธ ์ฝ”๋“œ`
\*์ด์Šค์ผ€์ดํ”„ํ•ด์„œ ๋ณ„ํ‘œ ๊ทธ๋Œ€๋กœ\*

โ€‹```์ฝ”๋“œ ๋ธ”๋กโ€‹```

> ์ธ์šฉ๋ฌธ

- ๋ชฉ๋ก ํ•ญ๋ชฉ 1
  - ์ค‘์ฒฉ๋œ ํ•˜์œ„ ํ•ญ๋ชฉ
- [ ] ํ•  ์ผ
- [x] ์™„๋ฃŒํ•œ ์ผ

1. ์ˆœ์„œ ๋ชฉ๋ก
   1. ์ค‘์ฒฉ๋„ ์ง€์›

[๋งํฌ](https://example.com "์ œ๋ชฉ")
[์ฐธ์กฐ ๋งํฌ][1]
<https://example.com> (์ž๋™ ๋งํฌ)

![์ด๋ฏธ์ง€](image.jpg "์ œ๋ชฉ")

| ์™ผ์ชฝ ์ •๋ ฌ | ๊ฐ€์šด๋ฐ ์ •๋ ฌ | ์˜ค๋ฅธ์ชฝ ์ •๋ ฌ |
|:------|:-----:|------:|
| ์…€ 1   | ์…€ 2   | ์…€ 3   |

[1]: https://example.com "์ฐธ์กฐ ๋งํฌ ์ •์˜"

โ€‹```mermaid
graph TD
  A[์‹œ์ž‘] --> B[๋]
โ€‹```

์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ฌธ๋ฒ•: ์ฝ”๋“œ๋ธ”๋ก ๊ตฌ๋ฌธ ๊ฐ•์กฐ(์ƒ‰์ƒ ์—†์ด ๋‹จ์ƒ‰์œผ๋กœ๋งŒ ํ‘œ์‹œ), ๊ฐ์ฃผ, ์ •์˜๋ชฉ๋ก, ์ด๋ชจ์ง€ ์ฝ”๋“œ(:smile:), ๊บพ์‡  ์—†์ด ์“ด URL์˜ ์ž๋™ ๋งํฌํ™”.

๐Ÿ“„ ๋ผ์ด์„ ์Šค

MIT License - ์ž์„ธํ•œ ๋‚ด์šฉ์€ LICENSE ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๐Ÿ‘จโ€๐Ÿ’ป ๊ฐœ๋ฐœ์ž

JohnnyB Hyeon - Not Johnnyb Goode~


๐ŸŽ‰ ๋ฒ„์ „ ํžˆ์Šคํ† ๋ฆฌ

v3.3.0 (์ตœ์‹ )

  • ๐Ÿ› title ์†์„ฑ์ด ์žˆ๋Š” ๋งํฌยท์ด๋ฏธ์ง€([text](url "title"))๊ฐ€ ๋ Œ๋”๋ง๋˜์ง€ ์•Š๋˜ ๋ฒ„๊ทธ ์ˆ˜์ •(escapeHtml์ด ํฐ๋”ฐ์˜ดํ‘œ๋ฅผ ๋จผ์ € &quot;๋กœ ๋ฐ”๊ฟ” ์ •๊ทœ์‹์ด ๋งค์น˜ ์‹คํŒจํ•˜๋˜ ๋ฌธ์ œ)
  • ๐Ÿ› ๊ด„ํ˜ธ๊ฐ€ ํฌํ•จ๋œ URL(์œ„ํ‚ค๋ฐฑ๊ณผ ์Šคํƒ€์ผ ๋“ฑ)์ด ์ค‘๊ฐ„์— ์ž˜๋ฆฌ๋˜ ๋ฌธ์ œ ์ˆ˜์ •
  • ๐Ÿ› ๋ฌธ์žฅ | ๋ฌธ์žฅ ๋‹ค์Œ์— ---๊ฐ€ ์˜ค๋ฉด ์˜๋„์น˜ ์•Š์€ ํ‘œ๋กœ ์˜ค์ธ์‹๋˜๋˜ ๋ฌธ์ œ ์ˆ˜์ •(ํ—ค๋”ยท๊ตฌ๋ถ„์„  ์—ด ๊ฐœ์ˆ˜๊ฐ€ ์ผ์น˜ํ•  ๋•Œ๋งŒ ํ‘œ๋กœ ์ธ์ •)
  • ๐Ÿ› my_variable_name์ฒ˜๋Ÿผ ๋‹จ์–ด ์ค‘๊ฐ„์˜ ์–ธ๋”์Šค์ฝ”์–ด๊ฐ€ ์˜๋„์น˜ ์•Š๊ฒŒ ๊ธฐ์šธ์ž„ ์ฒ˜๋ฆฌ๋˜๋˜ ๋ฌธ์ œ ์ˆ˜์ •(CommonMark/GFM ๊ทœ์น™ ์ ์šฉ)
  • โœจ ์ค‘์ฒฉ ๋ชฉ๋ก ์ง€์›(๋“ค์—ฌ์“ฐ๊ธฐ ๊ธฐ๋ฐ˜, ์ˆœ์„œ/์ˆœ์„œ ์—†์Œ ํ˜ผ์šฉ ๊ฐ€๋Šฅ)
  • โœจ ์ž‘์—… ๋ชฉ๋ก(์ฒดํฌ๋ฐ•์Šค) - [ ] / - [x] ์ง€์›
  • โœจ Setext ์Šคํƒ€์ผ ํ—ค๋”(์ œ๋ชฉ\n===, ์ œ๋ชฉ\n---) ์ง€์›
  • โœจ ๋ชฉ๋ก ํ•ญ๋ชฉ์˜ ์—ฌ๋Ÿฌ ์ค„(๋А์Šจํ•œ ์—ฐ์† ํ…์ŠคํŠธ) ์ง€์›
  • โœจ ์ฐธ์กฐ ์Šคํƒ€์ผ ๋งํฌ [text][ref] ์ง€์›
  • โœจ ์ž๋™ ๋งํฌ <https://...>, <๋ฉ”์ผ์ฃผ์†Œ> ์ง€์›
  • โœจ ํ‘œ ์ •๋ ฌ ๋งˆ์ปค(:---, :---:, ---:) ์ง€์›
  • โœจ ๋ฐฑ์Šฌ๋ž˜์‹œ ์ด์Šค์ผ€์ดํ”„(\*, \_ ๋“ฑ) ์ง€์›

v3.2.0

  • ๐Ÿ’พ ๋ฏธ์ €์žฅ ๋ณ€๊ฒฝ์‚ฌํ•ญ ํ™•์ธ ๊ธฐ๋Šฅ ์ถ”๊ฐ€: ํŽธ์ง‘๊ธฐ ๋‚ด์šฉ์ด ๋งˆ์ง€๋ง‰ ์ €์žฅ/๋กœ๋“œ ์ดํ›„ ๋ฐ”๋€ ์ƒํƒœ(isDirty)๋ฅผ ์ถ”์ ํ•ด, ํƒญ ๋‹ซ๊ธฐ/์ƒˆ๋กœ๊ณ ์นจ(beforeunload), ์ƒˆ ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ, ๋‹ค๋ฅธ ํŒŒ์ผ ์—ด๊ธฐ(๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ํฌํ•จ) ์‹œ ํ™•์ธ์ฐฝ์„ ๋„์›€
  • ๐Ÿ› "์ƒˆ ํŒŒ์ผ" ํ™•์ธ ์กฐ๊ฑด์„ "๋‚ด์šฉ์ด ์žˆ๋Š”์ง€"์—์„œ "์‹ค์ œ๋กœ ์ˆ˜์ •๋๋Š”์ง€"๋กœ ์ˆ˜์ •, "์—ด๊ธฐ"ยท๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ์—๋Š” ์›๋ž˜ ์—†๋˜ ๋ฏธ์ €์žฅ ํ™•์ธ์ฐฝ์„ ์ƒˆ๋กœ ์ถ”๊ฐ€

v3.1.0

  • ๐Ÿ“Š Mermaid ๋‹ค์ด์–ด๊ทธ๋žจ ์ง€์› ์ถ”๊ฐ€: mermaid.min.js(๋กœ์ปฌ ํŒŒ์ผ, MIT)๋ฅผ ๊ฐ™์€ ํด๋”์—์„œ ๋ถˆ๋Ÿฌ์™€ ```mermaid ์ฝ”๋“œ๋ธ”๋ก์„ ๊ทธ๋ฆผ์œผ๋กœ ๋ Œ๋”๋ง. CDN ๋Œ€์‹  ๋กœ์ปฌ ํŒŒ์ผ ๋กœ๋“œ ๋ฐฉ์‹์„ ํƒํ•ด ์˜คํ”„๋ผ์ธ ์›์น™์€ ์œ ์ง€ํ•˜๋˜, ๋‹จ์ผ HTML ํŒŒ์ผ ๊ตฌ์„ฑ์€ ๋‘ ํŒŒ์ผ๋กœ ๋ฐ”๋€œ(ํŒŒ์ผ์ด ์—†์œผ๋ฉด ํ…์ŠคํŠธ๋กœ ์ž๋™ ํด๋ฐฑ)
  • ํƒ€์ดํ•‘ ๋””๋ฐ”์šด์Šค(0.4์ดˆ) ๋ Œ๋”๋ง, ๋‹คํฌ/๋ผ์ดํŠธ ํ…Œ๋งˆ ์—ฐ๋™, ๋‹ค์ด์–ด๊ทธ๋žจ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋จธ์ง€ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์— ๋ฒˆ์ง€์ง€ ์•Š๋„๋ก ๊ฒฉ๋ฆฌ ์ฒ˜๋ฆฌ

v3.0.0

  • ๐Ÿ”’ ์ž์ฒด ๋งˆํฌ๋‹ค์šด ํŒŒ์„œ๋กœ ์ „ํ™˜: HTML ์ด์Šค์ผ€์ดํ”„ ๊ธฐ๋ฐ˜ ๋ Œ๋”๋ง์œผ๋กœ XSS ๋ฐฉ์ง€, CDN(marked.js) ์˜์กด์„ฑ ์ œ๊ฑฐ๋กœ ์™„์ „ ์˜คํ”„๋ผ์ธ ๋™์ž‘ ๋ณด์žฅ
  • ๐Ÿ”ค ํฐํŠธ ์„ ํƒ ๊ธฐ๋Šฅ ์ œ๊ฑฐ: 10์ข… ์ค‘ ๊ณ ๋ฅด๋˜ ๋ฐฉ์‹์€ ๋Œ€๋ถ€๋ถ„ ์‹œ์Šคํ…œ ๋ฏธ์„ค์น˜๋กœ ์‹คํšจ์„ฑ์ด ์—†์–ด, ํ•œ๊ธ€ยท์˜๋ฌธ ํ˜ผ์šฉ ์ •๋ ฌ์ด ๋ณด์žฅ๋˜๋Š” ๋‚˜๋ˆ”๊ณ ๋”•์ฝ”๋”ฉ ํ•˜๋‚˜๋ฅผ WOFF2๋กœ ๋‚ด์žฅํ•ด ๊ณ ์ •
  • ๐Ÿ“ ๋ฐ•์Šค ๋“œ๋กœ์ž‰ ๋ฌธ์ž(โ”€โ”‚โ”Œโ”โ””โ”˜) ์ •๋ ฌ ์ˆ˜์ •: ๋‚˜๋ˆ”๊ณ ๋”•์ฝ”๋”ฉ์ด ์ „๊ฐ์œผ๋กœ ๊ทธ๋ฆฌ๋˜ U+2500-257F ๋ฒ”์œ„๋ฅผ Sarasa Mono K์—์„œ ๋ฐ˜๊ฐ์œผ๋กœ ์„œ๋ธŒ์…‹ํ•ด unicode-range๋กœ ์˜ค๋ฒ„๋ผ์ด๋“œ
  • ๐Ÿ“ฑ ๋ฆฌ์‚ฌ์ด์ €์— ํ„ฐ์น˜ ์ด๋ฒคํŠธ ์ถ”๊ฐ€ ๋ฐ ๋ชจ๋ฐ”์ผ ์„ธ๋กœ ๋ ˆ์ด์•„์›ƒ ์ถ• ๊ณ„์‚ฐ ์ˆ˜์ •
  • ๐Ÿ’พ localStorage ์ ‘๊ทผ ๋ถˆ๊ฐ€ ์‹œ ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜ ์ €์žฅ์†Œ๋กœ ์‹ค์ œ๋กœ ์ž๋™ ํด๋ฐฑํ•˜๋„๋ก ๊ตฌํ˜„
  • ๐Ÿ–จ๏ธ PDF ์ธ์‡„ ์ฐฝ์„ noopener๋กœ ์—ด์–ด opener ์ฐธ์กฐ ์œ„ํ—˜ ์ฐจ๋‹จ
  • ๐Ÿ› ๋ผ์ดํŠธ ๋ชจ๋“œ์—์„œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํฐํŠธ๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š๋˜ CSS ์šฐ์„ ์ˆœ์œ„ ๋ฒ„๊ทธ ์ˆ˜์ •

v2.0.0

  • โœจ ์Šค๋งˆํŠธ ํฐํŠธ ๊ฐ์ง€ ์‹œ์Šคํ…œ ์ถ”๊ฐ€
  • ๐Ÿ”ง ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜ ์ €์žฅ์†Œ๋กœ localStorage ๋ฌธ์ œ ํ•ด๊ฒฐ
  • ๐ŸŽจ ํฐํŠธ ์„ ํƒ UI ๊ฐœ์„  (์‹ค์ œ ์ ์šฉ ํฐํŠธ ํ‘œ์‹œ)
  • ๐Ÿ› ๋‹ค์ˆ˜์˜ ๋ฒ„๊ทธ ์ˆ˜์ •

v1.5.0

  • ๐Ÿ“ 10๊ฐ€์ง€ ๊ณ ์ •ํญ ํฐํŠธ ์ง€์›
  • ๐Ÿ”„ ์Šคํฌ๋กค ๋™๊ธฐํ™” ๊ธฐ๋Šฅ
  • ๐Ÿ“ฑ ๋ชจ๋ฐ”์ผ ๋ฐ˜์‘ํ˜• ๋””์ž์ธ

v1.0.0

  • ๐ŸŽฏ ๊ธฐ๋ณธ ๋งˆํฌ๋‹ค์šด ์—๋””ํ„ฐ ๊ธฐ๋Šฅ
  • ๐ŸŒ™ ๋‹คํฌ/๋ผ์ดํŠธ ๋ชจ๋“œ
  • ๐Ÿ’พ ํŒŒ์ผ ์ €์žฅ/๋ถˆ๋Ÿฌ์˜ค๊ธฐ
  • ๐Ÿ“„ PDF ๋‚ด๋ณด๋‚ด๊ธฐ

โญ ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด GitHub์—์„œ ์Šคํƒ€๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”!

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages