bgl gwyng
@bgl@hackers.pub · 99 following · 124 followers
GitHub
- @bglgwyng
@bglbgl gwyng 저는 서브모듈 자주 쓰는 편이라 그런지 이젠 편하긴 한데, 자주 안 쓰면 그럴 것 같긴 해요.
@hongminhee洪 民憙 (Hong Minhee) 그럼 제 문제인거 같군요ㅋㅋ 지금이라도 어떻게든 머리에 넣어봐야겠습니다.
git submodule은 맨날 다시봐도 또 까먹는데 이게 내 문제일까 git submodule의 문제일까...
나
는 이렇게 앨범이 나뉘는거 정말 짜증난다고 생각해...
설정이나 명세를 튜링완전한 언어로 기술하면 안되지 않나, 튜링완전한 언어는 프로그램을 짤때 써야하지 않나란 의견이 있는데, 난 오히려 반대라고 생각한다.
설정/명세를 기술한 코드는 그걸 평가해서 어떤 값을 한번 구하면 끝이고, 임의의 입력에 대해 종료함을 보장할 필요가 없다. 그리고 그 코드의 실행은 서비스 단에서 이루어지는게 아니고, 서비스를 만들고 운영하는 과정에서 이루어지기 때문에 종료되지 않는것에 대해 훨씬 안전하다.
반대로, 실제로 돌아가는 프로그램(말이 좀 이상하지만 excuse부탁드림)이야말로 튜링완전한 언어로 짜면 안된다. 우리가 튜링완전한 언어로 개발하는 이유는 우리가 만드는 프로그램을 기술하는데 필요한 자유도가 얼만큼인지 모르고 작업해야하기 때문에 그렇다. 종료하지않는 엉터리 코드를 짤 가능성을 받아들이면서도, 당장 뭔가 만들긴해야하니까 그런 선택을 하는 것이다.
즉 튜링완전성은 메타프로그래밍을 할때만 허용되는것이 (적어도 이론적으론) 정당하다고 생각한다.
RE: https://hackers.pub/@bgl/019647a2-cd0c-7311-97ce-95b59e5a0696
@bglbgl gwyng 아하, 그렇군요! 인프라 구성을 선언적이지 않은 언어로 작성하는 것에 대한 우려도 조금 드는데, 그런 면에서는 어떤가요?
@hongminhee洪 民憙 (Hong Minhee) Pulumi가 TS로 선언적인 DSL을 만들어 놓았고 그걸 쓰는 식입니다. 대신 범용언어 기반이다보니 그 중간중간 필요한 못된짓을 할수있따는 장점을 취할수 있지요.
@xiniha
@hongminhee洪 民憙 (Hong Minhee) 그렇지요. 하지만 One code to provision them all을 꿈꿨던 (과거의) 저는...
@hongminhee洪 民憙 (Hong Minhee) @xiniha 지금 빌드까지 Pulumi 스크립트 안에 들어가있는데, 사실 이건 Nix바르면 다시 멀쩡한 설계가 되긴합니다ㅋㅋ
@bglbgl gwyng
@hongminhee洪 民憙 (Hong Minhee) 컼 플루미로 k8s 만지는 것보다는 Helm/Kustomize가 더 정석적 초이스 아니려나요
@xiniha
@hongminhee洪 民憙 (Hong Minhee) 그렇지요. 하지만 One code to provision them all을 꿈꿨던 (과거의) 저는...
@hongminhee洪 民憙 (Hong Minhee) Apache Libcloud는 이번에 처음 봤는데 마음에 드는데요? 클라우드 인프라에서 네트워크랑 VM 인스턴스 등 low level한 자원들만 쓰면서 나머지는 Nix기반으로 프로비저닝하는 방식을 상상했는데(그러면서 더 싼 서비스로 비용최적화), 그런거 만들때 쓰면 좋겠네요.
@hongminhee洪 民憙 (Hong Minhee) 근데 Pulumi는 서로 다른 클라우드 서비스의 자원들간에 어떤 공통된 추상화를 넣진 않습니다. 그냥 같이 쓸수있을 뿐이에요.
@bglbgl gwyng 오… 뭔가 옛날 Apache Libcloud가 떠오르네요. 한 번 살펴보겠습니다.
@hongminhee洪 民憙 (Hong Minhee) Apache Libcloud는 이번에 처음 봤는데 마음에 드는데요? 클라우드 인프라에서 네트워크랑 VM 인스턴스 등 low level한 자원들만 쓰면서 나머지는 Nix기반으로 프로비저닝하는 방식을 상상했는데(그러면서 더 싼 서비스로 비용최적화), 그런거 만들때 쓰면 좋겠네요.
@bglbgl gwyng 잘 모르는데, 홈 서버에서도 쓸만할까요?
@hongminhee洪 民憙 (Hong Minhee) Pulumi 자체는 그냥 인프라용 React같은 거구요. React에 React-DOM이랑 React Native가 있듯이, Pulumi에도 여러 드라이버가 있습니다. 개중에 k8s 드라이버도 있어서 k8s띄운다음에 그위에 TS 코드로 프로비저닝 할수도 있고요. 또 홈서버를 쓰더라도 CDN은 붙이고 싶으실수 있는데 이때 AWS든 CF든 드라이버 깔아서 CDN 붙이면 됩니다. 가장 큰 장점은... 그냥 TS코드로 하다보니 자동완성등 인텔리센스가 최상급이라는 점?
거의 7년 가까이 DevOps에서 손을 뗀 채 지냈더니 이제 DevOps를 어떻게 하는 건지 도통 모르겠다. 처음부터 다시 배워야 하는 상황.
@hongminhee洪 民憙 (Hong Minhee) IaC 위해서 뭔가 새로 배우기 귀찮으시다면 Pulumi 추천드립니다.
Hackers' Pub은 현재 원격 콘텐츠에 포함된 온갖 이미지를 캐시하지 않고 원격 URL 그대로 서빙하고 있는데, 일부 ActivityPub 구현은 계정 프로필 사진이 바뀌면 기존 프로필 사진을 아예 삭제해 버려서 가끔씩 원격 계정의 프로필 사진이 로딩이 안 되고 깨지는 문제가 발생하고 있다. 음… 귀찮아서 캐시를 안 하고 있었는데 역시 캐시를 하긴 해야 하나?
@hongminhee洪 民憙 (Hong Minhee) 우선 엑박 뜨는것만 피해도 보기 좋을거 같습니다.
VS Code였나, 옛날의 Atom이었나 Ctrl+S를 한번 누르면 그냥 저장, 두번 누르면 포맷하도록 설정할수 있었던거 같은데. 또는 Ctrl+S 누르면 soft(?) 포맷, 두번 누르면 hard 포맷도 가능했던거 같다. 이거 편한데 지금은 하는 방법을 모르겠다. 클로드한테 물어보면 직접 키바인딩을 만들라는데 이렇게 안하고도 가능했던거 같은데?
OpenAI가 Windsurf를 30억 달러에 산다는 루머가 있는데, 솔직히 난 잘 이해가 안되서 사람들의 의견이 궁금하다(Cursor는 얼마전에 100억달러로 평가받았다)
어제 출시된 o3가 코딩스타일은 별론데 디버깅을 매우 잘한다고 한다.
위 계정은 HVM 만드는 사람의 것인데, 나는 새 모델이 나올때마다 저 사람이 하는 벤치마크를 체크한다. 사실 구체적으로 뭐하는지는 잘 모르는데,
- 충분히 어려운 과제로 테스트한다는 점
- 진짜로 자기가 할일을 대체할수 있는지 확인할만큼 밀어붙인다는점
- 결과를 세세하게 공유한다는 점
에서 참고할만하다.
아침에 쇼츠넘기다가 Italian Brainrot이란걸 알게됐는데 진짜 뇌가 썩을거같다. 인류의 미래가 어두컴컴하다.
reflex-frp 등 FRP 라이브러리들을 쓰면서 배운점은, fire-and-forget이 유용한 패턴이고 많은 코드를 fire-and-forget 방식으로 짤수있음에도 우리는 평소에 그걸 포착하지 못하고 fire-and-remember(but don't use after?) 방식으로 짜고 있다는 것이다. 그리고 더 중요한건, fire-and-forget를 primitive로 삼기에는 fire-and-forget이 안 통하는 순간에 곤란한 점이 많다는 것이다. 그래서 actor 'framework'란 접근에 대해서는 흐린눈을 하고 보게된다.
지금 JS 멘토링하면서 Promise를 가르치는데 은근슬쩍 모나드도 같이 가르치고 있다(모나드 자체를 언급하진않음). 누구나 마음속에 부리또 하나씩을 품고 살아가니깐...
메시지가 자동으로 번역되는 채팅앱이 있으면 좋겠는데, 아마 디스코드가 곧 지원할거 같다.
여태 모나드 가르칠때 그냥 do notation부터 알려주고 알아서 써보라고했는데 절반정도는 잘 따라왔다.
문법적으로 <-를 넣어야할 위치만 아는 상태에서도 코드를 웬만큼 짰다.
즉, next token prediction은 휴먼에게도 좋은 학습 방법이다.
RE: https://hackers.pub/@xt/01963d1e-e20c-77c5-a395-69c592137fb3
저도 두 가지 쟁점 모두 동의하는 편입니다. 그리고, 별개의 이야기입니다만, $ 를 가르칠 때에는 그냥 문법이라고 가르치는 게 학습자의 이해와 응용이 압도적으로 빠르고 좋았습니다.
"이건 여기서부터 뒤로는 다 괄호로 감싸겠다는 뜻이라고 생각하세요."
이러면 한 방에 설명이 끝나고, 필요성이나 편리성에 대해서도 알아서들 납득하는 것이죠. 연산자 우선순위나 좌결합 우결합 등은 그게 되고 나서 얘기하고요. 그러면 "아, 이게 그래서 이렇게 되는 거였군요?" 하면서, 훨씬 쉽게 이해합니다. 이걸 거꾸로 좌결합 우결합 어쩌고부터 가르치려고 하면 다들 꾸벅꾸벅 졸아요... ㅋㅋ ㅠㅠ
(결국 "모나드란 무엇인가"부터 배우면/가르치면 안 된다는 주장과 같은 맥락입니다.)
RE: https://hackers.pub/@bgl/01963c3b-98fa-7432-a62f-0d2dfc0691bf
저도 두 가지 쟁점 모두 동의하는 편입니다. 그리고, 별개의 이야기입니다만, $ 를 가르칠 때에는 그냥 문법이라고 가르치는 게 학습자의 이해와 응용이 압도적으로 빠르고 좋았습니다.
"이건 여기서부터 뒤로는 다 괄호로 감싸겠다는 뜻이라고 생각하세요."
이러면 한 방에 설명이 끝나고, 필요성이나 편리성에 대해서도 알아서들 납득하는 것이죠. 연산자 우선순위나 좌결합 우결합 등은 그게 되고 나서 얘기하고요. 그러면 "아, 이게 그래서 이렇게 되는 거였군요?" 하면서, 훨씬 쉽게 이해합니다. 이걸 거꾸로 좌결합 우결합 어쩌고부터 가르치려고 하면 다들 꾸벅꾸벅 졸아요... ㅋㅋ ㅠㅠ
(결국 "모나드란 무엇인가"부터 배우면/가르치면 안 된다는 주장과 같은 맥락입니다.)
RE: https://hackers.pub/@bgl/01963c3b-98fa-7432-a62f-0d2dfc0691bf
@bglbgl gwyng
@curry박준규 적은 키워드로 표현 가능한 상황이 더 많다면 "디자인(Design)이 더 잘 되었다"고는 할 수 있다고 봅니다. 언어가 발전한다는게 디자인을 개선한다는 것과 직결되어있지 않은 경우가 더 많으니 말입니다. (많은 경우 표현력의 증대나 자주 사용되는 표현의 단순화에 더 집중하죠)
@ailrunAilrun (UTC-5/-4)
@curry박준규 그래서 do notaion, proc notation 등을 추가하는거랑, OverloadedDotRecord같은 문법 확장을 구분해서 보는게 좋다고 생각합니다. 전자의 경우들은 각각 대응하는 Monad, Arrow 등의 개념을 발견하고나서야 추가할수 있었을테고, 후자는 (정확한 역사는 모르겠지만) 그냥 불평불만이 하도 많다보니 땜빵한거에 가깝게 보입니다.
@bglbgl gwyng 이게 생각해보니 ‘문법이 복잡하다’, ‘문법 요소가 적다’라는 표현이 구체적이지 않은 것 같습니다. 갑자기 언어 확장이 떠오르면서 ‘문법 안 복잡한 거 맞나?’ 싶네요. 그래서 표현을 좀 바꾸면 저는 사전에 정의된 키워드가 적을 수록 좋다고 생각합니다.
@curry박준규 더 primitive한 의미론을 포착해서 문법 요소로 만들고 그걸로 다양한 정의를 하게 하는게 낫다는 점에선 동의하는데요. 말씀하신 기준을 그대로 적용해버리면, 모든 언어들이(하스켈도 포함) 발전할수록 점점 키워드가 추가되는데, 그때마다 점점 더 안 좋아졌다고 하면 좀 이상하죠.
@curry박준규
@bglbgl gwyng 저도 예전에 Lisp나 Smalltalk 좋아했을 때는 문법 요소가 최대한 적은 걸 선호했는데, 나이가 드니까 문법 요소를 극도로 줄이는 건 미학의 영역일 뿐 실용적이진 않다는 생각이 들어 Haskell 정도가 딱 적당하다고 느끼게 됐네요.
@hongminhee洪 民憙 (Hong Minhee)
@curry박준규 저도 Lisp을 첨에 봤을땐 감탄했는데요. 지금 보면 그냥 파서짜기 싫었나보다 정도의 생각이 듭니다ㅋㅋ
@bglbgl gwyng 한편 저는 문법 요소가 가능한 적어야 좋다고 생각합니다. 그래서 하스켈을 처음 봤을 때 Bool이 라이브러리인 게 좋았어요.
data Bool = False | True
@curry박준규 근데 따지고보면 하스켈도 문법 복잡하죠. 각각 다 역할이 있어서 그렇지만요.
하스켈에서 $가 infix operator가 아니라 문법 요소여야 한다는 얘기에는 동의하는 사람들이 꽤 있다. 근데 1 + $ 2 + 3도 1 + (2 + 3)으로 변환되어야 한다고 하면 다들 싫어한다ㅋㅋ 근데 나는 저것도 좋다고 본다.
미드 쇼츠보다가 깨달았는데, 우리나라는 왜 검찰이 임명직일까? 배경이 뭘까? 🤔
@annyeong안녕 혹시 보고계신게 빌리언즈 인가요?
RN에 새 런타임이 옛날거보다 오히려 느리다는 이슈를 제보했는데, 솔직히 좀 황당하다. 그냥 대기업이 오픈 소스 메인테인을 못한다...는 아니다. 난 단순히 잡버그/미구현기능 많은거는 망치가 부족한가보다 정도로 이해한다.
근데 요 이슈는 RN 메인테이너 쪽에서 지난 1+년간 새 런타임으로의 마이그레이션을 적극적으로 권유했는데, 이런 기본적인 문제가 파악안되고 있었던거면 흠... 저 정도 규모의 프로젝트를 운영하는게 어떤지 잘 몰라서 뭔가 더이상 말을 얹기는 어렵겠지만, 쨋든 설명이 더 필요하다 느낀다.
@bglbgl gwyng
@kodingwarriorJaeyeol Lee
@lionhairdino
제 심상이랑은 좀 다르네요. 저는 H의 중간 막대가 좀 아래로, H가 좌우로 살짝 벌어져있고 P가 좀 더 바짝 붙은 형태를 상상했습니다. Inkscape 켜서 직접 그리기에는 졸리네요 😅
@ailrunAilrun (UTC-5/-4)
@kodingwarriorJaeyeol Lee
@lionhairdino 아아 어떤 느낌인지 상상이 갑니다. 저는@parksb
님이 하신것처럼 맥주가 차있으면 좋겠다싶어 H 중간 막대를 위로 올렸습니다.
맥에서 VS Code의 현재 창(탭 아님)만 닫고싶을때 ⌘+⇧+W 이거 누르면 되는걸 이제 알았다;; 몰라서 맨날 마우스썼는데
@bglbgl gwyng
@lionhairdino
@ailrunAilrun (UTC-5/-4)
오.... 저 방금 SVG를 LLM이 깎아줄 수 있다는걸 방금 처음 알았어요.
https://www.svgviewer.dev/s/sCwe91Tw https://www.svgviewer.dev/s/8hMjXLcz https://www.svgviewer.dev/s/c4oIyOId
@kodingwarriorJaeyeol Lee
@lionhairdino
@ailrunAilrun (UTC-5/-4) 근데 결과물보시면 아시겠지만 그냥 figma에서 그렸으면 더 빨리했을겁니다ㅋㅋ
@bglbgl gwyng
@lionhairdino
@ailrunAilrun (UTC-5/-4)
이제 이걸 디자인 감각 있는 분 호출해서 벡터그래픽으로 만들어달라하면 될 것 같은데......
@lionhairdino 딱 떠오르는 건 HP를 붙여서 맥주잔 모양으로 만드는 거네요
난 JS에서 comma operator를 *> 느낌으로 자주 쓴다. 가령 (x, y) => (assert(x), assert(y), x + y) 요런 식으로 말이다.
근데 확실히 마이너인게, 저렇게 하면 모든 종류의 linter들한테 탄압받는다.
https://ieeexplore.ieee.org/document/10786566 찾아보니 뭐가 나오긴 하네. SQLite 뿐만 아니라 일반적인 대용량 파일의 증분어데이트에 쓸수있겠니.
RE: https://hackers.pub/@bgl/01963453-82e4-746e-a4c9-a3f5385b84f8
지금까지 Hackers' Pub은 반드시 이메일을 통해 로그인 링크를 수신하는 식으로만 로그인이 가능했는데, 사실은 많이 번거로웠죠?
이를 해결하기 위해 Hackers' Pub에 패스키 기능을 추가했습니다. 패스키 추가는 설정 → 패스키 페이지에서 할 수 있으며, 패스키가 등록된 기기 및 브라우저에서는 로그인 페이지에서 자동적으로 패스키를 사용할 것인지 묻는 창이 뜨게 됩니다.
e2e 암호화된 SQLite 호스팅/백업 서비스가 있으면 좋겠다. 동형암호를 활용하면 증분 싱크를 할수있지 않을까?
오늘 할일은 ffmpeg-kit이 archive되면서 prebuilt binary들이 날아갔는데, 이로 인해 깨진 빌드를 고치는 것이다. 역시 소프트웨어 개발은 즐거워~ 최고야~
topiary는 tree-sitter 문법 정의를 주면 포매터를 공짜로 줍니다.
@bglbgl gwyng 그냥 무시하고 기본 우선 순위대로 파싱하지 않을까 싶네요… 🤔
@hongminhee洪 民憙 (Hong Minhee) tree-sitter가 lexer를 커스텀할수 있게 열어두긴 했는데요. lexer 레벨에서 구현이 가능할까 싶네요.
Haskell용 tree-sitter 파서가 있는데, 이때 infix 등 연산자 우선순위를 동적으로 주는 기능들은 어떻게 처리하는거지? tree-sitter의 인터페이스가 context sensitive parsing이 될거같지가 않은데?
어째서 ActivityPub을 바닥부터 구현하는 것보다 Fedify를 쓰는 게 여러모로 나은지에 대한 글(영어)을 썼습니다.
아무래도 앱 개발은 혼자선 하면 안되고 트러블슈팅을 할수 있도록 팀을 갖추고 해야하는거 같다. 추잡한 문제들이 너~무 많다. 하지만 이런 허접한 교훈을 얻고 관둘순 없으니 어떻게든 혼자서 마저 나아가야한다.
The Korean fediverse community is proposing to establish April 11th as “Fediverse Day” (聯合宇宙의 날). Since this idea emerged today in conversations among Korean fediverse users, they've suggested making today's date the official celebration going forward.
We're sharing this initiative with the broader fediverse community and would love to know if you'd support and participate in an annual Fediverse Day!
Excited to share that
@pbzweihander쯔방
has created fediday.org—a new website dedicated to Fediverse Day! The site celebrates April 11th as Federated Fediverse Day, which originated from conversations in the Korean fediverse community. Visit the site to learn about the background of this initiative and discover other important dates in the fediverse calendar. If you'd like to add a special date, you can contribute through the GitHub repository!
@bglbgl gwyng 저도 Nest 에서 Prisma 쓰는데, 당연히 ESM 지원되는 줄 알았네요. 오늘 올라온 글을 보고 대충 추정해보면, ts 를 js 로 전환하면서 import 구문을 모두 commonjs (require) 로 바꾸고 있는가 싶네요. 😅
@arkjunJuntai Park 6.6.0에서 이제 ESM 지원한다고 하네요. 6.5.0에서 어떻게 해보려고 삽질하느라 하루를 날렸는데 하...
HTTPS로 전송된 내용은 서버가 내용에 서명을 한 셈 아닌가?
란 질문을 Gemini 2.5한테 했는데 내가 어느 부분을 놓쳤는지를 정확하게 집어내서 설명해주었다. 나의 오개념에 일부분 '공감'을 먼저하고 설명한 부분이 좋았다. 비교를 위해 Gemin 2.0한테도 같은 질문을 해봤는데 그냥 아는 내용을 줄줄이 읊기만 한다.
회사 계정이라 그런가 대화 내용을 공유를 못하는거 같은데... 답변을 요약하자면
내용을 암호화하는데 쓰이는 키가 서버로부터 서명이 되어 있는건 맞다. 이를 통해 암호화된 내용도 간접적으로 서버가 서명을 한셈 아닌가...라고 생각했다. 문제는 그 암호화 키를 서버와 클라 양쪽에서 자신이 보내는 내용을 암호화할때 같이 쓴다는 점이다. 그래서 해당 세션에서 서버/클라 둘 중 한쪽이 서명한 내용이라곤 생각할 수 있지만, 둘 중에 어느쪽인지를 보장할 수가 없다. 클라가 서버한테 받지도 않은 내용을 조작할수 있는 것이다.
...인데, 애초에 복잡하게 생각할 필요없이 전송에 비대칭이 아닌 대칭 암호화를 쓰는거에서 글러먹은 생각인걸 알수가 있었다ㅋㅋ Gemini의 세심함과 나의 멍청함을 알수있는 대화였다.
HTTPS로 전송된 내용은 서버가 내용에 서명을 한 셈 아닌가?
란 질문을 Gemini 2.5한테 했는데 내가 어느 부분을 놓쳤는지를 정확하게 집어내서 설명해주었다. 나의 오개념에 일부분 '공감'을 먼저하고 설명한 부분이 좋았다. 비교를 위해 Gemin 2.0한테도 같은 질문을 해봤는데 그냥 아는 내용을 줄줄이 읊기만 한다.








