Profile img

초무

@2chanhaeng@hackers.pub · 75 following · 60 followers

1
1
0
0
0

개발자들이 연합우주에 잘 오지 않는 이유는 연합우주로 취업하기 어렵기 때문이다 연합우주 카르텔을 만들어서 서로 밀고 끌고 해줘야 한다!! (절대 제가 일자리를 알아보고 있어서 하는 말입니다)

20
1
3
1
1
1
0
0

개웃기네 친구가 클로드에 T로 만드는 프롬프트 잔뜩 넣어놓고 쓰다가 야근 때문에 빡쳐서 야근 안 하는 법 알려달라니까 이직하래 그래서 "이직은 조상님이 시켜주냐?" 하니까ㅋㅋㅋ

1

클로드로 뭐 좀 물어보려고 텍스트 파일 하나 넣고 돌렸더니 파일 너무 크다고 걍 뱉어버리길래 왤케 찡찡 대나 했더니 PDF 파일로 보니까 132쪽...
ㅈㅅ합니다

0

Hashnode 게시글을 불러오는 API를 기반으로 자기만의 정적 사이트 생성기 템플릿 굽는 분들이 계시길래, Hackers Pub도 이런게 되어야 하지 않나 싶었다. 실제로 graphql API를 까봤는데, 이론상으로 불가능하지는 않아서 도즈언 했는데 생각보다 잘 나온다..... Astro에다가 Hashnode API 연결한 예시를 베이스로 해서, hackerspub 버전으로 바꿔달라고 claude code한테 프롬프트 넣어줬더니 진짜 그냥 해줌.

HackersPub에서 제공하는 graphql API를 기반으로 정적 사이트를 구운 모습이다
8

Hashnode 게시글을 불러오는 API를 기반으로 자기만의 정적 사이트 생성기 템플릿 굽는 분들이 계시길래, Hackers Pub도 이런게 되어야 하지 않나 싶었다. 실제로 graphql API를 까봤는데, 이론상으로 불가능하지는 않아서 도즈언 했는데 생각보다 잘 나온다..... Astro에다가 Hashnode API 연결한 예시를 베이스로 해서, hackerspub 버전으로 바꿔달라고 claude code한테 프롬프트 넣어줬더니 진짜 그냥 해줌.

HackersPub에서 제공하는 graphql API를 기반으로 정적 사이트를 구운 모습이다

🚀 학생에서 전문 개발자로, 오픈소스가 만든 성장 스토리
리눅스 커널 기여 경험으로 본 도전과 극복의 여정

🐧 From Student to Professional: My Journey as an Open Source Developer
👤 Harry Yoo (Linux Kernel Developer @ Oracle)

티켓 event-us.kr/fossforall/event/1
세션 2025.fossforall.org/sessions/

1

Quick update on our release schedule! While we initially planned for Fedify 2.0 to follow version 1.9, we've decided to release Fedify 1.10 next instead. A few features originally slated for 1.9 need more time to mature, and we want to ensure Fedify 2.0 gets the careful attention it deserves for its breaking changes. This means you'll get incremental improvements sooner with 1.10—including our new RFC 6570 URI Template implementation for better expansion and pattern matching—while we continue preparing the more substantial architectural changes for 2.0 in parallel. Rest assured, this doesn't change our long-term roadmap; it just gives us more flexibility to deliver features when they're ready rather than holding them back for a major release.

1

클로드로 뭐 좀 물어보려고 텍스트 파일 하나 넣고 돌렸더니 파일 너무 크다고 걍 뱉어버리길래 왤케 찡찡 대나 했더니 PDF 파일로 보니까 132쪽...
ㅈㅅ합니다

2
0

Fedify 1.9.0: Security enhancements, improved DX, and expanded framework support

We are excited to announce Fedify 1.9.0, a mega release that brings major security enhancements, improved developer experience, and expanded framework support. Released on October 14, 2025, this version represents months of collaborative effort, particularly from the participants of Korea's OSSCA (Open Source Contribution Academy).

This release would not have been possible without the dedicated contributions from OSSCA participants: Jiwon Kwon (@z9mb1wwj), Hyeonseo Kim (@gaebalgom개발곰), Chanhaeng Lee (@2chanhaeng초무), Hyunchae Kim (@r4bb1t톡기), and An Subin (@nyeongAn Nyeong (安寧)). Their collective efforts have significantly enhanced Fedify's capabilities and made it more robust for the fediverse community.

Origin-based security model

Fedify 1.9.0 implements FEP-fe34, an origin-based security model that protects against content spoofing attacks and ensures secure federation practices. This critical security enhancement enforces same-origin policy for ActivityPub objects and their properties, preventing malicious actors from impersonating content from other servers.

The security model introduces a crossOrigin option in Activity Vocabulary property accessors (get*() methods) with three security levels:

// Default behavior: logs warning and returns null for cross-origin content
const actor = await activity.getActor({ crossOrigin: "ignore" });

// Strict mode: throws error for cross-origin content
const object = await activity.getObject({ crossOrigin: "throw" });

// Trust mode: bypasses security checks (use with caution)
const attachment = await note.getAttachment({ crossOrigin: "trust" });

Embedded objects are automatically validated against their parent object's origin. When an embedded object has a different origin, Fedify performs automatic remote fetches to ensure content integrity. This transparent security layer protects your application without requiring significant code changes.

For more details about the security model and its implications, see the origin-based security model documentation.

Enhanced activity idempotency

Activity idempotency handling has been significantly improved with the new withIdempotency() method. This addresses a critical issue where activities with the same ID sent to different inboxes were incorrectly deduplicated globally instead of per-inbox.

federation
  .setInboxListeners("/inbox/{identifier}", "/inbox")
  .withIdempotency("per-inbox")  // New idempotency strategy
  .on(Follow, async (ctx, follow) => {
    // Each inbox processes activities independently
  });

The available strategies are:

  • "per-origin": Current default for backward compatibility
  • "per-inbox": Recommended strategy (will become default in Fedify 2.0)
  • Custom strategy function for advanced use cases

This enhancement ensures that shared inbox implementations work correctly while preventing duplicate processing within individual inboxes. For more information, see the activity idempotency documentation.

Relative URL resolution

Fedify now intelligently handles ActivityPub objects containing relative URLs, automatically resolving them by inferring the base URL from the object's @id or document URL. This improvement significantly enhances interoperability with ActivityPub servers that use relative URLs in properties like icon.url and image.url.

// Previously required manual baseUrl specification
const actor = await Actor.fromJsonLd(jsonLd, { baseUrl: new URL("https://example.com") });

// Now automatically infers base URL from object's @id
const actor = await Actor.fromJsonLd(jsonLd);

This change, contributed by Jiwon Kwon (@z9mb1wwj), eliminates a common source of federation failures when encountering relative URLs from other servers.

Full RFC 6570 URI template support

TypeScript support now covers all RFC 6570 URI Template expression types in dispatcher path parameters. While the runtime already supported these expressions, TypeScript types previously only recognized simple string expansion.

// Now fully supported in TypeScript
federation.setActorDispatcher("/{+identifier}", async (ctx, identifier) => {
  // Reserved string expansion — recommended for URI identifiers
});

The complete set of supported expression types includes:

  • {identifier}: Simple string expansion
  • {+identifier}: Reserved string expansion (recommended for URIs)
  • {#identifier}: Fragment expansion
  • {.identifier}: Label expansion
  • {/identifier}: Path segments
  • {;identifier}: Path-style parameters
  • {?identifier}: Query component
  • {&identifier}: Query continuation

This was contributed by Jiwon Kwon (@z9mb1wwj). For comprehensive information about URI templates, see the URI template documentation.

WebFinger customization

Fedify now supports customizing WebFinger responses through the new setWebFingerLinksDispatcher() method, addressing a long-standing community request:

federation.setWebFingerLinksDispatcher(async (ctx, actor) => {
  return [
    {
      rel: "http://webfinger.net/rel/profile-page",
      type: "text/html",
      href: actor.url?.href,
    },
    {
      rel: "http://ostatus.org/schema/1.0/subscribe",
      template: "https://example.com/follow?uri={uri}",
    },
  ];
});

This feature was contributed by Hyeonseo Kim (@gaebalgom개발곰), and enables applications to add custom links to WebFinger responses, improving compatibility with various fediverse implementations. Learn more in the WebFinger customization documentation.

New integration packages

Fastify support

Fedify now officially supports Fastify through the new @fedify/fastify package:

import Fastify from "fastify";
import { fedifyPlugin } from "@fedify/fastify";

const fastify = Fastify({ logger: true });
await fastify.register(fedifyPlugin, {
  federation,
  contextDataFactory: () => ({ /* your context data */ }),
});

This integration was contributed by An Subin (@nyeongAn Nyeong (安寧)). It supports both ESM and CommonJS, making it accessible to all Node.js projects. See the Fastify integration guide for details.

Koa support

Koa applications can now integrate Fedify through the @fedify/koa package:

import Koa from "koa";
import { createMiddleware } from "@fedify/koa";

const app = new Koa();
app.use(createMiddleware(federation, (ctx) => ({
  user: ctx.state.user,
  // Pass Koa context data to Fedify
})));

The integration supports both Koa v2.x and v3.x. Learn more in the Koa integration documentation.

Next.js integration

The new @fedify/next package brings first-class Next.js support to Fedify:

// app/api/ap/[...path]/route.ts
import { federation } from "@/federation";
import { fedifyHandler } from "@fedify/next";

export const { GET, POST } = fedifyHandler(federation);

This integration was contributed by Chanhaeng Lee (@2chanhaeng초무). It works seamlessly with Next.js App Router. Check out the Next.js integration guide for complete setup instructions.

CommonJS support

All npm packages now support both ESM and CommonJS module formats, resolving compatibility issues with various Node.js applications and eliminating the need for the experimental --experimental-require-module flag. This particularly benefits NestJS users and other CommonJS-based applications.

FEP-5711 collection inverse properties

Fedify now implements FEP-5711, adding inverse properties to collections that provide essential context about collection ownership:

const collection = new Collection({
  likesOf: note,  // This collection contains likes of this note
  followersOf: actor,  // This collection contains followers of this actor
  // … and more inverse properties
});

This feature was contributed by Jiwon Kwon (@z9mb1wwj). The complete set of inverse properties includes likesOf, sharesOf, repliesOf, inboxOf, outboxOf, followersOf, followingOf, and likedOf. These properties improve data consistency and enable better interoperability across the fediverse.

CLI enhancements

NodeInfo visualization

The new fedify nodeinfo command provides a visual way to explore NodeInfo data from fediverse instances. This replaces the deprecated fedify node command and offers improved parsing of non-semantic version strings. Try it with:

fedify nodeinfo https://comam.es/snac/

This was contributed by Hyeonseo Kim (@gaebalgom개발곰). The command now correctly handles various version formats and provides a cleaner visualization of instance capabilities. See the CLI documentation for more options.

Enhanced lookup with timeout

The fedify lookup command now supports a timeout option to prevent hanging on slow or unresponsive servers:

fedify lookup --timeout 10 https://example.com/users/alice

This enhancement, contributed by Hyunchae Kim (@r4bb1t톡기), ensures reliable operation even when dealing with problematic remote servers.

Package modularization

Several modules have been separated into dedicated packages to improve modularity and reduce bundle sizes. While the old import paths remain for backward compatibility, we recommend migrating to the new packages:

  • @fedify/cfworkers replaces @fedify/fedify/x/cfworkers
  • @fedify/denokv replaces @fedify/fedify/x/denokv
  • @fedify/hono replaces @fedify/fedify/x/hono
  • @fedify/sveltekit replaces @fedify/fedify/x/sveltekit

This modularization was contributed by Chanhaeng Lee (@2chanhaeng초무). The old import paths are deprecated and will be removed in version 2.0.0.

Acknowledgments

This release represents an extraordinary collaborative effort, particularly from the OSSCA participants who contributed numerous features and improvements. Their dedication and hard work have made Fedify 1.9.0 the most significant release to date.

Special thanks to all contributors who helped shape this release, including those who provided feedback, reported issues, and tested pre-release versions. The fediverse community's support continues to drive Fedify's evolution.

For the complete list of changes, bug fixes, and improvements, please refer to the CHANGES.md file in the repository.

7
0
1

CamoLeak: GitHub Copilot의 치명적 취약점이 프라이빗 소스코드를 유출함
------------------------------
- 2025년 6월, GitHub Copilot Chat에서 *치명적인 취약점(CVSS 9.6)* 이 발견됨
- *CSP 우회와 원격 프롬프트 인젝션* 기법을 활용해 비밀 정보와 비공개 코드 유출 가능성이 확인됨
- GitHub의 *숨김 주석 기능* 을 악용해 다른 사용자의 Copilot 응답 결과를 조작할 수 있음
- GitHub의 *Camo 프록시* …
------------------------------
https://news.hada.io/topic?id=23631&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

0
1
4
1
0
3
1
7

Can't count how many times i shot finger-gun myself 🫶🫶🫶🫶🫶🫶🫶 Thaaanks

4
0

11월 중순~11월 말 사이에 해커스펍 오프라인 밋업 Hackers' Public 두번째 모임을 진행하려고 하는데 "눈물없이 듣기 어려운 프론트엔드의 심연" 특집입니다...... 11월 1일~11월 8일 사이에 모집 공고 올릴듯????? 아직은 오피셜한 공지는 아니지만 정보만 슬쩍 흘려봅니다,,,

4

11월 중순~11월 말 사이에 해커스펍 오프라인 밋업 Hackers' Public 두번째 모임을 진행하려고 하는데 "눈물없이 듣기 어려운 프론트엔드의 심연" 특집입니다...... 11월 1일~11월 8일 사이에 모집 공고 올릴듯????? 아직은 오피셜한 공지는 아니지만 정보만 슬쩍 흘려봅니다,,,

9
0

YTN에서 편두통의 심각성에 대해 기사로 다뤄주시면서 인터뷰에 나오게 되었습니다. 편두통은 단순히 개인을 넘어 사회 전체에 큰 부담을 가져오는 질병입니다. 환자들이 적절한 진단을 받고 필요한 치료를 빠르게 받을 수 있는 환경이 마련되는 것이 환자 개인에게도, 주변 사람들에게도, 우리 사회 전체에 큰 이익을 가져옵니다.

기사에서는 편두통에 심각성을 주로 다뤄주셨는데 저는 잘 치료 받으면서 잘 관리하고 있습니다! 편두통은 전문 치료제를 받아서 전조가 오거나 통증이 시작될 때 빠르게 약을 먹으면 효과가 좋은 편입니다.

https://www.ytn.co.kr/_ln/0134_202510111313538858

노트북 스티커로 같이 나온 펍냥이
11
0
0
4
1
1
0
1
1
2
3

React 재단 출범 : React와 React Native의 새로운 보금자리
------------------------------
- Meta가 *10년 넘게 오픈소스로 운영해온 React* 를 오픈소스 커뮤니티 중심의 *새로운 거버넌스 체계* 로 전환하기 위해 React Foundation을 설립
- 웹뿐 아니라 *모바일·데스크톱·콘솔·혼합현실 기기* 까지 확장된 React 생태계를 지속적으로 지원할 계획
- 새로운
React Foundation 은 *Linux Foundatio…
------------------------------
https://news.hada.io/topic?id=23572&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

1

예제가 최고의 문서임
------------------------------
- 개발자들이 문서를 검색할 때 *95%는 간단한 예제만으로 충분* 하지만, 공식 소스에서 예제를 찾을 수 있는 경우는 5%에 불과
- 공식 기술 문서는 기본적으로 *해당 생태계에 깊이 몰입한 사람을 대상* 으로 작성되어, 여러 프로젝트와 언어를 오가는 개발자들에게는 *컨텍스트 복원에 상당한 정신적 에너지* 가 필…
------------------------------
https://news.hada.io/topic?id=23571&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

0

흠 글쿤 하면서 보다가 PHP 기반 추천하는 거 봐버려서...

캘린더 & 연락처

    민감한 데이터이므로 자체 CalDAV/CardDAV 서버 호스팅 중
    서버 옵션:
        Radicale: Python 기반, 기본 웹 UI, 단일 사용자만 지원, Apple 기기와 호환 안 됨
        ⭐ 추천 Baïkal: PHP 기반, 활발한 개발, 고급 웹 UI, 다중 사용자 지원
        DAViCal: PHP 기반, 시도하지 않음
        Xandikos: Python 기반, 내장 인증 없음, 웹 UI 없음
        Nextcloud: PHP 기반, 이미 사용 중이라면 괜찮지만 너무 무거움
0
1
0
1
1