누가 구글을 죽였나 🔪 (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..
친구
·
독서/알고리즘
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()..
연결 요소의 개수
·
독서/알고리즘
출력 이 문제는 간선으로 연결된 정점을 모두 탐색하며, 그래프의 개수를 구하는 문제다. 정답 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 String[] nm = br.readLine().split(" "); final int n = Integer.parseInt(nm[0]); final..
제품의 탄생
·
독서
프로덕트를 통해 만들어내고자 하는 미래의 세계관 최근 회사를 떠나기로 결정한 가장 큰 이유는 '제품 개발자'로서의 경험을 얻고자 함이었습니다. 지금까지 모든 것의 가치는 기술에 의해 결정된다고 생각하며 개발자로서 공부해 왔지만, 제품을 만드는 조직에서 1년 7개월을 경험한 후 느낀 것은, 단순히 기술에 의미를 부여한다면 오랫동안 가장 좋아하는 일을 할 수 없을 것이라는 생각이 들었습니다. 기능을 만들고 빠르게 티켓을 치는 것에 목적을 두기 시작했을 때부터 개발을 공부하며 느꼈던 즐거움이 점점 사라지는 것을 느꼈습니다. 어릴 적부터 빨리 질려하던 저가 지금까지도 잘하고 싶고 더 배우고 싶은 개발자라는 길이 단순히 "지식에 대한 갈증만 해결하려고 한다면 개발자라고 할 수 있을까?"라는 고민을 가지게 되었습니..
정규화
·
독서/데이터베이스
Every entity in your database needs to have a single theme - Edgar F. Codd 정규화는 함수적 종속성의 특징에 따라 테이블을 분리해 나가 데이터 구조의 안정성을 최대화시키고, 중복을 배제하여 삽입, 삭제, 갱신 이상의 발생을 방지한다. 따라서 모든 Entity는 하나의 주제로 구성되도록 구성되어야 한다. 제1 정규형 (1NF) 릴레이션에 속한 모든 도메인은 원자성을 가진다. 하지만 원자성이란 모호함을 구분하기 위해 크리스토퍼 데이트는 다음과 같은 1 정규형의 정의를 가진다. 열에는 위-아래의 순서가 없다. 행에는 좌-우의 순서가 없다. 중복되는 열이 없다. 모든 열과 행의 중복지점에는 (열과 행의) 해당되는 분야에서 한 개의 값을 가진다. 모든 행은..
백준 1965 상자넣기
·
독서/알고리즘
data class Matryoshka constructor(private val size: Int) { fun lessThen(other: Matryoshka): Boolean { return this.size < other.size } } class MatryoshkaLine constructor(private val nums: Array) { fun solve(): Int { val dp = Array(nums.size) { 0 } var result = 0 for (i in nums.indices) { val l = getLongest(i, dp) dp[i] = l + 1; result = result.coerceAtLeast(dp[i]) } return result } private fun ge..