오늘은 일단 매뉴얼 작성 요청을 받았던 내용에 대해서 이사님에게 문의드렸는데
다행히 공식 요청이 들어온 것도 아니고 프로젝트 관련해서 작업이 있는 상태도 아직 아니기 때문에
고객사에서 말했던 것처럼 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 |