| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
- gradle
- auto configure
- SQL
- 백준 알고리즘
- smart cast
- 리눅스
- 오라클 디비
- 문법 정리
- 운영체제
- hyperledger
- 오라클
- jsp
- 학점
- 알고리즘
- 프로젝트
- 유사코드
- c#
- MongoDB
- oracle
- spring
- JVM
- 자바
- 자바 프로젝트
- 파이썬
- 파이썬 소스
- 티스토리
- resilience4j
- K6
- dynamic query
- 초대장
- Today
- Total
목록Programming (157)
모종닷컴
mariadb에서 시퀀스 테이블을 생성하거나 혹은 변경할 때 변수를 사용할 수 없는 제약이 있습니다. 이는 동적 쿼리를 이용하여 해결이 가능한데 간단하게 공유드립니다. MariaDB 설치 및 실행 먼저 docker를 이용해서 maria db를 설치합니다. 가장 간단하게 mariadb를 실행하는 방법은 terminal에서 docker 명령어로 실행시키는 방법입니다. docker run -d \ --name=db \ -p 3307:3306 \ -e MYSQL_ROOT_PASSWORD=password \ -e MYSQL_DATABASE=mariadb_test \ --restart always \ mariadb:10.3.8 \ mysqld --character-set-server=utf8 --collation-..
개요 이번에 Out Of Memory( = OOM) 현상을 파악하기 위해 로컬에서 재현을 위해 JVM 몇 가지 옵션들을 설정했습니다. 혹시라도 누군가에게 도움이 될 수도 있을 것 같아 간단하게 적어봅니다. 먼저 Intellij Idea와 Visual VM을 사용하고 있는데 관련 설정이 필요한 분들은 이 포스트에서 확인하시고 설치해주시면 됩니다. VisualVM에 플러그인 추가 먼저 VisualVm은 기본적으로 JVM 메모리의 힙 영역 메모리를 보여주기는 합니다. 다만 우리가 아는 Survival 영역, Eden 영역, Old Generation 영역 등이 상세히 보여주진 않고 이 합산된 값들만 보여주고 있습니다. 그래서 조금 보기가 힘든데 각 영역을 상세히 보여줄 수 있는 플러그인이 있어 먼저 이를 설치..
현재 개인 프로젝트를 진행해보고 있는데요. 이런 니즈가 생겼습니다. 로컬에서 Gradle 빌드 태스크를 돌렸을 때 실행되지 않았으면 하는 테스트 코드가 있고, CI 환경에는 테스트 코드가 실행되었으면 좋겠습니다. 예를 들어 통합 테스트 코드가 있습니다. 보통 테스트 시 데이터베이스가 필요하다면 h2 같은 인메모리 데이터베이스를 사용할 수 있는데 저는 MySQL에 특화된 테스트 코드가 있어서 h2와 같은 인메모리 데이터베이스를 사용하기가 힘들었습니다. 사실 테스트 컨테이너를 통해 MySQL을 올려 통합테스트를 만들 수도 있는데 로컬 빌드 시에는 이런 통합 테스트가 오래 걸리기도 해서 CI 환경에서만 통합테스트코드가 실행되었으면 좋겠다는 생각이 들었습니다. 통합테스트, 유닛테스트 간단하게 통합 테스트와 유닛..
.git 디렉토리로 이동하면 hooks 라는 폴더가 존재합니다. 이를 살펴보면 아래와 같이 파일들이 존재합니다. Git Hook git hook은 리포지토리에서 특정 이벤트가 발생할 때마다 자동으로 실행되는 스크립트라고 합니다. 리포지토리를 초기화하면 Git은 이 디렉터리에 샘플 스크립트를 자동으로 만들어줍니다. 확장자가 .sample로 되어있는데 이 경우 .sample 확장자를 제거하지 않으면 실행이 되지 않는다고 합니다. Hook 범위 Hook는 특정 Git 리포지토리에 로컬로 존재하고 git clone을 실행할 때 리포지토리로 복사되지 않는다고 합니다. 이 말을 좀 더 풀어 해석하자면 .git/hooks 디렉토리가 버전 제어가 어렵기 때문에 팀 단위의 개발이라면 관리하는 것이 약간 까다로울수 있다고..
MySQL insert 실패 테스트해 보기 user 테이블 생성 CREATE TABLE `user` ( `id` bigint(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) Lock 테스트 세션 두 개를 열어서 테스트를 진행합니다. 세션 1에서 인덱스 레코드 락을 걸고, 세션 2에서 같은 인덱스로 insert를 실행시킬 겁니다. 이때 락은 얼마나 잡고 있을 건지는 innodb_lock_wait_timeout 설정값에 따라 다릅니다. SHOW VARIABLES LIKE 'innodb_lock_wait_timeout'; 쿼리를 이용해서 락 대기 시간이 몇 초인..
Github Action CI Github Action CI를 사용하다 보면 빌드 혹은 테스트가 실패할 때가 있습니다. 이때 Gradle은 좀 더 상세한 실패 내용을 index.html로 만들어 제공해 줍니다. 이렇게 만들어진 파일을 무척이나 보고 싶은데 워크플로 데이터라서 접근하는 것이 어렵습니다. 빌드 실패 시 위 파일을 그냥 Cat 해버릴까? 가장 처음 생각했던 방법은 단순하게 그냥 위 html을 cat 명령어로 내용을 노출시키고 그걸 복사해서 보면 되지 않을까 싶었습니다. 그래서 아래와 같이 빌드가 실패했을 경우 해당 파일을 Cat 하도록 스텝을 추가해 봤습니다. 이렇게 하니 Html 내용을 그래도 볼 수 있었는데, 복사해놓고 보니 중간중간 href로 참조하고 있는 파일들이 있다는 걸 알았습니다...
gradle best practice 내용 중에 buildSrc 관련한 내용이 있어서 한번 시도해 봤습니다. buildSrc ? Gradle 프로젝트에서 사용하는 특수한 디렉터리 Gradle 빌드 스크립트에서 사용할 수 있는 커스텀 플러그인, 태스크, 의존성 등을 정의할 수 있음 빌드 스크립트를 더 간결하고 모듈화 된 형태를 유지할 수 있고, 중복 코드를 줄이고 유지보수성을 높일 수 있음. Custom Task 만들어보기 백문불여일견이라고 바로 시작해 보겠습니다. 먼저 gradle 프로젝트 하나를 만들고 시작하겠습니다. spring boot 프로젝트 하나를 만들었으며 kotlin 언어로 세팅하였습니다. spring boot 버전은 2.7.9 & kotlin 버전은 1.6.21입니다. build.gradl..
Reactor3의 switchIfEmpty 함수를 쓰면서 의도치 않은 버그를 만들게 되면서 관련 이슈 포스팅을 간단하게 하려고 합니다. 버그 코드 @Test fun `버그 코드`() { Mono.just("monny.tistory.com") .doOnNext { println("doOnNext -> $it") } .switchIfEmpty(handle()) .map { println("map -> $it") it.uppercase() } .subscribe { println("result -> $it") } } private fun handle(): Mono { println("handle") return Mono.just("handle") } 먼저 버그코드입니다. Mono에 이미 element를 가지고..
헥사고날 아키텍처 설계에 따라 프로젝트를 하다 보니 각 영역에 전달해 줄 때 데이터 매핑 작업이 필수가 되었습니다. 데이터 매핑을 할 때 쓰는 라이브러리나 함수들이 많은데 각각의 성능을 비교해보고자 합니다. 테스트에 사용할 클래스 생성 data class Food( var name: String = "", var price: Int = 0, var calories: Int = 0, var color: String = "NONE" ) data class FoodDto( var name: String = "", var price: Int = 0, var calories: Int = 0, var color: String = "NONE" ) ModelMapper implementation("org.modelma..
Intellij Idea Gradle 문제 발생.. 프로젝트가 gradle을 사용한다면 Intellij Idea 우측에 gradle tab이 생깁니다. 오늘 이 탭을 통해서 test 코드를 돌리려고 하는데 아래와 오류가 발생했습니다. /{package}/SampleTest has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0 Class File Version 생소한 단어라서 한번 찾아봤는데 JDK Version 마다 클래스 파일의 버전이 있는 듯 하나. 그래..