오랜만에 Django를 잡았는데 결국 단 한줄도 짜지 않았다... 전부 Cursor한테 맡김. 퀴즈 사이트 하나 뚝딱...
洪 民憙 (Hong Minhee)
@hongminhee@hackers.pub · 974 following · 684 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
@theeluwin제이미 무슨 퀴즈인가요…?
오랜만에 Django를 잡았는데 결국 단 한줄도 짜지 않았다... 전부 Cursor한테 맡김. 퀴즈 사이트 하나 뚝딱...
정말 오랜만에 해커스펍에 돌아왔는데, 업데이트가 많이 된 느낌이다. 개인적으로 네트워킹에 환장한 사람이라서, 나중에 밋업 행사가 있다면 정말정말 가고 싶다는 생각!
Hackers' Pub에 로그인한 상태에서의 타임라인 구성을 조금 바꿔봤습니다. 기존의 “연합우주” 탭을 “피드”라고 수정했고, “연합우주” 탭과 “Hackers' Pub” 탭은 기본적으로 로그아웃했을 때의 “연합우주” 및 “Hackers' Pub” 탭과 동일한 타임라인이 표시되게 했습니다. 아직 팔로를 많이 하지 않은 분들에게는 “연합우주” 및 “Hackers' Pub” 타입라인이 새로운 콘텐츠를 발견하기 좋은 공간이 될 겁니다.
@kodingwarriorJaeyeol Lee
안녕하세요 잘 부탁드립니다!!
@chge0912채원
@kodingwarriorJaeyeol Lee 반갑습니다, 어서 오세요!
@chge0912채원 안녕하세요! 반갑습니다!
@kodingwarriorJaeyeol Lee
안녕하세요 잘 부탁드립니다!!
오오, 여기 하스켈 글도 많아! https://zenn.dev/topics/haskell
@curry박준규 Hackers' Pub에도 Haskell 글 많이 써주세요… ㅎㅎㅎ
org에서 Column View 기능을 활용하면 각각의 헤딩 섹션(**)을 row로 삼아서 데이터베이스처럼 다룰 수 있다.
원래는 각각의 항목 밑에 :PROPERTIES:하고 front-matter 비슷한 속성 상자를 붙이는데, column view로 이걸 펼쳐볼 수 있음
툴이 오래되니까 진짜 상상도 못하던 별게 다 되네
mmap을 백엔드로 Vec 같은 인터페이스를 쓸수 있는 프로젝트, memvec 입니다. AI의 힘으로 문서를 보충하여 0.2.0 을 릴리즈했습니다. https://crates.io/crates/memvec
결국 LogTape의 파일 싱크에도 복잡성이 우려되어 기피하던 워커 스레드를 도입하기로…
@bglbgl gwyng 손발이 튼튼하면 머리가 고생할 일이 없습니다. 두 벌 구현하면 됩니다! 💨 (LogTape에서 정말로 그렇게 했어요…)
@hongminhee洪 民憙 (Hong Minhee)
@bglbgl gwyng Quansync 안 쓰신 이유가 있으신가요? 👀
@hongminhee洪 民憙 (Hong Minhee)
@bglbgl gwyng Quansync 안 쓰신 이유가 있으신가요? 👀
@xiniha
@bglbgl gwyng 그러게요. 떠오르지가 않았었네요. 근데 떠올랐다고 해도 LogTape이 의존성 제로를 목표로 해서 갖다 쓰진 않았을 것 같습니다. 🤔
Hackers' Pub에도 이런 글들 올라왔으면 좋겠다…
Zenn이라는 사이트가 있길래 찾아봤더니 뭐지 엄청난 양질의 포스팅이 https://zenn.dev/calloc134/articles/how-react-works-guide
『Forbid pineapple on pizza by pietroalbini · Pull Request #70645 · rust-lang/rust』 - https://github.com/rust-lang/rust/pull/70645
Rust에서는 파인애플 피자에 대해 컴파일 에러를 띄우려고 시도한 적이 있습니다.[1]
@alanbondarun넙죽스 다른 얘기지만, Hackers' Pub에서는 Markdown에서 각주를 지원합니다.
Rust에서는 파인애플 피자에 대해 컴파일 에러를 띄우려고 시도한 적이 있습니다.[1]
@hongminhee洪 民憙 (Hong Minhee) 이게 구현은 두벌 하는건 괜찮은데, 그걸 활용한 코드들에 대해 2x가 전염되는걸 못막는거 때문에 처음부터 지원하는게 꺼려지네요ㅋㅋ 근데 LogTape처럼 여러 백엔드를 지원해야할땐 불가피하겠네요ㅠ
@bglbgl gwyng 네, 맞아요… 다행히 저는 그런 케이스는 아니었어서 다행이긴 했는데…
최근 TS 코딩중에 async/sync에 대해 polymorphic한 인터페이스를 제공하려하다보니 HKT의 필요성을 느끼게 되었다. 해결책은 그냥 synchronous만 제공하기로;;
@bglbgl gwyng 손발이 튼튼하면 머리가 고생할 일이 없습니다. 두 벌 구현하면 됩니다! 💨 (LogTape에서 정말로 그렇게 했어요…)
데이터에 대한 modality, 가령 동기/비동기, 더 나아가 캐시됨, 캐시되었지만 stale됨 등에 대해 일반적인(polymorphic) 함수를 만드려면 HKT가 필요하다. Relay와 같은 현존하는 JS 상태관리 라이브러리들은 저런 modality를 한번에 다 지원하는 대신, 확장에 열려있지 않는 구조로 되어있다. 타입을 제대로 지원못한다고 해서 구현을 못하는건 아닐테니, HKT 없음이 주된 이유는 아니겠지만 말이다.
https://x.com/zenncafe_team/status/1934808141943984286?t=RlZp8hwULdeWPLsaCIbBlQ&s=19
Zenn도 커뮤니티 밋업을 하는듯...? 참고로 Zenn은 일본에서는 dev.to 와 같은 위상의 개발자 블로그 커뮤니티이다....
엔지니어링 이야기는 아니지만 이번에 명함이나 홍보물을 Figma로 디자인해서 출력했는데 팁이나 경험을 글로 한번 적어보고 싶다.
최근 TS 코딩중에 async/sync에 대해 polymorphic한 인터페이스를 제공하려하다보니 HKT의 필요성을 느끼게 되었다. 해결책은 그냥 synchronous만 제공하기로;;
아까 멘토링 시간에, Next.js가 점점 Vercel에 종속적으로 변해가는 모습에 사용자들이 점점 이탈하지 않을까 하는 질문을 했어요. 그랬더니 아직은 걱정할 필요 없다고 3~5년은 더 갈 거라는데, 개인적으로는 아직 잘 모르겠지만 Vite같은 번들러조차도 지원하지 않는데 Deploy까지 Vercel에 모든 것을 맡겨야 한다고 하면... 눈에 보이는 사용자 이탈에 3년도 안 걸리지 않을까 하는 생각을 조심스럽게 하고 있어요.
@Yozumina 요즈미나
@yozumina개발즈미나 Hackers' Pub에 어서 오세요!
@hongminhee洪 民憙 (Hong Minhee) 세팅 완료했습니다!!! 이제 개발얘기는 여기서 떠들어야지 감사해요ㅠㅠㅠㅠㅠㅠ
@hongminhee@hackers.pub洪 民憙 (Hong Minhee) 와 감사합니다!!! 무사히 가입했어요!!!!
@Yozumina 요즈미나
@yozumina개발즈미나 Hackers' Pub에 어서 오세요!
@hongminhee@hackers.pub洪 民憙 (Hong Minhee) 아 어차피 이 서버 어드민 이메일이 제꺼라서ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ yozumina@serafuku.moe 로 보내주세요 감사합니다!!!
@Yozumina 요즈미나 보냈습니다! 확인해 보셔요!
@hongminhee@hackers.pub洪 民憙 (Hong Minhee) 어 저 함 해볼래요!
@Yozumina 요즈미나 DM으로 이메일 주소 알려주시면 초대장 보내드릴게요!
나도 해커스펍 계정을 만들어야 되나?
@Yozumina 요즈미나 초대장 필요하면 알려주세요. 제가 초대 드릴 수 있어요!
apsigの実装を今週中にある程度終わらせたかったんだけど早めに終わらせないといけない仕事があるのでそれを片付ける必要がある (仕事って書いたけど別に契約してるわけでもお金もらってるわけでもない、ただ個人情報扱ってるので個人的に優先順位高い)
나도 해커스펍 계정을 만들어야 되나?
웹핑거 사이트에 하스켈 클라이언트 링크를 추가하는 PR을 제출했다. PR은 바로 머지(merge) 되었는데 배포에 이슈가 있어서 아직 사이트에 반영되지는 않았다.
그리고 하스켈 클라이언트 예제 코드에 해커즈 퍼브 주소를 은근히 적어 넣었다!(깨알 광고)
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Data.Default
import Web.Finger.Client
query :: Query
query = def { qryTarget = resource }
where
resource = ResAccount (Account "curry" "hackers.pub")
main :: IO ()
main = do
manager <- newManager
result <- webfinger manager query
print result
@bubbler 문서를 읽어보인 jj에서 브랜치는 git에서와 같이 끝점이 하나인거 같은데 맞을까요? darcs와 같이 브랜치에 '시작' 리비전도 있는 경우와 비교해서 질문드렸습니다.
@bglbgl gwyng 네, git 브랜치의 head 포인터가 jj의 bookmark라고 보시면 됩니다. 애초에 연속된 커밋의 묶음으로서의 브랜치 개념이 아니기 때문에 시작 리비전 같은 개념이 존재할 수 없다고 보는 게 맞을 거 같아요.
지금은 아니지만 내가 HHKB 레이아웃을 쓰고 터미널에서 이것저것 하는 것 때문에 vim 에 대해 관심을 가지는 동료들이 있었다. 가장 쉽게 적용할 수 있는 것은 예쁜 터미널 에디터였고 그 첫 후보로 nvchad 를 추천 또는 설치해주었다. https://nvchad.com/ vscode 에서 이걸로 당장 넘어오라고는 당연히 못하고 터미널에서 코드 읽어 볼 때 사용하라곤 했다. 몇몇은 vscode 에서 vim 플러그인을 설치해 사용하기 시작했다. lazyvim 과 nvchad 를 번갈아 가며 쓰고 있다. siduck 의 미감은 훌륭하다.
오늘은 docker 환경에서의 원시적인 CI를 간단히 구축했다. C++ 프로젝트를 마운트해서 docker 안에 있는 toolchain으로 빌드해야 했는데, docker 안에서 수행할 script를 바깥에서 같이 마운트해서 다른 script로 호출하는 구조로 땜빵했다. 다른 부서원들이 편히 쓸 수 있어보여 만족스럽다.
bash script는 짤 때마다 앎이 넓어진다. 오늘 새롭게 배운 목록이다.
set -o pipefail로 nonzero exit code를 pipe를 통해서도 전파할 수 있다.echo -e로 backslash를 확장해서\e[1;33m등의 색상을 적용할 수 있다.cat은 기본적으로 색상출력을 지원하지 않는다.grep -q는 조건이 부합되면 바로 종료되기 때문에 앞 프로세스의 입력을 다 받지 못할 수 있다.- 정말 오랜만에
printf에%*를 써봤다.
작성하는데 테스트까지 1~2시간 정도 걸렸는데 요즘 AI라면 금방 끝내지 않았을까 싶다...
@hongminhee洪 民憙 (Hong Minhee) 안녕하세요! @perlmint 님 초대로 들어왔습니다ㅋㅋ 잘 부탁드립니다!
misskey 에 있는 로컬 타임라인 같은 건 없나
@sapphire 곧 만들 생각입니다!
hello
@sapphire 어서 오세요!
@hongminhee洪 民憙 (Hong Minhee) 제 블로그에서 인용한 W3C CSS3 명세 내용에 따르면 범용성이 높은 클래스를 남용하기보다, 마크업의 구조를 따라 작성하라고 권장하고 있습니다. 꽤나 오래된 권장 사항으로 블로그 글의 레퍼런스를 조사하면서 저 명세를 CSS2 명세(2004년)로부터 알게 되었습니다.
data 어트리뷰트를 WAI-ARIA로 치환해서 같은 결과를 내놓을 수 있는데요, 이 방법의 장점은 좀 더 마크업 및 CSS Rules 작성에 대해 웹 표준을 근거로 명확한 디자인시스템을 만들 수 있다고 생각합니다.
- my-card:state(loading) {
+ my-card[aria-busy="true"] {
background: url(./spinner.svg)
}
- my-card:state(loaded) {
+ my-card[aria-busy="false"] {
border: 2px solid green;
}
@iamuhun김무훈 네, 저도 사실은 예전부터 CSS 클래스를 웬만하면 잘 안 쓰려고 하는 편이긴 했어요. 태그 이름이나
aria 애트리뷰트 등이 이미 공통된 어휘로서 작용하기 때문에, 그걸 안 쓸 이유가 없는 느낌이랄까요?
웹핑거 사이트에 하스켈 클라이언트 링크를 추가하는 PR을 제출했다. PR은 바로 머지(merge) 되었는데 배포에 이슈가 있어서 아직 사이트에 반영되지는 않았다.
아름다운 로그 출력을 위해 wcwidth()까지 구현하고 있음…
라이브러리를 좀 대국적으로 만드십시오!!!
CSS 클래스는 해롭다. 오… data 애트리뷰트를 써서 상호배타적인 스타일을 정의하는 건 좋은 아이디어 같다.
Existential Lens란걸 알게되었는데 정의는 다음과 같다
data Lens s a = forall c. Lens (s -> (c, a)) ((c, a) -> s)
돌무식 렌즈(get, set 레코드)보다는 좀더 어렵지만 Van Laarhoven Lens보다는 훨씬 더 직관적이라서 렌즈의 이해에 도움이 많이 되었다.
전체 설명은 요깄다.
혼자 북 치고 장구 치고 다 하는 중.
그동안 상세하게 작은 단위로 지시 내릴때는 지우는 일은 안했던 것 같은데, 좀 크게 시키니까 자꾸 쓸모없는 수정을 가하고, 코드를 망치네
@perlmint 맞아요. 작업 계획 세세하게 세우고 착수하지 않으면 열심히 만들던 거 잘 안 된다고 갑자기 날리기도 하고 그렇더라고요.
어제부터 Jujutsu라는 버전 관리 시스템을 써보고 있습니다. git의 branch는 연속적인 단일 작업을 표현하는 느낌이 강하게 드는데 사실 그저 어느 commit을 가리키는 포인터일 뿐이라는 걸 느끼게 해주네요. Jujutsu에서는 같은 커밋에서 다음 커밋을 여러 개 만들면 그게 브랜치이고, 여러 커밋을 parent로 하는 커밋을 하나 만들면 그게 머지이고, 수정이 다 끝나면 그냥 원하는 브랜치 이름의 포인터를 적절히 옮기면 됩니다. 부분 변경을 커밋 간에 자유롭게 옮길 수 있는 것까지 합치면 재미있는 사용 방법이 많이 있을 것 같습니다. 특히 megamerge workflow를 쓰면 git 쓰다가 생겼던 "지금 하는 작업을 끝내야 다음 변경사항을 작업"하는 강박이 해소될 것 같아 기대가 많이 됩니다.
Claude Code 공식 문서에 따르면:
현재 Claude Code는 Windows에서 직접 실행되지 않으며 WSL이 필요합니다.
…라고 하고 있지만, Git for Windows가 깔려 있을 경우, Git Bash 안에서는 문제 없이 사용 가능하다. 다만, npm으로 설치할 때 scripts/preinstall.js 스크립트에서 Windows인지 검사하는 부분이 있어서 오류가 나며 설치가 중단되는데, 해당 스크립트는 오로지 Windows인지 검사하는 역할만 하고 있기 때문에[1] 아래와 같이 npm이 해당 스크립트를 실행하지 않도록 우회해도 설치에 문제가 없다:
NPM_CONFIG_IGNORE_SCRIPTS=true npm install -g @anthropic-ai/claude-code
다만 명령 프롬프트나 PowerShell에서 Claude Code를 실행시키려 할 경우 SHELL 환경 변수가 정의되어 있지 않기 때문에 오류가 난다. 그래서 Git Bash 안에서 Claude Code를 실행해야 한다.
일단 이렇게 설치해서 조금 써 본 결과 크게 문제는 없는 걸로 보인다.
해당 스크립트는 아래 코드가 전부다:
↩︎/** * Preinstall script to check for Windows environment and exit gracefully * with an informative message if detected. */ // Check if running on Windows if (process.platform === 'win32') { console.error('\x1b[31m%s\x1b[0m', 'Error: Claude Code is not supported on Windows.'); console.error('\x1b[33m%s\x1b[0m', 'Claude Code requires macOS or Linux to run properly.'); console.error('\x1b[33m%s\x1b[0m', 'If you are using WSL (Windows Subsystem for Linux):'); console.error('\x1b[33m%s\x1b[0m', ' 1. Make sure you are running npm install from within the WSL terminal, not from PowerShell or CMD'); console.error('\x1b[33m%s\x1b[0m', ' 2. If you\'re still seeing this message in WSL, your environment may be incorrectly reporting as Windows'); console.error('\x1b[33m%s\x1b[0m', 'Please visit https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview#check-system-requirements for troubleshooting information.'); process.exit(1); }







