어제 진행한 회의를 마저 정리한 다음

자동화 배포 전 기능 확인을 다시 진행했다.

 

자동화 기능 확인 도중 필드 위치 이동 요청이 다시 왔는데

해당 부분은 관련 페이지에서 페이지 수정에 들어가 빠르게 해결할 수 있었고

자동화 또한 문제없이 잘 작동하는 것을 확인할 수 있었다.

 

자동화 테스트케이스를 작성하려고 보던 도중

for문 내부에서 쿼리를 날리는 것을 확인할 수 있었고

해당 부분은 복잡한 구조상 어쩔 수 없다고 타협했었지만

마감시간이 지금 당장이 아니기 때문에 다시 리팩토링을 시도했다.

 

리팩토링을 하려고 보던 중 해당 부분의 api를 변경하겠다는 dm이 왔고

해당 필드의 변경점과 기존 코드를 확인하려는데

전달받은 기존 필드조차 사용하는 코드와 다른 부분들이 보여서

결국 vpn, postman에서 토큰을 받고 더미데이터를 만든 다음

해당 데이터를 요청으로 보내니 기존과 같은 데이터임을 확인할 수 있었다.

 

데이터 변경을 하겠다는 말이었고 했다는 것이 아니라

다시 리팩토링을 위해 분석을 하던 도중

두번째 프로젝트의 작업을 먼저 처리해야 한다는 말이 있어서

기간 만료 부분을 기간, 체크박스 두개로 관리하는 것이 아니라

자동으로 체크되는 기능을 작성하기 위해

포뮬러 필드를 생성한 다음 만료일과 TODAY()의 크기를 비교했다.

 

만료일이 TODAY()값보다 크거나 같은 경우 아직 만료되지 않은 것으로 true를 표기했고

TODAY()보다 작은 경우에는 만료되었다는 것으로 false 처리를 진행했다.

 

Boolean일 필요는 없지만 이미 체크박스 형태의 값을 IF(Boolean,a,b) 형태로 진행했기 때문에

해당 필드명만 수정하고 그대로 사용할 수 있도록 boolean type fomular field를 사용했다.

 

자동화 부분의 리팩토링을 진행하는데

생각보다 까다로웠기 때문에

처음에는 배치에서 받은 dataList를 순회하며

DocumentLink를 만들기 위한 ContentDocumentId를 가져오는 것과

해당하는 정보를 가져오는 map을 생성하기 위한 key List를 생성하고

그 뒤 각각 Map을 사용해 해당하는 값들을 가져올 수 있게 했다.

 

두번째 for문에서는 해당 key를 통해 가져온 데이터들을

각각의 for문 data 내부에서 해당하는 이차 for문을 가져오기 위한 key를 만들고

다시 밖에서 쿼리로 해당 값들을 가져온 다음

List Map을 생성해 Map 내부에 put(key, List<Object>)형태로 처리했다.

 

드디어 세번째 for문에서 쿼리를 하나도 사용하지 않고

지정된 정보와 ContentDocumentId를 매칭하고

해당 정보 내부의 연관 데이터들을 map으로 다시 불러와 for문을 돌렸다.

 

for문 내부에서 드디어 해당 이차정보들의 값과

1차 for문 내부에서 가져온 cdId를 통해 DocumentLink를 생성했고

리팩토링한 것과 이전에 한 것을 각자 초기화 후 돌려봤지만

같은 결과를 내는 것을 확인할 수 있었다.

 

이후 시간이 얼마 남지 않아

새로운 노트북에 vscode, ssms, sqldveloper, deepl, vpn 등 필수 프로그램들을 설치하다가

시간이 없어서 퇴근준비를 하던 도중 질문이 들어왔다.

 

OAuth2에 관련된 내용이었는데

postman으로 인증이 되지 않는다는 질문이었지만

토큰의 문제라기보다는 아이디의 로그인 문제 같았고

확인 결과 해당 아이디로 로그인이 되지 않는 문제가 맞았다.

 

유사한 문제를 자주 겪었기 때문에

비밀번호 확인, 권한 부여 확인, 잠금상태확인(로그인 내역)을 진행 후

로그인 잠금상태임을 확인하고 잠금해제하고 문제를 해결할 수 있었다.

 

내일은 기존 노트북을 포맷하고 새 노트북을 사용해야 하는데

가자마자 자동화 테스트코드만 작성하고 노트북으로 이전을 완료해야겠다.

 

 

(1).백준 6162번 Superlatives는 가뭄이 극심해지자

5배로 늘어날 때마다 mega가 붙어야 하는 표기 문제였다.

 

처음 가뭄이 아닌 상태와 일반 가뭄 상태까지는 if문으로 분기처리하고

그 뒤로는 while을 통해 앞에 들어갈 mega의 개수를 repeat을 통해 처리했다.

const input = `3
100 100
12375 99
10 2`.split('\n')

const result = []

for(let i = 1 ; i < input.length ; i++){
    const data = [`Data Set ${i}:`]
    let [a, b] = input[i].split(' ').map(Number)
    if(a <= b){
        data.push('no drought')
    }
    else if(a <= b * 5){
        data.push('drought')    
    }
    else{
        let count = 0
        while (a > b * 5) {
            a /= 5
            count++
        }
        data.push('mega '.repeat(count) + 'drought')
    }
    result.push(data.join('\n'))
}

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

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

[개발일지] - 141(주말)  (0) 2023.11.18
[개발일지] - 140  (0) 2023.11.17
[개발일지] - 138  (0) 2023.11.15
[개발일지] - 137  (0) 2023.11.14
[개발일지] - 136  (1) 2023.11.13

+ Recent posts