Profile img

notJoon

@joonnot@hackers.pub · 72 following · 86 followers

Uncertified Quasi-pseudo dev

GitHub
@notJoon
Twitter
@JoonNot
2

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

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

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

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

I finally got the data transfer from the AISC110C high-speed camera sensor working!

It's a 5€ chip that outputs 80x120 video at up to 40k fps.

Data is read with a Xilinx Spartan7 and transmitted via USB3 with a Cypress FX3, each on its own little PCB.

The front PCB is exchangeable, making this a neat modular platform. I already have an analog video frontend with the ADV7182 and am working on a Cameralink interface.

Videos are coming tomorrow, I need more light for the high framerates.

A greyscale image of a hand giving thumbs-up. It's a video capture of the highspeed sensor, albeit only recording at 30fps with 8ms exposure time in this case.A stack of three PCBs sitting on a grey 3D-printed base (the back of the camera housing)  lying on top of a hand. The uppermost PCB has the image sensor on top. Between the upper and middle PCB a 80 pin connector is visible. The middle and lower PCB have some components visible on their top sides.The grey 3D-printed casing of the PCB stack is sitting in a bracket on top of a camera mount. On the front a metal CS-mount thread is screwed into the 3D-print. Inside that, a printed adapter is holding a black M12 lens.
0
0
0

오픈소스 활동하면서 고민하게 되는 법적 어려움들

1. 오픈소스가 완전 공개에 무료인 것은 맞으나, 무상이라도 저작권 관리, 기업 납품 등 법적 행위가 정상적으로 성립하려면 절차상 결국 사업자등록 사실이 필요한 경우가 많다.

2. 리눅스 재단과 하버드대 공동 연구에 따르면, 오픈소스 메인테이너들은 본업 외에 주당 20시간 이상을 오픈소스에 쏟으며 사실상 '투잡'을 뛰지만 월급은 한 곳에서만 받는 기형적 구조다.

3. 이런 기형적인 구조에서, 그나마 비영리 활동을 한다고 인정을 받는 방법을 고민하게 되지만 실질적으로는 그 어느 나라도 제도적으로 방법이 없다시피한 경우가 많다.

4. 기존의 영리 사업자 제도에 대부분을 의존해야 해서 협력자가 아닌, 겸업으로 인식되거나 아예 경쟁사를 창업한 것으로 인식되는 등 의도치 않은 여러가지 오해를 불러일으키기도 한다.

5. 이 1에서 4까지의 내용을 이해하고 상담해주는 법률가조차 찾아보기 어렵다.

2
0
0
2
5

[2일차 -20p.]

데이터 종속을 수작업으로 분석한다면, 결국 실수를 하게 될 것입니다. 구조만 개선하려고 하다가 실수로 동작까지 변경하게 될 수도 있습니다. 그래도 문제는 없습니다. 올바른 버전의 코드로 되돌리면 됩니다. 작은 단계로 작업하세요. 그 방식이 바로 코드 정리 방법입니다. 커다란 설계 변경은 어렵고 무섭죠? 더 작은 단계로 진행하세요. 그래도 무섭다면, 더 작게 하세요. 두려움을 느끼지 않는 수준의 바로 그 단계가 가장 좋은 수준입니다.

Tidy First -2일차
1
4

notJoon 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 →
6
3
3

증명 가능한 조건을 만족하는지만 검사하면 되고 AST 국소 패턴만 다루는 것만 모델링 하면 되서 오히려 구현 자체는 간단해질 것 같음

1

notJoon shared the below article:

Claude API의 Request Body 분석

자손킴 @jasonkim@hackers.pub

Claude API를 효과적으로 활용하기 위해 반드시 이해해야 할 요청 본문(Request Body)의 네 가지 핵심 구성 요소를 살펴봅니다. 우선 시스템 메시지(System Messages)는 모델의 페르소나와 제약 사항을 정의하는 최상위 설정으로, 응답의 톤과 매너를 결정짓는 중추적인 역할을 수행합니다. 메시지(Messages) 배열은 사용자와 어시스턴트(assistant) 간의 대화 흐름을 관리하며, 특히 어시스턴트의 답변을 미리 작성하는 프리필(Prefill) 기법이나 도구 사용(tool_use) 및 결과(tool_result)를 주고받는 상호작용의 핵심이 됩니다. 여기에 제이슨 스키마(JSON Schema)를 기반으로 도구(Tools)를 정의하면 모델이 복잡한 작업을 수행하기 위해 필요한 기능을 스스로 판단하고 호출할 수 있게 됩니다. 마지막으로 모델 선택과 토큰 제한, 확장 사고(Extended Thinking) 예산 등을 조절하는 모델 및 구성(Model & Config) 옵션을 통해 API 동작의 세부 사항을 정교하게 제어할 수 있습니다. 이 네 가지 요소의 구조와 유기적인 연결 방식을 이해하면 Claude의 능력을 극대화하여 더욱 강력한 인공지능 애플리케이션을 설계할 수 있는 핵심적인 통찰을 얻게 될 것입니다.

Read more →
3
2
2
0
0
3
1
5
3
0
2
0
0

구현 중인 린터의 코드 수정 제안 기능에 부분적으로 한번 형식 증명을 적용해볼만 할 것 같기도 하다

2
2
3
0
11
7

If a problem is improved by sleeping, it's probably a race condition.

If it's a race condition, then sleeping is never a correct solution to the problem... you're just making it less likely to happen, not fixing it...

I've seen this kind of bug and the root cause is almost always that something is writing to a nonblocking pipe/service/whatever and not retrying when it fails because the buffer is full.

Second most likely cause is a hidden message size limit somewhere that isn't respected.

fixupx.com/i/status/1999317065

0
0
0
3
1
1
5
2
0
2
0

Officially unemployed now after almost 5 years at aws working completely in the open on the Rust compiler.

With rustnl.org/fund/ and rustfoundation.org/media/annou both figuring out how to ensure maintainers are paid to do reviews, refactorings and mentoring, I'm optimistic I can continue doing my work in the future.

If your company uses Rust a lot and would like to support it and talk about how that support can either indirectly or directly benefit its Rust-writing employees, I'm happy to chat to explain both funds and make the connection to the right fund for you. Or just skip directly to one of the funds if you already know ppl there!

0
0
0
4
0
0

물론 소프트웨어 장인 정신에 가까운 것도 잃어버린지 오래되어 흔히 얘기하는 해커는 아니게 되었습니다. 그렇지만 AI로 바이브코딩이 가능해지고, 소프트웨어 엔지니어가 더 잘 사용할 수 있는 환경까지 마련되면서 소프트웨어 개발에 본질에 더 가까워질 수 있지 않나?라는 생각도 듭니다.

제가 생각하기엔 AI와 함께 인간 지능은 해결해야하는 문제와 이를 뒷받침하는 소프트웨어 구조에 더 잘 집중할 수 있다고 느꼈습니다. 그리고 이것들을 빠르게 반복하면서 개선할 수 있는 생산성까지 얻게된 셈이니까요. 적어도 몇년전부터 그리고 앞으로도 코딩에만 집중하지 못할 저에게는 그러한 부분이 더 크게 다가왔던것 같네요.

최근 바이브코딩에 너무 익숙해지며 생기는 반대 급부 문제도 있습니다만(모든 코드를 다 쉽게 accept한다던지 ㅋㅋㅋ), 발전된 기술을 사용하면서 오는 사이드 이펙트 정도로 생각하고 좋은 해결 방법을 계속 고민하면 되는 문제 정도라고 판단하고 있습니다.

세상은 너무 빠르게 바뀌고 있기 때문에 내년 여름쯤에는 또 다른 생각을 하고 있을수도 있겠습니다.

4
6
4

최적화 작업을 위해 프로파일러를 만들었는데 확실히 분석 도구가 있으니까 효율적으로 작업을 할 수 있게 된 것 같다. 이전에는 깜깜히 진행하는 느낌이였는데 본격적으로 활용할 수 있게 되니까 뭘 해야하지 잘 보이는 느낌임

2
4