분류 전체보기

java

이펙티브 자바 - ITEM 5 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라

맞춤법 검사기 클래스를 구현한다고 가정하자. 검사기는 사전(Dictionary) 클래스에 의존하고, 이를 구현할 때 정적 유틸리티 클래스나 싱글톤 클래스로 구현하는 모습을 많이 볼 수 있다. // Singletonpublic class SpellChecker { private final Dictionary dictionary = new Dictionary(); private SpellChecker() { // 객체 외부 생성 방지 ... } public static SpellChecker INSTANCE = new SpellChecker(); public boolean isValid(String word) { ... return dictionary.contains(word)..

프로젝트

CircleCI 에서 TestContainers 사용과 시간 개선하기

이번 프로젝트는 Jenkins 대신 Circle CI를 사용했다. 이전 프로젝트에서는 젠킨스를 사용하기 위해 추가적인 인스턴스를 만들어서 사용하기에는 비용 문제가 있어서, 어플리케이션을 배포하고 있는 프리티어 서버에 도커 컨테이너를 올려서 사용했다. 부족한 메모리를 해결하기 위해 스왑메모리를 설정했지만, 프리티어 서버가 느려지거나 멈추는 문제가 가끔 발생했었다. 그래서 클라우드 환경을 제공해주는 Circle CI를 사용하게 됐다. 프로젝트에선 테스트를 위해 TestContainers 를 사용하고 있다. TestContainers는 테스트 환경에 필요한 컨테이너들의 생명주기를 관리해준다. 처음에는 다른 래퍼런스를 따라서 jdk17 Executor를 사용했고, https://www.atomicjar.com/..

spring

Spring Security CORS 이슈 해결 - Preflight 403 Invalid CORS request

발생 이슈 프로젝트를 진행하던 중 새로운 API를 구현해 배포했는데 프론트 분에게 해당 API로 요청을 보내면 CORS 문제로 403 응답을 받는다는 연락를 받았습니다. 분명히 CORS에 대한 security 설정을 했고 로그인 API에서는 일어나지 않은 문제여서 문제 파악부터 해야됐습니다. 우선 이슈 발생 당시 Config 설정과 API 요청, 응답을 확인해봤습니다. SecurityConfig.java @EnableWebSecurity @Configuration @RequiredArgsConstructor public class SecurityConfig { private final OAuth2LoginSuccessHandler oAuth2LoginSuccessHandler; private final ..

운영체제

운영체제 - 개요

운영체제란 운영체제는 컴퓨터 시스템 자원을 효율적으로 관리해서 사용자 또는 응용프로그램에 서비스를 제공하는 소프트웨어라고 할 수 있습니다. 운영체제의 역할 User Inteface : 사용자가 편하게 사용할 수 있도록 편리성을 제공 Resource Management: 하드웨어와 소프트웨어 자원을 효율적으로 관리할 수 있도록 효율성 제공 Process and Thread management: 프로세스와 스레드 관리 System management: 시스템을 관리해 보호 System Call Interface 란 사용자가 호출할 수 있는 kernal의 기능을 모아 놓은 인터페이스입니다. kernal 은 컴퓨터 자원을 관리하는 많은 기능을 제공하는데 사용자가 직접 접근을 해서 조작을 하게 되면 문제를 일으킬..

고만실
'분류 전체보기' 카테고리의 글 목록