Profile img

Jaeyeol Lee

@kodingwarrior@hackers.pub · 667 following · 483 followers

Neovim Super villain. 풀스택 엔지니어 내지는 프로덕트 엔지니어라고 스스로를 소개하지만 사실상 잡부를 담당하는 사람. CLI 도구를 만드는 것에 관심이 많습니다.

Hackers' Pub에서는 자발적으로 바이럴을 담당하고 있는 사람. Hackers' Pub의 무궁무진한 발전 가능성을 믿습니다.

그 외에도 개발자 커뮤니티 생태계에 다양한 시도들을 합니다. 지금은 https://vim.kr / https://fedidev.kr 디스코드 운영 중

Blog
kodingwarrior.github.io
mastodon
@kodingwarrior@silicon.moe
Github
@malkoG
1
4
  • OSSCA 2025 성과공유회 발표
  • 브라우저 스터디 Chapter 2 풀이글? 작성
  • 브라우저 스터디 Chapter 3 연습문제 밀기
  • 코스모 슬라이드 개발
  • 면접 준비
4
5

브라우저 구현하는데 폰트 가로폭 측정함수가 너무 느려서 디버깅하다가 결국 측정함수 사용을 최소화하고, 인메모리 캐싱하는 전략을 썼다. 결과적으론 성공인데, ChatGPT한테 물어보면서 리눅스 구현체 vs macOS 구현체의 심연을 들여다보는 중....

0

브라우저 구현하는데 폰트 가로폭 측정함수가 너무 느려서 디버깅하다가 결국 측정함수 사용을 최소화하고, 인메모리 캐싱하는 전략을 썼다. 결과적으론 성공인데, ChatGPT한테 물어보면서 리눅스 구현체 vs macOS 구현체의 심연을 들여다보는 중....

1

Jaeyeol Lee shared the below article:

도커로 구축한 랩에서 혼자 실습하며 배우는 네트워크 프로토콜 입문 #2

자손킴 @jasonkim@hackers.pub

이 글은 동일 네트워크 내 장비들이 L2 스위치를 통해 통신하는 방식에 대해 설명합니다. MAC 주소를 기반으로 통신하는 L2 계층은 통신 시작 시 IP 주소만 알고 MAC 주소를 모르는 상황을 해결하기 위해 ARP를 사용합니다. MAC 주소와 IP 주소의 역할, 이더넷 프레임 구조, 그리고 ARP의 동작 방식과 한계점을 상세히 다룹니다. 또한 L2 스위칭의 핵심인 MAC 주소 테이블과 flooding 과정을 설명하고, MAC 주소 중복 문제와 VLAN 기술을 소개합니다. 마지막으로, OVS 환경에서 VLAN 설정 시 vlan_mode와 tag의 의미를 명확히 구분하여 네트워크 구성에 대한 이해를 돕습니다.

Read more →
4
1

🐍 .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

2
0
4

존 카맥, 리누스 토르발스 등등 90년대 시절 프로그래머들이 살아있는 전설급 프로그래머로 여겨지는 이유를 썰 풀듯 드립치며 얘기하는 영상. 이유는 간단하게 말하면 오늘과는 다르게 그 시절엔 하드웨어 메모리를 어떻게든 쥐어짜서 로직을 짜야했고, pip install이나 클로드나 제미나이같은 것도 없었고 튜토리얼 지옥에 빠질 일도 없었고 대신 컴파일러 지옥에서 살았기에 가능했다는 얘기. 물론 그들이 선구자였기에 그 버프를 받아서 전설급이 되었을 거란 얘기도 있다. 보면서 그 때는 정보가 적었기에 폐관수련이 필수였는데 오늘날엔 오히려 정보가 넘쳐나고 풍부해서 그게 좀 덜 하는 걸까 싶기도 했다.

1

Jaeyeol Lee 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 →
2
2
5
0

Neovim 같은 에디터에서 Language Server를 일일이 세팅하다보면, typescript-language-server는 deno lsp와 충돌하게 되고, biome는 eslint 같은거랑 충돌이 되어서 스크립트로 일일이 예외처리를 해줘야 하는데, 이런 충돌나는 요소를 코드 레벨에서 우아하게 제어할 수 있는 방법이 어디 있을까? 사용가능한 랭귀지 서버를 배열의 형태로 나열하고, 사용가능한 포매터 역시 배열의 형태로 나열하기만 해도, 이걸 우아하게 처리할 수 있는 인터페이스가 필요하다...

0

Neovim 같은 에디터에서 Language Server를 일일이 세팅하다보면, typescript-language-server는 deno lsp와 충돌하게 되고, biome는 eslint 같은거랑 충돌이 되어서 스크립트로 일일이 예외처리를 해줘야 하는데, 이런 충돌나는 요소를 코드 레벨에서 우아하게 제어할 수 있는 방법이 어디 있을까? 사용가능한 랭귀지 서버를 배열의 형태로 나열하고, 사용가능한 포매터 역시 배열의 형태로 나열하기만 해도, 이걸 우아하게 처리할 수 있는 인터페이스가 필요하다...

0
0
1
0
2
0

mermaid로 다이어그램 그릴 일이 요즘 많은데 일단 메모..

특히 복잡한 그래프를 평면으로 그릴 수 있으면 적극적으로 도입해야겠다

1
5

X(트위터)에서 저는 대부분 개발자 분들과 팔로우 맺어져 있고, 특별히 정치색을 내는 분들이 안계셔서 정치 글들은 눌러서 본적도 없습니다만, 최근 몇 달간, 흔히 말하는 극우적인 성향의 글들이 추천으로 계속 뜨네요. 내 알고리즘이 오염된건가... 완전 개발자 얘기들만 찾아다니는데 왜 그럴까요.

0
1
1
1
1
0
1

browser.engineering 스터디 중인데, 일주일에 최소 한 챕터 진도나가고 한챕터 연습문제 싹쓸이 할 때마다 풀이 글을 올려보려고 한다. browser.engineering 책 검색하면 해커스펍이 상단에 뜨게 하는 큰 그림....!!

4

데이터 애플리케이션 중심 설계를 읽고 있는데, 이걸 읽다보니 간혹 유튜브 스트리밍에서 채팅 순서가 내가 채팅방에서 보는 거랑 실제 방송 화면에 표기되는 게 다르게 나왔던 부분이나 새로고침 했을 때 댓글이 사라졌다 생겼다 하는 이유를 어느정도 추측해볼 수 있게 된 것 같다. 물론 완전히 그 이유 때문인지는 모르겠지만, 그런 이유가 아닐까? 하고 지레 짐작 해볼 수 있는 감이 생긴 것 같다.

1
0
1

브라우저 스터디 기록 (1)

Jaeyeol Lee @kodingwarrior@hackers.pub

이 글은 Web Browser Engineering 교재를 독학하며 연습문제를 풀이하는 과정을 담고 있습니다. 저자는 추상화 수준에 대한 고민을 드러내며, URL 클래스의 request 메서드 대신 Connection 클래스를 도입하여 소켓 관리를 더 자연스럽게 처리했습니다. 또한, 타입 힌트 적용과 pytest를 이용한 유닛 테스트 환경 구축 등 실습 환경을 풍성하게 구성하는 데 LLM의 도움을 받아 효율성을 높였습니다. 연습문제 풀이에서는 keep-alive 지원의 중요성을 강조하며, TCP handshake 비용 절감 여부를 직접 실험해볼 것을 권장합니다. 리다이렉션 문제에서는 Location 헤더의 다양한 케이스 처리와 최대 리다이렉션 횟수 제한을 고려해야 함을 지적합니다. 캐싱 문제에서는 Cache-Control 헤더의 다양한 옵션에 대한 처리 방법을 제시하고, 압축 문제에서는 Transfer-Encoding: chunked 헤더 처리의 중요성을 강조합니다. 전반적으로 이 글은 단순한 문제 풀이를 넘어, 브라우저 엔진의 동작 원리를 깊이 이해하고 실제 코드에 적용하는 과정을 보여줍니다. 독자들은 이 글을 통해 연습문제 풀이에 대한 힌트를 얻을 뿐만 아니라, 브라우저 개발에 대한 실질적인 인사이트를 얻을 수 있을 것입니다.

Read more →
7
0

브라우저 스터디할 때 keep-alive 기능 구현하는 거와 관련해서, 성능 측정하는 코드는 필요하겠다 싶어서 TCP handshake 비용 측정하는 코드 짜달라고 Claude Code한테 시켜줬는데 잘 짜줌. 다른건 손으로 직접 실습을 하더라도, 실험 환경 만드는 귀찮은 작업은 LLM한테 시키면 만사가 편안하다...

TCP handshake 비용을 측정하는 코드가 실행된 모습
2
2

이런 생각이 받아들여지는 데에는 시간이 많이 걸릴 거라고 생각했는데… AWS 먹통 사태에 대한 사람들의 반응이 생각보다 뜨겁네요. 생각보다 될 것 같기도 하네요.

그러므로 다 같이 외쳐

  • 클라우드는 없다! 남의 컴퓨터 거부하자!
  • 분산을 집중으로 되돌리는 역사의 퇴행 AWS 물러가라!
  • 서버는 기본권이다! 집집마다 서버를! 모든 어린이에게 서버를!
  • 내 컴퓨터 없이 내 보안 없다!
  • 내 컴퓨터 없이 내 프라이버시 없다!
  • 내 컴퓨터 없이 내 자유 없다!
  • 1인 1서버는 인권이다!
  • 1인 1서버가 민주주의 주춧돌이다!
  • POWER TO THE PEOPLE!!! REAL FREEDOM FOR ALL!!!
5
4
0
  • 발표자료 대본 다이어트
  • 코스모슬라이드 다듬는 작업
  • 브라우저 스터디 준비
4

오늘의 삽질

분명히 로컬 개발환경에서는 의도한대로 Federation 잘 동작하고 있는데, 왜 프로덕션에서는 팔로우도 제대로 동작안하고, Create(Note) 액티비티는 왜 제대로 안 들어오고 /users/inbox 라는 이상한 엉뚱한 경로로 들어오나하고 한참을 까봤다. sharedInbox 경로만 엉뚱한 URL 패턴을 가지고 있었다.... 프론트엔드/백엔드 분리하긴 했다만, 리다이렉션도 제대로 안 걸어둬서 생긴 오류였다. 아이고두야....

해당 에러를 고친 commit인데 내가 봐도 어이가 없다.
2
0