August 11, 2023 • ☕️ 5 min read
마음의 짐 덜어놓기 🧘♂️
싱글톤 패턴은 개발자도 모르는 사이에 단위 테스트 간에 결합도를 높인다. 테스트 스위트는 서로 독립적이어야 하는데, 싱글톤 패턴은 이를 방해하는 것이다.
테스트 코드에서 싱글톤 클래스를 생성하는 것은 문제가 없지만, 각 테스트 이후에 싱글톤 클래스의 인스턴스를 제거하는 것은 어렵다. 싱글톤 인스턴스 제거를 위해 운영 코드에 다음과 같은 메서드를 추가해야 할지도 모른다.
// 운영
static getCleanInstance(): State {
return new State({ id:1995, status:'LOADING' });
}
// 테스트
let state: State;
beforeEach(() => {
state = State.getCleanInstance();
});
너무 구리자나… 그니까 싱글톤 패턴은 자제하자 😇
Ref https://dev.to/bacarpereira/don-t-use-singleton-pattern-in-your-unit-tests-8p7
resetModules
, isolateModules
resetModules
isolateModules
resetModules
의 진화한 버전으로, 콜백 함수 안에서 모듈을 초기화할 수 있다.Ref https://jestjs.io/docs/jest-object
“react-scripts”는 리액트 애플리케이션을 개발하고 빌드하는 데 도움을 주는 도구 모음으로, Create React App (CRA)이 아닌 일반적인 리액트 프로젝트에서도 “react-scripts”를 사용하는 이유는 다음과 같다.
개발 환경 설정의 단순화: “react-scripts”를 사용하면 복잡한 개발 환경 설정을 따로 구성하지 않고도 간편하게 리액트 애플리케이션을 개발할 수 있다. 필요한 바벨 변환, 웹팩 설정, 개발 서버 구성 등을 자동으로 처리해준다.
편리한 스크립트 제공: “react-scripts”는 개발, 빌드, 테스트 등을 수행하는 명령어를 제공한다. 이러한 스크립트를 사용하여 더욱 간단하게 애플리케이션을 개발하고 빌드할 수 있다.
Hot Module Replacement (HMR) 지원: “react-scripts”는 HMR을 통해 개발 중에 코드 변경 사항을 빠르게 반영할 수 있도록 도와준다. 이로써 코드 변경 후 새로고침 없이 화면을 업데이트할 수 있다.
표준화된 프로젝트 구조: “react-scripts”를 사용하면 프로젝트 구조가 표준화되어 있어서 여러 사람이 협업할 때 일관된 구조를 유지하기 쉽다.
설정의 추상화: “react-scripts”는 내부적으로 웹팩, 바벨 등을 설정하고 관리하지만, 개발자는 이러한 내부 설정을 신경쓰지 않고 개발에만 집중할 수 있다.
설정의 커스터마이징: CRA가 제공하는 기본 설정 외에도 “react-scripts”를 커스터마이징하여 필요한 설정을 추가하거나 수정할 수 있다. 이로써 프로젝트의 특수한 요구사항에 맞게 개발 환경을 조정할 수 있다.
근데 사실 다 똑같은 말인 것 같다. 개발 환경을 미리 세팅해준다는 말이자나 🤷♀️
Ref ChatGPT
resolve.fullySpecified = false
fullySpecified
활성화 시 가장 가까운 package.json이 type: module
로 설정되어있는 경우 .mjs 파일이나 .js 파일에서 import 구문을 사용할 때 파일 확장자를 끝까지 써줘야 한다. 안 그러면 webpack에서 Module not found
에러가 발생한다.
Ref https://webpack.js.org/configuration/module/#resolvefullyspecified
target
lib
target
에 따라서 기본으로 설정되는 lib
가 달라진다."lib": ["es6", "dom"]
Ref https://velog.io/@sooran/tsconfig.json-제대로-알고-사용하기
element === document.activeElement
- focus 같은 클래스 하나 없이 자바스크립트로 현재 포커스 된 요소인지 알 수 있다.<input>
태그의 spellcheck
- input에 입력한 값의 철자를 검사하고 빨간줄을 그어줄지 말지를 결정한다.pnpm why 패키지명
- 지정된 패키지에 의존하는 모든 패키지를 표시해준다. (Ref)유용해보이는 아이콘들이 많다!
vscode를 기반 에디터로 활용해 IDE를 배포한다.
오… 근데 웹브라우저면 인터넷 있어야만 쓸 수 있겠네. 나름의 장점들이 있겠지만 그닥 끌리지는 않는다 🙃
Ref https://idx.dev/
한글 줄바꿈이 탄생했다! 공식문서에서 한국어를 보니 신기하다 ㅋㅋ
Ref https://prettier.io/blog/2023/07/05/3.0.0.html#do-not-break-lines-inside-korean-words
RHEL(Red Hat Enterprise Linux) 계열 전면 유료화에 대항하는 openELA가 결성되었다.
이렇게 RIP처럼 해놓으니까 무셥당…
그나저나 Dart도 없어진다고?!
Ref https://killedbygoogle.com/
그동안 마음 지치고 힘들었던 건 내가 말을 안해서!! 라는 결론에 다다랐다.
광복절을 낀 다가오는 연휴에는 마음 내려놓고 잘 쉬어갈 준비를 해야겠다 😊