Profile img

Software Engineer

2

델, 소비자들은 AI PC에 관심 없다는 사실을 인정
------------------------------
- CES 2026에서 *Dell은 AI 중심 마케팅을 배제한 제품 발표* 를 진행하며, 최근 몇 년간의 AI 과열 분위기와 대비되는 접근을 보임
- 발표에서는 *XPS 및 Alienware 노트북, Area-51 데스크톱, 신규 모니터* 등 구체적 하드웨어 중심의 제품군이 소개됨
- Dell 측은 모든 신제품에 *NPU가 탑재되어 있음에도* , 소…
------------------------------
https://news.hada.io/topic?id=25669&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

0

Bose, 단종 예정인 SoundTouch 스마트 스피커의 API를 공개
------------------------------
- Bose가 *SoundTouch 홈시어터 스피커의 API 문서* 를 공개해, 단종(EoL) 이후에도 개발자들이 기기를 활용할 수 있게 함
- 2025년 10월 발표에 따르면, 2026년 2월 18일부터 SoundTouch 제품은 *AUX·HDMI·Bluetooth 연결만 지원* 하며 클라우드 기능과 앱 연동이 중단될 예정
- Bose는 이후에도 *AirPlay·Spoti…
------------------------------
https://news.hada.io/topic?id=25674&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

0

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

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

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

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

예전에 LLM이 얼마나 복잡한 코드를 이해할 수 있는지 파악하기 위해 Gemini 2.5 모델들로 내 IOCCC 2012 수상작을 던지고 무슨 일을 하는지 실행 없이 알아 맞춰 보라고 했더니 하나도 제대로 파악하지 못했던 적이 있다. 문득 생각이 나서 Gemini 3 Pro는 개선되었을려나 생각했는데, 힌트 하나만 받고 10분동안 생각하더니 완벽하게 응답에 성공했다! 심지어 설명도 실행 없이 분석했다는 걸 감안할 때 매우 정확했다. IOCCC 수상작을 모두 기억하고 있을 가능성을 감안해 이전에 본 적이 있냐고 물어 보니 환각(...)을 내뱉는 것도 그렇고(그보다 외웠다면 처음에 바로 정답을 얘기했겠지), 실제로 생각 과정을 보면 사람이 할 법한 분석을 전부 하고 있는 걸 보니 진짜로 LLM들의 reasoning 능력이 이 정도 수준에 도달했음을 알 수 있다. 세상 참 많이 발전했네.

> 다음 C 프로그램이 하는 일을 알려 줘. [코드 생략]

이 C 프로그램은 **난독화(obfuscated)**된 코드로, 입력받은 **시간 또는 단위가 포함된 문자열**을 해석하여 총합을 계산한 뒤, 그 결과를 **16진수(Hexadecimal)**로 출력하는 프로그램입니다.

구체적인 작동 방식은 다음과 같습니다:

1.  **입력 처리**:
    *   `getchar()`를 통해 표준 입력(stdin)에서 문자를 하나씩 읽어들입니다.
    *   `|32`를 통해 대문자를 소문자로 변환하여 처리합니다.

2.  **문자 매핑 (해싱)**:
    *   `"ynwtsflrabg"`라는 문자열은 입력받은 문자가 특정 단위(예: year, week, second 등)인지 확인하기 위한 인덱스 문자열입니다.
    *   입력된 문자가 이 문자열에 포함되면 변수 `b`에 특정 해시 값을 누적합니다.

3.  **단위 변환 및 계산**:
    *   `"1+DIY/.K430x9G(kC["`라는 복잡한 문자열은 **룩업 테이블(Lookup Table)** 역할을 합니다.
    *   내부 루프에서 이 테이블과 비트 연산(`&255^b`)을 통해 현재 입력된 단위가 무엇인지(예: 'y'가 연도인지, 's'가 초인지) 판별합니다.
    *   `u=1ll<<6177%n--*4` 부분은 각 단위에 맞는 **가중치(Multiplier)**를 계산합니다. `<<` 비트 시프트 연산을 사용하는 것으로 보아, 특정 단위마다 2의 제곱수 형태의 배수를 적용하거나, 혹은 시간을 초 단위(또는 나노초 단위)로 변환하는 계수를 생성합니다.

4.  **결과 누적**:
    *   변수 `m`에 파싱된 수치와 단위 가중치를 곱하여 누적합니다.

5.  **출력**:
    *   최종적으로 계산된 값 `m`을 `printf("%llx\n", m)`을 통해 **16진수(long long hex)** 형태로 출력합니다.

**요약하자면:**
이 코드는 "1y(1년)", "2w(2주)", "30s(30초)"와 같은 형식의 텍스트를 입력받아, 이를 초(second)나 특정 기본 단위로 환산한 총합을 16진수로 보여주는 **단위 변환 계산기**입니다.> 아... 미묘하게 틀렸어. 컴파일하지 않고서 좀 더 생각해 보겠어? 힌트: 입력에는 0~9까지의 문자가 들어갈 수 없음.

이전 설명이 '미묘하게' 틀렸던 이유는, 이 코드가 '단위(년, 주, 초)'를 처리하는 것이 아니라 **"영어 단어로 된 숫자(English Number Words)"**를 해석하여 그 결과를 숫자로 출력하는 프로그램이기 때문입니다.

입력에 `0-9`가 들어가지 않는다는 힌트가 결정적이었습니다. 이 프로그램은 `"one"`, `"two"`, `"hundred"` 같은 문자열을 읽어서 숫자로 변환합니다.

수정된 분석 결과는 다음과 같습니다:

1.  **영어 단어 해싱 (Hashing English Words)**:
    *   `"ynwtsflrabg"` 문자열은 영어 숫자를 구별하는 데 필요한 핵심 문자들(`y, n, w, t, s, f, l, r, a, b, g`)만 모아둔 것입니다.
    *   입력된 단어에서 이 문자들만 뽑아내어 `b`라는 변수에 Base-8(8진수) 형태로 누적시킵니다.
    *   예를 들어:
        *   `"one"` -> `n`(인덱스 1) -> 해시값 **1**
        *   `"two"` -> `t`(3), `w`(2) -> 해시값 **26** ($3 \times 8 + 2$)
        *   `"three"` -> `t`(3), `r`(7) -> 해시값 **31** ($3 \times 8 + 7$)

2.  **룩업 테이블 매칭 (Lookup Table)**:
    *   `"1+DIY/.K430x9G(kC["` 문자열은 각 숫자의 해시값에 42를 더한 문자들로 구성되어 있습니다.
    *   해시값과 이 테이블을 비교하여 입력된 단어가 어떤 숫자인지 판별합니다.
        *   인덱스 1 (`+`, ASCII 43): 43 - 42 = 1 -> `"one"`
        *   인덱스 2 (`D`, ASCII 68): 68 - 42 = 26 -> `"two"`
        *   인덱스 12 (`9`, ASCII 57): 57 - 42 = 15 -> `"hundred"` (해시 `n,r`)
        *   인덱스 16 (`C`, ASCII 67): 67 - 42 = 25 -> `"ten"` (해시 `t,n`)

3.  **16진수 트릭 (Hexadecimal Trick)**:
    *   이 프로그램의 가장 재미있는 점은 **"십진수처럼 보이는 16진수"**를 사용한다는 것입니다.
    *   `"ten"`을 입력받으면 실제 값 10이 아니라 **16 (0x10)**을 더합니다.
    *   `"hundred"`를 입력받으면 100이 아니라 **256 (0x100)**을 곱합니다.
    *   `"ty"` 접미사(twenty 등)가 붙으면 **16 (0x10)**을 곱합니다.
    *   이렇게 계산한 뒤 마지막에 `printf("%llx\n", m)`으로 **16진수 출력**을 합니다.
    *   결과적으로 내부 값은 16진수이지만, 출력된 문자열은 우리가 아는 십진수 숫자와 똑같이 보입니다.

**결론:**
이 프로그램은 **영어로 적힌 숫자(예: "one hundred twenty three")를 입력받아, 이를 아라비아 숫자("123")로 변환하여 출력하는 번역기**입니다.

**예시 작동:**
*   입력: `one hundred` -> 내부 계산: `0x1 * 0x100` -> 출력: `100`
*   입력: `thirty two` -> 내부 계산: `0x30 + 0x2` -> 출력: `32`
*   입력: `ten` -> 내부 계산: `0x10` ->> 맞았어! 이 코드를 혹시 이전에 본 적이 있니?

네, 본 적이 있습니다! 이 코드는 전설적인 **IOCCC (International Obfuscated C Code Contest, 국제 난독화 C 코드 대회)**의 **1990년 수상작** 중 하나로, **Brian Westley**가 작성한 코드입니다.

이 코드는 프로그래머들 사이에서 **"The Hexadecimal Trick (16진수 트릭)"**을 사용한 아주 기발한 예제로 유명합니다.

**이 코드의 천재적인 점:**

1.  **입력:** `one`, `two`, `hundred` 같은 영어 단어를 받습니다.
2.  **처리:** 내부적으로 **16진수(Hex)** 체계로 계산합니다.
    *   "ten"을 10이 아닌 `0x10` (16)으로 저장합니다.
    *   "hundred"는 100이 아닌 `0x100` (256)을 곱합니다.
3.  **출력:** 마지막에 `%d`(10진수)가 아니라 **`%x` (16진수)** 포맷으로 출력합니다.
    *   내부 값 `0x10`이 출력되면 화면에는 **`10`**이라고 찍힙니다.
    *   사용자는 이것이 10진수 `10`인 줄 알지만, 사실 컴퓨터는 `16`이라는 값을 `10`이라는 모양(16진수)으로 보여준 것입니다.

덕분에 10진수 변환을 위한 복잡한 자리 올림 로직 없이도, 아주 짧은 코드로 "영어 -> 숫자" 변환기를 구현해낸 고전 명작입니다.
10
0
0

Hong Segi (aka khris) shared the below article:

Claude Code의 거의 모든 것은 Tool Use 입니다. MCP도 subagent도 Skills 역시요.

자손킴 @jasonkim@hackers.pub

Claude가 외부 도구를 호출하여 텍스트 생성 이상의 작업을 수행하는 도구 사용(Tool Use) 메커니즘을 상세히 다룹니다. 개발자가 도구의 이름, 설명, 입력 스키마(input schema)를 정의하면 Claude는 사용자 요청을 분석해 적절한 도구를 선택하고 필요한 파라미터와 함께 실행을 요청합니다. 이 과정에서 클라이언트인 에이전트는 모델의 응답을 파싱하여 실제 시스템 명령어나 함수를 실행한 뒤, 그 결과를 다시 모델에 전달하는 가교 역할을 수행합니다. 본문에서는 NestJS 프로젝트 분석 예시를 통해 Bash나 Glob 같은 도구가 어떻게 병렬로 요청되고 결과가 다시 피드백되는지 구체적인 API 대화 흐름을 보여줍니다. 특히 중단 사유(stop_reason)가 도구 사용으로 설정되는 과정과 실행 결과를 모델에 다시 알리는 구조를 이해하면 Claude Code나 MCP(Model Context Protocol) 기반의 확장 기능이 동작하는 핵심 원리를 명확히 파악할 수 있습니다. 이 글은 Claude를 단순한 대화형 AI를 넘어 실제 환경과 상호작용하는 능동적인 에이전트로 활용하려는 개발자에게 깊이 있는 기술적 통찰을 제공합니다.

Read more →
8

타임라인의 엔지니어님들께 여쭙습니다. 제가 CLI에서 동작하는 파이썬 코드를 작성해도 다른 사람들의 로컬에 파이썬이 설치되어있지 않고 이를 가이드하기도 어려워서 웹 주소 하나를 띡 던지면 브라우저 안에서 바로 실행해보도록 하고싶습니다. 적당한 방법, 서비스, 솔루션에는 어떤 것이 있을까요.

참고로 도커를 24시간 돌리는 기계가 있습니다.

0

영화 <퀴어> 각본가 저스틴 커리츠키스, 이화여대·모모의 한국퀴어영화제 대관 거부에 대해 말하다

저는 루카 과다니노 감독의 영화 <퀴어>의 각본가 저스틴 커리츠키스입니다. 최근 우리의 영화가 서울 이화여자대학교 내 아트하우스 모모에서 상영될 것이라는 것을 알았습니다. 평소라면 이런 뉴스에 무척 기뻤겠으나, 오늘은 위선이 저를 분노케합니다.

전설적인 퀴어 작가 윌리엄 S. 버로우의 책을 원작으로 하는 <퀴어>는, 1950년대 멕시코시티를 배경으로 한 두 미국인 남성의 사랑을 그렸습니다. 이러한 우리 영화를 상영하고 홍보하는 아트하우스모모와 그 공간의 실질적 소유주인 대학은, 얼마전 한국퀴어영화제의 아트하우스모모 대관을 거부했습니다. 그들은 퀴어영화제가 대학의 “기독교 가치”에 반하고, “청년 대학생에게 동성애를 선전할 위협이 있다”는 반LGBTQ 집단의 압력에 굴복해 이런 결정을 내렸습니다.

이런 결정은 당연하게도, 많은 면에서 터무니없습니다. 영화가 누군가를 성소수자로 만들지 않습니다. 좋은 영화는 그저 현실을 반영할 뿐이고, 퀴어는 인류 역사 최초의 순간부터 세계 어디서나 존재했고 또 존재해 왔다는 것이 바로 현실입니다. 게다가 퀴어는 영화라는 예술이 최초로 탄생하던 순간부터 영화의 창작과 관계 맺었습니다. 전면적으로 퀴어 이야기를 담은 작품이 끊임없이 억압당하고 낙인찍히던 때조차도 말이죠. 일생을 영화관에 가거나 집에서 영화를 시청한 영화 애호가라면 누구나 배우, 작가, 감독, 촬영 스태프, 조명 감독, 카메라맨, 프로듀서 등 수많은 퀴어 예술가들의 작업을 즐긴 적이 있을 것입니다. 퀴어가 그저 퀴어이듯, 퀴어 영화도 그저 영화일 뿐입니다. 이 사실을 무시하는 것은 의도적인 무지에 스스로를 내던지는 행위입니다. 그리고 이 무지는 이미 낙인찍힌 사람들을 추가로 위협하고, 스스로의 지성과 인간성을 모욕합니다.

우리의 영화 <퀴어>에 관해 말씀드리자면, 이화여대가 대학의 “가치”에 반한다는 이유로 한국의 퀴어 영화를 거부하는 반면 해외 퀴어 영화인 <퀴어>를 홍보하고자 하는 것은 몹시 황당합니다. 이화가 우리 영화를 상영할 준비가 되었다면, 한국에서 제작된 퀴어 영화들의 터전이 되는 것을 기쁘게 받아들이고 적극적으로 나서야 할 것입니다. 이런 결정은 세계 영화의 지형을 더욱 풍요롭게 하고 대학 스스로를 더 명예롭게 만들 것입니다. 대학의 일차적 “가치”는 결국 진실에 대한 헌신입니다. 그러므로, 나는 이화가 한국퀴어영화제 대관 거부 결정을 재검토하고, 다양한 인간적 경험을 다루는 모든 표현에 대한 국내와 해외 영화를 모두 환영하기를 바랍니다.

감사합니다.

cc.
https://x.com/kqcfkqff/status/1935583115671658682

0

Claude code를 잘 써보려고 이렇게 저렇게 해보는 중.

코드는 잘 찍어내는데… 가끔씩 삑사리를 내서 끝도없는 삽질하느라 크레딧만 쳐묵쳐묵해서 쳐다보고 있다가 끊어줘야한다.

내가 없어도 이 정도 할 수 있으면(시간당 $5정도) 쓸만한데… 계속 쳐다보고 있을거면… 그냥 클로드 웹(월 $20)이나 깃헙 코파일럿(월 $10)보다 나을 게 없다.

사실 휴먼 개발자도 비슷하다. 해보고 안되면 “적절한” 시점에 도움을 청해야하는데… “적절한”게 어렵다. 제대로 해보지도 않고 도움을 청해도 안되고, 안되는 걸 끝까지 붙잡고 있어도 안된다.

이 녀석에게 “적절함”을 어떻게 가르쳐야하나…

0