일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Recursion
- 정렬
- 매개변수 탐색
- microflow
- Sort
- 집합
- dfs
- 백트래킹
- 스택
- 멘딕스
- 이분탐색
- 해시맵
- 트리
- git
- 완전탐색
- domain model
- 반효경교수님
- Mendix
- 그래프
- 재귀
- 가중치없는그래프
- algorithm
- lcap
- 자바
- 프로그래머스
- SQL
- MySQL
- 자료구조
- 알고리즘
- Bruteforce
- Today
- Total
목록멘딕스 (15)
mondegreen
멘딕스 스튜디오 프로에서는 소스의 변경사항을 어떻게 알 수 있을까?내가 개발을 진행하며 확인하는 부분은 주로 아래 두 곳이다.1. 아래 사진 첫번째 탭 제목인 changes 이다. - pull을 받거나 merge changes here을 통해 상위 브랜치의 소스를 머지받았을 때 그리고 내가 작업을 해서 변경사항이 발생했을 때 page, microflow, nanoflow, contants 등 각 파일 기준으로 변경된 카운트를 확인할 수 있다.2. 두번째로는 오른쪽 하단의 아래화살표 옆 숫자이다.- 동일한 브랜치를 여러명이 쓰고 있을 때, 또는 상위 브랜치일 때 최신화하는 경우이다.그런데 과연 이 두 가지 항목에서 변경된 사항이 없을 때, 정말 변경사항이 없는 걸까그렇지 않다.왼쪽 상단의 주 메뉴 중 ve..
[2024.07.21] 아래 내용은 내가 테스트해본 결과 알게 된 것이고 실제 개발환경에서 혹시 다른 이슈를 경험하게 된다면 글을 업데이트 하고자 한다.Mendix로 개발하는 신입 개발자로서, 본격적으로 협업을 하게 되었고 멘붕을 겪게 된 것은 바로 버전 컨트롤이었다. 인텔리제이와 같은 IDE를 활용하면 터미널을 이용해 commit이나 pull이 가능했고, git이나 git lab에서 해당 레포지토리의 브랜치들을 merge할 수 있었다.그런데 Mendix는 진짜 정말 모르겠는 것이다... 미치고 팔짝 뛸 노릇.. 아래 화면에서 보는 것처럼 하나의 개발 브랜치 내에서 commit, push, pull은 아주 간편하고 좋았다. commit의 경우에도 별도의 창이 뜨면서 커밋 메세지를 작성할 수 있도록 잘 ..
기존의 마이크로플로우는 특정 버튼을 클릭했을 때 작동하도록 구현함으로써 원하는 로직을 수행하도록 했었다. 하지만 사용자의 특정한 행동이 없이 데이터가 변했을 때 이러한 방식은 적용될 수 없다.이 때 사용하는 것이 객체 이벤트 핸들러이다. 이것은 이벤트가 발생할 때까지 기다렸다가 의도했던 상황 또는 상태가 되었을 때 특정 마이크로플로우를 실행하도록 할 수 있는 것이다. 마치 자바나 코틀린에서 사용했던 옵저버와 유사한 것 같다. 계속 상태를 관찰하다가 변경이 발생하면 이를 감지하고 다른 로직을 수행할 수 있게 하는 것처럼 말이다.객체에 발생할 수 있는 이벤트는 Create, Commit, Delete, Rollback 이렇게 4가지인데 이 각 이벤트의 전 또는 후에 마이크로플로우를 트리거할 수 있도록 한 것..
이 로직의 목적은 사용자가 특정 훈련과정에서 등록 버튼을 클릭할 경우, 등록 기능은 물론 해당 훈련 과정을 수강하는 등록생 수를 업데이트해서 훈련 과정 당 등록 교육생 수를 보여주고자 하는 것이다. 위와 같이 훈련 과정 당 등록 교육생 수를 보여주기 위해 엔티티에 속성을 추가해준다.훈련 과정 리스트에서 각 행의 등록 버튼을 클릭하면 위의 화면인 등록 팝업이 뜬다. 그리고 여기서 save 버튼을 기본 로직인 등록이 아닌 마이크로플로우를 트리거하도록 변경한다.위 마이크로플로우는 해당 기능을 수행하기 위한 로직인데 지금까지 로직 중 가장 복잡하다. 일단 "등록"이라는 기능은 특정 "훈련 과정"의 등록이라는 제약이 있다. 이 등록 버튼으로 넘어 온 화면에서는 어떠한 TrainingEvent인지 마이크로플로우가 ..
도메인 모델에서 엔티티를 작성하는 과정 중 속성에서 value를 선택하는 부분이 있다. calculated 또는 stored 중에 선택해야 하는데 보통은 stored로 선택해서 저장하곤 했다.둘의 차이가 무엇일까?먼저 쉽게 직관적으로 이해되는 stored부터 생각해보자. 이 설정은 데이터베이스에 저장되는 것이다. 반대로 calculated는 클라리언트나 마이크로플로우에 의해 보여질 때마다 계산되는 값이다. 상대적으로 발생 빈도가 높은 경우이다.이렇게 말해도 사실 바로 와닿지는 않는데, 멘딕스에서는 둘 중 선택할 때 기준을 "보는 횟수 VS 변경되는 횟수"를 고려하라고 말한다. 예를 들어 환율을 생각해보면 시시각각 변경되지만 매초마다 사용자나 마이크로플로우에 의해 노출되지 않는다. 따라서 환율의 경우에는 ..
멘딕스에서 데이터는 어디에, 어떻게 존재할까위의 이미지처럼 클라이언트에서 넘어오는 데이터를 일단 애플리케이션의 서버 메모리에 객체로 저장하고 있다가 ㄱ) 사용자가 이를 취소하면 삭제되고 ㄴ) 저장하면 데이터베이스에 새로운 기록으로 저장되며 메모리에 보관된 객체를 삭제한다. 참고.데이터베이스에는 존재하지 않고 메모리에만 존재하는 객체를 임시 객체라고 한다. 사용자가 선택한 StartDate부터 Course의 Duration을 더해 EndDate를 계산하려고 하는데 위와 같이 Duration을 찾을 수 없다는 메세지가 뜬다. 즉, 마이크로플로우의 범위에 없다고 말할 수 있는데 이러한 이유가 무엇일까?마이크로플로우를 작성하는데 Course는 마이크로플로우 범위에 있지 않기 때문에 참조할 수 없는 것이다. 이..
멘딕스에서 마이크로플로우를 작성하며 객체를 생성, 변경할 때 객체를 선택하고 Action부분을 설정하는 부분이 있다. 여기서 Commit은 이 객체의 변경 사항을 데이터베이스에 저장(커밋)할 것인지를 설정하는 것이다. Refresh in client는 지금 변경된 객체 내용이 클라이언트 화면에서 업데이트할 것인지를 설정하는 것이다. 위의 경우 사용자가 교육의 Course와 StartDate를 선택했을 때, 자동으로 EndDate과 화면에 업데이트 되도록 마이크로플로우를 작성하는 과정이므로 '클라이언트가 기간을 저장하지 않은' 현 상황에서는 DB에 반영되지 않아야 하며, 종료 기간을 클라이어트가 확인할 수 있게 Refresh in client는 활성화되어야 한다.
1. 기존 기능인 create를 확장하는 마이크로플로우교육 시스템 관리자가 특정 Course에 대해 훈련 과정을 추가하려고 한다. 여러 Course를 list 뷰에 담았고 각 course마다 schedule 버튼을 클릭하면 바로 훈련 과정을 추가하는 로직을 만들고자 한다. 여기서 중요한 부분은 "특정 Course에 속하는" 훈련 과정을 만든다는 것이다. 즉, 버튼을 클릭하면 훈련과정이라는 엔티티의 형태를 띈 객체를 매번 생성하는 기능이 필요한데 추가적으로 선택된 Course 정보를 같이 넘겨주는 것이다. 이는 자바에서 메서드를 작성할 때 매개변수를 넘겨주는 것과 유사하다.해당 버튼을 클릭하면, 내가 생성한 ACT_Course_ScheduleTrainingEvent 라는 마이크로플로우를 호출하도록 설정한다..
멘딕스는 기본적인 CRUD와 같은 로직을 내장하고 있다. 하지만 우리 고객들은 그러한 단순한 것을 넘어 보다 복잡하고 여러 논리 판단을 거친 작동을 요구한다. 이를 구현하기 위해 개발자는 여러 데이터를 확인하고 논리 판단을 통해 어떠한 결과를 내는 코드를 작성하는 것이다. 혼자 개발한다면 코드가 복잡하든, 로직이 조금 꼬여있든, 나만 이해할 수 있는 애매한 명명의 변수를 사용하든 전혀 상관없다. 하지만 한 조직에 속해 개발하는 경우 우리는 팀으로 일하게 되며 내가 해당 업무를 떠나 다른 동료에게 넘겨주는 것이 일반적이다. 따라서 다른 사람이 이해하기 쉬운 코드를 명료하게 작성하는 것이 매우 중요한데 멘딕스는 이러한 부분을 시각화된 마이크로플로우로 해결하고 있는 것이다. 비단 개발자 뿐만 아니라 비즈니스 ..
페이지에 객체로 전달되거나 리스트 뷰에 데이터를 띄우기 위해서 도메인 모델로 엔티티를 작성하고 연결하는 방식은 이전 Beginner 과정에서 활용해봤다. 하지만 여기서 더 나아가 중첩된 데이터(Nested data)를 사용해보자.중첩된 데이터라고 축약해 표현되어 있는데 어떠한 상황에서 사용되는지 아래 멘딕스 개발 화면과 함께 설명하고자 한다. 먼저 강의 관련 서비스를 제공하는 어플리케이션을 개발하며 과정과 강의장소, 강사, 교육생 엔티티가 존재하고 과정, 장소, 강사 엔티티와 연결된 훈련 이벤트가 존재한다. 이 때 한 교육생이 특정 교육 훈련과정에 등록한다고 가정해보자. 그럼 이 등록과 관련된 속성은 훈련 과정이나 교육생 엔티티에 포함되어야 할까?아니다 위의 registration 엔티티와 같이 정보 객..