
최단 경로 — 다익스트라의 확신, A*의 직감, 벨만-포드의 인내
다익스트라·벨만-포드·A*·플로이드-워셜의 차이와 쓰임. 음수 간선, 휴리스틱, 거리 완화(relaxation)의 의미를 탐색이 퍼지는 애니메이션으로 이해합니다.
키워드가 정확히 일치하지 않아도 의미로 글을 찾아줍니다. 모든 처리는 브라우저 안에서 일어나며 — 서버·API 키·외부 전송이 없습니다. (검색 모델은 처음 한 번만 받고 이후 캐시됩니다.)
매일 자동으로 바뀌는 복습 6선 — Network · OS · Algorithm · Database 각 1편 + 랜덤 2편.

다익스트라·벨만-포드·A*·플로이드-워셜의 차이와 쓰임. 음수 간선, 휴리스틱, 거리 완화(relaxation)의 의미를 탐색이 퍼지는 애니메이션으로 이해합니다.
MyBatis의 #{}와 ${}는 한 글자 차이지만 결과는 PreparedStatement 바인딩과 날 문자열 치환으로 갈린다. ORDER BY 같은 바인딩 불가 자리를 화이트리스트로 안전하게 처리하는 법.
한 번 내렸던 기능을 다시 켜야 하는 일은 흔하다. revert와 새 변경의 충돌, 사라진 URL·권한의 복원, 그 사이 바뀐 스키마의 데이터 정합을 다룬다.
화면을 구성하는 여러 독립 데이터 요청을 순차로 풀지 병렬로 풀지의 트레이드오프. 워터폴 방지, 병렬의 지연 단축과 부분 실패 처리.

검색창 하나로 여러 필드를 뒤지고 싶다 실제 검색창은 보통 하나입니다. 그런데 사용자가 입력한 키워드는 제목·본문·태그 어디에 있든 잡혀야 하죠. 필드마다 match를 따로 거는 건 번거롭습니다. 이때 쓰는 게 MultiMatch 입니다. MultiMatch: 여러 필드 동시 매칭 flowchart LR Q["검색어: 'spring'"] ...
결제 상태를 단순 컬럼으로 다루면 역전이·중복·건너뛰기가 터진다. 상태 머신으로 합법 전이만 허용하고 불법 전이를 DB 레벨까지 막는 설계를 다룬다.
조인·조건 컬럼의 타입 불일치가 인덱스를 무력화하는 원리. 한쪽이 문자/한쪽이 숫자거나 collation이 달라 옵티마이저가 암묵 캐스트를 걸며 풀스캔이 나는 안티패턴.
이미 운영 중인 API를 수정할 때 클라이언트를 깨뜨리지 않는 법. 안전한 변경과 파괴적 변경의 경계, URI·헤더 버저닝, 관용적 파서 원칙을 정리한다.
운영자마다 보이는 메뉴가 다르다면 인가는 화면이 아니라 요청 단계에서 걸려야 한다. Spring Security 필터 체인에 메뉴 권한 필터를 끼워 요청 URL을 권한과 대조하는 설계를 다룬다.