<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>hyeonlee.net</title><link>https://hyeonlee.net</link><description>프로세스 혁신(PI)과 데이터 엔지니어링 실무 기록</description><language>ko</language><lastBuildDate>Mon, 05 Oct 2026 15:46:55 +0900</lastBuildDate><item><title>OPIc IH 준비 기록: 문장 대신 키워드를 외운 5일</title><link>https://hyeonlee.net/153</link><guid>https://hyeonlee.net/153</guid><pubDate>Mon, 05 Oct 2026 18:30:00 +0900</pubDate><category>Study</category><description>OPIc을 5일 동안 준비해 IH를 받았다. 예상 질문 80여 개의 답을 문장으로 외우는 건 시간상 불가능해서, 답변마다 키워드만 정하고 그걸 보고 말하는 연습을 반복했다. 시험 구조, 유형별 말하는 순서, 연습 방법을 정리한다.</description></item><item><title>비개발자에게 웹 구조 보여주기: 화면·서버·DB를 따라가는 데모</title><link>https://hyeonlee.net/152</link><guid>https://hyeonlee.net/152</guid><pubDate>Mon, 05 Oct 2026 18:00:00 +0900</pubDate><category>Stack/VibeCoding</category><description>비개발자 동료들에게 웹이 어떻게 돌아가는지 설명하는 세미나를 준비했다. 말로 &quot;화면이 서버에 요청하고, 서버가 DB에 물어본다&quot;고 하면 대부분 &#x27;서버&#x27;라는 단어에서 막힌다. 그래서 요청이 오가는 장면을 눈으로 따라가는 데모를 만들었다.</description></item><item><title>데이터 비전공자에게 분석 결과 보고하기</title><link>https://hyeonlee.net/151</link><guid>https://hyeonlee.net/151</guid><pubDate>Sun, 04 Oct 2026 12:36:00 +0900</pubDate><category>Stack/Lowcode</category><description>시스템 사용량과 업무 실적의 관계를 보고해야 했다. 처음엔 상관계수와 2×2 매트릭스로 정리했는데, 보고를 받는 사람도 하는 사람도 데이터 전공자가 아니었다. 산점도와 추세선 하나로 바꿨다.</description></item><item><title>여러 점검 시스템을 하나로 합치는 데이터 모델</title><link>https://hyeonlee.net/150</link><guid>https://hyeonlee.net/150</guid><pubDate>Sun, 04 Oct 2026 12:34:00 +0900</pubDate><category>Stack/Lowcode</category><description>점검 종류마다 따로 만든 시스템과 양식을 하나로 합치려면, 공통 항목과 점검별 특화 항목을 함께 담는 구조가 필요하다. 파일럿에서는 속성 추가와 화면 필터로 버텼고, 통합 설계에서는 공통 컬럼과 JSON 특화 컬럼을 나눈 하이브리드 모델을 택했다.</description></item><item><title>보기 좋은 대시보드에서 할 일을 알려주는 대시보드로</title><link>https://hyeonlee.net/149</link><guid>https://hyeonlee.net/149</guid><pubDate>Sun, 04 Oct 2026 12:33:00 +0900</pubDate><category>Stack/Lowcode</category><description>처음 만든 대시보드는 KPI 카드, 도넛 차트, 월별 추세선이 한 화면에 가득했다. 보고 자료로는 보기 좋았지만, 현업 사용자가 화면을 열었을 때 오늘 무엇을 해야 하는지는 보이지 않았다. 신호와 조치 대상 중심으로 다시 구성했다.</description></item><item><title>대시보드 숫자가 틀렸을 때 확인하는 순서</title><link>https://hyeonlee.net/148</link><guid>https://hyeonlee.net/148</guid><pubDate>Sun, 04 Oct 2026 12:32:00 +0900</pubDate><category>Stack/Lowcode</category><description>대시보드에 조치 완료가 0건, 지연이 수천 건으로 나왔다. 화면 로직을 몇 차례 고쳤지만 그대로였다. 원인은 세 군데에 있었다. 화면이 실제로 호출하는 경로가 생각과 달랐고, 판정에 쓰던 컬럼은 대부분 비어 있었으며, 조치율 공식에도 오류가 있었다. 이후로는 숫자가 이</description></item><item><title>Mendix DateTime이 BI 도구에서 하루 빠르게 보이는 이유</title><link>https://hyeonlee.net/147</link><guid>https://hyeonlee.net/147</guid><pubDate>Sun, 04 Oct 2026 12:31:00 +0900</pubDate><category>Stack/Lowcode</category><description>Mendix DB를 BI 도구에 연결해 대시보드를 만들었더니, 조치 기한과 검출일이 시스템 화면보다 하루 빠르게 보인다는 문의가 들어왔다. 데이터 오류가 아니었다. Mendix는 날짜를 UTC로 저장하고 화면에서만 사용자 시간대로 바꿔 보여준다.</description></item><item><title>SSO 로그 테이블로 MAU와 재방문율 구하는 SQL</title><link>https://hyeonlee.net/146</link><guid>https://hyeonlee.net/146</guid><pubDate>Sun, 04 Oct 2026 12:30:00 +0900</pubDate><category>Stack/Lowcode</category><description>시스템 사용 현황을 보고하려고 월 사용자 수(MAU)와 재방문율을 구했다. Mendix의 사용자, 세션 테이블은 이력이 남지 않아 쓸 수 없었고, SSO 모듈이 남기는 로그인 로그 테이블을 기준으로 했다.</description></item><item><title>Mendix MPK 파일 열어서 마이크로플로우 구조 보기</title><link>https://hyeonlee.net/145</link><guid>https://hyeonlee.net/145</guid><pubDate>Sun, 04 Oct 2026 12:28:00 +0900</pubDate><category>Stack/Lowcode</category><description>기존 모듈을 재사용하려는데 Microflow의 파라미터, 호출하는 REST 주소, Enum 값을 하나씩 Studio Pro에서 열어 보기 번거로웠다. MPK 파일은 zip이고, 안의 프로젝트 파일은 SQLite DB이며, 각 문서는 BSON으로 저장돼 있다. Pytho</description></item><item><title>Mendix Studio Pro에서 안 바뀌는 스타일 main.scss로 바꾸기</title><link>https://hyeonlee.net/144</link><guid>https://hyeonlee.net/144</guid><pubDate>Sun, 04 Oct 2026 12:27:00 +0900</pubDate><category>Stack/Lowcode</category><description>상단 내비게이션 바의 높이, 글자 크기, 좌우 정렬을 바꾸려 했는데 Studio Pro에는 해당 속성이 없었다. 브라우저 콘솔에서 값을 먼저 맞춰 보고, 어느 규칙이 이기는지 확인한 뒤 theme/web/main.scss 에 한 블록으로 확정했다.</description></item><item><title>Mendix SAML SSO 자동 로그인과 딥링크 유지</title><link>https://hyeonlee.net/143</link><guid>https://hyeonlee.net/143</guid><pubDate>Sun, 04 Oct 2026 12:26:00 +0900</pubDate><category>Stack/Lowcode</category><description>SSO를 붙였는데도 사용자는 로그인 화면에서 SSO 버튼을 한 번 더 눌러야 했다. 로그인 페이지에 JS 스니펫 하나를 넣어, 화면이 열리면 바로 SSO로 이동하게 했다. 메일 링크처럼 특정 페이지로 들어온 경우 로그인 후 그 페이지로 돌아가고, 관리자는 주소에 표시를</description></item><item><title>Mendix 첫 접속 지연 줄이기: 워밍업과 캐시</title><link>https://hyeonlee.net/142</link><guid>https://hyeonlee.net/142</guid><pubDate>Sun, 04 Oct 2026 12:25:00 +0900</pubDate><category>Stack/Lowcode</category><description>오랜만에 접속하면 로그인 후 첫 화면이 뜨기까지 1분 넘게 걸렸고, 다시 접속하면 10초 안팎이었다. 목록 페이지를 오갈 때도 매번 서버 조회를 기다려야 했다. 서버 쪽은 주기적 워밍업으로, 화면 쪽은 브라우저 캐시로 대응했다.</description></item><item><title>Mendix 커밋 롤백, 용량 문제가 아니었다: FileDocument 전환기</title><link>https://hyeonlee.net/141</link><guid>https://hyeonlee.net/141</guid><pubDate>Sun, 04 Oct 2026 12:24:00 +0900</pubDate><category>Stack/Lowcode</category><description>보고서에 첨부를 선택하고 저장하면 커밋 전체가 롤백됐다. base64 문자열이 커서 생긴 문제로 보고 첨부 저장 방식을 FileDocument로 바꿨지만 그대로였다. 실제 원인은 Enum 속성에 없는 값을 보낸 것이었다.</description></item><item><title>Mendix Java heap OOM 추적기: base64 이미지 컬럼</title><link>https://hyeonlee.net/140</link><guid>https://hyeonlee.net/140</guid><pubDate>Sun, 04 Oct 2026 12:23:00 +0900</pubDate><category>Stack/Lowcode</category><description>운영 서버가 목록 조회 중에 반복해서 다운됐다. 로그에는 java.lang.OutOfMemoryError: Java heap space 가 남았다. 근본 원인은 사진을 base64로 담은 문자열 컬럼이었다. Mendix는 객체를 조회할 때 모든 속성을 함께 가져오기 때</description></item><item><title>Mendix mx.data.commit이 조용히 실패할 때</title><link>https://hyeonlee.net/139</link><guid>https://hyeonlee.net/139</guid><pubDate>Sun, 04 Oct 2026 12:21:00 +0900</pubDate><category>Stack/Lowcode</category><description>JS 위젯에서 mx.data.commit 으로 저장했더니 오류 메시지 없이 값이 반영되지 않았다. 원인은 엔티티 접근 규칙이었다. 저장과 삭제를 Microflow 호출로 바꾸고, 권한은 화면과 서버 두 곳에서 따로 걸었다.</description></item><item><title>Mendix SPA에서 HTMLSnippet JS가 꼬이는 이유: 이벤트 중복과 DOM 공존</title><link>https://hyeonlee.net/138</link><guid>https://hyeonlee.net/138</guid><pubDate>Sun, 04 Oct 2026 12:20:00 +0900</pubDate><category>Stack/Lowcode</category><description>HTMLSnippet JS 위젯에서 한 번에 접수된 버그 10건을 분석해 보니, 대부분이 Mendix의 페이지 이동 방식에서 나온 문제였다. 이벤트가 중복으로 등록됐고, 페이지가 바뀌는 순간 이전 화면과 새 화면이 잠깐 함께 존재했다.</description></item><item><title>Mendix Datagrid2 대신 HTMLSnippet과 JS로 목록 화면 만들기</title><link>https://hyeonlee.net/137</link><guid>https://hyeonlee.net/137</guid><pubDate>Sun, 04 Oct 2026 12:18:00 +0900</pubDate><category>Stack/Lowcode</category><description>점검 유형 4종의 목록 화면을 Datagrid2 대신 HTMLSnippet 3개와 JS로 다시 만들었다. 조회는 JSON 한 번으로 받고, 필터와 정렬은 브라우저에서 처리하며, 저장과 삭제는 Microflow를 호출한다.</description></item><item><title>PI 담당자가 로우코드로 사내 시스템을 직접 만들고 운영한 기록</title><link>https://hyeonlee.net/136</link><guid>https://hyeonlee.net/136</guid><pubDate>Sun, 04 Oct 2026 12:16:00 +0900</pubDate><category>Stack/Lowcode</category><description>현업 PI 담당자가 Mendix로 점검 이슈 관리 시스템을 기획부터 운영까지 직접 맡았다. 개발 Activity 약 240건을 유형별로 나눠 보면 출시 후 개선이 약 80%였다. 그 과정에서 정리한 원칙과 숫자를 남긴다.</description></item><item><title>보안 점검 후 Flask 서비스에서 고친 7가지</title><link>https://hyeonlee.net/135</link><guid>https://hyeonlee.net/135</guid><pubDate>Sun, 04 Oct 2026 12:13:00 +0900</pubDate><category>Stack/PythonFramework</category><description>사내 보안 점검 지적을 계기로 Flask 서비스의 인증과 세션 처리를 다시 살폈다. 하드코딩된 시크릿 키, 쿠키 폴백 인증, OIDC state·nonce 검증 등 7가지 항목과 수정 코드를 체크리스트로 정리했다.</description></item><item><title>대화형 로그인 라이브러리를 컨테이너에서 자동 로그인시키기</title><link>https://hyeonlee.net/134</link><guid>https://hyeonlee.net/134</guid><pubDate>Sun, 04 Oct 2026 12:11:00 +0900</pubDate><category>Stack/PythonFramework</category><description>ID와 비밀번호를 터미널에서 입력받는 사내 데이터 조회 라이브러리를 컨테이너 안 Flask 앱에서 자동 로그인시킨 방법이다. stdin 리다이렉트가 통하지 않는 이유, getpass 패치, 프롬프트 문구로 입력 항목을 판별하는 방법을 코드로 정리했다.</description></item><item><title>pfx 인증서를 Kubernetes TLS Secret으로 바꾸기</title><link>https://hyeonlee.net/133</link><guid>https://hyeonlee.net/133</guid><pubDate>Sun, 04 Oct 2026 12:10:00 +0900</pubDate><category>Stack/PythonFramework</category><description>사내 CA에서 받은 pfx 인증서를 Kubernetes TLS Secret에 넣으려면 인증서와 개인키를 따로 꺼내야 한다. openssl 추출 명령, Git Bash에서 비밀번호 입력이 멈출 때 해결법, 넣기 전 검증 방법을 정리했다.</description></item><item><title>SSO 무한 리다이렉트 디버깅: 로그의 &#x27;POST /&#x27; 한 줄</title><link>https://hyeonlee.net/132</link><guid>https://hyeonlee.net/132</guid><pubDate>Sun, 04 Oct 2026 12:09:00 +0900</pubDate><category>Stack/PythonFramework</category><description>Kubernetes로 옮긴 Flask 서비스에 사내 SSO(ADFS)를 붙이며 겪은 MSIS9224 오류와 무한 리다이렉트를 해결한 기록이다. 도메인, TLS, SSO를 어떤 순서로 붙여야 하는지와 단계별 확인 방법을 정리했다.</description></item><item><title>Flask 앱을 Kubernetes로 옮길 때 체크리스트: 옛 코드 배포, OOM, 쿼터 초과</title><link>https://hyeonlee.net/131</link><guid>https://hyeonlee.net/131</guid><pubDate>Sun, 04 Oct 2026 12:08:00 +0900</pubDate><category>Stack/PythonFramework</category><description>사내 PaaS에서 돌던 Flask 서비스를 Kubernetes 플랫폼으로 옮기며 겪은 문제를 체크리스트로 만들었다. 고친 코드가 반영되지 않을 때, ML 모델을 올린 Pod가 OOM으로 죽을 때, 롤링 업데이트가 쿼터 초과로 실패할 때 확인할 항목이다.</description></item><item><title>비개발자를 위한 쿠버네티스: 쇼핑몰로 이해하기</title><link>https://hyeonlee.net/130</link><guid>https://hyeonlee.net/130</guid><pubDate>Sun, 04 Oct 2026 12:06:00 +0900</pubDate><category>Stack/PythonFramework</category><description>Pod, Node, Namespace, Ingress, Service, Secret 같은 쿠버네티스 용어를 쇼핑몰에 빗대 정리했다. 인프라 담당자와 대화해야 하는 기획자와 PI 담당자, 처음 배포를 맡은 개발자를 위한 글이다.</description></item><item><title>인사이트 문장은 사람이 쓰고, 노출은 데이터가 정한다</title><link>https://hyeonlee.net/129</link><guid>https://hyeonlee.net/129</guid><pubDate>Sun, 04 Oct 2026 12:05:00 +0900</pubDate><category>Stack/PythonFramework</category><description>현장 이슈 대시보드의 &#x27;한눈에 보기&#x27; 화면을 5년 추이, 최근 3개월, 시기별 주의 순서로 설계했다. 인사이트 문장을 미리 써 두고 데이터가 기준을 넘을 때만 보여주는 방식과, 시스템 전환 때문에 생기는 추이 차트 착시를 막은 방법을 정리했다.</description></item><item><title>이슈 1건에 리포트 1장: AI 이슈 사례분석 화면 설계</title><link>https://hyeonlee.net/128</link><guid>https://hyeonlee.net/128</guid><pubDate>Sun, 04 Oct 2026 12:03:00 +0900</pubDate><category>Stack/PythonFramework</category><description>재발 여부 판정, 연관 이슈 검색, 관련 정보 제공이라는 세 가지 요청을 탭 세 개가 아니라 한 장의 이슈 분석 리포트로 묶었다. 대화형 채팅과 구조화 리포트 두 방식을 나란히 놓고 비교한 과정도 함께 정리했다.</description></item><item><title>폐쇄망에서 사내 LLM API 붙이기: openai 패키지 없이 urllib 하나로</title><link>https://hyeonlee.net/127</link><guid>https://hyeonlee.net/127</guid><pubDate>Sun, 04 Oct 2026 12:02:00 +0900</pubDate><category>Stack/PythonFramework</category><description>사내 LLM 게이트웨이(OpenAI 호환 API)를 Flask 서비스에 연동하면서 openai 패키지 없이 Python 표준 라이브러리 urllib만 썼다. 사내 필수 헤더, 호출별 ID, 환경변수로 공급자를 바꾸는 구조, API 승인 전 mock으로 먼저 개발하는 방</description></item><item><title>비전문가에게 AI 성능을 보여주는 법: 점수 대신 &#x27;10건 중 약 6건&#x27;</title><link>https://hyeonlee.net/126</link><guid>https://hyeonlee.net/126</guid><pubDate>Sun, 04 Oct 2026 12:00:00 +0900</pubDate><category>Stack/PythonFramework</category><description>현업 사용자가 보는 AI 화면에서 점수 대신 건수로 성능을 표현하고, 자유 입력 대신 선택형 입력을 받도록 바꿨다. 용어 정책과 함께 비전문가용 AI 화면을 설계하며 적용한 원칙 4가지를 정리했다.</description></item><item><title>고위험 이슈는 ML에 맡기지 않았다: 키워드 룰 안전망 설계</title><link>https://hyeonlee.net/125</link><guid>https://hyeonlee.net/125</guid><pubDate>Sun, 04 Oct 2026 11:58:00 +0900</pubDate><category>Stack/PythonFramework</category><description>이슈 등급 분류에서 가장 중요한 고위험 이슈를 ML 대상에서 빼고 키워드 룰로 분리했다. 중대 여부가 접수 텍스트가 아니라 결과로 갈린다는 것을 데이터로 확인한 과정과, 오탐 키워드를 걸러 룰을 &#x27;검토 요망&#x27; 플래그로 만든 방법을 정리했다.</description></item><item><title>3천 건 이슈 데이터로 등급 분류 모델 만들기: 10개 모델 비교와 재학습 가드</title><link>https://hyeonlee.net/124</link><guid>https://hyeonlee.net/124</guid><pubDate>Sun, 04 Oct 2026 11:55:00 +0900</pubDate><category>Stack/PythonFramework</category><description>15년 치 현장 이슈 데이터 약 3,000건으로 이슈 등급(등급·경미·아차)을 추천하는 분류 모델을 만들었다. 코드 체계가 다른 두 시스템의 데이터를 텍스트 기준으로 합친 방법, 10개 모델 교차검증, 재학습 때 엉뚱한 모델 교체를 막는 가드 로직을 정리했다.</description></item></channel></rss>