동생이 프로그래밍을 배워 보고 싶다고 해서 일단 눈에 바로 보이는 걸 만들 수 있는 iOS 앱 개발 또는 웹 프런트엔드 개발을 가르쳐 보려고 생각 중인데… iOS 앱 개발이야 그렇다 쳐도, 웹 프런트엔드는 선택지가 너무 많아서 뭐가 좋을지 고민이 된다. 어제부터 계속 고민하고, 사람들한테 의견도 들어보고 했지만 결정을 못 한 상태.
洪 民憙 (Hong Minhee)
@hongminhee@hackers.pub · 965 following · 677 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
취업이 쉬운 React를 가르쳐야 하나? 아니면 Vue나 Svelte? React를 쓴다고 하면 Next.js 같은 프레임워크랑 함께 가르쳐야 할까? Next.js가 최선일까?
동생이 프로그래밍을 배워 보고 싶다고 해서 일단 눈에 바로 보이는 걸 만들 수 있는 iOS 앱 개발 또는 웹 프런트엔드 개발을 가르쳐 보려고 생각 중인데… iOS 앱 개발이야 그렇다 쳐도, 웹 프런트엔드는 선택지가 너무 많아서 뭐가 좋을지 고민이 된다. 어제부터 계속 고민하고, 사람들한테 의견도 들어보고 했지만 결정을 못 한 상태.
이번 주 토요일은 아침부터 낮까지 OSSCA 성과공유회고 아마 저녁식사까지 할텐데, 일요일 새벽에 해커컵 Round 2를 칠 체력이 있으려나 모르겠다. 하지만 티셔츠는 받아야 하는데...
洪 民憙 (Hong Minhee) shared the below article:
Migrate to Misskey from Iceshrimp
AmaseCocoa @cocoa@hackers.pub
This post outlines the process of migrating from Iceshrimp, a fork of Firefish (itself a fork of Misskey v12), to Misskey, starting from v13. The author details their reasons for migrating, including ongoing reimplementation efforts in .NET, issues with media rendering, and a general preference for Misskey. A comparison table highlights key differences between Iceshrimp and Misskey, such as translation API, note editing capabilities, MOTD, note length limits, search engine options, FTT, and social login. The guide provides a step-by-step walkthrough, including backing up and rolling back the database, running specific SQL commands to align the database schema with Misskey, and installing Misskey without initializing it to prevent data corruption. Troubleshooting tips are included for common issues like login failures and client loading problems. This migration guide offers valuable insights for those looking to transition from Iceshrimp to Misskey, ensuring a smoother process.
Read more →이미지와의 결투에서 승리했다
Next.js 쓰기 싫어서 tanstack router 공부 중인데 여태 쓰던 프레임워크들이랑 느낌이 너무 달라서 취준하던 때로 돌아간 느낌.
답답하면서도 묘하게 재밌기도 하고. 생소하다.
날 추워지고 그러니깐 집에만 있고 싶고 자꾸 풀어지고 그러는데 나도 튜사 한달권 끊어볼까?
일주일에 Hackers' Pub 한 피쳐 마이그레이션 기여를 해볼 것이다
슬슬 맥미니의 용량 부족 압박이 발생하여, gdu-go[1]를 설치하고 용량 확인을 했더니 Cursor가 100GB, VSCode 가 75GB를 차지하고 있었던 건에 대하여
- 정확히는
User Library/Application Support폴더안에 있는 Cursor 폴더와 Code 폴더
--- /Users/arkjun/Library/Application Support ---
/..
100.9 GiB █████▏ ▏/Cursor
74.4 GiB ███▊ ▏/Code
7.3 GiB ▎ ▏/Google
2.2 GiB ▏/Microsoft
1.8 GiB ▏/Comet
덧) 범인은 Java 프로젝트 당시에 생겨난 hprof 확장자파일들 때문이었다. (파일 하나에 9기가 정도하는 파일들이 여럿 확인되었다)
About Fast disk usage analyzer with console interface written in Go https://github.com/dundee/gdu ↩︎
오늘의 #cosmoslide 개발.
왠지 실 코딩은 짧게 끝났는데 다른 잡설정(로컬 minio Public하게 열기)이 더 힘들었다...
Neovim 같은 에디터에서 Language Server를 일일이 세팅하다보면, typescript-language-server는 deno lsp와 충돌하게 되고, biome는 eslint 같은거랑 충돌이 되어서 스크립트로 일일이 예외처리를 해줘야 하는데, 이런 충돌나는 요소를 코드 레벨에서 우아하게 제어할 수 있는 방법이 어디 있을까? 사용가능한 랭귀지 서버를 배열의 형태로 나열하고, 사용가능한 포매터 역시 배열의 형태로 나열하기만 해도, 이걸 우아하게 처리할 수 있는 인터페이스가 필요하다...
@kodingwarriorJaeyeol Lee 워크스페이스 별로 LSP를 켜고 끌 수 있어야…
프로그래밍 언어의 키워드나 연산자를 잡아다 조합해서 함수를 만들어 자동화 하는 겜
자 아이디어는 내가 냈어 그럼 이제 누가 기획플밍아트브금디자인UI/UX마케팅배급 할래?
(위 트윗의 koka 코드도 그렇고 이 트윗의 effekt 코드도 그렇고 귀찮아서 대충 Gemini 시켰다. 틀려도 양해 바란다)
반면 Effekt의 Capability Passing Style 멘탈 모델로 생각하면 약간 양상이 달라지는데, Capability는 값 주입의 관점으로 보기 때문에 Effect를 it happens가 아니라 it requires로 본다. 그래서 named handler 같은 코드를 이렇게 쓴다. 걍 computation을 받는 함수인 것.
fun swap[A]() {h1: State[A]} {h2: State[A]}: Unit = {
val a = h1.get();
val b = h2.get();
h1.set(a);
h2.set(b);
}
koka는 happens지만 effekt는 requires다. 하지만 named handler에서는 둘 다 그냥 computation을 인자로 넘기는 모양새에 수렴했다.
Scala의 given - using을 사용한 Effect 모사는 아마 Capability Passing Style에 가까우니까 Effekt의 해석을 따를 거로 본다.
swap :: State a (State a ()) 같은 함수를 algebraic effect로 기술하려면 같은 효과가 두번 나오기에 koka는 named handlers를 실험하고 있다.
옳은 방향이라고 생각한다. 기존에 koka는 masked effect라는 복잡한 개념을 사용해 outer effect에 접근했다.
fun swap-with-mask() : <state<a>, state<a>> () {
val inner-val = get() // innermost
val outer-val = mask<state<a>> { get() } // skip the innermost
set(outer-val) // innermost
mask<state<a>> { set(inner-val) } // skip the innermost
}
하지만 named handler와 함께라면 이렇게 쓸 수 있다
fun swap-with-named-handlers(h1, h2) : <state<a>> () {
val val1 = perform get() at h1
val val2 = perform get() at h2
perform set(val2) at h1
perform set(val1) at h2
}
(위 트윗의 koka 코드도 그렇고 이 트윗의 effekt 코드도 그렇고 귀찮아서 대충 Gemini 시켰다. 틀려도 양해 바란다)
반면 Effekt의 Capability Passing Style 멘탈 모델로 생각하면 약간 양상이 달라지는데, Capability는 값 주입의 관점으로 보기 때문에 Effect를 it happens가 아니라 it requires로 본다. 그래서 named handler 같은 코드를 이렇게 쓴다. 걍 computation을 받는 함수인 것.
fun swap[A]() {h1: State[A]} {h2: State[A]}: Unit = {
val a = h1.get();
val b = h2.get();
h1.set(a);
h2.set(b);
}
koka는 happens지만 effekt는 requires다. 하지만 named handler에서는 둘 다 그냥 computation을 인자로 넘기는 모양새에 수렴했다.
swap :: State a (State a ()) 같은 함수를 algebraic effect로 기술하려면 같은 효과가 두번 나오기에 koka는 named handlers를 실험하고 있다.
옳은 방향이라고 생각한다. 기존에 koka는 masked effect라는 복잡한 개념을 사용해 outer effect에 접근했다.
fun swap-with-mask() : <state<a>, state<a>> () {
val inner-val = get() // innermost
val outer-val = mask<state<a>> { get() } // skip the innermost
set(outer-val) // innermost
mask<state<a>> { set(inner-val) } // skip the innermost
}
하지만 named handler와 함께라면 이렇게 쓸 수 있다
fun swap-with-named-handlers(h1, h2) : <state<a>> () {
val val1 = perform get() at h1
val val2 = perform get() at h2
perform set(val2) at h1
perform set(val1) at h2
}
요즘 뭔가 출근하듯 튜사 오는 것 같은데... 걍 자유이용권을 살까
@hongminhee洪 民憙 (Hong Minhee) 라고 하기엔 LLM도 얼마 전까진 Schema를 알려줘도 structured output을 내기가 어려웠죠 ㅋㅋㅋ 이제 Claude도 원하는 커스텀한 포맷을 쓸 수 있다 이야기하니 좋은 옵션일 것 같아요.
@nebuletoHaze 아, 커스텀 포맷을 쓸 수가 있군요…
@hongminhee洪 民憙 (Hong Minhee) 의외로 괜찮을 수도 있지 않을까 싶은데, Retrieval Accuracy 벤치마크를 보면 흥미로울정도로 다른 포맷들도 잘 작동하진 않네요 ㅋㅋㅋ
@jaeholee 호오 그렇군요.
근데 LLM에서 XML이나 JSON을 쓰는 게 효율 때문이 아니라 LLM이 해당 포맷에 익숙하기 때문인 거 아닌가…? 🤔
난 솔직히 Liquid Glass UI 너무 좋아서 이세상의 모든 UI를 Liquid Glass 로 만들었으면 좋겠음
집에 언어학 책들이 너무 많고 앞으로 볼 일이 없을 것 같아 책장 정리도 할 겸 처분 중이다...물론 이 중에 제대로 완독한 건 절반 좀 넘게밖에 없지만 ㅋㅋ
@hongminhee洪 民憙 (Hong Minhee) @qria큐리아 헉, 아는 사이신가 보군요...!!
@kodingwarriorJaeyeol Lee @qria큐리아 전 직장 동료입니다. ㅎㅎㅎ
time.Now()를 쓰다가 갑자기 머신이 시간을 어떻게 가져오는지 깊게 파보고 싶어짐
챗봇 UI를 만들고 있는데, AI한테 툴 사용을 따로 주지말고, 채팅 자체를 어떤 REPL안에(Python이라던가) 임베딩 시키는게 나은 디자인인거 같다. 근데 이거 먼가 모나드트랜스포머스러운데..
asdf → mise로 전환.
node@14는 어찌저찌 하다가 MISE_ARCH=x86_64 mise install node@14.21.3 해결.
ActivityPubを一から実装するのをお勧めしない理由みたいな記事書きたい
튜사에 맛있는 간식을 좀 늘려야 된다고 생각해
튜사가 편의점도 아니고 왜 간식거리를 늘려요
아무튼 나는 튜사에서 파는 간식의 종류를 좀 늘려야 된다고 생각해
We are celebrating our 31st anniversary today! We have adopted a new logo to signal positive changes. We have refreshed our logo to reflect the new type of organization we have become — one that wants to re-engage with our community, and reach new audiences.
See more at:
https://www.w3.org/press-releases/2025/new-logo/
딩코(특히 코테) 잘하고 싶어 흑
오, 후반부는 tkinter를 skia, sdl로 대체하는구나
browser.engineering 스터디 중인데, 일주일에 최소 한 챕터 진도나가고 한챕터 연습문제 싹쓸이 할 때마다 풀이 글을 올려보려고 한다. browser.engineering 책 검색하면 해커스펍이 상단에 뜨게 하는 큰 그림....!!
- 역명부기: 역이름 옆에 광고를 함
- 혁명부기: 혁명을낉여오라하지않앗느냐
Biome v2.3 is out!
👨👨👦👦 Full support for Vue, Svelte and
@astro
‼️ New ignore syntax
🌬️ Tailwind v4 support
⌨️ New CLI flags and reporters
Call-by-Push-Value를 다시 방문하고 있는데 의문이 떠나지 않음...
왜 tag를 일급 시민으로 만들고 소비 방법을 (1) 의존함수 Π_i∈I Bᵢ (2) 구분 합 Σ_i∈I Aᵢ 이렇게 2개나 만들게 했지
Gleam 언어는 뭔가 별다른 복잡한 요소가 없어서 오히려 재밌는 구석이 있는 것 같다. 제네릭 말고는 별다른 다형성 기능이 없어서 오히려 설계를 고민하게 만든다던지. 서브타입도 타입클래스도 없으니까 제네릭 인자로 넘긴 타입에 뭔가 연산을 하고 싶으면 반드시 호출하는 쪽에서 연산에 필요한 함수를 그때그때 전달해야 한다. TypeScript의 any 타입처럼 gradual typing이 지원되는 것도 아니라서 정 타입시스템을 우회하고 싶으면 그때그때 Dynamic 타입으로 인코딩과 디코딩을 거쳐야 한다. Erlang 기반이니까 액터를 끌어다 쓸 수 있기는 하지만 아무래도 다른 언어에서 그냥 객체를 정의하고 메서드를 부르는 것보다는 무겁게 느껴진다. 액터라고 해서 타입이 아예 없는 것도 아니고.
저질러 버리다
짭튜사 이름 생각하다 기요틴의 기요틴 이라는 아이디어가 떠올라버림
연친분들도 이 마음가짐으로 연합우주 해주세요
@kodingwarriorJaeyeol Lee 환영해주셔서 감사합니다! 반갑습니다!
@qria큐리아
@kodingwarriorJaeyeol Lee 오… 큐리아 님 어서오세요!!
논리설계 공부 하랬더니 master-slave flip flop에 관한 이런 글이나 찾아보는 중...
기술에서 사용되는 특정 terminology에서 배제되는 사람들의 존재를 의식하고, 이를 바꿔 나가려는 실천이 필요하다는 생각이 든다
어우 WSL 아이콘 왤케 무서워;;
데이터 애플리케이션 중심 설계를 읽고 있는데, 이걸 읽다보니 간혹 유튜브 스트리밍에서 채팅 순서가 내가 채팅방에서 보는 거랑 실제 방송 화면에 표기되는 게 다르게 나왔던 부분이나 새로고침 했을 때 댓글이 사라졌다 생겼다 하는 이유를 어느정도 추측해볼 수 있게 된 것 같다. 물론 완전히 그 이유 때문인지는 모르겠지만, 그런 이유가 아닐까? 하고 지레 짐작 해볼 수 있는 감이 생긴 것 같다.
포스트를 보고 있자니... 11월 말에 해볼까 말까 고민중인 실험:
DGX Spark 가 1.5 Kg 정도 됩니다. 그런데 전원이 240W C타입입니다.
240W 전원 어댑터랑 이것저것 챙기면 대략 5Kg 내외로 들고다니는 GPU 환경이 되는데, 이 예민한 기계를 안전(?)하게 들고 다닐 파우치 좀 알아보고 한번 집행해볼까 싶네요.
포터블 모니터, 키보드, 마우스, 각종 케이블, 집 열쇠, 지갑, 등등을 챙기면 5Kg면 되겠지...
이제 240W 출력이 나오는 보조배터리만 구하면 진짜 포터블이 되는데... (모니터 출력 정도 버티는 보조배터리는 이미 있고)
(겸사겸사 폐쇄망 테스트도 되겠군...)
무한개가 한 단어야?
좀 쓸만한 엔지니어링 아티클을 쓰고 싶은데 도저히 안돼... 답답하고 짜증난다.
洪 民憙 (Hong Minhee) shared the below article:
🐶 Husky 물론 멍뭉이얘기는 아닙니다. 하지만!
조내일 @tomorrowcho@hackers.pub
이 글은 사이드 프로젝트에 Husky를 도입한 경험을 바탕으로, Husky의 배경과 필요성, 그리고 실제 적용 방법에 대해 상세히 설명합니다. Git Hooks 설정의 어려움을 해결하기 위해 개발된 Husky는 npm 패키지 형태로 제공되어 팀원 간의 일관된 Git hooks 환경을 구축할 수 있게 해줍니다. 특히, 배포 전 빌드 실패를 방지하는 데 효과적이며, 커밋 전에 자동으로 코드 검사를 실행하여 실수를 줄여줍니다. Husky 적용 가이드에서는 필요한 패키지 설치부터 lint-staged 설정, ESLint 및 Prettier 설정 파일 구성, 그리고 팀 협업을 위한 팁까지 자세하게 안내합니다. 실제 테스트 시나리오를 통해 Prettier 자동 수정과 ESLint 커밋 방지 기능을 검증하며, Husky와 lint-staged가 코드 품질을 효과적으로 관리하는 것을 보여줍니다. 이 글은 코드 컨벤션 준수를 자동화하고 코드 리뷰 효율성을 높이는 데 기여하는 Husky의 가치를 강조하며, 팀 프로젝트의 생산성 향상에 도움이 될 수 있음을 시사합니다.
Read more →백준 지금 제출 속도대로라면 11월 8일 저녁 6시에 제출 번호 1억번이 나오겠다
















