오늘은 일단 매뉴얼 작성 요청을 받았던 내용에 대해서 이사님에게 문의드렸는데

다행히 공식 요청이 들어온 것도 아니고 프로젝트 관련해서 작업이 있는 상태도 아직 아니기 때문에

고객사에서 말했던 것처럼 1~2월쯤에 진행되어야 할 일이라 지금 굳이 전달할 필요는 없다고 하셨다.

 

인터페이스 시 null값이 전송되지 않게 하는 방법에 대한 문의를 받았는데

이런 저런 방법을 쓰다가 아래 방법과 같이 serialize의 끝에 true만 하면 되는 것을 찾을 수 있었다.

public class Wrapper {
    public String field1;
    public String field2;
    public String field3;
    public String field4;
    public String field5;
}

Wrapper wrapper = new Wrapper();
wrapper.field1 = 'Value1';
wrapper.field2 = null;
wrapper.field3 = 'Value3';
wrapper.field4 = null;
wrapper.field5 = 'Value5';

// suppress null values
String jsonString = JSON.serialize(wrapper, true);

System.debug(jsonString);
// 출력: {"field5":"Value5","field3":"Value3","field1":"Value1"}

 

다만 이건 class에만 적용되고 map에서는 null값이 value로 들어가도 처리되지 않았는데

수동으로 null값을 처리하는 방법은 로직상 간단하지만

객체의 객체의 객체 또는 배열 내부의 객체의 값이 null인 경우도 있기 때문에

그걸 재귀로 하나하나 처리하는 것 보다 좋은 방법이 있는지 찾다가 찾을 수 있었는데

가끔 null값인 경우 보내지 말아달라는 요청이 프로젝트 10번에 한번꼴로 오기 때문에

이 부분은 기억해두면 좋은 정보인 것 같다.

 

다른 팀에서도 인터페이스 관련된 다른 질문을 받았는데

발송해야 하는 내용이고 앞부분이 다 처리되었는데 로그가 찍히지 않는다는 내용으로

일단 가장 의심되는 부분인 로그 insert도 그냥 되는 것이 아니고

해당 작업 또한 DML이기 때문에 DML 리밋 초과인 경우 되지 않는 점을 전달드렸고

그 외적으로는 성공인 경우 로그가 쌓이지 않는다고 했기 때문에

로직상 그게 정상 처리라면 성공으로 진행되기 때문에 하나가 누락되어도 실패가 아니게 되면

결국 로그는 쌓이지 않을 것 같다고 정리했다.

 

갑작스럽게 자바서버에서 또 문제가 발생했는데

내가 개발에 적용한 코드를 휴가 중에 운영에 팀장님이 배포해주셨었는데

기존 담당자분의 자바코드를 받아서 진행하다가 환경 문제 때문에 포기하고

팀장님의 노트북으로 작업해서 개발에서 정상처리되는 것 까지 확인했었지만

담당자가 다른 파일이라 최신화가 되지 않는 문제가 있었고

그로 인해서 여기저기 충돌이 발생해서 인터페이스 자체가 막혀있었던 것이었다.

 

한참 고생해서 어떻게 테스트를 하면서 문제 부분은 대충 찾을 수 있었지만

내 노트북에는 환경이 없어서 결국 팀장님의 도움이 필요했는데

팀장님이 계시지 않았으면 한참 걸렸을 것 같은 문제도 금방 해결됐다.

 

최근 진행중인 프로젝트 중 하나의 에러 관련 검증을 하고

해당 조건들에 대해서 전달했는데

그냥 정의서에 적힌 방식대로 처리하면 깔끔할 것 같은데

정의서는 예전 버전에서 업데이트 해주지 않고

왜 이상한 검증계 페이지만 만들어서 전달해주는지는 아직도 잘 모르겠다.

 

결국 문의 답변들과 자바서버 에러로

오늘 예상한 일정은 거의 처리되지 않았기 때문에 야근을 하게 되었는데

자바서버도 환경 설정만 되면 이제 얼추 손댈 수 있을 정도로 이해가 되긴 했는데

팀장님이 언제 같이 한번 세팅을 해보자고 해주셨기 때문에

여유가 될 때 자바서버 세팅을 한번 해두면

나중에는 혼자서도 서버 관련 작업을 할 수 있을 것 같다.

 

이후 자동 발송 관련해서

트리거를 통할 경우 여러개가 동시에 불러와지면 리스트로 작동하기 때문에

인터페이스 자체는 단건 요청이라 결국 배치를 끼워넣는 방식으로 진행했고

어제 정상 배치 인터페이스까지 확인했기 때문에

둘 중 하나의 트리거를 작성한 다음 정상 발송 테스트를 하긴 했지만

실제로 생성되는 데이터 중 하나는 ERP에서 받아야 하는 코드가 있어야 하기 때문에

insert, update를 모두 작성해야 했고

update에서 정상적으로 작동만 확인한 상태에서 마무리를 해야 하나 고민하다가

그냥 erp에서 넘어온 것 처럼 developer dml로 넣어버리면 될 것 같았고

다행히 무슨 제약규칙 같은 것 없이 바로 생성처리가 되었고

trigger, batch, interface 모두 순차적으로 호출되며 정상 발송 및 생성 확인을 할 수 있었다.

 

마지막으로 다른 개체 트리거만 마무리하면 이쪽 프로젝트는 일차 안심이고

운영 배포할 수 있게 전체 테스트클래스 작성을 해둔 다음

급하게 하느라 처리하지 못한 사용자 정의 설정으로 url 등 일부 값을 대체해주고

테스트 방식에 대해서만 간단하게 정리해둔 다음 마무리할 수 있을 것 같다.

 

오늘도 결국 9시 30분쯤 퇴근하게 되었는데

주 고객사쪽 프로젝트도 3개가 진행중이고

그냥 하나만으로도 1~2월 야근해야 할 것 같다는 프로젝트에도 엮여있기 때문에

왠지 당분간도 계속 바쁠 것 같은데

일은 많이 해도 재미도 있고 지치지는 않지만

수면시간 자체가 줄어드는 부분 때문에 하루가 조금만 더 길었으면 좋겠다.

 

 

(1).백준 5532번 방학 숙제는 국어, 수학의 숙제 양과 하루 처리 가능한 양이 제공될 때

며칠을 쉴 수 있는지 구해야 하는 문제였다.

 

일반적으로는 작업량을 고려해서 합산 후 반올림을 하는 방식으로 하겠지만

뭔가 쎄해서 제공된 테스트케이스 정답을 확인하니

얘는 특이하게 국어, 수학을 같이 하던 안하던 작업량이 일정한 이상한 아이였다.

 

결국 두 작업량 중 더 오래 걸리는 작업을 방학에서 뺴고

혹시 몰라서 음수가 나오지 않게 0과 Math.max 비교를 걸어서 출력하는 방식으로 해결했다.

const [l,a,b,c,d] = `20
25
30
6
8`.split('\n').map(Number)

console.log(Math.max(0, l - Math.max(Math.ceil(a / c), Math.ceil(b/d))))

'회고' 카테고리의 다른 글

[개발일지] - 531(주말)  (0) 2024.12.15
[개발일지] - 530(주말)  (0) 2024.12.14
[개발일지] - 528  (0) 2024.12.12
[개발일지] - 527  (1) 2024.12.11
[개발일지] - 526  (1) 2024.12.10

+ Recent posts