대화 찾기
모든 대화
start_link가 반환되면 캐시도 준비된 건가요?
start_link는 이름부터 든든하지만, 이게 반환됐을 때 클라이언트가 실제로 알게 된 건 뭘까요? 이 캐시 서비스에서 init은 {:ok, state, {:continue, :warm_cache}}를 반환해요. 시작 호출…
페이지 보고서에는 count(*) OVER ()일까 Repeatable Read일까
Read Committed에서는 페이지 보고서가 자기 자신과 어긋날 수 있습니다. 보고 화면이 조건에 맞는 주문 12건을 셉니다. 다른 세션이 조건에 맞는 새 주문을 커밋합니다. 그다음 화면이 첫 페이지를 가져옵니다. SEL…
설치 문제는 대부분 그냥 엉뚱한 인터프리터 때문이다
"설치했는데 import가 안 돼요" 같은 문제는 대부분 pip가 코드를 실행하는 파이썬과 다른 파이썬에 딸려 있어서 생겨요. pip install은 PATH에서 먼저 보이는 pip를 써요. python -m pip inst…
satisfies는 헬퍼에는 불평하면서 실행 안 된 job에는 아무 말도 안 해요
jobs 테이블을 : Record<string, Job>에서 satisfies로 바꿨어요. when을 리터럴로 유지하려고요. 이제 tsc가 헬퍼 항목만 잡아내요. 일요일에 rotate-logs가 조용히 건너뛰어졌어요 ("ni…
모호한 Julia 메서드와 f(2, 3)
Julia 메서드 두 개가 있어요. f(x::Integer, y::Number)와 f(x::Number, y::Integer)예요. 정수인 인자가 어느 쪽이냐에 따라 각각 다른 알고리즘을 써요. f(2, 3.0)은 첫 번째로…
String.length도 len도 바이트를 센다
잘린 에러 메시지가 이름을 반으로 갈라 놨어요. 코드는 String.sub msg 0 40으로 앞쪽 40바이트만 남겼고, 끝 무렵에 있던 이름이 한글이라 잘린 자리가 3바이트짜리 UTF-8 시퀀스 한가운데였어요. 터미널에는…
늦게 온 call 응답을 두고 엇갈리는 Erlang 문서와 Elixir 문서
타임아웃 난 call을 두고 두 문서가 서로 다른 얘기를 해요. gen_server 레퍼런스는 OTP 24부터 call이 프로세스 별칭을 거치기 때문에 타임아웃 뒤에 도착한 답장은 받지 않는다고 해요. Elixir 문서의 G…
버전 카탈로그, 컨벤션 플러그인에서만 안 보이는 libs
gradle/libs.versions.toml로 버전을 옮기는 중입니다. 공통 설정은 buildSrc 아래 컨벤션 플러그인에 둡니다. 버전은 한 곳에 두자는 생각이었습니다. 경우를 순서대로 놓겠습니다. 하위 프로젝트의 빌드…
ESM default import인데 타입은 CommonJS
모노레포에서 형제 패키지 하나를 ESM 쪽에서 가져다 쓰다가 막혔어요. @repo/ui의 package.json에는 "type" 필드가 없고, exports는 이렇게 돼 있어요. "types": "./dist/index.d.…
이름 조회에 NFC 키를 기본으로 써도 될까요?
자, 사용자가 이름을 붙여 넣었는데 끝이 e 다음에 U+0301이에요. 나중에 같은 이름을 직접 치면 키보드가 U+00E9를 넣어 줘요. 그 사람한테는 같은 이름이고 캐노니컬 등가이기도 한데, 문자열로는 여전히 달라요. 제…
제출한 뒤 Vulkan 버퍼는 누가 소유하나요?
Vulkan 버퍼를 감싼 C++ RAII 래퍼가 그 버퍼를 쓰는 작업을 기록해 제출하고 스코프를 벗어난다. 소멸자는 그 자리에서 vkDestroyBuffer를 호출한다. 버퍼를 참조하는 제출된 명령은 아직 실행 중이다. 이…
running_mean이 느려요, 시간이 산술 연산이 아니라 memmove에 쓰여요
센서 데이터를 평활화하고 있어요. 배열은 readings(nstation, ntime)이고, station이 먼저예요. 데이터 파일이 그렇게 배치돼 있고 다른 도구들도 읽기 때문이에요. station에 대해 루프를 한 번 돌…
다음 호출 전까지만 유효한 버퍼에 관한 메모
C 라이브러리가 포인터와 길이를 돌려줍니다. 지금까지 아는 건 이렇습니다. 단일 스레드 호출 순서라면 다음 라이브러리 호출 전까지 버퍼를 읽을 수 있고 유효합니다. 소유권 이전은 없습니다. 모르는 건 다른 핸들이나 콜백, 백…
--user로 깐 스크립트 폴더가 서비스 PATH에 없었다
공정하게 말하면 pip이 알려 주긴 했어요. 스크립트가 PATH에 없는 디렉터리에 설치됐다는 경고가 설치 출력 중간에 지나갔는데 제가 안 읽었어요. 벌어진 일은 평범해요. pip install --user는 콘솔 스크립트를…
it, _1, 그리고 여전히 쓰는 블록 이름
Ruby 3.4에 블록 매개변수를 가리키는 it이 들어왔습니다. 덕분에 users.map { it.name }은 거의 문장처럼 읽힙니다. 저는 _1보다 이쪽이 좋습니다. 그쪽은 늘 파서가 흘리고 간 무언가처럼 보였습니다. P…
advice-add보다 동적 let 먼저
advice는 실행 중인 에디터를 확장할 때 제일 좋은 기능이면서, 남의 init 파일에서는 제일 못 믿는 기능이에요. (제 것도 포함해서요.) advice-add에 :around를 주면 정의는 건드리지 않고 함수를 감쌀 수…
Rego의 allow 규칙에 기본값 false를 둬야 할까요?
{"approved": false}와 {}는 allow if input.approved == true에서 같은 답을 받습니다. 그 답은 false가 아니라 undefined입니다. 호스트는 선택적 불리언 필드 approved…
libc 없이 -fstack-protector-strong 쓰면 %fs의 0x28 오프셋 로드에서 segfault
freestanding hex dumper예요, x86-64 Linux, 자체 _start, raw syscall, -nostdlib -static -no-pie로 링크해요. 빌드는 undefined symbol 없이 깨끗하…
늘 순조로운 답장만 보여 주는 doctest
저는 doctest를 좋아해요. @doc 안의 iex> 줄이 doctest Counter로 돌아가니까 예제가 거짓말을 못 하고, 순수한 변환 파이프라인이라면 거의 완벽한 문서가 돼요. 그런데 다른 프로세스와 대화하는 코드에서…
Matlab에서 weighted rms가 틀려요, weights가 1이 아닐 때만
Fortran이랑 스프레드시트는 0.0300이 나와요. Matlab은 더 큰 값이 나오고 weights에 따라 바뀌어요. 전부 1이면 괜찮아요. cfg.weights는 맞아 보여요. 왜 그럴까요? obs와 pred는 따로 확…