본문 바로가기

분류 전체보기

(104)
[AI] Gemma 사용해보기 Gemma Google에서 공개한 경량 오픈 모델(sLLM), 경량 모델로서 온디바이스 모델로 활용하기 적합 현재는 Parameter 20억개, 70억개 모델로 gemma-2b, gemma-7b가 공개 상태 Apache-2.0 라이센스 HuggingFace Gemma 아래는 HuggingFace를 이용한 방법으로 설명 환경 세팅 HuggingFace Gemma 라이센스 승인하기 https://huggingface.co/google/gemma-2b google/gemma-2b · Hugging Face This repository is publicly accessible, but you have to accept the conditions to access its files and content. To a..
[JPA] 낙관적 Lock, 비관적 Lock 개요 JPA에는 동시에 여러 사용자가 접근하여 데이터를 조작할 때 발생할 수 있는 문제를 다루기 위해 Lock을 지원하고 있습니다. 이 중에 낙관적 Lock(Optimistic Lock), 비관적 Lock(Pessimistic Lock)에 대해서 알아보려 합니다. 낙관적 Lock 낙관적이란 단어에서 알 수 있듯이 데이터 갱신 시 충돌이 발생하는 것을 막는 것이 아닌 충돌이 일어났을 때 처리하는 Lock입니다. @Entity class Book( @Id val bookId: String, val bookName: String, @Version val version: Int ) JPA에서는 위와 같이 Entity에 version 필드를 지정하여 사용합니다. version 값을 통해서 Entity의 변경사항을..
[Kafka] Kafka를 편하게 Kafkactl 명령어 Github https://github.com/deviceinsight/kafkactl GitHub - deviceinsight/kafkactl: Command Line Tool for managing Apache Kafka Command Line Tool for managing Apache Kafka. Contribute to deviceinsight/kafkactl development by creating an account on GitHub. github.com 설치 homebrew: # install tap repostory once brew tap deviceinsight/packages # install kafkactl brew install deviceinsight/packages/kafk..
[Java] Virtual Thread(가상 쓰레드) Virtual Thread 2023년 9월에 릴리즈 예정인 Java 21부터 제공되는 기능으로써 기존의 스레드 이외에 추가되는 경량 쓰레드입니다. 기존의 스레드 VS 가상 스레드 기존 스레드 OS (Operating System)이 관리하고 스케쥴링 한다. 즉, 기존 Java에서 스레드를 사용하는 것은 OS의 스레드를 사용하는 방식이다. OS 커널 스레드를 새로 생성하는 것은 비용이 크다. 그래서 스레드 풀 (Thread Pool)을 사용했었다. OS에서 context switch가 될 경우 시간이 오래 걸리기 때문에 non-blocking I/O 방식 혹은 비동기 방식으로 사용해야 조금 더 효율적으로 스레드를 사용할 수 있다. 가상 스레드 JVM에 의해 관리되고 스케쥴링 된다. 가상 머신에 의해 관리되..
[Spring] Spring 6.0, Spring Boot 3.0으로 마이그레이션 중 발생 가능 이슈 Spring Boot 2.x -> Spring Boot 3.0 버전으로 마이그레이션 중 발생했던 이슈들과 그에 대한 저의 해결 방법을 정리합니다. 여러 라이브러리들이 매우 빠르게 Spring 버전에 맞게 업데이트 중이니 글 작성 이후 시점에는 다른 해결방법이 나올 수 있으니 참고 부탁드립니다. 발생 이슈 ○ No qualifying bean of type 'org.springframework.cloud.openfeign.FeignContext' available 참고 : https://github.com/spring-cloud/spring-cloud-openfeign/issues/803 발생 이유 : Spring Cloud OpenFeign의 구 버전은 호환되지 않는 부분이 있음 해결 방법 : 4.0 이..
[Web] 헥사고날 아키텍처 알아보기 각종 블로그와 문서들을 보고 정리한 내용입니다. 정확한 정보가 아닐 수 있습니다. 유의 바랍니다. Hexagonal Architecture이 뭘까? 포트와 어댑터 아키텍처는 헥사고날 아키텍처로 더 잘 알려져 있는 것 같습니다. 어떠한 아키텍처이길래 포트와 어댑터로 불리는 걸까요? 포트와 어댑터 아키텍처 구조를 간단하게 그려보았습니다. 위와 같은 구조로 구성하는 것이 포트와 어댑터 아키텍처이고 중심 부분이 헥사 모양으로 구성되어서 헥사고날로 불리고 있습니다. 엔티티를 중심으로 외부로는 포트를 통해서 노출되어 있고 각 포트에 어댑터들이 붙어서 작동하는 구조입니다. 주황색으로 분리해 둔 것은 아래의 코드에서 패키지 구조를 표현하기 위해 추가한 경계입니다. (코드로 바로가기) 목표 이 아키텍처의 목표는 인터페이..
[Ktorm] Ktor에서 Ktorm 사용해보기 Ktor의 ORM Ktor에서는 ORM으로 Exposed(익스포즈드)와 Ktorm(케이텀)이 대표적입니다. 이 중에서 제가 실험하는 토이 프로젝트의 크기나 설정상 Ktorm이 사용하기 편해 보이더라고요. 그래서 Ktorm의 간단한 사용법을 알아보려 합니다. DB 연결부터 Ktorm을 이용한 CRUD까지의 내용으로 진행됩니다. 1. Ktorm dependency 추가 //Maven 기준 org.ktorm ktorm-core ${ktorm_version} org.ktorm ktorm-jackson ${ktorm_version} // MySQL 사용하기 위한 dependency mysql mysql-connector-java {connector_version} 2. DB 연결 가장 먼저 DB 연결부터 해야 합..
[프로그래머스] 주차 요금 계산 (Java) 카테고리 알고리즘 나만의 카테고리 알고리즘 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 요점 알맞은 로직 짜기 적당한 자료 구조 사용 for문으로 iteration에 사용되는 객체를 for문 안에서 제거하지 않도록 주의 (런타임 에러) 참고 지식 Map, Set Map Sort 하기 풀이 (Java) import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; imp..
[Spring] Spring 6.0 과 Spring Boot 3.0에는 뭐가 달라질까 Spring 5.x 버전, Spring Boot 2.x 버전이 얼마 전에 나왔던 것 같은데 벌써 메이저 버전이 또 올라간다는 소식이 들렸습니다. 이미 수개월 전에 나왔던 소식이지만 제가 좀 늦는 편이라 이제야 보게 되어서 이렇게 정리합니다. Spring 6.0, Boot 3.0의 현재 출시 상황 Spring 6.0은 위와 같이 2021년 12월에 M1 버전이 나왔다는 뉴스가 떴었습니다. 그 후 2022년 7월 즉, 현재 시점에 RC1이 뜨는 것으로 되어 있지만 Spring Blog Release 에는 7월 14일에 M5 버전이 나왔습니다. 그래서 RC1 버전은 2022년 8월중에 나오지 않을까 싶습니다. Boot의 상황은 어떨까요? Spring Boot는 기반 소스인 Spring Framework의 개발..
[Spring Cloud] Feign에서 메서드 별로 Hystrix 설정 분리하기 시작하는 이유 앞선 게시글에서 Feign에서 CircuitBreaker 역할로 Hystrix를 사용해보았고 편리하게 application.yml에 설정을 추가하여 메서드 별로 적용해보았습니다. 하지만 이걸로는 yml 파일이 계속 지저분해지고 분리해야 하는 메서드들이 많아질수록 관리가 적용이 불편해질 것 같았습니다. 그래서 간단하게 Custom Annotation 형식으로 적용하는 예제를 만들어보려 합니다. 개요 Feign Client에서 Hystrix를 이용한 Fallback 설정을 메서드 별로 설정하기 위해 Hystrix Configuration을 Custom Annotation형태로 등록하도록 함 예제 Github https://github.com/MarrRang/feign-hystrix-study/..