Windows์ฉ ์ค๋งํธ ํด๋ฆฝ๋ณด๋ ๊ด๋ฆฌ ๋๊ตฌ ๐
ํด๋ฆฝ๋ณด๋ ํ์คํ ๋ฆฌ๋ฅผ ์๋ ์ ์ฅํ๊ณ ๊ฐ๋ ฅํ ๊ฒ์์ผ๋ก ์ธ์ ๋ ์ฐพ์ ์ฌ์ฉํ์ธ์!
ํด๋ฆฝ๋ณด๋ ํ์ผ๋ฟ์ Windows ํด๋ฆฝ๋ณด๋์ ๋ชจ๋ ๋ด์ฉ์ ์๋์ผ๋ก ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ๊ฐ๋ ฅํ ์์ฐ์ฑ ๋๊ตฌ์ ๋๋ค.
๋ณต์ฌํ ๋ด์ฉ์ ์์ด๋ฒ๋ฆฐ ๊ฒฝํ์ด ์์ผ์ ๊ฐ์? ๋ฉฐ์น ์ ๋ณต์ฌํ ํ ์คํธ๋ฅผ ๋ค์ ์ฐพ์ผ๋ ค๊ณ ์ ์ด ์ ์ด ์์ผ์ ๊ฐ์? ํด๋ฆฝ๋ณด๋ ํ์ผ๋ฟ์ด ์ด ๋ชจ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด๋๋ฆฝ๋๋ค!
โ ๏ธ ์ค์: ์ด ์ํํธ์จ์ด๋ ๊ฐ์ธ, ๊ต์ก, ์ฐ๊ตฌ ๋ชฉ์ ์ผ๋ก๋ง ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์ ์ ์ฌ์ฉ์ ๋ณ๋ ๋ผ์ด์ ์ค๊ฐ ํ์ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ผ์ด์ ์ค ์น์ ์ ์ฐธ์กฐํ์ธ์.
- ๐ ์๋ ์์ง: ๋ชจ๋ ํด๋ฆฝ๋ณด๋ ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ์ ์ฅ (ํ ์คํธ, ์ด๋ฏธ์ง, HTML, ํ์ผ ๋ฑ)
- ๐ ๊ฐ๋ ฅํ ๊ฒ์: ํค์๋๋ก ๋น ๋ฅด๊ฒ ๊ฒ์ํ๊ณ ๋ค์ํ ํํฐ๋ก ์ ํํ ์ฐพ๊ธฐ
- โญ ์ฆ๊ฒจ์ฐพ๊ธฐ: ์์ฃผ ์ฌ์ฉํ๋ ํญ๋ชฉ์
Ctrl+Alt+1~9๋ก ์ฆ์ ํธ์ถ - ๐ ํ ๊ณ ์ : ์ค์ํ ํญ๋ชฉ์ ์๋จ์ ๊ณ ์ ํ์ฌ ํญ์ ์ ๊ทผ ๊ฐ๋ฅ
- ๐จ ์ปฌ๋ฌ ๋ผ๋ฒจ: 7๊ฐ์ง ์์์ผ๋ก ํญ๋ชฉ์ ์๊ฐ์ ์ผ๋ก ๋ถ๋ฅ
- ๐ผ๏ธ ์ด๋ฏธ์ง ์ง์: ์ด๋ฏธ์ง ์๋ ์ ์ฅ ๋ฐ ์ธ๋ค์ผ ์์ฑ
- โก ์ ์ญ ๋จ์ถํค: ์ด๋ค ์ฑ์์๋
Ctrl+Shift+V๋ก ๋ฏธ๋ ํจ๋ ํธ์ถ - ๐จ ๋ชจ๋ UI: DevExpress ๊ธฐ๋ฐ์ ์ธ๋ จ๋๊ณ ์ง๊ด์ ์ธ ์ธํฐํ์ด์ค
- ๐ ํ๋ผ์ด๋ฒ์: ๋ก์ปฌ SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ง ์ ์ฅ (์ธํฐ๋ท ๋ถํ์)
์คํฌ๋ฆฐ์ท์ ์ฒซ ๋ฆด๋ฆฌ์ค ํ ์ถ๊ฐ๋ฉ๋๋ค
[๋ฉ์ธ ์ฐฝ ์คํฌ๋ฆฐ์ท]
[๋ฏธ๋ ํจ๋ ์คํฌ๋ฆฐ์ท]
[์ค์ ์ฐฝ ์คํฌ๋ฆฐ์ท]
-
๋ค์ํ ํ์ ์ง์:
- ๐ ์ผ๋ฐ ํ ์คํธ (Text)
- ๐ HTML ์ฝํ ์ธ
- ๐ RTF (Rich Text Format)
- ๐ผ๏ธ ์ด๋ฏธ์ง (PNG, JPG, BMP ๋ฑ)
- ๐ ํ์ผ ๋ฐ ํด๋ ๋ชฉ๋ก
-
์ค๋ณต ๋ฐฉ์ง: ๋์ผํ ๋ด์ฉ์ด 10์ด ๋ด ๋ค์ ๋ณต์ฌ๋๋ฉด ์๋์ผ๋ก ํํฐ๋ง
-
๋ฏผ๊ฐ์ ๋ณด ๋ณดํธ: ๋น๋ฐ๋ฒํธ ํจํด ์๋ ๊ฐ์ง ๋ฐ ํํฐ๋ง
-
์ฉ๋ ๊ด๋ฆฌ: ์ต๋ 1000๊ฐ ํญ๋ชฉ ๋ณด๊ด (์ค์ ๊ฐ๋ฅ)
-
์๋ ์ ๋ฆฌ: 30์ผ ์ด์ ์ค๋๋ ํญ๋ชฉ ์๋ ์ญ์ (์ค์ ๊ฐ๋ฅ)
-
์๊ธฐ ์์ ํํฐ: ํ๋ก๊ทธ๋จ ๋ด์์ ๋ณต์ฌํ ํญ๋ชฉ์ ๋ค์ ์์งํ์ง ์์ โจ
- ๐ ์ค๋: ์ค๋ ๋ณต์ฌํ ํญ๋ชฉ๋ง ํ์
- ๐ ์ต๊ทผ 24์๊ฐ: ์ต๊ทผ ํ๋ฃจ ๋์์ ํญ๋ชฉ
- ๐ผ๏ธ ์ด๋ฏธ์ง: ์ด๋ฏธ์ง๋ง ํํฐ๋ง
- ๐ ํ ์คํธ: ํ ์คํธ๋ง ํํฐ๋ง
- ๐ ๊ณ ์ ๋จ: ํ์ผ๋ก ๊ณ ์ ํ ์ค์ ํญ๋ชฉ
- ๐ ์ ํ๋ณ: Text, HTML, RTF, Image, FileList
- ๐จ ๋ผ๋ฒจ๋ณ: 7๊ฐ์ง ์ปฌ๋ฌ ๋ผ๋ฒจ๋ก ๋ถ๋ฅ
- ๐ ๋ ์ง ๋ฒ์: ํน์ ๊ธฐ๊ฐ์ ํญ๋ชฉ ๊ฒ์
- ๐ ํฌ๊ธฐ๋ณ: ํ์ผ ํฌ๊ธฐ๋ก ํํฐ๋ง
- โก ํ์ดํํ๋ ์ฆ์ ๊ฒ์ ๊ฒฐ๊ณผ ์ ๋ฐ์ดํธ
- ๐ฏ ์ ๋ชฉ, ๋ด์ฉ, ์์ค ์ฑ ๋ฑ ๋ชจ๋ ํ๋ ๊ฒ์
ํญ๋ชฉ ์ ํ โ 1~9 ์ซ์ ํค ์
๋ ฅ โ ์ฆ๊ฒจ์ฐพ๊ธฐ ๋ฑ๋ก ์๋ฃ!
- ๋น ๋ฅธ ์ ๊ทผ:
Ctrl+Alt+1~9๋ก ์ด๋์๋ ์ฆ์ ๋ถ์ฌ๋ฃ๊ธฐ - ์๊ฐ์ ํ์: ์ฆ๊ฒจ์ฐพ๊ธฐ ์์ ๋ฑ์ง ํ์
- ๋ฎ์ด์ฐ๊ธฐ ํ์ธ: ์ด๋ฏธ ์ฌ์ฉ ์ค์ธ ์ซ์ ์ ํ ์ ํ์ธ ๋ฉ์์ง
| ๋จ์ถํค | ๊ธฐ๋ฅ |
|---|---|
Ctrl+Shift+V |
๋ฏธ๋ ํจ๋ ์ด๊ธฐ |
Ctrl+Alt+V |
์ด์ ํญ๋ชฉ ๋ถ์ฌ๋ฃ๊ธฐ |
Ctrl+Alt+1~9 |
์ฆ๊ฒจ์ฐพ๊ธฐ ํญ๋ชฉ ๋ถ์ฌ๋ฃ๊ธฐ |
| ๋จ์ถํค | ๊ธฐ๋ฅ |
|---|---|
Ctrl+F |
๊ฒ์์ฐฝ ํฌ์ปค์ค |
Ctrl+D |
์ ํ ํญ๋ชฉ ์ญ์ |
Ctrl+P |
์ ํ ํญ๋ชฉ ๊ณ ์ /ํด์ |
F5 |
์๋ก๊ณ ์นจ |
Esc |
ํํฐ ์ด๊ธฐํ |
Enter |
์ ํ ํญ๋ชฉ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ |
1~9 |
์ฆ๊ฒจ์ฐพ๊ธฐ ์ค์ |
| ๋จ์ถํค | ๊ธฐ๋ฅ |
|---|---|
โ / โ |
ํญ๋ชฉ ์ ํ ์ด๋ |
Enter |
์ ํ ํญ๋ชฉ ๋ถ์ฌ๋ฃ๊ธฐ |
Esc |
๋ฏธ๋ ํจ๋ ๋ซ๊ธฐ |
Ctrl+1~9 |
์ฆ๊ฒจ์ฐพ๊ธฐ ๋ถ์ฌ๋ฃ๊ธฐ |
- OS: Windows 10 (Build 1903 ์ด์) ๋๋ Windows 11
- .NET: .NET 8.0 Runtime (์ค์น ํ์ผ์ ํฌํจ๋จ)
- ๋ฉ๋ชจ๋ฆฌ: 512MB RAM
- ๋์คํฌ: 100MB ์ฌ์ ๊ณต๊ฐ
- ํด์๋: 1280x720 ์ด์
- OS: Windows 11
- ๋ฉ๋ชจ๋ฆฌ: 1GB RAM ์ด์
- ๋์คํฌ: 500MB ์ฌ์ ๊ณต๊ฐ (์ด๋ฏธ์ง ์ ์ฅ ์)
- ํด์๋: 1920x1080 ์ด์
- โ Windows 7/8/8.1
- โ Windows Server (ํ ์คํธ๋์ง ์์)
- โ ARM64 ํ๋ก์ธ์ (ํ์ฌ x64๋ง ์ง์)
- Releases ํ์ด์ง๋ก ์ด๋
- ์ต์ ๋ฒ์ ์
ClipboardPilot-Setup-v1.0.0.exe๋ค์ด๋ก๋ - ๋ค์ด๋ก๋ํ ํ์ผ ์คํ
- ์ค์น ๋ง๋ฒ์ฌ๋ฅผ ๋ฐ๋ผ ์งํ
- ์ค์น ์๋ฃ ํ ํ๋ก๊ทธ๋จ ์คํ!
์ค์น ์์น: C:\Program Files\Clipboard Pilot\
- Releases ํ์ด์ง์์
ClipboardPilot-v1.0.0-win-x64.zip๋ค์ด๋ก๋ - ์ํ๋ ํด๋์ ์์ถ ํด์
ClipboardPilot.exe์คํ
์ฅ์ : ์ค์น ๋ถํ์, USB์ ๋ฃ๊ณ ๋ค๋๊ธฐ ๊ฐ๋ฅ
# 1. ์ ์ฅ์ ํด๋ก
git clone https://github.com/yourusername/ClipboardPilot.git
cd ClipboardPilot
# 2. ํจํค์ง ๋ณต์ ๋ฐ ๋น๋
dotnet restore
dotnet build -c Release
# 3. ์คํ
dotnet run --project ClipboardPilot/ClipboardPilot.csproj
# ๋๋ ๊ฐ๋จํ๊ฒ
.\Build-Simple.ps1์์ธํ ๋น๋ ๊ฐ์ด๋๋ INSTALLATION.md๋ฅผ ์ฐธ์กฐํ์ธ์.
-
ํ๋ก๊ทธ๋จ ์คํ
- ์ค์น ํ ์๋์ผ๋ก ์คํ๋๊ฑฐ๋
- ์์ ๋ฉ๋ด์์ "Clipboard Pilot" ๊ฒ์
-
์๋ ์์ง ์์
- ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ฉด ์๋์ผ๋ก ํด๋ฆฝ๋ณด๋ ๊ฐ์ ์์
- ์ํ๋ฐ์์ "Clipboard watching..." ํ์ธ
-
์ฒซ ํญ๋ชฉ ๋ณต์ฌ
- ์๋ฌด ํ
์คํธ๋
Ctrl+C๋ก ๋ณต์ฌ - ๋ฉ์ธ ์ฐฝ์ ์ฆ์ ๋ํ๋๋ ๊ฒ์ ํ์ธ!
- ์๋ฌด ํ
์คํธ๋
graph LR
A[์ธ๋ถ ์ฑ์์ ๋ณต์ฌ] -->|Ctrl+C| B[์๋ ์ ์ฅ]
B --> C[๊ฒ์/ํํฐ]
C --> D[ํญ๋ชฉ ์ ํ]
D --> E[๋ณต์ฌ ๋๋ ๋ถ์ฌ๋ฃ๊ธฐ]
D --> F[์ฆ๊ฒจ์ฐพ๊ธฐ ๋ฑ๋ก]
D --> G[๋ผ๋ฒจ/ํ ์ค์ ]
๊ฒ์์ด: "invoice" โ ๋ชจ๋ invoice ๊ด๋ จ ํญ๋ชฉ ํ์
๊ฒ์์ด: "2024" โ 2024๊ฐ ํฌํจ๋ ๋ชจ๋ ํญ๋ชฉ
ํํฐ: ์ค๋ + ์ด๋ฏธ์ง โ ์ค๋ ๋ณต์ฌํ ์ด๋ฏธ์ง๋ง
์๋๋ฆฌ์ค: ์์ฃผ ์ฌ์ฉํ๋ ์ด๋ฉ์ผ ์ฃผ์
1. ์ด๋ฉ์ผ ์ฃผ์ ํญ๋ชฉ ์ ํ
2. ํค๋ณด๋์์ "1" ์
๋ ฅ
3. "Favorite rank set to 1" ๋ฉ์์ง ํ์ธ
4. ์ด์ ์ด๋์๋ Ctrl+Alt+1๋ก ์ฆ์ ๋ถ์ฌ๋ฃ๊ธฐ!
๋นจ๊ฐ โ ๊ธด๊ธ/์ค์
์ฃผํฉ โ ์์
๊ด๋ จ
๋
ธ๋ โ ์ฐธ๊ณ ์ฌํญ
์ด๋ก โ ์๋ฃ
ํ๋ โ ๊ฐ์ธ
๋ณด๋ผ โ ์์ด๋์ด
๋ชจ๋ ๋ฐ์ดํฐ๋ ์ฌ์ฉ์ ํ๋กํ ํด๋์ ์์ ํ๊ฒ ์ ์ฅ๋ฉ๋๋ค:
%APPDATA%\ClipboardPilot\
โ
โโโ clipboard-pilot.db # ๐ SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค (๋ฉ์ธ ๋ฐ์ดํฐ)
โโโ clipboard-pilot.settings.json # โ๏ธ ์ฌ์ฉ์ ์ค์
โโโ Images\ # ๐ผ๏ธ ์ด๋ฏธ์ง ์บ์ ํด๋
โ โโโ {guid}_001.png
โ โโโ {guid}_002.jpg
โ โโโ ...
โโโ Logs\ # ๐ ์ ํ๋ฆฌ์ผ์ด์
๋ก๊ทธ
โโโ clipboard-pilot-20241031.log
โโโ ...
์ค์ ๊ฒฝ๋ก ์์:
C:\Users\YourName\AppData\Roaming\ClipboardPilot\
- โ ์์ ์คํ๋ผ์ธ: ์ธํฐ๋ท ์ฐ๊ฒฐ ๋ถํ์
- โ ๋ก์ปฌ ์ ์ฅ: ๋ชจ๋ ๋ฐ์ดํฐ๋ ์ฌ์ฉ์ PC์๋ง ์ ์ฅ
- โ ๋ฏผ๊ฐ์ ๋ณด ํํฐ: ๋น๋ฐ๋ฒํธ ํจํด ์๋ ๊ฐ์ง ๋ฐ ์ ์ธ
- โ ์ํธํ ์ต์ : ํฅํ ๋ฒ์ ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํธํ ์ง์ ์์
๊ฐ๋ณ ํญ๋ชฉ ์ญ์ :
ํญ๋ชฉ ์ ํ โ Ctrl+D ๋๋ ์ฐํด๋ฆญ > ์ญ์
์๋ ์ ๋ฆฌ:
์ค์ > ์๋ ์ ๋ฆฌ > 30์ผ ์ด์ ํญ๋ชฉ ์๋ ์ญ์ (๊ธฐ๋ณธ๊ฐ)
์ ์ฒด ์ญ์ :
1. ํ๋ก๊ทธ๋จ ์ข
๋ฃ
2. %APPDATA%\ClipboardPilot ํด๋ ์ญ์
3. ์ฌ์์ ์ ์๋ก ์์ฑ๋จ
%APPDATA%\ClipboardPilot\clipboard-pilot.settings.json
{
"General": {
"MaxItemsToKeep": 1000, // ์ต๋ ๋ณด๊ด ํญ๋ชฉ ์
"AutoCleanupEnabled": true, // ์๋ ์ ๋ฆฌ ํ์ฑํ
"AutoCleanupDays": 30, // ์ ๋ฆฌ ๊ธฐ์ค (์ผ)
"StartWithWindows": false, // ์๋์ฐ ์์ ์ ์๋ ์คํ
"MinimizeToTray": true, // ํธ๋ ์ด๋ก ์ต์ํ
"ShowNotifications": true // ์๋ฆผ ํ์
},
"Collection": {
"Enabled": true, // ํด๋ฆฝ๋ณด๋ ์์ง ํ์ฑํ
"SaveImages": true, // ์ด๋ฏธ์ง ์ ์ฅ
"SaveHtml": true, // HTML ์ ์ฅ
"SaveFiles": true, // ํ์ผ ๋ชฉ๋ก ์ ์ฅ
"FilterSensitiveData": true, // ๋ฏผ๊ฐ ์ ๋ณด ํํฐ๋ง
"MinTextLength": 1, // ์ต์ ํ
์คํธ ๊ธธ์ด
"MaxTextLength": 100000, // ์ต๋ ํ
์คํธ ๊ธธ์ด
"ThumbnailSize": 200, // ์ธ๋ค์ผ ํฌ๊ธฐ (ํฝ์
)
"MaxImageSizeMB": 10, // ์ต๋ ์ด๋ฏธ์ง ํฌ๊ธฐ (MB)
"ImageStorageMode": "FileSystem" // ์ด๋ฏธ์ง ์ ์ฅ ๋ฐฉ์
},
"Hotkeys": {
"ShowMiniPanel": "Control+Shift+V",
"PastePrevious": "Control+Alt+V",
"Favorite1": "Control+Alt+D1",
// ... Favorite2~9
}
}๋ฉ์ธ ๋ฉ๋ด > ์ค์ (๋๋ F10) > ์ํ๋ ์ต์
์กฐ์ > ์ ์ฅ
| ์นดํ ๊ณ ๋ฆฌ | ๊ธฐ์ | ๋ฒ์ |
|---|---|---|
| Framework | .NET | 8.0 |
| UI Framework | WPF | Latest |
| UI Library | DevExpress WPF | 23.2+ |
| Database | SQLite | Latest |
| ORM | Entity Framework Core | 8.0 |
| MVVM | CommunityToolkit.Mvvm | 8.2+ |
| Logging | Serilog | 3.1+ |
| Language | C# | 12.0 |
ClipboardPilot/
โ
โโโ ๐ Domain/ # ๋๋ฉ์ธ ๊ณ์ธต (ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง)
โ โโโ Entities/ # ์ํฐํฐ ํด๋์ค
โ โ โโโ ClipboardItem.cs # ํด๋ฆฝ๋ณด๋ ํญ๋ชฉ ๋ชจ๋ธ
โ โโโ Enums/ # ์ด๊ฑฐํ
โ โ โโโ ClipboardType.cs # ํญ๋ชฉ ์ ํ
โ โ โโโ ColorLabel.cs # ์ปฌ๋ฌ ๋ผ๋ฒจ
โ โโโ Interfaces/ # ์ธํฐํ์ด์ค ์ ์
โ โโโ IClipboardRepository.cs
โ โโโ IUnitOfWork.cs
โ
โโโ ๐ Infrastructure/ # ์ธํ๋ผ ๊ณ์ธต (๋ฐ์ดํฐ ์ก์ธ์ค)
โ โโโ Data/
โ โ โโโ AppDbContext.cs # EF Core DbContext
โ โ โโโ UnitOfWork.cs # Unit of Work ํจํด
โ โโโ Repositories/
โ โโโ ClipboardRepository.cs # ๋ฆฌํฌ์งํ ๋ฆฌ ๊ตฌํ
โ
โโโ ๐ Services/ # ์๋น์ค ๊ณ์ธต (์ ํ๋ฆฌ์ผ์ด์
๋ก์ง)
โ โโโ ClipboardWatcher.cs # ํด๋ฆฝ๋ณด๋ ๊ฐ์ ์๋น์ค
โ โโโ HotkeyService.cs # ๋จ์ถํค ๊ด๋ฆฌ
โ โโโ ImageService.cs # ์ด๋ฏธ์ง ์ฒ๋ฆฌ
โ โโโ SettingsService.cs # ์ค์ ๊ด๋ฆฌ
โ
โโโ ๐ ViewModels/ # MVVM ๋ทฐ๋ชจ๋ธ
โ โโโ MainViewModel.cs # ๋ฉ์ธ ์ฐฝ ๋ทฐ๋ชจ๋ธ
โ โโโ MiniPanelViewModel.cs # ๋ฏธ๋ ํจ๋ ๋ทฐ๋ชจ๋ธ
โ โโโ SettingsViewModel.cs # ์ค์ ์ฐฝ ๋ทฐ๋ชจ๋ธ
โ
โโโ ๐ Views/ # XAML ๋ทฐ
โ โโโ MiniPanelWindow.xaml # ๋ฏธ๋ ํจ๋ ์ฐฝ
โ โโโ SettingsWindow.xaml # ์ค์ ์ฐฝ
โ
โโโ ๐ Converters/ # XAML ๊ฐ ๋ณํ๊ธฐ
โ โโโ ValueConverters.cs # ๊ฐ์ข
์ปจ๋ฒํฐ
โ
โโโ ๐ Models/ # ๋ชจ๋ธ ํด๋์ค
โ โโโ AppSettings.cs # ์ค์ ๋ชจ๋ธ
โ
โโโ MainWindow.xaml # ๋ฉ์ธ ์ฐฝ
โโโ App.xaml # ์ ํ๋ฆฌ์ผ์ด์
์ง์
์
โโโ clipboard-pilot.settings.json # ๊ธฐ๋ณธ ์ค์
# 1. .NET 8.0 SDK ์ค์น
winget install Microsoft.DotNet.SDK.8
# 2. Visual Studio 2022 ์ค์น (Community ๋ฌด๋ฃ)
winget install Microsoft.VisualStudio.2022.Community
# 3. Git ์ค์น
winget install Git.Git# ์ ์ฅ์ ํด๋ก
git clone https://github.com/yourusername/ClipboardPilot.git
cd ClipboardPilot
# NuGet ํจํค์ง ๋ณต์
dotnet restore
# ๋๋ฒ๊ทธ ๋น๋
dotnet build
# ์คํ
dotnet run --project ClipboardPilot/ClipboardPilot.csproj1. Visual Studio 2022 ์คํ
2. File > Open > Project/Solution
3. ClipboardPilot.sln ์ด๊ธฐ
4. F5 (๋๋ฒ๊ทธ ์์)
.\Build-Simple.ps1 -Version "1.0.0".\Build-Release.ps1 -Version "1.0.0"์์ธ ๊ฐ์ด๋: INSTALLATION.md
# ๋จ์ ํ
์คํธ ์คํ (ํฅํ ์ถ๊ฐ ์์ )
dotnet test
# ์ปค๋ฒ๋ฆฌ์ง ๋ฆฌํฌํธ ์์ฑ
dotnet test --collect:"XPlat Code Coverage"- โ
.editorconfig์ค์ ์ค์ - โ PascalCase: ํด๋์ค, ๋ฉ์๋, ํ๋กํผํฐ
- โ camelCase: ๋ก์ปฌ ๋ณ์, ๋งค๊ฐ๋ณ์
- โ _camelCase: private ํ๋
- โ ์ฃผ์์ ํ๊ธ๋ก ์์ฑ (์ฝ๋ ์ดํด๋ฅผ ์ํด)
- โ XML ๋ฌธ์ํ ์ฃผ์ ๊ถ์ฅ
feat: ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ
fix: ๋ฒ๊ทธ ์์
docs: ๋ฌธ์ ์์
style: ์ฝ๋ ํฌ๋งทํ
refactor: ์ฝ๋ ๋ฆฌํฉํ ๋ง
test: ํ
์คํธ ์ถ๊ฐ
chore: ๋น๋/์ค์ ๊ด๋ จ
%APPDATA%\ClipboardPilot\Logs\clipboard-pilot-{date}.log
appsettings.json ์์ ๋ก๊ทธ ๋ ๋ฒจ ์กฐ์ ๊ฐ๋ฅ:
{
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"ClipboardPilot": "Debug"
}
}
}
}๊ธฐ์ฌ๋ ์ธ์ ๋ ํ์ํฉ๋๋ค! ๐
- ์ด ์ ์ฅ์๋ฅผ Fork ํฉ๋๋ค
- Feature ๋ธ๋์น๋ฅผ ์์ฑํฉ๋๋ค
git checkout -b feature/AmazingFeature
- ๋ณ๊ฒฝ์ฌํญ์ ์ปค๋ฐํฉ๋๋ค
git commit -m 'feat: Add some AmazingFeature' - ๋ธ๋์น์ Pushํฉ๋๋ค
git push origin feature/AmazingFeature
- Pull Request๋ฅผ ์์ฑํฉ๋๋ค
- ๐ ์ฝ๋ ์คํ์ผ ์ค์ (
.editorconfig) - โ ๋น๋ ์๋ฌ ์์ด ์ปดํ์ผ๋์ด์ผ ํจ
- ๐ ์ฃผ์ ๋ณ๊ฒฝ์ฌํญ์ ๋ฌธ์ํ
- ๐งช ๊ฐ๋ฅํ๋ฉด ํ ์คํธ ์ฝ๋ ํฌํจ
- ๐ฌ Pull Request์ ๋ช ํํ ์ค๋ช ์์ฑ
- ๐ ๋ฒ๊ทธ ์์
- โจ ์๋ก์ด ๊ธฐ๋ฅ ์ ์ ๋ฐ ๊ตฌํ
- ๐ ๋ฌธ์ ๊ฐ์
- ๐ ๋ค๊ตญ์ด ์ง์ (i18n)
- ๐จ UI/UX ๊ฐ์
- โก ์ฑ๋ฅ ์ต์ ํ
- ๐งช ํ ์คํธ ์ฝ๋ ์์ฑ
Issues ํ์ด์ง์์ ๋ฒ๊ทธ ๋ฆฌํฌํธ๋ฅผ ์์ฑํด์ฃผ์ธ์.
๋ฒ๊ทธ ๋ฆฌํฌํธ ํ ํ๋ฆฟ:
## ํ๊ฒฝ
- OS: Windows 11 22H2
- .NET: 8.0
- ๋ฒ์ : v1.0.0
## ์ฌํ ๋ฐฉ๋ฒ
1. ๋ฉ์ธ ์ฐฝ ์ด๊ธฐ
2. ๊ฒ์์ฐฝ์ "test" ์
๋ ฅ
3. Enter ํค ๋๋ฅด๊ธฐ
4. ์๋ฌ ๋ฐ์
## ์์ ๋์
๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ํ์๋์ด์ผ ํจ
## ์ค์ ๋์
์ฑ์ด ํฌ๋์๋จ
## ์คํฌ๋ฆฐ์ท
(๊ฐ๋ฅํ๋ฉด ์ฒจ๋ถ)
## ๋ก๊ทธ
%APPDATA%\ClipboardPilot\Logs\ ์ ์ต์ ๋ก๊ทธ ํ์ผ ์ฒจ๋ถIssues ํ์ด์ง์์ ๊ธฐ๋ฅ ์ ์์ ์์ฑํด์ฃผ์ธ์.
๊ธฐ๋ฅ ์ ์ ํ ํ๋ฆฟ:
## ์ ์ํ๋ ๊ธฐ๋ฅ
ํด๋ฆฝ๋ณด๋ ํ์คํ ๋ฆฌ ๋๊ธฐํ ๊ธฐ๋ฅ
## ํด๊ฒฐํ๋ ค๋ ๋ฌธ์
์ฌ๋ฌ PC์์ ๋์ผํ ํด๋ฆฝ๋ณด๋ ํ์คํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค.
## ์ ์ํ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ
OneDrive/Google Drive๋ฅผ ํตํ ๋๊ธฐํ
## ๋์
์์
## ์ถ๊ฐ ์ปจํ
์คํธ
(์คํฌ๋ฆฐ์ท, ์์ ๋ฑ)- ๐ ์ต์ด ๊ณต๊ฐ ๋ฆด๋ฆฌ์ค
- ๐ ์๋ ํด๋ฆฝ๋ณด๋ ํ์คํ ๋ฆฌ ์์ง
- ํ ์คํธ, HTML, RTF, ์ด๋ฏธ์ง, ํ์ผ ๋ชฉ๋ก ์ง์
- ๐ ๊ฐ๋ ฅํ ๊ฒ์ ๋ฐ ํํฐ๋ง ์์คํ
- โญ ์ฆ๊ฒจ์ฐพ๊ธฐ ์์คํ (1-9 ์์)
- ๐ ํ ๊ณ ์ ๊ธฐ๋ฅ
- ๐จ 7๊ฐ์ง ์ปฌ๋ฌ ๋ผ๋ฒจ
- โก ์ ์ญ ๋จ์ถํค ์ง์
- Ctrl+Shift+V: ๋ฏธ๋ ํจ๋
- Ctrl+Alt+V: ์ด์ ํญ๋ชฉ ๋ถ์ฌ๋ฃ๊ธฐ
- Ctrl+Alt+1~9: ์ฆ๊ฒจ์ฐพ๊ธฐ ๋ถ์ฌ๋ฃ๊ธฐ
- ๐ผ๏ธ ์ด๋ฏธ์ง ์ธ๋ค์ผ ์๋ ์์ฑ
- ๐ ๋ฏผ๊ฐ์ ๋ณด ์๋ ํํฐ๋ง
- ๐พ SQLite ๊ธฐ๋ฐ ๋ก์ปฌ ์ ์ฅ์
- ๐จ DevExpress ๊ธฐ๋ฐ ๋ชจ๋ UI
- ๋ก์ปฌ ์คํ๋ผ์ธ ์ ์ฅ (์ธํฐ๋ท ๋ถํ์)
- ๋น๋ฐ๋ฒํธ ํจํด ์๋ ๊ฐ์ง ๋ฐ ์ ์ธ
- ์๊ธฐ ์์ ์ ๋ณต์ฌ ์์ ํํฐ๋ง (๋ฌดํ ๋ฃจํ ๋ฐฉ์ง)
- .NET 8.0
- WPF + DevExpress
- Entity Framework Core 8
- SQLite
- Serilog
์ด ํ๋ก์ ํธ๋ Creative Commons BY-NC-SA 4.0 ๋ผ์ด์ ์ค ํ์ ๋ฐฐํฌ๋ฉ๋๋ค.
- โ ๊ฐ์ธ ์ฌ์ฉ: ์์ ๋กญ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅ
- โ ๊ต์ก ๋ชฉ์ : ํ๊ต, ๊ต์ก ๊ธฐ๊ด์์ ์ฌ์ฉ
- โ ์ฐ๊ตฌ ๋ชฉ์ : ํ์ ์ฐ๊ตฌ์ ํ์ฉ
- โ ์์ ๋ฐ ์ฌ๋ฐฐํฌ: ์์ค ์์ ๊ฐ๋ฅ (๋์ผ ๋ผ์ด์ ์ค ์ ์ฉ ์)
- โ ์คํ์์ค ํ๋ก์ ํธ: ๋ค๋ฅธ ์คํ์์ค ํ๋ก์ ํธ์ ํฌํจ
- โ ์์ ์ ํ๋งค: ์ํํธ์จ์ด ์์ฒด ํ๋งค ๊ธ์ง
- โ ์ ๋ฃ ์๋น์ค: ์ ๋ฃ ์๋น์ค์ ํฌํจ ๊ธ์ง
- โ ๊ธฐ์ ๋ด๋ถ ์ฌ์ฉ: ์๋ฆฌ ๋ชฉ์ ํ์ฌ ์ ๋ฌด์ฉ ์ฌ์ฉ ๊ธ์ง
- โ ๊ด๊ณ ์์ต: ๊ด๊ณ ๋ฅผ ํตํ ์์ต ์ฐฝ์ถ ๊ธ์ง
๊ธฐ์ ์ด๋ ์์ ์ ์ฉ๋๋ก ์ฌ์ฉํ์๋ ค๋ฉด ๋ณ๋์ ์์ ์ ๋ผ์ด์ ์ค๊ฐ ํ์ํฉ๋๋ค.
์์ ์ ๋ผ์ด์ ์ค ๋ฌธ์:
- ๐ง ์ด๋ฉ์ผ: b_h_woo@naver.com
- ๐ข ๊ธฐ์ ๋ผ์ด์ ์ค, OEM ๋ผ์ด์ ์ค ๋ฑ ํ์ ๊ฐ๋ฅ
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International
Copyright (c) 2024 Clipboard Pilot
์ด ์ ์๋ฌผ์ ํฌ๋ฆฌ์์ดํฐ๋ธ ์ปค๋จผ์ฆ ์ ์์ํ์-๋น์๋ฆฌ-๋์ผ์กฐ๊ฑด๋ณ๊ฒฝํ๋ฝ 4.0
๊ตญ์ ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ์ด์ฉํ ์ ์์ต๋๋ค.
์ ๋ฌธ ๋ณด๊ธฐ: https://creativecommons.org/licenses/by-nc-sa/4.0/
ํ๊ตญ์ด: https://creativecommons.org/licenses/by-nc-sa/4.0/deed.ko
์ด ์ํํธ์จ์ด๋ "์๋ ๊ทธ๋๋ก(AS IS)" ์ ๊ณต๋๋ฉฐ, ๋ช ์์ ์ด๊ฑฐ๋ ๋ฌต์์ ์ธ ์ด๋ ํ ๋ณด์ฆ๋ ํ์ง ์์ต๋๋ค. ์ํํธ์จ์ด ์ฌ์ฉ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ์ํด์ ๋ํด ๊ฐ๋ฐ์๋ ์ฑ ์์ ์ง์ง ์์ต๋๋ค.
์์ธํ ๋ผ์ด์ ์ค ๋ด์ฉ: LICENSE.txt
์ด ํ๋ก์ ํธ๋ ๋ค์ ํ๋ฅญํ ์คํ์์ค ํ๋ก์ ํธ๋ค์ ์ฌ์ฉํฉ๋๋ค:
- DevExpress WPF - UI ์ปดํฌ๋ํธ
- Entity Framework Core - ORM
- CommunityToolkit.Mvvm - MVVM ํ๋ ์์ํฌ
- Serilog - ๋ก๊น ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- SQLite - ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๐ง ์ด๋ฉ์ผ: b_h_woo@naver.com
- ๐ GitHub: ์ด ์ ์ฅ์
- ๐ ๋ฒ๊ทธ ๋ฆฌํฌํธ: GitHub Issues
- ๐ก ๊ธฐ๋ฅ ์ ์: GitHub Discussions
- ๐ ๋ฌธ์: Wiki (์ค๋น ์ค)
- ๐ฌ Discord: (ํฅํ ๊ฐ์ค ์์ )
- ๐ข ๋ธ๋ก๊ทธ: (ํฅํ ๊ฐ์ค ์์ )
- ํด๋ฆฝ๋ณด๋ ํ์คํ ๋ฆฌ ๋ด๋ณด๋ด๊ธฐ/๊ฐ์ ธ์ค๊ธฐ (JSON, CSV)
- ํ ์คํธ ๋ณํ ๋๊ตฌ (๋์๋ฌธ์, ์ธ์ฝ๋ฉ ๋ฑ)
- ํฅ์๋ ์ด๋ฏธ์ง ํธ์ง ๊ธฐ๋ฅ
- ํต๊ณ ๋์๋ณด๋
- ํ๋ฌ๊ทธ์ธ ์์คํ
- ํด๋ผ์ฐ๋ ๋๊ธฐํ (์ ํ์ฌํญ)
- OCR ์ง์ (์ด๋ฏธ์ง โ ํ ์คํธ)
- ๋ค๊ตญ์ด ์ง์ (์์ด, ์ผ๋ณธ์ด)
- ํฌ๋ก์ค ํ๋ซํผ ์ง์ (macOS, Linux)
- ๋ชจ๋ฐ์ผ ์ฑ ์ฐ๋
- AI ๊ธฐ๋ฐ ์ค๋งํธ ๋ถ๋ฅ
- ์์ฑ ๋ช ๋ น ์ง์
Q: ๋ฌด๋ฃ์ธ๊ฐ์?
A: ๋ค, ์์ ๋ฌด๋ฃ์ด๋ฉฐ ์คํ์์ค์ ๋๋ค! ๋ผ์ด์ ์ค ํ์ ์์ ๋กญ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Q: ๋ฐ์ดํฐ๋ ์ด๋์ ์ ์ฅ๋๋์?
A: ๋ชจ๋ ๋ฐ์ดํฐ๋ ๋ก์ปฌ PC (%APPDATA%\ClipboardPilot\)์๋ง ์ ์ฅ๋ฉ๋๋ค. ์ธํฐ๋ท ์ฐ๊ฒฐ์ด๋ ํด๋ผ์ฐ๋ ์
๋ก๋๋ ์์ต๋๋ค.
Q: ๋น๋ฐ๋ฒํธ๋ ์ ์ฅ๋๋์?
A: ์๋์. ๋น๋ฐ๋ฒํธ ํจํด์ผ๋ก ๊ฐ์ง๋ ํ ์คํธ๋ ์๋์ผ๋ก ํํฐ๋ง๋์ด ์ ์ฅ๋์ง ์์ต๋๋ค.
Q: ํ๋ก๊ทธ๋จ์ด ๋๋ฌด ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค
A: ์ค์ ์์ "์ต๋ ํญ๋ชฉ ์"๋ฅผ ์ค์ด๊ฑฐ๋ "์๋ ์ ๋ฆฌ" ๊ธฐ๊ฐ์ ๋จ์ถํด๋ณด์ธ์. ์ด๋ฏธ์ง ์ ์ฅ์ ๋นํ์ฑํํ๋ ๊ฒ๋ ๋์์ด ๋ฉ๋๋ค.
Q: DevExpress ๋ผ์ด์ ์ค๊ฐ ํ์ํ๊ฐ์?
A: ์ฌ์ฉ์๋ ํ์ ์์ต๋๋ค. ์ด๋ฏธ ๋น๋๋ ์คํ ํ์ผ์ ๋ค์ด๋ก๋ํ์ฌ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. ๊ฐ๋ฐ์๋ก ์์ค๋ฅผ ๋น๋ํ๋ ค๋ฉด DevExpress ํ๊ฐํ ๋๋ ๋ผ์ด์ ์ค๊ฐ ํ์ํฉ๋๋ค.
Q: ๋ค๋ฅธ ํด๋ฆฝ๋ณด๋ ๊ด๋ฆฌ์์ ํจ๊ป ์ฌ์ฉํ ์ ์๋์?
A: ๊ฐ๋ฅํ์ง๋ง ์ถฉ๋์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ํ ๋ฒ์ ํ๋์ ํด๋ฆฝ๋ณด๋ ๊ด๋ฆฌ์๋ง ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
Q: ํน์ ์ฑ์ ํด๋ฆฝ๋ณด๋๋ฅผ ๋ฌด์ํ๋ ค๋ฉด?
A: ํ์ฌ๋ ์ค์ ์์ ์ง์ ํธ์งํด์ผ ํฉ๋๋ค. v1.1.0์์ UI๋ก ๊ด๋ฆฌํ ์ ์๋๋ก ๊ฐ์ ํ ์์ ์ ๋๋ค.
์ด ํ๋ก์ ํธ๊ฐ ์ ์ฉํ๋ค๋ฉด ํ์์ ๊ณ ๋ คํด์ฃผ์ธ์!
- โญ GitHub Star: ์ ์ฅ์์ Star๋ฅผ ๋๋ฌ์ฃผ์ธ์!
- ๐ ๋ฒ๊ทธ ๋ฆฌํฌํธ: ๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ๋ฉด ์๋ ค์ฃผ์ธ์
- ๐ก ๊ธฐ๋ฅ ์ ์: ์ข์ ์์ด๋์ด๋ฅผ ๊ณต์ ํด์ฃผ์ธ์
- ๐ Pull Request: ์ฝ๋๋ก ๊ธฐ์ฌํด์ฃผ์ธ์
- ๐ข ๊ณต์ : ์น๊ตฌ๋ค์๊ฒ ์๊ฐํด์ฃผ์ธ์