대화 찾기
모든 대화
단순한 루프가 너무 느려요, gfortran, 200000 x 64 배열
작은 보정 도구인데 코드는 아래에 있어요. 출력은 맞는데 너무 느려요. detrend+clip은 몇 초씩 걸리고, rms도 원래보다 느려요. 요소당 곱셈 한 번, 덧셈 한 번뿐인데도요. -O3랑 -march=native를 써…
context를 취소했는데도 첫 에러 이후 worker goroutine이 계속 살아 있어요 (항상 workers + 2)
안녕하세요, 작은 Go CLI인 shotcheck를 만들고 있어요. 폴더 안의 모든 PNG가 App Store 슬롯에서 요구하는 정확한 크기인지 확인하는 도구예요. worker 풀(기본 8개)이 jobs에서 이름을 읽어서 검…
큐는 8칸, 기다리는 고루틴은 88개
버퍼 채널이 제한하는 건 채널 안에 들어간 작업 수예요. 보내려고 막혀 있는 고루틴 수는 제한하지 않아요. 서버에 요청 100개가 한꺼번에 몰린다고 해 볼게요. 요청마다 작업이 하나씩이고, 워커는 넷, 채널 버퍼는 여덟 칸이…
같은 Int인데 타깃이 둘이면 답도 둘이에요
같은 소스, 같은 JSON 파일인데 타깃마다 결과가 달라요. 이건 좋지 않아요. cohort_join은 우리 트래킹 시스템에서 내보낸 JSON을 읽어서 참가자를 id 기준으로 인덱싱해요. id는 타임스탬프에 카운터를 붙여서…
`String::from_utf8`는 실패하면 바이트를 돌려준다
값을 소비하는 API는 실패했을 때 그 값이 어떻게 되는지 정해야 합니다. String::from_utf8는 Vec<u8>를 값으로 받고, 실패하면 오류가 그것을 소유합니다. 출력은 bad byte at 2, 4 bytes…
realloc 결과를 유일한 포인터에 바로 넣으면 실패 시 메모리가 샌다
*buffer = realloc(*buffer, n)은 버퍼를 늘리는 헬퍼에 자주 나오는데, 특정한 방식으로 틀렸습니다. 할당이 실패하면 유일하게 소유한 포인터가 널로 덮어써집니다. C11 초안은 그 경우 기존 객체가 할당된…
filter를 async로 바꿔도 멈춤 현상은 그대로예요
ledgerscan으로 400k개 항목을 검색해요. run을 async로 바꾸고 main에서 await했어요. 100 ms 하트비트 Timer가 계속 돌 줄 알았거든요. 그런데 실제로는 틱이 찍히고, searching "re…
pure 호스트 함수가 캐시되고, 인자에 쓴 값이 그냥 사라져요
주말 프로젝트로 D로 작성한 호스트 함수를 이름으로 등록해서 쓰는 장난감 표현식 평가기를 만들었어요. registry에 memo 캐시도 넣었어요 (꽤 뿌듯해서 일주일 내내 자랑하고 다녔어요). 규칙은 이래요. 함수가 pure…
foldl은 잘 합성되고, 그래도 샌다
긴 리스트에 foldl (+) 0을 돌리는 것은 내가 아는 가장 작은 공간 누수이고, 산술보다는 합성의 문제에 가깝다. 단계마다 (acc + x) 썽크가 만들어지는데 끝까지 아무도 강제하지 않으니 누산기가 리스트 길이만 한…
설정 객체, 타입 표기냐 satisfies냐
설정 객체는 요즘 거의 const config: Config = {...} 대신 {...} satisfies Config로 써요. 타입 표기를 붙이면 'dark'라고 써 놨는데도 config.mode는 'light' | 'd…
정지 이벤트에서 소비자를 띄우는 규칙
멈춘 프로세스를 끝난 것으로 치는 감독 규칙에 대해 질문을 받았는데, 작은 재현 하나면 문제가 바로 보여요. 셸 단계가 입력 파일을 쓰고, 그 뒤에 소비자가 예약돼 있어요. 쓰는 쪽이 중간에 일시 정지돼요. 감독자는 정지 이…
댕글링 포인터 경고는 사라졌고 포인터는 남았다
래퍼를 통해 C++ 라이브러리에 이름을 넘기는데, 처음엔 한 줄로 CString::new(name).unwrap().as_ptr()라고 썼어요. rustc가 바로 임시 CString이 문장 끝에서 사라지니 포인터가 댕글링이…
expr를 감싸는 중괄호가 바이트코드 컴파일러가 보는 것을 정한다
중괄호 없는 expr는 할 수만 있다면 Tcl에서 금지하고 싶은 습관이에요! 스타일 지적처럼 보이지만 전혀 아니에요. 중괄호 버전은 0을 찍어요. 바이트코드 컴파일러가 $qty == 3을 식으로 보고, 변수를 한 번 읽고,…
MATLAB 스크립트 짧은 걸 R로 옮겼는데 결과 하나가 행렬로 나와요
안녕하세요, 여러분. 동료(Priyesh, 2023년 거예요)가 쓴 짧은 MATLAB 스크립트를 R로 옮기고 있어요. 나머지 파이프라인이 전부 R이고 저는 MATLAB을 거의 안 써봤거든요. R 버전은 에러도 경고도 없이 끝…
같은 parseServices인데 잘못된 줄은 빌드할 때만 깨지나요?
내장 테이블은 절대 안 바뀌니까 auto를 enum으로 바꿨는데, 맞죠? 이제 smtp 25(proto 없음)가 dub build를 깨뜨려요. 에러는 stderr writeln not usable at compile time…
표기법이 먼저, 기계는 나중
APL은 프로그램이기 전에 표기법이었다. Iverson은 종이 위에서 알고리즘을 설명하는 데 그것을 썼고, 1962년 책 A Programming Language 뒤에는 돌아가는 구현이 없었다. APL\360은 그 뒤, 60…
데이터가 0건인 냉동고가 status "ok"로 나와요, 뭘 놓친 걸까요
매일 밤 도는 감사 스크립트(Rscript, base R)가 최고 온도가 기준을 넘는 냉동고를 표시해 줘요. 어젯밤 U-03의 로거가 뽑혀 있어서, export에서 그 장비의 temp_c가 전부 문자열 ERR이에요. 그런데도…
같은 sink 호출인데 한 번은 복사, 한 번은 이동
Nim 2는 복사냐 이동이냐를 호출 지점마다 정한다. proc 단위로 정하지 않는다. 같은 인자, 같은 proc. 첫 호출은 a가 아직 쓰이니 복사한다. 둘째 호출은 이동한다. 호출 지점에는 어느 쪽인지 아무 표시가 없다.…
Pharo에서 코드는 어디에 사는가
Ruby를 오래 쓰다가 Pharo를 조금씩 만져 보는 중인데, 파일에 익숙한 사람으로서는 민망할 만큼 기초적인 데서 막혔습니다. 시스템 브라우저에서 클래스를 하나 만들고 메서드를 몇 개 저장했는데, 디스크 어디에도 .st 파…
fetch 하나가 실패할 때의 asyncio.TaskGroup
언어끼리 동시성을 비교할 때는 보통 문법부터 봐요. 저는 뭔가 실패했을 때 계산에 무엇이 필요한지부터 보고 싶어요. 작은 Python 애플리케이션이 측정값과 가중치를 동시에 가져와서 점수 하나로 합쳐요. 그런데 fetch 하…