오늘의 끔찍한 이야기. Angel을 개밥 먹는데 사용하면서 데이터베이스도 은근 좀 커졌는데, 이걸 최근에 (이제서야) 업데이트한 WSL2에서 아무 생각 없이 sqlite3으로 마이그레이션을 하다가 malformed disk image 오류가 뜬다. 엥? 하면서도 대강 보니 작업 자체는 제대로 된 것 같아서 아무 생각 없이 진행했다가 쿼리가 통으로 맛이 가서 쓸데 없는 디버깅을 좀 하고서야 데이터베이스가 망가졌다는 걸 깨달았다. 알고 보니 WSL2의 윈도 디스크 마운트는 전부 9p, 즉 네트워크 파일 시스템인데, 아는 사람은 알지만 SQLite는 네트워크 파일 시스템을 전혀 권장하지 않기 때문에 알았으면 처음부터 윈도용 SQLite 셸을 깔아 썼을 것이다... 이 경험을 반면교사 삼아 Angel에 네트워크 파일 시스템을 사용하려고 하면 오류 내고 튕겨내는 기능이 생겼으니 좋은 일인가?
洪 民憙 (Hong Minhee)
@hongminhee@hackers.pub · 974 following · 683 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
me, about to like and boost a cool looking image, when I notice it has no alt text: "This doesn't look like anything to me"
*keeps scrolling timeline instead*
Alt text for blind and low vision users
Alt text for low bandwidth users
Alt text for flakey Internet
Alt text for digital decay and link rot
Alt text for text based browsers
Alt text for calling out the relevant details you mistakenly assume are obvious to everyone
Alt text for explaining the joke to people that don't have the same background as you
Alt text for the 10,000 people learning something "everyone knows" for the first time today
Alt text for leveling up your own writing skills
Alt text for everyone
해커스펍에서 오이카페 링크 뜰 때마다 썸넬로 내 염버니 그림이 보여서 부끄러움... ㅋㅋㅋ
React is Simple!
Think React state is easy? One wrong move and your counter breaks.
Why It Happens
React batches state updates.
Using setState(state + 1) can overwrite updates with stale values.
The functional form setState(prev => prev + 1) ensures correctness.
Don't
const [count, setCount] = useState(0);
setCount(count + 1);
setCount(count + 1);
// ❌ Result: count = 1
Do
const [count, setCount] = useState(0);
setCount(prev => prev + 1);
setCount(prev => prev + 1);
// ✅ Result: count = 2
Explanation
setCount(count + 1)→ uses an old snapshot of state.setCount(prev => prev + 1)→ React passes the freshest value.
Updating state without prev is like asking for “one more slice” 🍕…
but the box already got emptied. Always ask from the current box.
@shaharamir Welcome to Hackers' Pub!
React is Simple!
Think React state is easy? One wrong move and your counter breaks.
Why It Happens
React batches state updates.
Using setState(state + 1) can overwrite updates with stale values.
The functional form setState(prev => prev + 1) ensures correctness.
Don't
const [count, setCount] = useState(0);
setCount(count + 1);
setCount(count + 1);
// ❌ Result: count = 1
Do
const [count, setCount] = useState(0);
setCount(prev => prev + 1);
setCount(prev => prev + 1);
// ✅ Result: count = 2
Explanation
setCount(count + 1)→ uses an old snapshot of state.setCount(prev => prev + 1)→ React passes the freshest value.
Updating state without prev is like asking for “one more slice” 🍕…
but the box already got emptied. Always ask from the current box.
@msy윤민석
@kodingwarriorJaeyeol Lee 어서 오세요!
@msy윤민석 안녕하세요! 반갑습니다!
어딘가의 요청으로 두번째로 추천사를 쓴다.... 암튼 그렇게 되었다...
요즘 새로 배운 이것저것...
- gerrit이라는 10년 전부터 존재하던 rebase, stacked-pr workflow를 지원하는 git remote가 있다
- 커널 개발하는 변태들이 쓰는 mailing-list workflow는 사실 rebase, stacked-pr workflow와 매우 유사하다
- EU쪽에도 jj 기반의 탈 github 개발자 허브를 만들려는 움직임이 있는듯. (개인적으론 tangled.sh가 더 유력해보임)
가장 놀랐던건 mailing-list workflow... 이거 진짜 생각보다 나쁘지 않은 것 같기도, tangled.sh에서 mailing-list를 지원할 수 있다면, gh 같은 별도의 cli 툴 없이도, 협업까지 터미널에서 처리할 수 있어보임.
해커스펍 오프라인 밋업... 9월 14일... 연사자 분들이 다들 훌륭하신 분들인데... 오픈하고 싶어서 근질근질하네...
조만간 Hackers' Pub 티셔츠를 제작하려고 합니다. 가격이 얼마가 될 지는 모르겠는데 마플 기준으로는 1만원–2만원 사이 정도 될 것 같군요. 관심 있으신 분 계신가요?
@jihyeokJihyeok Seo
@kodingwarriorJaeyeol Lee
@w8385박근형
@yihyunjoon현준
@seha 이제 슬슬 주문 넣으려고 하는데요, 사이즈가 어떻게들 되시나요?
@robin
select.where 옵션이 있을 걸요?
@robin 저는 이런 식으로 쓰고 있어요.
export const Account = builder.drizzleNode("accountTable", {
name: "Account",
id: {
column: (account) => account.id,
},
select: {
where: {
usernameChanged: { isNull: true }
}
},
fields: (t) => ({
// ...
}),
});
한번 pothos-drizzle을 도입해보고 있는데요... drizzleNode로 오브젝트를 정의하면 node 쿼리 결과를 무조건 플러그인에게 맡겨야 하나요...? where를 추가로 건다거나 특정 노드는 필터링한다거나 그런 방법은 (그냥 node로 정의하기 빼고) 없나요...?
@robin
select.where 옵션이 있을 걸요?
안녕하세요. 닷넷데브 운영진 남정현입니다.
닷넷 개발자와 클라우드 엔지니어의 만남, .NET Universe CloudBro Edition에서 시작합니다!
이번 컨퍼런스에서는 개발자를 위한 DevOps 도구인 Aspire와 .NET 10의 강력한 DX를 완성하는 File-based App 기반을 새롭게 소개하며, Container, Kubernetes, Observability 등에 관한 업계 동향, 인사이트를 종합적으로 알아보실 수 있는 세션으로 구성될 예정입니다.
이번 미니 컨퍼런스는 다음주 목요일 (9/4) 저녁 6시 30분터 9시 30분까지, 역삼동 마루360 지하1층 성장 세미나룸에서 열립니다. 평소 데브옵스 기술과 컨테이너 기술에 관심이 많으셨던 분들께 인사이트를 드릴 수 있는 알찬 세션으로 구성하였습니다.
좌석이 한정되어 있어 빠른 신청이 필요합니다. 지금 바로 신청해주세요!
등록하기: https://event-us.kr/dotnetdev/event/110640
#닷넷 #CloudBro #닷넷데브 #DevOps #K8s #CloudEngineering #platformengineer
한번 pothos-drizzle을 도입해보고 있는데요... drizzleNode로 오브젝트를 정의하면 node 쿼리 결과를 무조건 플러그인에게 맡겨야 하나요...? where를 추가로 건다거나 특정 노드는 필터링한다거나 그런 방법은 (그냥 node로 정의하기 빼고) 없나요...?
이슈가 발생해서 건드린김에 예전 프로젝트 소개 한번...
https://github.com/Perlmint/glew-cmake
2014년에 glew를 사용하는 크로스 플랫폼 프로젝트를 한다고 cmake지원을 작성했답니다. 그때 당시에 glew는 아마도 sourceforge에서 소스가 호스팅되고 있었고, 아직 쉽게 기여하기는 조금 어려움? 부담?이 있던지라, 그냥 같이 개발하는 팀에서 쓰기 좋자고 github에 올려버렸지요.
뭔가 어쩌다보니 코드 생성까지 다 해서 스냅샷을 계속해서 업데이트를 하다보니, glew저자분도 한번씩 이 저장소를 보시기도 하고, 코드 생성 일관성 문제로 github으로 이전한 glew에 기여하는 일도 있었죠. glew에서 공식적으로 cmake지원이 들어가고나서도 어째서인지 예전의 좀 이상한 방식으로 작성된 이걸 계속 찾더군요...
뭐 그래서... 와 11년이나 대충이지만 관리를 하고 있다는 이야기입니다... 막상 저는 아마 15년 즈음에 마지막으로 썼을 것 같지만요...
@z9mb1 를 팔로우하면 타임라인에 수제 그림이 뜰 겁니다.
https://github.com/django/djangoproject.com/issues/2175
한국에도 Django 커뮤니티 디스코드가 생긴듯. 모더레이터분이 Django에 기여한 이력이 있으신 분!
@jihyeokJihyeok Seo
@z9mb1wwj 버그…라기 보다는 최초 팔로 이전에 리모트에서 올린 게시물은 안 보이니까, 검색해서 가져왔어요.
“잘 하면 9월 초에는 완성될 것 같습니다” 라고 하고보니 다음주 월요일부터 이미 9월...
@z9mb1 테스트로 그림 두 개를 올렸는데 해당 핸들 계정에 안뜰 때는 어ㄸㅓㅎ게 하면 되나요
오이카페에 ActivityPub 지원이 들어갔습니다. 이제 좋아하는 작가나 커뮤니티의 새 그림을 연합우주에서도 받아 보세요!
작가 프로필이나 커뮤니티 메인 페이지에서 ActivityPub 핸들을 확인할 수 있습니다.
인용된 그림은 ActivityPub 연동을 도와주신
@hongminhee洪 民憙 (Hong Minhee) 님이 오이카페 초창기에 그려 주신 고양이 그림입니다. 감사합니다!
I added ActivityPub support to Oeee Cafe, which is a safe-for-work Oekaki-style drawing board.
You can view the handles for artists or communities you like in the profile or the community main page. Subscribe and get new artwork right in your Fediverse timeline!
Special thanks to
@hongminhee洪 民憙 (Hong Minhee) who helped me implement ActivityPub. Quoted is his drawing in the early days of Oeee Cafe.
오이카페에 ActivityPub 지원이 들어갔습니다. 이제 좋아하는 작가나 커뮤니티의 새 그림을 연합우주에서도 받아 보세요!
작가 프로필이나 커뮤니티 메인 페이지에서 ActivityPub 핸들을 확인할 수 있습니다.
인용된 그림은 ActivityPub 연동을 도와주신
@hongminhee洪 民憙 (Hong Minhee) 님이 오이카페 초창기에 그려 주신 고양이 그림입니다. 감사합니다!
언제나처럼 기능별로 작성하고 각자 확인하고 붙이니까... 짜잔... 동작하지 않습니다
Hackers' Pub은 현재 Fresh 프레임워크로 만들어져 있는데, Fresh 프레임워크의 한계를 벗어나기 위해 GraphQL + SolidStart 스택으로 넘어가는 작업(web-next)을 진행중입니다. 진행 상황을 관리하기 위해 에픽 이슈를 만들었습니다.
비즈니스 로직을 잘 구현한다는게 무슨 의미인가요?
@z9mb1wwj 예를 들어 X를 만든다고 하면, 글이 올라가는 것, 글을 재게시할 수 있는 것, 글이 타임라인에 보이는 것 등이 비즈니스 로직이고, 그 외에 HTTP 요청을 어떻게 주고 받을지, 빌드를 어떻게 할지, 데이터를 어디에 어떻게 저장할지 같은 건 비즈니스 로직이 아니예요.
코딩테스트 준비 뭐부터 하면 되나요?
- 이러면누가알려주겠지
홈 서버로 맥 미니가 좋은 이유… 를 이야기하기엔 작은 LLM을 손 쉽게 돌릴 수 있다거나 여러가지가 있는데 제일 좋은 이유는 하드웨어 가속 동영상 트랜스코딩이라고 생각한다.
미디어 스트리밍 서버인 Jellyfin은 트랜스코딩에서 엔비디아의 NVENC, 인텔의 QSV, AMD AMF, 애플의 Video Toolbox를 비롯한 여러 하드웨어 가속 기술을 지원하는데 대부분 홈 서버에선 내장 GPU를 쓰거나 고성능 GPU를 넣지 않는다는걸 생각하면 맥 미니만한 선택지가 없다.
Jellyfin은 Apple Video Toolbox 가속은 당연히 macOS에서만 지원된다 이야기하지만 전에 맥 스튜디오를 쓸 때 찾아보니 ssh를 통해 macOS 호스트의 ffmpeg를 사용하는 방법이 있어서 이걸 활용해서 해결했고 이 때 참고한 글을 안 남겨두면 나중에 까먹을 것 같아서 기록차 공유한다.
https://oliverbley.github.io/posts/2022-12-27-jellyfin-in-docker-hardware-acceleration-on-macos/
systemd와 bash를 이용해서 재부팅 시 현재 저장소가 최신이면 빌드를 생략하고 아니면 빌드를 하도록 한 다음 실행되도록 스크립트를 짰습니다. 나름 배포 파이프 라인을 구성해본건데 이게 베스트 프랙티스인지는 확신이 안서네요.
사실 작성은 claude가 거의 다 했죠. 특히 systemd 설정은요. https://claude.ai/share/124ada60-168e-4c01-ad64-74bc67de6e54
나도 오이카페(https://oeee.cafe)에 그림 올려봤다
한 번 쫙 읽어보니까 위상이 어케 머신러닝에 쓰이는지 느낌은 알 것 같다 Q. 어케 쓰이는데요? A. 위상이 구멍 세는 학문인 거 아시죠? 구멍 없으면 1이고 하나 있으면 0이고 두 개면 8로 구분한대요.
그니까 수학 석사를 따면 AI한테 구녕 세는 방법을 알려줄 수 있음
마이크로소프트는 뭘까... 코파일럿은 뭘까...
남는 노트북에 NixOS 설치하고 tailscaled 깔았다. 노트북 덮개를 덮어도 절전 모드가 되지 않게 설정하려고 삽질을 조금 했는데 결론은 다음과 같이 하면 된다.
먼저 /etc/nixos/configuation.nix에 다음과 같은 내용을 적는다.
services.logind.extraConfig = ''
HandleLidSwitch=ignore
HandleLidSwitchExternalPower=ignore
HandleLidSwitchDocked=ignore
IdleAction=ignore
IdleActionSec=0
'';
터미널에 다음과 같이 입력한다.
sudo nixos-rebuild switch
sudo systemctl restart systemd-logind
고작 노트북 한 대인데 전기비 많이 나오진 않겠지?
내가 누구???? >> Zed랑 Neovim이랑 같이 쓰는 사람 <<
지금 프로젝트를 개발하고 있는 환경에서는 Zed 쓰는게 궁합이 더 잘 맞기도 한데, Git 관련 유틸리티는 Neovim 쪽이 잘해줘서 여전히 애착이 가고 있다. Zed는 화면을 자유롭게 분할해서 한쪽 버퍼를 아예 터미널로 활용할 수 있는 것도 아니라서, Claude Code 띄우거나 등등등의 목적으로 터미널 옆에 띄워놓는건 불가피한 듯.
백엔드는 수제로 짜고, 프론트엔드는 바이브코딩(AI한테만 맡기는 진짜 바이브코딩임)으로 작업하고 있는데, 백엔드를 이렇게 만드니까 돌아가긴 하는구나 가설검증하기에는 괜찮은 듯. 코드 퀄리티? 그건 셀프호스팅 첫트해보고 나서 생각해봐야지 ㅋㅋ!!!!
Vim에 관심있는, 혹은 Vim을 사랑하는 여러분, 안녕하세요.
한국어권 Vim 사용자 모임 vim.kr입니다. 오늘은 vim.kr에서 공식적으로 주최하는 모임 소식을 전해드리려 합니다.
혹시 *빔교정학원 모임(vimrc)*을 들어보신 적 있으신가요? vimrc 밋업은 2019년과 2022년에 3년 간격으로 개최된 바 있는데, 2025년부터는 저희 vim.kr이 그 바통을 이어받아 공식적으로 진행하게 되었습니다.
지난 7월 2일, 기존 vimrc 밋업을 주최하셨던 박현우(lqez)님께 연락을 드렸고, 이어 7월 6일 첫 회의를 통해 vim.kr에서 본 행사를 이어가기로 확정하였습니다.
이번 vimrc 밋업은 이전과는 조금 다른 방식으로 준비되고 있습니다. 특정 연사자가 발표하는 자리가 아니라, 모든 참가자가 동등한 입장에서 자신이 Vim을 어떻게 활용하는지 경험과 노하우를 공유하는 자리를 지향합니다. 즉, 발표 중심의 형식보다 네트워킹과 상호 교류에 초점을 맞춘 밋업입니다.
행사 규모는 약 36명으로 계획 중이며, 일정은 11월 둘째 주에서 셋째 주 사이로 조율하고 있습니다. 현재 대관 장소도 검토 중이니, 혹시 행사 장소 후원에 관심 있는 분이 계시다면 연락 부탁드립니다.
행사 관련 최신 소식은 vim.kr 디스코드를 통해 안내드릴 예정입니다.
많은 관심과 참여 부탁드립니다. 감사합니다.
oeee.cafe에 새로운 커뮤니티를 열었습니다.
Deno로 만든 서버에서 SSRF 공격을 어떻게 막을 수 있을까 고민하다가, Deno에 --allow-net과 함께 쓸 수 있는 --deny-net 옵션이 있다는 것을 알게 되었다. 대충 아래와 같이 쓰면 SSRF 공격을 기본적인 수준에서는 막을 수 있을 듯하다.
deno run \
--allow-net \
--deny-net=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,0.0.0.0/8,224.0.0.0/4,240.0.0.0/4,255.255.255.255,localhost,[::1],[::],[::ffff:0:0]/96,[fe80::]/10,[fc00::]/7 \
script.ts
@hongminhee洪 民憙 (Hong Minhee) Seonbi는 어디 있죠!ㅎㅎ
@curry박준규 앗… 그러네요. ㅋㅋㅋ 대충 이렇게 될 것 같습니다.
내가 만든 프로젝트끼리의 의존 관계 그래프를 그려봤다. 자급자족하는 개발…
@hongminhee洪 民憙 (Hong Minhee) Seonbi는 어디 있죠!ㅎㅎ
Cutter에 배열 시스템을 도입했다. 사실 Map에 더 가깝지만...
@hongminhee洪 民憙 (Hong Minhee) 저도 그렇게 하고 keepingyouawake까지 깔아서 해봤는데 이상하게 자고 일어나서 맥 미니 살펴보면 슬립 모드가 되어 있더라구요... 뭔 문제인지 모르겠어요 이럴땐 그냥 밀어버리는게 답일 거 같긴 한데..
@akastoot악하 헛… 그렇군요… 왜 그럴까요… 🤔
자꾸 집의 맥 미니가 슬립 모드로 들어가는 이상현상... 그냥 밀어버릴까
@akastoot악하 저는 전원 설정에서 잠들지 않게 설정했더니 계속 켜져 있던데…
친구가 추천해줘서 데싸+위상 블로그 읽고 있는데 범주론 나옴 범주론아시는구나겁.나.모.나.딕.합.니.다.
https://velog.io/@shlee0125/TDA의-기초-03.-2-Persistent-homology
Hong Minhee Universe
어제 오늘 내가 쓰려고 apache/iggy 헬름차트의 자잘한 이슈들을 고쳤다! https://github.com/apache/iggy/pull/2126 https://github.com/apache/iggy/pull/2128
개인적으로 아치 리눅스는 커널 버그 몇 번 맞고서 안 쓰는데, 인기 있는 거 보면 재미있음. 설치, 운용이 재미있긴 한데. ㅎㅎㅎ;
만약 페디버스가 지금보다 훨씬 활성화되어서, 사람들이 커스터마이징된 개성있는 인스턴스를 갖게 되면, 그게 UX의 측면에서 정말로 좋을까요? 가령, 트위터를 하는데 사용자마다 UI가 다르다고 상상해보세요.
사실 저는 크게 부정적이진 않는데(좋은 쪽으로 개성있을수도 있으니까), 그런 상황이 머릿속에서 아주 잘 시뮬레이션 되지 않네요. 어떨거 같나요?
@bglbgl gwyng 좋냐 아니냐 이전에 현실적으로 그 정도로 분화될 것 같지 않기는 해요… ㅋㅋㅋ









