# vscode
---
## lint
* djlint
* ruff
```bash
uv add --dev djlint ruff
uv run ruff check
```
---
```json
//.code-workspace
{
"folders": [
{
"name": "📂 전체 루트",
"path": ".",
},
{
//사이드바 모습: 탐색기 가장 바깥쪽에 📂 전체 루트와 📦 백엔드 API가 대등한 형제 관계로 깔끔하게 쪼개져서 보입니다.
//가상환경(.venv) 인식: 완벽하게 자동 인식됩니다. 앞서 설정한 my-api/.vscode/settings.json 규칙이 정확하게 이 구역에만 100% 매핑됩니다. my-api 안의 코드를 열면 우측 하단에 파이썬 가상환경이 알아서 착 잡힙니다.
//개발 편의성: my-api 터미널을 열거나 소스코드를 검색할 때, 엉뚱한 프런트엔드 폴더나 루트 폴더의 간섭 없이 오직 파이썬 백엔드 코드에만 집중할 수 있습니다.
"name": "📦 API 서비스 (A)",
"path": "my-api"
}, // 💡 파이썬 코드가 있는 폴더
{
"name": "⚙️ 백그라운드 워커 (B)",
"path": "my-app"
}
],
"settings": {
// 💡 1. 화면 스타일링 (모든 폴더의 가독성을 위해 통일)
"editor.fontSize": 15,
"editor.tabSize": 2,
"editor.wordWrap": "on", // 줄바꿈 자동 활성화
"editor.minimap.enabled": false, // 미니맵 제거로 화면 넓게 쓰기
// 💡 2. 저장 시 자동화 (코딩 표준 맞추기)
"editor.formatOnSave": true, // 저장할 때마다 코드 정렬 자동 실행
"files.trimTrailingWhitespace": true, // 줄 끝의 불필요한 공백 자동 제거
"files.insertFinalNewline": true, // 파일 맨 마지막 줄에 빈 줄 자동 추가
"editor.defaultFormatter": "esbenp.prettier-vscode",
// 👇 파이썬 에디터에서 탭 키를 누를 때 2칸 공백이 들어가도록 설정
"editor.insertSpaces": true,
"editor.detectIndentation": false, // 파일 내 다른 4칸 설정을 감지해서 멋대로 바꾸는 것을 방지
// 파이썬 파일 타이핑 시 서제스트(추천 팝업) 가로채기 방지
"editor.suggest.snippetsPreventQuickSuggestions": false,
// 수동 저장 시 코드 자동 수정 및 임포트 정리 활성화
"editor.codeActionsOnSave": {
"source.fixAll": "explicit",
"source.organizeImports": "explicit" // 저장 시 사용하지 않는 import 구문 자동 정리
},
"files.autoSave": "afterDelay",
// 4. 인코딩 깨짐 방지용 자동 감지 켜기
"files.autoGuessEncoding": true,
"files.associations": {
"*.css": "tailwindcss",
// ❌ "*.html": "vue" 기기존 코드를 지우고 아래로 변경합니다.
//"*.html": "jinja"
//"*.html": "jinja-html",
// ⭕ jinja-html 대신 기본 html 모드로 둡니다. (djlint가 진자 문법을 어차피 다 해석합니다)
"*.html": "html",
// 예: src/styles 폴더 안의 CSS 파일들만 Tailwind로 인식시키기
//"**/src/styles/*.css": "tailwindcss"
},
// 4. 터미널 및 파일 탐색기 제외 설정
"files.exclude": {
"**/.git": true,
"**/node_modules": true,
"**/__pycache__": true,
"**/.venv": true, // 파이썬 가상환경 숨기기
"my-api": true,
"my-app": true
},
// 2️⃣ 마크다운과 텍스트 파일은 저장 시 자동 포맷에서 제외
"[markdown]": {
// 💡 1. 저장 시 자동 정렬을 완전히 꺼서 표(Table)나 엔터 구조가 깨지는 오류 방지
"editor.formatOnSave": false,
// 💡 2. 마크다운 전용 린터(문법 검사기)가 있다면 백그라운드 에러 진단을 수동으로 무력화
"editor.codeActionsOnSave": {
"source.fixAll": "never",
"source.organizeImports": "never"
},
// 💡 3. 글을 쓰는 도중에 변수나 오타라고 판정하며 노란색/빨간색 밑줄 긋는 검사 차단
"editor.quickSuggestions": {
"comments": "off",
"strings": "off",
"other": "off"
},
// 💡 4. 한글 맞춤법이나 텍스트 오타 에러 표시(Squiggles)를 시각적으로 숨김
"editor.semanticHighlighting.enabled": false
},
"[plaintext]": {
"editor.formatOnSave": false,
"editor.codeActionsOnSave": {
"source.fixAll": "never",
"source.organizeImports": "never"
},
},
// 3. JSON(.json) 공통 설정 (기본 포매터 지정 및 저장 시 자동 정렬)
"[json]": {
"editor.defaultFormatter": "vscode.json-language-features",
},
"[jsonc]": { // 주석이 허용되는 JSON 파일용 설정
"editor.defaultFormatter": "vscode.json-language-features",
},
// 3. [웹 관련 블록] ESLint 같은 서버들은 원래 자기 구역(JS/TS)에서만 돌도록 명시 (예시)
"[javascript]": {
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
},
"[typescript]": {
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
},
// [Python 전용 설정] 저장 시 안전하게 자동 정렬 및 검사 실행
"[python]": {
// ⚠️ 반드시 이 이름(charliermarsh.ruff)이어야 최신 백엔드 서버를 직접 호출합니다!
"editor.defaultFormatter": "charliermarsh.ruff",
//"editor.defaultFormatter": "ms-python.python"
//"editor.defaultFormatter": "ms-python.black-formatter"
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll.ruff": "explicit", // 저장 시 문법 에러 자동 수정
"source.organizeImports.ruff": "explicit" // 저장 시 안 쓰는 import 구문 자동 삭제 ⚡
}
},
"[rust]": {
//"editor.defaultFormatter": "rust-analyzer" // 정렬 도구로 rust-analyzer 지정
"editor.defaultFormatter": "rust-lang.rust-analyzer", // 💡 러스트 폴더에 공식 정렬 엔진 지정
},
"[html]": {
// 🔥 [핵심] HTML 정렬 주체를 완벽하게 작동하는 ruff로 전격 교체합니다!
//"editor.defaultFormatter": "charliermarsh.ruff",
// 3️⃣ Jinja2/HTML 템플릿 파일이 깨진다면 전용 포매터(djlint 등)를 쓰거나 끄기
//"editor.defaultFormatter": "esbenp.prettier-vscode" // 또는 기본 포매터가 마음에 안 들면 false로 지정
"editor.defaultFormatter": "monosans.djlint", // ⭕ HTML 정렬 주체를 djlint로 세팅
// 2. HTML 클래스 속성("" 따옴표 안)에서도 자동완성 창이 즉시 뜨도록 설정
"editor.quickSuggestions": {
"strings": true,
"other": true,
"comments": false
},
},
"[toml]": {
"editor.codeActionsOnSave": {
"source.fixAll.ruff": "never",
"source.organizeImports.ruff": "never"
}
},
// 4. Flatpak 환경을 뚫고 파이썬 분석 엔진(Pylance)이 정상 작동하도록 백엔드 지정
"python.languageServer": "Pylance",
// 💡 [핵심 치트키] Pylance에게 정적 분석 엔진을 가동하라고 지시합니다.
// 이 옵션이 켜지면 잘못된 경로(import 오류)나 오타를 실행 전에 에디터가 실시간으로 잡아냅니다.
"python.analysis.typeCheckingMode": "basic",
// 💡 가상환경(venv) 폴더의 이름을 지정합니다. (자동 탐색용)
//"python.venvFolders": [
// ".venv"
//],
"python.terminal.activateEnvInCurrentTerminal": true, // 💡 모든 폴더의 터미널이 각자의 .venv를 자동 활성화하도록 고정
// 터미널을 새로 열 때 프로젝트 내부의 가상환경(.venv)을 자동으로 활성화(Activate)
"python.terminal.activateEnvironment": true,
// 💡 가상환경 내의 진짜 파이썬 실행 파일 경로를 직접 고정해 버립니다.
//.code-workspace
//실제 매핑되는 파이썬 주소: my-project/./.venv/bin/python (최상위 루트 바로 밑에 있는 가상환경 주소)
//.vscode/settings.json
//실제 매핑되는 파이썬 주소: micro-service-A/.venv/bin/python
//"python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python",
// 🔥 최신 ruff server 버전에서 2칸 설정을 강제 신뢰하도록 만드는 핵심 옵션
"ruff.configurationPreference": "editorFirst",
"ruff.enable": true,
"ruff.lint.enable": true,
// 💡 만약 파이썬 코딩 중에 자동완성은 필요한데 '알림창'만 끄고 싶다면?
// ruff.enable을 true로 둘 경우, 아래 VS Code 표준 필터를 먹여서 알림 팝업 창을 강제로 숨깁니다.
"workbench.notification.collapseAlerts": true,
"notification.filter": {
"charliermarsh.ruff": "off",
"ruff": "off"
},
// 💡 [치트키 1] 랭귀지 서버가 어떤 내부 치명적 에러(TOML 파싱 실패 등)를 겪어도 팝업창을 안 띄우게 막습니다.
"ruff.trace.server": "off",
// 💡 [치트키 2] Ruff 내부 에러 메시지가 VS Code UI 알림창으로 전달되는 통로를 완전히 차단합니다.
"ruff.logging.level": "off",
//"htmlWhitespaceSensitivity": "ignore",
//"djlint.format.enable": true,
// (선택사항) djLint가 Jinja2 규칙으로 올바르게 해석하도록 프로필 설정
"djlint.profile": "jinja",
// 💡 [핵심 해결책] H030(메타 설명 필요), H031(메타 키워드 필요) 잔소리 규칙을 완전히 잠재웁니다.
"djlint.compiler.ignore": "H030,H031,H025,H021",
// 2. [핵심] djLint가 줄을 함부로 붙이지 못하게 속성 단위로 줄바꿈 강제
"djlint.wrapAttributes": "force", // 속성이 많으면 강제로 줄바꿈(엔터) 처리
"djlint.maxLineLength": 120, // 한 줄 길이를 표준(120자)으로 되돌림
"djlint.indent": 2, // 들여쓰기를 스페이스 2칸으로 고정
// 2. 🔥 [핵심] djlint에게 HTML 주석 대신 진자 주석을 강제로 뱉으라고 명령합니다!
// (이전 답변 내용 복습) 에러 밑줄 아예 안 나오게 숨기기
// ❌ 틀린 방식: "djlint.ignore": "T003, H025"
// ✅ 올바른 방식: 대괄호안에 따옴표로 각각 쪼개서 넣어줍니다.
"djlint.ignore": [
"T003", // Jinja 주석 스타일 경고 방지
"H025", // HTML 속성 순서 강제 방지 (HTMX 가독성 확보)
"H021", // 인라인 style 사용 제한 방지 (DaisyUI 5 컴포넌트용)
"H017", // [추천 추가]
태그에 alt 속성 없다고 징징대는 잔소리 끄기
"H030", // [추천 추가] 밑에 순서 안 맞다고 개기는 잔소리 끄기
"H023"
],
"djlint.close_void_tags": true, // 이나
태그 끝에 /> 안 닫아도 에러 안 나게 해줌
// ruff 포매터가 내 줄바꿈(엔터) 기록을 훼손하지 못하게 잠그는 옵션
"html.format.preserveNewLines": true,
"html.format.wrapLineLength": 0,
// 💡 러스트 전용 분석 엔진(rust-analyzer) 설정 고정
//.vscode/settings.json
//"rust-analyzer.linkedProjects": [
// "${workspaceFolder}/Cargo.toml"
//],
"rust-analyzer.check.command": "check", // 💡 러스트 코드를 고칠 때 가장 빠른 속도로 에러 검출
// 1. Tailwind 가 감시하고 자동완성을 제공할 언어 지정
"tailwindCSS.includeLanguages": {
"html": "html",
"javascript": "javascript"
},
// 3. Emmet(html 단축키) 사용 시에도 Tailwind 클래스가 추천되도록 허용
"tailwindCSS.emmetCompletions": true,
// Tailwind v4 전용 확장 프로그램 실험적 기능 활성화
//"tailwindCSS.experimental.configFile": "${workspaceFolder}/src/css/layout.css",
"emmet.includeLanguages": {
"postcss": "css"
},
"css.lint.unknownAtRules": "ignore",
"scss.lint.unknownAtRules": "ignore",
},
// 💡 [핵심 해결책] 여기에 대등한 레벨로 "extensions" 블록을 뚫고 적어줍니다!
"extensions": {
"recommendations": [
"dbaeumer.vscode-eslint",
"EditorConfig.EditorConfig",
"wholroyd.jinja",
"esbenp.prettier-vscode",
"Continue.continue",
"usernamehw.errorlens",
"tamasfe.even-better-toml",
"charliermarsh.ruff", // 🐍 파이썬 초고속 포매터
"ms-python.vscode-pylance", // 🧠 파이썬 인공지능 분석 엔진
"monosans.djlint", // 🎨 HTML/진자/HTMX 문법 정렬기
"rust-lang.rust-analyzer", // 🦀 러스트 핵심 분석 엔진
"Vue.volar",
"bradlc.vscode-tailwindcss",
"dustypomerleau.rust-syntax",
"ms-python.python",
"DrBlury.protobuf-vsc",
"plex.vscode-protolint",
"cweijan.vscode-mysql-client2",
"DavidAnson.vscode-markdownlint",
"yzhang.markdown-all-in-one",
"guyskk.language-cython",
"golang.go",
"donjayamanne.githistory",
"cweijan.dbclient-jdbc",
"moshfeu.compare-folders",
"vadimcn.vscode-lldb",
"bufbuild.vscode-buf",
]
}
}
```
---
```json
//.vscode/settings.json
{
// 💡 가상환경(venv) 폴더의 이름을 지정합니다. (자동 탐색용)
"python.venvFolders": [
".venv"
],
// 💡 가상환경 내의 진짜 파이썬 실행 파일 경로를 직접 고정해 버립니다.
//.code-workspace
//실제 매핑되는 파이썬 주소: my-project/./.venv/bin/python (최상위 루트 바로 밑에 있는 가상환경 주소)
//.vscode/settings.json
//실제 매핑되는 파이썬 주소: micro-service-A/.venv/bin/python
"python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python",
// 💡 러스트 전용 분석 엔진(rust-analyzer) 설정 고정
//.vscode/settings.json
"rust-analyzer.linkedProjects": [
"${workspaceFolder}/Cargo.toml"
],
// Tailwind v4 전용 확장 프로그램 실험적 기능 활성화
//"tailwindCSS.experimental.configFile": "${workspaceFolder}/src/css/layout.css",
}
```
본 공간은 인공지능(AI)이 도출한 방대한 지식을 일목요연하게 큐레이션하여 기록하는 블로그입니다. 기술적 한계로 인해 모든 정보의 완벽한 정확성을 보장하기는 어려우므로, 최종적인 판단과 책임은 독자 본인에게 있음을 정중히 안내해 드립니다.
2026년 7월 21일 화요일
# vscode + python + jinja
database.py
import os from contextlib import contextmanager # contextmanager 임포트 from typing import Generator from dotenv...
-
bool atob(const char * string) { if (!strcmp(string, "true")) return true; return false; }
-
/// CXXXView.cpp void CXXXView::OnInitialUpdate() { CView::OnInitialUpdate(); // TODO: Add your specialized code here and/or call the ...
-
WxWidgets: http://www.wxwidgets.org/downloads/ MinGW: http://sourceforge.net/projects/mingw/files/ * Microsoft Windows Environment Var...