전체 글

· Database
1. 재현환경 MariaDB Java Client 2.x.x 버전 AWS Aurora MySQL 2.x.x 버전 Aurora Mysql 2.04.8 버전까지는 Good 이후의 minor 버전부터 문제, Aurora Mysql 2.07.x 버전부터는 확실 2. 해결방법 필자와 같이 바쁜 직장인들을 위해 빠르게 결론부터 전달 드리겠습니다. DB 커넥션 스트링에 &usePipelineAuth=false&useBatchMultiSend=false 부분을 추가하면 됩니다. 기본값이 true인 옵션 usePipelineAuth 와 useBatchMultiSend 를false 로 설정합니다. 예를들어 Connection String 이.... jdbc:mysql://mysql-aurora-seoul.myapp.kr:..
· 개발상식
Part 1. 용어 정리 OSS OpenSource Software, 오픈소스 소프트웨어의 약자 본 글에서 오픈소스 프로젝트 같은 의미로 사용할 예정이다. Apache Pulsar Kafka 와 같은 클라우드 네이티브 메시징 시스템 및 플랫폼 Yahoo에서 처음 시작되었고 이후 Apache 재단에 인큐베이팅, 그리고 메인으로 졸업 Jackson ObjectMapper 로 많이 알려져있는 프로젝트 ObjectMapper 는 Jackson 팀이 관리하는 jackson-databind 라는 프로젝트의 API 정확한 명칭은 FasterXML 이라는 팀이 있고 이 팀의 멤버들이 jackson-databind, jackson-module-kotlin 등의 라이브러리들을 관리한다. Part 2. 서론 최근 내가 메인..
· Test
링크드인을 통해 소개드리는 내용입니다. 서론 테스트 필요성은 레거시가 더 높다. 우리가 생각하는 레거시 코드의 여러 특징들에는 "테스트 없음" 또는 테스트하기 어려운 구조 와 같은 부분들이 있습니다. 실제로 레거시 코드에 테스트 추가는 레거시 코드를 다룰 때 부딪치는 큰 도전 중 하나입니다. 레거시 코드를 단위 테스트하는 것은 확실히 어려운 과제입니다. 하지만 실제로 테스트 필요성이 높은 분야 역시 레거시 코드입니다. 프로그램이 예상치 못한 방식으로 작동할 가능성이 높기 때문입니다. 높은 확률로 코드 작성자는 현재 작업자와 컨벤션, 배경지식, 코딩스타일 등에 대한 이해도를 맞추지 않았을 것이니까요. 실제로 현재 저희 팀에서는 (저희가 레거시라 정의한) 레거시 코드에 대한 변경 작업시 충분한 양의 테스트의..
· IDE
하나의 에디터를 잘 사용하라 텍스트는 프로그래밍의 원재료이다. 따라서, 에디터는 소프트웨어 개발의 가장 중요한 도구중 하나이다. 에디터를 하나 골라 마스터하고, 모든 편집 작업에 그 에디터를 사용하라. - Andrew Hunt in “Pragmatic Programmer” 대상 Java/Kotlin 사용자 (초보자부터 전문가까지) 버전 요구 사항: IntelliJ IDEA 2023.2.5 (Ultimate Edition) Kotlin 1.5 이상 **하위 버전에 대해서는 별도 확인 필요 👉🏼 서론 때때로 우리는 특정 코드가 얼마나 자주 실행되는지 알고 싶어 합니다. 예를 들어, 스프링부트 서버 개발 과정에서… 빌드 테스트 시 `SpringApplication.refreshContext()` 호출 횟수 …..
· 개발상식
1. 개요 버그는 질병과 마찬가지로 다음과 같은 특징들을 가집니다. 불가피 함 : 버그와 질병 모두 최선을 다해 관리하지만 발생은 불가피합니다. 예방이 최선의 치료 : 가능하다면 예방이 발생 후 치료비용보다 저렴합니다. ***소프트웨어에 해당합니다. 소프트웨어는 항상 변경되기 때문에 버그 발생은 불가피한 현상입니다. 버그로 인해 발생하는 피해는 상당한 비용이 수반되어 예방과 관리를 모두에 적절한 자원을 분배하는 것이 중요합니다. 본 글에서는 소프트웨어 버그 예방과 관리에 자원을 분배하기 전, 버그 발생의 비용을 구성하는 여러 요소들을 나열해보고자 합니다. 일부 누락된 부분이 있거나, 잘못된 항목에 포함된 부분들은 말씀주시면 수정해보겠습니다. 2. 버그 발생으로 인한 손해 비용 구성 버그로 인한 총 손해 ..
· 개발상식
시작하며: 소프트웨어를 개발하는 우리는 종종 “빨리가는 것”과 “품질”을 정반대의 개념이라고 생각하는 경향이 있습니다. 빨리간다는 것은 속도의 정도(Amount)를 가지고 품질이라는 것 또한 품질의 정도(Amount)를 가지고 있는데 말이지요. 우리는 "빨리가면 품질을 희생해야"하고 "품질을 희생해야 빨리가는 것"이라 너무 쉽게 단정짓고 다음 과제에 뛰어듭니다. 모든 팀은 목적을 달성하기 위해서 노력을 하고 최선을 다해 움직입니다. 하지만 일부는 더 많이 노력할 수록 느려지고, 일부는 더 많이 노력할 수록 빨라집니다. 물론 노력과 지속함은 중요합니다만 단순히 이 두 가지가 팀의 속력을 결정하지 않습니다. 소프트웨어의 품질하면 "클린코드"라는 개념이 떠오릅니다. 클린코드는 단순히 좋은 관례, 좋은 가치 이..
· Test
개요 테스트를 짜는데 그럴듯하고 중복이 덜한 랜덤 한국 이름(세자리)와 랜덤 주민등록번호 생성 매번 생각해내는게 여간 번거로운일이 아니다. 그래서... 작성한코드. 스탠다드 라이브러리인 Random 에 붙어서 더 있어보인다. 본 코드 /** * 한국어 이름을 생성하기 위해 무작위의 한국어 세글자 생성한다. * * 예시: 쩤죁걤, 덨뽭햰, 퐀눧흌, 긥쩨푤 등 * * @receiver [Random] 무작위 숫자를 생성하기 위한 인스턴스 * @return 세글자로 이루어진 무작위 한국어 이름 */ fun Random.koreanName(): String { // 한글 음절 범위 내에서 무작위 문자를 생성 return buildString { repeat(3) { append(Random.nextInt(0xA..
· 개발상식
0. 목표 Java의 ArrayDeque와 Stack을 비교 분석한다. 이후 우리는 필요한 경우 ArrayDeque를 활용해 더 빠르고 메모리 효율성이 더 높일 수 있게된다. 1. ArrayDeque과 Stack 성능 및 메모리 효율 비교 1.a 기본적인 자료 구조와 API 디자인 ArrayDeque과 Stack은 모두 원소들의 집합을 저장하고 관리하는 데 배열(array)을 사용합니다. 그러나 두 클래스 사이에는 중요한 차이점이 있습니다. Stack은 스택의 맨 위에서만 원소를 추가/제거할 수 있는 설계를 가지고 있습니다. 반면에 ArrayDeque는 Deque 인터페이스를 구현하기 떄문에 양쪽 끝에서 원소를 추가하거나 제거할 수 있습니다. 이러한 추상자료구조 ADT(Abstract Data Type)..
joohyukkim
2031.10.19