Google Drive-synchronized floating Post-it memo pad for Windows, macOS, and Linux
Project description
Memo-Bot v1.3.18 ๐
๊ตฌ๊ธ ๋๋ผ์ด๋ธ ๊ธฐ๋ฐ์ ์๋ฒฝํ ๋๊ธฐํ๋๋ ํฌ๋ก์ค ํ๋ซํผ ํฌ์คํธ์ ๋ฉ๋ชจ์ฅ์ ๋๋ค. ์๋๋ก์ด๋(Flutter)์ ๋ฐ์คํฌํฑ(Windows, macOS, Linux - Python/PyWebView) ํ๊ฒฝ์ ์ง์ํ๋ฉฐ, ์ฌ์ฉ์์ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ **์จ๊ฒจ์ง ์ฑ ํด๋ (Application Data Folder)**๋ฅผ ์ด์ฉํด ๋ณด์์ด ๋งค์ฐ ๋ฐ์ด๋๊ณ ๊น๋ํ ๋๊ธฐํ๋ฅผ ์ํํฉ๋๋ค.
๐จ ๊ธฐ์ ์คํ ๋ฐ ํน์ง
- Desktop Client: Python + PyWebView (HTML/JS/CSS). OS ๋ด์ฅ ์น๋ทฐ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ๋ฐฐํฌ ํ์ผ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์๋ชจ๊ฐ ์ต์ํ๋ฉ๋๋ค.
- Mobile Client (Android): Flutter (Material 3 ๋คํฌ ๋ชจ๋). ๋ชจ๋ํ๊ณ ์ ๋ คํ ํฌ์คํธ์ ๋ฆฌ์คํธ ๋ฐ ํธ์ง ์ธํฐํ์ด์ค ์ ๊ณต.
- Sync Engine: Google Drive AppData API. ์ฌ์ฉ์์ ํ์ผ ๋ชฉ๋ก์ ๋
ธ์ถ๋์ง ์๋ ๊ณ ์ ์ฑ ์ ์ฅ์๋ฅผ ์ฌ์ฉํ๊ณ , ํ์ผ์
appProperties๋ฉํ๋ฐ์ดํฐ๋ฅผ ์บ์ฑํ์ฌ ํธ๋ํฝ ์๋ชจ๊ฐ ๋งค์ฐ ์ ๊ณ ๋ฐ์์ด ๋น ๋ฅธ ๋๊ธฐํ๋ฅผ ์ง์ํฉ๋๋ค.
๐ ๋ฐ์ดํฐ ์ ์ฅ ๊ฒฝ๋ก ๋ฐ ํ์ผ ํฌ๋งท
๋ฉ๋ชจ๋ฅผ ์์ฑํ๊ณ ์ ์ฅํ๋ฉด ๊ฐ ๋ฉ๋ชจ๋ ๋ก์ปฌ ์ปดํจํฐ์ ๊ฐ๋ณ JSON ํ์ผ ํํ๋ก ์ ์ฅ๋ฉ๋๋ค.
1. ๋ก์ปฌ ์ ์ฅ ๊ฒฝ๋ก
- Windows:
C:\Users\<์ฌ์ฉ์๋ช >\.memobot\notes\ - macOS / Linux:
~/.memobot/notes/
2. ํ์ผ ํ์ ๋ฐ ์ด๋ฆ
- ๊ฐ ๋ฉ๋ชจ๋น
note_<๊ณ ์ ID>.jsonํ์์ผ๋ก ์ ์ฅ๋ฉ๋๋ค. (์:note_a1b2c3d4.json)
3. JSON ๋ฐ์ดํฐ ๊ตฌ์กฐ ์์
๋ฉ๋ชจ์ ๋ด์ฉ, ์์, ์ขํ ๋ฐ ํฌ๊ธฐ, ํ๊ทธ ์ ๋ณด๋ฟ๋ง ์๋๋ผ ์ฒจ๋ถ๋ ์ด๋ฏธ์ง ๋ฐ์ดํฐ๊น์ง ๋จ์ผ JSON ํ์ผ ๋ด์ ๋ณด๊ดํฉ๋๋ค.
{
"id": "a1b2c3d4-...",
"content": "๋ฉ๋ชจ ๋ด์ฉ์
๋๋ค. #ํ๊ทธ",
"color": "yellow",
"tags": ["ํ๊ทธ"],
"x": 120,
"y": 250,
"width": 250,
"height": 250,
"is_folded": false,
"on_top": true,
"updated_at": "2026-06-04T12:57:08Z",
"image": "data:image/png;base64,iVBORw0KGgoAAA..." // ์ฒจ๋ถ๋ ์ด๋ฏธ์ง ๋ฐ์ดํฐ (Base64 ์ธ์ฝ๋ฉ)
}
[!NOTE] ๊ตฌ๊ธ ๋๋ผ์ด๋ธ ๋๊ธฐํ๊ฐ ์คํ๋๋ฉด ๊ตฌ๊ธ ๋๋ผ์ด๋ธ์ ์จ๊ฒจ์ง ์ฑ ์ ์ฉ ์ ์ฅ์(AppData Folder) ํด๋์๋ ๋ก์ปฌ๊ณผ ๋์ผํ ํ์ผ๋ช ๋ฐ JSON ๋ฐ์ดํฐ ํฌ๋งท์ผ๋ก ์ ์ฅ ๋ฐ ๋๊ธฐํ๋ฉ๋๋ค.
๐ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ API ์ค์ (OAuth 2.0)
์์ชฝ ํ๋ซํผ์์ ๋๊ธฐํ ๊ธฐ๋ฅ์ ํ์ฑํํ๊ธฐ ์ํด Google Cloud Console์์ OAuth 2.0 ์๊ฒฉ ์ฆ๋ช ์ ์ค์ ํด์ผ ํฉ๋๋ค.
-
Google Cloud Console ์ ์:
- Google Cloud Console์ ๊ตฌ๊ธ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํฉ๋๋ค.
- ์ ํ๋ก์ ํธ๋ฅผ ์์ฑํฉ๋๋ค (์:
Memo-Bot).
-
Google Drive API ํ์ฑํ:
- API ๋ฐ ์๋น์ค > ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ด๋ํฉ๋๋ค.
Google Drive API๋ฅผ ๊ฒ์ํ๊ณ ์ฌ์ฉ(Enable) ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
-
OAuth ๋์ ํ๋ฉด ์ค์ :
- API ๋ฐ ์๋น์ค > OAuth ๋์ ํ๋ฉด์ผ๋ก ์ด๋ํฉ๋๋ค.
- User Type์ **์ธ๋ถ(External)**๋ก ์ ํํ๊ณ ์์ฑ์ ๋๋ฆ ๋๋ค.
- ํ์ ์ ๋ณด(์ฑ ์ด๋ฆ, ์ด๋ฉ์ผ ๋ฑ)๋ฅผ ์ ๋ ฅํฉ๋๋ค.
- ๋ฒ์(Scopes) ์ค์ ๋จ๊ณ์์
.../auth/drive.appdata๋ฒ์๋ฅผ ์ถ๊ฐํฉ๋๋ค (๊ตฌ๊ธ ๋๋ผ์ด๋ธ์ ์ฑ ์ ์ฉ ์จ๊ฒจ์ง ํด๋ ์ฝ๊ธฐ/์ฐ๊ธฐ ๊ถํ). - ํ ์คํธ ์ฌ์ฉ์ (Test Users) ๋ฑ๋ก ๋จ๊ณ์์ ๋๊ธฐํ ํ ์คํธ์ ์ฌ์ฉํ ๋ณธ์ธ์ ๊ตฌ๊ธ ์ด๋ฉ์ผ์ ๋ฐ๋์ ์ถ๊ฐํฉ๋๋ค.
[!IMPORTANT] OAuth ๋์ ํ๋ฉด์ ํผ๋ธ๋ฆฌ์ฑ ์ํ๊ฐ ํ ์คํธ(Testing) ๋ชจ๋์ธ ๊ฒฝ์ฐ, ํ ์คํธ ์ฌ์ฉ์๋ก ์ด๋ฉ์ผ ๊ณ์ ์ด ๋ฑ๋ก๋์ด ์์ด์ผ๋ง ๊ตฌ๊ธ ๋ก๊ทธ์ธ์ด ์ ์ ์ฒ๋ฆฌ๋๊ณ ์ฐจ๋จ ์๋ฌ(403 access_denied)๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
- ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด(Credentials) ์์ฑ:
- API ๋ฐ ์๋น์ค > ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ก ์ด๋ํฉ๋๋ค.
- ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด ๋ง๋ค๊ธฐ > OAuth ํด๋ผ์ด์ธํธ ID๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ **๋ฐ์คํฌํฑ ์ฑ(Desktop App)**์ผ๋ก ์ ํํ๊ณ ์ด๋ฆ์ ์ ๋ ฅ ํ ์์ฑํฉ๋๋ค.
- ์์ฑ๋ ํด๋ผ์ด์ธํธ ID์ JSON ํ์ผ์ ๋ค์ด๋ก๋ํฉ๋๋ค.
๐ป ๋ฐ์คํฌํฑ ์ฑ ์คํ ๋ฐ ๋ฐฐํฌ (Python)
1. ์๊ฒฉ ์ฆ๋ช ํ์ผ ๋ฐฐ์น
๋ค์ด๋ก๋๋ฐ์ ํด๋ผ์ด์ธํธ ๋น๋ฐ๋ฒํธ JSON ํ์ผ์ client_secrets.json์ผ๋ก ์ด๋ฆ์ ๋ณ๊ฒฝํ์ฌ ๋ค์ ๊ฒฝ๋ก์ ์ ์ฅํฉ๋๋ค.
- Windows:
C:\Users\<์ฌ์ฉ์๋ช >\.memobot\client_secrets.json - macOS/Linux:
~/.memobot/client_secrets.json
2. ๊ฐ๋ฐ์ ๋ชจ๋ ๋ก์ปฌ ์คํ
cd desktop
# ๊ฐ์ํ๊ฒฝ ์์ฑ ๋ฐ ํ์ฑํ
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# ์์กด์ฑ ํจํค์ง ์ค์น
pip install -e .
# ์ฑ ์คํ
memobot
3. PyPI ๋ฐฐํฌ์ฉ ๋น๋ ๋ฐ ์ ๋ก๋
ํจํค์ง ์ฒญ์, ๋น๋, ์ ๋ก๋๋ฅผ ์ผ๊ด์ ์ผ๋ก ์๋ ์ฒ๋ฆฌํด์ฃผ๋ ๋ฐฐ์น ์คํฌ๋ฆฝํธ๊ฐ ์ ๊ณต๋ฉ๋๋ค:
# Windows ํ๊ฒฝ์์ ๋น๋ ๋ฐ ๋ฐฐํฌ ๋ฐฐ์นํ์ผ ์คํ
./publish_pypi.bat
- ์คํ ์ ๊ธฐ์กด ๋น๋ ์์ ํ์ผ๋ค์ ๋ชจ๋ ์ด๊ธฐํํ๊ณ ,
build๋ฐtwine๋ชจ๋์ ์๋์ผ๋ก ์ต์ ์ค์น/์ ๊ทธ๋ ์ด๋ํ ํ ๋น๋๋ฅผ ์ํํฉ๋๋ค. - ๋น๋ ์๋ฃ ํ [1] TestPyPI ์ ๋ก๋, [2] ๊ณต์ PyPI ์ ๋ก๋, [3] ์ ๋ก๋ ์์ด ๋น๋๋ง ์ํ ์ค ํ๋๋ฅผ ์ ํํด ์งํํ ์ ์์ต๋๋ค.
- ๋ฐฐํฌ ์๋ฃ ์ ์ฌ์ฉ์๋
pip install memobot๋ช ๋ น์ด๋ง์ผ๋ก ํฌ๋ก์ค ํ๋ซํผ(Windows, macOS, Linux) ํ๊ฒฝ์ ์ค์นํ๊ณmemobot๋ช ๋ น์ด๋ก ์ฆ์ ์ฑ์ ์คํํ ์ ์์ต๋๋ค.
4. PyPI ํจํค์ง ๊ด๋ฆฌ ๋ฐฉ๋ฒ (์ค์น, ์ ๋ฐ์ดํธ, ์ญ์ )
์ผ๋ฐ ์ฌ์ฉ์๋ ํ์ด์ฌ์ด ์ค์น๋ ํ๊ฒฝ์์ ์๋์ pip ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํด ํจํค์ง๋ฅผ ํธ๋ฆฌํ๊ฒ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ์ค์น (Install):
pip install memobot
- ์คํ (Run):
์ค์น ํ ํฐ๋ฏธ๋์ด๋ ๋ช
๋ น ํ๋กฌํํธ์์ ์๋ ๋ช
๋ น์ ์คํํ๋ฉด ๋ฐ์คํฌํฑ ์ฑ์ด ์คํ๋ฉ๋๋ค (์๋์ฐ ํ๊ฒฝ์์๋ ๊ฒ์์ ์ฝ์์ฐฝ ์์ด ๋ฐฑ๊ทธ๋ผ์ด๋์ฉ ์ฑ์ผ๋ก ์คํ๋ฉ๋๋ค).
memobot
- ์ต์ ๋ฒ์ ์
๋ฐ์ดํธ (Update):
pip install --upgrade memobot
- ์ญ์ (Uninstall):
pip uninstall memobot
๐ฑ ๋ชจ๋ฐ์ผ ์ฑ ์คํ (Flutter Android)
1. Flutter ์์กด์ฑ ๊ตฌ์ฑ
cd mobile
flutter pub get
2. ์๋๋ก์ด๋ ํ๋ซํผ ์ค์
๊ตฌ๊ธ ๋ก๊ทธ์ธ ์ฐ๋์ ์ํด ์๋๋ก์ด๋ ์ฑ์ ํจํค์ง๋ช ๊ณผ ๋๋ฒ๊ทธ ์๋ช ํค(SHA-1)๋ฅผ Google Cloud Console์ ๋์ผ ํ๋ก์ ํธ์ ๋ฑ๋กํด์ผ ํฉ๋๋ค.
- OAuth ํด๋ผ์ด์ธํธ ID ์ถ๊ฐ ์์ฑ:
- Google Cloud Console > ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด > OAuth ํด๋ผ์ด์ธํธ ID ์์ฑ.
- ์ ํ์ Android๋ก ์ ํํฉ๋๋ค.
- ํจํค์ง ์ด๋ฆ ์
๋ ฅ (์:
com.example.memobot). - ๊ฐ๋ฐ์ฉ SHA-1 ์ง๋ฌธ ์ธ์ฆ์๋ฅผ ์
๋ ฅํฉ๋๋ค (JDK์
keytool์ ํตํด ์กฐํ ๊ฐ๋ฅ).
- ์๋น์ค ํ์ผ ๋ค์ด๋ก๋:
- ํ์์ ๋ฐ๋ผ Firebase์ ๊ฒฐํฉํ์ฌ ์ฌ์ฉํ ๊ฒฝ์ฐ
google-services.json์mobile/android/app/์๋์ ๋ฐฐ์นํ ์ ์์ผ๋, ๋ณธ ๊ตฌํ์์๋google_sign_inํจํค์ง๊ฐ ํด๋ผ์ด์ธํธ ID๋ฅผ ํตํด ์ง์ ๋์ํ๋ฏ๋ก ์ต์ํ์ ์ค์ ๋ง์ผ๋ก ์๋ ๊ฐ๋ฅํฉ๋๋ค.
- ํ์์ ๋ฐ๋ผ Firebase์ ๊ฒฐํฉํ์ฌ ์ฌ์ฉํ ๊ฒฝ์ฐ
3. ์ฑ ์คํ
flutter run
๐ ๋๊ธฐํ ๋ฐ ์ถฉ๋ ๋ฐฉ์ง ์ธ๋ถ ์ค๊ณ
- Tombstoning (์ํํธ ์ญ์ ): ์ฌ์ฉ์๊ฐ ์ฑ ๋ด์์ ๋ฉ๋ชจ๋ฅผ ์ญ์ ํ๋ฉด ํ์ผ์ด ์ฆ์ ์๊ตฌ ์ญ์ ๋์ง ์๊ณ ๋ด๋ถ ํ๋๊ฐ
is_deleted: true๋ก ๊ฐฑ์ ๋ฉ๋๋ค. ์ด๋ ๋ค๋ฅธ ๋๋ฐ์ด์ค๊ฐ ๋๊ธฐํ ์์ ์ ํด๋น ๋ฉ๋ชจ๋ฅผ ๋ก์ปฌ์์๋ ๋๊ฐ์ด ์ง์์ฃผ๋๋ก ์ ๋ํ๋ฉฐ, ์๋ฒฝํ ์ญ์ ์ ํ๋ฅผ ์ ๊ณตํฉ๋๋ค. - Last-Write-Wins (์ต์ข
์ฐ๊ธฐ ์ฐ์ ): ์คํ๋ผ์ธ ์์ ์ ํฌํจํ์ฌ ์๋ก ๋ค๋ฅธ ๊ธฐ๊ธฐ์์ ๊ฐ์ ํฌ์คํธ์์ ์์ ํ ๊ฒฝ์ฐ, JSON ๋ด๋ถ์
updated_atํ์์คํฌํ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ ๋ฆ๊ฒ ํธ์ง๋ ์ต์ข ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฎ์ด์๋๋ค.
๐ ์ ๋ฐ์ดํธ ๋ด์ญ (Changelog)
v1.3.18 (2026-06-07)
- ํ ๊ธฐ๊ธฐ ์คํ ์ค๋ฅ ๋ฐ ํธํ์ฑ ๋ํญ ๊ฐ์ :
- WebView2 ๋ฐํ์ ๋๋ฝ ์์ธ ์ฒ๋ฆฌ: Windows 10/11 ํ๊ฒฝ์์ Microsoft Edge WebView2 Runtime์ด ๋ฏธ์ค์น/์์๋์ด ์ฑ์ด ์ฆ์ ์ข ๋ฃ๋๋ ๋ฌธ์ ๋ฅผ ๋ณด์ํ์ฌ, ๊ตฌ๋ ์คํจ ์ ์๋ฆผ์ฐฝ์ ๋์ฐ๊ณ ์ค์น ํ์ด์ง๋ก ๋ฐ๋ก ์ฐ๊ฒฐํด์ฃผ๋ ๋ค์ดํฐ๋ธ ๋ค์ด๋ก๋ ๊ฐ์ด๋๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- 64๋นํธ Windows ํฌ๋์(Access Violation) ๋ฐฉ์ง: 64๋นํธ OS์์
SetWindowLongWAPI ํธ์ถ ์ ํธ๋ค ํฌ์ธํฐ(HWND)๊ฐ ์ ๋จ๋์ด ํ๋ก๊ทธ๋จ์ด ๋น์ ์ ์ข ๋ฃ๋๋ ๋ฒ๊ทธ๋ฅผ ์๋ ์ํคํ ์ฒ ํ๋ณ์ ํตํดSetWindowLongPtrWํธ์ถ๋ก ๊ต์ฒดํ์ฌ ํด๊ฒฐํ์ต๋๋ค. - PyInstaller hiddenimports ๋๋ฝ ๋ณด์:
webview.platforms.winforms,pystray,PIL,ctypes,winreg๋ฑ ๋ฐํ์ ๋ ๋๋ง ๋๋ผ์ด๋ฒ ๋ฐ ํ์ ๋ชจ๋๋ค์ ์คํ ๋ฐ์ด๋๋ฆฌ์ ํ์คํ ๋๋ดํ์ฌ ํ๊ฒฝ ์ ์ฝ ์๋ ๊ตฌ๋์ ํ๋ณดํ์ต๋๋ค. - ํ๋์ฝ๋ฉ๋ ๊ฐ๋ฐ์ ๊ณ์ ๊ฒฝ๋ก ์ ๊ฑฐ: ๊ฐ์ด๋ ๋ด ํน์ ๊ฐ์ธํ ๊ฒฝ๋ก๋ฅผ ํ๋ ์ด์คํ๋ ๋ฐ ๋์ ๊ณ์ ๋ช
๊ฐ์ง(API ๋ธ๋ฆฟ์ง
get_secrets_path()) ํํ๋ก ๋ณ๊ฒฝํ์ฌ ๊ฐ๋ ์ฑ์ ๋์์ต๋๋ค.
v1.3.17 (2026-06-07)
- ์์ ๋ฉ๋ชจ ํฌ๊ธฐ์์์ ํ์ธ์ฐฝ(์ค๋ฒ๋ ์ด) ์๋ฆผ ํ์ ํด๊ฒฐ:
- ๋ฉ๋ชจ ์ฐฝ์ ๋์ด๊ฐ ๋ํญ ์์์ง ์ํ์์ ์ ๊ธ ํด์ ๋น๋ฐ๋ฒํธ ์ ๋ ฅ ์ค๋ฒ๋ ์ด๋ ์ญ์ ํ์ธ ํ์ ๋ฑ์ด ๋ฐ ๋, ํ๋จ์ ํ์ธ/์ทจ์ ๋ฒํผ์ด ์ฐฝ ํ๋จ๋ถ ๋ฐ์ผ๋ก ๋ฐ๋ ค๋ ๋ณด์ด์ง ์๋ ์๋ฆผ ๋ฒ๊ทธ๋ฅผ ์์ ํ์ต๋๋ค.
- ์ฐฝ์ ๋์ด๊ฐ 240px ์ดํ๊ฐ ๋๋ฉด ํ์ ์์์ ์ฌ๋ฐฑ(padding/gap), ๊ธ๊ผด ํฌ๊ธฐ, ์์ด์ฝ ํฌ๊ธฐ ๋ฑ์ ๋ํญ ์ฌ๋ฆผํ๊ฒ ์กฐ์ ํ๋ ๋ฐ์ํ ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ฅผ ์ถ๊ฐํ๊ณ , ์คํฌ๋กค ๊ฐ๋ฅํ๋๋ก ๋ ์ด์์์ ๋ณด์ํ์ต๋๋ค.
v1.3.16 (2026-06-07)
- ๋น๋ฐ๋ฒํธ ์์ ์ ๊ธฐ์กด ๋น๋ฐ๋ฒํธ ๊ฒ์ฆ ๋จ๊ณ ์ถ๊ฐ:
- ์ค์ ๋ฉ๋ด์์ ์ ๊ธ ๋น๋ฐ๋ฒํธ๋ฅผ ์๋ก ์์ ํ๊ฑฐ๋ ํด์ ํ๋ ค๊ณ ํ ๋, ํ์ธ์ด ํจ๋ถ๋ก ์ ๊ทผํด ๋ณ๊ฒฝํ์ง ๋ชปํ๋๋ก ๊ธฐ์กด ๋น๋ฐ๋ฒํธ ์ ๋ ฅ ํ์ธ ๋ํ์์๋ฅผ ํ์์ ์ผ๋ก ๊ฑฐ์น๋๋ก ์ค๊ณํ์ต๋๋ค.
- ์ด ๊ธฐ๋ฅ์ ๋ฐ์คํฌํฑ ์ค์ ์ฐฝ(JS
prompt๋ค์ด์ผ๋ก๊ทธ) ๋ฐ ๋ชจ๋ฐ์ผ(Flutter Android overlay) ์์ชฝ ๋ชจ๋์ ๊ณตํต ์ ์ฉ๋์์ผ๋ฉฐ, ๊ฒ์ฆ์ ํต๊ณผํด์ผ๋ง ์ ๋น๋ฐ๋ฒํธ๋ก์ ์ ์ฅ์ด ์น์ธ๋ฉ๋๋ค.
v1.3.15 (2026-06-07)
- ๋ฉ๋ชจ ๋น๋ฐ๋ฒํธ ์ ๊ธ ๊ธฐ๋ฅ ์ถ๊ฐ (ํฌ๋ก์ค ํ๋ซํผ ์ฐ๋):
- ๋ฐ์คํฌํฑ ๋ฐ ๋ชจ๋ฐ์ผ(Android) ์์ชฝ ์ฑ ๋ชจ๋์ ๊ฐ๋ณ ๋ฉ๋ชจ ๋น๋ฐ๋ฒํธ ์ ๊ธ ๊ธฐ๋ฅ์ ๋์ ํ์ต๋๋ค.
- ์ค์ ๋ฉ๋ด์์ ์ฌ์ฉํ ์ ๊ธ ๋น๋ฐ๋ฒํธ๋ฅผ ๊ฐ๋ณ ๊ธฐ๊ธฐ์ ์ง์ ํ ์ ์์ผ๋ฉฐ(๋น๋ฐ๋ฒํธ๋ ๋๊ธฐํ๋์ง ์๊ณ ๊ฐ ๊ธฐ๊ธฐ๋ณ ๋ก์ปฌ ๋ณด์ ์ค์ ์๋ง ๋ ๋ฆฝ ์ ์ฅ), ์๋ํฐ ํด๋ฐ์ ์๋ก ๋ฐฐ์น๋ ์๋ฌผ์ ํ ๊ธ ๋ฒํผ์ ํตํด ํน์ ๋ฉ๋ชจ๋ฅผ ์ ๊ทธ๊ฑฐ๋ ํด์ ํ ์ ์์ต๋๋ค.
- ๋ณด์์ ์ํด ์ ๊ธด ๋ฉ๋ชจ๋ ๋์๋ณด๋ ๋ฆฌ์คํธ์์ ๋ง์คํน(
๐ ์ ๊ธด ๋ฉ๋ชจ์ ๋๋ค.) ์ฒ๋ฆฌ๋๊ณ , ์ค์ ๋ณธ๋ฌธ ์ฝํ ์ธ ์ ๋ฏธ๋์ด ๋ฐ์ดํฐ(์ด๋ฏธ์ง/์ค๋์ค)๋ ๊ฒ์ฆ ์๋ฃ ์ ๊น์ง ๋ฐฑ์๋์ ํด๋ผ์ด์ธํธ ๋จ ๋ชจ๋์์ ์์ ํ ์ฐจ๋จ๋์ด ์ ์ถ์ ๋ฐฉ์งํฉ๋๋ค. - ๋ฉ๋ชจ์ ์ ๊ธ ์ฌ๋ถ ์ํ(
is_locked)๋ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ ๋๊ธฐํ๋ฅผ ํตํด ์๋ฐฉํฅ์ผ๋ก ์๋ ์ฐ๋ ๋ฐ ๊ณต์ ๋ฉ๋๋ค.
v1.3.14 (2026-06-07)
- ์ค์ ์ฐฝ ๋
๋ฆฝ ํ์
๋ถ๋ฆฌ:
- ๊ธฐ์กด ๋ฉ๋ชจ ๋งค๋์ (Dashboard) ๋ด๋ถ ๋ ์ด์ด ๋ชจ๋ฌ๋ก ๋์ฐ๋ ์ค์ ์ฐฝ์ ๋
๋ฆฝ๋ ๋ณ๋ ์ธ๋ถ ํ์
์ฐฝ(ํฌ๊ธฐ
450x620๊ณ ์ , ํ์ดํ๋ฐ๋ฅผ ๊ฐ์ง ์๋์ฐ)์ผ๋ก ๋ถ๋ฆฌํ์ฌ ์คํํ๋๋ก ๊ฐ์ ํ์ต๋๋ค. - ์ด๋ฅผ ํตํด ๋งค๋์ ์ฐฝ์ ํฌ๊ธฐ ์ ํ์ผ๋ก ์ธํด ์ค์ ๋ฉ๋ด ํ๋จ ๋ฐ ์ฐ์ธก ํญ๋ชฉ๋ค์ด ํ๋ฉด์์ ์๋ฆฌ๋ ํ์์ ์๋ฒฝํ ํด๊ฒฐํ์ต๋๋ค.
- ๊ธฐ์กด ์ค์ API ๋ฐ ์ด๋ฒคํธ ๊ตฌ์กฐ๋ฅผ ๊ทธ๋๋ก ์ด์ ๋ฐ ํ์ฉํ์ฌ ์ค์ ๋ณ๊ฒฝ์ฌํญ์ด ๋ก์ปฌ ๋ฉ๋ชจ, ๋งค๋์ , ๊ฐ๋ณ ๋ฉ๋ชจ ์๋์ฐ์ ์ค์๊ฐ์ผ๋ก ์ฆ์ ๋๊ธฐํ๋ฉ๋๋ค.
- ๊ธฐ์กด ๋ฉ๋ชจ ๋งค๋์ (Dashboard) ๋ด๋ถ ๋ ์ด์ด ๋ชจ๋ฌ๋ก ๋์ฐ๋ ์ค์ ์ฐฝ์ ๋
๋ฆฝ๋ ๋ณ๋ ์ธ๋ถ ํ์
์ฐฝ(ํฌ๊ธฐ
v1.3.13 (2026-06-07)
- ์์ ์ ๋ ฌ ๋๋๊ทธ ๊ฐ์ ๋ฐ ๋ถํ์ํ ๋ก๊ทธ/๊ฒฝ๊ณ ์ ๊ฑฐ:
- ์ ํ ๋ฉ๋ชจ๊ฐ ์์(Magnetic) ์ ๋ ฌ ์ํ๋ก ๋ฌ๋ผ๋ถ์ด ์์ ๋ ๋ง์ฐ์ค ๋๋๊ทธ๋ฅผ ํตํด ๋งค๋๋ฝ๊ฒ ๋ผ์ด๋ผ ์ ์๋ ํ์์ ํด๊ฒฐํ๊ธฐ ์ํด, ๋์ ๋ง์ฐ์ค ์์ง์์ ์ถ์ ํ๋ ๋ ผ๋ฆฌ์ ์ขํ๊ณ(Logical Coordinates) ์์คํ ์ ๋์ ํ์ต๋๋ค. ์ด์ ์์ ๊ณ ์ ์ ์ผ๋ก๋ถํฐ ๋ง์ฐ์ค๋ฅผ 15px ์ด์ ์ด๋ํ๋ฉด ๋ถ๋๋ฝ๊ณ ์์ฐ์ค๋ฝ๊ฒ ์ค๋ ์ด ํ๋ฆฌ๋ฉฐ ์ด๋ํ ์ ์์ต๋๋ค.
- ๊ตฌ๊ธ ๋๋ผ์ด๋ธ ๋๊ธฐํ API ์ด๊ธฐํ ์ ํฐ๋ฏธ๋์ ๋ถํ์ํ๊ฒ ์ถ๋ ฅ๋๋
file_cache is only supported with oauth2client<4.0.0๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผcache_discovery=False์ค์ ์ ํตํด ์ต์ ํ๊ณ ์ด๊ธฐํ ๋์์ ์ต์ ํํ์ต๋๋ค.
v1.3.12 (2026-06-07)
- ์ํค๋งํฌ ํฌ๋งท ์์ ๋ฐ ์์
ํ์์ค ๊ฐ๋ณ ๋ฉ๋ชจ ๋
ธ์ถ ๋ฐฉ์ง:
- ์ํค๋งํฌ ๋ณต์ฌ ์ ๊ธฐ์กด ID ๋ฐ ์ ๋ชฉ ์กฐํฉ ๋ฐฉ์(
[[noteId|Title]])์์ ๋์ค์ ์ด๊ณ ๋ช ํํ[[NoteTitle]]ํํ๋ก ๋ณต์ฌ๋๋๋ก ์์ ํ ํ, ๋ฉ๋ชจ ๋ณธ๋ฌธ ํ์ฑ ๋ฐ ํด๋ฆญ ๋ค๋น๊ฒ์ด์ ์์๋ ๋๊ดํธ ๊ธฐํธ([[,]])๋ฅผ ์๋ ์ ๊ฑฐํด ์ฌ๋ฐ๋ฅด๊ฒ ๋งค์นญ๋๋๋ก ๋ณด์ํ์ต๋๋ค. - Windows ํ๊ฒฝ์์ ๊ฐ๋ณ ํฌ์คํธ์ ๋ฉ๋ชจ ์ฐฝ๋ค์ด ์์
ํ์์ค(Taskbar)์ ์ฐํ์ฃฝ์ ์์ฑ๋๋ ํ์์ ์ฐจ๋จํ๊ณ , ์ค์ง ๋ฉ์ธ "๋ฉ๋ชจ ๊ด๋ฆฌ์(Memo-Bot Manager)" ๋์๋ณด๋ ์ฐฝ๋ง ์์
ํ์์ค์ ๋
ธ์ถ๋๋๋ก ์คํ์ผ๋ง(
WS_EX_TOOLWINDOW๋ฐShowInTaskbar = False)์ ์์ ํ์์ต๋๋ค.
- ์ํค๋งํฌ ๋ณต์ฌ ์ ๊ธฐ์กด ID ๋ฐ ์ ๋ชฉ ์กฐํฉ ๋ฐฉ์(
v1.3.11 (2026-06-07)
- ํด์ํ๊ทธ/์ํค๋งํฌ ๊ฒ์ ๋ฐ ์ํค๋งํฌ ๋ณต์ฌ ๊ธฐ๋ฅ ์ถ๊ฐ: ๋์๋ณด๋ ๋ฉ์ธ ํ๋ฉด์์
#ํ๊ทธ๊ฒ์์ด ๋๋[[์ํค๋งํฌ]]๊ฒ์์ด ํจํด์ ์ธ์ํ๋ ์ง๋ฅํ ํํฐ๋ง ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ต๋๋ค. ๋ํ ๊ฐ๋ณ ๋ฉ๋ชจ ํค๋์ "์ํค๋งํฌ ๋ณต์ฌ" ๋จ์ถ๋ฅผ ์๋ก ๋ฐฐ์นํ์ฌ ํด๋ฆญ ์[[noteId|Title]]ํฌ๋งท์ ๋งํฌ๋ค์ด ๋งํฌ๊ฐ ์ํฐ์น๋ก ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ๋๊ณ , ์ฑ๊ณต ์ ์ฒดํฌ ์์ด์ฝ์ผ๋ก 1์ด๊ฐ ์๊ฐ์ ํผ๋๋ฐฑ(ํ๋์ ์ ๋๋ฉ์ด์ )์ ์ฃผ๋๋ก ์ฌ์ฉ์ฑ์ ๊ฐํํ์ต๋๋ค.
v1.3.10 (2026-06-06)
- ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ(noconsole) ๊ธฐ๋ณธํ: PyInstaller ๋น๋ ์์ PyPI ํจํค์ง ๋ฐฐํฌ ์ ์๋์ฐ ํ๊ฒฝ์์ ํฐ๋ฏธ๋ ์ฐฝ ์์ด ๋ฐฑ๊ทธ๋ผ์ด๋์ฉ GUI ์ฑ์ผ๋ก ์ฆ์ ์คํ๋๋๋ก ์ค์ ์ ์ต์ ํํ์ต๋๋ค (
--noconsole๋ฐgui_scripts์ ์ฉ).
v1.3.9 (2026-06-06)
- ๋ฉ๋ชจ ๊ด๋ฆฌ์ ์ด๊ธฐ ๋ก๋ ๋ฐ ๋ ์ด์ค ์ปจ๋์
ํด๊ฒฐ: ๋งค๋์ ์ฐฝ ์ฒซ ์คํ ์
window.pywebview๊ฐ์ฒด๊ฐ ์์ง ๋ธ๋ผ์ฐ์ ์ ์์ฑ๋์ง ์์์ ๋ ์น ๋ชจ๋๋ก ์ฑ๊ธํ๊ฒ ์ฐจ๋จ๋์ด ๋ก์ปฌ ๋ฉ๋ชจ ๋ชฉ๋ก์ด ํ๋ฉด์ ๋ํ๋์ง ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด,pywebviewready์ด๋ฒคํธ ๋ฆฌ์ค๋ ๋ฑ๋ก ๋ฐ ๋๊ธฐ ๋ก์ง์ ์ ๋ฉด ์ต์ ํํ์ฌ ์์ ์ ์ผ๋ก ๋ก์ปฌ ๋ฉ๋ชจ๋ฅผ ์ด๊ธฐ ํ๋ฉด์ ๋ก๋ํฉ๋๋ค.
v1.3.8 (2026-06-06)
- ๋์๋ณด๋ ์ด๊ธฐํ ์ ๋ก์ปฌ ๋ฉ๋ชจ ์๋ ๋ก๋ ์์ : ์ฑ ์คํ ์
pywebviewready์ด๋ฒคํธ๊ฐ ๋ฆฌ์ค๋ ๋ฑ๋ก ์ ์ ์ด๋ฏธ ํธ์ถ๋์ด ๋์๋ณด๋๊ฐ ์ฒ์ ์ผ์ก์ ๋ ๋ก์ปฌ ๋ฉ๋ชจ ๋ชฉ๋ก์ด ์๋์ผ๋ก ๋ํ๋์ง ์๋ ๋ฌธ์ ๋ฅผ ์์ ํ์ต๋๋ค. ์ด์ ์น๋ทฐ API ๋ก๋ ์ฌ๋ถ๋ฅผ ์ฆ์ ๊ฒ์ฌํ์ฌ ๋ฉ๋ชจ ๋ก๋ฉ์ด ๋ฐ๋ก ์คํ๋ฉ๋๋ค. - ์ํฌํธ ์ค๋ฅ ์์ (NameError: time): ๋ซ๊ธฐ ์ง์ฐ ์ฒ๋ฆฌ(
defer_hide) ํจ์ ๋ด์์time.sleepํธ์ถ ์time๋ชจ๋์ด ๊ธ๋ก๋ฒ ์ํฌํธ๋์ด ์์ง ์์ ๋ฐ์ํ๋ NameError ๋ฒ๊ทธ ๋ฐ ์ด๋ก ์ธํด ๋ซ๊ธฐ ๋์์ด ์์ ๋ถ๊ฐ๋ฅํด์ง๋ ์ค๋์์ ์์ ํ์ต๋๋ค.
v1.3.7 (2026-06-06)
- ๊ตฌ๊ธ ๋๋ผ์ด๋ธ ํญ ๋ชฉ๋ก ๋ ์ด์์ ๊ฐ์ ๋ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์์ : ๊ตฌ๊ธ ํด๋ผ์ฐ๋ ๋ฉ๋ชจ ๊ด๋ฆฌ ํ
์ด๋ธ์์ ์ฒซ ๋ฒ์งธ ์ด(๋ฉ๋ชจ ๋ฏธ๋ฆฌ๋ณด๊ธฐ)์ ๋๋น๊ฐ ๋ค๋ฅธ ์ด์ ๊ณ ์ ๋๋น๋ก ์ธํด ๊ทน๋๋ก ์ถ์๋์ด
#...์ด๋๋ฉ...์ฒ๋ผ ํ ๊ธ์์ ๋ง์ค์ํ๋ก๋ง ๋ณด์ด๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ์ด ๋น์จ์ ๊ณ ์ ํ๋ ๋์ ์ ์ฐํ๊ฒ ์ค์ ํ๊ณ ๋ฐ์ํ ๋ ์ด์์์ ๋์ ํ์์ผ๋ฉฐ, ๋งํฌ๋ค์ด ํค๋ ๊ธฐํธ(์:##,#)๋ฅผ ์ ์ธํ๊ณ ์ถ๋ ฅํ๋๋ก ํ ์คํธ ์ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ต๋๋ค.
v1.3.6 (2026-06-06)
- ๋ฉ๋ชจ ๊ด๋ฆฌ์ ์ฐฝ ๋ซ๊ธฐ ๋ฌดํ ๋ฃจํ ๋ฒ๊ทธ ์์ : Windows ํ๊ฒฝ์์ ๋ฉ๋ชจ ๊ด๋ฆฌ์ ์ฐฝ์ ๋ซ์ ํธ๋ ์ด ์์ด์ฝ์ผ๋ก ์จ๊ธธ ๋, pywebview์
hide()๋์์ด ๋ด๋ถ์ ์ผ๋กclosing์ด๋ฒคํธ๋ฅผ ์ฌ๋ฐํ์ฌ ๋ฌดํ ๋ซ๊ธฐ ๋ฃจํ(์๋์ฐ๊ฐ ์ด๋ฆฌ์๋ง์ ๋ฐ๋ก ์ฌ๋ผ์ง๋ ํ์)๊ฐ ๋ฐ์ํ๋ ํ์์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ํ ๋ฝ(is_hiding_manager)์ ๋์ ํ์ฌ ์์ธ ์ฒ๋ฆฌํ์ต๋๋ค.
v1.3.5 (2026-06-06)
- ๊ตฌ๊ธ ๋๋ผ์ด๋ธ ๋ฉ๋ชจ ์ฒซ ์ค ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ง์: ๋ก์ปฌ์ ๋ค์ด๋ก๋๋์ง ์์ ํด๋ผ์ฐ๋ ์ ์ฉ ๋ฉ๋ชจ๋ ๋์๋ณด๋์ ํด๋ผ์ฐ๋ ํญ ๋ชฉ๋ก์์ ๋ณธ๋ฌธ ์ฒซ ์ค ๋ด์ฉ์ ๋ฏธ๋ฆฌ ์งง๊ฒ ๋ณผ ์ ์๋๋ก ๊ฐ์ ํ์ต๋๋ค. ์ด๋ฅผ ์ํด ๋๊ธฐํ ์ ๋ฉ๋ชจ์ ์ฒซ ์ค ํ
์คํธ๋ฅผ ๋๋ผ์ด๋ธ ํ์ผ์
appProperties๋ฉํ๋ฐ์ดํฐ์ ํจ๊ป ์ค์ด ๋ณด๋ด๊ณ , ๋ชฉ๋ก ๋ ๋๋ง ์ ์ด๋ฅผ ํ์ฑํด ์ถ๋ ฅํ๋๋ก ์ฐ๋ํ์ต๋๋ค.
v1.3.4 (2026-06-06)
- ๋จ์ถํค ๋ฒ์(Scope) ์ต์ ํ: ์ ๋ฉ๋ชจ ์ถ๊ฐ(
Ctrl+N) ๋ฐ ๋๊ธฐํ(Ctrl+S) ๋จ์ถํค๊ฐ ๋ฉ๋ชจ ๊ด๋ฆฌ์ ๋์๋ณด๋๊ฐ ์ด๋ฆฌ๊ณ ํฌ์ปค์ค๋์์ ๋๋ง ์๋ํ๋๋ก ๋ฒ์๋ฅผ ๊ฐ๋๊ณ , ๊ฐ๋ณ ๋ฉ๋ชจ ์ญ์ (Ctrl+D), ํญ์ ์ ํ ๊ธ(Ctrl+P), ์ ๊ธฐ ํ ๊ธ(Ctrl+L)์ ๊ฐ๋ณ ๋ฉ๋ชจ ์ฐฝ์ด ํ์ฑํ๋์ด ์์ ๋๋ง ๋ฐ์ํ๋๋ก ๊ฐ์ ํ์ฌ ๋จ์ถํค ์ถฉ๋์ ๋ฐฉ์งํ์ต๋๋ค. - ๊ธ๋ก๋ฒ ๋จ์ถํค ์ง์ (Windows): ๊ด๋ฆฌ์ ์ฐฝ์ด ๋ซํ ์๊ฑฐ๋(ํธ๋ ์ด ์์ด์ฝ ์ํ) ๋ฐฑ๊ทธ๋ผ์ด๋์ ์์ ๋๋ ์ธ์ ๋ ์ง
Ctrl+O๋ฅผ ๋๋ฅด๋ฉด ๋ฉ๋ชจ ๊ด๋ฆฌ์๊ฐ ์ต์๋จ์ผ๋ก ๋ณต์ ๋ฐ ๊ฐ์ ํฌ์ปค์ฑ๋๋๋ก Windows API(RegisterHotKey)๋ฅผ ์ฐ๋ํ ๊ธ๋ก๋ฒ ๋จ์ถํค ์ค๋ ๋๋ฅผ ์ ์ฉํ์ต๋๋ค. ์ค์ ์์ ๋จ์ถํค๋ฅผ ๋นํ์ฑํํ๋ฉด ์์คํ ๋ฑ๋ก๋ ์ค์๊ฐ ํด์ ๋ฉ๋๋ค.
v1.3.3 (2026-06-06)
- ๋ฒํผ ๋ฏธ๋๋ฉํ ๋ฐ ๋์๋ง ๊ฐ์ด๋ ์ถ๊ฐ: ๋์๋ณด๋ ์ ์ด ๋ฒํผ์ ์ฌ๋ฆผํ๊ณ ๋ฏธ๋๋ฉํ๊ฒ ๋์์ธ์ ์กฐ์ ํ๊ณ , ํด์ํ๊ทธ, ๋ฉ๋ชจ๋งํฌ(WikiLinks), AI(Gemini) ์ค์ ๋ฐ ์ฌ์ฉ๋ฒ์ ์์ธ ์๋ดํ๋ ๋์๋ง ๊ฐ์ด๋ ๋ชจ๋ฌ์ ํ์ฌํ์ต๋๋ค.
v1.3.2 (2026-06-06)
- Gemini API ํค ๋ค์ค ์
๋ ฅ UI ๊ฐ์ : ๋จ์ผ ์
๋ ฅ์ฐฝ์ ์ผํ๋ก ๊ธธ๊ฒ ๋์ดํด์ผ ํ๋ ๊ธฐ์กด ๋ฐฉ์ ๋์ , ์ค์ ์ฐฝ์์ ํ ์นธ์ ํค ํ๋์ฉ ๊น๋ํ๊ฒ ๋ฑ๋กํ ์ ์๋๋ก ๋ค์ค ํค ๋์ ์ถ๊ฐ(
+)/์ญ์ (ํด์งํต) ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ์ต๋๋ค. ๊ธฐ์กด ๋ฐฑ์๋ ์๋ ํค ์ํ(rotation) ์๊ณ ๋ฆฌ์ฆ๊ณผ 100% ํ์ ํธํ๋ฉ๋๋ค.
v1.3.1 (2026-06-05)
- ์ต๋์์ธ ์คํ์ผ ์ํค๋งํฌ
[[ ]]์ฐ๋: ๋ฉ๋ชจ ๋ณธ๋ฌธ ๋ด ๋๊ดํธ ๋งํฌ([[๋ฉ๋ชจ ์ ๋ชฉ]]) ํด๋ฆญ ์ ํด๋น ๋ฉ๋ชจ ์ฐฝ์ ์ฆ์ ํฌ์ปค์คํ๊ณ , ๋ฉ๋ชจ๊ฐ ์๋ ๊ฒฝ์ฐ ์๋์ผ๋ก ์ฒซ ์ค ์ ๋ชฉ์ ๊ฐ์ง ์ ๊ท ๋ฉ๋ชจ๋ฅผ ์์ฑํด ์ฐ๋ํด์ฃผ๋ WikiLinks ๊ธฐ๋ฅ์ ํ์ฌํ์ต๋๋ค. - ๊ตฌ๊ธ ๋๋ผ์ด๋ธ ์ญ์ ๋ ๋ฉ๋ชจ ์์ ์ญ์ : ๊ตฌ๊ธ ๋๋ผ์ด๋ธ์ ๋๊ธฐํ ์, ์ด๋ฏธ ์ํํธ ์ญ์ (Tombstone) ์ฒ๋ฆฌ๋ ์ญ์ ๋๊ธฐ ๋ฉ๋ชจ๊ฐ ๋๊ธฐํ ๋ชฉ๋ก์ ๋จ์ ์์กดํ๋ ํ์์ ๋ฐฉ์งํ๋๋ก ์๊ฒฉ ๋ฐ ๋ก์ปฌ์์ ์๊ตฌ ์ญ์ ์ฒ๋ฆฌํ๋ ๋ฃจํด์ ๋ณด๊ฐํ์ต๋๋ค.
- ๊ธฐ๋ณธ ์ฐ์ปด ๋ฉ๋ชจ ๋นํ์ฑํ: ์ฑ ์ฒ์ ์คํ ์ ๋ก์ปฌ ์ ์ฅ์์ ๊ธฐ๋ณธ์ผ๋ก ์์ฑ๋๋ 2๊ฐ์ ํํ ๋ฆฌ์ผ ์ฑ๊ฒฉ์ ๊ฐ์ด๋ ๋ฉ๋ชจ๊ฐ ์์ฑ๋์ง ์๋๋ก ์์ ํ์ฌ ๋ ๊น๋ํ ์์ ํ๋ฉด์ ์ ๊ณตํฉ๋๋ค.
- ๋ ์ง ํฌ๋งท ๋ณ๊ฒฝ: ๋ฉ๋ชจ ์์ฑ ๋ฐ ์
๋ฐ์ดํธ ์, ์๊ฐ(์/๋ถ/์ด) ์ ๋ณด๋ง ๋
ธ์ถ๋๋ ํ๋ฉด์ ๋
-์-์ผ ์ ๋ณด๊ฐ ํจ๊ป ๋
ธ์ถ๋๋๋ก ๋ ์ง ํ์ ํฌ๋งท์ ์์ ํ์ต๋๋ค (
YYYY-MM-DD HH:MM:SS). - ํํฐ ์ด๊ธฐํ ์๋ํ: ํด์ํ๊ทธ๋ ๋ฉ๋ชจ ๋ด์ฉ์ ์์ ํ ํ ์ ์ฅ ์, ํธ์งํ ๋ฉ๋ชจ๊ฐ ํ์ฌ ๊ฒ์ ๋๋ ํ๊ทธ ํํฐ ๋๋ฌธ์ ๋ณด์ด์ง ์๋ ํ์์ ๋ฐฉ์งํ๊ธฐ ์ํด ํํฐ๋ฅผ ์๋์ผ๋ก '์ ์ฒด'๋ก ์ด๊ธฐํํ์ฌ ๋ฐฉ๊ธ ์์ ํ ๋ฉ๋ชจ๊ฐ ๋์๋ณด๋์ ์ฆ์ ๋ ธ์ถ๋๋๋ก ๊ฐ์ ํ์ต๋๋ค.
- ์ฌ๋ฆผ ์นด๋ ๋ทฐ & ํ ์คํฌ๋กค ์ง์: ๋์๋ณด๋์์ ์ ํ ์ํ์ ๋ฉ๋ชจ ์นด๋๋ฅผ ๋ํญ ์ฌ๋ฆผํ(38px)ํ๊ณ ์ ํ ์ํ์์๋ ๋ฉ๋ชจ ๋ณธ๋ฌธ ์ฒซ ๋ฒ์งธ ์ค์ด ์๋จ์ ๋ ธ์ถ๋๋๋ก ์ต์ ํํ์ต๋๋ค. ์ถ๊ฐ๋ก, ์คํฌ๋กค๋ฐ ๋ ธ์ถ ์์ด ๋ง์ฐ์ค ํ ์คํฌ๋กค์ ๊ฐ์งํด ๊ฐํธํ๊ฒ ์ค๋ฅด๋ด๋ฆด ์ ์๋๋ก ํธ์์ฑ์ ๊ฐํํ์ต๋๋ค.
- ๋ฒ์ ๋ฑ์ง ์ถ๊ฐ: ๋งค๋์ ์ฐฝ ํค๋์ ๋ก๊ณ ์ฐ์ธก์ ๋ฉ์ธ ํ
๋ง์ ์กฐํ๋ก์ด Glassmorphism ์คํ์ผ์ ๋ฒ์ ๋ฑ์ง(
v1.3.1)๋ฅผ ๋ถ์ฐฉํ์ต๋๋ค.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file memobot-1.3.18.tar.gz.
File metadata
- Download URL: memobot-1.3.18.tar.gz
- Upload date:
- Size: 90.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0b88eac8bb3e69fa1bc7bf5037ce04e0f4ee5c2191d70078e0ee97f7863bccef
|
|
| MD5 |
dc8890a32494271d779756b0a44b4825
|
|
| BLAKE2b-256 |
cfc695e88bd0ac98dc7d143d5ab8a71f88ebca64442ee958dd2ca69ffa97dda1
|
File details
Details for the file memobot-1.3.18-py3-none-any.whl.
File metadata
- Download URL: memobot-1.3.18-py3-none-any.whl
- Upload date:
- Size: 84.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
48ab278a4a12c09663bd300d1943b90e1226126d55f4abe44b7e75d43f4430e7
|
|
| MD5 |
25ee3a0da386bf3bbd8220a1bfbdbdfd
|
|
| BLAKE2b-256 |
0a577b810539ee001b2286412ed362342efd141b5d7fd305499cf7318250164d
|