본문 바로가기
반응형

전체 글140

encodeURI 와 encodeURIComponent — 갈리는 글자는 열한 개다 두 함수가 다르게 처리하는 글자를 ASCII 전수로 세어 보니 열한 개였고 전부 URL 구분자였습니다. 값에 encodeURI 를 쓰면 파라미터가 조용히 쪼개집니다. 그리고 + 가 공백인 것은 쿼리 문자열 규칙이라 경로에서는 그냥 + 입니다.encodeURI 와 encodeURIComponent 중 무엇을 쓸지는 이름만 봐서는 안 갈립니다. ASCII 128자를 전부 넣어 세어 보니 두 함수가 다르게 처리하는 글자는 열한 개였고 전부 URL 의 구분자였습니다. 그 열한 개가 갈림길입니다 — 값에 encodeURI 를 쓰면 파라미터가 조용히 쪼개집니다. 그리고 공백을 만드는 방법도 두 파로 갈리는데, 읽는 쪽은 자리에 따라 또 다르게 봅니다.잰 환경부터이 주제는 함수마다 답이 다르고 읽는 자리마다 또 다릅.. 2026. 10. 27.
순환 의존 — 생성자 주입은 못 만들고, 필드 주입은 숨긴다 서로를 참조하는 두 빈은 생성자 주입으로 만들 수 없어 기동에서 막힌다. 필드 주입으로 바꾸면 통과하지만 순환은 그대로 남는다.서비스 두 개가 서로를 필요로 하게 됐습니다. 생성자 주입으로 두니 기동에서 실패합니다. 검색해 보니 필드 주입으로 바꾸거나 지연 주입을 붙이면 된다고 해서 둘 다 해 봤는데, 지연 주입 쪽은 정말 잘 뜹니다. 그런데 순환 의존이 사라진 것은 아니라는 생각이 들어 뭔가 미뤄 둔 기분이 남습니다.왜 생성자 주입에서만 막히나순환 의존이 생성자 주입에서만 막히는 데는 이유가 있습니다. 생성자 주입은 객체를 만드는 그 순간에 협력자가 있어야 합니다. A를 만들려면 B가 필요하고 B를 만들려면 A가 필요하면, 어느 쪽도 먼저 만들 수 없습니다. 스프링이 게을러서가 아니라 논리적으로 불가능.. 2026. 10. 26.
[sql] 인덱스 - 걸어 뒀는데 안 타는 조건들 인덱스는 걸린 열을 있는 그대로 비교할 때만 쓰인다. 함수로 감싸거나 앞에 %를 붙이면 전체 스캔이 된다.느린 쿼리에 인덱스를 걸었는데 여전히 느립니다. EXPLAIN을 봐도 무슨 말인지 모르겠고, 어떤 조건은 인덱스를 타고 어떤 조건은 안 타는 것 같은데 기준을 모르겠습니다.있는 그대로 비교할 때만인덱스는 값이 정렬된 채로 따로 보관된 사본입니다. 그래서 찾는 값을 그 정렬 순서에서 바로 짚을 수 있을 때만 쓸모가 있습니다.열을 함수로 감싸면 이 전제가 깨집니다. lower(email) 의 정렬 순서는 인덱스가 모르는 값이라, 전부 읽어서 하나씩 계산해 봐야 합니다. 재 보면 동등 비교 0.224ms가 23.233ms 로 100배 넘게 벌어집니다.같은 열, 같은 인덱스인데 조건 모양에 따라 갈린다.LI.. 2026. 10. 25.
Redis 입문 - 빠른 이유(메모리 · 단일 스레드)가 그대로 제약이 된다 Redis 가 빠른 이유는 메모리와 단일 스레드입니다. 그 둘이 그대로 제약이 되는 자리 — TTL · 메모리 한도 · 느린 명령 — 을 도식으로 정리했습니다.Redis 를 「빠른 캐시」로만 알고 붙였습니다. 실제로 빠릅니다. 그런데 빠른 이유를 모르면, 그 이유가 그대로 발목을 잡는 자리도 모릅니다. TTL 을 걸어 뒀는데 어느 순간 안 지워지고, 메모리가 차니 쓰기가 통째로 거절당하고, 명령 하나 쳤더니 서비스 전체가 멎습니다. 셋 다 «메모리에 산다»와 «한 줄로 세워 처리한다»는 같은 두 가지에서 나옵니다. 설치부터 시작해 그 두 가지가 어디서 어떻게 발목을 잡는지 순서대로 보겠습니다.설치하고 띄우기공식 설치 문서는 https://redis.io/docs/latest/operate/oss_and_.. 2026. 10. 24.
[react] 커스텀 훅 - 공유되는 것은 로직이지 상태가 아니다 커스텀 훅은 상태를 공유하지 않고 로직만 재사용한다. 그리고 돌려주는 값의 참조가 불안정하면 쓰는 쪽의 효과가 계속 다시 돈다.여러 화면에서 쓰는 데이터 로딩 로직을 커스텀 훅으로 뺐습니다. 그런데 그 훅을 쓰는 컴포넌트에서 효과가 무한히 반복됩니다. 의존성 배열에는 훅이 돌려준 객체만 들어 있고, 그 객체를 만드는 코드는 건드리지 않았습니다.훅은 상태를 공유하지 않는다커스텀 훅에 대한 흔한 오해가 "이 훅을 쓰는 컴포넌트들이 상태를 공유한다"는 것입니다. 그렇지 않습니다. 커스텀 훅은 특별한 무엇이 아니라 훅을 부르는 평범한 함수이고, 부를 때마다 그 안의 useState 가 새 상태를 만듭니다.확인은 간단합니다. 같은 훅을 한 컴포넌트에서 두 번 부르고 각각 값을 바꿔 보면 서로 영향을 주지 않습니다.. 2026. 10. 23.
반응형