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

After like four years here I’ve finally discovered which is the Good pizza here, and I’m so happy. The Salem/Albany area has plenty of Fine pizza, a little bit of Fancy pizza, but until a month ago I didn’t know which was the Good pizza. (It’s Crazy Dough on Commercial, FYI)

0
2
1

本週《科技新報》報導德國什霍邦 (Schleswig-Holstein) 轉向自由開源軟體環境的新聞,不僅省下大筆軟體授權支出、更贏得了無價的數位主權。

technews.tw/2025/12/15/schlesw

SLAT 長年關注 PMPC 與數位主權議題,什霍邦高達 30,000 名使用者的大遷徙,不僅是我們在報導中多次提及的指標性個案,也有與我們相當熟稔的社群夥伴參與其中:在 2024 年於台北舉辦的 LibreOffice 亞洲年會中,主講「政府組織導入 LibreOffice Technology」議題的 Lothar Becker 先生,他的公司 ".riess applications" 在什霍邦的遷徙計畫中,就扮演了重要的技術支援角色。

我們找到了 Lothar Becker 與 Thorsten Behrens 在 LibreOffice Conference 2024 的演講錄影,對什霍邦的遷徙過程有更深入的分析:

youtube.com/watch?v=Qx0IQqhO6hY

我們可以看到,遷徙專案最重要的不是技術有多先進、或是能節省多少預算,而是能不能「接住使用者」。面向使用者的支援生態體系,是成功達成技術遷徙不可或缺的關鍵元件。以下針對演講中關於支援生態系統的部份,進行整理和節錄:

---
什霍邦建立了一個三層式的支援生態系統來確保遷移順利進行:

## 第一、二級支援:Dataport

第一和第二級支援由 Dataport 負責處理。Dataport 是一家政府擁有的公司,專門為德國北部邦提供 IT 服務。他們營運電腦設備和資料中心,並提供各種層級的技術支援服務,從第二、第三級支援到全方位服務,具體取決於各邦的設置需求。在什霍邦的 LibreOffice 遷移專案中,Dataport 建立了「辦公能力中心」 (Competence Center Office)。

## 第三級支援:專業顧問公司

第三級支援由 ".riess applications" 及 Schaad 等專業顧問提供。他們的角色不僅是提供技術支援,還包括提升 Dataport 團隊的技能,使他們能夠在長期內逐漸接管更多的支援工作。

## 辦公能力中心的具體工作

辦公能力中心實施了多項創新的支援策略,獲得各部會的熱烈回應:

1. 專門聯絡人制度:為每個部會指派來自 Dataport 的專門人員,作為 LibreOffice 的主要聯絡窗口。

2. 咖啡店工作坊:這是一種非正式的聚會形式,員工可以遠端或親自參加,提出任何問題。即使沒有具體問題,工作坊也會準備主題進行教學,例如如何使用 Writer 進行郵件合併、如何使用範本等。這些 10-15 分鐘的簡短教學往往能引發長達數小時的深入討論。這個咖啡店概念和專門人員制度獲得了非常好的回饋。

3. 支援信箱:建立了專門的聯絡管道,讓工作人員或專門人員可以提交請求或錯誤回報,由第三級支援團隊直接處理並給予答覆。

值得注意的是,這個能力中心並非專門針對 LibreOffice 或 Microsoft Office,而是同時支援兩套辦公軟體。這種做法被證明是非常明智的,因為團隊中包含了熟悉 Microsoft Office 的支援人員,使得遷移過程更加順暢。

## 開源的獨特優勢:產品開發層
這個支援生態系統還包含一個只有開源軟體才能提供的獨特元素:直接改進產品本身的能力。透過 Allotropia 等公司,他們能夠進行錯誤修復、功能開發、調整組態,以及新增額外的組態選項。這種能力使得整個團隊形成一個緊密合作的生態系統,共同致力於讓遷移專案成功。所有這些工作都在數位化部長 Jan Philipp Albrecht 的長期規劃和支持下進行。

---
這個完整的三層支援生態系統,結合了政府內部資源、專業顧問,以及開源軟體開發能力,形成了一個強大且可持續的支援架構,確保了什霍邦的 LibreOffice 遷移計畫能夠順利推進。

-Holstein

0
0
1
0
0
0
0
0
0
0

숲속의 작은 마녀 하실 분!!!!!!
20% 할인이지만 안 비싸서 14400원이라구요
https://store.steampowered.com/app/1594940/_/

이런 분께 추천합니다: 스타듀 밸리, 동물의 숲, 귀여운 것, 도트, 채집&제작&도감, 고양이, 퍼리형 인외, 국산 게임 중에 한두 개라도 좋아하는 분
느긋한 힐링, NPC와 교류 위주, 도감작… 어느 쪽이든 원하는 스타일로 플레이 가능

타이틀 일러스트를 무려 양말도깨비 작가인 만물상님이 담당!! (근데 이건 게임 내용과 무관하긴 해 허위매물 ㅈㅅ)

인기 있을 것 같은 잘생긴 늑대 퍼리는 따로 있는데 찍어둔 게 없어서 제가 좋아하는 초반 등장 NPC들을 올릴게요 (※ 인간 캐릭터도 비슷한 비중으로 나옵니다…)

0

本週《科技新報》報導德國什霍邦 (Schleswig-Holstein) 轉向自由開源軟體環境的新聞,不僅省下大筆軟體授權支出、更贏得了無價的數位主權。

technews.tw/2025/12/15/schlesw

SLAT 長年關注 PMPC 與數位主權議題,什霍邦高達 30,000 名使用者的大遷徙,不僅是我們在報導中多次提及的指標性個案,也有與我們相當熟稔的社群夥伴參與其中:在 2024 年於台北舉辦的 LibreOffice 亞洲年會中,主講「政府組織導入 LibreOffice Technology」議題的 Lothar Becker 先生,他的公司 ".riess applications" 在什霍邦的遷徙計畫中,就扮演了重要的技術支援角色。

我們找到了 Lothar Becker 與 Thorsten Behrens 在 LibreOffice Conference 2024 的演講錄影,對什霍邦的遷徙過程有更深入的分析:

youtube.com/watch?v=Qx0IQqhO6hY

我們可以看到,遷徙專案最重要的不是技術有多先進、或是能節省多少預算,而是能不能「接住使用者」。面向使用者的支援生態體系,是成功達成技術遷徙不可或缺的關鍵元件。以下針對演講中關於支援生態系統的部份,進行整理和節錄:

---
什霍邦建立了一個三層式的支援生態系統來確保遷移順利進行:

## 第一、二級支援:Dataport

第一和第二級支援由 Dataport 負責處理。Dataport 是一家政府擁有的公司,專門為德國北部邦提供 IT 服務。他們營運電腦設備和資料中心,並提供各種層級的技術支援服務,從第二、第三級支援到全方位服務,具體取決於各邦的設置需求。在什霍邦的 LibreOffice 遷移專案中,Dataport 建立了「辦公能力中心」 (Competence Center Office)。

## 第三級支援:專業顧問公司

第三級支援由 ".riess applications" 及 Schaad 等專業顧問提供。他們的角色不僅是提供技術支援,還包括提升 Dataport 團隊的技能,使他們能夠在長期內逐漸接管更多的支援工作。

## 辦公能力中心的具體工作

辦公能力中心實施了多項創新的支援策略,獲得各部會的熱烈回應:

1. 專門聯絡人制度:為每個部會指派來自 Dataport 的專門人員,作為 LibreOffice 的主要聯絡窗口。

2. 咖啡店工作坊:這是一種非正式的聚會形式,員工可以遠端或親自參加,提出任何問題。即使沒有具體問題,工作坊也會準備主題進行教學,例如如何使用 Writer 進行郵件合併、如何使用範本等。這些 10-15 分鐘的簡短教學往往能引發長達數小時的深入討論。這個咖啡店概念和專門人員制度獲得了非常好的回饋。

3. 支援信箱:建立了專門的聯絡管道,讓工作人員或專門人員可以提交請求或錯誤回報,由第三級支援團隊直接處理並給予答覆。

值得注意的是,這個能力中心並非專門針對 LibreOffice 或 Microsoft Office,而是同時支援兩套辦公軟體。這種做法被證明是非常明智的,因為團隊中包含了熟悉 Microsoft Office 的支援人員,使得遷移過程更加順暢。

## 開源的獨特優勢:產品開發層
這個支援生態系統還包含一個只有開源軟體才能提供的獨特元素:直接改進產品本身的能力。透過 Allotropia 等公司,他們能夠進行錯誤修復、功能開發、調整組態,以及新增額外的組態選項。這種能力使得整個團隊形成一個緊密合作的生態系統,共同致力於讓遷移專案成功。所有這些工作都在數位化部長 Jan Philipp Albrecht 的長期規劃和支持下進行。

---
這個完整的三層支援生態系統,結合了政府內部資源、專業顧問,以及開源軟體開發能力,形成了一個強大且可持續的支援架構,確保了什霍邦的 LibreOffice 遷移計畫能夠順利推進。

-Holstein

0
0
0

omasanori強く周知情報です。

「毎年恒例の〈書物復権〉共同復刊、2026 年は第30 回を数えます。復刊の候補にあがったのは118 点119 冊と、充実したリストをそろえることができした。参加各社がそれぞれの出版の歴史のなかで、この後も読者に届けたいと考えている各分野の基本書です。ぜひ、ご覧のうえリクエストいただき、1 点でも多くの復刊の実現にご協力ください。応募期間は2026 年2 月28 日まで、ぜひ皆さまから多数のリクエストをいただけますようお願いします。また今回も、通常では復刊が難しい少数の要望にも応えるべく、個別の注文に対応するオン・デマンド版での復刊も実施いたします。」

【書物復権2026】10社共同復刊 第30回 ― リクエストで名著がよみがえる!応募締切:2026年2月28日 | 紀伊國屋書店 - 本の「今」に会いに行こう
store.kinokuniya.co.jp/event/fukken2026/

1
0
0
0
0
0
1

to-ti.in/product/mantra-arya
「生活保護特区を出よ。」全話無料公開始まったよ〜〜〜!!!!12/26正午まで。

差別に抗う、権力に抵抗する人々の物語。最近の展開は特に「今」たくさんの人に読まれてほしいけど、登場人物の希死念慮や自死と推測される描写もあるので読む際は無理せず…。全話無料期間中に読めなくてもマンガルト(リイド社の漫画配信サイト)なら待てば無料で全話読めると思う。

0
0
0
0
0

to-ti.in/product/mantra-arya
「生活保護特区を出よ。」全話無料公開始まったよ〜〜〜!!!!12/26正午まで。

差別に抗う、権力に抵抗する人々の物語。最近の展開は特に「今」たくさんの人に読まれてほしいけど、登場人物の希死念慮や自死と推測される描写もあるので読む際は無理せず…。全話無料期間中に読めなくてもマンガルト(リイド社の漫画配信サイト)なら待てば無料で全話読めると思う。

0
1
1
0
1
0
0
1
1
0
0
0
0

Jaeyeol Lee shared the below article:

Claude API의 Request Body 분석

자손킴 @jasonkim@hackers.pub

Claude API의 Request는 크게 4가지 분류를 가지고 있다.

  • System Messages
  • Messages
  • Tools
  • Model & Config

각각은 다음과 같은 역할을 한다.

System Messages

System Messages는 Claude에게 역할, 성격, 제약사항 등을 지시하는 최상위 설정이다. 배열 형태로 여러 개의 시스템 메시지를 전달할 수 있다.

"system": [
  {
    "type": "text",
    "text": "You are Claude Code, Anthropic's official CLI for Claude.",
    "cache_control": {
      "type": "ephemeral"
    }
  },
  {
    "type": "text",
    "text": "You are an interactive CLI tool that helps users with software engineering tasks...",
    "cache_control": {
      "type": "ephemeral"
    }
  }
]

System Messages에는 다음과 같은 내용이 포함된다:

  • Claude의 페르소나 및 역할 정의
  • 보안 및 윤리 가이드라인
  • 응답 형식 및 톤 설정
  • 프로젝트 정보 등 컨텍스트
  • cache_control을 통한 캐싱 설정

Messages

Messages는 userassistant 역할이 번갈아가며 주고받은 대화를 누적하는 배열이다. assistant 메시지는 반드시 모델의 실제 응답일 필요가 없다. 이를 활요해 API 호출 시 assistant 메시지를 미리 작성해서 전달하면, Claude는 그 내용 이후부터 이어서 응답한다. 이를 Prefill 기법이라 한다.

이 대화 기록을 통해 Claude는 맥락을 유지하며 응답한다.

"messages": [
  {
    "role": "user",
    "content": [...]
  },
  {
    "role": "assistant",
    "content": [...]
  },
  {
    "role": "user",
    "content": [...]
  }
]

User Message

User의 content는 주로 두 가지 type으로 구성된다:

1. text - 사용자의 일반 메시지나 시스템 리마인더

{
  "role": "user",
  "content": [
    {
      "type": "text",
      "text": "선물을 주고받는 기능을 위한 entity를 설계하라."
    }
  ]
}

2. tool_result - Tool 실행 결과 반환

{
  "role": "user",
  "content": [
    {
      "tool_use_id": "toolu_01Qj7gnFLKWBNjg",
      "type": "tool_result",
      "content": [
        {
          "type": "text",
          "text": "## Entity 구조 탐색 보고서\n\n철저한 탐색을 통해..."
        }
      ]
    }
  ]
}

Assistant Message

Assistant의 content는 주로 세 가지 type으로 구성된다:

1. text - Claude의 응답 메시지

{
  "type": "text",
  "text": "선물 주고받기 기능을 위한 entity 설계를 시작하겠습니다."
}

2. thinking - Extended Thinking 기능 활성화 시 사고 과정 (signature로 검증)

{
  "type": "thinking",
  "thinking": "사용자가 선물을 주고받는 기능을 위한 entity 설계를 요청했습니다...",
  "signature": "EqskYIChgCKknyFYp5cu1zhVOp7kFTJb..."
}

3. tool_use - Tool 호출 요청

{
  "type": "tool_use",
  "id": "toolu_01Qj7gn6vLKCNjg",
  "name": "Task",
  "input": {
    "subagent_type": "Explore",
    "prompt": "이 NestJS TypeScript 프로젝트에서 entity 구조를 탐색해주세요...",
    "description": "Entity 구조 탐색"
  }
}

User와 Assistant의 협력

Tool 사용 흐름은 다음과 같이 진행된다:

  1. Assistant: tool_use로 Tool 호출 요청
  2. User: tool_result로 실행 결과 반환
  3. Assistant: 결과를 바탕으로 text 응답 또는 추가 tool_use

이 과정에서 어떤 Tool을 사용할 수 있는지는 tools 배열이 정의한다.

Tools

Tools는 Claude가 사용할 수 있는 도구들을 정의하는 배열이다. 각 Tool은 name, description, input_schema 세 가지 필드로 구성된다.

Tool의 기본 구조

"tools": [
  {
    "name": "ToolName",
    "description": "Tool에 대한 설명...",
    "input_schema": {
      "type": "object",
      "properties": {...},
      "required": [...],
      "additionalProperties": false,
      "$schema": "http://json-schema.org/draft-07/schema#"
    }
  }
]
필드 설명
name Tool의 고유 식별자. Claude가 tool_use에서 이 이름으로 호출
description Tool의 용도, 사용법, 주의사항 등을 상세히 기술. Claude가 어떤 Tool을 선택할지 판단하는 근거
input_schema JSON Schema 형식으로 입력 파라미터 정의

input_schema 구조

input_schema는 JSON Schema draft-07 스펙을 따르며, Tool 호출 시 필요한 파라미터를 정의한다.

"input_schema": {
  "type": "object",
  "properties": {
    "pattern": {
      "type": "string",
      "description": "The regular expression pattern to search for"
    },
    "path": {
      "type": "string",
      "description": "File or directory to search in. Defaults to current working directory."
    },
    "output_mode": {
      "type": "string",
      "enum": ["content", "files_with_matches", "count"],
      "description": "Output mode: 'content' shows matching lines, 'files_with_matches' shows file paths..."
    },
    "-i": {
      "type": "boolean",
      "description": "Case insensitive search"
    },
    "head_limit": {
      "type": "number",
      "description": "Limit output to first N lines/entries"
    }
  },
  "required": ["pattern"],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

properties 내 각 파라미터 정의

각 파라미터는 다음 필드들로 정의된다:

필드 설명
type 데이터 타입 (string, number, boolean, array, object 등)
description 파라미터의 용도와 사용법 설명
enum (선택) 허용되는 값의 목록. 이 중 하나만 선택 가능
default (선택) 기본값

input_schema의 메타 필드

필드 설명
type 항상 "object"
properties 파라미터 정의 객체
required 필수 파라미터 이름 배열. 여기 포함되지 않은 파라미터는 선택적
additionalProperties false면 정의되지 않은 파라미터 전달 불가
$schema JSON Schema 버전 명시

실제 예시: Grep Tool

{
  "name": "Grep",
  "description": "A powerful search tool built on ripgrep\n\n  Usage:\n  - ALWAYS use Grep for search tasks...",
  "input_schema": {
    "type": "object",
    "properties": {
      "pattern": {
        "type": "string",
        "description": "The regular expression pattern to search for in file contents"
      },
      "path": {
        "type": "string",
        "description": "File or directory to search in (rg PATH). Defaults to current working directory."
      },
      "glob": {
        "type": "string",
        "description": "Glob pattern to filter files (e.g. \"*.js\", \"*.{ts,tsx}\")"
      },
      "output_mode": {
        "type": "string",
        "enum": ["content", "files_with_matches", "count"],
        "description": "Output mode. Defaults to 'files_with_matches'."
      },
      "-A": {
        "type": "number",
        "description": "Number of lines to show after each match"
      },
      "-B": {
        "type": "number",
        "description": "Number of lines to show before each match"
      },
      "-i": {
        "type": "boolean",
        "description": "Case insensitive search"
      },
      "multiline": {
        "type": "boolean",
        "description": "Enable multiline mode. Default: false."
      }
    },
    "required": ["pattern"],
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-07/schema#"
  }
}

이 Tool을 Claude가 호출할 때의 tool_use:

{
  "type": "tool_use",
  "id": "toolu_01ABC123",
  "name": "Grep",
  "input": {
    "pattern": "class.*Entity",
    "path": "src/modules",
    "glob": "*.ts",
    "output_mode": "content",
    "-i": true
  }
}

requiredpattern만 있으므로 나머지는 선택적이다. Claude는 input_schemadescription을 참고하여 적절한 파라미터를 선택한다.

Model & Config

마지막으로 모델 선택과 각종 설정 옵션들이다:

{
  "model": "claude-opus-4-5-20251101",
  "max_tokens": 32000,
  "thinking": {
    "budget_tokens": 31999,
    "type": "enabled"
  },
  "stream": true,
  "metadata": {
    "user_id": "user_2f2ce5dbb94ac27c8da0d0b28dddf815fc82be54e0..."
  }
}
옵션 설명
model 사용할 Claude 모델 (claude-opus-4-5, claude-sonnet-4-5 등)
max_tokens 최대 출력 토큰 수
thinking Extended Thinking 설정 (budget_tokens로 사고 토큰 예산 설정)
stream 스트리밍 응답 여부
metadata 사용자 ID 등 메타데이터

마치며

지금까지 Claude API Request Body의 4가지 핵심 구성 요소를 살펴보았다:

  1. System Messages: Claude의 역할과 행동 방식을 정의
  2. Messages: user-assistant 간 대화 기록을 누적하며, tool_use/tool_result를 통해 Tool과 상호작용
  3. Tools: JSON Schema 기반으로 사용 가능한 도구의 이름, 설명, 입력 파라미터를 정의
  4. Model & Config: 모델 선택, 토큰 제한, 스트리밍 등 설정

이 구조를 알면 Claude가 주고받은 메시지를 어떻게 관리하는지, 도구를 어떻게 사용하는지 이해하고 API를 더 효과적으로 활용할 수 있다.

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

스팀펑크 배경에 크툴루와 scp를 한스푼씩 추가한 모험+연기+착각물 신비의 제왕 1부가 리디 마크다운에서 60퍼로 나왔습니다 평소 너무 비싸서 망설였던 분들 이번 기회에 한번 어떠십니까!!!!

RE: https://bsky.app/profile/did:plc:5oyqmlcgei3c7dpr7gfs5er7/post/3m6zbq77dpc2f

0

announces ‘Patriot Games,’ a youth athletic competition celebrating USA’s 250th birthday

“In the fall, we will host the first ever Patriot Games, an unprecedented four-day athletic event featuring the greatest high school athletes — one young man & one young woman from each state & territory,” Trump said.

He also highlighted plans to begin construction on a new arch monument.

A UFC fight on the South Lawn will take place on his birthday, Flag Day, June 14.”

cnn.com/2025/12/18/politics/pa

0
1