본문 바로가기

반응형

분류 전체보기

(364)
Spring Security Architecture 번역 - 1 Filter Review 스프링 시큐리티의 서블렛 지원은 서블렛 필터들에 기인한다. 그래서 필터들의 역할을 전반적으로 먼저 살펴보면 도움이 된다. 아래 이미지는 한 HTTP 요청을 위한 핸들러들의 전형적인 계층을 보여준다. 클라이언트는 앱에 요청을 보낸다. 그리고 컨테이너는 FilterChain을 만든다. 그것은 Filter 인스턴스를 담고 있다. 그리고 서블렛을. 서블렛은 요청 URI의 path에 따라 HttpServletRequest를 진행해야 한다. 스프링 MVC 애플리케이션에서 서블렛은 DispatcherServlet의 인스턴스이다. 대개 하나의 서블렛은 하나의 HttpServletRequest와 HttpServletResponse를 핸들링할 수 있다. 그러나 아래의 경우에 둘 이상의 필터가 쓰일..
맵의 일부만 구현하고 싶을 때: TypeScript Partial 과목별 문제들을 매핑하는 객체를 만들던 중이었다. import englishQuestions from '../../__fixtures__/questions/starred/english'; import generalQuestions from '../../__fixtures__/questions/starred/general'; import { SubjectName } from './types'; type QuestionsType = { starred: Record; }; const questions: QuestionsType = { starred: { general: generalQuestions, english: englishQuestions, }, }; export default questions; 이런..
setTimeout을 취소할 때 useRef를 쓰는 이유 일정 시간이 지나고 나서야 어떤 행동을 수행하도록 할 때 setTimeout을 쓰게 됩니다. 다만 모종의 이유로 그 행동이 취소됐을 때에는 그 id를 가지고 설정된 timeout을 해제해야 하는데, 그 id를 저장하는데 에 useRef가 쓰입니다. const DelayedHoverMenu: React.FC = () => { const [showMenu, setShowMenu] = useState(false); const hoverTimer = useRef(null); const handleMouseEnter = () => { hoverTimer.current = window.setTimeout(() => { setShowMenu(true); }, 300); }; const handleMouseLeave ..
타입 가드란? 타입 가드(Type Guard)를 사용하면 조건문에서 객체의 타입을 좁혀나갈 수 있다. typeof TypeScript는 JavaScript의 instanceof, typeof 연산자를 이해할 수 있다. 즉 조건문에 typeof와 instanceof를 사용하면 TypeScript는 해당 조건문 블록 내에서 해당 변수의 타입이 다르다는 것을 이해한다. 아래 예시를 보면 특정 메소드가 string에 존재하지 않는 다는 사실을 인식해 사용자 오타가 있을 수 있음을 지적한다. function doSomethingx(x: number | string) { if (typeof x === 'string') { // 이 조건문 안에 있는 x는 무조건 string이다. console.log(x.subtr(1)); // ..
타입 표명이란? TypeScript에서는 시스템이 추론 및 분석한 타입 내용을 우리가 원하는 대로 얼마든지 바꿀 수 있다. 이 때 타입 표명(type assertion)이라고 불리는 메커니즘이 사용된다. TypeScript의 타입 표명은 프로그래머가 컴파일러에게 내가 너보다 타입에 더 잘 알고 있고, 나의 주장에 대해 의심하지 말라고 하는 것과 같다. as로 타입 표명을 하는 순간 이건 무슨 일이 있어도 그 타입이라고 단언 한 것이기 때문에 타입 스크립트가 해당 부분의 에러를 잡지 않을 수 있다.
jest - redux 테스트하기 번역 https://redux.js.org/usage/writing-tests 번역입니다. 배우게 될 것 - 리덕스 사용 앱 테스트 추천 예제 - 테스트 설정 및 세팅 예시 가이딩 원리 테스트가 당신의 소프트웨어와 닮아갈 수록 당신에게 자신감을 안겨줄 것이다. - Kent C. Dodds 대부분의 Redux 코드가 순수 함수라서 모킹 없이 테스트하기 쉽습니다. 그러나 당신의 Redux 코드가 그것만을 위한 테스트를 필요로 하는지는 고려해야 합니다. 대다수의 시나리오에서 end-user는 리덕스가 사용되는지 전혀 알지 못하고, 신경도 쓰지 않습니다. 이처럼 Redux 코드는 많은 상황에서 명시적 테스트 필요없이 앱의 디테일의 구현으로 취급될 수 있습니다. Redux 사용 앱을 테스트할 때 우리의 일반적 조언은:..
jest 시작하기 - jest의 개요 https://jestjs.io/docs/getting-started 에서 필요하다고 생각되는 목차들을 재구성한 것입니다. Jest 개요 시작하기 Matcher 쓰기 비동기 코드 테스트하기 세팅, 분해하기 함수 모킹하기 jest 플랫폼 사용하기 가이드 스냅샷 테스트 비동기 테스트 예시 타이머 모킹하기 수동 모킹하기 ES6 클래스 모킹하기 bypassing 모듈 모킹하기 웹팩과 함께 사용하기 MongoDB와 함께 사용하기 DOM 조작 Watch 플러그인 Jest 구조 프레임워크 가이드 리액트 앱 테스트 리덕스 테스트
나는 코드 품질만 바라보고 리뷰하는데, 동료가 왜 기분나빠할까요 [코드 리뷰 도입 후기 2탄] 오늘 매우 화가 났었다. 코드 리뷰를 하던 중이었다. (많은 갈등이 코드 리뷰를 하며 일어나는 것 같다.) 리팩토링할 건이 보였다. 그것도 꽤 많이. 의도가 파악되지 않는 코드도 있어 논의가 필요하다고 생각했다. PR이 올라온지 며칠 되기도 했고, 건건마다 일일히 리뷰를 달기 어렵고 비효율적이라고 생각해서, 일단 Approve하고 아예 리팩토링을 제안하는 PR을 올리겠다고 했다. 메신저로 "User 객체에 관련한 의문점이 있어서 이번 PR은 approve하고 따로 리팩토링을 제안하는 PR을 만들어 올려도 될까요?" 라고 물어보니 동료는 "구두로 설명을 들을 수 있을까요?" 라고 답했다. 그래서 열심히 구두로 설명을 했다. 동료도 생각지 못했던 개선사항을 듣는 눈치였고, 리팩토링의 필요성에도 공감한듯 보였..

반응형