https://tanstack.com/blog/directives-and-the-platform-boundary
完全にNext.jsの事言ってて草
バチバチやなぁ
@hongminhee@hackers.pub · 937 following · 651 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)
」に。
https://tanstack.com/blog/directives-and-the-platform-boundary
完全にNext.jsの事言ってて草
バチバチやなぁ
洪 民憙 (Hong Minhee) shared the below article:
자손킴 @jasonkim@hackers.pub
이 글은 네트워크 계층(L3) 프로토콜의 핵심인 IP에 대해 심도 있게 다룬다. L3 라우터의 역할부터 시작하여, IPv4의 구조, IP 단편화 과정, 그리고 PMTUD(Path MTU Discovery)의 중요성을 설명한다. IP 헤더의 각 필드(버전, 헤더 길이, ToS, 패킷 길이 등)에 대한 자세한 분석을 제공하며, IP 주소와 서브넷 마스크를 통해 네트워크와 호스트를 구분하는 방법을 설명한다. 클래스풀 주소 지정 방식과 클래스리스 주소 지정 방식의 차이점을 비교하고, 공인 IP 주소와 사설 IP 주소의 개념을 명확히 한다. 마지막으로, ICMP(Internet Control Message Protocol)를 통해 IP 레벨의 통신 상태를 확인하고 오류를 알리는 방법을 소개한다. 이 글을 통해 독자는 IP 프로토콜의 기본 원리를 이해하고, 네트워크 문제 해결 능력을 향상시킬 수 있을 것이다.
Read more →코루틴이 왜 코루틴이라고 불리는지 몰랐는데 대충 어셈블리 레벨로 예제를 보니 코루틴이라는 말 이상 적합한 말이 없겠군….
zed에서 mdx 확장 쓰려고 하니까 이렇게 터지는데 제보를 zed에 해야 되는지 확장 개발자한테 해야 되는지 모르겠다
이제 Visual Studio Code에서는 Pepper가 Syntax Highlighting이 돼요.
洪 民憙 (Hong Minhee) replied to the below article:
김선민 @sonohoshi@hackers.pub
이 글은 다양한 활동명을 사용하는 한 개인이 해커스펍에 계정을 생성한 경험을 간략하게 소개합니다. 여러 이름으로 활동하는 이유나 배경에 대한 설명은 없지만, 새로운 플랫폼에 참여하게 된 계기를 단순하게 밝히고 있습니다.
Read more →@sonohoshi김선민 어서오세요!
洪 民憙 (Hong Minhee) shared the below article:
김선민 @sonohoshi@hackers.pub
이 글은 다양한 활동명을 사용하는 한 개인이 해커스펍에 계정을 생성한 경험을 간략하게 소개합니다. 여러 이름으로 활동하는 이유나 배경에 대한 설명은 없지만, 새로운 플랫폼에 참여하게 된 계기를 단순하게 밝히고 있습니다.
Read more →
洪 民憙 (Hong Minhee) shared the below article:
구슬아이스크림 @icecream_mable@hackers.pub
이 글은 자료구조와 알고리즘에서 중요한 개념인 재귀가 자연어에서 어떻게 나타나는지, 특히 통사론적 관점에서 인간 언어 능력의 창조성을 보여주는지를 탐구합니다. 'X의 Y의 Z의...'와 같은 소유격 조사를 사용한 문장 확장을 통해 재귀의 개념을 설명하고, 이러한 재귀가 카탈랑 수와 연관되어 있음을 지적합니다. 영어 예시를 통해 전치사구의 추가가 문장의 중의성을 증가시키고, 구문 분석의 가능한 경우의 수가 카탈랑 수열을 따른다는 것을 보여줍니다. 생성 규칙을 통해 명사구를 재귀적으로 확장하면서 중의성 계수가 카탈랑 수와 동일하게 나타남을 설명합니다. 마지막으로, 자연어의 중의성 해소는 산술 표현식과 달리 확률에 의존하며, 이는 전산/심리언어학에서 중요한 연구 주제임을 강조합니다. 이 글은 재귀의 개념이 자연어에서 어떻게 복잡하게 작용하는지, 그리고 그 중의성을 이해하는 것이 왜 중요한지를 흥미롭게 제시합니다.
Read more →우리집 cmake는 cargo, pnpm, python도 호출한다?
Fediverse 관련해서 이것저것 조사하고 있는데, owncast라는 것도 있구나...? 근데 AP 명세에 실시간 미디어 스트림이 있었나...?
배포는 역시 사람 손으로 하는 것이 아니다. 계속 뭔가 작업을 하고 있기 때문에 태그 따놓고는 막상 다른 버전으로 빌드 하는 경우가 너무 쉽게 발생한다.
요즘 심심할때 굴리고 있는 VCS에 대한 나이브한 아이디어가 있는데
각 커밋에 대해 메타데이터를 줄수 있어야 한다
레포 내의 metadata.json 같은 파일을 인식해도 되고, 아니면 Commit -> Metadata를 해주는 프로그램을 hook으로 등록하게 해줘도 된다. 이를 통해 package.json, cargol.toml 같은 파일을 읽어서 거기에 버전 의존성을 커밋의 메타데이터로 추출한다.
메타데이터에 대해 인덱싱을 한다
가령 version이라는 메타데이터가 있을때 2 <= version < 3를 만족하는 커밋의 범위를 인덱스를 활용해 빠르게 알아낼수 있게 한다.
메타데이터로 커밋을 찾는 표현식을 제공한다
max(2 <= version < 3 and has(fix-bug-foo) and has(add-feature-bar) 이런식으로 하면, 구간 내의 버전에서 foo 버그가 해결되고 bar 피쳐가 추가된 커밋중 가장 최신의 커밋을 구한다. git에서는 fix-bug-foo, add-feature-bar 각각의 브랜치로는 쉽게 갈수 있지만, 해당 브랜치가 main에 머지되기 전까지 그 브랜치 밖을 벗어나 작업하기가 까다로워진다.
이런 레포들을 모아서 모노레포를 모은다음, 메타데이터에 상호 의존성을 기술한다
그리고 dependency resolve를 해서(메타데이터 검색의 일종일 뿐임) 조건을 만족하는 모노레포 스냅샷을 구한다. 이제 우린 패키지 매니저를 공짜로 얻었다.
이 아이디어는, 현재 패키지 매니저와 VCS가 분리되어있는데 사실 그래선 안된다는 생각에서 나온것이다. 기존의 비슷한 아이디어를 찾아봤는데 gitman 이런게 있더라. 근데 내가 원하는만큼 일반적이진 못하다.
#cosmoslide 에 기여해야 할 거 하나 더 생각났다.
다른 인스턴스의 노트에 첨부된 이미지 등등을 못 보여준다.
Make generator expression안에서 리스트 변수를 사용하면 generator expression이 통째로 동작하지 않는 문제가 있다. 이래서 모든게 문자열인건...
Codex 써봤는데 상당히 좋군
libghostty can now encode terminal contents as HTML. On the left is an example program that reads stdin, loads it in a terminal, and encodes to HTML. On the right, an example of `fastfetch` encoded to the browser. Coming soon to Ghostty clipboard ops automatically.
결국 TypeScript + React + Next.js로 시작하기로 했다. 가르쳐 주면서 설명하기 어려운 개념들이 좀 많긴 했다…
洪 民憙 (Hong Minhee) shared the below article:
자손킴 @jasonkim@hackers.pub
이 글은 동일 네트워크 내 장비들이 L2 스위치를 통해 통신하는 방식에 대해 설명합니다. MAC 주소를 기반으로 통신하는 L2 계층은 통신 시작 시 IP 주소만 알고 MAC 주소를 모르는 상황을 해결하기 위해 ARP를 사용합니다. MAC 주소와 IP 주소의 역할, 이더넷 프레임 구조, 그리고 ARP의 동작 방식과 한계점을 상세히 다룹니다. 또한 L2 스위칭의 핵심인 MAC 주소 테이블과 flooding 과정을 설명하고, MAC 주소 중복 문제와 VLAN 기술을 소개합니다. 마지막으로, OVS 환경에서 VLAN 설정 시 vlan_mode와 tag의 의미를 명확히 구분하여 네트워크 구성에 대한 이해를 돕습니다.
Read more →람다 함수의 Introduction Rule까지 작성했다.
지금 타입 검사 되는 거:
() : ()Nat.zeroNat.succ(Nat.zero)Nat.succ(Nat.succ(Nat.zero))Nat.zero : Natthunk (λx. return ()) : thunk (() -> ())Claude는 cmake를 딱히 잘 하지는 못하는 것 같다... 사실 이건 cmake가 잘 못 함
uv는 Python 생태계에 지난 10년간 등장한 최고의 혁신
예전엔 Python의 툴링이 충분하다고 들었지만, 이제 Python 개발자들이 npm이나 cargo, bundler 같은 lockfile 기반 생태계를 경험하고 나서 그 장점을 깨닫는 걸 보니 속이 시원해짐
😂🤣
취업이 쉬운 React를 가르쳐야 하나? 아니면 Vue나 Svelte? React를 쓴다고 하면 Next.js 같은 프레임워크랑 함께 가르쳐야 할까? Next.js가 최선일까?
결국 TypeScript + React + Next.js로 시작하기로 했다. 가르쳐 주면서 설명하기 어려운 개념들이 좀 많긴 했다…
🐍 .NET에서 Python을 가장 가볍게 실행하는 방법
Python 코드를 C# 애플리케이션에서 실행해야 하는데 복잡한 설정과 보일러플레이트 코드가 부담되셨나요?
DotNetPy를 만들었습니다: ✅ Zero Boilerplate - GIL 관리나 Source Generator 불필요 ✅ AOT 친화적 - Native AOT 시나리오를 위해 설계 ✅ 최소한의 러닝 커브 - 몇 줄로 Python 실행 ✅ Apache 2.0 라이선스
Python 표현식 평가부터 복잡한 데이터 교환까지, pythonnet이나 CSnakes보다 훨씬 가벼운 대안입니다.
사용 예시: Python.Initialize(pythonLibraryPath); var executor = Python.GetInstance(); var result = executor.Evaluate("sum([1,2,3,4,5])"); Console.WriteLine(result?.GetInt32()); // 15
🔗 GitHub: https://github.com/rkttu/dotnetpy
내가 그래도 놀지는 않았구나….
My first Rust project (in effect)
Since there was a library by PyO3, reading pyproject.toml wasn't too much trouble.
나는 groovy가 싫어요
스크립트에서 에러가 발생했는데 왜 스크립트 라인넘버가 아니라 자바 콜스택이 찍히냐
Our website is live, over at https://nixseoul.club! We have a form up for anyone who's interested in attending!
👋 Hello, World! We now have a Mastodon account where we’ll post meetup updates and Rust news.
https://fosstodon.org/@ianthetechie/114656756421226825
동생이 프로그래밍을 배워 보고 싶다고 해서 일단 눈에 바로 보이는 걸 만들 수 있는 iOS 앱 개발 또는 웹 프런트엔드 개발을 가르쳐 보려고 생각 중인데… iOS 앱 개발이야 그렇다 쳐도, 웹 프런트엔드는 선택지가 너무 많아서 뭐가 좋을지 고민이 된다. 어제부터 계속 고민하고, 사람들한테 의견도 들어보고 했지만 결정을 못 한 상태.
취업이 쉬운 React를 가르쳐야 하나? 아니면 Vue나 Svelte? React를 쓴다고 하면 Next.js 같은 프레임워크랑 함께 가르쳐야 할까? Next.js가 최선일까?
동생이 프로그래밍을 배워 보고 싶다고 해서 일단 눈에 바로 보이는 걸 만들 수 있는 iOS 앱 개발 또는 웹 프런트엔드 개발을 가르쳐 보려고 생각 중인데… iOS 앱 개발이야 그렇다 쳐도, 웹 프런트엔드는 선택지가 너무 많아서 뭐가 좋을지 고민이 된다. 어제부터 계속 고민하고, 사람들한테 의견도 들어보고 했지만 결정을 못 한 상태.
이번 주 토요일은 아침부터 낮까지 OSSCA 성과공유회고 아마 저녁식사까지 할텐데, 일요일 새벽에 해커컵 Round 2를 칠 체력이 있으려나 모르겠다. 하지만 티셔츠는 받아야 하는데...
洪 民憙 (Hong Minhee) shared the below article:
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 로 만들었으면 좋겠음