전체 글(601)
-
모던 자바 인 액션: 함수형 프로그래밍 기법
이 글은 모던 자바 인 액션 도서의 내용을 개인적으로 정리한 글입니다. 틀린 내용이 있을 수 있습니다.1. 함수는 모든 곳에 존재한다자바 8 이후부터 일급 함수를 지원합니다. 일급 함수란 함수를 일종의 값으로 취급하여 메서드 인수로 전달하거나 반환값으로 전달하는 함수를 의미합니다. 자바 8에서는 메서드 참조 또는 람다 표현식을 사용하여 함숫값을 메서드의 인수로 전달하거나 반환값으로 전달할 수 있습니다. 예를 들어 다음과 같이 메서드 참조를 이용하여 변수에 함숫값을 저장할 수 있습니다.Function strToInt = Integer::parseInt; 1.1 고차원 함수고차원 함수는 여러 함수들의 순차적인 동작을 하나의 함수로 묶어서 새로운 함수로 표현하는 함수입니다. 고차원 함수를 사용하는 대표적인 사..
2024.07.17 -
모던 자바 인 액션: 함수형 관점으로 생각하기
다음 글은 모던 자바 인 액션 도서의 18장 함수형 관점으로 생각하기 장의 내용을 정리한 글입니다. 틀린 내용이 있을 수 있습니다. 1. 시스템 구현과 유지보수1.1 공유된 가변 데이터어떤 변수에 저장된 데이터 값이 예상치 못하게 변경되는 경우가 있습니다. 변경되는 이유는 다양하지만 대표적으로 여러 메서드에서 해당 변수에 접근하여 값을 변경하는 사례가 존재합니다. 이는 해당 변수가 가변적인 데이터 구조를 가지기 때문입니다. 예를 들어 다음 그림과 같이 어떤 하나의 리스트가 있고 클래스 A,B,C에서 읽고 쓰고하여 리스트를 동시적으로 갱신할 수 있습니다. 위와 같이 동시적으로 리스트의 값을 갱신하면 예상치 못한 값이 추가되거나 제거될 수 있습니다. 이러한 문제를 해결하기 위해서 대표적으로 2가지 방법이 ..
2024.07.15 -
ngrinder agent의 local server 연결 문제 해결
문제 상황ngrinder/controller와 ngrinder/agent를 docker 컨테이너를 이용하여 실행한 상태에서 기본적인 로그인 성능 테스트를 하기 위해서 groovy 언어 기반 스크립트를 다음과 같이 작성하였습니다.import static net.grinder.script.Grinder.grinderimport static org.junit.Assert.*import static org.hamcrest.Matchers.*import net.grinder.script.GTestimport net.grinder.script.Grinderimport net.grinder.scriptengine.groovy.junit.GrinderRunnerimport net.grinder.scriptengine...
2024.06.28 -
Cross-Origin Resource Sharing과 Preflight Request를 하는 이유에 대해서
1. 소개요즘날, 우리가 방문하는 웹 페이지들은 자주 다른 서버들에게 우리가 보는 데이터를 보여주기 위해서 요청을 합니다. 이것은 Cross-Origin Resource Sharing(CORS)이라고 부릅니다. 이번 글에서는 CORS가 무엇이고 CORS 정책이 브라우저마다 어떻게 구현되어 있는지 알아보고, 우리가 왜 preflight request를 해야 하는지 알아봅니다.2. Same Origin Policy는 무엇인가?CORS에 대해서 논의하기 전에, Same Origin Policy에 대해서 소개합니다. Same Origin Policy는 하나의 origin(도메인)에서 스크립트를 이용하여 다른 origin의 리소스에 접근하거나 처리를 요구하는 것을 기본적으로 제한하고 있습니다.Same Origin..
2024.06.15 -
SpringBoot 3.1 TestContainer
개요이 글에서는 SpringBoot 3.1 이상 버전의 프레임워크에서 테스트 컨테이너를 구현하는 방법에 대해서 소개합니다. 3.1 버전 이전까지 SpringBoot 프레임워크에서 테스트 컨테이너를 실행하기 위해서는 @DynamicPropertySource 애노테이션을 이용하여 동적 프로퍼티들을 설정하고 명시적으로 시작하도록 호출 했어야 했습니다. 하지만 3.1 버전 이상부터는 spring-boot-testcontainers 의존성을 지원하기 시작하면서 특정한 애노테이션만 적용해주면 동적 프토퍼티 설정들을 자동으로 설정해줍니다. 만약 SpringBoot 3.1 이전 버전을 사용해야 한다면 다음 링크를 참고해주시면 감사하겠습니다. https://yonghwankim-dev.tistory.com/607 Sp..
2024.05.13 -
SpringBoot 2.7 TestContainer
개요Spring 프레임워크로 웹 애플리케이션 개발시 테스트 코드를 구현하는 일이 많습니다. 하지만 웹 애플리케이션이 단독으로 사용되는 일은 많지 않고 MySQL과 같은 데이터베이스와 같이 서비스하는 경우가 많습니다. 테스트 코드 실행시 데이터베이스와 연결하는 방법중 하나는 데이터베이스 프로세스를 실행시킨 상태에서 JDBC를 통하여 연결하는 방법이 존재합니다. 그러나 테스트 코드를 실행할때 사전 조건으로 데이터베이스 프로세스를 실행되어야 정상적으로 수행되야 하는 제약이 있습니다. 이러한 문제를 해결하기 위한 방법 중 하나는 테스트 컨테이너(TestContainer)를 사용하는 방법이 있습니다. 테스트 컨테이너는 도커 기술을 사용하여 테스트 코드를 수행할때만 일시적으로 데이터베이스 컨테이너를 실행시킨 다음에..
2024.05.13