macOS ๋ค์ดํฐ๋ธ ๋์์ธ์ ์ค์๊ฐ ๋งํฌ๋ค์ด ์๋ํฐ
- ์ค์๊ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ: ์ ๋ ฅ๊ณผ ๋์์ ๋งํฌ๋ค์ด ๋ ๋๋ง
- ์คํฌ๋กค ๋๊ธฐํ: ์ข์ฐ ์ฐฝ ์คํฌ๋กค ์ฐ๋ (ํ ๊ธ ๊ฐ๋ฅ)
- ํฐํธ ์ ํ: 10๊ฐ์ง ๊ณ ์ ํญ ํฐํธ ์ง์ (ํ๊ธ/์๋ฌธ ์ต์ ํ)
- ์ฐฝ ํฌ๊ธฐ ์กฐ์ : ๋ง์ฐ์ค ๋๋๊ทธ๋ก ์ข์ฐ ๋น์จ ์กฐ์
- ์ค์๊ฐ ํต๊ณ: ๋จ์ด/๋ฌธ์/์ค ์ ์นด์ดํธ ๋ฐ ์ปค์ ์์น ํ์
- ๋คํฌ/๋ผ์ดํธ ๋ชจ๋: ์ํด๋ฆญ ํ ๋ง ํ ๊ธ (โ+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 ํ์ฑํ
-
ํ์ผ ๋ค์ด๋ก๋
# Git์ผ๋ก ํด๋ก git clone https://github.com/your-repo/markdown-editor.git cd markdown-editor # ๋๋ ์ง์ ๋ค์ด๋ก๋ wget https://your-domain.com/markdown-editor.html
-
๋ธ๋ผ์ฐ์ ์์ ์คํ
# ๋ก์ปฌ ์๋ฒ ์คํ (๊ถ์ฅ) python -m http.server 8000 # ๋๋ npx serve . # ๋ธ๋ผ์ฐ์ ์์ http://localhost:8000 ์ ์
-
์ง์ ์คํ
markdown-editor.htmlํ์ผ์ ๋๋ธํด๋ฆญํ์ฌ ๋ธ๋ผ์ฐ์ ์์ ์ด๊ธฐ
- ์ข์ธก ์๋ํฐ์ ๋งํฌ๋ค์ด ํ ์คํธ ์ ๋ ฅ
- ์ฐ์ธก์์ ์ค์๊ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํ์ธ
- ํฐํธ ๋๋กญ๋ค์ด์์ ์ํ๋ ํฐํธ ์ ํ
# ์ ํ์ผ ์์ฑ
โ+N ๋๋ "์ ํ์ผ" ๋ฒํผ ํด๋ฆญ
# ํ์ผ ์ด๊ธฐ
โ+O ๋๋ "์ด๊ธฐ" ๋ฒํผ ํด๋ฆญ
๋๋ ํ์ผ์ ์ฐฝ์ ๋๋๊ทธ ์ค ๋๋กญ
# ํ์ผ ์ ์ฅ
โ+S ๋๋ "์ ์ฅ" ๋ฒํผ ํด๋ฆญ
# PDF ์ ์ฅ
โ+P ๋๋ "PDF ์ ์ฅ" ๋ฒํผ ํด๋ฆญ- ์คํฌ๋กค ๋๊ธฐํ: ๐ ๋ฒํผ์ผ๋ก ํ์ฑํ/๋นํ์ฑํ
- ํฐํธ ์ํ ํ์ธ: "ํฐํธ์ํ" ๋ฒํผ์ผ๋ก ํ์ฌ ํฐํธ ์ ๋ณด ํ์ธ
- ์ฐฝ ๋ถํ ์กฐ์ : ์ค์ ๊ตฌ๋ถ์ ์ ๋๋๊ทธํ์ฌ ์ข์ฐ ๋น์จ ์กฐ์
- ๋๋ฒ๊น
: ๊ฐ๋ฐ์ ๋๊ตฌ ์ฝ์์์
debugFontStatus()์คํ
| ํฐํธ๋ช | ์ค๋ช | ํ๊ธ ์ง์ |
|---|---|---|
| SF Mono | macOS ๊ธฐ๋ณธ ํฐํธ | โ |
| Monaco | macOS ์ ํต ํฐํธ | โ |
| Consolas | Windows ๊ธฐ๋ณธ ํฐํธ | โ |
| JetBrains Mono | ๊ฐ๋ฐ์ ์ธ๊ธฐ ํฐํธ | โ |
| Cascadia Code | ๋ง์ดํฌ๋ก์ํํธ ๋ชจ๋ ํฐํธ | โ |
| Fira Code | Mozilla ๋ฆฌ๊ฐ์ฒ ํฐํธ | โ |
| Source Code Pro | Adobe ์คํ์์ค ํฐํธ | โ |
| D2Coding | ํ๊ธ ์ต์ ํ ํฐํธ | โ |
| ๋๋๊ณ ๋์ฝ๋ฉ | ๋ค์ด๋ฒ ํ๊ธ ์ฝ๋ฉ ํฐํธ | โ |
| Roboto Mono | ๊ตฌ๊ธ ๊ณ ์ ํญ ํฐํธ | โ |
- ์๋ ๊ฐ์ง: ์์คํ ์ ์ค์น๋ ํฐํธ๋ฅผ Canvas API๋ก ๊ฐ์ง
- ์ค๋งํธ ํ์: "์์ฒญํฐํธ โ ์ค์ ํฐํธ" ํํ๋ก ์ค์ ์ ์ฉ๋ ํฐํธ ํ์
- Fallback ์ฒด์ธ: ๊ฐ ํฐํธ๋ง๋ค ์ต์ ์ ๋์ฒด ํฐํธ ์์ ์ค์
๐ฆ Markdown Editor
โโโ ๐จ Frontend (HTML5/CSS3/JavaScript)
โโโ ๐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (marked.js - ์ ํ์ )
โโโ ๐พ ์ ์ฅ์ (๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ)
โโโ ๐ฏ API (Canvas, File, Print)
- ๋ฐ๋๋ผ JavaScript: ํ๋ ์์ํฌ ์๋ ์์ JS
- CSS ๋ณ์: ํ ๋ง ์์คํ ๊ตฌํ
- CSS Grid/Flexbox: ๋ฐ์ํ ๋ ์ด์์
- Canvas API: ํฐํธ ๊ฐ์ง
- File API: ํ์ผ ์ฝ๊ธฐ/์ ์ฅ
- Print API: PDF ์ ์ฅ
- localStorage ๋์ฒด: ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ ์ค์ ์ ์ฅ
- ์ง์ฐ ๋ก๋ฉ: marked.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ํ์ ๋ก๋
- ์ด๋ฒคํธ ๋๋ฐ์ด์ฑ: ์คํฌ๋กค ๋๊ธฐํ ์ฑ๋ฅ ์ต์ ํ
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ: ์ด๋ฒคํธ ๋ฆฌ์ค๋ ์ ๋ฆฌ
- CSS ์ต์ ํ: ํ๋์จ์ด ๊ฐ์ ํ์ฉ
:root {
/* ๋คํฌ ๋ชจ๋ ์์ */
--bg-primary: #1e1e1e;
--text-primary: #ffffff;
--accent-blue: #0a84ff;
/* ํฐํธ ์ค์ */
--preview-font: 'SF Mono', Monaco, monospace;
}
.light-mode {
/* ๋ผ์ดํธ ๋ชจ๋ ์์ */
--bg-primary: #ffffff;
--text-primary: #1d1d1f;
--accent-blue: #007aff;
}// fontOptions ๋ฐฐ์ด์ ์ ํฐํธ ์ถ๊ฐ
const fontOptions = [
{
name: "์ ํฐํธ๋ช
",
fonts: ["Primary Font", "Fallback Font", "Generic"],
value: "'Primary Font', 'Fallback Font', monospace"
}
];// ๊ธฐ๋ณธ ์ค์ ๋ณ๊ฒฝ
let memoryStorage = {
theme: 'dark', // ๊ธฐ๋ณธ ํ
๋ง
font: 'SF Mono', // ๊ธฐ๋ณธ ํฐํธ
scrollSync: true // ์คํฌ๋กค ๋๊ธฐํ ๊ธฐ๋ณธ๊ฐ
};Q: ํฐํธ๊ฐ ๋ณ๊ฒฝ๋์ง ์์์
// ํด๊ฒฐ ๋ฐฉ๋ฒ
1. "ํฐํธ์ํ" ๋ฒํผ์ผ๋ก ํ์ฌ ์ํ ํ์ธ
2. ๊ฐ๋ฐ์ ๋๊ตฌ ์ฝ์์์ debugFontStatus() ์คํ
3. ์์คํ
์ ํด๋น ํฐํธ๊ฐ ์ค์น๋์ด ์๋์ง ํ์ธQ: localStorage ์ค๋ฅ๊ฐ ๋ฐ์ํด์
์์ธ: ์๋๋ฐ์ค ํ๊ฒฝ ๋๋ ํ๋ผ์ด๋น ๋ธ๋ผ์ฐ์ง
ํด๊ฒฐ: ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ ์ ์ฅ์ ์๋ ์ฌ์ฉ (์ค์ ์ ์ง ์๋จ)
Q: PDF ์ ์ฅ์ด ์ ๋ผ์
์์ธ: ํ์
์ฐจ๋จ ๋๋ ๋ธ๋ผ์ฐ์ ํธํ์ฑ
ํด๊ฒฐ: ํ์
ํ์ฉ ์ค์ ๋ฐ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์ฌ์ฉ
Q: ํ์ผ ๋๋๊ทธ ์ค ๋๋กญ์ด ์ ๋ผ์
์ง์ ํ์: .md, .markdown, .txt
ํ์ธ์ฌํญ: ํ์ผ ํ์ฅ์ ๋ฐ ๋ธ๋ผ์ฐ์ ํธํ์ฑ
-
ํฐํธ ์ํ ํ์ธ
// ์ฝ์์์ ์คํ debugFontStatus()
-
๋ก๊ทธ ํ์ธ
// ๊ฐ๋ฐ์ ๋๊ตฌ ์ฝ์์์ "[Markdown Editor]" ํ๊ทธ ํ์ธ -
๋คํธ์ํฌ ํ์ธ
๊ฐ๋ฐ์ ๋๊ตฌ โ Network โ Fonts ํญ์์ ํฐํธ ๋ก๋ฉ ์ํ ํ์ธ
- ์ด์ ์์ฑ ๋๋ ํ์ธ
- ๋ธ๋์น ์์ฑ:
git checkout -b feature/new-feature - ๋ณ๊ฒฝ์ฌํญ ์ปค๋ฐ:
git commit -m "Add new feature" - ๋ธ๋์น ํธ์:
git push origin feature/new-feature - Pull Request ์์ฑ
- ๋ค์ฌ์ฐ๊ธฐ: 4 ์คํ์ด์ค
- ๋ค์ด๋ฐ: camelCase (JavaScript), kebab-case (CSS)
- ์ฃผ์: JSDoc ์คํ์ผ
- ํจ์: ๋จ์ผ ์ฑ ์ ์์น
// ๊ธฐ๋ณธ ๊ธฐ๋ฅ ํ
์คํธ
1. ๋งํฌ๋ค์ด ์
๋ ฅ โ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํ์ธ
2. ํฐํธ ๋ณ๊ฒฝ โ ์ ์ฉ ํ์ธ
3. ํ
๋ง ํ ๊ธ โ ์์ ๋ณ๊ฒฝ ํ์ธ
4. ํ์ผ ์ ์ฅ/๋ถ๋ฌ์ค๊ธฐ โ ๋ด์ฉ ํ์ธ
5. PDF ์ ์ฅ โ ์ถ๋ ฅ ํ์ธ# ์ ๋ชฉ 1
## ์ ๋ชฉ 2
### ์ ๋ชฉ 3
**๊ตต์ ํ
์คํธ**
*๊ธฐ์ธ์ ํ
์คํธ*
`์ธ๋ผ์ธ ์ฝ๋`
```์ฝ๋ ๋ธ๋ก```
> ์ธ์ฉ๋ฌธ
- ๋ชฉ๋ก ํญ๋ชฉ 1
- ๋ชฉ๋ก ํญ๋ชฉ 2
[๋งํฌ](https://example.com)

| ํ
์ด๋ธ | ํค๋ |
|--------|------|
| ์
1 | ์
2 |MIT License - ์์ธํ ๋ด์ฉ์ LICENSE ํ์ผ์ ์ฐธ์กฐํ์ธ์.
JohnnyB Hyeon - Not Johnnyb Goode~
- ๐ ์น์ฌ์ดํธ: ํ๋ก์ ํธ ํํ์ด์ง
- ๐ง ์ด๋ฉ์ผ: johnhsb@outlook.kr
- ๐ฌ ์ด์ ๋ฆฌํฌํธ: GitHub Issues
- โจ ์ค๋งํธ ํฐํธ ๊ฐ์ง ์์คํ ์ถ๊ฐ
- ๐ง ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ ์ ์ฅ์๋ก localStorage ๋ฌธ์ ํด๊ฒฐ
- ๐จ ํฐํธ ์ ํ UI ๊ฐ์ (์ค์ ์ ์ฉ ํฐํธ ํ์)
- ๐ ๋ค์์ ๋ฒ๊ทธ ์์
- ๐ 10๊ฐ์ง ๊ณ ์ ํญ ํฐํธ ์ง์
- ๐ ์คํฌ๋กค ๋๊ธฐํ ๊ธฐ๋ฅ
- ๐ฑ ๋ชจ๋ฐ์ผ ๋ฐ์ํ ๋์์ธ
- ๐ฏ ๊ธฐ๋ณธ ๋งํฌ๋ค์ด ์๋ํฐ ๊ธฐ๋ฅ
- ๐ ๋คํฌ/๋ผ์ดํธ ๋ชจ๋
- ๐พ ํ์ผ ์ ์ฅ/๋ถ๋ฌ์ค๊ธฐ
- ๐ PDF ๋ด๋ณด๋ด๊ธฐ
โญ ์ด ํ๋ก์ ํธ๊ฐ ๋์์ด ๋์๋ค๋ฉด GitHub์์ ์คํ๋ฅผ ๋๋ฌ์ฃผ์ธ์!