자체 코드, 테스트, 무한 뺑뺑이를 지시하는에, Continue확장은 파일의 수정 (특히 코드 바꿔넣기)에 계속 오류가 생기더군요.
결국 Cline로 왔습니다.
과제는 별도 마지막에 쓰겠습니다.
M4 Mac Mini 32G에서 테스트 해보는데...Qwen3.6 A3B는 오래 걸리고 최후까지 테스트 6건중 1건은 인간이 지시를 다시하고 설명해줘야 잡더군요.
반면 클로드 확장 붙히니 소넷만 붙혀도 한방에 코드에 테스트까지 통과... 코딩 테스트 루프가 의미가 없었습니다. 한방에 해결해 버리니...
지금은 Qwen3.8 27B 물려서 돌려보는 중인데... 아예 맘먹고 사고 켜놨더니 무지막지하게 느리군요. 클로드보다 한 60~100배 느린거 같습니다.
그나마 정답은 스스로 찾아내나 궁금해서 걸어놨네요. 사고 과정 들어가니 컨텍스트 크기 무지하게 키워야 하는군요...
클로드가 간단히 해결한 문제는 이하 입니다. 본체랑 테스트만으로 구성된 파일이고, 그래도 생각할게 많은 어려운 코드 예 로 하나 찍어 받았습니다.
비동기 작업은 정말 머리에 안들어와서... 어쨋거나 클로드에게는 예제 설명 들으면서 되려 제가 학습하고 있네요. AI가 좋은점이 내가 알 때까지 시험해보고 물어볼 수 있어서 공부하기 좋은 면이 있는 것 같습니다. 뒷통수 까일 일도 없구 말이죠...
어쨋든간 크롤링에서부터 하드웨어에 부하가 덜 걸리는 동시실행까지 매우 자원 효율적인 운용을 위한 기본적이고 중요하고 어려운 코딩이라 합니다. 20년전에 어떤 무식한 프로젝트에 참가해서 매우 자원 비효율하게 연산을 돌렸던게 생각 나는데.. 그 때 이게 있었으면 참 좋았겠다 싶습니다. 하긴... node js도 그땐 아직 별로 못들어봤던 시대였었던거 같군요. ... 있기는 했는지...
익숙한게 그거라 LLM 로더는 LM Studio구요... 별로 로컬에서 다 해야겠단 의지는 안생기네요. 맥 스튜디오나 이 이상의 기기 구매도 흥미를 잃었습다. 하루종일 5분마다 화상 분석 같은건 걍... 구글 API를 호출해도 무료티어로 여유롭게 해준다 하니 말입니다.
TypeScript로 비동기 작업 큐 클래스 `TaskQueue`를 구현해줘. 외부 라이브러리 없이 Node 20 이상, 현 실행 단말에 설치된 Node 버전을 활용해 진행할 것.
요구사항:
사고 과정등은 가능하면 한글로 보여줘
1. 생성자 옵션: `{ concurrency: number; maxRetries: number; baseDelayMs: number }`
2. `add<T>(fn: (signal: AbortSignal) => Promise<T>, opts?: { priority?: number }): Promise<T>`
- priority가 높은 작업이 먼저 실행됨 (기본값 0)
- concurrency 개수만큼만 동시에 실행
3. 작업이 실패하면 maxRetries까지 재시도. 대기 시간은 baseDelayMs × 2^(시도횟수-1) 지수 백오프
4. `cancelAll(): void` — 대기 중인 작업은 즉시 거부(reject), 실행 중인 작업에는 AbortSignal로 중단 신호 전달
5. `onIdle(): Promise<void>` — 모든 작업이 끝나면 resolve
6. 에러 타입: 재시도 소진 시 `RetryExhaustedError` (마지막 에러를 cause로 포함), 취소 시 `TaskCancelledError`
추가로 Node 내장 `node:test`와 `node:assert`만 써서 다음을 검증하는 테스트를 작성해줘:
- concurrency 2일 때 동시 실행이 2를 넘지 않는지
- priority 순서대로 실행되는지
- 2번 실패 후 3번째 성공하는 작업이 결국 성공하는지
- cancelAll 후 대기 작업이 TaskCancelledError로 거부되는지
첫번째 코드와 테스트가 만들어져서 테스트를 하기전,
모든 테스트가 성공한 시점에서 더 진행하기 전,
각각 한번씩 git commit으로 백업해둘 것