728x90

Web 32

[JS] 디자인 패턴(Design Pattern)_팩토리 패턴(Factory Pattern)

"JavaScript Design Pattern" 포스팅은 ChatGPT에게 "Essential design patterns for JavaScript developers to learn"로 질문한 뒤 나온 내용에 대해 정리하는 포스팅입니다. 1. 팩토리 패턴(Factory Pattern) 팩토리 패턴은 생성할 객체의 정확한 클래스나 생성자 함수를 지정하지 않고도 객체를 생성할 수 있는 방법을 제공하는 생성 패턴이다. 팩토리 패턴은 객체를 생성하기 위한 일반 인터페이스를 제공하고 하위 클래스가 생성될 객체의 유형을 변경할 수 있도록 한다. 팩토리 패턴은 다음과 같은 이점을 제공한다. 캡슐화: 객체 생성이 애플리케이션의 로직과 분리되어 보다 모듈화 되고 유지 관리가 용이한 아키텍처를 제공한다. 유연성: 팩..

Web/JS 2023.02.23

[JS] 디자인 패턴(Design Pattern)_싱글톤 패턴(Singleton Pattern)

"JavaScript Design Pattern" 포스팅은 ChatGPT에게 "Essential design patterns for JavaScript developers to learn"로 질문한 뒤 나온 내용에 대해 정리하는 포스팅입니다. 1. 싱글톤 패턴(Singleton Pattern) 싱글톤 패턴은 객체 지향 프로그래밍(OOP, Object-Oriented Programming)에서 클래스가 하나의 인스턴스만 가질 수 있도록 하고, 이에 대한 전역 접근 지점을 제공하기 위해 사용되는 디자인 패턴이다. 동일한 객체의 인스턴스를 여러 개 생성할 필요 없이 데이터베이스 연결이나 configuration 설정과 같은 특정 리소스에 대한 중앙 집중식 접근 지점을 제공하는 데 자주 사용된다. 즉, 한 번에..

Web/JS 2023.02.20

[JS] 디자인 패턴(Design Pattern)_공개 모듈 패턴(Revealing Module Pattern)

"JavaScript Design Pattern" 포스팅은 ChatGPT에게 "Essential design patterns for JavaScript developers to learn"로 질문한 뒤 나온 내용에 대해 정리하는 포스팅입니다. 1. 공개 모듈 패턴(Revealing Module Pattern) 공개 모듈 패턴은 모듈 패턴과 유사한 JavaScript의 디자인 패턴이다. 공개 모듈 패턴에서는 모듈 패턴과 마찬가지로 모듈의 비공개 멤버와 함수가 즉시 호출 함수 표현식(IIFE, Immediately Invoked Function Expression)을 사용하여 정의된다. 공개 모듈 패턴은 비공개 변수와 함수가 있는 모듈로 시작한다. 이러한 변수와 함수는 모듈 외부에서 접근할 수 없다. 모듈은..

Web/JS 2023.02.18

[JS] 디자인 패턴(Design Pattern)_모듈 패턴(Module Pattern)

앞으로 작성될 "JavaScript Design Pattern" 포스팅은 ChatGPT에게 "Essential design patterns for JavaScript developers to learn"로 질문한 뒤 나온 내용에 대해 정리하는 포스팅입니다. 전에 디자인 패턴을 공부하고자, 재난 지원금으로 Head First Design Patterns 책을 구입했었다. 알 수 없는 외국 감성과 아직 디자인 패턴이 필요하지 않다고 생각했던(참으로 어리석은 생각) 나는 구입만 하고 책을 책장에 고이고이 모셔 두었다. 이제는 개발(이라고는 하지만 내가 제대로 하고 있는 건지 모르겠다.) 일을 한 지 만 3년이 다 되어가 진짜로 디자인 패턴에 대해 알아야 할 때라는 생각이 들었다. 하지만 개정판은 절대 나올 것..

Web/JS 2023.02.16

[Spring] Thead간 SecurityContextHolder 공유하기

사용자의 정보가 수정이 될 때 SecurityContext의 인증 정보도 같이 업데이트해주도록 코드를 수정하고 있었다. 사용자 정보 수정 페이지에서 인증 정보를 불러와 set 해주는 부분에서는 문제가 발생하지 않았는데, 스레드를 생성해 여러 사용자의 정보를 수정하는 부분에서는 SecurityContext가 null인 것을 확인하였다. 찾아보니 Spring Security의 SecurityContextHolder의 전략(strategy)은 기본적으로 MODE_THREADLOCAL로 되어있다고 한다. SecurityContextHolder에서 제공하는 전략은 1. MODE_THREADLOCAL: 동일한 thread 내에서만 SecurityContextHolder가 공유 2. MODE_INHERITABLETH..

Web/Spring 2022.07.13

[JS] Chrome Extension을 Safari Web Extension으로 변환하기

크롬 확장 프로그램인 '유데미 한글 자막'. 유데미 강의를 보려면 구글 크롬을 항상 실행시켜줘야 했다. 하지만 맥북에서 크롬을 사용하게 되면 배터리 소모량도 더 많고, 뭔가 발열도 더 심한 것 같아 늘 Safari 확장을 만들어 사용하고 싶었다. 찾아보니 쉽게 크롬 확장 프로그램을 Safari용 Web Extension으로 변환하는 방법이 있었다. xcrun safari-web-extension-converter ${확장/경로} 위 명령어를 날리면 크롬 확장이 사파리용 확장 프로젝트로 변환이 된다. 당연한 소리겠지만 Mac OS 환경이어야 하고, Xcode가 깔려있어야 한다. 이렇게 크롬 확장을 만들었던 폴더를 두고 터미널을 이용해 해당 경로로 이동한다. 그 후 위의 명령어를 날리면 Safari용 확장 ..

Web/JS 2022.06.28

[JS] Chrome Extension(크롬 확장 프로그램) - 유데미 한글 자막 자막 위치 변경 기능 추가하기

유데미 한글 자막을 만들고 사용자가 늘어가는 것에 즐거움을 느낀 것도 잠시, 2022년이 시작함과 동시에 너무 나태해져 버린 나는 요청사항이 있어도 수정할 의욕이 생기지 않았었다. 더군다나 핑계로 들릴 수도 있었겠지만 2022년이 된 후 종종 출장을 가게 되어 더욱 의욕이 생기지 않았다. 4월 같은 경우는 회사에서 보낸 평일과 출장지에서 보낸 평일이 거의 비슷비슷했던 것 같다. 아무튼 나태해진 나를 다시 열심히 움직일 수 있도록 하기 위해 지난 2월에 사용자들이 꽤나 많이 (2명 정도?) 요청한 자막 위치 변경 기능을 넣어 업데이트하였다. 그 외에도 대본을 보이지 않게 한 뒤 자막 출력이나 유데미 코리아에서 공식적으로 만든 한글 자막 동시 표시 요청 등이 있었는데, 전자의 경우 대본에서 번역된 내용을 가..

Web/JS 2022.05.16

[JS] html 안에 다른 html 파일 불러오기

html 안에 html을 넣고 싶었다. html로 문서를 작성 중이었는데 하나의 파일이 너무 지저분해지는 것 같아서 각 세부내용들은 다른 파일에 작성하고 불러오는 것이 목적이었다. 위처럼 contents라는 id를 가진 div 안에 contents.html에 작성된 내용을 넣고 싶었다. Javascript의 fetch를 이용해서 html text를 가져와 innerHtml을 이용하면 손쉽게 해결할 수 있었다. 물론 이 방법은 index.html을 그냥 브라우저에서 여는 형식으로는 동작하지 않는다. fetch를 이용하는 방법이기에 이 글을 읽는 사람이라면 알고 있을 것이다. async function fetchHtmlAsText(url) { return await (await fetch(url)).text..

Web/JS 2022.05.13

[Spring] org.springframework.beans.factory.BeanCreationException, org.springframework.beans.factory.NoSuchBeanDefinitionException 해결하기

회사에 입사 후 처음으로 Spring Framework를 알게 되었고, 그 이후로도 제대로 Spring Framework를 공부한 적 없는 나에게는 가끔 이런 문제 같지도 않은 문제를 만나게 된다. org.springframework.beans.factory.BeanCreationException: Error creating bean with name '클래스명': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private 클래스경로; nested exception is org.spring..

Web/Spring 2022.02.04

[Spring] static 필드에 @Autowired(의존성 주입) 사용하기

겉으로 보기에는 이상이 없는 코드였는데 (물론 이건 내가 실력이 없고 무지했기에 아무런 이상이 없는 코드처럼 보였던 것이다.) NullPointerException이 뜨며 에러가 뜨는 상황이 발생했다. 그래서 디버그 모드로 들어가 하나씩 살펴보던 중 이상한 부분을 발견했다. 바로 @Autowired를 사용한 service 혹은 dao가 null을 저장하고 있었다. null을 저장하고 있던 필드는 static으로 선언된 정적 필드였는데, 이 상황에서 내가 생각했던 것은 정적 필드는 @Autowired를 사용하지 못한다는 생각이었다. 찾아보니 역시나 정적 필드는 @Autowired를 사용할 수 없었고, 이 부분을 모두 바꾸려면 일정을 맞추지 못할 것 같기에 static 필드에 @Autowired를 사용하는 ..

Web/Spring 2021.09.29
728x90