진행 과정

정글에서도 내내 붙잡고 있던 ISC… 우리의 프로젝트가 성과를 위해 포기한 부분이 있긴 했지만, 그래도 드디어 끝날 기미라는 것이 보이기 시작한다😭

완전히 끝난거(에러 처리까지)

프로젝트 등록 및 장비 설정은 현재 상용 서비스가 가능할 정도로 온전한 처리가 끝난 상태다(아마도).
정확하게 말하자면, 장비 설정의 경우 포트 설정에 따라서 포트에서 사용중인 애의 경우 삭제를 할 때 alter를 띄운 뒤에 사용자의 선택에 따라 처리를 해줄건데 이건 후술을 하도록 하고…

아직 갈 길이 좀 남은 애들

포트 설정의 경우 기존에 저장시킨 ui에 따라서 랜더링 시키는 작업과 포트가 1개일 때의 모든 예외 상황에 대한 처리는 완료가 되었다.
따라서 현재 남아있는 것은 포트의 삭제 및 추가 되시겠다.
참고로 포트의 추가에 따라 생길 수 있는 예외에 대한 몇가지 처리를 해두긴 했는데 이건 공학적 사고가 늘어서 그런지 어어엄청 힘들지는 않았다.

처리해둔 예외들

우리가 사용하는 포트가 뭔지 잘 생각해보자.
일종의 구역에 따라서 xy좌표처럼 나누어져있는 거다.
그러니까 아무리 장비가 달라도 이 좌표가 중복되어 등록될 수는 없기 때문에 이 경우에 대한 예외를 가장 우선적으로 처리해주었다.
그리고 포트를 구분해주는 구분자의 경우 굳이 공백으로 두겠다면 말릴까 말까 고민을 많이 하다가 이후 시나리오 코딩시에 어려움이 있음을 alter로 공지하고 저장을 하지 않으면 기본 포트 설명으로 통일시켜 저장을 해두었다.
그 외에도 지나치게 긴 장비주석은 substr을 사용하여 특정 글자수까지만 파싱을 하여 저장을 해두었고 장비는 100개까지만 추가가되고 이후 추가 시도시 alter를 띄우고 더는 추가가 안되도록 해두었다.
처음에는 저장시에 100개까지만 저장되도록 하는 방법을 생각했다가 우리는 상용 서비스를 만드는 거라고 니나농님한테 한소리 들었다…
돌이켜 생각해보면 이건 유저 기만이다 기만

사용자 편의를 위해 생각한 것들

사용자가 등록을 할 때 어떤 것들을 먼저 입력하는게 편할지를 나름대로 고민하면서 포트 페이지를 만들기 시작했다.
나라면 우선 등록할 장비를 정하고, 포트의 이름(구분자)를 정할 것이라고 판단하였다.
그래서 이 둘 부터 배치한 뒤에 나머지 들도 종속되는 관계에 따라 위젯들을 배치해주었다.
이 외에도 scffold위젯의 경우 화면이 지나치게 작아지면 오버플로우 현상이 발생할 수 있으므로, 화면의 크기를 큰화면 보통화면 지나치게 작은화면으로 구분하여 큰 화면에서는 scffold를 그냥 랜더링하고, 보통화면에서는 싱글스크롤을 하나만 쓴 뒤에 거기에서 조금만 작아지면 글자크기를 조절하고 더 작아지면 스크롤 두개를 겹쳐 가로 세로 스크롤을 지원하였다.
그렇게해도 오버플로우가 일어나는 극단적으로 작은 화면의 경우 화면의 크기가 너무 작아 랜더링을 중단한다는 문구를 띄워주었다.

주요 해결 이슈

장비 이름에 따라 모든 포트의 옵션들이 바뀌는 부분이 생각보다 처리하기 까다로웠다.
우선 특정 장비는 포트의 채널이 DropDown메뉴가 String이어야했고, 어떤 장비는 Int의 채널을 가져야만 했다.
이 부분은 장비명이 어떤 애를 contains하고있는 지와 삼항연산자를 조합하여 쉽게 해결하였으나, 장비마다 드롭다운 박스의 범위가 다른 부분 때문에 잠시 애를 먹었다.

해결방법

옵션을 점검하기에 앞서 기존 옵션의 타입을 확인해준다.
그래서 타입이 다르다면 기존의 타입을 바텀시트로 혹시나 모르니까 띄워만 주고 items의 리스트의 첫번째 값을 기본값으로 랜더링한다.
타입이 같더라도 범위가 달라서 문제가 일어난 경우 동일한 방식을 사용해주었다.

왜 이 방식을 택하였는가

내가 생각했을 때에 장비를 바꾼다면 기존의 포트값은 의미가 없다고 판단하였기 때문이다.
그렇지만 아예 무시하자니 혹시나 정보가 필요할 때를 대비하여 alter와 같이 상호적인 위젯보다는 잠시 안내만 보여주고 마는 바텀시트를 사용하면 어떨까 싶었다.
그리고 내가 생각하였을 때에 장비명이 바뀐 이상 기존의 포트에 대한 정보는 큰 의미가 없다는 생각도 들었다.
어차피 장비가 완전히 바뀌어서 꽂을 수 있는 위치의 범위까지 바뀐 마당에 왜 굳이 기존의 범위에서 내가 고른 값을 알아야만 하지 싶었달까? 근데 이 부분은 일요일에 피드백을 받아보고 의견이 수정될 수도 있긴 하다…

댓글남기기