본문 바로가기

mendix

About me Who I Am1989년 서울에서 태어나 강릉에서 유년기를 보냈습니다.초, 중, 고는 모두 양천구에서 보냈습니다. 광진구에 있는 대학교 산업공학 학사 졸업했습니다. 현재는 21년생 쌍둥이 아들/딸 2명의 자식이 있습니다. 아내는 1명입니다. 를 사랑합니다. 아내와 쌍둥이 자식들을 만나기 전엔 아버지, 어머니, 형 각 1명씩 총 4명이 함께 살았습니다.ISTJ입니다. 혼자 있을 때 더 행복할 때가 있습니다. 멘탈관리가 필요할 땐 자기개발서나 유익한 유튜브를 찾아보며 정신수양을 하며 극복하곤 합니다. 유소년기 낭만이 아직 살아있습니다. 드래곤볼을 시작으로 원피스, 나루토, 블리치, 은혼, 귀멸의칼날, 강철의연금술사, 랑그릿사, 창세기전 등의 주요 캐릭터가 저의 낭만과 함께합니다.(오타쿠 아닙니다.) 강릉에 .. 더보기
[Mendix] 자동 메일 발송 기능 개발기: Logic 에러부터 HTML 테이블까지 (feat. 회사 API) 지난 포스팅에서 제가 개발 중인 시스템의 데이터를 적재하는 것까지는 성공했습니다. 이제 남은 건 "조치 기한이 임박하거나 지난 건들에 대해 담당자에게 메일을 쏘는 것"이었죠.간단하게 루프(Loop) 돌려서 API 호출하면 끝날 줄 알았는데... 역시나 Mendix는 호락호락하지 않았습니다. (제발 한 번에 좀 돼라 😭)오늘의 삽질 기록은 크게 세 가지입니다.날짜 계산 로직의 함정 (trimToDays)사내 메일 API 연동 (Invalid Address)이메일 본문 예쁘게 만들기 (HTML 노가다)1. 날짜 계산 에러: "값이 없는데 어떻게 계산해요?"조치 기한(DueDate)을 기준으로 3일 전(Upcoming), 1일 지남(Overdue1), 7일 이상 지남(Overdue7) 조건을 걸어 분기 처리.. 더보기
[Mendix] 배포 실패! ConnectionBusException과 DB 동기화의 악몽 (feat. Unique Constraint) Mendix 개발 과정에서 로컬 테스트는 완벽했는데, 운영(Production) 서버 배포 단계에서 DB 에러로 식은땀을 흘렸던 경험을 정리해 드립니다. 로컬에서 기능 개발을 마치고 기분 좋게 운영 서버로 배포(Deploy)를 눌렀습니다. 그런데 진행률 바가 멈추더니 빨간색 에러 로그를 뱉어내며 배포가 중단되었습니다.1. 문제 상황: 40개의 DB 명령, 그리고 실패로그를 확인해보니 GitHub 통신 오류 같은 네트워크 문제가 아니었습니다. 명백한 Database Synchronization(DB 동기화) 오류였습니다.Plaintext ERROR: ... The database has to be updated.INFO - ConnectionBus: Executing 40 database synchroni.. 더보기
[Mendix] Spotfire 연동 2탄: 배치 스케줄링 & 데이터 중복 방지 (feat. Full Refresh) 지난 포스팅에서 복잡한 Join 문제를 해결하기 위해 Reporting Entity(납작한 통계 테이블)를 만들고, ETL Microflow까지 구현했습니다. 이제 남은 건 이 로직을 "자동으로" 돌리는 것뿐이었죠.하지만 역시나 Mendix, 호락호락하지 않았습니다. 두 가지 난관이 기다리고 있었는데요.스케줄러 버튼이 없다? (Runtime vs Studio Pro)데이터가 계속 쌓인다? (Duplicate Issue)1. Mendix 스케줄러: "버튼이 왜 없어?"일단 매일 밤 데이터를 갱신해야 하니 스케줄러를 찾아봤습니다. 웹 런타임 화면(ScheduledEvents)에 들어갔는데... [Add] 버튼이 없습니다.알고 보니 Mendix의 Scheduled Event는 런타임에서 설정하는 게 아니라, .. 더보기
[Mendix] 복잡한 DB Join 없이 Spotfire 대시보드 데이터 뽑아내기 (feat. 셀프 ETL) 최근 Mendix로 구축된 시스템의 데이터를 활용해 Spotfire 대시보드를 만드는 작업을 진행했습니다. 보통의 웹 애플리케이션 개발이 아니라, 데이터 시각화를 위한 백엔드 데이터 구조를 잡는 일이었죠.그런데 Mendix의 DB 구조... 아시는 분들은 아시겠지만 정말 희한합니다.1. 문제 상황: Mendix DB의 높은 장벽Mendix는 ORM(Object Relational Mapping) 기반이라 물리적인 테이블 명이 Module$Entity 형태로 생성되고, 테이블 간의 관계(Join)는 별도의 참조 테이블로 복잡하게 얽혀 있습니다.우리가 흔히 SQL에서 하듯 LEFT JOIN, INNER JOIN을 걸어서 데이터를 뽑아내려고 보니, 대시보드에 필요한 '기준 정보'들이 전부 각기 다른 테이블에 .. 더보기