@songbirds하기
@RangHo별 수호자 아카이브 랭호 💫 훈훈하군요 (씨익)

Jaeyeol Lee
@kodingwarrior@hackers.pub · 407 following · 309 followers
Neovim Super villain. 풀스택 엔지니어 내지는 프로덕트 엔지니어라고 스스로를 소개하지만 사실상 잡부를 담당하는 사람. CLI 도구를 만드는 것에 관심이 많습니다.
Hackers' Pub에서는 자발적으로 바이럴을 담당하고 있는 사람. Hackers' Pub의 무궁무진한 발전 가능성을 믿습니다.
그 외에도 개발자 커뮤니티 생태계에 다양한 시도들을 합니다. 지금은 https://vim.kr / https://fedidev.kr 디스코드 운영 중
Github
- @malkoG
Blog
- kodingwarrior.github.io
mastodon
- @kodingwarrior@silicon.moe
출근길에 보았던 재호님 스레드 글이 너무 좋아서, 더 많은 개발자들이 봤으면 하는 마음에 내용을 일부 인용하며 Hackers' Pub 에도 공유합니다.
일을 하는 것 자체의 행복이 있거든요. 그니깐... 열심히 일을 하고 나가 놀아야 더 재밌다는 것.
글안에 링크된 GeekNews 의 내용도 좋아서 함께 인용합니다.
좋은 사이드 프로젝트가 주는 행복한 선(Zen, 禪) | GeekNews
모든 사람이 창작 본능을 어느 정도 가지고 있다고 믿음
반드시 예술적이거나 창의적인 것이 아니더라도 무언가를 '만드는 일'은 누구에게나 중요함
인생의 의미가 있다면, 그것은 ‘무언가 새로운 것을 존재하게 만드는 것’이라는 신념
창작을 통해 우리는 세상을 조금씩 바꾸고, 자신도 변화시킴
글 정리하다보니까 이거 2부작으로 내야겠네
보통은 Ruby 코드를 작성할때 irb 같은 대화형 인터페이스를 사용하는 것이 일반적이지만, Bash 스크립트와 섞어서 사용할때 one-liner 스크립트를 작성하면 더욱 빛을 발휘합니다. 여기서 one-liner 스크립트란 한줄짜리로 실행하는 스크립트라고 이해하면 됩니다. ruby one-liner 스크립트로 작성할때는 다음과 같이 시작합니다.
$ ruby -e "<expression>"
여기서 -e
옵션은 one-liner 스크립트의 필수요소인데, 파라미터로 넘겨준 한줄짜리 Ruby 코드를 evaluation해주는 역할을 합니다. 여러분이 **파이프 연산자**에 대한 개념을 이해하고 있다면, 이런 트릭도 사용할 수 있습니다.
$ echo "5" | ruby -e "gets.to_i.times |t| \{ puts 'hello world' \}"
# =>
# hello world
# hello world
# hello world
# hello world
# hello world
표준라이브러리를 사용하고 싶을때는 -r
옵션을 사용할 수도 있습니다. 이 옵션은 ruby에서 require
를 의미하는데, 식을 평가하기전에 require
문을 미리 선언하고 들어가는 것이라 이해하면 됩니다.
예를 들면, 이런 것도 가능합니다 .
$ echo "9" | ruby -rmath -e "puts Math.sqrt(gets.to_i)"
# => 3.0
위의 스크립트는 아래와 동일합니다.
$ echo "9" | ruby -e "require 'math'; puts Math.sqrt(gets.to_i)"
# => 3.0
이런 원리를 이용하면, JSON/XML/CSV/YAML 등의 포맷으로 출력되는 데이터를 어렵지 않게 처리할 수 있습니다. one-liner 스크립트를 작성하는 방법에 대해 자세히 알아가고 싶다면, https://learnbyexample.github.io/learn_ruby_oneliners/one-liner-introduction.html 여기를 참고해주시면 좋을 것 같습니다.
이에 관해서, 25분-30분 정도 분량의 글을 정리해서 올릴 것 같은데 커밍쑨.....
관련해서 https://hackers.pub/@kodingwarrior/01960935-5078-7541-87a7-de521e2b2a0d 이런 내용 위주로 설명이 될 것 같습니다

딱 필요한 커밋 로그만 diff 떠서 슥 훑어보기file = ARGV[0] # 파일을 파라미터로 넘겨줄 수 있지만, 디폴트로는 리포지토리에 대한 log를 나열하게 됨git_logs = `git log --oneline #{file} | gum choose --limit 100` # 100개 정도만 조회해서 다중 선택# See https://abhij.it/ruby-difference-between-system-exec-and-backticks/git_logs.each_line do |line| commit_hash, *_ = line.split system("git show #{commit_hash}") # 선택한 커밋 해시에서 어떤 변경사항이 있었는지 조회 puts("=====") puts("Press ENTER key to CONTINUE") puts("=====") getsendchecklist = []git_logs.each_line do |line| checklist << "- [ ] #{line}" # 지금까지 조회한 커밋 로그들을 파악완료했는지 여부 파악을 위해 체크리스트 생성endputs checklist.join
딱 필요한 커밋 로그만 diff 떠서 슥 훑어보기file = ARGV[0] # 파일을 파라미터로 넘겨줄 수 있지만, 디폴트로는 리포지토리에 대한 log를 나열하게 됨git_logs = `git log --oneline #{file} | gum choose --limit 100` # 100개 정도만 조회해서 다중 선택# See https://abhij.it/ruby-difference-between-system-exec-and-backticks/git_logs.each_line do |line| commit_hash, *_ = line.split system("git show #{commit_hash}") # 선택한 커밋 해시에서 어떤 변경사항이 있었는지 조회 puts("=====") puts("Press ENTER key to CONTINUE") puts("=====") getsendchecklist = []git_logs.each_line do |line| checklist << "- [ ] #{line}" # 지금까지 조회한 커밋 로그들을 파악완료했는지 여부 파악을 위해 체크리스트 생성endputs checklist.join
hackers.pub
Link author: Jaeyeol Lee@kodingwarrior@hackers.pub
https://www.youtube.com/watch?v=30YWsGDr8mA
Julia Evans의 Make Hard Things Easy 명강이니 추천합니다.
내용을 요약하자면....
복잡하거나 난해하거나 어려운 것들을 단순한 것으로 만들기 위해서
- 난해한 것들을 단순하게 만들어주는 훌륭한 도구를 사용하거나
- 찾는데서 삽질하는 빈도를 줄이기위해 좋은 레퍼런스를 확보하거나
- 시간순으로 설명하거나
- 가려져있는 것들을 가시화할 것
어떤 것에 대해 질문을 올리면 Read The Fucking Manual 라는 질타를 받거나, 복잡하거나 어렵지만 다들 접하는 이슈이기 때문에 당연히 알아야 하는 것처럼 느껴지지만 그것이 자신만의 문제는 아니라고 결론냄.
복잡하고 어려운 코드들은 이유가 있으며, 그 배경에는 온갖 예외처리라던가 다양한 요구사항을 충족하다보니 생겨난 방대한 코드라던가 블랙박스 그 자체인 시스템들이 있기 때문에 잘 모르는 것도 이상한 것이 아니라고 강조함.
CLI 도구를 조합해서 커맨드 작성할때, (일회성이라면 모르겠지만) 자주 사용하는 스크립트라면 짧은 옵션보다 긴 옵션을 사용하는 것이 좋습니다. 풀 네임으로 커맨드라인 명령어를 작성하는 것이 어떻게 보면 문서화의 역할도 하기 때문입니다. 다른 프로그램에서 시스템 콜을 호출해서 사용하는 유즈케이스라면 더더욱 가독성을 높이는 효과가 있습니다.
어떤 CLI 도구는 man 커맨드로 문서를 봤을때 양이 어마어마하고 어렵게 느껴질 수 있습니다. 하지만, 위에서 언급한 것처럼 full name으로 작성한 스니펫들을 모아놓으면 그렇게 어렵지도 않고 각 도구의 역할을 명확하게 이해할 수 있고, 결과적으로는 장기적인 기억으로 남을 수 있습니다. git, curl, aws-cli, jq, gh 어떤 CLI 도구이던간에 모든 옵션을 하나하나 기억하려고 할 필요도 없습니다. 필요하면 그때그때 full name으로 명시된 옵션으로 스크립트를 짜놓고 모아두면 됩니다.
https://matklad.github.io/2025/03/21/use-long-options-in-scripts.html
보통은 Ruby 코드를 작성할때 irb 같은 대화형 인터페이스를 사용하는 것이 일반적이지만, Bash 스크립트와 섞어서 사용할때 one-liner 스크립트를 작성하면 더욱 빛을 발휘합니다. 여기서 one-liner 스크립트란 한줄짜리로 실행하는 스크립트라고 이해하면 됩니다. ruby one-liner 스크립트로 작성할때는 다음과 같이 시작합니다.
$ ruby -e "<expression>"
여기서 -e
옵션은 one-liner 스크립트의 필수요소인데, 파라미터로 넘겨준 한줄짜리 Ruby 코드를 evaluation해주는 역할을 합니다. 여러분이 **파이프 연산자**에 대한 개념을 이해하고 있다면, 이런 트릭도 사용할 수 있습니다.
$ echo "5" | ruby -e "gets.to_i.times |t| \{ puts 'hello world' \}"
# =>
# hello world
# hello world
# hello world
# hello world
# hello world
표준라이브러리를 사용하고 싶을때는 -r
옵션을 사용할 수도 있습니다. 이 옵션은 ruby에서 require
를 의미하는데, 식을 평가하기전에 require
문을 미리 선언하고 들어가는 것이라 이해하면 됩니다.
예를 들면, 이런 것도 가능합니다 .
$ echo "9" | ruby -rmath -e "puts Math.sqrt(gets.to_i)"
# => 3.0
위의 스크립트는 아래와 동일합니다.
$ echo "9" | ruby -e "require 'math'; puts Math.sqrt(gets.to_i)"
# => 3.0
이런 원리를 이용하면, JSON/XML/CSV/YAML 등의 포맷으로 출력되는 데이터를 어렵지 않게 처리할 수 있습니다. one-liner 스크립트를 작성하는 방법에 대해 자세히 알아가고 싶다면, https://learnbyexample.github.io/learn_ruby_oneliners/one-liner-introduction.html 여기를 참고해주시면 좋을 것 같습니다.
이에 관해서, 25분-30분 정도 분량의 글을 정리해서 올릴 것 같은데 커밍쑨.....
https://newsletter.posthog.com/p/50-things-weve-learned-about-building
PostHog가 성공적인 제품을 만들면서 깨달은 50가지 교훈 (뉴스레터에서 지금까지 발행해놓은 것들 오마카세처럼 모아놓음)
그 중에서 마음에 드는 것들을 몇개 뽑아보자면...
- 신뢰는 투명성에서 온다. Build in Public 같은 것이 도움이 될 수 있음
- 시장에 내놓지 않으면 검증 조차 할 수 없음. 일단 시장에 내놓고 반응을 살펴볼 것
- 개밥먹기를 통해서 고객에게 전달되기 전에 문제점을 빠르게 인식하고 개선할 수 있는 흐름을 만들 것
Jaeyeol Lee shared the below article:
mkDerivation 인자로 함수를 넘기는 이유

lionhairdino @lionhairdino@hackers.pub
NixOS.kr 디스코드에 올렸는데, 다른 분들의 의견을 들어보려고 해커스펍에도 올립니다. 닉스 경험이 많지 않은 사람의 글이니, 정확하지 않을 수 있습니다. 틀린 곳이 있으면 바로 알려주세요.
※ 닉스를 처음 접하는 분들이나, 닉스로 실용적인 업무를 하시는데 문제가 없는 분들한테는 적당한 글은 아닙니다. 서두에 읽으면 도움이 될만한 분들을 추려서 알려 드리려고 하니, 의외로 필요한 분들이 없겠습니다. 실무자들은 이렇게까지 파고들며 알 필요 없고, 닉스 개발자들이야 당연히 아는 내용일테고, 입문자 분들도 역시 이런 내용으로 어렵다는 인식을 갖고 시작할 필요는 없으니까요. 그럼 남은 건 하나네요. mkDerivation 동작을 이미 아는 분들의 킬링 타임용이 되겠습니다.
외국어를 익힐 때, 문법없이 실전과 부딪히며 배우는 방법이 더 좋기는 한데, 가끔은 문법을 따로 보기 전엔 넘기 힘든 것들이 있습니다. 닉스란 외국어를 익히는데도 실제 설정 파일을 많이 보는 것이 우선이지만, 가끔 "문법"을 짚고 넘어가면 도움이 되는 것들이 있습니다.
닉스 알약 (제목이 재밌네요. 알약) 글을 보면 mkDerivation
이 속성 집합을 받아, 거기에 stdenv 등 기본적인 것을 추가한 속성 집합을 만들어 derivaition
함수에 넘기는 간단한 래핑 함수임을 직관적으로 잘 설명하고 있습니다.
그런데, 실제 사용 예시들을 만나면, mkDerivation
에 속성 집합을 넘기지 않고, attr: {...} 형태의 함수를 넘기는 경우를 더 자주 만납니다. 그래서, 왜 그러는지 실제 구현 코드를 보고 이유를 찾아 봤습니다.
mkDerivation =
fnOrAttrs:
if builtins.isFunction fnOrAttrs then
makeDerivationExtensible fnOrAttrs
else
makeDerivationExtensibleConst fnOrAttrs;
mkDerivation
의 정의를 보면 인자로 함수를 받았느냐 아니냐에 따른 동작을 분기합니다. 단순히, stdenv에서 가져온 속성들을 추가한다면, 함수를 인자로 받지 않아도 속성 집합을 병합해주는 //
의 동작만 있어도 충분합니다.
{ a = 1; } // { b = stdenv.XXX; }
하지만, 함수로 받는 이유를 찾으면, 코드가 단순하지 않습니다. 아래는 함수를 받을 때 동작하는 실제 구현 일부를 가져 왔습니다.
makeDerivationExtensible =
rattrs:
let
args = rattrs (args // { inherit finalPackage overrideAttrs; });
...
전체를 보기 전에 일단 args
에서부터 머리가 좀 복잡해집니다. args
가 args
를 재귀 참조하고 있습니다. 보통 rattrs
매개 변수로는 아래와 같은 함수들이 들어 옵니다.
stdenv.mkDerivation (finalAttrs: {
pname = "timed";
version = "3.6.23";
...
tag = finalAttrs.version;
}
(와, 해커스펍은 코드 블록에 ANSI가 먹습니다! 지원하는 곳들이 드문데요.)
코드를 바로 분석하기 전에, 닉스의 재귀 동작을 먼저 보면 좋습니다.
재귀 생각 스트레칭
nix-repl> let r = {a = 1; b = a;}; in r error: undefined variable 'a'
위 동작은 오류지만, 아래처럼
rec
를 넣어주면 가능합니다.nix-repl> let r = rec {a = 1; b = a;}; in r { a = 1; b = 1; }
※
rec
동작은 Lazy 언어의fix
로 재귀를 구현하는 동작입니다. ※ 참고 Fix 함수
rec
를 써서 속성 안에 정의 중인 속성에 접근할 수 있습니다. 그런데, 아래 같이 속성을r.a
로 접근하면,rec
없이도 가능해집니다.nix-repl> let r = {a = 1; b = r.a;}; in r { a = 1; b = 1; }
닉스 언어의 Lazy한 특성 때문에 가능합니다.
이제, 원래 문제와 비슷한 모양으로 넘어가 보겠습니다. 아래같은 형태로 바로 자기 자신에 재귀적으로 접근하면 무한 재귀 에러가 나지만,
nix-repl> let x = x + 1; in x
error: infinite recursion encountered
아래처럼 람다 함수에 인자로 넘기면 얘기가 달라집니다.
nix-repl> let args = (attr: {c = 1; b = attr.a + attr.c + 1;}) (args // { a = 1; }); in args
{ b = 3; c = 1; }
여기서 속성b
의 정의 동작이 중요합니다. 위 내용을 nix-instantiate
로 평가하면,
nix-instantiate --eval -E 'let args = (attr: {c = 1; b = attr.a + attr.c + 1;}) (args // { a = 1; }); in args'
{ b = <CODE>; c = 1; }
--eval
옵션은 WHNF까지만 평가합니다. <CODE>
는 하스켈 문서에서 나오는 <thunk>
와 같은, 평가가 아직 이루어지지 않은 상태를 뜻합니다. ※ Nix Evaluation Performance
b
는 아직 평가가 되지 않았으니, 에러가 나지 않고, b
가 필요한 순간에는 attr.a
가 뭔지 알 수 있는 때가 됩니다.
attr:
{ c = 1;
b = attr.a + attr.c + 1;
}
속성 b
는 아직 알 수 없는, 미래의 attr에 있는 a를 받아 써먹고,
원래는 rec
없이 접근하지 못했던, c
에도 attr.c로 접근이 가능합니다. (attr.c
은 현재 정의하고 있는 속성셋의 c
가 아니라, 매개 변수 attr
로 들어온 속성셋의 c
입니다.)
원래 문제로 다시 설명하면, mkDerivation
에 넘기고 있는, 사용자 함수 finalAttrs: { ... }
에서,
닉스 시스템이 넣어주는 stdenv 값 같은 것들과 사용자 함수내의 속성들을 섞어서 속성 정의를 할 수 있다는 얘기입니다. 아래처럼 말입니다.
tag = finalAttrs.version;
뭐하러, 이런 복잡한 개념을 쓰는가 하면, 단순히 속성 추가가 아니라, 기존 속성이 앞으로 추가 될 속성을 기반으로 정의되어야 할 때는 이렇게 해야만 합니다. 함수형 언어에선 자주 보이는, 미래값을 가져다 쓰는 재귀 패턴인데, 저는 아직 그리 익숙하진 않습니다.
Hackers' Pub이 검색엔진에도 잘 노출되게 할겸, 짤막짤막하게 Vim에 대한 정보글을 트위터에 남겼던걸 여기도 남겨야겠다.
@starterdroid윤서아🍋 해커스펍으로도 많이 낚아야죠 흐흐
@kodingwarrior@hackers.pubJaeyeol Lee 헉 이건 생각을 못해봤네요... 재밌겠는데요??
@starterdroid윤서아🍋 이제 이걸로 많은 사람들을 낚을 수 있어야 해요 (중요)
프론트엔드 개발자분들 위주로 페디버스로 영입을 많이 해보고 싶다. 포트폴리오로 개발할만한 것이 지천에 널려있는데...!!
- 인스타그램 클론코딩 : PixelFed 클라이언트 개발에 적용하기
- 트위터 클론코딩 : 마스토돈 클라이언트 개발할때 적용하기
- 나만의 블로그 만들기 : 이건.... 해커스펍이 그 역할을 하겠지...?
실용적이면서 소셜이 들어갈만한 사이드플젝은 연합우주만한 맛집이 없음...!!!
프론트엔드 개발자분들 위주로 페디버스로 영입을 많이 해보고 싶다. 포트폴리오로 개발할만한 것이 지천에 널려있는데...!!
- 인스타그램 클론코딩 : PixelFed 클라이언트 개발에 적용하기
- 트위터 클론코딩 : 마스토돈 클라이언트 개발할때 적용하기
- 나만의 블로그 만들기 : 이건.... 해커스펍이 그 역할을 하겠지...?
[Cloudflare] Meta’s Llama 4 is now available on Workers AI (2025-04-06)
Body Doubling(모각코, 모각작)이 ADHD인이 작업을 끝내는데 도움이 된다는 내용
딱 필요한 커밋 로그만 diff 떠서 슥 훑어보기
file = ARGV[0] # 파일을 파라미터로 넘겨줄 수 있지만, 디폴트로는 리포지토리에 대한 log를 나열하게 됨
git_logs = `git log --oneline #{file} | gum choose --limit 100` # 100개 정도만 조회해서 다중 선택
# See https://abhij.it/ruby-difference-between-system-exec-and-backticks/
git_logs.each_line do |line|
commit_hash, *_ = line.split
system("git show #{commit_hash}") # 선택한 커밋 해시에서 어떤 변경사항이 있었는지 조회
puts("=====")
puts("Press ENTER key to CONTINUE")
puts("=====")
gets
end
checklist = []
git_logs.each_line do |line|
checklist << "- [ ] #{line}" # 지금까지 조회한 커밋 로그들을 파악완료했는지 여부 파악을 위해 체크리스트 생성
end
puts checklist.join
스크립팅할때는 Ruby가 직관적이긴 함
딱 필요한 커밋 로그만 diff 떠서 슥 훑어보기
file = ARGV[0] # 파일을 파라미터로 넘겨줄 수 있지만, 디폴트로는 리포지토리에 대한 log를 나열하게 됨
git_logs = `git log --oneline #{file} | gum choose --limit 100` # 100개 정도만 조회해서 다중 선택
# See https://abhij.it/ruby-difference-between-system-exec-and-backticks/
git_logs.each_line do |line|
commit_hash, *_ = line.split
system("git show #{commit_hash}") # 선택한 커밋 해시에서 어떤 변경사항이 있었는지 조회
puts("=====")
puts("Press ENTER key to CONTINUE")
puts("=====")
gets
end
checklist = []
git_logs.each_line do |line|
checklist << "- [ ] #{line}" # 지금까지 조회한 커밋 로그들을 파악완료했는지 여부 파악을 위해 체크리스트 생성
end
puts checklist.join
The Llama 4 herd
Link: https://ai.meta.com/blog/llama-4-multimodal-intelligence/
Comments: https://lobste.rs/s/i4h5o3
트위터 봇 만들 때는 스팸짓 좀 해도 어차피 팔로워가 없으면 다른 사람 피드를 가득 채울 일이 없으니 부담도 없었다. 그런데 여기에서는 봇을 조금 잘못 돌리면 연합 타임라인이 순식간에 봇의 스팸글로 가득 차 버린다. 트위터 서버에 비해 영세한 이 서버에 부담을 주지 않아야 한다는 생각도 들고... 아무쪼록 조심해야 할 것 같다.
@parksbSimon Park 선생님 덕분에 연합 타임라인이 더 알차게 됩니다(?)
오늘은 오픈소스 기여 연대기에 특별한 날로 기록될듯.
- 공식 디코에서 메인테이너의 Thanks to 6인에 에 리스트업
- 해당 오픈소스 주도하는 회사 개발자의 선제적 LinkedIn 친추요청
@eesSongChiYoung 대박 완전 멋있네요
오늘은 오픈소스 기여 연대기에 특별한 날로 기록될듯.
- 공식 디코에서 메인테이너의 Thanks to 6인에 에 리스트업
- 해당 오픈소스 주도하는 회사 개발자의 선제적 LinkedIn 친추요청
@lavieenbleubleu 와! 반가워요!
working on this drawing for the “secret rules of the terminal" zine
@kodingwarriorJaeyeol Lee 아, 그러게요. 요즘엔 그 프로젝트 안 하시나요?
@hongminhee洪 民憙 (Hong Minhee) 뭔가를 손을 댈 엄두가 안나네요 당장은 🥹🥹🥹🥹
Vue.js로 쫌쫌따리 만들던 PixelFed 클라이언트 프로젝트가 있었는데, 차별점으로서 나름 내 개성을 살린 필터가 내장된 무언가를 만들려고 했었음. 근데..... 필터를 정작 만들지도 않았고, 지금 나와있는 픽셀페드 모바일 앱은 이미 내장이 되어있는 모양이고 하하하
正體中文翻譯現已可用!
我們很高興地宣布,Hackers' Pub 現在支援正體中文(zh-TW
)!這意味著我們的介面將更加親近使用正體中文的軟體工程師和技術愛好者。
關於 Hackers' Pub
Hackers' Pub 是一個專為軟體工程師共同分享知識和經驗的平台。我們不僅是一個社區,還是一個啟用了 ActivityPub 的社交網路,讓您可以在聯邦宇宙(fediverse)中關注您喜愛的開發者,並在您的訂閱流中獲取他們的最新貼文。
我們的特色:
- 開放的技術交流:自由分享您的知識、經驗和見解
- 多語言支援:現在包括正體中文在內的多種語言
- 聯邦互連:通過 ActivityPub 協議與其他平台(如 Mastodon)互通
- 程式碼分享:支援 Markdown 和程式碼語法高亮
- 包容性社區:遵循我們的行為準則,確保所有人都受到尊重
如何切換到正體中文
要將介面切換到正體中文,請按照以下步驟操作:
- 登入您的 Hackers' Pub 帳戶
- 前往「Settings」頁面
- 選擇「Language settings」標籤
- 在左側「Languages to select:」列表中找到並點擊「Chinese (Taiwan) 中文(台灣)」
- 該選項會移至右側的「Selected languages:」列表
- 如果您希望將正體中文設為主要介面語言,可以使用箭頭按鈕將其移至已選擇語言列表的最上方
- 點擊頁面底部的「Save」按鈕保存設定
我們也提供了正體中文版的 Markdown 指南,幫助您以最佳方式格式化您的貼文和文章。
加入 Hackers' Pub
Hackers' Pub 目前採用邀請制。如果您希望加入我們的社區,可以通過直接發送私人訊息(DM)給我來請求邀請碼。我們非常歡迎正體中文使用者的加入!
幫助我們改進
這是我們首次推出正體中文介面,可能仍有需要改進的地方。如果您發現任何翻譯錯誤或有改進建議,請透過以下方式聯繫我們:
- 在 GitHub 儲存庫中提交問題或拉取請求
- 在我們的討論區分享您的反饋
感謝您成為 Hackers' Pub 社區的一員,讓我們一起建立一個更加包容、多元的技術交流平台!
附言:如果您對其他語言的翻譯感興趣,請查看我們的翻譯貢獻指南(英文)。
Gumroads가 Rails를 버리기로 결정했다는글을 지나가다 봤었는데 역시나 https://news.hada.io/topic?id=17059
이것도 레일즈네
普段、日本語を読む時、漢字の意味だけを見て韓国の漢字音で読む事が多く、意味は分かっていても正確な読み方が分からない事が多いのだが、明日の発表を控え、私の拙い日本語力が借りを背負って帰ってきた。発表の原稿で、読み方がよく分からない単語に一々振り仮名を付ける中。😮💨
@fedde 안녕하세요! 반갑습니다!
내가 AI 코드 편집기 사용을 중단한 이유
------------------------------
- 처음 AI 코드 도구를 사용할 때는 놀라움과 효율성에 감탄했음
- 특히 C++ 컴파일 에러 분석에 도움을 줘 마치 마법처럼 느껴졌음
- GitHub Copilot과 다양한 LLM 기반 에디터 통합 도구를 사용하면서 개발 워크플로우의 일환이 되었음
- 그러나 2024년 말에는 모든 LLM 통합 기능을 코드 에디터에서 제거했음 …
------------------------------
https://news.hada.io/topic?id=20145&utm_source=googlechat&utm_medium=bot&utm_campaign=1834
@kodingwarriorJaeyeol Lee 카테고리는 좀 다르지만 터미널에서 쓰는 Claude Code는 어떠세요?
@hongminhee洪 民憙 (Hong Minhee) 아직 클로드 결제를 안해서 모르겠네요. Aider랑 비슷하다고는 들었던 것 같은데, Aider에다가 관성에 의해서 OpenAI API 연결해서 쓰고 있어서요
MCP 연결된대서 혹하고는 있는데, Aider에도 곧 연결될 것 같아서 좋은 소식 기다리고 있슴다
향후 10여년 간 AI가 일으킬 변화는 산업혁명을 능가할 것이다. 샘 올트먼은 OpenAI가 "진정한 의미의 초지능"과 "영광스러운 미래"를 목표로 한다고 말했다. 그 미래는 어떤 모습일까? 이에 답하기 위한 시나리오. https://ai-2027.com/
사용경험에 있어서 전반적으로 Cursor랑 나랑 안맞는 것 같다. 차라리 쓸거면 Aider를 쓰고 말지라는 생각.....
RAG 마스터 : 랭체인으로 완성하는 LLM 서비스 - 멀티모달·그래프 RAG·에이전트·파인튜닝까지 (브라이스 유, 조경아, 박수진, 김재웅 (지은이) / 프리렉 / 2025-04-28 / 32,000원) https://feed.kodingwarrior.dev/r/HBSao7
http://www.aladin.co.kr/shop/wproduct.aspx?ItemId=361845185&partner=openAPI&start=api
파스타도~ 파면이다~
@robin_makirobin 파로 시작해서 파면 ㄷㄷ
진짜 이건 명 짤이다
VSCode 확장 중에 Vim 키맵을 지원하는 플러그인 vscode-vim을 지나가다 다들 보셨을 겁나다.
Vim 키맵을 지원한다는 것 만으로도 색다른(그리고 좀 더 생산성에 유의미한 변화를 주는) 개발경험을 누릴 수 있지만, VSCode에서 지원하는 기능(랭귀지서버 기능 포함)을 내가 원하는대로 키맵에 매핑할 수 있고 마우스를 거의 쓰지 않고도 오로지 개발에만 몰입이 가능하게 됩니다. Vim의 장점, VSCode의 장점 모두 누릴 수 있게 됩니다.
오늘 소개하는 영상은, vscode-vim을 어떻게 유용하게 사용할 수 있는지 소개하고 있습니다. 국내에 있는 자료 중에 이만큼 본격적으로 잘 소개해주는 자료는 없을겁니다 👀👀
https://youtu.be/oOLoE4pJQf4?si=R2zLyi02oamLnFWG
VSCode를 기반으로 하는 Cursor, Windsurf 등의 에디터에도 비슷하게 적용할 수 있으니 한번 참고해보면 좋을거에요!
조던 엘렌버그라는 수학자가 쓴 '틀리지 않는 법'이란 책이 있는데, 재밌고 읽어볼만하다.
그 책에서 컴퓨터가 수학자가 하던일을 할수 있게되면 어떡하냐에 대해 저자의 해결책을 제시하는데 원래 하던일을 컴퓨터한테 맡기고 수학자들은 더 고차원적인 일을 하면 된다고 한다. 한 10년 전에 읽었을때도 그냥 대책없고 나이브한 생각으로 보였다. 근데 요즘은 (실제로 어떻게 될지랑은 상관없이) 저런 나이브한 마음가짐을 일부러라도 가지고 일해야 뭐라도 해낼듯.
AI MVP를 넘어서: 실제로 필요한 것
------------------------------
- AI 제품을 만드는 대부분의 회사는 실험 단계에 갇혀 있으며 신뢰할 만한 시스템과 도구가 부족함
- 우리의 사례
- 올해 초, LLM 모델을 gpt-4o-2024-08-06
에서 gpt-4o-2024-11-20
로 업데이트함
- 핵심 프롬프트 테스트 통과율이 기존 100%에서 79%로 하락함
- 정작 Anthropic의 Sonnet 3.5가 95%…
------------------------------
https://news.hada.io/topic?id=20119&utm_source=googlechat&utm_medium=bot&utm_campaign=1834
Hackers' Pub의 소스 코드 저장소를 제 개인 계정에서 hackers-pub 조직 계정으로 옮겼습니다.
Two fascinating new papers on LLM interpretability from Anthropic
https://simonwillison.net/2025/Mar/27/tracing-the-thoughts-of-a-large-language-model/
Claude code를 잘 써보려고 이렇게 저렇게 해보는 중.
코드는 잘 찍어내는데… 가끔씩 삑사리를 내서 끝도없는 삽질하느라 크레딧만 쳐묵쳐묵해서 쳐다보고 있다가 끊어줘야한다.
내가 없어도 이 정도 할 수 있으면(시간당 $5정도) 쓸만한데… 계속 쳐다보고 있을거면… 그냥 클로드 웹(월 $20)이나 깃헙 코파일럿(월 $10)보다 나을 게 없다.
사실 휴먼 개발자도 비슷하다. 해보고 안되면 “적절한” 시점에 도움을 청해야하는데… “적절한”게 어렵다. 제대로 해보지도 않고 도움을 청해도 안되고, 안되는 걸 끝까지 붙잡고 있어도 안된다.
이 녀석에게 “적절함”을 어떻게 가르쳐야하나…
この「ハッカーズ・パブ」(Hackers' Pub)は、ハッカーたちが集まるネット上の場所であって、各自ブログも出来て、レスも出来て、掲示板みたいにも使えて、ユーザーの望みであればFediverseなる世界中の 変人 みんなのネットワークとも繋がりうる、言わばハッカーたちのための新しいツイッターみたいなサイトらしい。
ツイッターより優れた部分は何かというと、技術的に何時間も喋れそうだが、私が注目するのは、まずここの創立者および主任開発者である洪 民憙 (Hong Minhee)先生はイーロンなどよりかはずっとましな方で、頼れる方だということ。ユーザーの自由に関する彼の哲学、このサイトの設計思想などは信用できる。多分。なにしろ彼は今やFLOSS(Free/Libre/Open-Source Software)の開発を専業としておられるのだ。
なお、例えひょんな事で洪さんがイーロン並みに暴走する、由々しき事態でも、ここはツイッターみたいにはならないということ。この「ハッカーズ・パブ」はソースコードに限らず、プロトコルや作動原理も全部FLOSSなので。まあ洪さんの暴走なんてないでしょうけどね。
エンジニアとして生きてきた分、こういうサービスを運営する側の負担を大体把握しているので、自分ではやらないと思うし、ここが盛り上がったところで (盛り上げたところで) 自分の人生に役立つかというと、そうも言えない。が、「みんながTwitterとかFacebookとかInstagramなどを使っている」今の状態と比べれば、ハッカーズ・パブがもっと使われる未来の方が好ましいことに違いはない。そう考えると、洪さんの努力に感謝せざるをえない。
で、パブに日本語圏のユーザーをもっと招くのが創立者の方針というかご希望らしく、衝動的に参加してみる。これから機会あれば、日本語でも面白い話をここに残すのを目指してみる。自分日本語全然下手ですが。よろしく。
주변 신입 개발자들이 회사에서 잘려서 나도 불안함... {나, 만 22세, 인턴과파트타임경력8개월, 돈없음, 재학중}
@z9mb1wwj 잘할 수 있습니다! 파이팅!
@kodingwarriorJaeyeol Lee
@quadr최치선 아마 지금 로그인이나 초대장 보내는 API 같은 건 없을테니 먼저 로그인부터 구현하고 그 다음에 초대장 보내는 요청을 코드로 날리면 될 것 같아요.