온보딩 때부터 작성하던 일정표를 모두 옮겼는데

teams의 양식과 notion의 양식이 달라서 조금씩 깨지는 현상이 발생했다.

 

혹시 까먹은 부분이 있을까봐 백업하는 용도였기 때문에

멋대로 적용된 마크업 때문에 마구 변경되기는 했지만

작성된 내용은 유지되고 있기 때문에 그냥 넘어가기로 했고

기존에 완료된 자동화 부분에서 중개서버쪽 코드를 변경한다고 해서

해당 부분을 확인 후 api를 받는 부분을 변경한 다음

테스트코드도 변경해야했다.

 

기존 테스트코드들을 확인하고

변경되기로 한 테스트코드를 확인하기 위해 postman, vpn등을 설치하는데

postman은 다행히 계정동기화 기능이 있어서 편하게 사용할 수 있었고

vpn은 조금 말썽이었지만 무리없이 실행 가능했다.

 

11시부터 세번쨰 프로젝트 주간회의에 들어갔는데

내가 맡은 부분은 세번쨰 프로젝트 주간회의 주제와 다른 부분이기 때문에

전반적으로 할 일은 없었고 휴가이신 팀장님에게 전달할 내용만 메모했다.

 

점심을 먹고 오자마자 그 사이에 온 문의를 처리하는데

레이아웃을 변경했음에도 불구하고 변경되지 않아서

다른 모든 레이아웃들을 수정하고 처리했지만

그래도 표기가 변경되지 않았다.

 

이런저런 세팅들을 다 건드려도 변경되지 않았는데

캐시 문제라고 의심도 해보다가 Ctrl + Shift + R등 강력 새로고침도 통하지 않았다.

 

크롬 확장프로그램 중 Clear Cache라는 캐시 삭제 프로그램을 설치하고 적용하니

그제서야 제대로 레이아웃 변경을 확인할 수 있었는데

세일즈포스 내부에서 알 수 없는 캐시 처리를 제대로 하지 못하는 것 같았다.

 

해당 부분을 동기분에게 공유드렸더니

레이아웃이 안될 때는 DISPLAY DENSITY의 Compact -> Comfy -> Compact로 변경하면

변경된 레이아웃등으로 새로고침이 된다고 알려주셨는데

설치를 하기 전에 알았으면 편리할 것 같지만

설치를 한 입장에서는 두번 바꾸느니 새로고침을 하는 것도 나쁘지 않을 것 같았다.

 

중개서버에서 api를 변경했기 때문에 해당 내용을 확인 후 코드를 수정하려고 했는데

postman으로 발송해도 응답이 없어서 상당히 답답했다.

 

원인이 뭔지 곰곰이 생각해보다가

중개서버쪽 개발자분은 postman으로 동일 요청에도 정상 응답이 나온다는 말씀을 해주시자마자

저번에도 이런 일이 있었다는 것이 떠올랐고

호스트 설정을 하지 않아서 응답을 받지 못했다는 사실을 알 수 있었다.

 

간단하게 C:\Windows\System32\drivers\etc경로의 Host 파일을 수정하면 됐는데

ip, 주소 형태로 한줄만 추가하면 정상적으로 중개서버 사용이 가능했다.

123.456.789.123 abcd.efgh.co.kr

 

postman으로 받은 결과를 통해 response를 확인할 수 있었고

변경된 내용에 따라 wrapper를 변경해주고

내부 코드들의 조건 및 적용도 변경해준 다음

자동화 프로세스를 전체 돌려보니 변경 전과 동일하게 잘 돌아가는 것을 확인할 수 있었다.

 

전체 테스트코드의 커버리지를 확인 후 배포를 하려고 했는데

중간에 중개서버의 처리 후 삭제부분이 처리되고 있지 않은 것을 발견했고

중개서버 개발자분에게 전달 및 테스트를 조금 진행했다.

 

해당 부분의 원인 파악은 시간이 좀 걸릴 것 같았고

자동화 프로세스에는 문제가 없었기 때문에

다시 자동화 배포에 들어갔다.

 

자동화 배포 도중 두번째 프로젝트에서 Account와 Contact의 주소에 대한 문의가 들어왔는데

여기서도 최대한 자동으로 처리되기를 바라는 것 같았다.

 

하지만 데이터를 자동으로 처리하는건 중복된 부분만 해당될 뿐이고

변수가 있는 경우에는 오히려 일이 늘어날 수 있기 때문에

Account의 주소를 Contact에 모두 덮어씌울 경우

본사, 지점, 지사 등 회사의 주소가 여러개가 존재하더라도

Contact에는 모두 본사의 주소가 덮어씌워질 수 있다는 안내만 전달드렸고

해당 내용에 대한 답장이 없어 다시 배포에 들어갔다.

 

배포를 하려고 보니 클래스 명칭들이 통일감이 없었기 때문에

전체 명칭을 인터페이스 종류에 맞게 통일시켰고

저번부터 요청했지만 그대로 남아있는 중복데이터를 처리하기 위해

해당 데이터들은 에러 발생부분에 Duplicate를 작성해 처리하지 않도록 했다.

 

처리 후 배포를 하려던 찰나에 두번쨰 프로젝트에서 다시 요청사항이 왔는데

이번에도 레이아웃 수정 요청이었기 때문에 빠르게 해결할 수 있었다.

 

운영서버에 배포를 하려고 했지만 5개를 한번에 진행하니 문제가 발생했는데

모두 0%로 커버리지 부족이라고 떠서 상당히 황당했다.

 

이미 올라갔었던 코드도 있었는데 모두 0%가 떴기 때문에

오히려 어딘가 문제가 발생했고 하나씩 하면 되겠다는 생각이 들었는데

앞의 클래스들을 배포하면서 잘 통과되는 모습을 보다가

문득 뒤에 있던 두개의 클래스는 앞의 코드를 실행하는 스케줄러기 때문에

앞의 클래스가 배포되지 않은 상태라면 통과할 수 없다는 생각이 들었다.

 

물론 5개를 한번에 했기 때문에 융통성있게 해주면 좋겠지만

배포되지 않은 상태로 올려서 에러가 발생한 부분이니 다음부터는 순차 실행을 주의해야겠다.

 

바빠서 간단하게 편의점에서 햄버거 하나와 컵라면을 먹고

배포된 클래스를 테스트해보려는데

자동화를 진행하지 않은동안 쌓인 데이터들이 눈에 걸렸다.

 

해당 코드들도 전부마이그레이션 처리를 해준 다음

최신 데이터 하나를 가지고 테스트를 해보려고 헀는데

당연히 앞부분은 잘 진행되었지만 생성부분에서 막혀버렸다.

 

배포 직전까지 테스트를 진행했고

테스트클래스도 다 잘 통과했는데 뭐가 문제인가 확인해봤는데

postman으로 값을 전송할 수 없었다.

 

postman으로 동일 권한이 없다는 것은

중개서버도 똑같은 권한을 가지고 있기 때문에 막혔다는 것이라

왜 문제가 생겼는지 postman으로 여러번 시도하니

MUTUAL_AUTHENTICATION_FAILED라는 키워드를 얻을 수 있었다.

 

해당 키워드의 주요 문제는 사용하고 있는 비밀번호가 ‘만료’상태일 때 발생한다고 하는데

설정에서 암호 또는 password(언어에 따라 다름)를 검색 후 설정하는 만료일과

프로필 하단에서 암호 관련 세팅에서 만료일을 설정하는 부분의 만료가 걸린 것이었다.

암호 정책 변경

 

인터페이스는 꾸준히 진행되어야 하기 때문에 만료일이 있는 것 자체가 황당하지만

운영서버는 해당 회사의 org이기 떄문에 마음대로 변경할 수는 없다고 판단했고

비밀번호를 변경해주고 인터페이스를 테스트하니 정상적으로 작동하는 것을 볼 수 있었다.

비밀번호 변경 완료

 

스케줄까지 걸어두고 싶었지만

중개서버에서 Oauth2 부분에 비밀번호가 변경된 부분을 적용해야 하기 때문에

나 혼자서는 해결할 수 없는 부분이라 9시가 넘은 시점에 퇴근하기로 했다.

 

 

(1).백준 9298번 Ant Entrapment는 흩어져 있는 개미들이 있을 때

개미들을 한번에 가둘 수 있는 최소 크기의 직사각형을 만들어야 하는 문제였다.

 

각 사각형의 x, y 최대 및 최소값을 구하기 위해 Max 값에는 -Infinity를 넣고

 min 값에는 Infinity를 넣어 어떤 값이 들어가도 안정적으로 대체될 수 있게 했다.

 

또한 케이스 제공이 여러 세트로 되어있기 때문에

각 세트의 처리는 이중 for문 내부에서 처리했으며

사이즈만큼 i += row 형태로 처리해 다음 케이스의 시작점으로 넘어가게 했다.

const input = `2
3
-1.000 0.000
5.000 11.500
3.200 -4.250
2
2.125 0.500
6.875 9.100`.split('\n')

const result = []
let count = 1
for(let i = 1 ; i < input.length ; i++){
    const row = Number(input[i])
    let maxX = -Infinity
    let minX = Infinity
    let maxY = -Infinity
    let minY = Infinity
    for(let j = i+1 ; j <= i+row ; j++){
        const [x,y] = input[j].split(' ').map(Number)
        maxX = Math.max(maxX, x)
        minX = Math.min(minX, x)
        maxY = Math.max(maxY, y)
        minY = Math.min(minY, y)
    }
    let xLength = maxX - minX
    let yLength = maxY - minY
    result.push(`Case ${count++}: Area ${xLength * yLength}, Perimeter ${(xLength + yLength) * 2}`)
    i += row
}

console.log(result.join('\n'))

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

[개발일지] - 145  (0) 2023.11.22
[개발일지] - 144  (1) 2023.11.21
[개발일지] - 142(주말)  (1) 2023.11.19
[개발일지] - 141(주말)  (0) 2023.11.18
[개발일지] - 140  (0) 2023.11.17

+ Recent posts