Today I Learned
날짜
2024년 1월 3일 금요일
내용
51% 스택 개발자 되기
반쪽자리 풀스택 개발자에서 조금은 진화하는 중이다. 백오피스에 모든 스크립트를 정보를 불러오고, 현재 설치된 스크립트를 불러와 비교한 후 설치된것과 안된것을 구별하는 코드를 작성했다.
1
2
3
4
5
6
7
8
9
10
11
12
combineScriptLists() {
... 기존 코드
if (appType !== undefined) {
... 진행 로직 ...
} else {
console.warn(`Invalid appTypeKey: ${appTypeKey}`);
}
});
}
}
이렇게 짰는데.. 존경하는 프론트엔드 동료분께 리뷰를 받았다.
- if 문을 반대로 써서 패스트 리턴을 사용하자.
- 조건이 맞다면 주저리주저리 길게 코드쓰지말고 아닐 경우 빨리 함수 종료시켜버리자
- forEach 안에서 find 문을 돌리는게 이중포문과 같으니 해당 부분을 map으로 바꾸자
- 생각해보니 그렇다. forEach면 n개 모두를 뒤질테고, 거기서 find를 하면 또 다볼테니.
그래서
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
combineScriptLists() {
// 조건 안맞으면 바로 종료
if (!this.installedScriptList.length || !this.totalScriptList) {
return;
}
this.combinedScriptList = [];
const installedScriptMap = new Map(this.installedScriptList.map(script => [script.src, script]));
... 기존 로직 ...
// 조건 안맞으면 바로 종료
if (appType == undefined) {
console.warn(`Invalid appTypeKey: ${appTypeKey}`);
return
}
// find 미사용
scriptArray.forEach((script) => {
... 진행 로직 ...
});
});
}
굿.
로그아웃 시키기
오랜만에 아임리포트 업데이트가 실패했다. 원인을 찾아보니 구글 스프레드시트가 잘 존재하는지 탐색하는 요청이 401이 떠버렸다. 권한이 없다는 건데… 분명 내가 매번 리프레쉬 토큰으로 토큰을 유효하게 유지하도록 처리해놨는데.. 그리고 구글이 리프레쉬 토큰은 반영구적이라고 했다.
찾아보니 인스타그램과 마찬가지로 계정의 비밀번호를 바꾸면 모든 토큰이 무효화된다고 하더라… 아임리포트 서비스는 저장해놓은 세션의 데이터를 이용해 바로 마이페이지로 이동시켜줬었으니 구글 로그인을 하지 않아 토큰을 계속 들고 있었다.
페이지에 진입할 때, 토큰을 검증하는 요청을 서버로 보내고 리프레쉬 토큰이 만료되면 로그아웃 시켜버렸다.
회고
여차자차 할일 끝