[개발일지] - 105
오자마자 일정을 정리하는데
평소보다도 압도적으로 일이 많아서 정리하는데 생각보다 시간이 더 오래 걸렸다.
첫번째, 두번째, 세번째 프로젝트가 동시에 일이 오고 있기 때문에
일단 요청사항부터 해결하기 위해 첫번째 프로젝트의 요청사항을 확인했다.
세일즈포스에서 제공되지 않는 기능이기 때문에 불가능하다는 답변을 몇번 보냈는데
다른 사항들이 추가될 때마다 다시 붙어서 오고
이번에는 단독으로 어제 저녁에 발송되었기 때문에 처리 방법을 확인했는데
SmallBuilder로 처리가 가능할 것 같아서 먼저 예시로 생성해본 다음 이사님에게 문의 후
해당 내용대로 처리해도 좋을 것 같아서 처리했다.
라이센스나 이런저런 제약조건이 있어서 추가로 확인했는데
다행히 공통 부분들의 권한이 다 있어서 그런지
사용자 계정으로 진행해도 정상 작동이 확인되었기 때문에
추가적인 권한 부여 작업이 없어서 할당 개체수 체크를 하지 않아도 괜찮았다.
페이지 레이아웃에서 버튼 가시성 조건을 추가하고 싶었는데
버튼이 아닌 더 큰 규모의 블럭 단위로만 가시성을 추가할 수 있었고
이전에 버튼단위로 가시성을 추가했던 것이 생각나서 동기분에게 물어보니
지금 업그레이드를 눌러서 세부 조정을 할 수는 있는데
지정되는 앱, 프로필 등 유지보수가 까다로워지기 때문에 상황에 따라서 좋을 수 있지만
현재로서는 굳이 이 기능을 사용할 필요는 없을 것 같아서 그냥 버튼을 공유하기로 했다.
해당 내용을 안내하기 위해 정리하던 도중
애매한 10시 15분으로 회의가 3분 뒤로 잡혀버렸는데
WSDL 등의 인터페이스에 대한 이야기가 나와서 처음에는 우와 어렵다 하고 생각만 했는데
잘 보니 정처기 실기를 준비할 때 배웠던 Web Service Description Language의 줄임말 같았고
뜻과 같이 그냥 API 호출 방식에 대한 기술이었다.
첫번째 프로젝트는 요청 api도 여러개고 필드도 제대로 안알려주고
해당 필드와 데이터베이스 매칭도 안시켜주고 없는 필드도 많아서 개고생했는데
이번에는 이사님이 회의 중 어떤 필드는 어디서 가져다 써야 하는지 다 정해서 알려주셨기 때문에
난이도가 대폭 하락한 것 같았고
어떻게 시작해서 어떻게 보내야 하는지 정해야 할 것 같아서 막막했는데
당연히 막막한게 내가 정하는게 아니었고 나는 그냥 api를 다른 분이 만들어주시면
api를 통해서 시배치를 돌려 정보를 전달하는 것으로 생각보다 일이 간단하게 느껴졌다.
해당 회의 내용을 정리하던 도중 오후 2시에 또 회의가 잡혔고
회의 내용 정리를 마무리하고 바로 첫번째 프로젝트 추가 요청사항을 처리 후 메일을 보냈다.
세번째 프로젝트의 개발서버의 정보만 조회되긴 했지만
데이터가 심각하게 부족해서 검증이 되지 않았는데
운영서버 로그인 정보를 드디어 받아서 실제 데이터의 형태와 개수를 파악할 수 있었다.
운영 필드 배치를 작성하려고 했지만 데이터를 파악하던 중 특이사항을 발견해서
기존에 생각했던 투트랙 시,일배치로 upsert / delete가 아닌 delet + insert 하나로 바뀌게 되었고
배치를 작성하는 도중 개발서버 데이터 인터페이스 된 중간지의 데이터를 배치로 돌리려고 했으나
되지 않아서 확인해보니 운영서버의 데이터를 자바서버에서 인터페이스를 하느라
기존 더미 수준의 개발서버 인터페이스가 중단된 것이었다.
당장 마이그레이션이 급하다고 하셔서 이전에 팀장님이 알려주셨던
인스펙터의 import 기능을 사용해 만단위의 데이터를 빠르게 마이그레이션 할 수 있었고
배치에 대한 틀은 잡았지만 실제 api는 개발중이었기 때문에 작성하다가 마무리했다.
(1).백준 15917번 노솔브 방지문제야!!는 2의 n제곱으로 표현할 수 있는 숫자인지를 묻는 문제로
for문을 통해서 값을 비교해도 되겠지만 결과값을 obj에 담아서 비교하는게 더 빠를 것 같아서
for문을 통해 범위값 내부인 2의30승까지의 결과를 obj에 담아주고
for문으로 순회하며 obj에 담긴 값이면 1, 담기지 않은 값이면 0을 출력했다.
const input = `10
1
2
7
4
14
32
33
34
35
36`.split('\n').map(Number)
const checkObj = {}
const result = []
for(let i = 0 ; i < 31 ; i++){
checkObj[2**i] = 1
}
for(let i = 1 ; i < input.length ; i++){
result.push(checkObj[input[i]] ? 1 : 0)
}
console.log(result.join('\n'))