[개발일지] - 251
파일 전송 자동화 부분의 에러 발생 시 메일 자동 발송의 경우 아침에 정상적으로 날아왔는데
안타까운 점은 에러가 발생했다는 것이지만 그래도 메일이 안정적으로 발생하고
에러도 자기 혼자 처리되었기 때문에 파일만 고객사에서 넣으면 된다는 부분은 만족스럽다.
며칠만 더 지켜보고 메일이 오지 않는 이상 굳이 접속해서 매일 체크할 필요도 없을 것 같은데
어제 이사님이 Id 등 불필요한 정보는 노출하지 말라고 하셔서 해당 부분을 수정해서 배포했다.
분명 오늘 마감으로 알고 있었는데
이상하게 뭔가 문의도 없고 필요한 작업도 진행되지 않고 있었고
전부 액티브 된 자동화들 내부 조건이 예전 세팅 그대로라 변경을 희망하는지 문의를 했지만
하루종일 답변이 없었다.
이전부터 정의서 재정리 요청이 들어온 회사가 있었기 떄문에
해당 내용을 먼저 처리하기로 하고 확인하는데
확실히 레거시코드라 파악이 쉽지 않았지만 개발서버가 생겨서 조금 더 편하게 작업이 가능했다.
일단 받는 부분들은 내가 임의로 postman을 사용해 데이터를 집어넣는 시도를 해도
개발서버라서 다시 삭제하면 되는 별 것 아닌 문제였지만
SFDC에서 DB쪽으로 데이터를 보내는 부분이 문제였다.
중간에 고객사에서 유지보수 등을 위한 교육이 있냐는 문의가 들어왔는데
사실 사용 방법에 대한 매뉴얼이나 교육은 자주 들어보기도 했고 해본적도 있지만
개발된 코드를 수정하는 방법을 알려달라는 문의는 처음 들어봐서 당황스러웠다.
뭘 알려줘야 하는지 생각하면 생각할수록 더 황당했는데
기본적으로 SFDC 개발자로 취업하게 되면 3개월동안 온보딩을 진행하며
개발, 배포, 테스트클래스 작성 등을 하게 되지만
단순 교육만으로 로직설명, 희망 방식 수정 방법, 테스트클래스 수정 방법, 운영 배포 방법 등
세일즈포스에서 제공하는 트레일헤드 교육만으로도 20시간 이상의 학습이 기본적으로 필요했고
실제 코드에 맞게 작성하는 것은 별개의 문제고
Validation, Trigger, flow Trigger 등 충돌날 수 있는 부분들도 고려해야 하기 떄문에
직접 개발한 개발자가 아니면 세일즈포스 개발자도 간단하다고 생각한 필드 수정을 할 때
테스트클래스 작동 방식 파악 및 엮여서 생성/업데이트 되지 않아 테스트클래스 오류 수정 등
여러 복잡한 작업을 진행하다보면 답이 안나올 때도 있는데
(제일 황당했던 것은 누가 추가한 플로 트리거 중 하나에 메일 발송이 있었는데
해당 메일 주소가 bounced 상태라 발송되지 않아 에러가 발생해 모든 작업이 멈췄던 것이었다.)
중간에 다른 org의 인터페이스 정의서 작성을 요청받았는데
현재 마감을 진행중이던 org가 답변을 하지 않고 있어서 모두 처리된 상태이기 때문에
해당 작업을 진행하기로 했다.
정의서를 처음 봤을 떄는 인터페이스 구조 자체가 또 달라서 조금 복잡했지만
한번 구조를 파악하고 나니 정의서를 많이 써서 그런지 생각보다 빠르게 처리할 수 있었다.
초반 파악하는 시간과 끝날 때 쯤 추가로 요청이 들어온 필드 라벨명 기재까지 처리했지만
다해서 2시간도 걸리지 않아서 처음보는 org의 정의서 4개를 작성했는데
사실 필드 숫자가 많지 않아서 가능한 것이긴 했다.
이후 예전에 작업했던 것과 유사한 작업을 하시는 분에게 contentversion에 대한 문의를 받았는데
예전에는 상당히 어려워서 엄청 오래 걸리며 간신히 만들었던 것 같은데
지금 작업하면 상당히 빠르게 가능할 것 같다.
(1).백준 20017번 Топот котов는 각 층별로 소음이 존재한다고 할 때
윗층이 본인보다 2배 넘는 소음을 발생시킬 경우 신고하고 벌금이 부과된다고 한다.
이 문제에서 특이한 점은 층을 구별하지 않고 한줄로 값을 준다는 부분이었는데
각 층에 존재하는 수치만큼을 한 라인으로 생각하고 구분한 다음
for문 내부에서 다시 해당 층을 하나씩 순회하는 방식으로 진행했고
각 값 내부에서 현재 층과 이전 층의 값이 2배가 넘게 차이나는 경우 count를 증가시키고
최종적으로 벌금과 count를 곱한 값을 출력했다.
const input = `2 3 10
3 5 2 4 10 5`.split('\n')
const [x, y, p] = input[0].split(' ').map(Number)
const arr = input[1].split(' ').map(Number)
let count = 0
for(let i = y ; i < x*y ; i += y){
for(let j = i ; j < i + y ; j++){
if(arr[j] > arr[j-y] * 2){
count++
}
}
}
console.log(count * p)