@2chanhaeng초무 저도 사용중인데, 초반에 하드웨어 좀 많이 먹는 거(썸네일 제작 + 영상 인코딩) 빼면 설치도 쉽고 기능도 많고 편하더라고요. 구글 포토 내용 그대로 옮기는 것도 되고.
초무
@2chanhaeng@hackers.pub · 85 following · 70 followers
GitHub
- @2chanhaeng
Gravatar
- gravatar.com/2chanhaeng
@gaebalgom개발곰 으악 멘션을 이제야 봤네요 감사합니다!!! 진짜 생각보다 편하더라구요
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 (
@z9mb1Jiwon), 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 (
@z9mb1Jiwon), 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 (
@z9mb1Jiwon). 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 (
@z9mb1Jiwon). 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/aliceThis 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/cfworkersreplaces@fedify/fedify/x/cfworkers@fedify/denokvreplaces@fedify/fedify/x/denokv@fedify/honoreplaces@fedify/fedify/x/hono@fedify/sveltekitreplaces@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.
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
Notion 패키지 타입 봤다가 블럭 타입 하나에 모든 경우가 하드 코딩 되어 있는 것을 보고 저는 그만 정신을 잃고 말았습니다
심지어 Children 노드 가질 수 있는 블럭의 children 도 다 그렇게 되어 있음
이건 ㄹㅇ 광기다,,,
Notion 패키지 타입 봤다가 블럭 타입 하나에 모든 경우가 하드 코딩 되어 있는 것을 보고 저는 그만 정신을 잃고 말았습니다
✍️ AI와 오픈소스가 글쓰기를 바꿀 수 있을까?
Quarto + Claude·Gemini CLI로 만드는 새로운 저작 워크플로우
📖 AI 글쓰기
👤 이광춘 (한국 R 사용자회)
세션 https://2025.fossforall.org/sessions/
티켓 https://event-us.kr/fossforall/event/110400
세상에 영원한 게 없는 이유: 지디때문에
I checked to see if a tutorial written for Fedify 1.0 would still work with Fedify 1.8, and everything runs perfectly without any issues. As an open source project maintainer, I take great pride in thoroughly maintaining backward compatibility.
소스코드 뜯어보고 그 뒤에 담긴 원리 덕질하는 거가 딩코할 때 제일 재밌어
The three-day debugging session for the relay integration issue between @fedify/relay and Mastodon is finally over. Great work,
@z9mb1Jiwon!
Can't count how many times i shot finger-gun myself 🫶🫶🫶🫶🫶🫶🫶 Thaaanks
@2chanhaeng초무 네, 파는 곳이 좀 있더라고요. 제가 시켜 먹은 가게는 「따따베이 키친」이라는 곳이었습니다.
@hongminhee洪 民憙 (Hong Minhee)
왠지 그새 삭제된,,, 😂
11월 중순~11월 말 사이에 해커스펍 오프라인 밋업 Hackers' Public 두번째 모임을 진행하려고 하는데 "눈물없이 듣기 어려운 프론트엔드의 심연" 특집입니다...... 11월 1일~11월 8일 사이에 모집 공고 올릴듯????? 아직은 오피셜한 공지는 아니지만 정보만 슬쩍 흘려봅니다,,,
Hackers' Public이 어떤 모임이었는지 궁금한 분이 계시다면.... 여기 에서 어떤 느낌의 행사인지 알 수 있습니다
11월 중순~11월 말 사이에 해커스펍 오프라인 밋업 Hackers' Public 두번째 모임을 진행하려고 하는데 "눈물없이 듣기 어려운 프론트엔드의 심연" 특집입니다...... 11월 1일~11월 8일 사이에 모집 공고 올릴듯????? 아직은 오피셜한 공지는 아니지만 정보만 슬쩍 흘려봅니다,,,
@hongminhee洪 民憙 (Hong Minhee)
들어간 획이 진짜 많네요
@kodingwarriorJaeyeol Lee
@hongminhee洪 民憙 (Hong Minhee)
상용한자 중에서 57획으로 제일 많다네요 옥편 기준으로는 𪚥 자(64획)가 최대라고...
이 늦은 時間에 𰻞𰻞麵(油潑扯麵) 먹는다…
YTN에서 편두통의 심각성에 대해 기사로 다뤄주시면서 인터뷰에 나오게 되었습니다. 편두통은 단순히 개인을 넘어 사회 전체에 큰 부담을 가져오는 질병입니다. 환자들이 적절한 진단을 받고 필요한 치료를 빠르게 받을 수 있는 환경이 마련되는 것이 환자 개인에게도, 주변 사람들에게도, 우리 사회 전체에 큰 이익을 가져옵니다.
기사에서는 편두통에 심각성을 주로 다뤄주셨는데 저는 잘 치료 받으면서 잘 관리하고 있습니다! 편두통은 전문 치료제를 받아서 전조가 오거나 통증이 시작될 때 빠르게 약을 먹으면 효과가 좋은 편입니다.
TS 에서 쓸 라이브러리 검색했는데 예제가
- JS로 씀
require씀
그럼 그냥 뒤도 안 돌아보고 도망 감
눈뜨면 베개 옆에 고양이가 있는 거 최고. ദ്ദിᐢ- ̫-ᐢ₎
🌱 누구나 오픈소스에 기여할 수 있을까?
AI와 함께 기여의 장벽을 낮춘 전세계 유일 오픈소스 기여모임 운영기
🤖 "누구나 원하는 오픈소스에 기여를" 커뮤니티 운영기 with AI
👤 김인제(LINE Plus)
세션 https://2025.fossforall.org/sessions/
티켓 https://event-us.kr/fossforall/event/110400
이미 제품으로 많이 나와 있는디...
🤝 코드 없는 기여, 어디까지 인정받을 수 있을까?
On-site Non-uploading 기여를 통해 본 데비안의 협력 문화
📦 데비안 프로젝트 기여 고찰
👤 김종민(Debian Developer)
세션 https://2025.fossforall.org/sessions/
티켓 https://event-us.kr/fossforall/event/110400
집에 오면 보통 현관까지 나오는데 오늘은 갑자기 캣타워 위에서 딴청 피우면서 삐짐 모드. 집에 나 말고 사람이 둘이나 있었잖여. 😑
타입시스템이란 거 정말로 중요한거구나...
🛰️ 왜 사람들은 X·Facebook을 떠나 Bluesky로 모일까?
데이터 소유권과 서비스 다양성을 기반으로 한 차세대 SNS
🌐AT-protocol과 Bluesky, 탈중앙 SNS를 향한 새로운 접근
👤나사공 (boltless)
세션 https://2025.fossforall.org/sessions/
티켓 https://event-us.kr/fossforall/event/110400
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
예제가 최고의 문서임
------------------------------
- 개발자들이 문서를 검색할 때 *95%는 간단한 예제만으로 충분* 하지만, 공식 소스에서 예제를 찾을 수 있는 경우는 5%에 불과
- 공식 기술 문서는 기본적으로 *해당 생태계에 깊이 몰입한 사람을 대상* 으로 작성되어, 여러 프로젝트와 언어를 오가는 개발자들에게는 *컨텍스트 복원에 상당한 정신적 에너지* 가 필…
------------------------------
https://news.hada.io/topic?id=23571&utm_source=googlechat&utm_medium=bot&utm_campaign=1834
흠 글쿤 하면서 보다가 PHP 기반 추천하는 거 봐버려서...
옆집 (ActivityPub 페디버스) 에서도 하던 얘기긴 하지만, 웹의 퍼블릭으로 올린 데이터는 그냥 어디서든 인덱싱되고, 저장될 것이라고 상정하고 행동하십시오...
immich 이라는 구글 포토 대체용 오픈 소스 프로그램이 있길래 집 맥에 설치해봤다
괜찮으면 갈아타야징
빨리 갈아타지 않으면 이거 다 날려먹을 것 같음...
immich 이라는 구글 포토 대체용 오픈 소스 프로그램이 있길래 집 맥에 설치해봤다
괜찮으면 갈아타야징
요기요기 북어트릿이 들어있는 걸 내가 알고 있다냥!
뭉치. 오늘의 범묘. 돌봐주시는 편의점 사장님 내외분이 뭉치가 한참 보이지 않는다고 걱정하셨는데 온장고 위 광고판 뒤에서 나타남. 주무신 듯. 찍고 나니 하품 하심.
私見으로는 漢字 敎育은 基本的인 語彙力을 갖추는 데에는 必要 없고, 高級 語彙를 갖추는 데에나 效果가 있다고 생각. 그런데 語彙力 이슈가 나올 때는 普通 前者가 問題이기 때문에, 漢字 敎育은 엉뚱한 方案이 되는 거고.
그리고 點心이든 中華料理든 漢字로도 【중식】은 【中食】이라, 이런 케이스에는 漢字 敎育을 해도 解決이 안 됨.
https://bsky.brid.gy/r/https://bsky.app/profile/did:plc:sbhczrmqu43gq2hyns36lmzw/post/3m2skod7pas2y
엉아눈나 무릎 있어? 무릎 줘
오는 11月 8日 光云大學校에서 開催되는 FOSS for All 컨퍼런스 2025에서 제가 〈야크 셰이빙: 새로운 오픈 소스의 原動力〉이라는 主題로 基調演說을 하게 되었습니다!
올해 처음 열리는 FOSS for All 컨퍼런스는 “Free and Open Source Software for All”이라는 슬로건 아래, 모두를 爲한 오픈 소스 컨퍼런스를 目標로 하는 非營利 오픈 소스 커뮤니티 컨퍼런스입니다.
근데 왜 맥은 맥이라 부르고 윈도 컴을 PC라 부르는 거지
맥도 Personal Computer 잖아
@2chanhaeng초무 제 기억이 맞다면 “PC”는 “IBM 호환 PC”의 줄임말인데, Mac은 IBM 호환이 아니라서 PC라고 안 부르는 걸로 알고 있습니다.
@2chanhaeng초무 제 기억이 맞다면 “PC”는 “IBM 호환 PC”의 줄임말인데, Mac은 IBM 호환이 아니라서 PC라고 안 부르는 걸로 알고 있습니다.
@hongminhee洪 民憙 (Hong Minhee) 엥 그런 역?사적인 맥락이 있었군요
본인인증 API 쓸려면 개인사업자 필요하다는데 개인사업자 내보신 분 잇나오....
Deno 2.5.4 has been released 🎉
근데 왜 맥은 맥이라 부르고 윈도 컴을 PC라 부르는 거지
맥도 Personal Computer 잖아
거의 10년 전부터 "2025년까지 살아야 하는 이유" 같은 제목으로 곳곳에서 이번 연휴를 예고해왔는데 나는 아무것도 준비하지 않았다. 그렇게 맥없이 연휴가 끝나간다...
https://github.com/be5invis/Sarasa-Gothic
터미널/에디터용 고정폭 폰트를 찾는다면 Sarasa Term K를 추천합니다. 이쪽도 한중일 폰트를 모두 지원합니다. Noto Sans Mono CJK도 좋지만 폰트 미세 조정이 안 되는 환경에서 Sarasa Term이 좀더 정확하게 렌더링됩니다. 영문과 한글만 쓰면 네이버의 D2Coding도 훌륭하지만 이쪽은 가나, 한자 지원이 약하죠.
https://hollo.social/@fedify/0199a579-adb3-7bf5-a8ea-970c8fa91f09
Hope this leads to an even larger shared-layer between all the js/node #activitypub implementations like Ghost, NodeBB, *keys et.al.
Particularly wishing for convergence around a shared *identity core* across all these AP apps in accordance with NomadPub by
@silverpill
https://codeberg.org/ap-next/ap-next/src/branch/main/nomadpub.md
FEP-ef61: Portable Objects
FEP-ae97: Client-side activity signing
That in addition to a common OAuth foundation would effectively be ActivityPub 2.0 and on-par with atproto.
Exciting news for #Fedify developers! We've just landed a major milestone for Fedify 2.0—the #CLI now runs natively on #Node.js and #Bun, not just #Deno (#456). If you install @fedify/cli@2.0.0-dev.1761 from npm, you'll get actual JavaScript that executes directly in your runtime, no more pre-compiled binaries from deno compile. This is part of our broader transition to Optique, a new cross-runtime CLI framework we've developed specifically for Fedify's needs (#374).
This change means a more natural development experience regardless of your #JavaScript runtime preference. Node.js developers can now run the CLI tools directly through their familiar ecosystem, and the same goes for Bun users. While Fedify 2.0 isn't released yet, we're excited to share this progress with the community—feel free to try out the dev version and let us know how it works for you!
어떻게 날아???
이 고양이 반짝반짝 호박코 고양이
해커스바라니
해커스펍하고 잘 어울리는




윤
















