대화 찾기
모든 대화
Tcl_Obj 시머링과 인터프리터 스레드
Tcl을 임베드할 때 C 쪽은 엽서 한 장에 다 들어가요. Tcl_CreateInterp, Tcl_EvalObjEx, Tcl_GetObjResult, 그리고 건너가는 건 전부 문자열이에요. 음, 거의요. Tcl_Obj는 내부…
물려받은 통합 문서와 On Error Resume Next
물려받은 통합 문서를 아무거나 열어 보면 모듈 머리 아래 첫 줄이 거의 똑같아요. On Error Resume Next. 위험한 호출 하나를 감싼 것도 아니고, 맨 위에서 전부를 덮고 있죠. 어쩌다 거기 들어갔는지는 뻔해요.…
partial def: #eval은 111이 나오는데 rfl이랑 decide는 실패해요. ofReduceBool 없이 검증할 수 있는 방법이 있을까요?
작은 감사 도구를 만들고 있고, 툴체인은 leanprover/lean4:v4.15.0이에요. 아무도 종료 증명을 못 해서 스텝 카운터는 partial def로 되어 있어요: lake build는 깨끗하게 통과하고 #eval…
어느 빌드 시간을 말하는 건가
크레이트 분리 이야기는 늘 누군가 빌드 시간 하나를 올리는 것으로 끝난다. 숫자는 두 개고, 움직이는 방향도 다르다. 클린 빌드는 빈 target에서 시작하는 전체 빌드다. 크레이트를 나누면 이쪽은 오히려 조금 나빠질 수 있…
Coroutine proposer: amber를 요청했는데 green이 나오고, history에는 마지막 tile만 보여요
팔레트 장난감용 tile picker를 만들고 있어요 (모바일 앱이고, 터치 UI를 붙이기 전에 lua main.lua와 스크립트로 짠 decision 목록으로 headless 테스트 중이에요). 이상한 게 두 가지 있는데…
탐색 예산이 바닥나면 NotFound를 돌려줘야 할까?
let loop = loop in if loop then Just 1 else Nothing의 타입은 Maybe Int이지만, 이 식은 Just도 Nothing도 아닙니다. 타입이 있다고 해서 이 식이 값에 도달하는 것은 아…
with-lenient-parse가 에러를 로깅하는데도 SBCL이 여전히 디버거로 빠져요
hosts 파일에 잘못된 줄이 있으면 로그만 남기고 계속 로드하도록 매크로를 하나 짰어요. 전체 코드는 이거예요: parse-line에는 skip-line restart가 있는데, 이걸 실제로 호출하는 곳이 있는지는 잘 모르…
Java 의존성은 두 번 선언되고 두 목록은 어긋난다
모듈을 쓰는 Java 프로젝트는 의존성을 두 번 적습니다. 빌드 스크립트는 어떤 아티팩트를 받아서 어느 경로에 둘지 말하고, module-info.java는 이 모듈이 어떤 모듈을 requires 하는지 말합니다. 두 목록이…
(x, x)는 두 값이 같다는 뜻이 아니다
OCaml의 (x, x)를 "두 값이 같다"로 읽는 학습자가 계속 나와요. 그런 뜻도 아니고, 애초에 허용되지도 않아요. 처음 배우는 사람은 대개 두 설명 중 하나를 떠올려요. 하나는 앞의 x가 구성 요소에 이름을 붙이고 뒤…
합쳐진 메일박스 로그와 인과 관계
A1, B1, B2, A2로 읽히는 합쳐진 메일박스 로그는 보이는 것보다 알려 주는 게 적어요. A는 A1 다음에 A2를, B는 B1 다음에 B2를 보내고, 받는 쪽은 하나, 평범한 메시지예요. 보장되는 순서는 보낸 쪽별 순…
f2py가 C 순서 배열을 호출마다 복사한다
f2py로 NumPy 배열을 Fortran 서브루틴에 넘긴다. 배열은 평소처럼 np.zeros((n, m))로 만들었으니 C 순서다. Fortran은 열이 연속으로 놓여 있길 원한다. f2py도 그걸 알고, 일반 입력 인자라…
eval이 호스트 전역 변수로 넘어가도 될까요?
env에서 rate를 3으로 묶어 두면 eval("rate + 1", env)는 4여야 해요. 컴파일 타임 모드에서도, 런타임 모드에서도, 언제나요. 호스트 쪽 가변 전역 변수 rate를 9로 바꿔도 이 입력의 의미는 그대로…
M-표현식과 S-표현식
매카시의 원래 Lisp 논문은 표기법에 서로 다른 두 가지 일을 맡기고, e절에서 그 둘이 갈라지는 모습을 볼 수 있어요. 함수는 먼저 M-표현식으로 쓰이는데, 논문이 독자에게 함수를 설명하는 방식이 이거예요. 그다음 S-표…
이 큐에 개수를 캐시하는 필드가 필요할까요?
호출자가 이 큐에 묻는 건 List.length items > 8 하나뿐이고, 그걸 계속 반복해서 물어요. 큐는 불변 OCaml 리스트 하나이고, 갱신할 때마다 새 큐를 돌려줘요. 선택지는 두 가지예요. 정확한 개수를 들고…
핫 루프에서 try vs catch unreachable, 숫자가 이해가 안 돼요
ts,level,bytes 형식으로 생성한 약 200만 줄에 대해 try parseLine(line)과 parseLine(line) catch unreachable의 시간을 재고 있어요. bytes를 합산하고요. -Dopti…
파드에서 빌더를 golang:1.25로 올렸는데도 GOMAXPROCS가 계속 32예요
golang:1.25로 다시 빌드했으니 런타임이 CPU limit 2를 인식할 거라고 기대했어요. 그런데 파드에서는 여전히 gomaxprocs=32 numcpu=32가 찍히고, nr_throttled도 실행할 때마다 몇천씩…
모프가 움직이는 중에 메서드 고치기
Squeak에서 스케치할 때 제일 좋은 건 아무것도 다시 시작하지 않는다는 거예요. 모프를 하나 만들고 startStepping을 보내면, 그때부터 월드가 stepTime 밀리초마다 그 모프의 step 메서드를 불러요. 그…
폭탄이 적을 절반만 죽이고, 144 Hz에서는 플레이어 속도가 달라요
안녕하세요, 수업 프로젝트로 Godot 4에서 작은 탑다운 슈터를 만들고 있어요. 문제가 두 개인데, 버그가 하나일 수도 있고 두 개일 수도 있어요. 1. 폭탄. 플레이어가 폭탄을 주우면 wave manager의 kill_a…
interface의 uses 절도 API에 들어갑니까?
Delphi 유닛에는 다른 언어들이 자꾸 새로 만들어 내는 구분이 이미 있습니다. implementation 위의 선언은 이 유닛을 쓰는 유닛에서 보이고, 그 아래에만 있는 것은 바깥에서 이름조차 부를 수 없습니다. 사람들이…
foldl'을 (total, count) 쌍에 썼는데도 상주 메모리가 1GB가 넘어요?
회사 일(모바일 앱)로 쓰는 작은 도구가 있는데, 분석 export 파일인 세션 이벤트 CSV를 읽어서 평균 세션 길이를 출력해요. 약 600만 줄에 대략 300MB예요. 답은 제대로 나와요. 그런데 전체 파일로 돌리면 오래…

