출근 전부터 인터페이스 로그 관련 문의가 들어왔는데

인터페이스 로그에는 성공이라고 뜨지만 내부 결과는 실패라고 뜨는 문제로

내부 로직 상에서 해당하는 데이터 값이 없어서 없다고 보내기 때문에 결과는 실패지만

인터페이스 자체는 정상적으로 값을 반환했기 때문에 성공으로 처리되고 있었지만

확인하기 어렵기 때문에 결과가 없어서 실패로 반환해도 실패로 처리해달라는 요청을 받았고

합리적인 이유 같아서 바로 실패로 변경 및 운영에 배포를 진행했다.

 

갑자기 SAP쪽에서 전화가 와서 받았더니 고객사에서 문의 메일이 와있었는데

이번에도 당연히 SAP에서 응답을 못해줘서 발생한 문제긴 했는데

SAP에서도 주기적으로 발생해서 그런지 문제 원인에 대해 조금 더 문의를 하셨고

관련 로그를 확인하며 답변드리고 내부적으로 처리 되는 방향이 있는지 조금 더 확인했다.

 

이후 유지보수 요청으로 인해 그룹 등록 관련 문의 내용을 확인했는데

내가 한 인터페이스도 아니고 22년도에 작성된 입사 전 코드였는데

구조도 여러개가 엮여있고 해당 프로세스도 공유되지 않은 상태라 쉽지 않았다.

 

해당 내용의 key값을 바탕으로 인터페이스 역추적을 진행했고

로그를 다 살펴본 결과 정상적으로 자동화가 다 되어있는 코드였지만

SAP 데이터 반영을 새벽에 배치로 돌리고 있고

거기서는 등록 후 바로 발송했기 때문에 문제가 발생한 부분으로

재전송을 하면 바로 업데이트가 될 것 같은 내용으로 확인되었다.

 

하지만 swagger를 통해서 발송하려고 해도 발송이 되지 않았는데

SAP에서 구현을 안한건지 뭔지는 해당 인터페이스를 전혀 안써봤기 때문에 알 수 없었고

고객사에서 값 업데이트 또는 재발송을 하면 될 것 같다는 답변을 남기고

혹시 에러가 나오면 바로 로그를 확인해드리겠다고 마무리했다.

 

SAP 인터페이스가 또 에러가 발생했고

심지어 내가 확인하기 전에 정상화가 된 다음 다시 에러가 발생한 상태였고

SAP에서 로그 전달 요청을 했기 때문에 해당 내용을 정리해서 발송했다.

 

얼마 전 야근하며 지원했던 인터페이스도 안된다는 문의가 들어왔는데

조금 황당하지만 개발서버 반영되었고 테스트 후 수정사항 없으시면 운영 반영한다고 발송했었는데

개발서버로 발송하시고 운영에 데이터가 생성되지 않아서 안된다는 문의였다.

 

정의서에 토큰도 개발, 운영을 나눠뒀고

발송된 내용도 개발서버로 들어왔는데 도대체 어디에서 혼선이 있었는지는 모르겠지만

인터페이스를 만족해서 운영에서 테스트하겠거니 하고 그냥 바로 운영에 배포한 다음

주소값 변경에 대한 안내와 토큰 안내 그리고 운영 배포 사실을 담당자분에게 전달드리고 마무리했다.

 

 

(1).백준 1744번 수 묶기는 알고리즘 스터디를 같이 하시는 분인 동기분께서 추천해주신 문제였는데

생각보다 간단해 보이는 척 하지만 그렇게까지 쉽진 않을 것 같았고 왜 이게 쉽다고 하신건가 잠깐 의아해하면서

최대힙, 최소 힙을 구현한 다음 음수와 0까진 최소 힙, 양수는 최대 힙에 넣어주고

두개씩 묶어서 곱해주고 나머지는 더하는 방식으로 진행하려고 했는데

조건을 읽어보니 한번에 들어가는 최대 개수는 50개밖에 되지 않았다.

 

결론적으로 sort를 써도 0.000001초 정도밖에 안걸리기 때문에 바로 sort를 써버렸고

대신 앞, 뒤에서 접근하게 하기 위해서 투포인터 느낌으로 양쪽에서 접근하며 양수, 음수를 기준으로 멈춰줬다.

 

그 외로는 while문 내부에서 left를 이동하는 방식이나 right를 이동하는 방식이 반대가 된다는 점 정도가 있었고

사실 몇번의 오답이 있을 뻔 했지만 예제를 통해서 한번에 통과할 수 있었는데

곱한 다음 나머지 값을 합해야 한다는 조건을 까먹고 그냥 버려서 한번 오답이었고

-까지만 처리했는데 0과 곱하면 -가 사라지기 때문에 left쪽 while 범위를 <에서 <=로 한번 더 수정해야 했다.

 

테스트케이스를 하고 보니 테스트클래스의 필요성을 더 크게 느낄 수 있었는데

물론 여러가지 기법처럼 경계값이나 중간값 등 여러가지 케이스를 만드는 능력도 필요하기 때문에

그런 부분도 한번쯤 생각해보고 스스로 테스트해서 테스트케이스에 의존하지 않는 능력도 길러보면 좋을 것 같다.

const input = `2
1
1`.split('\n').map(Number)

input.shift()
input.sort((a,b) => a-b)

let left = 0
let right = input.length-1

let sum = 0

while (input[left] <= 0) {
    if(input[left + 1] <= 0){
        sum += input[left] * input[left+1]
        left++
    }
    else{
        sum += input[left]
    }
    left++
}

while (input[right] > 0) {
    if(input[right - 1] > 1){
        sum += input[right] * input[right-1]
        right--
    }
    else{
        sum += input[right]
    }
    right --
    
}

console.log(sum)

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

[개발일지] - 481(주말)  (0) 2024.10.26
[개발일지] - 480  (0) 2024.10.25
[개발일지] - 478  (1) 2024.10.23
[개발일지] - 477  (0) 2024.10.22
[개발일지] - 476  (0) 2024.10.21

+ Recent posts