본문 바로가기
728x90
반응형

전체 글274

세션 로직을 여덟 번 고친 하루, 비밀값을 옮기고 로그인 판단을 서버로 장비 모니터링 대시보드의 세션 처리를 여러 차례 고쳤다. 세션 비밀값을 환경 변수로 옮기고 로그인 응답을 바꾼 뒤, 화면 쪽 세션 검사를 걷어냈다.커밋 제목은 'modify session logic'에서 'modify session logic8'까지 이어졌다. 이틀 뒤에는 서버에 인증 미들웨어를 붙였다. 이 글에는 확인한 커밋 네 개만 순서대로 적었다.세션 비밀값이 코드에 있었다첫 커밋은 세션 설정이었다. 세션 비밀값이 'yourSecretKey'라는 예제 문자열 그대로였고, 쿠키는 secure가 false로 고정되어 있었으며, 초기 세션도 저장하도록 되어 있었다.app.use(session({ secret: process.env.SESSION_SECRET, resave: false, s.. 2026. 11. 8.
사용자 정보 응답이 없을 때 재시도 넣기, 다섯 번 2초에서 열 번 0.2초로 장비 모니터링 대시보드의 상단 메뉴에는 사이트 이름과 사용자 이름이 뜬다. 정보를 가져오는 요청이 실패하면 '사이트 정보 오류'가 그대로 남았다. 먼저 중복 요청을 없애고 세션 저장소에 정보를 저장한 뒤, 실패 시 재시도를 넣었다.처음에는 2초 간격으로 최대 5회 재시도했다. 10분 뒤에는 간격을 0.2초로 줄이고 최대 횟수를 10회로 늘렸다.같은 요청을 두 군데서 보냈다상단 메뉴 컴포넌트는 화면에 붙을 때 사이트 정보를 요청했다. 그런데 파일 아래쪽의 페이지 로드 이벤트에서도 같은 주소로 요청을 또 보내고 있었다. 사용자 정보 창에서 쓸 변수를 채우기 위해서였다.첫 커밋에서 이 중복을 없앴다. 컴포넌트가 정보를 받으면 세션 저장소에 사이트 이름과 사용자 이름을 저장한다. 사용자 정보 창은 요청을 보내지.. 2026. 11. 7.
Ctrl+F 엔터 연속 검색과 끝에서 되돌아가기, 그리고 수정 표시 탭 사내 설정 파일 에디터의 Ctrl+F 검색은 입력란의 엔터 신호로 다음 결과를 찾도록 되어 있었다. 이를 입력란과 다음 버튼에서 모두 처리하도록 바꾸고, 파일 끝에 닿으면 처음부터 다시 찾는 기능도 추가했다.엔터를 누가 받느냐원래 검색 입력란의 엔터 신호를 다음 찾기에 연결해 두었고, 창이 뜨면 입력란에 포커스를 줬다. 이 방식은 입력란의 엔터만 직접 연결하므로, 다음 버튼에서도 엔터를 처리하도록 바꿀 필요가 있었다.그래서 엔터 처리를 한곳으로 모았다. 입력란의 엔터 연결을 제거하고 이벤트 필터를 설치했다. 입력란이든 다음 버튼이든 엔터가 오면 다음 찾기를 호출하고, 이벤트를 처리했다고 반환한다.if event.key() == QtCore.Qt.Key_Return or event.key() == QtCo.. 2026. 11. 7.
엔터 들여쓰기 유지와 중괄호 가이드라인, 커서가 움직일 때마다 문서 전체를 훑었다 사내 설정 파일 에디터에서 엔터를 치면 새 줄의 들여쓰기가 이어지지 않았다. 엔터가 윗줄의 들여쓰기를 유지하고, 여는 중괄호 뒤에서는 한 단계 더 들여쓰도록 바꿨다. 이어 커서 이동마다 중괄호 쌍을 찾는 가이드라인도 추가했다.키 입력을 직접 가로챘다에디터에는 Tab으로 선택 영역을 들여쓰고, Shift+Tab으로 내어쓰는 분기가 이미 있었다. 첫 커밋 제목은 '선택된 텍스트 다중 들여쓰기, 내어쓰기 기능 추가'였다. 하지만 diff에서 새로 추가된 주요 부분은 엔터 분기와 처리 함수였다.elif event.key() == QtCore.Qt.Key_Return or event.key() == QtCore.Qt.Key_Enter: # Enter: 이전 줄의 들여쓰기 유지 self.handle_en.. 2026. 11. 7.
직접 그린 창의 제목 표시줄, 8방향 리사이즈와 최대화 창 끌어서 복원 사내 설정 파일 에디터의 제목 표시줄은 운영체제 기본 창 대신 직접 구성한 형태였다. 아이콘, 메뉴, 창 버튼을 한 프레임으로 합치고 최대화한 창을 끌어서 복원하도록 고쳤다. 같은 날 오전에는 창 가장자리를 이용한 8방향 크기 조절도 추가했다.흩어져 있던 제목 표시줄 통합원래 상단 UI는 메뉴 컨테이너와 오른쪽 컨트롤 바로 나뉘어 있었다. 최소화, 최대화, 닫기 버튼은 오른쪽 바에 따로 있었고, 메뉴 왼쪽에는 아이콘용 16픽셀 여백이 있었다.이를 하나의 프레임으로 합쳤다. 왼쪽에 아이콘, 가운데 메뉴바, 오른쪽에 창 제어 버튼을 배치했다. 오른쪽 바를 제거하고, 창 제어 버튼 세 개를 만드는 코드는 레이아웃을 인자로 받는 함수로 분리했다.메뉴 왼쪽 여백은 0으로 바꾸고, 컨테이너 높이는 40픽셀로 설정했.. 2026. 11. 7.
설정 파일의 누락 알람과 스위치 찾기, 하이라이터 색칠 규칙과 집합의 차 사내 설정 파일 에디터에 누락 알람 검출을 넣었다. 룰 블록에서 쓰이는 알람 이름인데 정의 목록에는 없는 것을 찾아 표시하는 기능이다. 이름을 골라내는 기준으로 기존 하이라이터의 색칠 규칙을 사용했다.무엇을 누락 알람으로 볼까설정 파일에는 알람 정의와 룰 블록이 있다. 실제로 쓰이는 룰 안에서 알람 후보를 찾고, 정의 목록에 없는 이름을 누락으로 처리했다.문제는 룰 안의 어떤 글자가 알람 이름인지 판단하는 것이었다. 이를 위해 기존 하이라이터와 같은 패턴으로 후보를 찾았다.하이라이터의 색칠 규칙을 기준으로에디터는 '화재'로 시작하는 이름을 빨간색으로, '주의', '경보', '축적'으로 시작하는 이름을 파란색으로 칠하고 있었다. 누락 알람 후보도 이 색칠 규칙에 해당하는 패턴으로 찾았다.red_pat = .. 2026. 11. 6.
728x90
반응형