이 글은 날짜별 개발 일기의 마지막 정리다.
SAFE EDIT은 처음부터 큰 설계를 해두고 시작한 프로젝트는 아니었다.
필요한 기능을 하나씩 추가하면서 그때그때 구조를 정리해 나가는 방식에 가까웠다.
대부분의 작업 흐름은 아래와 비슷했다.
- 실제로 사용하다 보니 느려짐
- 불편한 부분이 보여서 수정함
- 수정하다 보니 기존 구조가 애매해짐
- 구조를 다시 정리하면서 기능이 같이 정돈됨
이 과정이 여러 번 반복됐다.
Analyzer는 초기에는 단순 문자열 검사 수준이었지만, rule, alarm, port 같은 블록 구조를 인식하면서 의미 단위로 판단하는 방식으로 바뀌었다.
오탐을 줄이기 위해 최상위 조건과 세부 조건을 나눠서 처리하도록 구조를 정리함.
Editor와 Highlighter는 기능 추가보다는 실제 사용 중 체감되는 부분 위주로 계속 손봤다.
전체 하이라이팅 방식에서 커서 기준 스트리밍 처리로 바꾸고, 스크롤 중 불필요한 작업을 줄이는 쪽으로 조정했다.
자동 저장, 복구, 업데이트 기능은 “사용자는 반드시 실수한다”는 전제를 기준으로 설계했다.
무조건 자동으로 처리하기보다는, 파일 수정 여부를 판단해서 필요한 경우에만 동작하도록 구성함.
업데이트 과정에서도 변경 파일만 비교하고, 문제가 생기면 복구할 수 있도록 구조를 잡았다.
사용 기술 정리
- 언어
- Python
- GUI
- PyQt5
- QTextEdit 기반 커스텀 에디터
- 커스텀 다이얼로그 / 프레임리스 윈도우
- 분석 로직
- 도메인 규칙 기반 Analyzer
- 예약어 / 블록 구조 / 파라미터 검증
- 오탐 방지를 위한 단계별 조건 분리
- 하이라이팅
- 커서 기준 스트리밍 처리
- 스크롤 시 하이라이팅 중단
- 성능 위주 구조 조정
- 자동 저장 / 복구
- 텍스트 변경 이벤트 기반 수정 여부 판단
- 자동 백업 파일 생성
- 재실행 시 복구 다이얼로그 제공
- 업데이트 시스템
- manifest 기반 파일 비교
- 변경 파일만 업데이트
- 업데이트 전 백업 / 실패 시 복구
- 관리자 권한 업데이트 후 사용자 권한 재실행
- 빌드 / 배포
- Nuitka 기반 exe 빌드
- 배치 스크립트로 빌드 및 서버 배포 자동화
https://apps.safesystem.co.kr/doc/editor/SAFE_EDIT_user_guide.html
SAFE EDIT 사용자 메뉴얼
TIP 구문 탭은 A) 오타 검증, B) 문법 검증으로 나뉘며, 조건과 메시지를 항목별로 제공합니다. 3-A 오타 검증 검출 대상조건메시지예외/비고 포트 형식 오류 I/M/O/Q/B + 6자리 16진수 불일치 잘못된 포
apps.safesystem.co.kr
'끄적 > 개발일기' 카테고리의 다른 글
| SAFE EDIT 개발 일기 ⑩ (0) | 2025.12.23 |
|---|---|
| SAFE EDIT 개발 일기 ⑨ (0) | 2025.12.22 |
| SAFE EDIT 개발 일기 ⑧ (0) | 2025.12.21 |
| SAFE EDIT 개발 일기 ⑦ (0) | 2025.12.20 |
| SAFE EDIT 개발 일기 ⑥ (0) | 2025.12.20 |