Profile img

초무

@2chanhaeng@hackers.pub · 90 following · 80 followers

GitHub
@2chanhaeng
Gravatar
gravatar.com/2chanhaeng
2

초무 shared the below article:

Your CLI's completion should know what options you've already typed

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub

The latest update to Optique implements a sophisticated dependency system that enables command-line interface options to dynamically influence one another during parsing and shell completion. While standard parsers often treat flags in isolation, this framework allows for context-aware behavior similar to Git, where the value of one option determines the valid suggestions for another. By utilizing new primitives such as dependency and derive, developers can mark specific options as sources that inform the behavior of subsequent parsers through a three-phase execution strategy. This approach first collects dependency values and then applies them via factory functions to generate concrete, context-specific parsers at runtime. The system maintains full type safety while supporting both synchronous and asynchronous resolutions, which is essential for scenarios involving file system operations or remote API calls. Furthermore, it handles multiple dependencies seamlessly, ensuring complex relationships between parameters like environments and regions are validated correctly. This advancement empowers developers to create highly responsive and intuitive CLI tools that provide a superior user experience through intelligent, context-sensitive completion.

Read more →
5

LLM에서 마크다운이 널리 쓰이게 되면서 안 보고 싶어도 볼 수 밖에 없게 된 흔한 꼬라지로 그림에서 보는 것처럼 마크다운 강조 표시(**)가 그대로 노출되어 버리는 광경이 있다. 이 문제는 CommonMark의 고질적인 문제로, 한 10년 전쯤에 보고한 적도 있는데 지금까지 어떤 해결책도 제시되지 않은 채로 방치되어 있다.

문제의 상세는 이러하다. CommonMark는 마크다운을 표준화하는 과정에서 파싱의 복잡도를 제한하기 위해 연속된 구분자(delimiter run)라는 개념을 넣었는데, 연속된 구분자는 어느 방향에 있느냐에 따라서 왼편(left-flanking)과 오른편(right-flanking)이라는 속성을 가질 수 있다(왼편이자 오른편일 수도 있고, 둘 다 아닐 수도 있다). 이 규칙에 따르면 **는 왼편의 연속된 구분자로부터 시작해서 오른편의 연속된 구분자로 끝나야만 한다. 여기서 중요한 건 왼편인지 오른편인지를 판단하는 데 외부 맥락이 전혀 안 들어가고 주변의 몇 글자만 보고 바로 결정된다는 것인데, 이를테면 왼편의 연속된 구분자는 **<보통 글자> 꼴이거나 <공백>**<기호> 또는 <기호>**<기호> 꼴이어야 한다. ("보통 글자"란 공백이나 기호가 아닌 글자를 가리킨다.) 첫번째 꼴은 아무래도 **마크다운**은 같이 낱말 안에 끼어 들어가 있는 연속된 구분자를 허용하기 위한 것이고, 두번째/세번째 꼴은 이 **"마크다운"** 형식은 같이 기호 앞에 붙어 있는 연속된 구분자를 제한적으로 허용하기 위한 것이라 해석할 수 있겠다. 오른편도 방향만 다르고 똑같은 규칙을 가지는데, 이 규칙으로 **마크다운(Markdown)**은을 해석해 보면 뒷쪽 **의 앞에는 기호가 들어 있으므로 뒤에는 공백이나 기호가 나와야 하지만 보통 글자가 나왔으므로 오른편이 아니라고 해석되어 강조의 끝으로 처리되지 않는 것이다.

CommonMark 명세에서도 설명되어 있지만, 이 규칙의 원 의도는 **이런 **식으로** 중첩되어** 강조된 문법을 허용하기 위한 것이다. 강조를 한답시고 **이런 ** 식으로 공백을 강조 문법 안쪽에 끼워 넣는 일이 일반적으로는 없으므로, 이런 상황에서 공백에 인접한 강조 문법은 항상 특정 방향에만 올 수 있다고 선언하는 것으로 모호함을 해소하는 것이다. 허나 CJK 환경에서는 공백이 아예 없거나 공백이 있어도 한국어처럼 낱말 안에서 기호를 쓰는 경우가 드물지 않기 때문에, 이런 식으로 어느 연속된 구분자가 왼편인지 오른편인지 추론하는 데 한계가 있다는 것이다. 단순히 <보통 문자>**<기호>도 왼편으로 해석하는 식으로 해서 **마크다운(Markdown)**은 같은 걸 허용한다 하더라도, このような**[状況](...)**は 이런 상황은 어쩔 것인가? 내가 느끼기에는 중첩되어 강조된 문법의 효용은 제한적인 반면 이로 인해 생기는 CJK 환경에서의 불편함은 명확하다. 그리고 LLM은 CommonMark의 설계 의도 따위는 고려하지 않고 실제 사람들이 사용할 법한 식으로 마크다운을 쓰기 때문에, 사람들이 막연하게 가지고만 있던 이런 불편함이 그대로 표면화되어 버린 것이고 말이다.

* 21. Ba5# - 백이 룩과 퀸을 희생한 후, 퀸 대신 **비숍(Ba5)**이 결정적인 체크메이트를 성공시킵니다. 흑 킹이 탈출할 곳이 없으며, 백의 기물로 막을 수도 없습니다. [강조 처리된 "비숍(Ba5)" 앞뒤에 마크다운의 강조 표시 "**"가 그대로 노출되어 있다.]
14
1
0
1
1

0.9.0 is here!

This release brings /await support to parsers. Now you can validate input against external resources—databases, APIs, Git repositories—directly at parse time, with full type safety.

The new @optique/git package showcases this: validate branch names, tags, and commit SHAs against an actual Git repo, complete with shell completion suggestions.

Other highlights:

  • Hidden option support for deprecated/internal flags
  • Numeric choices in choice()
  • Security fix for shell completion scripts

Fully backward compatible—your existing parsers work unchanged.

https://github.com/dahlia/optique/discussions/75

1

IPv6가 30주년을 맞았지만 여전히 세계를 장악하지 못한 이유
------------------------------
- 1995년 등장한
IPv6 는 32비트에서 128비트로 확장된 주소 체계를 통해 *인터넷 주소 고갈 문제* 를 해결하려 했음
- 그러나 *IPv4와의 비호환성* , *기능적 차별성 부족* , *NAT의 확산* 등으로 인해 전환이 지연됨
- 전문가들은 *배포 비용과 복잡성* , *ROI 부족* , *성능 불일치* 등이 여전히 주요 …
------------------------------
https://news.hada.io/topic?id=25533&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

3
1

자신의 사이트에 게시하고, 다른 곳에 동시 배포하기
------------------------------
- *POSSE(Publish on your Own Site, Syndicate Elsewhere)* 는 개인 사이트에 먼저 게시한 뒤, 소셜미디어 등 외부 플랫폼에 복제본이나 링크를 배포하는 *콘텐츠 자율 배포 방식*
- 이 방식은 *콘텐츠 소유권과 원본 URL* 을 유지하면서도, *친구나 팔로워가 사용하는 플랫폼에서 접근* 할 수 있게 함
- POSSE…
------------------------------
https://news.hada.io/topic?id=25529&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

1
1
0
1
1
1
1
1
1
1

2026년 1월 2일

​1월 2일의 수는 겔폰트-슈나이더 상수222^{\sqrt{2}}이다.

힐베르트의 23가지 난제 중 7번은 "0과 1이 아닌 대수적인 수 aa와 대수적인 무리수 bb에 대해 aba^b는 초월수"인지 물으며, 이는 겔폰트-슈나이더 정리에 의해 참으로 증명되었다. 이 수는 무리수의 무리수 제곱이 유리수일 수 있음을 보이는데 단골로 소개되기도 한다.

2
1
1
1
1
1
1
0

바이브코딩이 취미가 되어가는 것일까요? 그새 또 뭔가 하나를 뚝딱여왔습니다... be-music-script라는 동인 리듬게임 에뮬레이터 비슷한 친구의 플레이 로그를 정리해주는 서비스를 만들어봤어요. 많은 리듬게임 유저들은 자기가 얼마나 잘했는지 자랑하고 싶어하는데, db 파일을 읽은 뒤 당일의 멋진 성과들을 정리해주는 서비스입니다. 제가 쓰려고 만든건데 이것도 결국 엔지니어링? 결과물인걸까? 싶어 올려봅니다.

요즘 AI의 도움 덕분에 아이디어를 구현하는게 두렵지 않아졌다는 기분이 드네요. https://sonohoshi.github.io/gosubms/

be-music-script라는 동인 리듬게임 에뮬레이터 비슷한 친구의 플레이 로그를 정리해주는 서비스, '고수븜스'의 스크린샷입니다.
제 플레이 데이터를 이용, 오늘 어떤 기록을 경신하였는지 보여주고 있습니다.
3

초무 shared the below article:

Designing type-safe sync/async mode support in TypeScript

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub

Optique, a type-safe CLI parser for TypeScript inspired by functional programming principles, recently introduced support for both synchronous and asynchronous execution modes to handle complex requirements like dynamic shell completions. Implementing this feature required sophisticated type-level logic to ensure that combining an asynchronous parser with synchronous ones correctly results in an asynchronous aggregate. After evaluating several design patterns, the developer settled on an explicit mode parameter with a default value to maintain backward compatibility while allowing for runtime inspection. This approach leverages conditional types and advanced inference to compute combined modes automatically, even though it necessitated significantly increasing internal implementation complexity to support dual execution paths. The updated API now includes specialized runners that provide compile-time enforcement of the expected execution mode, preventing common pitfalls associated with asynchronous code. By prioritizing a clean user-facing interface, the library successfully integrates asynchronous capabilities without compromising its original simplicity or type safety. This architectural evolution demonstrates how TypeScript’s powerful type system can manage complex state propagation while keeping the development experience intuitive and robust.

Read more →
4

CEO는 너무 비싸다. 자동화할 수는 없을까?
------------------------------
- CEO 보수가 *일반 직원 수천 명의 임금* 에 해당하는 수준까지 상승하면서, *CEO라는 역할 자체의 필요성* 이 문제로 떠오름
- 팬데믹과 정부 지원 덕분에 생존한 기업에서도 *성과와 무관한 고액 보상* 이 이어지며 주주 반발이 확산 중
- CEO 업무 상당 부분이 *보좌 인력이나 외주로 이미 분해·위임* 되고 …
------------------------------
https://news.hada.io/topic?id=25423&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

0
4
0

(개인 계정, 이어잇 계정 나눠서 올리다 자주 섞입니다. 당분간 서비스 소식을 주로 올릴 예정이라, 함수형으로 팔로우 해주신분들께 스팸일 것 같아 미리 양해를 구합니다.)

여행가는 느낌 나나요?
yearit.com

2
6

초무 shared the below article:

미소녀 보려고 미연시를 켰더니 게임 콘솔이 해킹당했어요

Helloyunho @helloyunho@hackers.pub

Ren'Py 기반 PlayStation(플레이스테이션) 게임에서 발생하는 취약점을 이용한 익스플로잇 도구인 yarpe(Yet Another Ren'Py PlayStation Exploit)의 개발 과정과 기술적 원리를 다룹니다. 이 프로젝트는 Python(파이썬)의 Pickle(피클) 라이브러리가 역직렬화 과정에서 임의의 코드를 실행할 수 있다는 보안 결함을 활용하며, 세이브 파일 내부의 데이터를 조작하여 게임 엔진의 제어권을 획득합니다. 저자는 메모리 권한 제한을 우회하기 위해 ROP(Return Oriented Programming) 기법과 unsafe-python을 도입하여 직접적인 메모리 접근 및 스택 포인터 조작을 구현했습니다. 특히 Xbox(엑스박스)에서의 성공적인 초기 실험을 바탕으로 PlayStation 5의 실행 전용 메모리(XOM)와 같은 까다로운 보안 제약 사항을 극복하고 최종적으로 코드를 실행하는 과정을 상세히 설명합니다. 이 글은 복잡한 하드웨어 보안 환경 속에서도 논리적인 분석과 창의적인 접근을 통해 시스템의 한계를 시험하는 과정을 보여주며, 임베디드 보안과 리버스 엔지니어링에 관심 있는 독자들에게 깊이 있는 기술적 통찰을 제공합니다.

Read more →
5

Just had someone leave feedback on my F/OSS project saying “maybe that's fine if a product is focused on your Chinese community.”

I'm Korean. Every single piece of documentation is in English. There's nothing in Chinese anywhere in the project.

This kind of microaggression is exhausting. As a non-white maintainer, you deal with these assumptions constantly—people who feel entitled to your labor while casually othering you based on your name.

It chips away at your motivation. It makes you wonder why you bother.

https://github.com/dahlia/optique/issues/59#issuecomment-3678606022

0
14
1

팥빵이 기여운점 내가 자고잇는놈 답싹 안아서 뒤집어가지고 둥가둥가 괴롭히다가 내려놓으면 냉큼 도망가는데 팔 벌리면서 안올거야? 하면 도망가던거 바로 턴해서 답싹 안김 그러고 품에 자리잡더니 곧장 꾹꾹이 시작 미쳐 귀여워

1

오늘 Hackers' Public @ Seoul 송년회에서 이야기한 "코딩 에이전트와 함께 이세계 던전 탐험하기: 새로운 환경의 코드 베이스를 빠르게 분석하는 방법"의 발표 슬라이드는 [다음 링크]에서 다운로드 받으실 수 있습니다! :)

키노트 스크린, "코딩 에이전트와 함께 이세계 던전 탐험하기: 새로운 환경의 코드 베이스를 빠르게 분석하는 방법"
11
1
1

오늘 해커스펍 송년회에서 오라클 사용해도 될까? 주제로 발표한 로빈입니다! 행사 정말 재밌었고요 오라클 쓰는 이야기 GraphQL 이야기 플랫폼 비즈니스의 방향성 이야기 등등 마음껏 해주세요~

11

제 지인 분이 GitHub 에서 인종차별적 코멘트를 받으셨습니다. GitHub 계정이 있으시면 신고 부탁드립니다. 영어가 어려우시더라도 LLM으로 신고글 써달라고 하면 잘 써줍니다. 신고는 단 시간 내에 많이 찍혀야 실제 보고로 올라가기 때문에 가능하신 분들은 꼭 신고 부탁드립니다.

4
0
0

오늘 Hackers' Public @ Seoul 송년회에서 "개발자는 개발을 좋아해야 하는가? 에 대한 고찰"로 라이트닝 토크를 진행했습니다. 사실 제가 발표자인줄도 모르고 앞에서 이야기를 진행하게 되었는데, 많은 분께서 호응해주시고 또 경험에서 우러나온 진솔한 의견을 내주셔서 다양한 이야기가 오갈 수 있었습니다. 모두 감사드리며, 내년에 모두 원하시는 바 이루기를 기원하겠습니다. 🥰

8
1

Calling all developers for help: I'm currently trying to implement a () feature for Hackers' Pub, an -enabled community for software engineers. Is there a formal specification for how cross-instance reporting should work in ActivityPub? Or, is there any well-documented material that explains how the major implementations handle it?

2
0
0

초무 shared the below article:

Hackers' Pub 신고(flag) 기능 기획서

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub

Hackers' Pub 커뮤니티의 신고 시스템은 단순한 제재를 넘어 구성원의 성찰과 성장을 돕는 분산형 네트워크 환경을 지향합니다. ActivityPub 프로토콜을 기반으로 설계된 이 시스템은 Mastodon 등 외부 플랫폼과의 연합(federation) 환경에서도 유연하게 작동하며, 신고자의 익명성 보호와 피신고자의 알 권리 사이의 균형을 유지합니다. 기술적으로는 거대언어모델(LLM)을 활용하여 자유 형식의 신고 사유를 실시간 행동 강령(code of conduct) 조항과 동적으로 매칭하고, 신고 시점의 콘텐츠 스냅샷과 행동 강령 버전을 기록하여 검토의 객관성을 확보합니다. 관리자는 경고, 콘텐츠 검열, 일시 및 영구 정지로 이어지는 단계적 제재 체계를 통해 투명하게 사건을 처리하며, 피신고자는 이의 제기(appeal) 프로세스를 통해 공정한 재심 기회를 보장받습니다. 이러한 체계적인 설계는 자율적인 커뮤니티 관리의 복잡성을 해결하고, 건강하고 지속 가능한 연합우주(fediverse) 생태계를 구축하는 데 필요한 실무적인 통찰을 제공합니다.

Read more →
7

백엔드 개발자 입장에서는 Agent Skills 를 숙지해둘 필요가 있을 것 같다.

프로덕션에서 쓰면 당연히 안되겠지만, 로컬개발환경에서 데이터를 생성할때 데이터를 생성하는 과정 자체를 skills.md 에다가 xxx 목적으로는 이런 스크립트를 실행하면 된다같은 메뉴얼 비슷한 프롬프트를 먹여주면 자기가 알아서 서커스를 해준다.

python 기반의 어플리케이션이라면 아래와 같은 커맨드를 AI 에이전트가 직접 말아서 실행해준다.

$ poetry run python -c "
import json
from todo_app.models  import Todo

# Make incomplete todos as complete
todos = Todo.filter(is_completed=False)
todos.update(is_completed=True)

Ruby, Perl, Node 등등 어떤 런타임에서 돌아가도 상관없다. 몇몇 웹 프레임워크는 콘솔 기능이 내장되어 있어서 개발자 생산성에 유의미한 영향을 주기는 했지만, LLM 에이전트가 그 격차를 또 줄여주고 있는 것 같다.

어떤 데이터를 세팅하기 위해서 손으로 타이핑할 필요도 없고 LLM 에이전트가 그냥 가이드라인대로 자기가 스크립트를 짜고 직접 실행하게 하면 된다...

Docker compose로 띄우고 있다고? 그러면 이것도 LLM 에이전트가 이런식으로 서커스를 해준다.

cat script.rb | docker compose exec -T web rails runner -
6
4

[매장 홍보글 및 이벤트 안내]

안녕하세요 튜링의사과 입니다.🍏
2025년 마지막해를 위해 튜링의사과에서 제이웍스코리아와 함께 Mini 팝업을 진행하고있습니다.
BLACK APPLE - W (단 1주일)

간단한 SNS 이벤트 부터 럭키 draw 이벤트를 진행하고있으니 많은분들이 참여해주시면
다양한 상품을 제공해드리고있습니다.

추가로 방문만해도 굿즈 상품을 드리고 있으니 오셔서 경품기회도 놓치지 마시고
ASUS ROG 키보드, 체리 엑스트리파이, Kiiboom, 에포메이커, 글로리어스, 크리에이티브
인기 상품을 할인 판매 하고있습니다. 많은 관심부탁드립니다.

2