์ด์ ์ ์ค๋์ CSV ํ์ผ์ ๋น๊ตํ์ฌ ์ ๋ฐ์ดํธ ํ์๊ฐ 3ํ ์ด์ ์ฆ๊ฐํ ์ ์ ๋ฅผ ์๋ณํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์
๐ https://noahrecyclefarm.github.io/csv-comparison-app
- ๐ CSV ํ์ผ ๋น๊ต: ์ด์ ์ ์ค๋์ CSV ํ์ผ์ ์ ๋ก๋ํ์ฌ ๋น๊ต
- ๐ฏ ์ค๋งํธ ํํฐ๋ง: ์ ๋ฐ์ดํธ ํ์ 3ํ ์ด์ ์ฆ๊ฐํ ์ ์ ์๋ ์๋ณ
- ๐ ๊ตญ๊ฐ ์๋ ํ๋ณ: E164 ์ ํ๋ฒํธ ๊ธฐ๋ฐ ๊ตญ๊ฐ ์๋ณ (ํ๊ตญ/๋ฏธ๊ตญ/๊ธฐํ)
- ๐ ํต๊ณ ์์ฑ: ์ ๋ฐ์ดํธ ํ์๋ณ ์ ์ ์ ํต๊ณ (์ ์ฒด + ๊ตญ๊ฐ๋ณ)
- ๐พ CSV ๋ค์ด๋ก๋: ๊ฒฐ๊ณผ ๋ฐ์ดํฐ๋ฅผ CSV ํ์ผ๋ก ๋ค์ด๋ก๋
- ๊ธฐ์กด ์ ์ : ์ด์ 0, 1, 2ํ โ ์ค๋ 3ํ ์ด์
- ์ ๊ท ์ ์ : ์ด์ ์์ โ ์ค๋ 3ํ ์ด์
- ์ญ์ ์ ์ธ: ์ญ์ ๋์ง ์์ ์ ์ ๋ง ํฌํจ
- ๐ฑ ๋ฐ์ํ ๋์์ธ: ๋ชจ๋ฐ์ผ, ํ๋ธ๋ฆฟ, ๋ฐ์คํฌํฑ ์ง์
- ๐จ ์ง๊ด์ UI: ๋๋๊ทธ ์ค ๋๋กญ ํ์ผ ์ ๋ก๋
- โก ์ค์๊ฐ ์ฒ๋ฆฌ: ๋ธ๋ผ์ฐ์ ์์ ์ฆ์ ๊ฒฐ๊ณผ ํ์ธ
- ๐ง ๋๋ฒ๊น ์ง์: ํ์ฑ ์ํ ๋ฐ ์ปฌ๋ผ ์ธ์ ๊ฒฐ๊ณผ ํ์
- React 18.2.0 - UI ํ๋ ์์ํฌ
- TypeScript 4.9.5 - ํ์ ์์ ์ฑ
- PapaParse 5.4.1 - CSV ํ์ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- CSS3 - ์คํ์ผ๋ง ๋ฐ ๋ฐ์ํ ๋์์ธ
- GitHub Pages - ์ ์ ์น ํธ์คํ
- GitHub Actions - ์๋ ๋ฐฐํฌ (์ ํ์ฌํญ)
| ์ปฌ๋ผ๋ช | ์ค๋ช | ์์ |
|---|---|---|
user_id |
์ ์ ๊ณ ์ ์๋ณ์ | user123 |
์ฌ์ฉํ์ |
์ ๋ฐ์ดํธ ํ์ | 5 |
| ์ปฌ๋ผ๋ช | ์ค๋ช | ์์ |
|---|---|---|
e164 |
๊ตญ์ ์ ํ๋ฒํธ | +821012345678 |
์ญ์ |
์ญ์ ์ฌ๋ถ | false |
user_id,yesterday_count,today_count,difference,e164,country,deleted
user123,1,5,4,+821012345678,ํ๊ตญ,false
user456,0,3,3,+12125551234,๋ฏธ๊ตญ,false
=== ์ ์ฒด ํต๊ณ ===
count,yesterday_users,today_users
0,100,50
1,80,60
...
=== ํ๊ตญ ํต๊ณ ===
count,yesterday_users,today_users
0,50,25
1,40,30
...
# ์ ์ฅ์ ํด๋ก
git clone https://github.com/NoahRecycleFarm/csv-comparison-app.git
cd csv-comparison-app
# ์์กด์ฑ ์ค์น
npm install
# ๊ฐ๋ฐ ์๋ฒ ์์
npm start# ํ๋ก๋์
๋น๋
npm run build
# GitHub Pages ๋ฐฐํฌ
npm run deploy- ์ด์ ํ์ผ: ๊ธฐ์ค์ด ๋๋ ์ด์ ๋ ์ง์ CSV ํ์ผ ์ ๋ก๋
- ์ค๋ ํ์ผ: ๋น๊ต ๋์์ธ ํ์ฌ ๋ ์ง์ CSV ํ์ผ ์ ๋ก๋
- ๋น๊ต ๋ฒํผ ํด๋ฆญํ์ฌ ๋ ํ์ผ ๋น๊ต ์คํ
- ๊ฒฐ๊ณผ๋ ํ๋ฉด์ ์ฆ์ ํ์๋ฉ๋๋ค
- ํํฐ๋ง๋ ์ ์ ๋ชฉ๋ก: ์กฐ๊ฑด์ ๋ง๋ ์ ์ ๋ค ๋ฏธ๋ฆฌ๋ณด๊ธฐ
- ํต๊ณ ์ ๋ณด: ์ ๋ฐ์ดํธ ํ์๋ณ ์ ์ ์ ํต๊ณ
- ๋๋ฒ๊น ์ ๋ณด: ํ์ฑ ์ํ ๋ฐ ์ปฌ๋ผ ์ธ์ ๊ฒฐ๊ณผ
- ํํฐ๋ง๋ ์ ์ CSV: ์กฐ๊ฑด์ ๋ง๋ ์ ์ ๋ค์ ์์ธ ์ ๋ณด
- ํต๊ณ CSV: ์ ์ฒด ๋ฐ ๊ตญ๊ฐ๋ณ ํต๊ณ ๋ฐ์ดํฐ
์ฑ์ ๋ค์ํ ์ปฌ๋ผ๋ช ์ ์๋์ผ๋ก ์ธ์ํฉ๋๋ค:
user_id,userId,user,id๋ฑ
์ฌ์ฉํ์,update_count,count,usage,ํ์๋ฑ
e164,phone,์ ํ๋ฑ
์ญ์ ,deleted,delete,remove๋ฑ
E164 ์ ํ๋ฒํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ ๊ตญ๊ฐ ํ๋ณ:
+1โ ๋ฏธ๊ตญ ๐บ๐ธ+82โ ํ๊ตญ ๐ฐ๐ท- ๊ธฐํ โ ๊ธฐํ ๊ตญ๊ฐ ๐
- ํด๊ฒฐ: ๋ธ๋ผ์ฐ์ ์ฝ์์์
์ฌ์ฉํ ์ปฌ๋ผ๋ช๋ก๊ทธ ํ์ธ - ์กฐ์น: CSV ํ์ผ์ ์ปฌ๋ผ๋ช ์ด ์ธ์ ํจํด์ ๋ง๋์ง ํ์ธ
- ํด๊ฒฐ: ์ฝ์์์
ํํฐ๋ง๋ ์ ์ ๋ค๋ก๊ทธ ํ์ธ - ์กฐ์น: ๋ฐ์ดํฐ ํ์ ๋ฐ ํํฐ๋ง ์กฐ๊ฑด ๊ฒ์ฆ
- ํด๊ฒฐ:
all_usersvsfiltered_users์ฌ์ฉ ํ์ธ - ์กฐ์น: ํต๊ณ ๊ณ์ฐ ๋ก์ง ๊ฒ์ฆ
- F12 โ Console ํญ์์ ์์ธ ๋ก๊ทธ ํ์ธ
- Network ํญ์์ ํ์ผ ์ ๋ก๋ ์ํ ํ์ธ
- ๋ธ๋ผ์ฐ์ ์บ์ ํด๋ฆฌ์ด ํ ์ฌ์๋
- PRD (์ ํ ์๊ตฌ์ฌํญ ๋ฌธ์) - ์ ํ ๊ธฐ๋ฅ ๋ฐ ์๊ตฌ์ฌํญ
- ๊ฐ๋ฐ์ ๊ฐ์ด๋ - ๊ฐ๋ฐ ํ๊ฒฝ ์ค์ ๋ฐ ์ฝ๋ ๊ฐ์ด๋
- API ๋ฌธ์ - ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ฐ ํจ์ ์ค๋ช
- ๋ณ๊ฒฝ ๋ก๊ทธ - ๋ฒ์ ๋ณ ๋ณ๊ฒฝ์ฌํญ
- GitHub Issues์์ ๋ฒ๊ทธ ๋ฆฌํฌํธ
- ์ฌํ ๋จ๊ณ์ ์์ ๊ฒฐ๊ณผ๋ฅผ ํฌํจํด์ฃผ์ธ์
- ์๋ก์ด ๊ธฐ๋ฅ ์์ด๋์ด๋ฅผ Issues์ ์ ์ํด์ฃผ์ธ์
- ์ฌ์ฉ ์ฌ๋ก์ ์ฐ์ ์์๋ฅผ ๋ช ์ํด์ฃผ์ธ์
- Fork โ Feature Branch โ Pull Request
- TypeScript + React ๋ฒ ์คํธ ํ๋ํฐ์ค ์ค์
์ด ํ๋ก์ ํธ๋ MIT License ํ์ ๋ฐฐํฌ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ LICENSE ํ์ผ์ ์ฐธ์กฐํ์ธ์.
- ๊ธฐ์ ์ง์: GitHub Issues
- ์ผ๋ฐ ๋ฌธ์: ๊ฐ๋ฐํ
- ๋ผ์ด๋ธ ๋ฐ๋ชจ: https://noahrecyclefarm.github.io/csv-comparison-app
- โ ๋ฌด๋ฃ ์ฌ์ฉ: GitHub Pages๋ก ๋ฌด๋ฃ ํธ์คํ
- โ ์คํ๋ผ์ธ ์๋: ์๋ฒ ์์ด ๋ธ๋ผ์ฐ์ ์์ ๋ชจ๋ ์ฒ๋ฆฌ
- โ ๋ฐ์ดํฐ ๋ณด์: ํ์ผ์ด ์๋ฒ๋ก ์ ์ก๋์ง ์์
- โ ๋น ๋ฅธ ์ฒ๋ฆฌ: ํด๋ผ์ด์ธํธ ์ฌ์ด๋์์ ์ฆ์ ๊ฒฐ๊ณผ ํ์ธ
- โ ์ ์ฐํ ํ์: ๋ค์ํ CSV ์ปฌ๋ผ๋ช ์๋ ์ธ์
โญ ์ด ํ๋ก์ ํธ๊ฐ ๋์์ด ๋์๋ค๋ฉด Star๋ฅผ ๋๋ฌ์ฃผ์ธ์!
์ต์ข ์ ๋ฐ์ดํธ: 2024๋ 12์ 19์ผ