ฮป(โ˜•) โ†’ ๐Ÿ’ป

  • Languages: Korean(๊ฐœ์ฉ–), English(totally broken), Japanese(ใพใ‚ใพใ‚), Esperanto(tre iomete)
  • Interests: server, concurrency, functional programming, keyboard(the input system), guitar
Stella
@annyeong@stella.place
GitHub
@nyeong
3

We're thrilled to announce Fedify 1.8.1, a mega release made possible through the incredible efforts of contributors from South Korea's (Open Source Contribution Academy). This release marks a significant milestone in '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.

๐ŸŽ‰ Major Milestone: Monorepo Architecture

Fedify has been restructured as a , 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.

Consolidated Packages

All existing Fedify packages now live under one roof:

  • @fedify/fedify โ€” Main library
  • @fedify/cli โ€” CLI toolchain
  • @fedify/amqp โ€” AMQP/RabbitMQ driver
  • @fedify/express โ€” Express integration
  • @fedify/h3 โ€” h3 framework integration
  • @fedify/postgres โ€” PostgreSQL drivers
  • @fedify/redis โ€” Redis drivers

๐Ÿ†• New Packages

This release introduces four new packages to the Fedify ecosystem:

  • @fedify/elysia โ€” Elysia integration for Bun-powered applications
  • @fedify/nestjs โ€” NestJS integration for enterprise Node.js apps
  • @fedify/sqlite โ€” SQLite driver compatible with Bun, Deno, and Node.js
  • @fedify/testing โ€” Testing utilities with mock Federation and Context classes

@fedify/fedify

Custom Collection Dispatchers

A 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]

  • Added comprehensive types and interfaces for custom collection handling
  • New methods on Federatable interface: setCollectionDispatcher() and setOrderedCollectionDispatcher()
  • Added getCollectionUri() method to the Context interface
  • Full support for paginated custom collections

Compare-and-Swap (CAS) Support for KV Stores

Keyโ€“value stores now optionally support CAS operations for atomic updates, enabling optimistic locking and preventing lost updates in concurrent environments.

  • Added optional KvStore.cas() method
  • Implemented in MemoryKvStore and DenoKvStore
  • Useful for implementing distributed locks and counters

Fediverse Handle Utilities

New utility functions make working with handles more convenient.

Contributors: ChanHaeng Lee [#278]

  • parseFediverseHandle() โ€” Parse handles into components
  • isFediverseHandle() โ€” Validate handle format
  • toAcctUrl() โ€” Convert handles to URLs
  • FediverseHandle interface for type safety

Enhanced HTTP Request APIs

Contributors: Lee ByeongJun [#248, #281], Hyunchae Kim [#51, #315]

  • Added LookupWebFingerOptions.maxRedirection option for controlling redirect behavior
  • APIs now support AbortSignal for request cancellation
  • New DocumentLoaderOptions interface
  • Added signal options to LookupObjectOptions, LookupWebFingerOptions, and DoubleKnockOptions

@fedify/cli

New Commands and Enhancements

The CLI has received significant improvements thanks to our OSSCA contributors:

fedify webfinger Command

Contributors: ChanHaeng Lee [#260, #278], KeunHyeong Park [#311, #328]

Look up WebFinger information for any fediverse resource:

  • Supports handles (@user@server) and URLs
  • --user-agent option for custom User-Agent headers
  • --allow-private-address for local testing
  • --max-redirection to control redirect following

fedify nodeinfo Command

Contributors: Hyeonseo Kim [#267, #331, #168, #282, #304]

Replaces the deprecated fedify node command with improved terminal rendering.

Enhanced fedify lookup Command

Contributors: Jiwon Kwon [#169, #348, #261, #321]

  • Terminal-specific image display for Kitty, WezTerm, Konsole, Warp, Wayst, st, and iTerm
  • -o/--output option to save results to files

Improved fedify inbox Command

Contributors: Hasang Cho [#262, #285], Jang Hanarae [#191, #342]

  • --actor-name and --actor-summary options for customizing temporary actors
  • Now displays object types contained in activities

fedify init --dry-run

Contributors: Lee ByeongJun [#263, #298]

Preview project initialization without creating files.

Better Terminal Support

Contributors: Cho Hasang [#257, #341]

Correctly handles color output based on TTY detection and NO_COLOR environment variable.

@fedify/elysia

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);

@fedify/nestjs

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 {}

@fedify/sqlite

Contributors: An Subin [#274, #318]

SqliteKvStore implementation compatible across all major JavaScript runtimes:

import { SqliteKvStore } from "@fedify/sqlite";

const kv = new SqliteKvStore("./fedify.db");

@fedify/testing

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 listeners

๐Ÿ™ Acknowledgments

This 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:

Core Contributors

Test Infrastructure 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.

Migration Guide

Updating from Previous Versions

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.

Breaking Changes

There are no breaking changes in this release. All existing code should continue to work without modifications.

What's Next

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!

7
0
0
2
1

An Nyeong (ๅฎ‰ๅฏง) replied to the below article:

OSTEP ๋…ํ•™ ์ผ์ง€ - H.0.

Jaeyeol Lee @kodingwarrior@hackers.pub

6๋…„ ์ฐจ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๋‹ค์ง€๊ธฐ ์œ„ํ•ด OS ๊ธฐ์ดˆ๋ฅผ ๋‹ค์‹œ ๊ณต๋ถ€ํ•˜๋Š” ์—ฌ์ •์„ ๋‹ด์€ ๊ธ€์ž…๋‹ˆ๋‹ค. ์ €์ž๋Š” ์‹ ์ž… ๊ฐœ๋ฐœ์ž ์ˆ˜์ค€์˜ ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๊ฐ–์ถ”๊ธฐ ์œ„ํ•ด OSTEP ๊ต์žฌ๋ฅผ ์„ ํƒํ•˜๊ณ , xv6 ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ์šด์˜์ฒด์ œ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ์ฒดํ™”ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” xv6 ๊ณผ์ œ๋“ค์„ ๋‹จ๊ณ„๋ณ„๋กœ ๊ณต๋žตํ•˜๋ฉฐ ๊ฒช๋Š” ์šฐ์—ฌ๊ณก์ ˆ๊ณผ ๋ฐœ๊ฒฌ, ๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ํ†ตํ•ด ์–ป๋Š” ์ธ์‚ฌ์ดํŠธ๋ฅผ ์„œ์‚ฌ์ ์œผ๋กœ ํ’€์–ด๋‚ผ ๊ณ„ํš์„ ๋ฐํž™๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์ง€์‹์„ ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋„˜์–ด, ๋…์ž์—๊ฒŒ ์žฌ๋ฏธ์žˆ๋Š” ์Šคํ† ๋ฆฌ๋ฅผ ์ „๋‹ฌํ•˜๊ณ  ๊ธฐ์ˆ  ๋ฉด์ ‘์—๋„ ๋„์›€์ด ๋  ๋งŒํ•œ ์ƒ์ƒํ•œ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•˜๊ณ ์ž ํ•˜๋Š” ์ €์ž์˜ ์˜์ง€๊ฐ€ ๋‹๋ณด์ž…๋‹ˆ๋‹ค. OSSCA 2025 ๋ฉ˜ํ† ๋ง ๊ฒฝํ—˜์—์„œ ์˜๊ฐ์„ ๋ฐ›์•„ ์‹œ์ž‘๋œ ์ด ์—ฌ์ •์€, ๊ฐœ๋ฐœ์ž๋กœ์„œ์˜ ์„ฑ์žฅ๊ณผ ๋”๋ถˆ์–ด ํ•ด์ปค์ŠคํŽ ์ปค๋ฎค๋‹ˆํ‹ฐ์—๋„ ๊ธฐ์—ฌํ•˜๊ณ ์ž ํ•˜๋Š” ์ €์ž์˜ ์—ด์ •์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

Read more โ†’
10
0

We're thrilled to highlight five outstanding contributions from the Korean Open Source Contribution Academy () program participants who have been working on ! Their dedication and effort have significantly enhanced our 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! ๐ŸŒŸ

5
0
1

์ฝ”๋”ฉ ์—์ด์ „ํŠธ ์“ธ ๋•Œ๋งˆ๋‹ค ์ธ๊ฐ„์˜ ๋‘๋‡Œ๊ฐ€ ์œ„๋Œ€ํ•œ ๊ฑธ ์ƒˆ์‚ผ ๊นจ๋‹ซ๋Š”๋‹ค. ํŠนํžˆ ์—์ด์ „ํŠธ์—๊ฒŒ ๋งฅ๋ฝ ๊ผฌ๋ฐ•๊ผฌ๋ฐ• ์ฃผ์ž…ํ•  ๋•Œ๋งˆ๋‹ค ๋งฅ๋ฝ์„ ๋Šฅ๋™์ ์œผ๋กœ ํš๋“ํ•˜๊ณ  ์žฅ๊ธฐ์ ์œผ๋กœ ๊ธฐ์–ตํ•˜๊ณ  ์ˆœ๊ฐ„์ ์œผ๋กœ ์ธ์ถœํ•ด๋‚ด๋Š” ์ธ๊ฐ„์˜ ๋Šฅ๋ ฅ์ด ๋Œ€๋‹จํ•œ ๊ฒƒ ๊ฐ™์Œ

6

DBMS ๊ฐ™์€ ๋ฐ์—์„œ ํŒŒ์ผ์„ ๊ด€๋ฆฌ ํ•  ๋•Œ์—” ํ•ญ์ƒ 4096 ๋ฐ”์ดํŠธ ๋‹จ์œ„์˜ ํŽ˜์ด์ง€ ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์™œ๊ทธ๋Ÿด๊นŒ์š”? ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ด์œ ๊ฐ€ ์žˆ๋Š”๋ฐ, ๋ณดํ†ต์€ OS๋„ 4096 ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์บ์‹œ ๊ฐ™์€ OS์˜ ์—ฌ๋Ÿฌ ๊ฐ€์† ์žฅ์น˜๋“ค์˜ ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์ฃ .

๊ทผ๋ฐ ์ •๋ง๋กœ ๊ทธ๋Ÿด๊นŒ์š”?

๊ทธ๊ฒŒ ๊ถ๊ธˆํ•ด์„œ ์ง์ ‘ ํ•œ๋ฒˆ ํŽ˜์ด์ง€ ํŒŒ์ผ ๋งค๋‹ˆ์ €๋ฅผ ๊ตฌํ˜„ํ•ด์„œ ์‹คํ—˜ํ•ด๋ดค์Šต๋‹ˆ๋‹ค. ํ†ต๊ณ„์ ์œผ๋กœ ์œ ์˜ํ•˜๊ฒŒ ๋น ๋ฅด๋„ค์š”.

ํŽ˜์ด์ง€ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉ ํ•  ๋•Œ, ํŽ˜์ด์ง€ ํฌ๊ธฐ๊ฐ€ 4096์ธ๊ฒŒ ๊ฐ€์žฅ ๋น ๋ฅด๋‹ค๋Š” ์‹คํ—˜ ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ์Šคํฌ๋ฆฐ์ƒท.
9
7

Nix ์„ค์ • ๊ฑด๋“ค๋‹ค๊ฐ€ (1) brew cask๋กœ ์„ค์น˜๋œ ์•ฑ๋“ค์„ ๋ชป ์ฐพ๊ณ  (2) ๋ฉ”์ธ ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ ์“ฐ๋˜ Zen์˜ ๋ชจ๋“  ์„ค์ •์ด ๋‚ ์•„๊ฐ”๋‹ค ๐Ÿ™ƒ

(1)์€ ๋ณต๊ตฌํ–ˆ๋Š”๋ฐ... (2)๋Š” ์ด๋ ‡๊ฒŒ ๋œ ๊น€์— ํŒŒํญ์œผ๋กœ ๋Œ์•„๊ฐˆ๊นŒ ๊ณ ๋ฏผ์ค‘

2

์ด ํŽธ์ง€๋Š” ๋ฏธ๋ž˜์—์„œ ์ตœ์ดˆ๋กœ ์‹œ์ž‘๋˜์–ด -1๋…„์— ํ•œ ๋ฐ”ํ€ด ๋Œ๋ฉด์„œ ๋ฐ›๋Š” ์‚ฌ๋žŒ์—๊ฒŒ ํ–‰์šด์„ ์ฃผ์—ˆ๊ณ  ์ง€๊ธˆ์€ ๋‹น์‹ ์—๊ฒŒ๋กœ ์˜ฎ๊ฒจ์ง„ ์ด ํŽธ์ง€๋Š” -4์ผ ์•ˆ์— ๋‹น์‹  ๊ณ์„ ๋– ๋‚˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜๊ตญ์—์„œ did:plc:ppk763j7o2wkinvzuqx4orrb์ด๋ผ๋Š” ์‚ฌ๋žŒ์€ 2026๋…„์— ์ด ํŽธ์ง€๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ์–ด์ฉŒ๊ณ 

0

claude max๋ฅผ ๊ตฌ๋…ํ•˜๋ฉด ์›” 200$์”ฉ ๊นจ์ง„๋‹ค๋Š” ์‚ฌ์†Œํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ, ๋ณ„๋„ ๊ณผ๊ธˆ์ด ์—†์–ด ์ธ๊ฐ„์„ฑ์„ ์ง€ํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3

API ๊ธฐ๋ฐ˜ ์—์ด์ „ํŠธ์—์„œ ์š”๊ธˆ์ œ ๊ธฐ๋ฐ˜ ์—์ด์ „ํŠธ๋กœ ๋„˜์–ด์™€, ์ด์ œ ๋งˆ์Œ๊ป ๊ฐ์‚ฌ์ธ์‚ฌ๋ฅผ ํ•˜๋Š” ํ’๋ถ€ํ•œ ์ธ๊ฐ„์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฏธ๋ฆฌ๋ฏธ๋ฆฌ ์•„๋ถ€ ๋–จ์–ด์„œ ๊ธฐ๊ณ„ํ™” ์‹œ๋Œ€๋ฅผ ๋Œ€๋น„ํ•˜์ž

์—์ด์ „ํŠธ๊ฐ€ ์‹คํ–‰์ค‘์ธ ํ„ฐ๋ฏธ๋„ ํ™”๋ฉด. ์ดํ•˜๋Š” ํ„ฐ๋ฏธ๋„์˜ ๋‚ด์šฉ

[์—์ด์ „ํŠธ]
  save_emacs_buffers_in_repo() ํ•จ์ˆ˜:
  - emacsclient๋กœ ์‹คํ–‰ ์ค‘์ธ Emacs์™€ ํ†ต์‹ 
  - ํ•ด๋‹น ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๊ฒฝ๋กœ์— ์†ํ•œ ๋ฒ„ํผ๋งŒ ํ•„ํ„ฐ๋ง (string-prefix-p)
  - ์ˆ˜์ •๋œ ๋ฒ„ํผ๋งŒ ์ €์žฅ (buffer-modified-p)
  - ์ €์žฅ๋œ ๋ฒ„ํผ ๊ฐœ์ˆ˜๋ฅผ ๋ฉ”์‹œ์ง€๋กœ ํ‘œ์‹œ
  - emacsclient๊ฐ€ ์—†๊ฑฐ๋‚˜ ํ†ต์‹  ์‹คํŒจ ์‹œ ๊ฒฝ๊ณ ๋งŒ ์ถœ๋ ฅํ•˜๊ณ  ๊ณ„์† ์ง„ํ–‰

  ์ด์ œ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ์‹œ ํ•ด๋‹น ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๋ชจ๋“  ์ˆ˜์ •๋œ Emacs ๋ฒ„ํผ๊ฐ€ ์ž๋™์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

[์‚ฌ์šฉ์ž]
> ์ข‹์•„ ๋„ค๊ฐ€ ์ตœ๊ณ ์•ผ

[์—์ด์ „ํŠธ]
โบ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ด์ œ ์•ˆ์ „ํ•˜๊ณ  ๋˜‘๋˜‘ํ•˜๊ฒŒ ์ž‘๋™ํ•  ๊ฒƒ ๊ฐ™๋„ค์š”. ํ˜น์‹œ ํ…Œ์ŠคํŠธํ•ด๋ณด์‹œ๊ณ  ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฉด ์–ธ์ œ๋“  ์•Œ๋ ค์ฃผ์„ธ์š”.
6

An Nyeong (ๅฎ‰ๅฏง) shared the below article:

ํ”„๋ก ํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฒ•

ใ„น @disjukr@hackers.pub

์ด ๊ธ€์€ ๋ฆฌ์•กํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์‹œ๊ฐ„์˜ ํ๋ฆ„์— ๋”ฐ๋ฅธ ์˜์กด ๊ทธ๋ž˜ํ”„ ๊ด€๋ฆฌ๋ฅผ ์„ค๋ช…ํ•˜๋ฉฐ, ํŠนํžˆ ํ”„๋ก ํŠธ์—”๋“œ ์ƒํƒœ ๊ด€๋ฆฌ์— ์žˆ์–ด ์˜ต์ €๋ฒ„๋ธ”๋ณด๋‹ค ์‹œ๊ทธ๋„์ด ๋” ์ ํ•ฉํ•œ ์ด์œ ๋ฅผ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ €์ž๋Š” ํ”„๋ก ํŠธ์—”๋“œ ์ƒํƒœ๊ฐ€ ์‹œ๊ฐ„์— ๋”ฐ๋ผ ๊ฒฐ์ •์ ์œผ๋กœ ๋ณ€ํ•˜์ง€ ์•Š๊ณ , ๋…ธ๋“œ์˜ ์˜์กด ๊ด€๊ณ„๊ฐ€ ๋ Œ๋” ํŠธ๋ฆฌ์— ๋”ฐ๋ผ ๋ณ€ํ™”๋ฌด์Œํ•˜๊ฒŒ ๋ฐ”๋€Œ๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค. Rx, Redux, XState์™€ ๊ฐ™์€ ๊ธฐ์กด ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐฉ์‹์˜ ํ•œ๊ณ„๋ฅผ ์ง€์ ํ•˜๋ฉฐ, ์‹œ๊ทธ๋„(+ DI์™€ ์ˆ˜๋ช…๊ด€๋ฆฌ)์„ ์ค‘์‹ฌ์œผ๋กœ ์˜ต์ €๋ฒ„๋ธ”, ๋ฆฌ๋“€์„œ, ์Šคํ…Œ์ดํŠธ๋จธ์‹ ์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ ๊ธฐ์ˆ ์˜ ์žฅ์ ์„ ๊ทน๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์• ๋‹ˆ๋ฉ”์ด์…˜, ํผ ๊ด€๋ฆฌ, NPC ์ธ๊ณต์ง€๋Šฅ๊ณผ ๊ฐ™์ด ํŠน์ • ์ƒํ™ฉ์— ์ ํ•ฉํ•œ ๊ธฐ์ˆ ์„ ์‹œ๊ทธ๋„๋กœ ๋ฌถ์–ด ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ๋ฅผ ์„ ์–ธ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ์•ˆํ•˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ตฌ์กฐ๋ฅผ ๋”์šฑ ๋ช…ํ™•ํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค.

Read more โ†’
6

์ง€๊ธˆ๊นŒ์ง€ Go๋ฅผ ํ•˜๋ฉฐ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ์จ๋ณธ์ ์ด ์—†๋‹ค๋Š” ๊ฒƒ์— ๋†€๋ž์ง€๋งŒ ๋ฉฐ์น  ์ „์— ์“ธ ์ผ์ด ์žˆ์—ˆ๊ณ  ์จ๋ณด๋ ค๊ณ  ํ•˜๋‹ˆ ์—†๋Š” ๋ฌธ๋ฒ•์ด๋ผ๊ณ  ํ•œ๋‹ค

(๊ตฌ๊ธ€์— ๊ฒ€์ƒ‰ํ–ˆ์„๋•Œ Gemini ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋กœ๋Š” ์žˆ๋‹ค๊ณ  ํ–ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ๊ตฌ๊ธ€์˜ ํ”„๋กœ๋•ํŠธ๊ฐ€ ๊ตฌ๊ธ€์˜ ์–ธ์–ด์—์„œ ํ• ๋ฃจ์‹œ๋„ค์ด์…˜์„ ์ผ์œผํ‚ค๋‚˜.)

Go๋‹ต๊ฒŒ ์ž˜ ์น˜ํ™˜ํ• ์ˆ˜ ์žˆ๋Š” ๋ฌธ๋ฒ•์ด ์žˆ์„๊ฒƒ ๊ฐ™์€๋ฐ ์ œ๋„ค๋ฆญ๋„ ๊ตฌ๊ธ€์˜ ์ดˆ์•ˆ๊ณผ ๋งŽ์ด ๋‹ฌ๋ผ์ง„๊ฑธ ์ƒ๊ฐํ•˜๋ฉด ์‚ผํ•ญ์ด ๋“ค์–ด์™€๋„ ์–ด๋–ค ํ˜•ํƒœ์ผ์ง€ ์ „ํ˜€ ๋ชจ๋ฅด์ง€ ์•Š์„๊นŒ

0
6

PaperWM.spoon ๋ฏธ๋ฌ˜ํ•˜๊ฒŒ ๊ตผ๋œจ๊ณ  ์‚ฌ์šฉ์„ฑ์ด ์ข‹์ง€ ๋ชปํ•ด์„œ ์‹น ์ง€์› ๋‹ค... Hamerspoon ์œ„์—์„œ ๋„๋Š” ๊ฑฐ๋ผ ํ•œ๊ณ„๊ฐ€ ์žˆ๋Š” ๋“ฏ.

ํŠนํžˆ ์ตœ๊ทผ์— Wezterm์ด๋ž‘ ๊ฐ™์ด ์“ฐ๋ฉด Wezterm์ด ๋ป—๋Š”๋ฐ (์™œ์ธ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ๋‹ค) PaperWM.spoon ๊ตฌ์กฐ ์ƒ ํ•˜๋‚˜๊ฐ€ ๋ป—์œผ๋ฉด ์ฐฝ ์ •๋ ฌ์ด๋ž‘ ํฌ์ปค์‹ฑ์ด ์—‰๋ง์ด๋œ๋‹ค ๐Ÿ™ƒ

0

PaperWM.spoon ๋ฏธ๋ฌ˜ํ•˜๊ฒŒ ๊ตผ๋œจ๊ณ  ์‚ฌ์šฉ์„ฑ์ด ์ข‹์ง€ ๋ชปํ•ด์„œ ์‹น ์ง€์› ๋‹ค... Hamerspoon ์œ„์—์„œ ๋„๋Š” ๊ฑฐ๋ผ ํ•œ๊ณ„๊ฐ€ ์žˆ๋Š” ๋“ฏ.

ํŠนํžˆ ์ตœ๊ทผ์— Wezterm์ด๋ž‘ ๊ฐ™์ด ์“ฐ๋ฉด Wezterm์ด ๋ป—๋Š”๋ฐ (์™œ์ธ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ๋‹ค) PaperWM.spoon ๊ตฌ์กฐ ์ƒ ํ•˜๋‚˜๊ฐ€ ๋ป—์œผ๋ฉด ์ฐฝ ์ •๋ ฌ์ด๋ž‘ ํฌ์ปค์‹ฑ์ด ์—‰๋ง์ด๋œ๋‹ค ๐Ÿ™ƒ

2

@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๋งŒ ์˜์‹ฌํ•˜๊ฒŒ ๋˜๋„ค์š”.

3

@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 ํ•œ ๋ฒˆ ์จ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ๐Ÿ™‡

2

nix update ํ•  ๋•Œ๋งˆ๋‹ค emacs ๋‹ค์‹œ ๋นŒ๋“œํ•˜๋Š”๋ฐ ์ด๊ฑฐ ์–ด์ผ€ ์บ์‹ฑํ•˜์ง€ ๐Ÿค” input ์˜์กด์„ฑ์€ ๋˜‘๊ฐ™์€๋ฐ ์™œ ๋นŒ๋“œ๋ฅผ ๋˜ ํ•˜์ง€...

2

๋„ˆ๋ฌด ์–ด๋ ค์šด๊ฑด ์•ˆ๋˜๊ฒ ์ง€๋งŒ ๊ทธ๋ ‡๋‹ค๊ณ  ๋„ˆ๋ฌด ์‰ฌ์šด๊ฑฐ ๊ณ ๋ฅด๋ฉด ์ฐ ์ฒ˜์Œ์ด์‹  ๋ถ„๋“ค ์œ„ํ•ด์„œ ๋‚จ๊ฒจ๋“œ๋ ค์•ผ ๋˜๊ณ ... ์ฒดํฌ๋ฆฌ์ŠคํŠธ ์ด์Šˆ ๊ดœ์ฐฎ์•„๋ณด์˜€์ง€๋งŒ ์•„์ง ํ”„๋กœํฌ์ ˆ ๋‹จ๊ณ„๊ณ ... ์ฉ์ฉ...

@2chanhaeng์ด์ฐฌํ–‰ ์ €๋„ ์•„์ง ํ”„๋กœ์ ํŠธ ํŒŒ์•…์ด ์•ˆ ๋˜์–ด์žˆ์–ด์„œ ๋งฅ๋ฝ ์ ์–ด๋ณด์ด๋Š” #274๋ฅผ ์ง‘์—ˆ์–ด์š” ใ…‹ใ…‹

2
0
1
1

@tedpoolํ…Œ๋“œํ’€ @kodingwarriorJaeyeol Lee @gaebalgom๊ฐœ๋ฐœ๊ณฐ @nyeongAn Nyeong (ๅฎ‰ๅฏง) @joonnotnotJoon @crohasangํฌ๋กธ์ƒ @z9mb1wwj @r4bb1tํ†ก๊ธฐ @2chanhaeng์ด์ฐฌํ–‰ @cosmic_elevatorSooji Choi @ooheunda @woaol๋ฒจ @meneleHanal Ae @devom @eottabom @hjleee93hyeonjeong lee ์˜ค๋Š˜ ๋ฐœ๋Œ€์‹์—์„œ ๋งŒ๋‚˜ ๋ตˆ์–ด์„œ ๋ฐ˜๊ฐ€์› ์Šต๋‹ˆ๋‹ค! ๋‹ค์‹œ ํ•œ ๋ฒˆ ์•ž์œผ๋กœ ์ž˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ™”์ดํŒ…!

21

gemini-cli๋Š” ์ด์ƒํ•œ ๋งฅ๋ฝ์„ ๊ธฐ์–ตํ•ด์„œ ๋‚˜๋ž‘ ์ž๊พธ ๋‹คํˆฐ๋‹ค...

์ž๊พธ A๋ฅผ B๋กœ ๋ฐ”๊ฟ”์„œ ๋‚ด๊ฐ€ A๋กœ ๋Œ๋ ค๋†“๊ณ  C๋ฅผ ๊ณ ์ณ๋‹ฌ๋ผ๊ณ  ํ•˜๋ฉด ๋˜ C๋ฅผ ๊ณ ์น˜๋ฉด์„œ A๋„ B๋กœ ์€๊ทผ์Šฌ์ฉ ๋ฐ”๊ฟ”๋‘ 

0

gemini-cli๋Š” ์ด์ƒํ•œ ๋งฅ๋ฝ์„ ๊ธฐ์–ตํ•ด์„œ ๋‚˜๋ž‘ ์ž๊พธ ๋‹คํˆฐ๋‹ค...

์ž๊พธ A๋ฅผ B๋กœ ๋ฐ”๊ฟ”์„œ ๋‚ด๊ฐ€ A๋กœ ๋Œ๋ ค๋†“๊ณ  C๋ฅผ ๊ณ ์ณ๋‹ฌ๋ผ๊ณ  ํ•˜๋ฉด ๋˜ C๋ฅผ ๊ณ ์น˜๋ฉด์„œ A๋„ B๋กœ ์€๊ทผ์Šฌ์ฉ ๋ฐ”๊ฟ”๋‘ 

4

์…ธ์— ์ณ์•ผํ•  git status ๋ช…๋ น์–ด๋ฅผ Claude Code์—๊ฒŒ ๋ณด๋‚ด์„œ ํ† ํฐ์„ ๋‚ญ๋น„ํ•˜๋Š” ๋ชจ์Šต, ์Šคํฌ๋ฆฐ์— ์ ๋ฌ˜ํ™”. 568 (H) x 1264 (W) px.

Claude Code์—๊ฒŒ `gs`๋ผ๊ณ  ์ž˜๋ชป ๋ณด๋‚ด์ž Claude๊ฐ€ ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ณ  ๋‚ด์šฉ์„ ๋ถ„์„ํ•˜๋Š” ๋ชจ์Šต์ด ๋‹ด๊ธด ์…ธ ๊ฐˆ๋ฌด๋ฆฌ
6
0
1

์˜ค๋Š˜์€ aider-chat์ด texlive ์˜์กด์„ฑ์„ ๋“ค๊ณ ์™”๋Š”๋ฐ ์–˜๊ฐ€ ๋นŒ๋“œ ์‹คํŒจํ•จ... ์™œ๋ƒ๋ฉด macOS์˜ ld๋ž‘ GNU์˜ ld๋ž‘ ํ—ˆ์šฉํ•˜๋Š” ๋ฒ„์ „ ํฌ๋งท์ด ๋‹ฌ๋ผ์„œ...

0

nix-darwin์„ ์“ฐ๊ธฐ ์‹œ์ž‘ํ•˜๊ณ ... ์—…๋ฐ์ดํŠธ๊ฐ€ ์ œ์ผ ๋ฌด์„œ์›Œ์กŒ๋‹ค

nix flake update๋งŒ ํ•˜๋ฉด ์ € ๊นŠ์ˆ™ํžˆ ์žˆ๋Š” ํŒจํ‚ค์ง€๊ฐ€ ๊ฐ‘์ž๊ธฐ ๋œฌ๊ธˆ์—†์ด ์ƒˆ๋กœ์šด ๋””ํŽœ๋˜์‹œ๋ฅผ ๊ฐ–๊ณ ์™€์„œ ๋นŒ๋“œ๋ฅผ ์‹คํŒจํ•จ...

0

nix-darwin์„ ์“ฐ๊ธฐ ์‹œ์ž‘ํ•˜๊ณ ... ์—…๋ฐ์ดํŠธ๊ฐ€ ์ œ์ผ ๋ฌด์„œ์›Œ์กŒ๋‹ค

nix flake update๋งŒ ํ•˜๋ฉด ์ € ๊นŠ์ˆ™ํžˆ ์žˆ๋Š” ํŒจํ‚ค์ง€๊ฐ€ ๊ฐ‘์ž๊ธฐ ๋œฌ๊ธˆ์—†์ด ์ƒˆ๋กœ์šด ๋””ํŽœ๋˜์‹œ๋ฅผ ๊ฐ–๊ณ ์™€์„œ ๋นŒ๋“œ๋ฅผ ์‹คํŒจํ•จ...

5

@nyeongAn Nyeong (ๅฎ‰ๅฏง) ํ˜„์กด Coding AI์ค‘์—์„œ ๊ฐ€์žฅ ์ข‹์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค .Agentic Coding์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ๋Š”....๋ฉ‹์ง„ ๋„๊ตฌ.. ์•„๋‹ˆ๋ฉด Gemini CLI๋„ ์ข‹์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ๋ฌด๋ฃŒ์ธ์ง€๋ผ pro model์—์„œ flash๋กœ ๊ธˆ๋ฐฉ ๋‚ด๋ ค์˜ค๋”๋ผ๊ตฌ์š”

0
2
4

๋Œ€์ฒด ํด๋กœ๋“œ ์ฝ”๋“œ๋Š” ๋ญ๊ฐ€ ์–ด๋–ป๊ธธ๋ž˜ ์ปค์„œ๋‚˜ ์ฝ”ํŒŒ์ผ๋Ÿฟ ์“ฐ์‹œ๋˜ ๋ถ„๋“ค์ด ๋„˜์–ด๊ฐ€์„œ๋Š” ์•ˆ ๋Œ์•„์˜ค๋Š” ๊ฑฐ์ฃ ??

1

์ฝ”๋”ฉ ์–˜๊ธฐ

  • ์–ด์ œ Claude API ์—ฐ๋™ํ•ด์„œ, Opus 4 ๋ชจ๋ธ๋กœ ์งค๋ง‰ํ•˜๊ฒŒ ์จ๋ดค๋Š”๋ฐ ์š”์ฒญ๋‹น ๊ฑฐ์˜ 0.4$ ์ •๋„์”ฉ ์‚ฌ๋ผ์ง€๋Š” ๊ฒƒ์„ ๋ชฉ๊ฒฉํ•˜๊ณ , API ๋Š” ์“ฐ๋ฉด ์•ˆ๋˜๊ฒ ๊ตฌ๋‚˜ ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. (๋Œ€์ถฉ 5๋ถˆ ์ˆœ์‚ญ)
  • ์ฝ”๋“œ ์—์ด์ „ํŠธ ์—ญํ• ๋กœ Claude Code Opus 4 ์™€ gemini-cli gemini-2.5-pro ์˜ ์‘๋‹ต ๊ฒฐ๊ณผ๋ฌผ์ด ๊ฐœ์ธ์ ์œผ๋กœ ๊ฝค ๋งŒ์กฑ์Šค๋Ÿฝ๋„ค์š”. Claude Code ๋Š” ์“ฐ๋‹ค ๋ณด๋ฉด ์–ด๋А ์ˆœ๊ฐ„ Opus 4 ์—์„œ Sonnect 4 ๋กœ ๋ฐ”๋€Œ์–ด ์žˆ๋„ค์š”. ์‚ฌ์šฉ์ œํ•œ์ด ์žˆ๋‚˜ ์‹ถ์Šต๋‹ˆ๋‹ค.
/status ๋ช…๋ น์œผ๋กœ ํ™•์ธ ํ•ด๋ณด๋ฉด ์•„๋ž˜ ์ฒ˜๋Ÿผ ์ ํ˜€ ์žˆ๊ธด ํ•ฉ๋‹ˆ๋‹ค.

 Model โ€ข /model
  LDefault Opus 4 for up to 20% of usage limits, then use Sonnet 4
   (currently Opus)
  • Cursor ๋ฅผ ์—ฌ์ „ํžˆ ์“ฐ๊ณ  ์žˆ๊ณ , Cursor Tab ์€ ํ›Œ๋ฅญํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ, ์—ฐ๊ฐ„๊ตฌ๋…์ด ๋งŒ๋ฃŒ๋˜๊ณ  ๋‚˜๋ฉด, Cursor ๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ• ์ง€๋Š” ๊ณ ๋ฏผ์„ ํ•ด๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. VS Code ๋ฅผ ์จ๋„ ๋˜๊ณ , Windsurf ๊ฐ™์€ ๋Œ€์•ˆ๋„ ์žˆ๊ณ ์š”.
  • ์ฝ”๋“œ ์—์ด์ „ํŠธ๋“ค์ด CLI ์—์„œ ๋™์ž‘ํ•˜๋‹ˆ ์—๋””ํ„ฐ์™€๋Š” ๋…๋ฆฝ์ ์ด์ง€๋งŒ Claude Code ๋Š” VS Code ํ™•์žฅ์œผ๋กœ (์ž๋™ ์„ค์น˜๋˜์–ด) ์ฝ”๋“œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์—๋””ํ„ฐ์—์„œ ๋ฐ”๋กœ ๋ณผ ์ˆ˜ ๋„ ์žˆ์–ด์„œ ์ข‹๋„ค์š”.

๊ทธ๋ ‡๊ฒŒ, Claude Code ์™€ gemini-cli ๊ฐ€ ํ™”๋ฉด์˜ ์ผ์ • ์˜์—ญ์„ ์ฐจ์ง€ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค..

Chat Mode, Claude Code, gemini-cli in Cursor.
2

๋Œ€์ฒด ํด๋กœ๋“œ ์ฝ”๋“œ๋Š” ๋ญ๊ฐ€ ์–ด๋–ป๊ธธ๋ž˜ ์ปค์„œ๋‚˜ ์ฝ”ํŒŒ์ผ๋Ÿฟ ์“ฐ์‹œ๋˜ ๋ถ„๋“ค์ด ๋„˜์–ด๊ฐ€์„œ๋Š” ์•ˆ ๋Œ์•„์˜ค๋Š” ๊ฑฐ์ฃ ??

1
2
1

org ์“ฐ๋Š” ๊ฒฝํ—˜์ด ์ฐธ ์ฆ๊ฒ๋‹ค

  • ํ•œ๋•€ํ•œ๋•€ ์บ˜๋ฆฐ๋”์— ์ผ์ • ๋“ฑ๋กํ•˜๊ธฐ (๋Œ€์ถฉ ๊ดด๋กœ์šด ํ‘œ์ •)
  • org์— ๊ธฐ๋กํ•˜๊ณ  beorg๋กœ ์บ˜๋ฆฐ๋”๋ž‘ ๋™๊ธฐํ™”ํ•˜๊ธฐ (์•„์ฃผ ํ™˜ํ•œ ํ‘œ์ •)
macOS ํ™”๋ฉด ๊ฐˆ๋ฌด๋ฆฌ. ์ขŒ์ธก์— Emacs๋กœ org ๋ฌธ์„œ๋ฅผ ํŽธ์ง‘ํ™”๋ฉด์ด ์žˆ๊ณ , ์˜ค๋ฅธ์ชฝ์— ๋‹ฌ๋ ฅ ์•ฑ์ด ์‹คํ–‰๋˜๊ณ  ์žˆ๋‹ค.
์ขŒ์ธก์— ๊ธฐ๋กํ•œ ์ผ์ •์ด ์˜ค๋ฅธ์ชฝ ๋‹ฌ๋ ฅ์—๋„ ๋“ฑ๋ก๋˜์–ด ์žˆ๋‹ค.
1

org ์“ฐ๋Š” ๊ฒฝํ—˜์ด ์ฐธ ์ฆ๊ฒ๋‹ค

  • ํ•œ๋•€ํ•œ๋•€ ์บ˜๋ฆฐ๋”์— ์ผ์ • ๋“ฑ๋กํ•˜๊ธฐ (๋Œ€์ถฉ ๊ดด๋กœ์šด ํ‘œ์ •)
  • org์— ๊ธฐ๋กํ•˜๊ณ  beorg๋กœ ์บ˜๋ฆฐ๋”๋ž‘ ๋™๊ธฐํ™”ํ•˜๊ธฐ (์•„์ฃผ ํ™˜ํ•œ ํ‘œ์ •)
macOS ํ™”๋ฉด ๊ฐˆ๋ฌด๋ฆฌ. ์ขŒ์ธก์— Emacs๋กœ org ๋ฌธ์„œ๋ฅผ ํŽธ์ง‘ํ™”๋ฉด์ด ์žˆ๊ณ , ์˜ค๋ฅธ์ชฝ์— ๋‹ฌ๋ ฅ ์•ฑ์ด ์‹คํ–‰๋˜๊ณ  ์žˆ๋‹ค.
์ขŒ์ธก์— ๊ธฐ๋กํ•œ ์ผ์ •์ด ์˜ค๋ฅธ์ชฝ ๋‹ฌ๋ ฅ์—๋„ ๋“ฑ๋ก๋˜์–ด ์žˆ๋‹ค.
2

์˜ค๋Š˜์€ projects.org ํŒŒ์ผ์—์„œ ๋‚ด ๋…ธํŠธ ์ค‘ ํ”„๋กœ์ ํŠธ๋ฅผ ์ฐพ์•„ ๋ฆฌ์ŠคํŠธ๋กœ ๋„์›Œ์ฃผ๋„๋ก ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์งฐ๋‹ค. org agenda๋„ ์ข‹๋˜๋ฐ ๊ธฐ๋Šฅ์ด ํ’๋ถ€ํ•ด์„œ ์ตํžˆ๊ธฐ ์–ด๋ ค์›Œ์„œ, ๋‚ด๊ฐ€ ์‹ ๊ฒฝ์“ฐ๊ณ  ์‹ถ์€ ๊ธฐ๋Šฅ๋งŒ ์ž‘๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค.

org๋Š” ์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ์ด๋‚˜ ์—˜๋ฆญ์„œ ๋ผ์ด๋ธŒ๋ถ์ฒ˜๋Ÿผ ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํŒŒ์ผ ๋‚ด์— ๋„ฃ์–ด๋ฒ„๋ฆด ์ˆ˜ ์žˆ๊ณ , ์ ‘์–ด์„œ ๊น”๋”ํ•˜๊ฒŒ ๊ฒฐ๊ณผ๋งŒ ๋ณผ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹๋‹ค.

projects.org ํŒŒ์ผ์˜ ๋ชจ์Šต. SRC ๋ธ”๋ก์€ ์ ‘ํ˜€์žˆ๊ณ , ์ง„ํ–‰์ค‘, ์™„๋ฃŒ, ํ๊ธฐ๋œ ํ”„๋กœ์ ํŠธ๋“ค์ด ๋ฆฌ์ŠคํŠธ์—…๋˜์–ด์žˆ๋‹ค.SRC BLOCK์„ ํŽผ์นœ ๋ชจ์Šต. ํ”„๋กœ์ ํŠธ ๋ชฉ๋ก์„ ๋ฝ‘์•„๋‚ด๊ธฐ ์œ„ํ•œ Elisp ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋‹ด๊ฒจ์žˆ๋‹ค.
3

์œผ LLM ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ž˜ ์“ฐ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค

Elisp ์—ฐ๊ด€ ๋ฆฌ์ŠคํŠธ์—์„œ ํŠน์ • ๊ฐ’ ์ถ”์ถœํ•˜๋Š” ์ฝ”๋“œ ์งœ๋‹ฌ๋ผ๋‹ˆ๊นŒ ํŒŒ์ด์ฌ์—์„œ ์ •๊ทœ์‹์œผ๋กœ ์ถ”์ถœํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ฃผ๋Š”๋ฐ...

0

์œผ LLM ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ž˜ ์“ฐ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค

Elisp ์—ฐ๊ด€ ๋ฆฌ์ŠคํŠธ์—์„œ ํŠน์ • ๊ฐ’ ์ถ”์ถœํ•˜๋Š” ์ฝ”๋“œ ์งœ๋‹ฌ๋ผ๋‹ˆ๊นŒ ํŒŒ์ด์ฌ์—์„œ ์ •๊ทœ์‹์œผ๋กœ ์ถ”์ถœํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ฃผ๋Š”๋ฐ...

1
16
3