What is Hackers' Pub?

Hackers' Pub is a place for software engineers to share their knowledge and experience with each other. It's also an ActivityPub-enabled social network, so you can follow your favorite hackers in the fediverse and get their latest posts in your feed.

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
0
1
0
0
0
0
1
0
0
0
0

Speaking of migrating away from Mastodon, I still kind of chuckle about how upset bigot fedi got when I decided to leave Mastodon, something I’ve been talking about for a long time.

I can laugh about it because the general response of the fedi to their efforts to start up yet another hate campaign was JESUS PLEASE SHUT THE FUCK UP.

It was a very annoying moment that turned into one that became pretty funny.

I appreciated that.

0
0
0
0
0

본계는 따로 있고.. 취미 아마추어 그림러입니다. 섹계 클러스터때문에 올리기도 하지만 굳이 까자면 펄어비스, 프롬 소프트웨어 (다크소울, 엘든링) , 데드스페이스를 팝니다. 좀보이드 등 아포칼립스도요.. 구매인증 스샷+ 그림 올림. 그림은 그나마 완성도 있는 예전 수인 아가씨들로 올립니다. 그리핀도르 아갓쒸는 BDO세계관에서 커세어가 되었으니 옷은 알아서 바꿔주세요... 빈민가의 자녀가 순식간에 인어와 이세계 갑부의 자녀로 환생했다에 대해서.. (...)

0
0
0
0
0

앞으로 X는 SNS라기보단 그록 발전소가 될 공산이 큽니다. SNS는 돈이 되지 않으며, X는 (이사회와 경영진에 의해 운영되었던) 과거와 다른 구조(외부 간섭을 받지 않는 구조)를 가지고 있어서 수익에 대한 압박이 계속 들어올 겁니다. X가 수익을 낼 수 있는 유일한 기반은 그록AI입니다. 머스크 이전의 트위터는 상장사였어요. 당장의 주가 방어와 분기 실적이 필요했습니다. 그래서 SNS로서의 정체성을 지키면서(광고 유지) 트래픽을 유지하는데 집중했습니다. 우리가 아는 SNS의 구조입니다.

0

中学の頃の同級生にマルチに誘われた村上さん
「もう十分幸せだし、お金あるから大丈夫」

〜4年後〜
「家建てる貯金を全部Misskey.ioにつぎ込んで一文無しになったけど幸せです!」

1

The wait is over! 📢
We are excited to announce the NEW version of **Ratatui**! 👨‍🍳🐁

🦀 A Rust library for cooking up TUIs (@ratatui_rsRatatui)

🌠 Added "no_std" support for embedded targets, modularized architecture, major widget & layout upgrades!

🧀 Highlights: ratatui.rs/highlights/v030

➡️ Our new website: ratatui.rs

⭐ GitHub: github.com/ratatui/ratatui

0
1

昔の知り合いから急に連絡ある時のパターン
・金貸してくれ
・投票してくれ
・一緒に闘ってくれ

だいたいどれも断る。不義理する人と組むと、いざという時にそいつらは裏切るので。

0
0
0
1
0

BT 怖すぎ

国が個人データを私たちの安心安全を最優先にして「活用」するはずがないと思っているし、もしそういう倫理観があったとしても国のデータ管理には全然信用がないです。マイナンバーで既にズタボロの実績あるじゃん。

0
0
0
0

ダイアログの中に「キャンセル」「保存」ボタンを気軽に置こうとしますけれども、それでダイアログ内だけの状態がまた一つ増えることにデザイナー様はご自覚おありなのかしら。
という愚痴でした。
まあ別にコスト大したことないからいいんですけどね。数が多いとやっぱ実装時間に影響しますよ。

0
0
0
0

Christopher Tanner (Guardian letters) is right:

we don't need a social mobility plan what we need is an equality plan... we don't need to play the game of class difference better, we need to reduce (and reduce the influence of) class difference(s) in the first place.

A plan for equality is what we need (what one might have expected from a so-called left Govt, but yes I know they're Labour in Name Only)... however, this is something our political class will never deliver!

I disagree with the very idea of having a social mobility plan. The term itself captures the essence of what is wrong – class and inequality, and the notion that being upwardly mobile is the path to success. We are still a deeply class-divided society, underpinned by vast differences in economic and educational opportunity that recreate the social markers and attitudinal differences towards achievement and aspiration that constantly divide us.

We need an equality plan, not a social mobility one. As in 1997, a Labour government with a huge majority is failing to come up with a narrative that goes beyond ideas that merely tinker around the edges of the real challenge. 
Christopher Tanner 
St Ives, Cambridgeshire
0
0
0
0
0
0
1
1

성탄 파티 급습, ‘산타’까지 끌고 간 이스라엘···팔레스타인인 다수 체포 www.khan.co.kr/article/2025... "팔레스타인 내 그리스도교 신자들을 겨냥한 이스라엘 측 공격도 증가하는 추세다. 올해 3월에 나온 보고서에 따르면 교회 시설을 상대로 32건의 공격이 일어났으며 그리스도교 신자들을 겨냥한 물리적 공격 45건이 발생했다. 레오 14세 교황은 이날 즉위 후 첫 성탄절 강론에서 무방비 상태의 주민 수십만명이 천막에서 추위와 비바람을 견디는 가자지구의 참담한 인도적 상황을 규탄했다."

성탄 파티 급습, ‘산타’까지 끌고 간 이스라엘···팔...

0

Related:8-But something else responsible for a large & steadily increasing share of public knowledge production, also has no organic reality-detection capability=large language model(LLM). This is central to what we mean when we argue that LLMs destroy knowledge: that for every verifiably accurate account of the world, LLMs produce a Borgesian library of superficially plausible alternates–sufficiently plausible that effort & energy must be invested
- social.coop/@adamgreenfield/11

Related:9-Don’t think & decide yourself, only follow instructions of others.
“In 1941 book, Escape from Freedom, German psychoanalyst Erich Fromm argued that the rise of fascism could partly be explained by people preferring to surrender freedom in exchange for reassuring certainty of subordination. AI-LLM (produces information but without necessarily deepening human understanding) offers new way to surrender burden to think & decide for yourself.”
- mastodon.social/@andrewstroehl

0
1
0
0

黎明期からインターネットを使ってた身だと、極端な言い方をすれば「インターネットにアップしたものはフリー素材」みたいによく言われていたから、SNS時代からの人とは感覚が違うというのはありそう。
いや流石に私はフリー素材だと思ってる訳ではないけど、そのくらいの覚悟でいるのがちょうどいいというか。

よく「ダウンロード禁止!」みたいに言う人もいるけど、ほとんどの場合、相手の端末に表示されている時点でダウンロード(キャッシュ)はされちゃってるから、ダウンロードされたくないならインターネットにアップしちゃダメなのよな…

5
1
0