hackers.pub 초대링크를 트위터, 페이스북, 스레드에 올렸다! (가지고 있던 초대장수가 바로 줄어들어서 이제 3장 남았다.)
https://hackers.pub/@arkjun/invite/019753df-b9cc-7d70-a89b-8aaf62fe13f9
@arkjun@hackers.pub · 65 following · 90 followers
中年의 中小企業 開發者, 90年代 Console Gamer. 좋은 하루를 繼續해 나아간다. 좋은 하루가 모이면 좋은 人生이 된다.
韓国人のプログラマー、40代、小学生の息子とゲームするのが幸せ😃💕龍が如く 、ゼルダの伝説、マリオ、ピクミン好き
「いい1日を続ける」
いい1日を続けていけば、いい人生になる!
hackers.pub 초대링크를 트위터, 페이스북, 스레드에 올렸다! (가지고 있던 초대장수가 바로 줄어들어서 이제 3장 남았다.)
https://hackers.pub/@arkjun/invite/019753df-b9cc-7d70-a89b-8aaf62fe13f9
Juntai Park shared the below article:
洪 民憙 (Hong Minhee) @hongminhee@hackers.pub
이 글은 연합우주(fediverse)에서 발생하는 "조용한 연합우주" 문제, 즉 대화의 일부만 보이는 현상의 원인과 해결책을 탐구합니다. ActivityPub 프로토콜의 분산 특성으로 인해 대화가 여러 서버에 분산되어 저장되면서 발생하는 이 문제를 해결하기 위해, 답글 트리 크롤링과 컨텍스트 소유자 기반 방식이라는 두 가지 주요 접근법을 제시합니다. 답글 트리 크롤링은 모든 답글을 순차적으로 가져오는 방식이지만 네트워크 취약성과 작업량 증가의 단점이 있고, 컨텍스트 소유자 방식은 대화의 원 작성자가 대화 내용을 관리하는 중앙화된 접근법이지만 컨텍스트 소유자에 대한 의존성이 높다는 단점이 있습니다. 또한, 모더레이션 패러다임의 충돌과 상위 전파 누락 문제와 같은 논쟁점을 지적하며, 주기적 크롤링, 사용자 트리거, 멘션 기반 백필과 같은 추가적인 백필 메커니즘을 소개합니다. 마지막으로, FEP 수렴 논의와 구현체 간 협력 현황을 통해 향후 개발 방향으로 하이브리드 접근법의 표준화를 제시하며, 다중 전략 구현, 리소스 관리, 모니터링 및 로깅의 모범 사례 가이드라인을 제시합니다. 이 글은 연합우주가 더욱 풍부하고 연결된 소셜 네트워크로 발전하기 위한 노력과 사용자 경험 개선의 중요성을 강조합니다.
Read more →요즘 본격적인 바이브 코딩 말고 자잘한 수정은 그냥 Warp에서 에이전트 모드를 쓰고 있는데, 적당히 잘 굴러가서 괜찮다.
KB카드 장애는 처음이라, 당황스럽다. 그래도 다행인 건 옛날에는 오직 KB카드만 썼는데, 지금은 대체할 다른 카드들도 많이 쓰고 있어서 아무런 타격이 없는 것이 다행..
failover 처리가 이렇게 중요합니다. 여러분..
Hackers' Pub에 공유할 수 있는 초대 링크 기능을 추가했습니다. 설정 → 초대 페이지에서 초대 링크 생성이 가능하며, 초대 링크는 정원이나 유효 기간, 메시지를 정할 수 있게 되어 있습니다. 아무래도 DM으로 직접 초대 요청을 달라고 하면 쑥스러움이 많은 분들은 요청을 안 하시는 경우가 많은 것 같아서 만들게 되었습니다. 참고로, 초대 링크를 통해 가입한 사용자는 초대 링크를 생성한 사람과 자동으로 맞팔하게 됩니다.
@hongminhee洪 民憙 (Hong Minhee) 초대장이 많아진 김에, 이 초대 링크 기능을 써봐야겠네요!
Hackers' Pub에 공유할 수 있는 초대 링크 기능을 추가했습니다. 설정 → 초대 페이지에서 초대 링크 생성이 가능하며, 초대 링크는 정원이나 유효 기간, 메시지를 정할 수 있게 되어 있습니다. 아무래도 DM으로 직접 초대 요청을 달라고 하면 쑥스러움이 많은 분들은 요청을 안 하시는 경우가 많은 것 같아서 만들게 되었습니다. 참고로, 초대 링크를 통해 가입한 사용자는 초대 링크를 생성한 사람과 자동으로 맞팔하게 됩니다.
日本のソフトウェア開発者の皆様をHackers' Pubにご招待します。Hackers' Pubは、ActivityPubを実装するソフトウェア開発者のためのSNSであり、ブログプラットフォームです。MastodonとQiitaやZennをミックスしたような雰囲気です。短文(投稿)と長文(記事)の両方に対応しており、ActivityPub上では投稿はNote、記事はArticleとして表現されます。また、快適な技術ブログ執筆のために、TeX数式やGraphvizダイアグラムなど、さまざまなMarkdown拡張にも対応しています。ご興味のある方は、下記の招待リンクから先着25名までご登録いただけます。
https://hackers.pub/@hongminhee/invite/0197453c-95a9-7542-8c23-dc213ba07fb0
Cloudflare Workers 배포와 RFC 9421 (HTTP Message Signatures) 서명 및 검증을 지원하는 Fedify 1.6이 릴리스되었습니다!
몰랐는데 해커스팝 파이콘 공식 커뮤니티 후원사 됬구나...??
해커스펍에도 퍼리맨들 데려와서 털 뿌리고 싶지만 참는 중
@joonnotnotJoon 누구라도 환영입니다! ㅎㅎㅎ 모두 데려와 주세요.
대학생때 친구(컴알못)가 노트북 견적 짜달라고 한적이 있는데, 성능 상관없고 최대한 싸게만 해달라고 했다. 그래서 운영체제 미포함 기기에 우분투 깔아서 30만원으로 맞춰줬다. 우분투를 영업하려는 의도는 전혀 없었고 싸게 해달라는 요구를 최대한 맞춘 결과였다. 걔가 그때 형편이 안 좋아서 한푼이라도 아끼는게 중요했고, 나는 나름 목적을 달성했다는 것에 뿌듯해했다. 리브레 오피스 깔아주면서 한글, 엑셀 대신에 이거 쓰면 된다고 설명했던 기억이 난다.
그리고 이 일을 까맣게 잊고 살다가 1년후 쯤에 그 친구를 다시 만났는데, 보자마자 반응이
Hackers' Pub을 사용하면서 연합우주(fediverse) 뿐만 아니라 Bluesky 사람들과도 교류하고 싶으신 분들은 Bridgy Fed라는 서비스를 사용해 보시면 좋을 것 같습니다. Hackers' Pub 계정 생성 후 2주가 지난 분들만 사용 가능하긴 한데요.[1]
@bsky.brid.gyBridgy Fed for Bluesky 계정을 팔로하시면 Bluesky 쪽에 일종의 미러링 계정이 생성되게 됩니다. 성공적으로 Bluesky 미러가 생기면
@bsky.brid.gyBridgy Fed for Bluesky 계정이 맞팔을 해 올 겁니다.
예를 들어 제
@hongminhee洪 民憙 (Hong Minhee) 계정으로
@bsky.brid.gyBridgy Fed for Bluesky 계정을 팔로하면, Bluesky 쪽에 @hongminhee.hackers.pub.ap.brid.gy라는 계정이 생기는 식입니다. 그러면 Bluesky 쪽 사람들이 해당 계정을 멘션하거나, 댓글을 달거나, 인용을 하면 Hackers' Pub에서 그게 보이게 됩니다. 서로 팔로도 할 수 있고요.
If you're interested in building your own #ActivityPub server but don't know where to start, I recommend checking out #Fedify's #tutorial Creating your own federated microblog. It provides a comprehensive, step-by-step guide that walks you through building a fully functional federated application. Perfect for developers who want to dive into the #fediverse!
If you're interested in building your own #ActivityPub server but don't know where to start, I recommend checking out #Fedify's #tutorial Creating your own federated microblog. It provides a comprehensive, step-by-step guide that walks you through building a fully functional federated application. Perfect for developers who want to dive into the #fediverse!
ActivityPubサーバーを構築してみたいけれど、どこから始めればよいかわからない方には、Fedifyのチュートリアル『自分だけのフェディバースのマイクロブログを作ろう!』をおすすめします。包括的でステップバイステップのガイドで、完全に機能する連合型アプリケーションの構築方法を丁寧に解説しています。フェディバースに飛び込みたい開発者にぴったりです!
일반적인 Node.js 애플리케이션을 개발할 때 프레임워크와 무관하게 함께 일하는 동료들에게 필수적으로 추천하고 싶은 아티클이 있다.
https://sophiebits.com/2020/01/01/fast-maintainable-db-patterns
특정 프레임워크나 ORM에 의존하지 않고도 N+1 Query, 캐싱 같은 일반적인 문제를 해결하며 유지보수 가능한 형태로 코딩하는 방법을 제시한다. DataLoader로 모든 문제가 해결된다고 생각할 수도 있지만, 근본적인 문제 해결 과정을 직접 고민해보는 것만으로도 엔지니어링 역량 향상에 큰 도움이 된다.
https://nextjs.org/blog/security-nextjs-server-components-actions
React 관련 내용이 포함되어 있지만, 그 부분을 제외하고 읽어도 충분히 가치가 있다. 데이터를 클라이언트에 전달할 때 마스킹하거나 접근 권한을 검사하는 방법을 구체적으로 알려준다. 핵심은 별도의 플러그인이나 외부 시스템 없이도 간단하면서 효과적인 권한 검사 시스템을 구축할 수 있다는 점이다.
위 아티클들을 추천하는 이유는 간단하다. 특정 프레임워크에 결속되지 않으면서도 독립적이고 지역적으로 백엔드 애플리케이션에서 볼 수 있는 일반적인 문제를 해결할 수 있는 방법들을 제시하기 때문이다. 이런 접근법은 전체 코드베이스의 안전성과 성능을 크게 향상시키며, 결국 더 많은 개발자들이 행복하게 일할 수 있는 환경을 만들어준다고 생각한다.
대부분 프레임워크에 의존적이거나 플러그인에 의존해 전체 코드베이스를 올바르게 수정하기 어려워지는 모습을 여러번 보았다. 개인적으로 엔지니어링 문화에서 크게 해결하고 싶은 부분이다. JavaScript 뿐만 아니라 가능하면 언어나 런타임에 있는 근원적 요소만을 통해 문제를 해결하는게 건강하게 문제를 해결할 수 있는 방법이라고 본다.
저는 오늘
@jihyeokJihyeok Seo 님과 함께 튜링의 사과(
@TuringAppleDev튜링의 사과)에 와서 모각코를 하고 있습니다. 함께 하실 분? 저희는 저녁까지 계속 있을 것 같습니다. 끝나고 저녁도 같이 드시면 좋고요.
제가 지난 15년 정도 그렇게 살다가 결국 VS Code에 정착했답니다. 온갖 랭귀지 서버 세팅하는 게 너무나 귀찮은 나머지…
기능적으로 Hackers' Pub의 최초 계획 중에 아직 구현 안 된 마지막 조각이 바로 알고리즘 타임라인인데, 개인 정보를 최대한 침해하지 않으면서도 알고리즘 타임라인을 구성할 방법에 대해 계획을 좀 해봤다.
이전부터 쭉 관리하고 있는 경력기술서 겸 포트폴리오 정보량이 너무 많다는 의견을 자주 받아서,
약식화한 별개의 RESUME 페이지를 새로 만들었다. https://www.frontend.moe/resume/
자주 얘기가 나오는 단문 수정 기능. 까먹지 않도록 이슈로 만들어 두었다. 언제 만들 지는 미지수지만…
@hongminhee洪 民憙 (Hong Minhee) 오. 이 기능이 추가되면 너무 좋겠습니다. 😂
React Native에 Portal이 없어서 좀 고생을 했는데, 일단 지원하는게 맞다곤 생각한다. 근데 Portal이 필요한 경우는 상태 트리랑 뷰 트리가 순서가 어긋나있을 때인데(non-monotone?) 이런 설계 자체가 문제일 수 있다. 보통 개발할때 뷰 트리 기준으로 생각하기 때문에 그런데, 상태 트리를 먼저 다 설계하고 렌더링은 최대한 단순하게 하면 될거 같긴한데, 음 이거 Redux잖아ㅋㅋㅋ
Zed 에디터의 비공식 윈도우즈 빌드를 발견했다. 윈도우즈에서 맛보고 싶지만 직접 빌드할 여건이 안 된다면 이걸 써보면 될듯? (일단 내 컴퓨터에서도 돌아간다.)
https://tech.kakaoent.com/front-end/2023/230330-frontend-solid 소프트웨어 엔지니어링 분야에서 유명한 SOLID 원칙이 프런트엔드 UI 설계 관점에서 어떻게 관련이 있는지, 카카오엔터에서 모범사례를 잘 소개가 되어서 공유합니다. 읽고 나서 해당 원칙이 서비스 아키텍쳐 설계 관점으로 한정되지 않음을 알게 되었습니다.
@iamuhun김무훈 공유 감사합니다.
뒤늦게 이 블로그에 다른 글들도 살펴보고 있는데, 도움되는 글들이 많네요!
개인적으로 만들고 싶은 조그마한 서비스가 두개있는데 둘 다 흥하고 있는 서비스들은 이미 있고, 그냥 내 입맛에 맞게 사부작사부작 만들어서 쓰고 싶은 욕망이 있다. 반대로, 바쁜데 굳이 왜... 라는 심리도 있다...
https://tech.kakaoent.com/front-end/2023/230330-frontend-solid 소프트웨어 엔지니어링 분야에서 유명한 SOLID 원칙이 프런트엔드 UI 설계 관점에서 어떻게 관련이 있는지, 카카오엔터에서 모범사례를 잘 소개가 되어서 공유합니다. 읽고 나서 해당 원칙이 서비스 아키텍쳐 설계 관점으로 한정되지 않음을 알게 되었습니다.
Paul Graham의 《해커와 화가》를 보면 본인이 생각하는 이상적인 Lisp을 만드는 내용이 나오는데, 그게 바로 Arc. Hacker News가 초기에 Arc로 작성되어 있었다는 것은 잘 알고 있었는데, 여태까지도 Arc로 작성된 채로 유지되고 있을 줄은 몰랐다. 이제서야 Common Lisp으로 바꾼 게 놀라울 정도.
@arkjunJuntai Park 저는 요즘에 문서 작성 작업을 상당히 LLM에게 많이 기대는 편인데, 전보다 문서 작성에 드는 노력이 많이 줄긴 하더라고요.
@hongminhee洪 民憙 (Hong Minhee) 앗. 저도 이런 시대라 다행이라는 느낌을 받으며 많은 도움을 받고 있습니다. 😅
최근에 코딩하는 시간보다, 문서 작성과 커뮤니케이션에 소비하는 시간이 급격히 많아지다보니, 개발자라기 보다 회사원에 더 가깝게 느껴지는 기분이 든다. 요즘에는 모 시스템 구축의 견적서 작성하는 일을 하고 있는데, 개발보다 재미없지만, 예상 리소스를 예측하면서 이것저것 공부하는 시간만큼은 나름 소소하게나마 즐겁기는 하다.
2025 오픈소스 컨트리뷰션 아카데미 참여형 멘티를 오늘부터 6월 22일까지 모집한다고 합니다. 저도 Fedify 프로젝트의 멘토로서 참여하고 있으니, 관심 있는 분들은 많은 참여 부탁드립니다!
Raycast로 바꾸고 나서 1주일 정도 지난 듯 한데, 사용성에 큰 차이가 있는지는 아직 모르겠지만 계산기는 Raycast가 더 편하다.
Alfred 에서는 가령 1,000+1 처럼 쉼표가 들어가면 계산결과를 보여주지 않는데 RayCast에서는 계산결과값이 나온다.
Fedify에 Cloudflare Workers 지원 추가한 다음, BotKit에도 Cloudflare Workers 지원 추가해서, 연합우주에 봇 무한 증식시키는 상상
오늘 박현우 님(
@lqezPark Hyunwoo)께서 Fedify 로고로 배지를 만들어 와주셨습니다! FediDev KR 두 번째 스프린트 모임 오신 분들께 나눠드리고 있어요.
오늘 스프린트 모임에서는 Hackers' Pub 초대장을 막 뿌려야지!
튜링의 사과(
@TuringAppleDev튜링의 사과) 입구에서부터 이렇게 FediDev KR 스프린트 모임 배너를 띄워주셨네요!
해커즈 퍼브 저장소를 딥위키에 넣어 봤다! https://deepwiki.com/hackers-pub/hackerspub
한동안 Hollo를 이용했는데 하스켈 코드 쓰러 잠깐 마음의 고향 해커즈 퍼브에 왔습니다.
welcome :: IO ()
welcome = do
putStrLn "Welcome to Hackers' Pub"
welcome
어쩌다 보니 Fedify에서 JSR 의존성을 걷어내게 되었는데, 가장 골치아픈 게 @std/encoding 패키지인 것 같다. 어째서인지 npm 쪽에는 base64, base64url, base58, hex 등의 인코딩 및 디코딩을 모두 제공하는 패키지가 없어 보인다. 게다가 대체로 Uint8Array가 아니라 Node.js API인 Buffer에 의존한다.
그냥 @std/encoding을 포크해서 npm에 올려버릴까 싶기도 하고…
정말로 @std/encoding을 포크해서 byte-encodings라는 이름으로 npm에 올려버렸다.
Jules 떴구나. 그동안 쌓인 TODO, FIXME가 도합 400개 정도되는데, 그냥 아무말않고 적당히 알아서 고쳐보라고 해야겠다.
Jules 떴구나. 그동안 쌓인 TODO, FIXME가 도합 400개 정도되는데, 그냥 아무말않고 적당히 알아서 고쳐보라고 해야겠다.
@bglbgl gwyng 오 이건 또 뭐하는 물건일까요? (일단 try 해봐야겠네요!)
これからのコーディングの旅は、ABKO KN35BT TKLキーボードと共に歩んでいきます。
이 화면을..... 12분 컷으로 깎았다고...?
이젠 ReSharper를 Visual Studio가 아니라 VS Code에 붙여주네. 뭐, 이제 .NET 개발 할 일은 없으니 쓸 일은 없겠지만 좋아 보인다.
@hongminhee洪 民憙 (Hong Minhee) JetBrains 개발팀을 칭찬합니다. 😆
이젠 ReSharper를 Visual Studio가 아니라 VS Code에 붙여주네. 뭐, 이제 .NET 개발 할 일은 없으니 쓸 일은 없겠지만 좋아 보인다.
Fedify란?Fedify는 #ActivityPub 기반 연합형 서버 프레임워크로, 개발자들이 분산형 소셜 네트워크인 #연합우주(#fediverse)에 애플리케이션을 쉽게 통합할 수 있도록 돕습니다. 복잡한 ActivityPub 프로토콜 구현을 단순화하여 개발 시간을 크게 단축시킵니다. MIT 라이선스 하에 제공되는 오픈 소스 프로젝트입니다.
다양한 프로젝트들이 이미 Fedify를 활용하고 있습니다:
ActivityPub 구현을 고려 중이시거나, Fedify 프로젝트와 협력하고 싶으시다면 연락 주세요:
귀사의 요구사항과 목표에 맞는 맞춤형 협력 방안을 함께 모색하겠습니다.
Fedifyとは?Fedifyは、ActivityPubベースのフェデレーションサーバーフレームワークで、開発者が分散型ソーシャルネットワークである#フェディバース(#fediverse)にアプリケーションを簡単に統合できるよう支援します。複雑なActivityPubプロトコルの実装を簡素化し、開発時間を大幅に短縮します。MITライセンスの下で提供されるオープンソースプロジェクトです。
すでに様々なプロジェクトがFedifyを活用しています:
ActivityPubの実装をご検討中の方や、Fedifyプロジェクトとの協力にご興味のある方は、ぜひご連絡ください:
お客様の要件と目標に合わせたカスタマイズされた協力の可能性を一緒に探りましょう。
What is Fedify?#Fedify is an #ActivityPub-based federated server framework that helps developers easily integrate their applications with the #fediverse, a decentralized social network. It simplifies the complex implementation of the ActivityPub protocol, significantly reducing development time. Fedify is an open-source project available under the MIT license.
Various projects are already leveraging Fedify:
If you're considering implementing ActivityPub or wish to collaborate with the Fedify project, please get in touch:
We're excited to explore customized collaboration opportunities that align with your requirements and goals.
Fedify란?Fedify는 #ActivityPub 기반 연합형 서버 프레임워크로, 개발자들이 분산형 소셜 네트워크인 #연합우주(#fediverse)에 애플리케이션을 쉽게 통합할 수 있도록 돕습니다. 복잡한 ActivityPub 프로토콜 구현을 단순화하여 개발 시간을 크게 단축시킵니다. MIT 라이선스 하에 제공되는 오픈 소스 프로젝트입니다.
다양한 프로젝트들이 이미 Fedify를 활용하고 있습니다:
ActivityPub 구현을 고려 중이시거나, Fedify 프로젝트와 협력하고 싶으시다면 연락 주세요:
귀사의 요구사항과 목표에 맞는 맞춤형 협력 방안을 함께 모색하겠습니다.
What is Fedify?#Fedify is an #ActivityPub-based federated server framework that helps developers easily integrate their applications with the #fediverse, a decentralized social network. It simplifies the complex implementation of the ActivityPub protocol, significantly reducing development time. Fedify is an open-source project available under the MIT license.
Various projects are already leveraging Fedify:
If you're considering implementing ActivityPub or wish to collaborate with the Fedify project, please get in touch:
We're excited to explore customized collaboration opportunities that align with your requirements and goals.
Juntai Park shared the below article:
洪 民憙 (Hong Minhee) @hongminhee@hackers.pub
LogTape 0.10.0 is now available, bringing enhancements to security, flexibility, and usability for this zero-dependency JavaScript logging library. A key addition is the @logtape/redaction package, which helps protect sensitive information using pattern-based and field-based redaction techniques. This package includes built-in patterns for common sensitive data types like credit card numbers and JWTs. The update also introduces improvements to timestamp formatting, allowing users to omit timestamps from formatted messages, and a lazy file sink option to improve resource utilization. Additionally, the configure() function now detects and prevents duplicate logger configurations. Thanks to external contributions, LogTape 0.10.0 offers more control over log output and improved resource management. Upgrade to this version to leverage these new features and improvements, enhancing your logging capabilities.
Read more →최근에 마주친 문제/주제들이 우연히 다들 '양방향' 이란 개념과 관련이 있다. 아래는 거기 관련된 러프/나이브한 생각들이다.
이건 노골적인 예시인데, 말그대로 서버/클라가 양방향으로 통신하는걸 기술하게 해준다.
대부분의 프로그래밍 언어에서 x = 3 + 2과 같은 우변을 계산해서 좌변의 기호에 할당하는 기능을 제공한다.
그런데 3 = x + 2 라고 썼을때 x = 1을 해주는 언어는 거~의 없다. 이런 기능이 왜 필요하냐는 의문이 들 수 있지만, 이런 방식을 간접적으로 다들 매일 쓰고 있다. 예컨데 패키지 버전 관리를 생각해보자.
foo: >= 2.0.0
bar: =< 3.1.0
이런 식의 설정 파일을 만지작 거릴텐데, 사실 foo >= 2.0.0, bar =< 3.1.0, ... 같은 부등식을 기술하고 있는 셈이다. 여기서 bar가 foo를 의존성으로 가지면 문제가 좀더 복잡해진다. 패키지 매니저는 조건을 만족하는 foo, bar의 값을 알아서 계산해준다.
요지는, 구체적인 값 대신에 조건을 나열하는 방식은 이미 다들 쓰고 있다는 얘기다. 그리고 패키지 매니징이 아닌 다른 문제에서도 이 방식이 좋은 경우는 흔하지만, 조건을 풀어서 값을 구하는 부분을 짜는게 까다로워서 도입하기 쉽지 않다.
여기서 양방향과 관련된 부분은 좌변과 우변의 정보 교환이다. x = 3 + 2는 x <= 3 + 2로, 우변의 정보가 일방적으로 좌변으로 간다고 볼수 있다. 반면 3 = x + 2는 좌변의 정보가 우변으로 가야한다.
x + 1 = y - 3란 예시를 보자. 이 식만 가지고는 x, y의 값을 구할 수 없다. 하지만 x = 3이란 정보가 들어오면 y = 4란걸 알 수 있고, 반대로 y = 5란 정보가 들어오면 x = 1인걸 알 수 있다. 이런 양방향 정보교환을 기술할수 있게 해주는것이 Propagator 패턴이다. Propagator 자체도 세션 타입과 뭔가 관련이 있을거 같은데, 뭐 찾아보면 오히려 서로 관련 없는게 없으니 일단 패쓰.
모든 프로그래밍 언어는 메타프로그래밍이 가능하고, 대부분의 프로그래밍 언어는 메타프로그래밍을 할 자격이 없다. 나는 그중에서도 특히 자격이 없는 언어인 Nix로 메타프로그래밍을 하는 상황에 쳐해있다. Nix의 특성상 나뿐 아니라 다른 많은 Nix 유저들이 자연스레 이 토끼굴에 빠진다.
Nix의 에러메시지는 읽기가 참 힘든데, 기능이 매우 부족한 언어에다가 여러 개념을 새로 구현해서 얹어놔가지고, 긴 스택트레이스 중에 내가 관심있는 부분은 끝의 일부인데 거기까지의 흐름을 따라가려면 앞의 상관없는 코드도 대충은 이해해야한다. 이게 양방향 정보 교환이 잘 안되고 있는 부분이다.
알다시피 함수 자체는 단방향 정보이다. 스택트레이스는 함수를 통한 단방향 정보의 전달 과정을 보여준다. 그리고 개발자는 그걸 반대로 뒤집은 형태를 분석해야 하는 상황에 놓인다. 이게 개발자 <=> 코드 의 양방향 정보교환의 수단이 제공되지 않아서 생기는 문제다.
개발자 <=> 코드의 양방향 정보코드의 대표적인 수단은 타입이다. 타입은 코드가 스스로를 변호하고, 개발자의 잘못된 변경으로부터 방어하도록 해준다. 대부분의 언어가 메타프로그래밍을 할 자격이 없다는 얘기가, 코드 생성이라는 개발자 -> 코드의 단방향 정보전달만 기술하고 반대로 코드 -> 개발자 방향의 정보를 모조리 잃어버리는 형태로 이루어지기 때문이다.
그런데 타입안전한 메타프로그래밍은 그자체로 어려운 문제이고 아직은 연구주제에 가깝다고 알고있다. 혹시 그냥 개발자에게 뭔가 알려줄수있는 방법 자체를 primitive로 가질 순 없나? 그게 결국 타입이랑 똑같은 것일까? 여기에 TypeScript에서의(역시!) 무근본한 트릭이 소개되어있는데, 약간 관련있을지도 모른다.
안녕하세요, 여러분.
해커스펍에 들어온 시점 전후로 건강에 문제가 생겨 이제야 hello world 메시지를 남기네요. 초대해주신
@hongminhee洪 民憙 (Hong Minhee) 님 고맙습니다.
애호하고 선호하는 프로그래밍 언어는 Python이고 Back-end 직군이 본진이지만, 그때 그때 엔지니어링에 필요한 직군에서 필요한 도구를 써서 개발해요. 현재는(2025년 5월 기준) 프리랜서로 일하고 있습니다.
개발 외엔 글쓰기, 글짓기를 좋아해서 글로 먹고 살 방법도 모색하고 있어요.
잘 부탁드리며, 또 뵈어요.