일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 학점
- oracle
- 유사코드
- 파이썬
- 백준 알고리즘
- 알고리즘
- smart cast
- c#
- resilience4j
- 자바
- 리눅스
- hyperledger
- gradle
- 초대장
- jsp
- 문법 정리
- SQL
- auto configure
- spring
- 운영체제
- JVM
- K6
- MongoDB
- 파이썬 소스
- dynamic query
- 오라클
- 프로젝트
- 티스토리
- 자바 프로젝트
- 오라클 디비
- Today
- Total
목록Programming (154)
모종닷컴

.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 마다 클래스 파일의 버전이 있는 듯 하나. 그래..

요즘 제 관심사는 Reactive Programming인데요. 문득 궁금한 부분이 생겼습니다. Reacitve 시스템은 기존 전통적인 방식과 비교하여 어떤 점이 좋아진 걸까요? 이를 위해 Spring MVC와 Spring WebFlux를 이용해서 각각 데모 애플리케이션을 만들었습니다. 그리고 이 애플리케이션의 성능을 측정하기 위해 APM이 필요했는데요. 인텔리제이와 Visual VM을 연동하는 방법이 있다는 것을 발견하여 공유드리고자 포스팅을 작성해 보도록 하겠습니다. Visual VM 설치 https://visualvm.github.io/download.html 위 페이지를 통해 먼저 Visual VM을 설치해주세요. 그리고 압축을 풀어주세요. VisualVM: Download Download Visu..

Reactive Streams가 뭐야? 요즘 ChatGPT가 유행이죠 ChatGPT에게 질문 먼저 던지고 시작하겠습니다. 비동기 및 이벤트 기반 시스템에서 구성 요소 간의 효율적인 비동기 스트림 처리를 위한 표준화된 API 대량의 데이터를 처리하기 위한 효율적인 방법 뭔가 석연치 않은 대답으로 보입니다. 그냥 위키에 정의된 Reactive Streams를 찾아보았습니다. 리액티브 스트림 정의 "Reactive Streams is an initiative to provide a standard for asynchronous stream processing with non-blocking back pressure" 리액티브 스트림은 논블럭킹 back-pressure로 비동기 스트림 처리를 위한 표준을 제공하..

스프링 프레임워크 기반 프로젝트를 계속하다 보니 문득 내가 모르는 스프링 프로젝트가 또 있나 싶어서 확인하다 보니 Spring Shell 프로젝트를 발견하게 되었습니다. 최근 프로젝트 테스트를 위한 방법을 조금 고민하고 있었는데 어쩌면 좋은 방안이 될 수 있을 것 같아 한번 사용해봤습니다. Spring Shell ? 모든 애플리케이션에 멋진 사용자 인터페이스가 필요한 것은 아니며, 경우에 따라 대화형 터미널을 통해 응용 프로그램과 상호 작용하는 것이 적절한 방법이 될 수 있습니다. 스프링 쉘에는 고급 기능(구문 분석, 탭 완성, 출력 색상 지정, 입력 변환 및 유효성 검사)이 포함되어 있어 핵심 명령 로직에 집중할 수 있습니다. 스프링 쉘을 써보기로 결정한 이유? 저의 경우 스프링 기반으로 만든 프로젝트..