분류 전체보기

JVM/Spring

[Toby Spring Reactive Programming] Reactive Streams 시작 (1)

서론 https://youtu.be/8fenTR3KOJo 토비의 스프링에 있는 토비님의 라이브 유튜브 강의를 보고 정리한 내용입니다. 본론 Iterable vs Observable Iterable public static void main(String[] args) { Iterable iter = () -> new Iterator() { int i = 0; final static int MAX = 10; public boolean hasNext() { return i < MAX; } public Integer next() { return ++i; } }; iter.forEach(System.out::println); } Iterable 인터페이스를 구현하면, for-each를 사용할 수 있다. 주로, C..

DevOps

[docker-compose] mysql 셋팅 참고

초기 데이터 셋팅 volumes: - ./mysql/init:/docker-entrypoint-initdb.d docker-entrypoint-initdb.d에 ./mysql/init 디렉토리에 있는 sql 파일을 추가한다. 이미지 실행 시 자동으로 해당 SQL 스크립트를 읽어서 세팅한다. 한글깨짐방지 command: - --skip-character-set-client-handshake - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci --skip-character-set-client-handshake 클라이언트와 관계없이 '--character-set-server'에서 지정한 문자집합을 기본으로 한다. 이게 없다면, 클라..

HisStory/나는리뷰어다2023

보이지 않는 위협 - 사이버 보안

23년 8월 출간된 즉 한 달전에 나온 책인 만큼 코로나, 비트코인, 러시아와 우크라이나 전쟁, CHAT GPT 등 최신 이슈를 소재로 하여 책을 풀어가는 게 책 읽는 내내 흥미를 자극시켰다. 저자가 실리콘밸리와 한국을 넘나들며 다양한 경험을 한 만큼 두 나라의 사이버 범죄의 실제 사례들을 번갈아가며 이야기해준다. 미국 사례들을 통해 왜 미국이 IT 강국이고, 미국 대통령들이 사이버 보안 지원에 아낌없이 하는지를 설명하는 반면, 우리나라 사례들을 통해 숨기기 바쁜 정치적 문제, 의사결정, 수평적인 보고 체계, 책임회피를 위한 증거임멸 등 아쉬운 대처에 대한 사례들을 통해 아쉬운 경험들을 설명하면서 잘못된 점을 짚어주는 게 우리나라 발전을 위한 따끔한 쓴소리로 느껴졌다. 현대에 들어서 모든 것들이 컴퓨터이..

JVM/JPA

[Hibernate] 설정 옵션 목록

spring: jpa: properties: hibernate: query: plan_cache_max_size: 1 plan_parameter_metadata_max_size: 1 주로 위와 같이 yaml, properties 를 사용해서 하이버네이트 옵션을 주곤 한다. 자주 사용하는 옵션 외에는 어떤 옵션이 있는지 헷갈릴 때가 있고, 혹은 코드로 직접 옵션을 줄 때 옵션 별로 상수로 직접 구현할 필요 없이 이미 구현된 상수를 발견해서 기록한다. 아래 AvailableSettings는 hibernate-core에 있는 하이버네이트 옵션을 상수로 표현한 인터페이스다. hibernate-envers 또한 상수로 정의되어 있다. 클래스명 - EnversSettings 수동으로 코드에서 옵션을 변경할 때 경로..

HisStory/나는리뷰어다2023

육각형개발자 리뷰 - 핵심 역량 키우기

서론 한빛미디어에서 신간이 발매되었다. 책 제목부터 표지, 목차가 지금 내 시기에 읽으면 딱 좋겠다는 생각이 들었다. 저자 또한 내가 재밌게 읽었던 '도메인 주도 개발 시작하기'와 '최범균의 JSP 2.3 웹 프로그래밍 : 기초부터 중급까지'의 저자인 최범균님이었다. 안 읽어볼 이유가 없었고, 기대를 가지고 읽기 시작한다. 본론 목차를 보면 알겠지만, 단순히 코딩이나 기술서적은 아니다. 개발자로 살아가면서 단순 코딩과 기술학습 뿐 아니라 어떤 것들을 잘하고 어떤 것들을 생각하고, 나아가야 하는지를 말하고자 하는 책으로 보인다. 1장 들어가며 이 장에서는 저자가 신입때 겪었던 실패들을 이야기 해준다. 당시 신입으로서 최선을 다해 열심히 했지만, 프로젝트가 흐지부지 끝나는 경험도 해보고, 현재 돌아봤을 때 ..

JVM/Java

[java] BigDecimal의 equals 와 compareTo with kotlin

😲 서론 BigDecimal 을 통해 연산자를 통해 값을 비교하다가 조심해야될 것을 발견했다. 🫡 본론 결과의 값이 1인지를 확인하려고 했는데, 내 생각과 다르게 false가 나왔다. fun main() { val result = BigDecimal("1.00") println(result == BigDecimal.ONE) // false } equals의 java doc 확인해보니 아래와 같은 설명이 적혀있었다. equals Javadoc Compares this BigDecimal with the specified Object for equality. Unlike compareTo, this method considers two BigDecimal objects equal only if they a..

Network/Kafka

[Kafka] kafka.common.InconsistentClusterIdException: The Cluster ID doesn't match stored clusterId Some in meta.properties. The broker is trying to join the wrong cluster. Configured zookeeper.connect may be wrong.

브로커 실행 에러 kafka.common.InconsistentClusterIdException: The Cluster ID 5O5gujuWTEKjB8VxoS0sRA doesn't match stored clusterId Some(y3v9cswgSTOtIUhYDgdPIg) in meta.properties. The broker is trying to join the wrong cluster. Configured zookeeper.connect may be wrong. at kafka.server.KafkaServer.startup(KafkaServer.scala:223) at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:44)..

JVM/JPA

[JPA] 트랜잭션 overrideafterCommit, beforeCommit ...

커밋 이전/이후에 추가적인 작업을 진행하고 싶을 때가 있다. @Transactional fun test() { TransactionSynchronizationManager.registerSynchronization(object : TransactionSynchronizationManager(), TransactionSynchronization { override fun afterCommit() { // ... 로직 } }) // ... db 작업 시작 } 트랜잭션 시작하는 메소드 맨 위에 위와 같이 TransactionSynchronizationManager.registerSynchronization를 사용하면 된다. TransactionSynchronization 에서 다양한 메소드가 있으니 본인이 필..

Hyo Kim
'분류 전체보기' 카테고리의 글 목록 (2 Page)