본문 바로가기

전체 글195

[Java] Enum valueOfOrDefault() String을 Enum으로 변경해줄 때 Enum의 valueOf를 쓰고 try-catch문을 덮는게 일반적이다(없을 시 IllegalArgumentException 던짐).근데 코드에 try-catch가 들어가게 하지 않기 위해 만들었다. 그리고 Enum을 넣어도 null check를 하게 해서 String이나 Enum(null일 경우 대비)을 모두 첫 번째 인자로 넣고, 두 번째 인자로 return 받고 싶은 default 값을 null safe하게 넣게끔 했다. public static > T valueOfOrDefault(String value, T defaultValue) { try { return Enum.valueOf(defaultValue.getDeclaringClass().. 2023. 2. 28.
MFA란? 회사에서 AWS를 사용하는 직원들에게 단순히 패스워드로만 계정을 관리하게 하면, 해커에게 패스워드가 유출되었을 시 해커는 곧바로 로그인에 성공해버릴 것이다. 이를 방지하기 위해 높은 수준의 보안을 제공하는 방법이 MFA다. MFA(Multi-Fator Authentication)를 번역하면 '다중 인증'으로, 단순 패스워드 외에 추가적인 정보 인증을 요구하는 것이다. 위 그림에서는 Google Authenticator라는 어플리케이션이 설치된 모바일 기기를 추가적으로 로그인에 요구하고 있음을 알 수 있다. MFA는 USB(정확히는 USB같은 것이고 USB는 아님)같은 것으로 하기도 하지만 주로 휴대폰의 어플을 통해서 하고, 해커가 모바일 기기까지 어떻게 하긴 힘들기 때문에 매우 강력한 보안수단이다. 2023. 1. 29.
중복행 지우는 쿼리 무언가 무언가의 일로 특정 컬럼이 같은 데이터를 지우고 싶을 때 (예를 들면 생성일 이라던가) 물론 그럴 일이 없게 하는 것이 가장 좋겠지만 😊 DELETE FROM 테이블명 WHERE 컬럼 IN (SELECT create_dt FROM 테이블명 // 컬럼은 중복값이 들어있는 컬럼명 GROUP BY 컬럼 HAVING COUNT(컬럼) > 1) AND PK컬럼 NOT IN (SELECT MIN(PK컬럼) FROM 테이블명 GROUP BY 컬럼 HAVING COUNT(컬럼) > 1); 2023. 1. 25.
스프레드 연산자는 .concat보다 성능이 좋다. const a = [1, 2, 3]; const b = [4, 5, 6]; const c = a.concat(b); // Bad const d = [...a, ...b]; // Good 스프레드 연산자는 concat을 쓰는 것보다 일반적으로는 더 빠르다. 왜냐하면 스프레드 연산자는 새 배열을 생성 및 조작할 필요가 없고, concat은 새 배열을 만들고 원래의 배열을 합치기 때문이다. 그럼 언제 concat이 더 빠를까? 배열 안에 하위 배열이 있고 그 수가 매우매우 많을 때 concat이 더 빠를 수 있다. 대부분의 웹개발에서는 스프레드를 쓰는게 좋다는 결론. 하지만 개인적으로는 가독성이 concat이 낫다고 생각할 때는 concat 또한 애용하는 편이다. 함수형으로 짜다 보면 중간에 스프레드를 껴넣기.. 2023. 1. 19.
unique와 nonclustered index unique를 설정하면 자동으로 nonclustered index가 걸린다. 그러나 nonclustered index를 설정한다고 unique는 아니다. // 논클러스터 인덱스가 자동으로 걸림 [COLUMN_NAME] [varchar](40) NOT NULL UNIQUE // 유니크 안걸림 (당연하겠지만) [COLUMN_NAME] [varchar](40) NOT NULL INDEX IX_XX NONCLUSTERED pk는 당연히 unique와 index 모두 걸린다 (단 pk의 index는 clustered) 2022. 12. 13.
728x90