오자마자 어제 하지 못한 상태 변경시 이메일 자동 알람 부분을 완료했다.
해당 부분을 진행 후 비슷한 사례가 보여서 답변을 달아줬는데
이번이 두번째 overflow 답변으로 점점 짧은 주기로 답을 달 수 있으면 좋겠다.
사실 이런 곳에 답을 단다는 것 자체가 무슨 문제가 생겼고
해당 문제가 검색에서 나오지 않았는데 해결한 경우일 가능성이 높기 때문에
이런 일이 자주 발생하는게 좋은 일은 아니지만
그렇다고 굳이 질문 목록을 찾아가며 아는 내용을 답변할 정도로 여유있지는 않으니
기회가 닿을 때 가끔 답변해봐야겠다.
Based on your usage, it looks like you used User for setTargetObjectId.
For classic templates, this is fine if you're using Lead, Contact, etc, but if you put User as the Target,
you're limited to using WhatId.
There have been various attempts to address this over 15 years ago.
Salesforce hasn't fixed it themselves, so there are only two solutions: work around it or use other
features.
First, the classic internal workaround is to use the Contact Id to solve the problem.
The solution is to create a Contact with the same email address, send it, and then delete it
immediately, as shown below.
Contact ct = new Contact(Email = user.Email, LastName = "Name");
insert ct;
mail.setTargetObjectId(ct.Id);
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
delete ct;
The second method is to create template with Visualforce.
Visualforce templates, even Classic ones, have a recipientType and a relatedToType inside.
The recipientType specifies the recipient related object and the relatedToType specifies the Target
Object.
You can create a template as shown below and then access the fields in the record with recipient, relatedTo.
<messaging:emailTemplate subject="any subject" recipientType="User" relatedToType="ObjectName">
<messaging:htmlEmailBody >
<html>
<body>
Dear {!recipient.Name}
Target Name : {!relatedTo.Name}
</body>
</html>
</messaging:htmlEmailBody>
</messaging:emailTemplate>
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
mail.setSaveAsActivity(false);
mail.setBccSender(false);
mail.setUseSignature(false);
mail.setTemplateId(template.Id);
mail.setWhatId (targetObject.Id);
mail.setTargetObjectId(targetObject.Owner.Id);
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
가능한 요청사항들을 모두 처리했고
나머지 부분들에 대해서도 팀장님에게 답변 받은 내용을 정리해 전달했다.
이사님이 자바서버에 접속을 해보라고 하셔서 시도해봤는데
vpn을 키고 filezilla를 통해서 해당 서버 내의 파일들을 볼 수 있었고
putty를 통해서도 내부를 볼 수 있었는데
putty는 리눅스 기반 형태로 보기 때문에 조금 불편했다.
그래도 이전 컴퓨터를 1년 반정도 리눅스 기반인 우분투를 사용했기 때문에
GUI가 아닌 부분은 아쉽지만 이동 명령어 등은 자주 사용해봐서
적당히 cd, li 등을 사용해 조회는 가능했다.
이제 SQL Server를 통해 mySQL을 확인 가능하고
FortiClient vpn, dbsafer, otp Authorization app과 sqldeveloper를 통해 oracle도 확인 가능하며
FileZilla로 자바서버 내부도 확인이 가능하고
putty로 리눅스 형태로 서버 확인도 가능하다.
인터페이스팀이라 확실히 백엔드 작업을 많이 하는데
생각해보면 당연한 일이긴 했다.
2시 30분에 갑작스럽게 고객사의 요청으로 화상회의를 진행했고
회의 중 상당히 까다롭고 많은 요청들이 몰려왔는데
거의 다 내가 처리해야 했다.
현재 두번째, 세번째, 첫번째 순서로 일이 어마어마하게 쌓여있는데
그렇다고 바쁘신 팀장님이 하실 수도 없기 때문에 어쩔 수 없었다.
내가 담당하게 됐지만 팀장님이 본인이 맡으셨던 부분에서
까다로운 부분은 도와주셔서 조금 쉽게 처리가 가능해졌지만
이번에 요청사항들을 처리하며 추가한 트리거 등에서
null exception 등이 발생해서 기존 프로세스가 중단되는 문제들이 발생했다.
내일이 리뷰날인데
리뷰를 진행하지 않을 요청사항 추가로 기존 프로세스가 중단되어버려서
리뷰 전까지 기존 기능들이 될 수 있게 급하게 복구 작업을 시작해야 했다.
개발자 회의를 한다고 해서 4시쯤 또 회의에 참여했는데
이번에는 사실 다른 회의와는 다르게 신입 온보딩에 대해서
동기들에게 어떤 점들이 개선되면 좋겠는지에 대한 주제였다.
이것 또한 미리 예정된게 아니었고 2시간 전쯤에 왔는데
답변을 생각해서 준비해서 가기에는 중간에 회의가 껴있었고
회의가 끝나자마자 바로 에러를 잡느라 정신없었기 때문에
개선에 대한 건의는 하나도 하지 못했다.
사실 온보딩을 하면서 불만스러웠던 점이라고 해도
정확히 어느정도가 커트라인인지를 몰랐다는 것과
회사가 중간에 이전하는데 해당 정보를 몰랐다는 정도였고
지금 들어보니 커트라인 자체도 고정값이 아닌
개인의 역량 대비 성취 같은 개별적 커트라인이었기 때문에
건의를 굳이 해도 차이는 없을 것 같았다.
회사 이전도 2~3년은 지나야 할 것 같아서
이번에 들어올 신입들은 상관이 없을 것 같고
굳이 회사 근처라고 이사왔는데
회사가 이전해서 환승을 하며 출근해야 하는 것이 아쉽긴 하지만
현재 집은 교통편과 전입신고 불가를 제외하면 큰 불만은 없으니 넘어가기로 했다.
비밀번호 변경 및 전달이 필요했는데
이전에 블로그에 작성했던 비밀번호 변경을 검색해서 편하게 바꿀 수 있었다.
system.setPassword('005xx0000000XXX', 'passwordText');
빠르게 리뷰 전 수정을 진행하다가 일정을 맞추기 어려울 것 같아서
어차피 리뷰와 상관없는 부분이기 때문에 try/catch를 사용해
에러가 발생해도 기존 프로세스가 진행될 수 있게 변경했다.
어차피 일정이 많이 밀려서 그냥 일정이 터지든 말든 하는만큼만 해야 하나 싶다가
어차피 집에 가도 뒹굴거리다가 잘 것 같아서 그냥 추가 업무를 하기로 했다.
일단 임시방편으로 기존 프로세스는 진행되기 때문에
급해서 정리하지 못했던 개발자 회의 내용과 두번째 프로젝트 요청사항들을 정리했고
세번째 프로젝트에서 중간에 요청한 과정 관련 사진 자료를 발송했다.
입력값을 받는 부분은 요청받은 기준치에 따라 유효성검사를 진행했는데
유효성 진행이 되지 않아 확인해보니
const function = () ⇒ {} 형태로 진행했던 것이었고
다시 확인하고 매개변수로 event를 넣어주니 정상적으로 동작하는 것을 볼 수 있었다.
Case에서 바로 요청을 보낼 수 있는 것을 진행하려고 했는데
해당 부분을 위해 flow를 만들고 분기 처리들을 하며 값을 확인했다.
Id가 정상적으로 전달되는 것 까지는 확인했고
Action으로 만드는 것 까지 진행했지만 9시가 넘기도 했고
다들 가자는 분위기라 정리하고 마무리했다.
(1).백준 24606번 Double Password는 비밀번호와 백도어 비밀번호로 구성된 암호가 있을 때
암호로 가능한 숫자의 조합의 개수를 구해야 하는 문제였다.
단순하게 하나가 다를 때마다 2배씩 늘어나기 때문에
해당 자리의 값이 서로 다를 경우 1에 2씩 곱해서 최종 결과값을 출력했다.
const input = `1111
1234`.split('\n')
let num = 1
for(let i = 0 ; i < 4 ; i++){
if(input[0][i] != input[1][i]){
num *= 2
}
}
console.log(num)
'회고' 카테고리의 다른 글
[개발일지] - 126 (0) | 2023.11.03 |
---|---|
[개발일지] - 125 (0) | 2023.11.02 |
[개발일지] - 123 (0) | 2023.10.31 |
[개발일지] - 122 (1) | 2023.10.30 |
[개발일지] - 121(주말) (0) | 2023.10.29 |