글을 작성하게 된 계기 인덱스를 생성할 때, 길이 제한이 있다는 것을 알게 되었고, 이를 정리하기 위해 글을 작성하게 되었습니다. 1. 문제 상황 인덱스를 생성할 때, 다음과 같은 오류를 만났습니다. ERROR 1071 (42000): Specified key was too long; max key length is 3072 byte...
인덱스에도 길이 제한이 있다?
레디스의 키 분배 전략:CRC16
글을 작성하게 된 계기 레디스의 CRC16 알고리즘에 대해 알게 되었고, 이를 정리하기 위해 글을 작성하게 되었습니다. 1. CRC 알고리즘과 레디스 CRC(Cyclic Redundancy Check)는 데이터 전송 중 오류를 검출하기 위해 개발된 알고리즘입니다. 어떤 데이터를 네트워크로 전송/저장할 때, 데이터에 일정한 규칙으로 생성...
유연한 설계는 항상 필요한가?
글을 작성하게 된 계기 맡은 프로젝트에서 불필요한 추상화, 최적화를 해서 복잡도를 올리다가 야근 에 철야 까지 하게 되었습니다. 이 과정에서 든 생각을 정리하기 위해 글을 작성하게 되었습니다. 1. 왜 이런 생각이 들었을까? 프로젝트에서 불필요한 추상화와 최적화를 하다보니 구조가 복잡해졌고, 안그래도 빠듯한 일정에 야근에 철야까지 하게...
컴퓨터의 수 표현 방식과 Decimal을 사용하는 이유
글을 작성하게 된 계기 현재 회사의 정산 을 하며 돈을 다루다보니, BigDecimal을 자주 사용하고 있습니다. 그러다 보니 컴퓨터가 수를 표현하는 방식 과 Decimal에 대해 궁금해졌고, 알게 된 내용을 정리하기 위해 글을 작성하게 되었습니다. 1. 정수와 실수의 이진수 변환 및 표현 컴퓨터는 데이터를 이진수로 변환 하여 메모리에...
잘못 이해하고 있었던 단일 책임의 원칙
글을 작성하게 된 계기 SOLID 원칙 중, 단일 책임 원칙에 대해 잘못 이해하고 있던 내용 을 정리하기 위해 글을 작성하게 되었습니다. 1. 어떻게 잘못 이해하고 있었을까? 이때까지 단일 책임의 원칙을 클래스는 하나의 책임만 가져야 한다 라고 이해하고 있었습니다. 즉, 아래와 같은 코드는 단일 책임 원칙을 위반한 코드라고 생각했죠. ...
레디스 복제 동기화: PSYNC
레디스의 PSYNC에 대해 알게 되었고, 이를 정리하기 위해 글을 작성하게 되었습니다. 1. PSYNC PSYNC(Partial Resynchronization)는 레디스 2.8부터 도입된 복제 명령어로, 마스터와 레플리카 간의 동기화 효율을 높이기 위해 사용됩니다. When replicas connect to masters, t...
PSYNC가 실패하면 정말 SYNC로 동기화를 할까?
Redis에서 PSYNC가 실패했을 때, SYNC로 동기화가 진행되는지 궁금증이 들었고, 이를 실습하는 과정에서 알게 된 내용을 정리하기 위해 글을 작성하게 되었습니다. PSYNC에 대한 개념은 해당 포스팅을 참조해주세요. 📝 1. 실습 준비 전체 실습은 Docker Compose를 사용해 6개의 Redis 노드를 구성하고, P...
Git에도 Lock이 있다?
글을 작성하게 된 계기 Git을 사용하던 중, HEAD에 Lock이 걸렸고, 커밋과 브랜치 이동이 되지 않았습니다. 집에 와서 이를 학습하던 중 알게 된 내용을 정리하기 위해 글을 작성하게 되었습니다. 1. 문제 상황 회사에서 커밋을 하던 중, 시간이 너무 오래 걸려 Ctrl + C로 해당 작업을 중지 했습니다. 이후 다시 커밋을 하니...
Gradle의 Incubating?
글을 작성하게 된 계기 Gradle을 사용하면서 Incubating 이라는 단어를 알게 되었고, 이를 정리하기 위해 글을 작성하게 되었습니다. 1. Incubating build.gradle.kts를 수정하던 중, 다음과 같은 경고를 마주치게 되었습니다. configurations { compileOnly { e...
CBC 모드에서도 IV 값이 고정되면 동일한 암호문이 생성될 수 있다
글을 작성하게 된 계기 회사에서 AES 알고리즘을 사용하던 중, CBC 모드도 IV 값에 따라 동일한 값이 나올 수 있다는 사실을 알게 되었고, 이를 정리하기 위해 글을 작성하게 되었습니다. 1. 왜 고정된 IV 값을 사용하려 했을까? 회사에서 클라이언트 개발자에게 AES 알고리즘의 CBC 모드 에서 고정 IV 값을 사용해달라는 요청 ...