누가 구글을 죽였나 🔪 (a.k.a. CVE-2023-44487 분석 해보기)
·
독서/네트워크
예전에 재미난 글을 읽었다. 바로 이 글인데, 내용을 짧게 요약해 보자면, HTTP/2의 핵심 기능인 Stream muliplexing을 이용한 DDoS 공격을 시도해 적은 규모의 클라이언트로 초당 수억 이상의 요청을 보냈다는 내용이다. HTTP/2 HTTP/2(Hypertext Transfer Protocol Version 2)는 SPDY를 기반으로 하고 있다. 1997년 표준화된 HTTP/1.1의 대부분을 개선한 표준으로 2015년 2월 17일 IESG에서 승인되었다. Stream multiplexing 이 글의 주제인 CVE-2023-44487을 이해하기 위해선 HTTP/2의 핵심 기능인, Stream multiplexing에 대해서 알아볼 필요가 있다. 오늘날의 대부분의 웹페이지는 이미지, css..
Redisson 분산락
·
프로젝트/개발
들어가며 학부 시절 마인크래프트 서버 포럼을 개발해 보면서 각 서버별 인원수 체크를 위한 검사를 위해 크론잡을 수행한 경험이 있다. 당시 개발 경험을 위해 클러스터링 환경으로 구성했는데, 문제는 배치가 수행되면서 모든 서버가 일괄적으로 크론이 실행되는 문제가 있었다. 너무 당연하지만, 당시 하나의 서버만 구성해 운영하는 것을 생각하던 버릇이 있던 나에겐 꽤 신선한 충격이었다. 당시엔 레디스의 클러스터링 환경 분산락 구현체인 RedLock으로 문제를 해결했는데, 조금 많이 과하기도 하고, RedLock 알고리즘의 경우 각 레디스가 위치한 서버 간에 시간 동기화와 락 획득에 실패한 경우 실패한 클라이언트는 획득한 부분 락을 모두 푸는 작업을 요청하는 등 매우 특별한 상황에서 문제를 해결하는 알고리듬인 것을 ..
친구
·
독서/알고리즘
import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws Exception { final var br = new BufferedReader(new InputStreamReader(System.in)); final var bw = new BufferedWriter(new OutputStreamWriter(System.out)); final var n = Integer.parseInt(br.readLine()); final var solver = new Solver(n); for (var i = 0; i < n; i++) { final var edges = br.readLine()..
틴타임즈 : 뉴스 10초 요약 회고
·
메모
보호되어 있는 글입니다.
하이버네이트 공식 문서를 읽고 배운 점
·
메모
Hibernate 6 Guide 문서를 읽고 정리한 내용입니다. 하이버네이트 공식 문서를 읽고 배운 점을 작성해 보자. 이미 알던 내용도 있고, 새로운 기능도 많아 한 번쯤 읽어봐도 좋을 것 같다. ORM or SQL A perennial question is: should I use ORM, or plain SQL? The answer is usually: use both. 지금은 아니지만, 처음 ORM 기술을 접하면서 ORM을 SQL을 완전히 대체할 수 있는 도구로 생각했다. 그러면서 당연하게도 이분법적인 사고를 가졌는데 하이버네이트 공식 문서에선 이 부분에 대해서 명확하게 전달하고 있다. DAO에 대한 사과 더보기 Back in the dark days of Java EE 4, before the ..
예외에 대한 새로운 시각에 대한 내 생각
·
메모
최근 학습을 하며 알게 된 내용에 대한 개인적인 생각입니다. Checked exception은 OCP 위반 최근 본 영상에서 "Checked exception은 OCP(Open Closed Principle)를 위반한 것이다."라는 내용을 접했다. 내용인 즉 하위 의존성에서 Checked exception이 추가되면 변경사항이 전파되기 때문에 변경에 닫혀있지 않다는 것이다. 이전까지 Checked exception과 OCP와의 관계를 생각해보지 못했는데 굉장히 좋은 인사이트라 개인적으로 좀 더 찾아보며 내린 나름의 결과는 "아니다"이다. Checked exception Java was a much safer language than most of its predecessors: all behaviour ..