오! 좋은 아이디어 인것 같습니다. 조금 찾아보니 git-branchless나 jj-vcs로 활용해서 AGENTS.md나 스킬에 정의해서시도해봐도 괜찮을듯한 느낌이네요
bgl gwyng
@bgl@hackers.pub · 95 following · 121 followers
GitHub
- @bglgwyng
@kanghyojun강효준 그렇군요. 저런 기능을 굳이 만들필요 없이 AGENTS.md에다가 써서 클로드한테 그렇게 쓰라고 하면 되네요. 요즘 이럴때마다 바보되는 느낌입니다ㅋㅋ
클로드 코드 쓰고있으니 더 나은 VCS에 대한 욕심이 커진다. 나는 클로드가 브랜치를 더 자주 쪼개서, 원하는 시점으로의 롤백이 더 편해졌으면 좋겠다.
하나 생각나는 아이디어는 브랜치 명을 hierachial하게 만들어서 가령 fix-bug-1/refactor-class-foo/fix-function-bar 이런식으로, 무슨 일하는지의 맥락을 브랜치명에 나타내는 것이다. 그리고 a/b 브랜치는 a 브랜치의 자식이어야 한다는 제약도 강제한다.
굉장히 오랜만에 들어와서 쓰는 근황입니다.
- TIS-100의 모든 레벨을 클리어했습니다. 다음 목표는 아마 Opus Magnum 아니면 A=B가 될 것 같습니다.
- 올해 여름부터 지금까지 7문제를 백준에 출제했습니다. 여기의 맨 아래에서 보실 수 있습니다. 개인적으로 가장 재밌었던 문제는 SWAP-C Sort인데 그만큼 어렵습니다.
- 웹 기반으로 뭔가 만들 게 생겨서 프레임워크를 알아보다가 Solid를 써보기로 결정했습니다. 웹 UI는 Flowbite, 그래픽 요소는 Konva를 쓰게 될 것 같습니다.
- 그런데 이쪽을 첫삽을 뜨기도 전에 갑자기 굉장히 어려운 퍼즐틱한 문제 하나의 풀이가 완성되어서(....) 논문(?!)을 하나 쓰기 시작했습니다. 이런 거 받아주는 저널 어디 없을까요(????)
어쩌다보니 Claude skills같은걸 재발명하고 있는듯하다;;
급 반말하는 gpt
프롬프트는 저기 보이는 것이 다 입니다. 다른 컨텍스트도 없고...
@perlmint 얘 진짜 대화가 길어지고 좀 만만해진다싶으면 바로 반모들어가는데, 전 농담아니라 진짜 어떤 징후같습니다. 영어쓸때도 비슷한 행동이 있는지(무례해진다거나) 모르겠어요.
저게 38만 킬로미터 떨어진 허공에 떠 있는 물체고, 1억 5천만 킬로미터 떨어진 광원의 빛을 반사해서 내 눈에 보인다는 게 가끔 정말 생경하게 다가올 때가 있다.
RE: https://bsky.app/profile/did:plc:4sujqnbd47ey26qcvajqoxa2/post/3m4ueopbvzw23
@bglbgl gwyng 맞아요 compiled to c/js 언어가 목표에요
@ranolp 멋집니다
새로운 서비스를 실험하고 있는데요.
너무 연속으로 컨텐츠를 봐서 피로해지는 서비스가 아닌, 어쩌다 접속해서 멍 때릴 수 있는 서비스를 고민하며 기획을 했습니다. 가끔 버스 창밖을 바라보며 멍때리는 것처럼요. 멍때리다 창밖의 간판들이 가끔 눈에 들어 오듯, 글이나 낙서가 눈에 띄면 어떨까 싶어서, 초기 인연이 있는 분들에게 부탁해서 다양한 글을 좀 채워 넣으려 했습니다. (AI로 목업을 채워 넣으면 맛이 없을 것 같아서, 실제 다양한 사람들의 글을 원했습니다.) 이게 매우 어려운 벽이다를 실감하고 있습니다.
- SNS 성격의 서비스는 이용하기 싫다.
- 이미 이용 중인 SNS가 여러 개라, 또 추가하기 싫다.
- 로그인 해서 보니, 그다지 나한테 맞지 않는다.
- 몇 번 로그인해서 봐도 흥미가 생기지 않는다.
- 가끔 접속해서 보는 소소한 재미가 있을지도 모르겠다.
- ...
0번은 어차피 제외고, 초기 지인 분들은 적어도 3번까지는 가 주길 기대했는데, 1번조차 넘질 못하고 있습니다. 쓸만한 서비스 혹은, 기획을 조정하면서 고민해 볼 가치가 있는지 보기 위해선, 그래도 1번은 넘어 가야 뭘 할텐데 말입니다. 부탁을 받은 지인들 조차 1번을 넘기 어려운데, SNS 서비스를 홍보한다는 건 꽤 험난한 길이겠습니다.
처음 제가 해커스펍의 1번 문턱을 넘었던 이유를 생각해보면, 저는 사람이었던 것 같습니다. 같은 직군에 있는 사람들이 모여 있어, 대화가 잘 통할 것 같아서 선뜻 들어 온 게 아닐까 싶습니다. 몇 달을 써 보면서 결론은, 해커스펍은 분명 자기만의 영역이 있는 서비스란 생각이 듭니다. 좋다는 생각을 가지기 까지는 좀 써봐야 아는 건데, 해커스펍이 꽤 어려운 걸 돌파했구나란 생각이 듭니다.
혹시 ikariam이라는 게임을 즐겨 본 분 계신가요? 그거, 은근 재밌게 했는데, 주변에서 제가 하는 걸 보더니 "어떻게 그런 게 재밌냐"고 묻는 사람들이 대부분이긴 했습니다. 오랜만에 찾아 보니 아직도 ikariam은 잘 살아 있네요. 멍때림이 싫지 않은 사람들이 분명 있긴 있을텐데, 어떻게 그 분들을 찾아 1번을 넘어가게 할까 고민이네요.
yearit.com
여행 기분내며, 이동하는 동안 멍도 때리고, 여기 저기 낙서하는 서비스입니다.
여러 사정으로 하스켈로 개발하진 못했는데, 언젠가 여건이 되면 서버들을 하스켈로 포팅하고 싶습니다.
#이어잇 #yearit #여행 #낙서
YearIt - Travel the world, doo...
평가 규칙이 점점 이상해지고 있다.
@ranolp 새로운 언어를 만드시는건가요?
요즘 심심할때 굴리고 있는 VCS에 대한 나이브한 아이디어가 있는데
-
각 커밋에 대해 메타데이터를 줄수 있어야 한다
레포 내의
metadata.json같은 파일을 인식해도 되고, 아니면Commit -> Metadata를 해주는 프로그램을 hook으로 등록하게 해줘도 된다. 이를 통해 package.json, cargol.toml 같은 파일을 읽어서 거기에 버전 의존성을 커밋의 메타데이터로 추출한다. -
메타데이터에 대해 인덱싱을 한다
가령
version이라는 메타데이터가 있을때2 <= version < 3를 만족하는 커밋의 범위를 인덱스를 활용해 빠르게 알아낼수 있게 한다. -
메타데이터로 커밋을 찾는 표현식을 제공한다
max(2 <= version < 3 and has(fix-bug-foo) and has(add-feature-bar)이런식으로 하면, 구간 내의 버전에서 foo 버그가 해결되고 bar 피쳐가 추가된 커밋중 가장 최신의 커밋을 구한다. git에서는fix-bug-foo,add-feature-bar각각의 브랜치로는 쉽게 갈수 있지만, 해당 브랜치가 main에 머지되기 전까지 그 브랜치 밖을 벗어나 작업하기가 까다로워진다. -
이런 레포들을 모아서 모노레포를 모은다음, 메타데이터에 상호 의존성을 기술한다
그리고 dependency resolve를 해서(메타데이터 검색의 일종일 뿐임) 조건을 만족하는 모노레포 스냅샷을 구한다. 이제 우린 패키지 매니저를 공짜로 얻었다.
이 아이디어는, 현재 패키지 매니저와 VCS가 분리되어있는데 사실 그래선 안된다는 생각에서 나온것이다. 기존의 비슷한 아이디어를 찾아봤는데 gitman 이런게 있더라. 근데 내가 원하는만큼 일반적이진 못하다.
난 학생때부터 컴퓨터 좋아하다보니 자연스럽게 프로그래머가 되고 싶어하는 중고딩들 모이는 커뮤니티 활동을 했었음.
그런데 내가 활동하던 곳은 가정환경이 불우한 애들 위주로 모여있더라고... 집안에 투병자 있어서 빚이 2억이던 우리집이 상류층으로 분류될 정도였음.
그러다가 언제 한번 모여서 학교 공부에 대해 얘기한 적이 있음.
냉정하게 우리 가정환경 따져봤을 때 수능봐서 대학갈 사람들은 아니다. 그래도 학교가 아주 의미없는 곳은 아니니 그 안에서 챙길건 챙겨보자. 했음.
굳이 가져갈걸 찾는다면, 국어는 형태소와 품사 정도만 구분할 줄 알면 되고(NLP), 수학은 행렬이랑 기하와 벡터 기초 정도만(3D, 공간), 과학은 물리2만(이상하게 도움되는 잡다한 이론들) 대략 뭔소리를 하는지 보면된다. 그럼 어디가서 돈버는데는 문제없을거. 라는 결론 도출하고 그거 공부만 하기로 했음.
결론은 여기 있던 애들 대학이랑 연은 없어도 전부 취업은 원하는 분야로 20대 초반에 다했음.
온 세상이 toml이다
@joonnotnotJoon 오직 Tom에게만 obvious하다지요..
챗봇 UI를 만들고 있는데, AI한테 툴 사용을 따로 주지말고, 채팅 자체를 어떤 REPL안에(Python이라던가) 임베딩 시키는게 나은 디자인인거 같다. 근데 이거 먼가 모나드트랜스포머스러운데..
3090은 진짜 젊어서는 비트코인 캐고 늙어서는 llm 돌리는 불쌍한 세대네
@bglbgl gwyng 헉… 걱정이 많으셨겠어요. 😭 그래도 잘 끝났다니 너무 잘 되었네요…!
강아지 뇌삽관 수술이 잘 끝난거 같다. 다시 코딩도 하고 일상으로 돌아가야지..
최근 몇 달간 개발을 하는 것에 대한 현타가 심하게 왔었는데, 프로그래밍을 처음 시작했던 중학생 시절부터 남긴 흔적들을 되짚어 보면서 내가 진짜 뭘 하고 싶었던건지 되짚어봤고, 이제 다시 회복이 되가는 것 같음.
알고계십니까? 고대의 언어인 줄 알았던 Smalltalk 친척 Self는 놀랍게도 최근까지도 업데이트가 되고 있습니다. https://selflanguage.org/
JavaScript의 .prototype 개념에도 영향을 주었다고 알려진 Self가 어떤 언어인지 궁금하시다면 Series about Self(lobste.rs)를 읽어보세요. 프로그래밍 언어에 대한 여러분의 시야가 넓어지는 데에 도움이 될 겁니다.
한국어 번역:
- 발표자료 대본 다이어트
- 코스모슬라이드 다듬는 작업
- 브라우저 스터디 준비
도대체가 한달만에 열어본 프로젝트의 포매터가 고장나 있는일은 왜 생기는 것일까..
진짜 이름만 들어도 아는 프로젝트들 사이에 있는 Fedify...
We invest globally in the open software components that underpin Germany's and Europe's competitiveness and ability to innovate. Improving the security, stability, and reusability of open software components directly enhances the productivity, competitive edge, and capacity for innovation of startups and small and medium-sized businesses. We’re excited to be working with these maintainers and FOSS communities, and to support the software that forms the foundation of the infrastructure of the 21st century.
Here are some of the projects the Sovereign Tech Fund has recently commissioned work on:
Scala, SDCC, Let's Encrypt, Servo, chatmail, Drupal, Fedify, openprinting, PHP, Apache Arrow, Open SSL, R Project, Open Web Docs, conda, systemd, and phpseclib
@hongminhee洪 民憙 (Hong Minhee) 보니까 s3 클라이언트도 내장이군요ㅋㅋ 아예 외부 패키지의 필요성을 제거해 패키지 매니저까지 없애겠다는 야심이라면 이해해보려 노력하겠습니다..
emacs 개발자들은 LLM 시대에 빛을볼 중요한 선견지명을 가지고 있었는데
- 텍스트 에디터는 범용 인터페이스다(반 OS가 되어버린 emacs)
- RAG할 지식데이터베이스를 만들고 관리할수 있어야한다(org-mode).
근데 이걸 알고도 한푼도 못벌었다ㅋㅋㅋ 열매는 cursor와 notion에게로...
강아지가 아파서 다른일에 집중하기가 힘들다ㅠㅠ 이제 막 10살됐는데 점점 굼떠지는건 괜찮다만 아프진 않았으면 좋겠다..
테슬라 팬보이들이 좀 밉상이긴 하지만, 그래도 기술에 대한 이해도가 높은 편일거라 생각했는데. 얼마전에 어디 게시글에서 FSD에 카메라 외에 라이다 등의 추가 센서를 쓰면, 여러 센서 입력 중에 뭘 신뢰해야하는지 결정해야하는 문제가 추가로 생겨서 안좋다... 라는 얘기를 보았다(그리고 다른 테슬라 팬보이들이 동조함).
NameSilo API 옛날부터 생각만 하다가 방금 처음 써 봤는데, 생각보다 너무 쉽고 간단해서 깜짝 놀랐다.
문제가 심각하다.
아니, 그냥 API 키 발급 누르면 즉시 나오고, 그걸로 내 계정의 모든 것을 다 할 수 있으며, 심지어 연장이나 신규 구입 등 카드 결제 일으키는 행위도 할 수 있다고. 있는 거라고는 API 키를 읽기 전용으로 하는 거랑, "Block Restorations" 뿐이다. 도메인 네임을 제때 연장 못해서 소유권 잃은 경우, 좀 더 큰 돈을 내고 소유권을 회복할 수 있는데 이걸 restoration 이라고 한다. 이건 돈이 많이 들고 환불도 어려운 행위이기 때문에, 이것만 API 키로 못하도록 설정하게 해 준다는 것이다.
그러니까 이거 말고는 권한 관리도 없고, 여러 개의 API 키 중에서 하나만 폐지(revoke)하는 기능도 없고, 모든 API 키를 폐지하는 기능도 안 보이고, 이 API 키를 최근에 사용한 IP 주소는 어디냐 같은 기록도 아무 데도 안 보이고, 하다못해 이 API 키로 행할 수 있는 결제액의 상한 같은 것도 설정할 수 없고, 아무것도 없어!
나는 나 자신을 믿지 않는다. 나는 반드시 사고를 칠 것이다. 엔지니어라면 당연히 그렇게 가정해야 한다! 더구나 이 API 키는 내 도메인 네임의 소유권을 다 상실시킬 수도 있는 물건...? 내가 뭔가 잘못 이해하고 있는 건가? 멀쩡한 관리 페이지가 따로 있는데 네임사일로가 꽁꽁 숨겨 놔서 못 찾고 있는 건가?
거의 10년 넘게 쓰던 서비스인데 진지하게 탈출 고민이 생겼다.
여러분은 서비스가 "쓰기 쉽다는 이유로" 탈출을 고려하는 장면을 보고 계십니다. 이것이 2025년이다.
I'll write a detailed blog post soon, but I'm thrilled to share that Fedify has received investment from the Sovereign Tech Fund, which means I'll be able to focus exclusively on the Fedify project for the next year or so.
早晩間 블로그 글로 仔細히 풀겠지만, Fedify 프로젝트가 STF로부터 投資를 받게 되어, 제가 앞으로 約 一年 동안 Fedify 프로젝트에만 專念할 수 있게 되었습니다.
해외리모트잡 페이가 국내에 비해 너무 좋길래, 주변에 어떻게 이럴수 있냐고 했더니 다들 너무 당연하게 국내 페이가 싸서라고 한다. 그리고 해외에서 한국 개발자 선호하는것도 그냥 단순히 싸고 가성비 좋아서라고 한다.
세계 10위권의 경제대국의 국민으로써 느낌이 좀 이상하다. 그러니까 나는 K-인도 개발자였구나..
이번 연휴 때 서울에서 모각작, 모각코 하실 파티를 만들어보려고 페북메신저 채널을 만들었습니다.! 파이브스팟이나 원루프사당을 쓸 것 같습니다.
https://m.me/cm/AbbiwdoizU4gxbqc/?send_source=cm:copy_invite_link
OpenAI의 Sora가 기어이 나로 하여금 인간이 수제로 만든 개똥같은 숏폼 비디오들을 지지하게 만드는구나..
아직 Bash랑 zsh만 지원하긴 하지만… Optique에 셸 완성 기능을 얼추 구현한 것 같다. (아직 정식 릴리스는 안 함.)
SC2TS: TypeScript로 포팅한 스타크래프트 2 리플레이 파서
SC2TS를 공개했습니다. 처음에는 Claude Code를 공부하기 위한 연습 프로젝트로 시작했던 작업이었습니다.
왜 TypeScript로 포팅했을까요?
여러 이유가 있었지만, 크게 다섯 가지 이유로 정리할 수 있습니다.
첫째, 충분히 흥미로운 프로젝트여야 했습니다. 끝까지 완성할 수 있는 동기부여가 필요했는데, 이 프로젝트는 그럴 만한 가치가 있다고 판단했습니다.
둘째, 이미 관련 경험이 있었습니다. 예전에 Blizzard의 공식 라이브러리인 s2protocol에 Pull Request를 보내본 적이 있어서, 프로젝트의 구조와 동작 방식에 어느 정도 익숙했습니다.
셋째, 선례가 있었습니다. 이미 Go 언어로 포팅된 버전이 존재했기 때문에, TypeScript로도 충분히 구현 가능하다는 확신이 있었습니다.
넷째, 적절한 난이도였습니다. 내부 구현을 세세하게 다 알고 있지는 않았지만, 충분히 복잡하면서도 AI의 도움을 받아 해결할 수 있는 수준이라고 판단했습니다.
다섯째, 그리고 가장 중요한 이유는 스타크래프트 2 관련 분석 사이트를 AI 기능과 함께 만들어보고 싶었는데, 기존 s2protocol이 더 이상 공식 지원을 받지 못하게 되었기 때문입니다. 이 문제를 해결하기 위해서는 직접 TypeScript 버전을 만드는 것이 최선의 선택이었습니다.
사실 이러나 저러나.. 중간에 잠깐 휴가도 있었어서 생각보다는 오래걸렸네요.
TypeScript와 React에 File-based App 서버를 부착하여 단순하지만 완결성있는 풀 스택 개발 환경을 구축할 수 있습니다. 여기에 AGENTS.md 파일이나 mcp.json을 추가한다면 풀 스택 프로젝트에 바이브코딩까지 얹을 수 있겠습니다.
https://forum.dotnetdev.kr/t/typescript-react-file-based-app-c-api/13812
bgl gwyng shared the below article:
PyCon JP 2025 후기
Jaeyeol Lee @kodingwarrior@hackers.pub
이 글은 PyCon JP 2025에 참가한 한국인 개발자의 생생한 후기를 담고 있습니다. 저자는 PyCon KR에 꾸준히 참여해왔지만, 해외 컨퍼런스는 처음이라 설렘과 기대를 안고 일본으로 향했습니다. 히로시마에서 열린 이번 행사에서 저자는 다양한 세션에 참여하고, Findy와 Python Asia Association에서 주최한 DrinkUp 파티, 그리고 PKSHA Technology의 파티에 참여하며 여러 개발자들과 교류했습니다. 특히 FastAPI 개발자인 tiangolo와의 만남, Neovim을 사용하는 데이터 엔지니어와의 공감대 형성, 그리고 Emacs 사용자에게서 느낀 위기감 등 재미있는 에피소드들이 인상적입니다. "Innovation is a side effect of solving problem"이라는 tiangolo의 어록은 깊은 인상을 남겼습니다. 이 글은 PyCon JP가 외국인을 위한 배려가 돋보이는 행사였으며, 다양한 주제의 세션과 네트워킹 기회가 많았음을 강조합니다. 다음 PyCon JP에 발표자로 참여하고 싶다는 의지를 밝히며, 한국 커뮤니티도 외국인이 즐길 수 있는 컨텐츠가 늘어나기를 바라는 마음을 전합니다.
Read more →구트현엑은.. 가끔만 들어가도 싸우는 사람이 너무 많이 보여서 피곤함. 근데 싸우는 이유가 다 하찮음. 아이돌이 아니면 아이돌팬이 못생겼다는 이유로 싸우고. 향수 열일곱번 뿌렸다고 싸우고. 스카에서 공부안하고 다꾸했다고 싸우고. 엄마아빠에게 사랑받았다는 이유로 싸우고. 인터넷 세상이 다 그런거고 유희라지만. 가장 큰 문제는 타임라인이 이상해서 내가 팔로우를 잘 가꾼다고 해서 저런 내용을 안 볼 수 있는 환경이 아니라는 것임...
요즘 리모트 서버에서 코딩을 하고 있는데, 클로드 코드 돌려두고 자꾸 멍때리게 되어서 디스코드 알람을 만들었다
타입시스템이 충분히 좋은 언어는, 특정 함수(타입을 만족하는 프로젝트 내의 아무 함수)를 CLI 바이너리로 빌드하는 기능을 one-liner로 지원할 수 있을 것이고, 그건 아마 지원할만한 기능일 것이다.
Context: Cabal의 어떤 내부 함수를 끄집어내서 CLI 툴로 만드는데 황금같이 귀중한 내 주말을 써야했다.
주로 하스켈만 하는 분께 좀 유명한 JS 라이브러리의 깃헙 링크를 공유드렸는데, 스타가 10k인걸 보고는 엄청나게 훌륭한 프로젝트인가보다... 하시길래 / 20 정도로 보정을 하라고 했다.
브랜치명은 해결하려는 문제가 아닌 시도하는 방법을 묘사해야한다.
Claude와 함께 react-form-mozard 문서를 만들었다. 2년전에 만들었는데 귀찮아서 문서 안쓰고 버티고 있었다.
글은 Claude가 다 썼는데 솔직히 맘에 안든다(하지만 장기적인 협력을 고려해서 일단 칭찬했다).
숏폼 UI가 진짜 무섭긴한게, 잠깐 멍하니 유튜브 쇼츠를 넘기고 있었는데 정신차려보니 카톡 쇼츠였다;;
@bglbgl gwyng 아… 맨날 주소창으로 쳐서 들어가서 그런 불편함이 있는 줄 몰랐군요. ㅋㅋㅋㅋ
@hongminhee洪 民憙 (Hong Minhee) 아 커밋해시도 주소창에 치는 방법뿐인걸로 압니다. 앞뒤로 검색도 안되고요.
@bglbgl gwyng 요즘에는 점점 별로가 되어가고 있지만, 그래도 그럭저럭 좋은 편이라고 생각하는데… 어떤 점이 불만이신가요?
@hongminhee洪 民憙 (Hong Minhee) 우선 홈화면에서 레포 찾아들어가는게 불편합니다. 제 계정의 레포면 찾아들어갈수있는데, 제가 속한 organization의 레포거나 아니면 최근에 어떤 작업을 한 남의 레포의 경우엔 organization을 변경하거나 위에 검색을 해야하잖아요. 특히 검색이 알잘딱깔센이 안되는게 불편합니다.
GitHub UX는 왜케 구릴까 생각이 들때마다,이게 지구촌 모노레포 관리툴 같은거라고 생각해보자... 라고 이해해주기엔 너무 구려!!
최근 며칠간 WAH라는 이름의 WebAssembly 인터프리터를 만들고 있다. ~와! 샌즈!~
WAH의 특징이라면 C로 작성되어 있는데 헤더 하나로 구성되어 있다는 점과, 거의 대부분의 코드를 Gemini가 짰다는 것 정도일까? (Claude Code도 좀 사용했지만 코드 생성은 Gemini가 다 했다.) Gemini가 디버깅을 시키면 답답한 게 사실이라서 최대한 프롬프트에 정보를 많이 넣고 few-shot으로 생성하게 하는 걸 목표로 했는데 생각보다 잘 되었다. 예를 들어서 한 프롬프트는 다음과 같았다. 저 문장 하나 하나가 시행착오의 결과이다.
@wah.h 에 if~else~end 명령을 구현하고, 대응되는 test_*.c 파일들이 모두 성공하도록 (또는, 해당 테스트에서 잘못된 점이 있을 경우 그 원인을) 고쳐줘. 아직 loop 관련된 코드는 처리할 필요 없고 테스트 중에 그걸 테스트하는 게 있다면 주석 처리해(지우지는 마). 컴파일과 실행은 &&로 한 번에 하도록 해. 정확한 구현 방법은 이래야 해: if~else~end에서 마지막 end는 사라지고, if는 else 직후 명령으로 이동하는 conditional jump로 재활용하며, else는 unconditional jump로 바뀌어(즉 실행기 입장에서 br과 else의 동작은 똑같아야 해! else를 아예 없애고 br로 대체할지 말지는 알아서 정해). 그러니까, if A B C else D E F end G 같은 명령이 있다면 preparsing 이후에는 if <offset to D> A B B C else <offset to G> D E F G 형태가 되어야 한다는 뜻이야. WebAssembly 명세에 따르면 if 문에는 block type이 따르는데, 이 타입을 사용해서 validation을 진행하는 것도 정확히 구현해야 해(block type이 function type (T1..Tn)->(U1..Um)이면 현재 스택에 T1..Tn 타입이 들어 있고 end 이후에는 U1..Um 타입이 들어 있어야 하고, 일반 타입 T가 들어 있다면 ()->(T)와 동일하게 취급함). block type은 validation 이후 preparsing 과정에서 사라져서 런타임에는 반영되지 않도록 해.
솔직히 너무 많이 요구하는 거 아닌가, 안되면 validation 부분을 어떻게 뺄지 고민하고 있었는데 시도 세 번만에 800줄짜리 diff가 떡하니 나오고 일단 보기에는 틀린 부분이 없어서 놀랐다. 물론 삽질도 많이 했는데 가장 많이 한 삽질은 테스트를 작성할 때 수동으로 WebAssembly 바이너리를 짜면서 바이트 숫자를 잘못 세어서 오류가 나는 거랑, 분명 WebAssembly opcode를 사용해야 하는데 자기 마음대로 코드를 정해 버린다거나 하는... 그런 우스운 상황이었다.
우습기도 하고 놀랍기도 하지만 이 코드를 내가 직접 짜지 않는 이유는 귀찮아서...라기보다는 내가 이걸로 하고 싶은 일이 따로 있고 WebAssembly 인터프리터를 만드는 게 주 목표는 아니기 때문이다. (원래 하고 싶은 일은 나중에 언급할 듯.) WebAssembly 구현이라고 하면 기술적으로 복잡해 보이지만, 내 용도에서 유래하는 몇 가지 조건(대표적으로 결정론적인 동작)을 제약으로 걸면 기술적으로 복잡하다기보다는 그냥 노가다에 가까워지기 때문에 끌리지 않는 것도 있긴 하다. 이전의 Angel이 과연 얼마까지 바이브 코딩으로 할 수 있는지를 테스트하는 목표였다면, 이번에는 정말로 목표를 달성하는 수단으로 기능할지 실험해 볼 작정이다.
https://github.com/lifthrasiir/wah/ 정식으로 공개했다. 현재 4800여줄. WebAssembly 1.0 거의 완전 지원, 2.0은 SIMD를 포함해 8~90% 정도 지원하는 정도까지 왔다. 하지만 아직 API 문제를 완전히 풀진 못해서 모듈 링킹이 안 되는 치명적인 문제가 있다...
요것이 진정한 Domain-Driven Development...
프로젝트 홍보: No programming language https://github.com/hoxy/no-lang
http://logitext.mit.edu/main
재미있는 웹 앱 중 하나. 논건 대수(Sequent Calculus)를 사용해 1차 논리("모든 대상에 대해"나 "어떤 대상이 있어"를 서술할 수 있는 논리)의 명제를 상호작용을 통해 증명해 볼 수 있다.
예를 들어 A /\ B -> A (A 그리고 B이면 A이다)를 증명하려면
- 위 명제를 입력칸에 넣는다.
->를 눌러 명제 안의 "이면"을 증명에서 쓸 수 있는 가정(|-의 왼쪽에 있는 것)으로 바꾼다.- 가정의
A /\B를 눌러 "그리고"의 양 측에 해당하는 가정A와B각각을 얻는다. - 가정이나 결론의
A를 눌러 가정을 사용하는 것으로 증명을 끝낸다.
보다 입문자에게 친절한 설명은 http://logitext.mit.edu/tutorial 에서 읽어볼 수 있다.










