洪 民憙 (Hong Minhee)
@hongminhee@hackers.pub · 1017 following · 727 followers
Hi, I'm who's behind Fedify, Hollo, BotKit, and this website, Hackers' Pub! My main account is at
@hongminhee洪 民憙 (Hong Minhee)
.
Fedify, Hollo, BotKit, 그리고 보고 계신 이 사이트 Hackers' Pub을 만들고 있습니다. 제 메인 계정은:
@hongminhee洪 民憙 (Hong Minhee)
.
Fedify、Hollo、BotKit、そしてこのサイト、Hackers' Pubを作っています。私のメインアカウントは「
@hongminhee洪 民憙 (Hong Minhee)
」に。
Website
- hongminhee.org
GitHub
- @dahlia
Hollo
- @hongminhee@hollo.social
DEV
- @hongminhee
velog
- @hongminhee
Qiita
- @hongminhee
Zenn
- @hongminhee
Matrix
- @hongminhee:matrix.org
X
- @hongminhee
@lionhairdino 틀렸습니다!
@hongminhee洪 民憙 (Hong Minhee) 커밋 로그 보고 와도 되나요?
@curry박준규 보고 오셔도 됩니다. ㅋㅋㅋ
오늘은 시간이 없어서 큰 작업은 못 하고, 그냥 아주 소소한 업데이트 하나 했습니다. 과연 뭐가 바뀌었을까요? (참고로 UI로도 드러나는 변화입니다.)
슬슬 탈출 준비를 하면서 서버를 알아보는데, N100 미니 PC도 종류가 많고 제조사마다 가격이 천차만별이네... 그냥 비싼거 살까
@akastoot악하 홈 서버 생각하고 계신 건가요?
하지만 이식성을 위해서 짧은 옵션을 사용해야만 할 때도 있다. BSD 계열의 커맨드 구현들은 보통 긴 옵션을 아예 제공 안 하기 때문에… 😭
당장 macOS에 내장된 커맨드들만 해도 그렇다.
하지만 이식성을 위해서 짧은 옵션을 사용해야만 할 때도 있다. BSD 계열의 커맨드 구현들은 보통 긴 옵션을 아예 제공 안 하기 때문에… 😭
보통은 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분 정도 분량의 글을 정리해서 올릴 것 같은데 커밍쑨.....
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
https://newsletter.posthog.com/p/50-things-weve-learned-about-building
PostHog가 성공적인 제품을 만들면서 깨달은 50가지 교훈 (뉴스레터에서 지금까지 발행해놓은 것들 오마카세처럼 모아놓음)
그 중에서 마음에 드는 것들을 몇개 뽑아보자면...
- 신뢰는 투명성에서 온다. Build in Public 같은 것이 도움이 될 수 있음
- 시장에 내놓지 않으면 검증 조차 할 수 없음. 일단 시장에 내놓고 반응을 살펴볼 것
- 개밥먹기를 통해서 고객에게 전달되기 전에 문제점을 빠르게 인식하고 개선할 수 있는 흐름을 만들 것
洪 民憙 (Hong Minhee) 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;
뭐하러, 이런 복잡한 개념을 쓰는가 하면, 단순히 속성 추가가 아니라, 기존 속성이 앞으로 추가 될 속성을 기반으로 정의되어야 할 때는 이렇게 해야만 합니다. 함수형 언어에선 자주 보이는, 미래값을 가져다 쓰는 재귀 패턴인데, 저는 아직 그리 익숙하진 않습니다.
@hongminhee洪 民憙 (Hong Minhee) 아항 그렇군요. 근데 제가 대화양을 컨텍스트 윈도에 잘 대응을 못시키겠네요. 정말 다른 모델은 컨텍스트 윈도가 이미 꽉찼을만큼 대화가 긴건 아니었다고 생각햇는데요. 이것도 토큰수를 직접 세보기 전엔 모르겠네요.
@bglbgl gwyng 아, 에이전트 코딩을 생각했는데 그냥 대화만 할 때는 또 다르겠네요.
프론트엔드 개발자분들 위주로 페디버스로 영입을 많이 해보고 싶다. 포트폴리오로 개발할만한 것이 지천에 널려있는데...!!
- 인스타그램 클론코딩 : PixelFed 클라이언트 개발에 적용하기
- 트위터 클론코딩 : 마스토돈 클라이언트 개발할때 적용하기
- 나만의 블로그 만들기 : 이건.... 해커스펍이 그 역할을 하겠지...?
Hackers' Pub이 검색엔진에도 잘 노출되게 할겸, 짤막짤막하게 Vim에 대한 정보글을 트위터에 남겼던걸 여기도 남겨야겠다.
해커스펍에서 리액션 다음으로 지원되는기능은 블락일까 아니면 해시태그일까
Gemini Pro 2.5 엄청 똑똑하다... 기존 모델들은 대화가 길어지고 내용이 깊어지면 그냥 뻔한소리를 반복하기 시작하던데, 얘는 계속 생각해서 아이디어를 살려준다.
@bglbgl gwyng 아무래도 Gemini 시리즈가 컨텍스트 윈도가 길어서 그런 것도 큰 것 같아요. 다른 모델은 중간에 compaction을 해야 하니까 아무래도 대화가 길어지면 손실이 있고 말이죠.
Gemini Pro 2.5 엄청 똑똑하다... 기존 모델들은 대화가 길어지고 내용이 깊어지면 그냥 뻔한소리를 반복하기 시작하던데, 얘는 계속 생각해서 아이디어를 살려준다.
Body Doubling(모각코, 모각작)이 ADHD인이 작업을 끝내는데 도움이 된다는 내용
앞으로 Hackers' Pub에서는 國漢英文混用으로 글을 올려볼까?
昨晩、俺が寝てる間にアメリカにいる誰かが俺の blockchain.com アカウントにログインしようとして、実際に成功しやがった。しかも、2段階認証(2FA)まで解除されてたんだ。カスタマーサポートにはすぐに状況を連絡して、とりあえずパスワードだけは変更しておいた。どうしてこんなことになったのか一つずつ確認したかったけど、週末だし家族との時間を優先したかったから、深追いは後回しにした。
残高はゼロだったから金銭的な被害はなかったけど、自分の2FA(OTP)が突破されたのは初めてのことだし、原因はきっちり突き止めるつもりだ。
原因は全然分からないまま、結局退会することにした。メールのデバイス認証をしないと進めない仕様で、俺のGmailには侵入の証跡なんて全く無いのに、2段階認証まで無効にした。まおかげさまで、Googleにログインしてる端末の履歴と、1Passwordのアクセス履歴も全部チェック済み。(写真のあの時間、当たり前だけど俺はぐっすり寝てたよ。)
なんとも後味の悪い話だな。
공유를 누르기엔 같은 글이 반복적으로 큐레이팅 될까 봐 조심스럽고, 글이 마음에 들어 반응을 안하자니 근질 거리는, 다른 서비스를 쓰던 습관이 남아 있네요. 해커스펍에 리액션 버튼이 있긴 있어야 할 것 같습니다.
@lionhairdino 로드맵에는 들어 있습니다… 조금만 기다려 주세요!
공유를 누르기엔 같은 글이 반복적으로 큐레이팅 될까 봐 조심스럽고, 글이 마음에 들어 반응을 안하자니 근질 거리는, 다른 서비스를 쓰던 습관이 남아 있네요. 해커스펍에 리액션 버튼이 있긴 있어야 할 것 같습니다.
@hongminhee洪 民憙 (Hong Minhee) 발표자료를 이제서야 봤네요. 지나온 오픈소스 여정을 잘 보았습니다. 모든 것이 결국 Hackers' Pub 으로까지 이어진 느낌이네요. 앞으로 또 어떤 길을 걸으실지도 기대되고, 응원도 하고 싶습니다.
자, 이제 Hackers' Pub 에 국한문혼용기능을 넣을 차례입니다(?) 😂
@arkjunJuntai Park 감사합니다. ㅎㅎㅎ 안 그래도 만우절에 국한문혼용체 조선어(ko-Kore)를 추가할까 하다가 생각보다 할 게 많아서 포기했었네요. 🙄
러스트에서 SIMD 코드 짜기 너무 고통스럽다 어떻게 좀 해달라... Rust 2024에선 unsafe_op_in_unsafe_fn 때문에 더 고통스러워졌다...
닉스(Nix)를 써보려고 Nix Pills라는 글을 읽기 시작했다. 화면에 Hello, world!를 출력하는 패키지 hello를 닉스로 설치하는 방법이 나오더라.
nix-env -i hello
저런 하찮은 프로그램이 패키지로 존재하는지 처음 알았다.
혹시 해키지에도 저런 게 있는지 검색을 해봤는데 있더라.[1] 2010년에 Simon Marlow가 업로드했다. 그런데 특이한 점이 이 패키지의 소스 코드 저장소 주소가 darcs.haskell.org라는 것이다. darcs를 호스팅하는 곳은 hub.darcs.net만 있는 줄 알았는데 haskell.org에도 있었구나⋯ 그런데 이 사이트 UI도 아예 없고 그냥 디렉터리 리스팅이 나오는데 hub.darcs.net으로 이전하시면 안 되려나.
Pixelfedの脆弱性(CVE-2025-30741)の解説、Accept前にfollowingに加えちゃってるのが仕様違反だというような言い方だけど、もしかして投稿が見えちゃうこと自体はAPと直接衝突しないのかな。 https://fokus.cool/2025/03/25/pixelfed-vulnerability.html
BotKit을 이용해 국내외 기술 블로그의 아티클을 업로드하는 'Tech Blog Bot'을 만들었다. 1시간에 한 번씩 구독중인 블로그들의 새 아티클을 확인해 큐에 넣고, 1분에 하나씩 큐의 아티클을 업로드한다. BotKit의 유려함에 첫 번째로 놀랐고, 테스트로 돌려본 봇이 스팸짓을 하는 걸 보면서 두 번째로 놀랐다. https://techblogbot.parksb.xyz/
트위터 봇 만들 때는 스팸짓 좀 해도 어차피 팔로워가 없으면 다른 사람 피드를 가득 채울 일이 없으니 부담도 없었다. 그런데 여기에서는 봇을 조금 잘못 돌리면 연합 타임라인이 순식간에 봇의 스팸글로 가득 차 버린다. 트위터 서버에 비해 영세한 이 서버에 부담을 주지 않아야 한다는 생각도 들고... 아무쪼록 조심해야 할 것 같다.
BotKit을 이용해 국내외 기술 블로그의 아티클을 업로드하는 'Tech Blog Bot'을 만들었다. 1시간에 한 번씩 구독중인 블로그들의 새 아티클을 확인해 큐에 넣고, 1분에 하나씩 큐의 아티클을 업로드한다. BotKit의 유려함에 첫 번째로 놀랐고, 테스트로 돌려본 봇이 스팸짓을 하는 걸 보면서 두 번째로 놀랐다. https://techblogbot.parksb.xyz/
그러고보니 문득 생각이 난 건데 해커스.펍이 #hollo (@hollo@hollo.socialHollo
)와 마찬가지로
@hongminhee@hollo.social洪 民憙 (Hong Minhee)
님이 Fedify(@fedify@hollo.socialFedify: ActivityPub server framework) 기반으로 만든 자체 ActivityPub 소프트웨어라는 걸 알게 된 건 꽤 됐지만 그렇게 규모가 제법 되는 서비스가 저 분 소유의 홈서버에서 돌아가고 있다는 사실을 알게 된 건 얼마 전의 일이다.
Hackers’ Pub、気が付いたらいろいろとUIが変わっている
久々にログインしにきました
액펍 특성상 완전한 삭제는 매우 어렵습니다 (삭제 액티비티가 전달되지 않는 서버가 있을 수 있음)
昨晩、俺が寝てる間にアメリカにいる誰かが俺の blockchain.com アカウントにログインしようとして、実際に成功しやがった。しかも、2段階認証(2FA)まで解除されてたんだ。カスタマーサポートにはすぐに状況を連絡して、とりあえずパスワードだけは変更しておいた。どうしてこんなことになったのか一つずつ確認したかったけど、週末だし家族との時間を優先したかったから、深追いは後回しにした。
残高はゼロだったから金銭的な被害はなかったけど、自分の2FA(OTP)が突破されたのは初めてのことだし、原因はきっちり突き止めるつもりだ。
現在はHackers' Pubを作っている。QiitaやZennのようなものを目指している。
興味ある方はホンさん(
@hongminhee洪 民憙 (Hong Minhee)
)にお申し付けくださいとのこと
#FediLUG #東海道らぐ
本日開催する第8回FediLUG勉強会に私もオンラインで参加します!「国漢文混用体からHolloまで」というタイトルで発表します。よろしくお願いします。
国漢文混用体からHolloまで
本日、第8回FediLUG勉強会で「国漢文混用体からHolloまで」というタイトルで発表をしてきました。
私がなぜActivityPubサーバーフレームワークのFedifyと、シングルユーザー向けActivityPubサーバーのHolloを開発する事に成ったのか、その旅路を共有しました。
実は全ての始まりは、韓国語の「国漢文混用体」(漢字ハングル混じり文)に「振りハングル」を付けたいという単純な願いからでした。この小さな目標が、最終的にFedifyとHolloという二つのプロジェクトへと発展したのです。
興味のある方は、発表スライドをご覧ください: 「国漢文混用体からHolloまで」(Speaker Deck)
#FediLUG #Fedify #Hollo #ActivityPub #フェディバース #fediverse #fedidev
일본에 Fediverse Linux Users Group이라는 모임이 있는데, 거기서 〈국한문혼용체에서 Hollo까지〉라는 이상한 주제로 오늘 발표를 합니다…
RE: https://hollo.social/@hongminhee/019603c7-b5ef-7d81-bbd4-4c37d46edce9
@hongminhee洪 民憙 (Hong Minhee) 조금 빨리 알았다면 오늘 시간 내서 갔을텐데 아쉽네요... 발표 잘 마치셨기를 바랍니다.
@noxowlSuyeong RHIE 감사합니다!
일본에 Fediverse Linux Users Group이라는 모임이 있는데, 거기서 〈국한문혼용체에서 Hollo까지〉라는 이상한 주제로 오늘 발표를 합니다…
RE: https://hollo.social/@hongminhee/019603c7-b5ef-7d81-bbd4-4c37d46edce9
本日開催する第8回FediLUG勉強会に私もオンラインで参加します!「国漢文混用体からHolloまで」というタイトルで発表します。よろしくお願いします。
이제 에이전트 모드와 MCP 기능이 정식버전에 탑재됐네요!
https://github.blog/news-insights/product-news/github-copilot-agent-mode-activated/
바이브 코딩 고고고
#VS Code
설치형으로 블로그 만들어서 가꾸고, 메일 서버도 직접 띄워서 쓰고 이런 개발자들보면 왠지모를 호감이 간다. 근데 막상 나는 저런거 귀찮아서 절대 안하고 맨날 공짜만 찾아다닌다.
Vue.js로 쫌쫌따리 만들던 PixelFed 클라이언트 프로젝트가 있었는데, 차별점으로서 나름 내 개성을 살린 필터가 내장된 무언가를 만들려고 했었음. 근데..... 필터를 정작 만들지도 않았고, 지금 나와있는 픽셀페드 모바일 앱은 이미 내장이 되어있는 모양이고 하하하
@kodingwarriorJaeyeol Lee 아, 그러게요. 요즘엔 그 프로젝트 안 하시나요?
@Yoxem鯖魚蒜末貓 Okay, just let me know when you need it. I'll invite you!
@Yoxem鯖魚蒜末貓 FYI, we've just added the Traditional Chinese translation to Hackers' Pub!
正體中文翻譯現已可用!
我們很高興地宣布,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가 있길래 오랜만에 들어가봤습니다. 이곳은 전에 유명한 하스켈 책을 팔던 곳인데 지금은 없네요. 대신
@bglbgl gwyng 님이 좋아하실만한 걸 찾았습니다.
https://abuseofnotation.github.io/category-theory-illustrated/
@hongminhee洪 民憙 (Hong Minhee) I Will consider it because recently i am not fond of Programming very much
@Yoxem鯖魚蒜末貓 Okay, just let me know when you need it. I'll invite you!
@Yoxem鯖魚蒜末貓 我們還不支援繁體中文,但支援英文和簡體中文。如果您有興趣,我可以幫您取得邀請函!
사용경험에 있어서 전반적으로 Cursor랑 나랑 안맞는 것 같다. 차라리 쓸거면 Aider를 쓰고 말지라는 생각.....
@kodingwarriorJaeyeol Lee 카테고리는 좀 다르지만 터미널에서 쓰는 Claude Code는 어떠세요?
생각난 김에 또 하나 들자면, 본문에 대한 내부 표현이 HTML이 아니라 MFM이라는 것. MFM에 별 쓸 데 없는 기능은 다 넣어놓고, 정작 헤딩이나 목록 같이 문서의 의미론을 살리는 요소들은 HTML → MFM으로 번역을 안 해서 다 날아가 버린다. 서식에 굉장히 인색한 Mastodon조차도 원격에서 들어오는 HTML에 대해서는 Misskey보다 훨씬 많은 요소들을 받아들이는데 말이다.
가끔 보면 Misskey는 ActivityPub을 마지못해 지원하는 것 같다니까요. (실제로 만든 사람이 그런 뉘앙스의 얘기도 몇 번 했었고.)
생각난 김에 또 하나 들자면, 본문에 대한 내부 표현이 HTML이 아니라 MFM이라는 것. MFM에 별 쓸 데 없는 기능은 다 넣어놓고, 정작 헤딩이나 목록 같이 문서의 의미론을 살리는 요소들은 HTML → MFM으로 번역을 안 해서 다 날아가 버린다. 서식에 굉장히 인색한 Mastodon조차도 원격에서 들어오는 HTML에 대해서는 Misskey보다 훨씬 많은 요소들을 받아들이는데 말이다.








