주니어 스칼라 개발자를 위한 실험적 기능 해설 ZIO Scope, Rust Lifetime과의 비교를 곁들여
소프트웨어 설계 문서 — 아키텍처 문서, RFC, 기능 명세서, API 설계서 — 는 엔지니어링 팀이 생산하는 산출물 중 가장 밀도가 높습니다. 이러한 문서는 학술 논문, 법률 계약서, 안전 명세서와 구조적 특성을 공유합니다. 계층적 의존성, 암묵적 가정, 오해로 인한 높은 비용, 그리고 한 번 읽고 여러 번 실행하는 경향이 그것입니다.
구조적 읽기 방법론은 이러한 특성을 다루기 위해 수십 년간 발전해 왔습니다. SQ3R은 1940년대 군사 훈련을 위해 개발되었고, Fagan Inspection은 1976년 IBM에서 도입되었으며, Perspective-Based Reading은 1990년대 NASA 연구에서 탄생했습니다. 각 방법론은 복잡한 문서에서 의미를 추출하고, 빈틈을 찾아내며, 실행 가능한 판단을 도출하는 체계를 담고 있습니다.
에이전틱 LLM(대규모 언어 모델)은 이제 이러한 설계 문서를 리뷰하는 페어 프로그래밍 파트너로 활용되고 있습니다. 그러나 "이 설계를 리뷰해 줘"나 "어떻게 생각해?"같은 비구조적 프롬프팅은 피상적이고, 아첨적(sycophantic)이거나, 모드가 혼합된 응답을 유발합니다. LLM은 저자의 프레이밍에 동의하고, 그럴듯하지만 일반적인 관찰을 생성하며, 리뷰를 진정으로 가치 있게 만드는 구조적이거나 적대적인 통찰을 도출하지 못합니다.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Mill completion for fish shell | |
| # Ported from Mill's bash/zsh completion script | |
| function __mill_completions | |
| # Get current command line tokens | |
| set -l tokens (commandline -opc) | |
| set -l position (count $tokens) | |
| # Get completions from mill and strip descriptions | |
| if test -x ./mill |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| //> using scala "3.2.2" | |
| //> using dep "dev.zio::zio:2.0.10" | |
| import zio.* | |
| object ResourceAcquisitionTimeoutExample extends ZIOAppDefault { | |
| val run = | |
| ZIO.debug("Running...") *> | |
| ZIO.acquireRelease( | |
| ZIO.debug("Acquired") |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| //> using scala "3.2.2" | |
| //> using dep "dev.zio::zio:2.0.9" | |
| //> using dep "dev.zio::zio-test:2.0.9" | |
| import zio.* | |
| import zio.stream.* | |
| import zio.test.* | |
| import java.time.temporal.ChronoUnit | |
| object ThrottleShapeSpec extends ZIOSpecDefault { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| //> using scala "3.2.1" | |
| //> using lib "dev.zio::zio:2.0.3" | |
| import zio.* | |
| case class AppConfig(root: String) | |
| object AppConfig: | |
| val layer: ZLayer[Any, Nothing, AppConfig] = |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { createLogger } from 'vite'; | |
| export function monkeyPatchVegaScenegraph() { | |
| const name = 'monkey-patch-vega-scenegraph'; | |
| const logger = createLogger('info', { prefix: `[${name}]` }); | |
| const logOptions = {timestamp: true}; | |
| const replaceCriteria = /touchmove\(evt\) \{\s*this\.fire/m; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env bash | |
| # see https://forum.obsidian.md/t/gnome-desktop-installer/499 | |
| set -euo pipefail | |
| icon_url="https://cdn.discordapp.com/icons/686053708261228577/1361e62fed2fee55c7885103c864e2a8.png" | |
| #dl_url=${1:-} | |
| dl_url=$( curl -s https://api.github.com/repos/obsidianmd/obsidian-releases/releases/latest \ | |
| | grep "browser_download_url.*AppImage" | tail -n 1 | cut -d '"' -f 4 ) |
I hereby claim:
- I am guersam on github.
- I am guersam (https://keybase.io/guersam) on keybase.
- I have a public key ASCpi4lE8RcuK-hUUr5MFavzikvDnGPrPMjFfpumrW855go
To claim this, I am signing this object:
NewerOlder