์ค๋๋ Emacs๊ฐ ๋ป์๋ค.
๋ด๋ถ Emacs API๊ฐ GIL์ ๋๋ ค์ฃผ์ง ์๋ ํ์ผ๊น? ๐ฅ
@nyeong@hackers.pub ยท 66 following ยท 87 followers
ฮป(โ) โ ๐ป
์ค๋๋ Emacs๊ฐ ๋ป์๋ค.
๋ด๋ถ Emacs API๊ฐ GIL์ ๋๋ ค์ฃผ์ง ์๋ ํ์ผ๊น? ๐ฅ
์ค๋๋ Emacs ์ฐ๋ค๊ฐ ์๊ฒ ๋์๋๋ฐ
๋ฆฌ์ฒ๋ ์คํจ๋ง๋ Emacs ํค๋ฐ์ธ๋ฉ ๋ชป์ฐธ๊ณ 1987๋
์ vi-switch-mode ๋ง๋ค์ด์ GNU Emacs์ ๋ฃ์๋ค. (b20cd8dbd051aa561257df965c0d3eaef5df069e)
์ ๊ตฌํ์ ๋ค๋ฅธ ๋ถ(Neal Ziring)์ด ํ์ จ๊ตฌ๋ ใ ใ
์ค๋๋ Emacs ์ฐ๋ค๊ฐ ์๊ฒ ๋์๋๋ฐ
๋ฆฌ์ฒ๋ ์คํจ๋ง๋ Emacs ํค๋ฐ์ธ๋ฉ ๋ชป์ฐธ๊ณ 1987๋
์ vi-switch-mode ๋ง๋ค์ด์ GNU Emacs์ ๋ฃ์๋ค. (b20cd8dbd051aa561257df965c0d3eaef5df069e)
์์ ์ฝ๋ฉ์ ์ ๋ชปํ๊ตฌ ๊ฐ๊ฐํ ๋ฆฌํธ์ฝ๋๋ ํ๊ณ ์๋๋ฐ,
emacs ๋์์ฑ์ ๋จธ ์ด์ผ ํด์ผํ๋์ง ๋ชฐ๊ฒ ๋ค... ์ฝ๋ฐฑ ๋ฒ๋ฒ ์ด๋ ์๋ธ ํ๋ก์ธ์ฑ ๋ง๊ณ ๋ฐฉ๋ฒ์ด ์๋
์์ ์ฝ๋ฉ์ ์ ๋ชปํ๊ตฌ ๊ฐ๊ฐํ ๋ฆฌํธ์ฝ๋๋ ํ๊ณ ์๋๋ฐ,
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.
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.
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)This enhancement ensures that shared inbox implementations work correctly while preventing duplicate processing within individual inboxes. For more information, see the activity idempotency documentation.
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.
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 continuationThis was contributed by Jiwon Kwon (
@z9mb1wwj). For comprehensive information about URI templates, see the URI template documentation.
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.
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 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.
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.
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.
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.
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.
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.
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/sveltekitThis modularization was contributed by Chanhaeng Lee (@2chanhaeng์ด๋ฌด). The old import paths are deprecated and will be removed in version 2.0.0.
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.
@lionhairdino
@bglbgl gwyng ๋์ด ๊ธฐ๋ณธ ์ค์ ์ด ์กฐ๊ธ์ฉ ๋ค๋ฅธ ๊ฒ ๊ฐ์์. ์๊น ์ ์ํฉ์์๋, ๋ด๋ถ ๊ตฌํ์ฒด๋ ์์คํ
git๊ณผ ๋ค๋ฅด๊ฒ master๋ฅผ ๋จผ์ ์ฐพ์์ ๋น๋์ ์คํจํ์ด์ ๐ซ
@bglbgl gwyng
@lionhairdino nix/src/libfetchers/git.cc ๋ณด๊ณ ์๋๋ฐ ์์คํ
์ git์ด ์์ผ๋ฉด HEAD ์ฐพ์์ ์ฐ๋๋ฐ, git๋ ์๊ณ , ์ฐพ์ผ๋ ค๋ ์ ์ฅ์์ ref๋ ๋ช
์๋์ด์์ง ์์ผ๋ฉด master๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ฐ๋ค์
๋ช
์์ ์ผ๋ก git์ ๋ถ๋ฅด์ง ์๋ ์ด์, fetchGit๋ฑ์ ์์คํ
์ ์๋ git์ ์ฐ์ง ์๊ณ , nix ๋ด๋ถ ๊ตฌํ์ฒด๋ฅผ ์ฐ๋ ๊ฒ ์๋๊ฐ์?
@bglbgl gwyng
@nyeongAn Nyeong (ๅฎๅฏง)
@lionhairdino
@bglbgl gwyng ๋์ด ๊ธฐ๋ณธ ์ค์ ์ด ์กฐ๊ธ์ฉ ๋ค๋ฅธ ๊ฒ ๊ฐ์์. ์๊น ์ ์ํฉ์์๋, ๋ด๋ถ ๊ตฌํ์ฒด๋ ์์คํ
git๊ณผ ๋ค๋ฅด๊ฒ master๋ฅผ ๋จผ์ ์ฐพ์์ ๋น๋์ ์คํจํ์ด์ ๐ซ
Nix๋ ์์คํ ์ git์ด ์์ ๋์ ์์ ๋์ ๋์์ด ๋ค๋ฅด๋ค. ์์ง... nix ๋ด๋ถ์์ ์ฐ๋ git ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ git ํจํค์ง๋ ๋ญ๊ฐ ์ฐจ์ด๊ฐ ์๋.
Excited to share some great news from the #creative community! Oeee Cafe, a fantastic oekaki #drawing platform, just added #ActivityPub support today. This means all the amazing artwork being created there can now be shared and discovered across the #fediverse, which is such a wonderful step toward connecting creative communities.
Big shoutout to my friend
@jihyeokJihyeok Seo for building this platform and bringing it to the fediverse. It's always inspiring to see developers creating spaces for artists and then opening them up to the broader federated community. If you're into digital art or just appreciate seeing creative work, definitely worth checking out what people are sharing from Oeee Cafe on your timeline now. You can find me there at @hongminheeๆดชๅ
if you want to connect!
์ค๋์ cursor-agent๋ฅผ ์จ๋ณด๊ณ ์ถ์ด์ ๊น์๋ณด๋ ค๊ณ ํ๋...๋ฐ... nix๋ผ์ ํจํค์ง์ ํ๊ณ makeWrapper ์ฌ์ฉ๋ฒ๋ ๋ฐฐ์ ๋ค
๋ญ ์์ ์ ์ธ๋ ค๊ณ ํจํค์งํด์ ๊น์๋๋ฐ ์ ์ ํจํค์งํ๋ค๊ฐ ๋ญ ํ ๋ ค๊ณ ํ๋์ง๋ ๊น๋จน์๋ค
์ค๋์ cursor-agent๋ฅผ ์จ๋ณด๊ณ ์ถ์ด์ ๊น์๋ณด๋ ค๊ณ ํ๋...๋ฐ... nix๋ผ์ ํจํค์ง์ ํ๊ณ makeWrapper ์ฌ์ฉ๋ฒ๋ ๋ฐฐ์ ๋ค
์ค์ด์นดํ์ ActivityPub ์ง์์ด ๋ค์ด๊ฐ์ต๋๋ค. ์ด์ ์ข์ํ๋ ์๊ฐ๋ ์ปค๋ฎค๋ํฐ์ ์ ๊ทธ๋ฆผ์ ์ฐํฉ์ฐ์ฃผ์์๋ ๋ฐ์ ๋ณด์ธ์!
์๊ฐ ํ๋กํ์ด๋ ์ปค๋ฎค๋ํฐ ๋ฉ์ธ ํ์ด์ง์์ ActivityPub ํธ๋ค์ ํ์ธํ ์ ์์ต๋๋ค.
์ธ์ฉ๋ ๊ทธ๋ฆผ์ ActivityPub ์ฐ๋์ ๋์์ฃผ์
@hongminheeๆดช ๆฐๆ (Hong Minhee) ๋์ด ์ค์ด์นดํ ์ด์ฐฝ๊ธฐ์ ๊ทธ๋ ค ์ฃผ์ ๊ณ ์์ด ๊ทธ๋ฆผ์
๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
Robert C. Martin์ด ํธ์ํฐ์ ์งง๊ฒ ์ฌ๋ฆฌ๋ ์์์ด ์์ด ๊ณต๋ถ ํ๊ธฐ ์ข์ ๊ฒ ๊ฐ์์ ์ข ์ข ๋ฃ๊ณ ๋ชจ๋ฅด๋ ํํ ์ ๋ฆฌํ๊ณ ์๋๋ฐ... ๊ธฐ์ ์ฉ์ด๊ฐ ์๋๋ผ ๋ฏธ๊ตญ์ ํค๋ฐฐ ํํ๋ง ๋๋ ๊ฒ ๊ฐ๊ธฐ๋ ํ๊ณ ...
์ง์ง ๋ฏธ์น๊ฒ ๋ค ์ ๊ฐ์ WebDAV ์๋ฒ์ ์์ฒญ๋ณด๋ด๋๋ฐ iOS๋ macOS๋ ์น๋ธ๋ผ์ฐ์ ๋ ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅด์ง
ํ ์ค๋์ ์์ ํ๋๋ฐ LLM์ด ์๊ธฐ ๋ง์ ์ ๋ ๋ค๊ณ ํ์๋ฒ tailscaled๋ฅผ ๊บผ๋ฒ๋ ธ๋ค... ์ง์ ๊ฐ์ผ์ง...
์์ด ์์ด์ ํธ๊ฐ ssh๋ก ์ด๋ฌ๋ ๊ฑด ์ข ๋ฌด์์ด๋ฐ...
์์ด ๊น์ง์ด์ผ ์ ๊ฐ์๊ธฐ ๋น๋ฐ๋ฒํธ์ ์ ๊ทผํ์ธ์
... ์ง๋๋ฒ์ ์ด์ผ๊ธฐํ์๋๋ฐ warp ํฐ๋ฏธ๋๋ก ๋ญ ํ๋ค๊ฐ ํ๋ฆฌ๋ฉด ๊ฐ๋ ๊ธฐ๊ณํํ ์ํฉ์ ๋ฌผ์ด๋ณด๋๋ฐ ์๊ฐ ์ํฉ ๋ถ์ํ๋ค๊ณ ์ปค๋งจ๋ ๋ง ๋ฃ๋๊ฑธ ๋ณด๋ ์ค์นํ๋๋ผ๊ณ ์. ๊ทธ๋ฆฌ๊ณ ์ โ์ด ๋ช ๋ น์ผ๋ก ํด๊ฒฐํ ์์์ด ํ ๋? (y/n)" ์ด๋ฌ๋๋ฐ ....... ์ฝ๊ฐ ์ค์นด์ด๋ท ์๋์ํค๋ ๋๋ .....
https://hackers.pub/@nyeong/01989d45-41f1-7bfa-8f0a-f46fbe8fbaba
์์ด ์์ด์ ํธ๊ฐ ssh๋ก ์ด๋ฌ๋ ๊ฑด ์ข ๋ฌด์์ด๋ฐ...
We're thrilled to announce Fedify 1.8.1, a mega release made possible through the incredible efforts of contributors from South Korea's #OSSCA (Open Source Contribution Academy). This release marks a significant milestone in #Fedify's development, bringing major architectural changes, new packages, and numerous enhancements across the board.
Note: Version 1.8.0 was skipped due to a versioning error.
Fedify has been restructured as a #monorepo, consolidating all packages into a single repository with unified versioning. This change streamlines development and ensures all packages are released together with consistent version numbers.
All existing Fedify packages now live under one roof:
This release introduces four new packages to the Fedify ecosystem:
Federation and Context classesA powerful new feature that allows you to create custom collections beyond the standard ActivityPub collections. This enables implementation of domain-specific collections while maintaining federation compatibility.
Contributors: ChanHaeng Lee [#310, #332]
Federatable interface: setCollectionDispatcher() and setOrderedCollectionDispatcher()getCollectionUri() method to the Context interfaceKeyโvalue stores now optionally support CAS operations for atomic updates, enabling optimistic locking and preventing lost updates in concurrent environments.
KvStore.cas() methodMemoryKvStore and DenoKvStoreNew utility functions make working with #fediverse handles more convenient.
Contributors: ChanHaeng Lee [#278]
parseFediverseHandle() โ Parse handles into componentsisFediverseHandle() โ Validate handle formattoAcctUrl() โ Convert handles to URLsFediverseHandle interface for type safetyContributors: Lee ByeongJun [#248, #281], Hyunchae Kim [#51, #315]
LookupWebFingerOptions.maxRedirection option for controlling redirect behaviorAbortSignal for request cancellationDocumentLoaderOptions interfacesignal options to LookupObjectOptions, LookupWebFingerOptions, and DoubleKnockOptionsThe CLI has received significant improvements thanks to our OSSCA contributors:
fedify webfinger CommandContributors: ChanHaeng Lee [#260, #278], KeunHyeong Park [#311, #328]
Look up WebFinger information for any fediverse resource:
@user@server) and URLs--user-agent option for custom User-Agent headers--allow-private-address for local testing--max-redirection to control redirect followingfedify nodeinfo CommandContributors: Hyeonseo Kim [#267, #331, #168, #282, #304]
Replaces the deprecated fedify node command with improved terminal rendering.
fedify lookup CommandContributors: Jiwon Kwon [#169, #348, #261, #321]
-o/--output option to save results to filesfedify inbox CommandContributors: Hasang Cho [#262, #285], Jang Hanarae [#191, #342]
--actor-name and --actor-summary options for customizing temporary actorsfedify init --dry-runContributors: Lee ByeongJun [#263, #298]
Preview project initialization without creating files.
Contributors: Cho Hasang [#257, #341]
Correctly handles color output based on TTY detection and NO_COLOR environment variable.
Contributors: Hyeonseo Kim [#286, #339]
New Elysia integration brings Fedify to Bun-powered applications with a simple plugin interface:
import { Elysia } from "elysia";
import { fedify } from "@fedify/elysia";
const app = new Elysia()
.use(fedify(federation, { /* options */ }))
.listen(3000);Contributors: Jaeyeol Lee [#269, #309]
Enterprise-ready NestJS integration with dependency injection support:
import { FedifyModule } from "@fedify/nestjs";
@Module({
imports: [
FedifyModule.forRoot({
kv: new MemoryKvStore(),
queue: new InProcessMessageQueue(),
origin: "https://example.com",
}),
],
})
export class AppModule {}Contributors: An Subin [#274, #318]
SqliteKvStore implementation compatible across all major JavaScript runtimes:
import { SqliteKvStore } from "@fedify/sqlite";
const kv = new SqliteKvStore("./fedify.db");Contributors: Lee ByeongJun [#197, #283]
Comprehensive testing utilities with mocking support for Fedify applications:
import { MockFederation, MockContext } from "@fedify/testing";
const mockFederation = new MockFederation();
const mockContext = new MockContext();
// Track sent activities with full metadata
// Support custom path registration
// Multiple activity type listenersThis release represents an extraordinary community effort, particularly from the participants of South Korea's OSSCA (Open Source Contribution Academy) (Note: page in Korean). We extend our heartfelt thanks to all contributors:
Your contributions have made Fedify stronger and more versatile than ever. The OSSCA program's support has been instrumental in achieving this milestone release.
If you're using separate Fedify packages, update all packages to version 1.8.1:
{
"dependencies": {
"@fedify/fedify": "^1.8.1",
"@fedify/cli": "^1.8.1",
"@fedify/express": "^1.8.1"
}
}All packages now share the same version number, simplifying dependency management.
There are no breaking changes in this release. All existing code should continue to work without modifications.
With the monorepo structure in place and new integrations available, we're excited to continue improving Fedify's developer experience and expanding its capabilities. Stay tuned for more updates, and thank you for being part of the Fedify community!
For detailed technical information about all changes, please refer to the full changelog.
Fedify is an open-source project that helps developers build federated server applications powered by ActivityPub. Join us on GitHub or Discord to contribute or get help!
๋๊ฐ ๋ด Cursor์ Prompt Injection Attack์ ํ๋...? ๐ค
Hackers' Pub ์คํฐ์ปค ์๋ค!
@hongminheeๆดช ๆฐๆ (Hong Minhee) ํ๋ฅ์ด ์ ์ฐ๊ฒ ์ต๋๋ค ใ
ใ
ใ
An Nyeong (ๅฎๅฏง) replied to the below article:
Jaeyeol Lee @kodingwarrior@hackers.pub
6๋ ์ฐจ ๊ฐ๋ฐ์๊ฐ ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๋ค์ง๊ธฐ ์ํด OS ๊ธฐ์ด๋ฅผ ๋ค์ ๊ณต๋ถํ๋ ์ฌ์ ์ ๋ด์ ๊ธ์ ๋๋ค. ์ ์๋ ์ ์ ๊ฐ๋ฐ์ ์์ค์ ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๊ฐ์ถ๊ธฐ ์ํด OSTEP ๊ต์ฌ๋ฅผ ์ ํํ๊ณ , xv6 ํ๋ก์ ํธ๋ฅผ ํตํด ์ด์์ฒด์ ๋์ ์๋ฆฌ๋ฅผ ์ฒดํํ๊ณ ์ ํฉ๋๋ค. ์ด ๊ธ์์๋ xv6 ๊ณผ์ ๋ค์ ๋จ๊ณ๋ณ๋ก ๊ณต๋ตํ๋ฉฐ ๊ฒช๋ ์ฐ์ฌ๊ณก์ ๊ณผ ๋ฐ๊ฒฌ, ๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ํตํด ์ป๋ ์ธ์ฌ์ดํธ๋ฅผ ์์ฌ์ ์ผ๋ก ํ์ด๋ผ ๊ณํ์ ๋ฐํ๋๋ค. ๋จ์ํ ์ง์์ ์ ๋ฆฌํ๋ ๊ฒ์ ๋์ด, ๋ ์์๊ฒ ์ฌ๋ฏธ์๋ ์คํ ๋ฆฌ๋ฅผ ์ ๋ฌํ๊ณ ๊ธฐ์ ๋ฉด์ ์๋ ๋์์ด ๋ ๋งํ ์์ํ ๊ฒฝํ์ ๊ณต์ ํ๊ณ ์ ํ๋ ์ ์์ ์์ง๊ฐ ๋๋ณด์ ๋๋ค. OSSCA 2025 ๋ฉํ ๋ง ๊ฒฝํ์์ ์๊ฐ์ ๋ฐ์ ์์๋ ์ด ์ฌ์ ์, ๊ฐ๋ฐ์๋ก์์ ์ฑ์ฅ๊ณผ ๋๋ถ์ด ํด์ปค์คํ ์ปค๋ฎค๋ํฐ์๋ ๊ธฐ์ฌํ๊ณ ์ ํ๋ ์ ์์ ์ด์ ์ ๋ณด์ฌ์ค๋๋ค.
Read more โ
@kodingwarriorJaeyeol Lee OSTEP ์ข๋ค๋ ๊ธ๋ง ๋ณด๊ณ ์ ๋ ์์ง ์ ์ฝ์ด๋ด์ ๊ธฐ๋๋ฉ๋๋ค ๐
We're thrilled to highlight five outstanding contributions from the Korean Open Source Contribution Academy (#OSSCA) program participants who have been working on #Fedify! Their dedication and effort have significantly enhanced our #ActivityPub server framework.
First up is
@nyeongAn Nyeong (ๅฎๅฏง) with his monumental #318 PR, implementing a SQLite-based keyโvalue store to address #274. This contribution adds the SqliteKvStore class with full cross-runtime support for Node.js, Deno, and Bun through the new @fedify/sqlite package. His implementation includes atomic operations, TTL support, comprehensive test coverage, and careful attention to SQL injection prevention. This enables developers to use SQLite as a persistent storage backend while maintaining compatibility with Fedify's existing KvStore APIโa crucial feature for production deployments!
Next,
@crohasangํฌ๋กธ์ delivered an excellent quality-of-life improvement with #341 PR, fixing #257. He enhanced the CLI to properly respect TTY status and the NO_COLOR environment variable, implementing intelligent color control across all CLI commands. The solution involved switching from @cliffy/ansi/colors to @std/fmt/colors, creating a helper function using Deno.inspect() to handle object formatting, and ensuring colors are correctly disabled when output is redirected to files. This makes the CLI much more pipe-friendly and suitable for automated workflows!
@meneleHanal Ae contributed a thoughtful enhancement with #342 PR, addressing #191. She updated the fedify inbox command to display not just the activity type, but also the type of object contained within each activityโtransforming output like "Create" into the more informative "Create(Note)" or "Undo" into "Undo(Follow)". This seemingly simple change required making the display function asynchronous to fetch the enclosed objects, significantly improving the debugging experience for developers!
@woaol๋ฒจ tackled an important developer experience issue with #329 PR, solving #306. Previously, the fedify init command would often install outdated versions of Fedify packages like @fedify/redis because version numbers were hardcoded in the CLI. They created a getLatestVersion() function that dynamically retrieves package versions from local metadata files, ensuring that developers always get the latest versions of all Fedify packages when initializing a new project. This improvement includes comprehensive test coverage and eliminates the frustration of starting a project with outdated dependencies!
Finally,
@kodingwarriorJaeyeol Lee made a significant contribution with #309 PR, implementing #269โNestJS integration! They created the @fedify/nestjs package with a FedifyModule that seamlessly integrates Fedify into NestJS applications. This includes proper middleware implementation, dependency injection support through NestJS's module system, and compatibility with both CommonJS and ESM environments. This opens up Fedify to the large NestJS developer community, making it easier than ever to build ActivityPub-enabled applications with this popular enterprise framework!
These contributions showcase the incredible talent and dedication of the OSSCA participants. From core infrastructure improvements to developer experience enhancements, each contribution makes Fedify better for the entire community. Thank you all for your hard work and welcome to the Fedify contributor family! ๐
We're looking forward to seeing more amazing contributions from the OSSCA program and the broader community. If you're interested in contributing to Fedify, check out our GitHub repository and join us in building the future of federated social web! ๐
์ฝ๋ฉ ์์ด์ ํธ ์ธ ๋๋ง๋ค ์ธ๊ฐ์ ๋๋๊ฐ ์๋ํ ๊ฑธ ์์ผ ๊นจ๋ซ๋๋ค. ํนํ ์์ด์ ํธ์๊ฒ ๋งฅ๋ฝ ๊ผฌ๋ฐ๊ผฌ๋ฐ ์ฃผ์ ํ ๋๋ง๋ค ๋งฅ๋ฝ์ ๋ฅ๋์ ์ผ๋ก ํ๋ํ๊ณ ์ฅ๊ธฐ์ ์ผ๋ก ๊ธฐ์ตํ๊ณ ์๊ฐ์ ์ผ๋ก ์ธ์ถํด๋ด๋ ์ธ๊ฐ์ ๋ฅ๋ ฅ์ด ๋๋จํ ๊ฒ ๊ฐ์
DBMS ๊ฐ์ ๋ฐ์์ ํ์ผ์ ๊ด๋ฆฌ ํ ๋์ ํญ์ 4096 ๋ฐ์ดํธ ๋จ์์ ํ์ด์ง ํํ๋ก ๊ด๋ฆฌํฉ๋๋ค. ์๊ทธ๋ด๊น์? ์ฌ๋ฌ๊ฐ์ง ์ด์ ๊ฐ ์๋๋ฐ, ๋ณดํต์ OS๋ 4096 ๋ฐ์ดํธ ๋จ์๋ก ํ์ผ ์์คํ ์ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋์ ์บ์ ๊ฐ์ OS์ ์ฌ๋ฌ ๊ฐ์ ์ฅ์น๋ค์ ๋์์ ๋ฐ์ ์ ์์ฃ .
๊ทผ๋ฐ ์ ๋ง๋ก ๊ทธ๋ด๊น์?
๊ทธ๊ฒ ๊ถ๊ธํด์ ์ง์ ํ๋ฒ ํ์ด์ง ํ์ผ ๋งค๋์ ๋ฅผ ๊ตฌํํด์ ์คํํด๋ดค์ต๋๋ค. ํต๊ณ์ ์ผ๋ก ์ ์ํ๊ฒ ๋น ๋ฅด๋ค์.
์! ๋ฐํ์์ ์ธ ๊ฐ๋ ์ง์ํ๋๊น ํ ์คํธ ํต๊ณผํ๋ ์พ๊ฐ๋ ์ธ ๋ฐฐ!
Nix ์ค์ ๊ฑด๋ค๋ค๊ฐ (1) brew cask๋ก ์ค์น๋ ์ฑ๋ค์ ๋ชป ์ฐพ๊ณ (2) ๋ฉ์ธ ์น ๋ธ๋ผ์ฐ์ ๋ก ์ฐ๋ Zen์ ๋ชจ๋ ์ค์ ์ด ๋ ์๊ฐ๋ค ๐
(1)์ ๋ณต๊ตฌํ๋๋ฐ... (2)๋ ์ด๋ ๊ฒ ๋ ๊น์ ํํญ์ผ๋ก ๋์๊ฐ๊น ๊ณ ๋ฏผ์ค
์ด ํธ์ง๋ ๋ฏธ๋์์ ์ต์ด๋ก ์์๋์ด -1๋ ์ ํ ๋ฐํด ๋๋ฉด์ ๋ฐ๋ ์ฌ๋์๊ฒ ํ์ด์ ์ฃผ์๊ณ ์ง๊ธ์ ๋น์ ์๊ฒ๋ก ์ฎ๊ฒจ์ง ์ด ํธ์ง๋ -4์ผ ์์ ๋น์ ๊ณ์ ๋ ๋์ผ ํฉ๋๋ค. ์๊ตญ์์ did:plc:ppk763j7o2wkinvzuqx4orrb์ด๋ผ๋ ์ฌ๋์ 2026๋ ์ ์ด ํธ์ง๋ฅผ ๋ฐ์์ต๋๋ค. ์ด์ฉ๊ณ
claude max๋ฅผ ๊ตฌ๋ ํ๋ฉด ์ 200$์ฉ ๊นจ์ง๋ค๋ ์ฌ์ํ ๋ฌธ์ ๊ฐ ์์ง๋ง, ๋ณ๋ ๊ณผ๊ธ์ด ์์ด ์ธ๊ฐ์ฑ์ ์งํฌ ์ ์์ต๋๋ค.
API ๊ธฐ๋ฐ ์์ด์ ํธ์์ ์๊ธ์ ๊ธฐ๋ฐ ์์ด์ ํธ๋ก ๋์ด์, ์ด์ ๋ง์๊ป ๊ฐ์ฌ์ธ์ฌ๋ฅผ ํ๋ ํ๋ถํ ์ธ๊ฐ์ด ๋์์ต๋๋ค.
๋ฏธ๋ฆฌ๋ฏธ๋ฆฌ ์๋ถ ๋จ์ด์ ๊ธฐ๊ณํ ์๋๋ฅผ ๋๋นํ์
An Nyeong (ๅฎๅฏง) shared the below article:
ใน @disjukr@hackers.pub
์ด ๊ธ์ ๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ์์ ์๊ฐ์ ํ๋ฆ์ ๋ฐ๋ฅธ ์์กด ๊ทธ๋ํ ๊ด๋ฆฌ๋ฅผ ์ค๋ช ํ๋ฉฐ, ํนํ ํ๋ก ํธ์๋ ์ํ ๊ด๋ฆฌ์ ์์ด ์ต์ ๋ฒ๋ธ๋ณด๋ค ์๊ทธ๋์ด ๋ ์ ํฉํ ์ด์ ๋ฅผ ์ ์ํฉ๋๋ค. ์ ์๋ ํ๋ก ํธ์๋ ์ํ๊ฐ ์๊ฐ์ ๋ฐ๋ผ ๊ฒฐ์ ์ ์ผ๋ก ๋ณํ์ง ์๊ณ , ๋ ธ๋์ ์์กด ๊ด๊ณ๊ฐ ๋ ๋ ํธ๋ฆฌ์ ๋ฐ๋ผ ๋ณํ๋ฌด์ํ๊ฒ ๋ฐ๋๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ์ฃผ์ฅํฉ๋๋ค. Rx, Redux, XState์ ๊ฐ์ ๊ธฐ์กด ์ํ ๊ด๋ฆฌ ๋ฐฉ์์ ํ๊ณ๋ฅผ ์ง์ ํ๋ฉฐ, ์๊ทธ๋(+ DI์ ์๋ช ๊ด๋ฆฌ)์ ์ค์ฌ์ผ๋ก ์ต์ ๋ฒ๋ธ, ๋ฆฌ๋์, ์คํ ์ดํธ๋จธ์ ์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ ๊ธฐ์ ์ ์ฅ์ ์ ๊ทน๋ํํ ์ ์๋ค๊ณ ์ค๋ช ํฉ๋๋ค. ์ ๋๋ฉ์ด์ , ํผ ๊ด๋ฆฌ, NPC ์ธ๊ณต์ง๋ฅ๊ณผ ๊ฐ์ด ํน์ ์ํฉ์ ์ ํฉํ ๊ธฐ์ ์ ์๊ทธ๋๋ก ๋ฌถ์ด ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ์ํ๋ฅผ ์ ์ธ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ ์ํ๋ฉฐ, ์ด๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์กฐ๋ฅผ ๋์ฑ ๋ช ํํ๊ณ ํจ์จ์ ์ผ๋ก ๋ง๋ค ์ ์๋ค๊ณ ๊ฐ์กฐํฉ๋๋ค.
Read more โ์ง๊ธ๊น์ง Go๋ฅผ ํ๋ฉฐ ์ผํญ ์ฐ์ฐ์๋ฅผ ์จ๋ณธ์ ์ด ์๋ค๋ ๊ฒ์ ๋๋์ง๋ง ๋ฉฐ์น ์ ์ ์ธ ์ผ์ด ์์๊ณ ์จ๋ณด๋ ค๊ณ ํ๋ ์๋ ๋ฌธ๋ฒ์ด๋ผ๊ณ ํ๋ค
(๊ตฌ๊ธ์ ๊ฒ์ํ์๋ Gemini ๊ฒ์ ๊ฒฐ๊ณผ๋ก๋ ์๋ค๊ณ ํ๋ค. ์ด๋ป๊ฒ ๊ตฌ๊ธ์ ํ๋ก๋ํธ๊ฐ ๊ตฌ๊ธ์ ์ธ์ด์์ ํ ๋ฃจ์๋ค์ด์ ์ ์ผ์ผํค๋.)
Go๋ต๊ฒ ์ ์นํํ ์ ์๋ ๋ฌธ๋ฒ์ด ์์๊ฒ ๊ฐ์๋ฐ ์ ๋ค๋ฆญ๋ ๊ตฌ๊ธ์ ์ด์๊ณผ ๋ง์ด ๋ฌ๋ผ์ง๊ฑธ ์๊ฐํ๋ฉด ์ผํญ์ด ๋ค์ด์๋ ์ด๋ค ํํ์ผ์ง ์ ํ ๋ชจ๋ฅด์ง ์์๊น
@makaHyeonseong Yang go๋ฅผ ๋ชฐ๋ผ์ ์ฐพ์๋ณด๋ if-else๊ฐ expression์ด ์๋๊ตฐ์ ๐ค expression์ด๊ธฐ๋ง ํด๋ ์ผํญ์ฐ์ฐ์ ๋์ฒดํ ์ ์์ํ
๋ฐ ์๊น๋ค์
"๋ด์ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ"๋ผ๋ ๋ง ์กฐ๊ธ ์ง๊ทธ๋ฌ์ด ๊ฒ ๊ฐ์
PaperWM.spoon ๋ฏธ๋ฌํ๊ฒ ๊ตผ๋จ๊ณ ์ฌ์ฉ์ฑ์ด ์ข์ง ๋ชปํด์ ์น ์ง์ ๋ค... Hamerspoon ์์์ ๋๋ ๊ฑฐ๋ผ ํ๊ณ๊ฐ ์๋ ๋ฏ.
ํนํ ์ต๊ทผ์ Wezterm์ด๋ ๊ฐ์ด ์ฐ๋ฉด Wezterm์ด ๋ป๋๋ฐ (์์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค) PaperWM.spoon ๊ตฌ์กฐ ์ ํ๋๊ฐ ๋ป์ผ๋ฉด ์ฐฝ ์ ๋ ฌ์ด๋ ํฌ์ปค์ฑ์ด ์๋ง์ด๋๋ค ๐
ํ์ง๋ง scrollableWM ์ฐ๊ณ ์ถ์๋ฐ... ์์ฌํ ๊น์์ผํ๋
PaperWM.spoon ๋ฏธ๋ฌํ๊ฒ ๊ตผ๋จ๊ณ ์ฌ์ฉ์ฑ์ด ์ข์ง ๋ชปํด์ ์น ์ง์ ๋ค... Hamerspoon ์์์ ๋๋ ๊ฑฐ๋ผ ํ๊ณ๊ฐ ์๋ ๋ฏ.
ํนํ ์ต๊ทผ์ Wezterm์ด๋ ๊ฐ์ด ์ฐ๋ฉด Wezterm์ด ๋ป๋๋ฐ (์์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค) PaperWM.spoon ๊ตฌ์กฐ ์ ํ๋๊ฐ ๋ป์ผ๋ฉด ์ฐฝ ์ ๋ ฌ์ด๋ ํฌ์ปค์ฑ์ด ์๋ง์ด๋๋ค ๐
@jhhuhJi-Haeng Huh https://github.com/nyeong/.dotfiles/blob/684e1f1f41a8d61c9fc680f2429b5142cdeadfda/packages/emacs/default.nix#L18-L21
๊ฐ์ฌํฉ๋๋ค! emacs-overlay๋ฅผ fetchTarball๋ก ๊ฐ์ ธ์ค๊ณ ์์ต๋๋ค ๐
@nyeongAn Nyeong (ๅฎๅฏง) ํน์ fetchTarball์ ์ฐ์ง ์๊ณ emacs-overlay๋ฅผ flake inputs์ ์ถ๊ฐํ๋ ๊ฑด ํด๋ณด์
จ๋์? ์๋๋ฉด fetchFromGithub๋ก ๋ฐ์์๋ ๊ด์ฐฎ์ต๋๋ค. ์๋ฌด๋ฆฌ sha256์ ์ง์ ํด๋ fetchTarball์ ์ด๊ฑธ ๋ค์ด๋ฐ์ tarball์ ๊ฒ์ฆํ๋ ์ฉ๋๋ก ์ฌ์ฉํ๋๊ฑฐ์ง fixed-output derivation ์ฒ๋ผ outpath๋ฅผ ์ฐพ๋๋ฐ ์ฌ์ฉํ์ง๋ ์์ ๊ฑฐ์์. cache TTL์ด ์ง๋๊ฑฐ๋ nix daemon์ ๊ป๋ค ์ผ๋ฉด ๋ค์ ๋ค์ด๋ฐ์ ๊ฑฐ์์.
์ด๊ฒ ์ ์ฌ๋น๋๋ฅผ ์ ๋ฐํ๋์ง๋ ์ ๋ ์ง๊ธ ๋ช
ํํ ์ค๋ช
์ด ์ด๋ ต์ง๋ง fetchTarball์ ๊ฒฐ๊ณผ๊ฐ์ด derivation๋ path๊ฐ ์๋ ์คํธ๋ง์ด๋ผ์ ์๊ธฐ๋ ๋ฏธ๋ฌํ ์ฐจ์ด์ ์ด ์๊ธฐ๋ ํฉ๋๋ค. ์ผ๋ก๋ก remote ๋น๋ฉ์ ํ๊ธฐ ์ํด prerequisite๋ค์ ๋น๋ ์๋ฒ์ ๋๊ธฐ๋๋ฐ fetchTarball๋ก ๋ฐ์์จ ์ ๋ค์ prerequisite closure์ ํฌํจ์ด ์๋๋ ๊ฑธ๋ก ๊ธฐ์ตํด์. ๋ชฉ์ ํ๋ derivation์ด remote์์ ์ง์ nix ํํ์ eval ํด์ ์ป์ด์ง ๊ฒฝ์ฐ๋ (eval ์ fetch๋ฅผ ํด์ store์ ๋ด๊ธฐ ๋๋ฌธ์) ๋ฌธ์ ๊ฐ ์์ง๋ง ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ๋ ์กด์ฌํ์ง ์๋ store path์ ๋ํ ์๋ฌ๊ฐ ๋ ์ ์๊ฑฐ๋ ์.
ํ์ฌํผ ๋ค๋ฅธ ๊ฑด ๋ฑํ ๋์ ๋๋๊ฒ ์์ด ๋ณด์ฌ์ fetchTarball๋ง ์์ฌํ๊ฒ ๋๋ค์.
@nyeongAn Nyeong (ๅฎๅฏง) ํน์ fetchTarball์ ์ฐ์ง ์๊ณ emacs-overlay๋ฅผ flake inputs์ ์ถ๊ฐํ๋ ๊ฑด ํด๋ณด์
จ๋์? ์๋๋ฉด fetchFromGithub๋ก ๋ฐ์์๋ ๊ด์ฐฎ์ต๋๋ค. ์๋ฌด๋ฆฌ sha256์ ์ง์ ํด๋ fetchTarball์ ์ด๊ฑธ ๋ค์ด๋ฐ์ tarball์ ๊ฒ์ฆํ๋ ์ฉ๋๋ก ์ฌ์ฉํ๋๊ฑฐ์ง fixed-output derivation ์ฒ๋ผ outpath๋ฅผ ์ฐพ๋๋ฐ ์ฌ์ฉํ์ง๋ ์์ ๊ฑฐ์์. cache TTL์ด ์ง๋๊ฑฐ๋ nix daemon์ ๊ป๋ค ์ผ๋ฉด ๋ค์ ๋ค์ด๋ฐ์ ๊ฑฐ์์.
์ด๊ฒ ์ ์ฌ๋น๋๋ฅผ ์ ๋ฐํ๋์ง๋ ์ ๋ ์ง๊ธ ๋ช
ํํ ์ค๋ช
์ด ์ด๋ ต์ง๋ง fetchTarball์ ๊ฒฐ๊ณผ๊ฐ์ด derivation๋ path๊ฐ ์๋ ์คํธ๋ง์ด๋ผ์ ์๊ธฐ๋ ๋ฏธ๋ฌํ ์ฐจ์ด์ ์ด ์๊ธฐ๋ ํฉ๋๋ค. ์ผ๋ก๋ก remote ๋น๋ฉ์ ํ๊ธฐ ์ํด prerequisite๋ค์ ๋น๋ ์๋ฒ์ ๋๊ธฐ๋๋ฐ fetchTarball๋ก ๋ฐ์์จ ์ ๋ค์ prerequisite closure์ ํฌํจ์ด ์๋๋ ๊ฑธ๋ก ๊ธฐ์ตํด์. ๋ชฉ์ ํ๋ derivation์ด remote์์ ์ง์ nix ํํ์ eval ํด์ ์ป์ด์ง ๊ฒฝ์ฐ๋ (eval ์ fetch๋ฅผ ํด์ store์ ๋ด๊ธฐ ๋๋ฌธ์) ๋ฌธ์ ๊ฐ ์์ง๋ง ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ๋ ์กด์ฌํ์ง ์๋ store path์ ๋ํ ์๋ฌ๊ฐ ๋ ์ ์๊ฑฐ๋ ์.
ํ์ฌํผ ๋ค๋ฅธ ๊ฑด ๋ฑํ ๋์ ๋๋๊ฒ ์์ด ๋ณด์ฌ์ fetchTarball๋ง ์์ฌํ๊ฒ ๋๋ค์.
@jhhuhJi-Haeng Huh ์ํ ์ ๋ ๋ช
ํํ ๋ด๋ถ๋ฅผ ์ดํดํ๊ณ ์์ง๋ ์์๋ฐ, fetchTarball์ ๊ฒฐ๊ณผ๊ฐ derivation์ด ์๋๋ผ๋ฉด ์ ๊ฐ ์๋ํ ์ํฉ๊ณผ ๋ฏธ๋ฌํ๊ฒ ๋ฌ๋ฅด๋ค์ ๐ค fetchFromGitHub ํ ๋ฒ ์จ๋ณด๊ฒ ์ต๋๋ค ๊ฐ์ฌํฉ๋๋ค ๐
@nyeongAn Nyeong (ๅฎๅฏง) ํน์ ๊ณต๊ฐ๋ ๋ฆฌํฌ๋ฉด ๋งํฌ์ฃผ์ค ์ ์์ผ์ค๊น์? ๋์์ ๋๋ฆด ์ฌ์ง๊ฐ ์์์ง ํ๋ฒ ์ดํด ๋ณผ๊ฒ์.
@jhhuhJi-Haeng Huh https://github.com/nyeong/.dotfiles/blob/684e1f1f41a8d61c9fc680f2429b5142cdeadfda/packages/emacs/default.nix#L18-L21
๊ฐ์ฌํฉ๋๋ค! emacs-overlay๋ฅผ fetchTarball๋ก ๊ฐ์ ธ์ค๊ณ ์์ต๋๋ค ๐
nix update ํ ๋๋ง๋ค emacs ๋ค์ ๋น๋ํ๋๋ฐ ์ด๊ฑฐ ์ด์ผ ์บ์ฑํ์ง ๐ค input ์์กด์ฑ์ ๋๊ฐ์๋ฐ ์ ๋น๋๋ฅผ ๋ ํ์ง...
๋๋ฌด ์ด๋ ค์ด๊ฑด ์๋๊ฒ ์ง๋ง ๊ทธ๋ ๋ค๊ณ ๋๋ฌด ์ฌ์ด๊ฑฐ ๊ณ ๋ฅด๋ฉด ์ฐ ์ฒ์์ด์ ๋ถ๋ค ์ํด์ ๋จ๊ฒจ๋๋ ค์ผ ๋๊ณ ... ์ฒดํฌ๋ฆฌ์คํธ ์ด์ ๊ด์ฐฎ์๋ณด์์ง๋ง ์์ง ํ๋กํฌ์ ๋จ๊ณ๊ณ ... ์ฉ์ฉ...
@2chanhaeng์ด๋ฌด ์ ๋ ์์ง ํ๋ก์ ํธ ํ์
์ด ์ ๋์ด์์ด์ ๋งฅ๋ฝ ์ ์ด๋ณด์ด๋ #274๋ฅผ ์ง์์ด์ ใ
ใ
์ wezterm ์ด๊ณ ํ 10์ด๋ง ์ง๋๋ฉด ์ด ์น๊ตฌ๊ฐ ์๋ต์ด ์์ง ๐ค
MoonBit Monthly vol. 1 is out!๐
See whatโs new in MoonBit after our Beta release. ๐ฅณ
Full Updates๏ผhttps://moonbitlang.com/weekly-updates/2025/07/15/index
์ง๊ตฌ ์์ ์๋ ๋๋ฌด ๋น ๋ฅธ๊ฑฐ๊ฐํ
@tedpoolํ
๋ํ
@kodingwarriorJaeyeol Lee
@gaebalgom๊ฐ๋ฐ๊ณฐ
@nyeongAn Nyeong (ๅฎๅฏง) @joonnotnotJoon
@crohasangํฌ๋กธ์
@z9mb1wwj @r4bb1tํก๊ธฐ
@2chanhaeng์ด๋ฌด
@cosmic_elevatorSooji Choi @ooheunda @woaol๋ฒจ
@meneleHanal Ae
@devomdv @eottabom
@hjleee93hyeonjeong lee ์ค๋ ๋ฐ๋์์์ ๋ง๋ ๋ต์ด์ ๋ฐ๊ฐ์ ์ต๋๋ค! ๋ค์ ํ ๋ฒ ์์ผ๋ก ์ ๋ถํ๋๋ฆฝ๋๋ค! ํ์ดํ
!
gemini-cli๋ ์ด์ํ ๋งฅ๋ฝ์ ๊ธฐ์ตํด์ ๋๋ ์๊พธ ๋คํฐ๋ค...
์๊พธ A๋ฅผ B๋ก ๋ฐ๊ฟ์ ๋ด๊ฐ A๋ก ๋๋ ค๋๊ณ C๋ฅผ ๊ณ ์ณ๋ฌ๋ผ๊ณ ํ๋ฉด ๋ C๋ฅผ ๊ณ ์น๋ฉด์ A๋ B๋ก ์๊ทผ์ฌ์ฉ ๋ฐ๊ฟ๋
์ผ์ ๋ ๋ชฐ๋ ๊ปด๋ฃ์๋ค? ๋ ์ด๋์ด์
gemini-cli๋ ์ด์ํ ๋งฅ๋ฝ์ ๊ธฐ์ตํด์ ๋๋ ์๊พธ ๋คํฐ๋ค...
์๊พธ A๋ฅผ B๋ก ๋ฐ๊ฟ์ ๋ด๊ฐ A๋ก ๋๋ ค๋๊ณ C๋ฅผ ๊ณ ์ณ๋ฌ๋ผ๊ณ ํ๋ฉด ๋ C๋ฅผ ๊ณ ์น๋ฉด์ A๋ B๋ก ์๊ทผ์ฌ์ฉ ๋ฐ๊ฟ๋
์ ธ์ ์ณ์ผํ git status ๋ช ๋ น์ด๋ฅผ Claude Code์๊ฒ ๋ณด๋ด์ ํ ํฐ์ ๋ญ๋นํ๋ ๋ชจ์ต, ์คํฌ๋ฆฐ์ ์ ๋ฌํ. 568 (H) x 1264 (W) px.
#claude code CLI UI๋ ๋ง์ ๋ค๊ณ todo๋ก ํ ์ผ ์ ๋ฆฌํด์ ์์ฐจ์ ์ผ๋ก ์งํํ๋ ๊ฒ๋ ์ข๊ณ ๊ฒฐ๊ณผ๋ฌผ๋ ๋ง์ ๋ ๋ค
typ ํ์ผ ๋ ๊ฐ ๋๋๊น ์์์ flake.nix์์ ๋น๋ ์คํฌ๋ฆฝํธ๋ ์์ ํ๊ณ ... ๊ต์ฅํ๋ฐ
#claude code CLI UI๋ ๋ง์ ๋ค๊ณ todo๋ก ํ ์ผ ์ ๋ฆฌํด์ ์์ฐจ์ ์ผ๋ก ์งํํ๋ ๊ฒ๋ ์ข๊ณ ๊ฒฐ๊ณผ๋ฌผ๋ ๋ง์ ๋ ๋ค