본문 바로가기
C.W.K.
Stream
Lesson 04 of 04 · published

이제 네 걸 쳐

~11 min · build-your-own, conceptual-opensourcing, closer, where-to-next

Level 0식은 부싯돌
0 XP0/34 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"저장소 받으러 온 게 아니잖아. 네 불꽃을 낼 만큼의 모양을 가지러 온 거지."

이제 모양은 손에 있어

여기까지 왔으면 조각이 다 있어. Carbon 으로 시스템 전역 단축키를 손에 넣는 법. 접근성으로 아무 앱에서나 긁어놓은 글을 읽는 법, 그리고 안 내주는 앱을 찔러보는 법. 좁은 이음새 너머로 머리를 빌리는 법. 붙여넣기 전에 자리를 확인하고, 안 되면 클립보드로 내려주는 법. 넓은 권한을 좁은 손으로 쥐는 법. 이건 Flint 를 설명한 거라기보다 어떤 종류의 도구를 만드는 연장통이야. 빌린 머리 위에 얹힌, 시스템 어디서나 단축키 한 번으로 도는 몸짓. 모양은 이제 손에 있고, 남은 건 조립이야.

제일 작게 만든 한 번의 침

정직하게 제일 작은 버전은 작은 클래스 하나에 들어가. 핫키 센터가 조합을 등록해. 그 조합이 자리를 붙잡고(보안 칸은 거부하고), 프롬프트를 만들고, 머리를 빌리고, 확인하고 넣는 길로 결과를 놓아. 그게 돌아가는 침 한 번이야. Flint 의 나머지는 전부 이 핵심 둘레를 다듬은 거고. 팔레트, 매크로마다 달린 vault 다이얼, 불투명한 자리 다시 확인하기, 원격으로 붙는 길. 제일 작은 데서 시작해서 깨끗한 교체 하나랑 깨끗한 되돌리기 하나를 얻고, 진짜 필요한 부분만 키워가면 돼.

제일 작게 만든 한 번의 침
---------------------
1. 조합 하나 등록                (Carbon: Track 2)
2. 긁어놓은 글이랑 자리 붙잡기     (AX / 복사 찔러보기: Track 3)
     보안 칸이면 거부              (Track 7)
3. {input} 채워서 머리 빌리기      (apply-free: Track 4/5)
4. 자리 확인하고 넣기              (확인하고 넣기: Track 6)
     아니면 클립보드로

나머지는 전부 이 네 걸음 둘레를 다듬는 일이다.

머리는 아무거나 빌려도 돼

Flint 는 이 집안 머리를 빌리지만 이음새는 일부러 아무거나 끼울 수 있게 만들어뒀어. 프롬프트를 받아 바뀐 글을 돌려주는 거면 뭐든 그 applyFree 자리에 앉을 수 있거든. 내 컴퓨터의 로컬 모델이든, 내가 세운 작은 서버든, 내가 갖고 있고 믿는 무엇이든. 교훈은 '이 머리를 써라' 가 아니라 '머리를 갈아끼울 수 있게 이음새를 좁게 둬라' 야. 몸짓을 한 번 제대로 만들어두면, 그 뒤로 똑똑한 쪽은 글을 붙잡고 놓는 부분을 안 건드리고도 언제든 다시 고를 수 있는 결정이 돼.

내가 만든 작은 도구가 남이 만든 큰 걸 설정해 쓰는 것보다 값져. 직접 침 하나를 만드는 이유가 글 바꿔주는 제품이 없어서는 아니야. 많지. 길을 처음부터 끝까지 쥐면 이해랑 신뢰랑 바꿀 자유가 남는데, 설정해서 쓰는 제품은 그중 아무것도 안 주기 때문이야. 작은 걸 만들고, 길 전체를 쥐고, 교훈을 챙겨. 자주 하는 일이라면 그 맞바꿈이 편한 걸 빌리는 쪽을 매번 이겨.
여기서 이 집안이 가리키는 다음이 보여. Flint 는 치는 쪽이고, 형제들은 같은 빌린 머리 위에 얹힌 다른 몸짓이야. 말한 걸 그대로 넣어주는 보이스 쪽, 글 쓰는 자리 안에서 키 하나 깊이에 사는 고쳐쓰기 쪽. 하나같이 같은 교훈을 다른 표면에 겨눈 거지. 몸짓은 내가 쥐고, 똑똑한 건 빌리고, 움직이기 전에 확인하고. 넌 이미 머릿속에 이 침을 지어놨어. 이제 네 걸 쳐. 부싯돌은 애초에 코드가 아니라 어디를 칠지 아는 거였으니까.

Code

퀘스트 전체를 제일 작은 침 하나로 조립하면·swift
final class MiniFlint {
    let hotkeys = HotkeyCenter()          // Track 2
    let brain: BrainClient                // Track 4: 빌린 것, 갈아끼울 수 있음

    func bind(keyCode: UInt32, mods: UInt32, template: String) {
        hotkeys.register(id: 1, keyCode: keyCode, carbonModifiers: mods) {
            Task { await self.strike(template: template) }
        }
    }

    func strike(template: String) async {
        guard AXIsProcessTrusted() else { return }         // Track 7: 값을 지킨다
        guard let target = snapshot(), !target.isSecure    // Track 3 + 7
        else { return }
        let prompt = template.replacingOccurrences(         // Track 5
            of: "{input}", with: target.selection ?? "")
        let result = await brain.applyFree(prompt: prompt, // Track 4
                                           vault: .bypassVault)
        place(result, into: target)                        // Track 6: 확인하고
    }                                                      //   넣거나 클립보드로
}
// 네 트랙의 생각이 작은 클래스 하나로. 그게 네 불꽃이야. 이제 키워.

External links

Exercise

실제로 쓸 몸짓 하나를 골라서 제일 작은 버전을 그려봐. 꼭 글일 필요는 없어. 네 걸음에 이름을 붙여봐. 방아쇠 손에 넣기, 입력 붙잡기, 바꾸는 일 빌리거나 직접 하기, 결과를 안전하게 놓기. 그리고 걸음마다 프레임워크가 대신 안 답해줄 어려운 질문 하나씩을 적어. 마지막으로, 그 최소한이 돌아가고 나면 제일 먼저 뭘 더 붙일지도 정해봐.
Hint
네 걸음이 이 퀘스트에 그대로 겹쳐. 방아쇠(조합이든 메뉴든 어떤 신호든), 입력을 안전하게 붙잡기(그리고 손대면 안 되는 건 거부하기), 바꾸는 일(좁은 이음새 너머로 빌리거나 직접 계산하거나), 확인하고 놓기와 안 되면 물러날 자리. 어려운 질문은 경계, 거부, 확인, 절제야. 이 퀘스트가 글을 놓고 답한 바로 그 넷이고. 제일 먼저 붙일 건 Flint 의 추가 장치(팔레트, 항목마다 손잡이, 불투명한 자리 다루기) 중 네 몸짓이 제일 아쉬워하는 거고.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.