๐ EASYME.md
#README
#Markdown
#๋ฆฌ๋๋ฏธ
#๋น ๋ฅด๊ณ ์ฝ๊ฒ
#์๋ํฐ
README.md๋ฅผ ์ฝ๊ฒ ์์ฑํ๋ ๋ฐฉ๋ฒ! EASYME.md
์ฌ์ดํธ ๋ฐ๋ก ๊ฐ๊ธฐ ๐ ํด๋ฆญ!
Markdown ๋ฌธ๋ฒ, ์๊ณ ๋ ์๋๋ฐ.. README.md ์์ฑํ ๋๋ง ๋๋ฉด ๋ฒ๋ฒ
๊ฑฐ๋ฆฌ๋ ๋น์ .
์ง๊ธ 'Markdown ์ฌ์ฉ๋ฒ'์ด๋ผ๊ณ ๊ฒ์ํ๊ณ ๊ณ์ ๊ฑฐ ์๋์ฃ ? ๐คญ
์ด์ ๋ ์ด์ ๊ทธ๋ด ํ์๊ฐ ์์ด์. EASYME.md๋ฅผ ํตํด ์ฝ๊ฒ Markdown์ ์์ฑํ ์ ์๊ฑฐ๋ ์.
์ผ์ชฝ ํ๋ฉด์ ๊ธ์ ์์ฑํ๋ฉด ์ค๋ฅธ์ชฝ ํ๋ฉด์ ์ค์๊ฐ์ผ๋ก Markdown์ด ์ ์ฉ๋ ๊ธ์ ํ์ธํ ์ ์์ด์. Markdown ๋ฌธ๋ฒ์ด ์ ๊ธฐ์ต๋์ง ์๋๋ค๊ณ ์? ๊ด์ฐฎ์์! ๐ ํด๋ฐ์ฐฝ์ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ์ฉํ๋ฉด ์๋์ผ๋ก Markdown ๋ฌธ๋ฒ์ด ์ ์ฉ๋๋๊น์.
์ด๋์? ์ด์ ์ฝ๊ฒ README.md๋ฅผ ์์ฑํ ์ ์๊ฒ ์ฃ ?
(๐ค ์ง๊ธ ์ด ๊ธ๋ EASYME.md๋ฅผ ํตํด ์์ฑํ์๋ต๋๋ค)
- ๐ EASYME.md
- ๐ Contents
- ๐ Background
- ๐ Link
- ๐ Preview
- ๐ Features
- ๐ Release Note
โ ๏ธ Requirement- โ๏ธ Installation
- ๐ช Skills
- ๐ช Project Control
- ๐ Deployment
- ๐ง Challenges
- ๐ ๋ง๋ฌด๋ฆฌํ๋ฉฐ..
ํ ํ๋ก์ ํธ ๋, README๋ฅผ ์์ฑํ๋ฉด์ ๊ฒช์๋ ๋ถํธํจ์ ํด์ํ๊ธฐ ์ํด ์์ํ ํ๋ก์ ํธ์ ๋๋ค. Markdown ๋ฌธ๋ฒ์ ์๊ณ ์์ง๋ง ์์ฃผ ์ฐ์ง ์๊ธฐ์ ๊ทธ๋ ๊ทธ๋ ์ฐพ์์ผ ํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์์ต๋๋ค. ์ด์ ๋น์ทํ ๋ถํธํจ์ด ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค๋ ๋ถ๋ช ์์๊ฑฐ๋ผ ์๊ฐ์ด ๋์์ต๋๋ค.
EASYME.md๋ฅผ ํตํด ์กฐ๊ธ์ด๋ผ๋ ๊ฐ๋ฐ์๋ค์ด README๋ฅผ ์์ฑํ๋๋ฐ ๊ฒช๋ ๋ถํธํจ์ด ํด์๋๊ธธ ๋ฐ๋ผ๋ ๋ง์์ผ๋ก ๋ง๋ค๊ฒ ๋์์ต๋๋ค.
-
Screen
- ์ผ์ชฝ ํ๋ฉด์ ์ง์ ํ ์คํธ๋ฅผ ์์ฑํ ์ ์๋ Editor์ ๋๋ค.
- ์ค๋ฅธ์ชฝ ํ๋ฉด์ ์ผ์ชฝ ํ ์คํธ ์์ฑ์ ๋ฐ๋ผ Markdown ๋ฌธ๋ฒ์ด ์ ์ฉ๋ Preview๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
- ์๋จ์ Custom Toolbar๋ฅผ ํตํด ํ ์คํธ Style์ Markdown ๋ฌธ๋ฒ์ผ๋ก ์ ์ฉํ ์ ์์ต๋๋ค.
-
Custom Toolbar
- ์ปค์ ์์น, ํ ์คํธ ๋๋๊ทธ๋ฅผ ๊ธฐ์ค์ผ๋ก Markdown ๊ธฐ๋ฅ์ด ์ ์ฉ๋ฉ๋๋ค.
- ๋๋๊ทธํ ์์ญ์ ๋์๋ฌธ์๋ก ๋ณํ์ ํด์ค๋๋ค.
- ๋๋๊ทธํ ์์ญ์ ๋ฆฌ์คํธ๋ก ๋ง๋ค์ด์ค๋๋ค.
- ์ ๊ธฐ, ๋ชฉ์ฐจ, ํ ์ด๋ธ ๋ฑ์ ํ ํ๋ฆฟ์ ์ ๊ณตํฉ๋๋ค.
- Editor ํ๋ฉด๋ง ๋ณด๊ธฐ, Markdown ํ๋ฉด๋ง ๋ณด๊ธฐ, Full Screen ๋ชจ๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
-
๊ณต์ ํ๊ธฐ / ์ ์ฅํ๊ธฐ
- ๊ณต์ ํ๊ธฐ ์์ด์ฝ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ์์ฑํ ๊ธ์ด ์ ์ฅ๋๋ฉฐ ๋งํฌ๊ฐ ์์ฑ๋ฉ๋๋ค.
- ์์ฑํ ๊ธ์ ์ ์ฅํ๊ณ ๋ค๋ฅธ ์ฌ๋์ ๊ณต์ ํ ์ ์์ต๋๋ค.
- ์์ฑ ๋์ค ๋จ์ถํค
Ctrl+S(Command+S)
๋ก ๊ธ์ ์ ์ฅํ ์๋ ์์ต๋๋ค.
version | log |
---|---|
0.1.0 | ํด๋ฐ์ ํ ์คํธ ์ ์ฒด ์ญ์ ๊ธฐ๋ฅ ์ถ๊ฐ, Tab Key ๊ธฐ๋ฅ ์ถ๊ฐ |
~ 0.0.1 | ๊ธฐ๋ฅ ์ ์ฉ์ ์คํฌ๋กค ์ต์๋จ์ผ๋ก ๊ฐ๋ ํ์ ๊ฐ์ , ์ ์ฅ ๋ฐ ๊ณต์ ๊ธฐ๋ฅ ๊ฐ์ |
์ต์ Chrome Browser ์ฌ์ฉ์ ๊ถ์ฅํฉ๋๋ค.
- Local ํ๊ฒฝ์์ ์คํํ๊ธฐ ์ํด ์๋ ์ฌ์ ์ค๋น๊ฐ ํ์ํฉ๋๋ค.
git clone https://github.com/EASYME-md/client
cd client
npm install
npm start
- root ๋๋ ํ ๋ฆฌ์
.env
ํ์ผ์ ์์ฑํ๊ณ<>
์ ํ๊ฒฝ๋ณ์๋ฅผ ์ ๋ ฅ ํ ์ ์ฅํด์ฃผ์ธ์.
REACT_APP_SERVER_URI=https://api.easy-me.com
REACT_APP_CLIENT_URI=https://easy-me.com
REACT_APP_TRACKING_ID=<GA Tracking ID>
git clone https://github.com/EASYME-md/server
cd server
npm install
npm start
- root ๋๋ ํ ๋ฆฌ์
.env
ํ์ผ์ ์์ฑํ๊ณ<>
์ ํ๊ฒฝ๋ณ์๋ฅผ ์ ๋ ฅ ํ ์ ์ฅํด์ฃผ์ธ์.
MONGODB_ADDRESS=<mongoDB address>
CLIENT_URI=https://easy-me.com
- ES2015+
- React
- React Router
- React Helmet
- Redux Toolkit
- Redux Saga
- Google Analytics
- Emotion
- ES2015+
- Node.js
- Express
- MongoDB Atlas
- Mongoose
- Client: Jest, Testing Library
- Server: Mocha, Chai, Supertest
- Version Control: Git, Github
- Task Control: Notion, Figma
- Client: Netlify
- Server: AWS Elastic Beanstalk
2์ฃผ ๋์ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ํ๋ฉด์ ๊ฒช์ ์ด๋ ค์ ๋๋ ๋์ ์ ์๋์ ๊ฐ์ต๋๋ค.
์ด๊ธฐ ์๋ํฐ ๊ตฌํ์ ํ์ฌ ์์
์ด ์๋ฃ๋ <textarea>
๊ฐ ์๋ React Quill
์ด๋ผ๋ ์๋ํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ๊ทธ ๋น์ ์๋ํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ํํ ๋ ์ค์ค๋ก ๋ช ๊ฐ์ง ๊ธฐ์ค์ ๋์์ต๋๋ค.
Markdown์ ๋ฏธ๋ฆฌ ๋ณผ ์ ์์ด์ผํ๊ธฐ ๋๋ฌธ์ Markdown Preview์ ์ฐ๋์ด ์ํํด์ผ ํ ๊ฒ, Tool์ ๊ธฐ๋ฅ๋ค์ ์ง์ ๊ตฌํํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ Markdown ๋ฌธ๋ฒ์ ์ง์ ์ ๊ณตํ๋ ์๋ํฐ๋ ํผํ ๊ฒ(๋๋ ์์ด๋ ์ฌ์ฉํ์ง ๋ง ๊ฒ), ์ฆ Toolbar๋ฅผ Customํ๊ฒ ์์
ํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ํํ ๊ฒ. ๊ทธ ์ธ์๋ npm trends๋ฅผ ํตํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํฌ๊ธฐ, ์ด์ฉ์ ์, ์ด์, ์
๋ฐ์ดํธ ๋ฑ์ ํ์ธํ์๊ณ ๊ฐ์ฅ ์ ํฉํ๋ค๊ณ ํ๋จํ React Quill
์ ์ ํํ๊ฒ ๋์์ต๋๋ค.
Quill ์๋ํฐ์์ ํ
์คํธ๋ฅผ ์์ฑํ๋ฉด ์๋์ผ๋ก HTML๋ฌธ๋ฒ์ด ์ ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ์๋
ํ์ธ์
๋ผ๋ ๊ธ์๋ฅผ ์์ฑํ๋ฉด ์๋ํฐ์๋ ๋ณด์ด์ง ์์ง๋ง ๋ด๋ถ์ ์ผ๋ก <p>์๋
ํ์ธ์</p>
๋ผ๊ณ ์ ์ฉ์ด ๋๋ ๊ฒ์ด์ฃ . ์ด๋ ๊ฒ ๋๋ฉด ๋ฌธ์ ๋ Markdown Preview์์ Markdown ๋ฌธ๋ฒ์ด ์ ๋๋ก ๋ณด์ด์ง ์๊ณ HTML Tag๊ฐ ๊ทธ๋๋ก ๋ณด์ฌ์ง๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํ
์คํธ value๋ฅผ Quill์ ๋ฉ์๋ getText()
์์ ๋ฃ์ด์ฃผ๋ฉด HTML Tag๋ฅผ ์ ์ธํ๊ณ ์ค์ง ํ
์คํธ๋ง ์ ์ฉ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ ๊ฒ ํ ๊ฒฝ์ฐ ๋ ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์๋๋ฐ์.
getText()
๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ๊ธฐ์กด์ ์ ์์ฑ๋๋ ํ
์คํธ๊ฐ 1๊ธ์๋ง ์ณ์ง๋ค๋ ๊ฒ์ด์์ต๋๋ค. ์ด ๋ฌธ์ ๋ Quill ์ปดํฌ๋ํธ์ ์์ฑ value
๋ฅผ defaultValue
๋ก ๋ณ๊ฒฝํด์ฃผ๋ ํด๊ฒฐํ ์ ์์์ต๋๋ค. ํ์ง๋ง ์ด๋๊น์ง๋ง ํด๋ ๋ ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ผ๊ณ ๋ ์์ํ์ง ๋ชปํ์ต๋๋ค.
๊ทธ๋ ์ต๋๋ค. ๋ฐ๋ก ์ด๊ฒ์ด ์์ ์ฐ๊ฒฐ๋๋ ๋ฌธ์ ์
๋๋ค. defaultValue
๋ฅผ ์ ์ฉํ ๊ฒฝ์ฐ ์๋ฒ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ฌ ๋ ํด๋น ๋ฐ์ดํฐ๊ฐ ์ ์ฉ๋์ง ์์์ต๋๋ค. defaultValue
๋ผ๋ ์ด๋ฆ๊ณผ ๊ฑธ๋ง๊ฒ ๊ธฐ์กด์ ์ธํ
ํด๋ ํ
์คํธ value๋ง ๋์ฌ ๋ฟ ์๋ก ๋ฐ์์จ ํ
์คํธ value๋ ์ ์ฉ๋์ง ์์๋ ๊ฒ์
๋๋ค. ๋๋์๊ฐ์ defaultValue
๋ผ๋ ์์ฑ์ value
๋ก ๋ฐ๊พธ๋ ์ ์ ์ฉ์ด ๋์์ง๋ง ์ญ์ ์์์ ์ค๋ช
ํ ๊ฒ์ฒ๋ผ 1๊ธ์๋ง ์ณ์ง๋ ํ์์ด ์๊ฒผ๊ณ ์ด ๋๋ฆฝ์ ์ํฉ์ ์ ์ ๊ธ๊ธํ์ต๋๋ค.
์, ์ํ! ๋ ์ฌ๋์ต๋๋ค. ํ
์คํธ value๋ ๋ชจ๋ ์ํ์์ ๊ด๋ฆฌํ๊ณ ๊ณต์ ๋ฉ๋๋ค. GET ์์ฒญ์ผ๋ก ๋ฐ์์จ ๋ฐ์ดํฐ ์ญ์ ์ํ์ ์ ์ฅ๋๊ณ ๊ณต์ ๋ฐ์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด defaultValue
์ ๊ฐ์ ๋ฃ๊ธฐ ์ ์ ์ํ๋ฅผ ํ์ธํ๊ณ ์ ๋ฌด์ ๋ฐ๋ผ ๊ฐ์ ์ ์ดํ๋ฉด ๋์ง ์์๊น์? ๋ง์ต๋๋ค. ์ฒ์์ ํ๋ฉด์ด ๋ ๋๋ง ๋ ๋ ๋ก๋ฉ ์ํ๋ก ๋๊ณ ๋ก๋ฉ ์ํ์ผ ๋ ํ๋ฉด์ ๋ณด์ฌ์ฃผ์ง ์๊ธฐ๋ก ํฉ๋๋ค. ๋ก๋ฉ ์ํ์ผ ๋ GET ์์ฒญ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ณ ์์ฒญ์ด ์ฑ๊ณต ์ฌ๋ถ์ ๋ฐ๋ผ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๊ธฐ๋ก ํ์ต๋๋ค. ๊ฒฐ๊ณผ๋ ์ฑ๊ณต์ ์ด์์ต๋๋ค.
์ด๋ก์จ ๋ฌธ์ ๋ ํด๊ฒฐํ ์ ์์๊ณ , ์ ํ์ํ๊ธฐ๊ณ๋ผ๋ ๊ฐ๋ ์ ์์งํ ์ ์์๋ ๊ณ๊ธฐ๊ฐ ๋์์ต๋๋ค.
Quill์์ ์ ๊ณตํ๋ ๊ธฐ๋ณธ ๋ฉ์๋์ Custom Toolbar ๋ฑ์ผ๋ก ์์
์ ์์ํ 1์ฃผ ์ฐจ์ ๊ธฐ๋ฅ ๊ตฌํ์ด ๊ฑฐ์ ๋ง๋ฌด๋ฆฌ๊ฐ ๋์์ต๋๋ค. ์๊ฐ๋ณด๋ค ์ผ์ฐ ๊ธฐ๋ฅ ๊ตฌํ์ด ๋๋ฌ๊ธฐ ๋๋ฌธ์ ์ค์ค๋ก์๊ฒ๋ ๊ณ ๋ฏผ์ด ์๊ฒผ์ต๋๋ค. ๊ธฐ๋ฅ ์ธ์ ๊ฒ๋ค์ ๋ ์ ๊ฒฝ ์ธ ์ ์๋ ์๊ฐ์ด ํ๋ณด๋์๋ค๋ ๊ฒ์ ๊ธ์ ์ ์ธ ์ฌ์ค์ด๋, '๊ธฐ์ ์ ์ธ ๋์ ๊ณผ ์ฑ์ฅ'์ ์ด์ ์ ๋์์ ๋ ์ค์ค๋ก ์ด๋ก์ด ๋ฐฉํฅ์ ์๋ ์๋ ์๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์์ต๋๋ค. ๊ทธ๋์ ๊ณผ๊ฐํ๊ฒ Quill์ ๊ฑท์ด๋ด๊ณ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํ๋ <textarea>
๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ํ์ต๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก, <textarea>
๋ฅผ ์ฌ์ฉํ์ ๋ ์คํ๋ ค ์ด๋ก์ด ์ ์ด ๋ง์์ต๋๋ค. ๊ธฐ์กด์ Quill์ ์ฌ์ฉํ์ ๋๋ Quill์ ์์กดํ์ฌ ์ ํ์ ์ธ ๋ถ๋ถ์ด ๋ง์์ต๋๋ค. Quill์์๋ module๊ณผ format์ ์ธํ
ํด์ผ ํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์์๊ณ , module์์ Custom Toolbar์ Event Handling์ ๊ตฌํํ ๋ ๊ฐ๊ฐ Component๋ก ๊ตฌํํ๋ ๊ฒ์ด ์๋ Event Handling ํจ์๋ฅผ ์ง์ ๋ฃ์ด์ค์ผ ํ์ต๋๋ค. ๊ทธ๋์ ๊ฐ๊ฐ์ Tool์ ๋ณด์ฌ์ฃผ๋ Component๋ฅผ ๋ง๋ค๊ณ ๊ทธ ์์ ํด๋น ๊ธฐ๋ฅ์ ๋์ํ๋ Event Handling ํจ์๋ฅผ ๋ฃ๋ ๊ฒ์ด ์๋๋ผ ๋ฐ๋ก ๋ฐ๊นฅ์ ๋ง๋ค์ด์ฃผ๊ณ export ์์ผ์ค ํจ์๋ฅผ import ๋ฐ์์ module์ ์ ์ฉํด์ผ๋ง ํ์ต๋๋ค. ํด๋ ๊ตฌ์กฐ๋ ์ฝ๋๊ฐ ๋ณต์กํด์ง๋ค๋ ๋จ์ ๋ ์กด์ฌํ์ต๋๋ค.
<textarea>
๋ก ๋ณ๊ฒฝํ ํ์ ํจ์ฌ ์ ์ฐํด์ก์ต๋๋ค. ๊ฐ ๊ธฐ๋ฅ๊ณผ ๋์์ Component ์์์ ๋ชจ๋ ํด๊ฒฐํ ์ ์์์ต๋๋ค. Component๋ ํจ์ฌ ๊น๋ํด์ก์ต๋๋ค. Quill ๋ด๋ถ์ ๊ฐ๋ค์ console.log
๋ฅผ ํตํด ํ์ธํด๊ฐ๋ฉฐ ๊ธฐ๋ฅ์ ์ ์ฉํ๋ ๊ฒฝํ์ด <textarea>
์์๋ ๊ณ ์ค๋ํ ๋์์ด ๋์์ต๋๋ค. ์ปค์์ ์์น, ๋๋๊ทธ ์์ญ ๊ณ์ฐ, ๋๋๊ทธ๊ฐ ์ฌ๋ฌ ํ์ผ ๊ฒฝ์ฐ ๊ฐ ํ์ ์ฒซ ๋ฒ์งธ index๋ฅผ ์ฐพ๋ ๊ฒ ๋ฑ <textarea>
๊ฐ Quill์ ๋นํด ์ ์ ์ ๋์ด ์์ง๋ ์์์ง๋ง ๋ณด๋ค ๋ด๋ถ ๋ฉ์๋๋ value๊ฐ ๋ฐฉ๋ํ๊ณ ์ ์ ์ฉํ๊ธฐ๋ง ํ๋ค๋ฉด ์ ํ์ ์ธ ๋ถ๋ถ์ด ๋ํ๊ธฐ ๋๋ฌธ์ <textarea>
๋ก ์ด์ ํ ๊ฒ์ ์ข์ ๊ฒฐ์ ์ด์๋ค๊ณ ์๊ฐํฉ๋๋ค.
<textarea>
๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ํฐ ๋ฌธ์ ์ ์ด ํ๋ ์์์ต๋๋ค. ๋ฐ๋ก redo, undo(Ctrl/Command+Z
ํฌํจ)๊ฐ ์๋๋์ง ์๋๋ค๋ ๊ฒ์
๋๋ค. textarea์ current.value ๊ฐ์ ์ฐพ์์ ์ง์ ๋ณ๊ฒฝํด์ฃผ๊ธฐ ๋๋ฌธ์ ์ด์ ๊ฐ์ ๊ธฐ์ตํ์ง ๋ชปํ๋ ๊ฒ์ผ๋ก ์๊ฐ๋์์ต๋๋ค.
์ด์ ๋ํด document.execCommand()
๋ฅผ ์ฌ์ฉํ์ฌ ํด๊ฒฐํ ์ ์์์ต๋๋ค. ํ์ง๋ง MDN์ ๋ฐ๋ฅด๋ฉด ํด๋น ๋ฉ์๋๋ ๋ ์ด์ ์ฌ์ฉํ์ง ์์ผ๋ฉฐ ๊ถ์ฅํ์ง ์๋ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ๋ช
์๋์ด ์์์ต๋๋ค. ์ค๋ ์๋์ ๋์ ๋์ '๋ณ๊ฒฝ๋ ๊ฐ์ ๊ทธ๋๋ก return
ํ๋ ๊ฒ ์๋๋ผ return
ํ๊ธฐ ์ ์ replace๋ฅผ ํด์ฃผ๋ฉด ๋์ง ์์๊น?'๋ผ๋ ์์ด๋์ด๊ฐ ๋ ์ฌ๋๊ณ replace()
๋ฅผ ์ฌ์ฉํ์ง๋ง ๋๋ด ์คํจํ์ต๋๋ค.
ํด๊ฒฐ์ฑ
์ ๋ง๋ จํ๊ธฐ ์ํด ์ฌ๋ฌ ์ฐจ๋ก ๋ฐฉ๋ฒ์ ๋ชจ์ํ๋์ค text-field-edit
์ด๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๊ฒ ๋์์ต๋๋ค. ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์์ฒด์ ์ผ๋ก ํ
์คํธ๋ฅผ ๋ค๋ฅธ ํ
์คํธ๋ก ๊ฐ์ธ์ฃผ๊ฑฐ๋ insertText ๊ธฐ๋ฅ ๋ฑ Markdown ๋ฌธ๋ฒ์ ์ ์ฉํ๊ธฐ์ ํจ์ฌ ์์ํ๊ฒ ์ค๊ณ๋์ด ์์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ต๋๋ค. ํ์ง๋ง ๋จ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ฝ๊ฒ ์ ์ฉํ๋ ๊ฒ์ ์ค์ค๋ก ์ฑ์ฅ์๋ ๋์์ด ๋์ง ์์ ๊ฑฐ๋ผ ํ๋จํ๊ณ , textarea ์์ ์์๋ค์ ํ ๋๋ก ์ง์ ๊ตฌํํ๋ ๊ฒ ๋ ์๋ฏธ๊ฐ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค. ๋์ ์ ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ replace
๊ธฐ๋ฅ๋ง ํ์ฉํ๊ธฐ๋ก ํ์ต๋๋ค. ์ด๊ธฐ์ ์๊ฐํ๋ ์์ด๋์ด์ ๊ฐ๋ฅ์ฌ๋ถ๋ฅผ ํ์ธํ๊ณ ์ถ์๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ฒฐ๊ตญ replace
๋ฅผ ์ฌ์ฉํ์ฌ redo, undo๊ฐ ์๋๋๋ ๊ฒ์ ํ์ธํ ์ ์์์ต๋๋ค.
๋ด ์์ด๋์ด๊ฐ ์ด๋ ์ ๋ ์ฆ๋ช ๋์๋ค๋ ๊ฒ์์ ๋ฟ๋ฏํจ์ ๋๋ ๊ฒ์ ์ฌ์ค์ด์ง๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋์ ์์ด ์ง์ ๊ตฌํํด๋ณด๊ณ ์ถ์๋ ๋ง์์ด์๊ธฐ์ ๋ด์ฌ ์์ฌ์๋ ์์ต๋๋ค. ์ด ๋ถ๋ถ์ ์ฌ๊ธฐ์ ๋๋ด์ง ์๊ณ ์ค์ค๋ก๊ฐ ๋ ์ฑ์ฅํ ์ ์๋๋ก ์ง์ ๊ตฌํ์ ๋์ ํ ์์ ์ ๋๋ค.
"๊ฐ๋ฅํ ๊น? ๊ฐ๋ฅํ๋ค!"
๊ฐ๋ฐ์๋ก ์ ํฅ์ ๋ง์๋จน๊ธฐ ์ , ์คํํธ์ ํ์ฌ์์ ๋ง์ผํฐ๋ก 3๋ ๊ฐ๊น์ด ์์์ต๋๋ค. ๊ณ ๊ฐ๋ค์ ๋ถํธํจ์ ํด์ํด์ฃผ๋ ์ผ๋ค์ ์์์ ์ง์ผ๋ณด๊ณ ๋์ฐธํ๋ฉด์ ์ธ์ ๊ฐ '๋ด๊ฐ ์ง์ ๋ง๋ ์ ํ์ด ๊ณ ๊ฐ๋ค์ ๋ถํธํจ์ ์กฐ๊ธ์ด๋๋ง ํด์ํด์ค ์ ์๋ค๋ฉด ์ข๊ฒ ๋ค'๋ ์๊ฐ์ ํ์ต๋๋ค.
๊ทธ ์ฒซ ์์์ด ์ด ํ๋ก์ ํธ๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ค์ค๋ก ๊ณ ๊ฐ(์ฌ๊ธฐ์๋ ์๋ง์ ๊ฐ๋ฐ์ ์ค ํ ๋ช ์ด๊ฒ ์ฃ )์ด ๋์ด README๋ฅผ ์์ฑํ ๋ ๊ฒช์๋ ๋ถํธํจ์ ๊ฐ์ ํด๋ณด๊ณ ์ถ์์ต๋๋ค. ๋จ์ํ ๋จธ๋ฆฟ์์ ๋ฅ๋ฅ ๋ ๋ค๋๋ ์์ด๋์ด๊ฐ '๊ฐ๋ฅํ ๊น?'๋ผ๋ ํธ๊ธฐ์ฌ ์ด๋ฆฐ ๋ฌผ์์์ '๊ฐ๋ฅํ๋ค!'๋ผ๋ ๋ง์นจํ๋ฅผ ์ฐ์๋ค๋ ์ ์์ ์๋ฏธ๊ฐ ๊น์ต๋๋ค.
์ด ํ๋ก์ ํธ๋ฅผ ์์์ผ๋ก ์๋ก์ด ๋ง์นจํ๋ค์ ํ๋๋์ฉ ์ฐ์ด๊ฐ๋ ๊ฐ๋ฐ์๊ฐ ๋๊ณ ์ถ์ต๋๋ค ๐