Profile img

Jaeyeol Lee

@kodingwarrior@hackers.pub · 694 following · 508 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
0
1
2

굉장히 오랜만에 들어와서 쓰는 근황입니다.

  • TIS-100의 모든 레벨을 클리어했습니다. 다음 목표는 아마 Opus Magnum 아니면 A=B가 될 것 같습니다.
  • 올해 여름부터 지금까지 7문제를 백준에 출제했습니다. 여기의 맨 아래에서 보실 수 있습니다. 개인적으로 가장 재밌었던 문제는 SWAP-C Sort인데 그만큼 어렵습니다.
  • 웹 기반으로 뭔가 만들 게 생겨서 프레임워크를 알아보다가 Solid를 써보기로 결정했습니다. 웹 UI는 Flowbite, 그래픽 요소는 Konva를 쓰게 될 것 같습니다.
  • 그런데 이쪽을 첫삽을 뜨기도 전에 갑자기 굉장히 어려운 퍼즐틱한 문제 하나의 풀이가 완성되어서(....) 논문(?!)을 하나 쓰기 시작했습니다. 이런 거 받아주는 저널 어디 없을까요(????)
3
3
0
2
4

Jaeyeol Lee shared the below article:

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

자손킴 @jasonkim@hackers.pub

이 글은 네트워크 라우팅의 기본 개념과 동작 방식, 그리고 NAT 기술에 대해 설명합니다. 라우팅은 IP 패킷이 목적지에 도달하기 위해 거쳐야 하는 경로를 결정하는 과정으로, 라우팅 테이블을 통해 넥스트 홉을 찾아 패킷을 전달합니다. 라우팅 방식에는 수동으로 설정하는 정적 라우팅과 라우터 간 정보 교환을 통해 자동으로 경로를 설정하는 동적 라우팅이 있습니다. 또한, NAT는 하나의 공인 IP 주소를 여러 장비가 공유할 수 있도록 IP 주소를 변환하는 기술로, 특히 NAPT는 IP 주소와 포트 번호를 함께 변환하여 효율적인 네트워크 사용을 가능하게 합니다. 이 글을 통해 독자는 네트워크 라우팅과 NAT의 핵심 원리를 이해하고, 실제 네트워크 환경에서 이들이 어떻게 활용되는지 파악할 수 있습니다.

Read more →
0

I making next-version of apmodel, that uses pydantic for better validation and better loader.

Currently, this feature is either not implemented or not fully implemented:

  • export to json is not avaliable

Additionally, some models have not been migrated to pydantic, so they cannot be used properly.

If you interested this, can read this branch: https://github.com/fedi-libs/apmodel/tree/pydantic

3
12
1
10

[8일차] 20p.

미국의 심리학자 헬레나 매튜트Helena Matute는 그의 논문 〈인과관계의 환각 Illusions of Causality〉에서 이렇게 지적했다. "시각적 환상과 같이 인과의 환각은 모든 사람에게서 흔히 발생한다. 과학적 사고 방법은 인과의 환각을 방지하는 최적의 경로다. 그러나 과학적 사고 방법은 본능적 반응이 아니며 습득이 필요한 기법이다." 헬레나 매튜트가 언급한 과학적 사고 방법은 구조화 전략 사고와 결을 같이하며 이성적 사고, 즉 느린 사고에 속한다.

맥킨지 논리력 수업 8일차
1

Jaeyeol Lee shared the below article:

자연어에서의 재귀와 카탈랑 수

구슬아이스크림 @icecream_mable@hackers.pub

이 글은 자료구조와 알고리즘에서 중요한 개념인 재귀가 자연어에서 어떻게 나타나는지, 특히 통사론적 관점에서 인간 언어 능력의 창조성을 보여주는지를 탐구합니다. 'X의 Y의 Z의...'와 같은 소유격 조사를 사용한 문장 확장을 통해 재귀의 개념을 설명하고, 이러한 재귀가 카탈랑 수와 연관되어 있음을 지적합니다. 영어 예시를 통해 전치사구의 추가가 문장의 중의성을 증가시키고, 구문 분석의 가능한 경우의 수가 카탈랑 수열을 따른다는 것을 보여줍니다. 생성 규칙을 통해 명사구를 재귀적으로 확장하면서 중의성 계수가 카탈랑 수와 동일하게 나타남을 설명합니다. 마지막으로, 자연어의 중의성 해소는 산술 표현식과 달리 확률에 의존하며, 이는 전산/심리언어학에서 중요한 연구 주제임을 강조합니다. 이 글은 재귀의 개념이 자연어에서 어떻게 복잡하게 작용하는지, 그리고 그 중의성을 이해하는 것이 왜 중요한지를 흥미롭게 제시합니다.

Read more →
7
5

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
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
1

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

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

1
5
1

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

그러므로 다 같이 외쳐

  • 클라우드는 없다! 남의 컴퓨터 거부하자!
  • 분산을 집중으로 되돌리는 역사의 퇴행 AWS 물러가라!
  • 서버는 기본권이다! 집집마다 서버를! 모든 어린이에게 서버를!
  • 내 컴퓨터 없이 내 보안 없다!
  • 내 컴퓨터 없이 내 프라이버시 없다!
  • 내 컴퓨터 없이 내 자유 없다!
  • 1인 1서버는 인권이다!
  • 1인 1서버가 민주주의 주춧돌이다!
  • POWER TO THE PEOPLE!!! REAL FREEDOM FOR ALL!!!
5

Jaeyeol Lee shared the below article:

《하스켈로 배우는 프로그래밍》(2009, 대림) 옮긴이의 말

박준규 @curry@hackers.pub

이 글은 2009년 출간된 《하스켈로 배우는 프로그래밍》의 옮긴이 머리말을 공유한 것으로, 하스켈이 단순한 학술적 언어를 넘어 실무적인 범용 언어로 발전한 배경과 그 우수성을 설명합니다. 다양한 업계에서 상용 소프트웨어의 핵심 기술로 활용되는 하스켈은 효율적인 컴파일 언어이면서도 스크립트 언어처럼 빠른 개발이 가능하며, 안전한 정적 타입 언어이면서도 동적 타입 언어처럼 유연한 특징을 지닙니다. 특히 타입 클래스라는 독특한 기능을 통해 코드의 확장성을 높이고, 오브젝트 중심 언어의 인터페이스보다 더 유연하게 대처할 수 있음을 강조합니다. 하스켈은 프로그래밍 언어 연구 성과를 충실히 반영하여 개발 효율성과 코드 안정성을 동시에 추구하는 IT 전문가들에게 매력적인 선택이 될 수 있으며, 이 글은 하스켈의 장점을 다양한 예시와 함께 소개하여 독자들이 하스켈에 대한 이해를 높이고 더 깊이 있는 학습으로 나아가도록 안내합니다.

Read more →
7

The “default” working model for open source projects (and some small/medium businesses) is working in public: you don’t need permission to contribute, you can just show up.

This works surprisingly well much of the time … but sometimes it doesn’t. When it doesn’t, people often retreat into working in private, with no mechanism for broader involvement.

This is a mistake! There is a middle ground, in between public and private, with the benefits of both: jacobian.org/2025/oct/18/worki

0
0
0

Jaeyeol Lee shared the below article:

[IoT] Guide for IoT Beginners

Juan @juanjin@hackers.pub

This technical blog post provides a comprehensive overview of the Internet of Things (IoT), demystifying its core concepts and architecture. It explains how IoT bridges the physical and digital worlds through interconnected devices, gateways, service applications, and servers. The post emphasizes the importance of IoT for individuals, businesses, and society, highlighting its potential to enhance convenience, efficiency, and sustainability. The author explores essential IoT components, including end-devices, gateways, servers, and service applications, detailing their roles in sensing, transmitting, processing, and acting on data. It also addresses common misconceptions about IoT, clarifying that it extends beyond smart homes and involves multidisciplinary systems. The post further discusses network topologies like direct connections, hierarchical connections, and mesh networks, explaining their trade-offs in terms of power, scalability, and resilience. Additionally, the author delves into non-IP connection technologies, such as UART, CAN, IEEE 802.11, Bluetooth/BLE, LoRa, and GNSS, and application protocols like LoRaWAN, MAVLink, UAVCAN, NMEA/UBX, Thread, CoAP, MQTT, and LwM2M. The post also covers Firmware Update Over-The-Air (FUOTA) and IoT security, emphasizing the need for cryptographic foundations, secure communication, secure boot, and access control. The author concludes by calling for greater investment, education, and ecosystem building in IoT, particularly in South Korea, to catch up with global advancements. This post is valuable for anyone seeking a deeper understanding of IoT and its potential impact on various aspects of life and industry.

Read more →
1
3

Obsidian 1.10.1 (early access) is now available to Catalyst members for desktop and mobile.

The mobile app now launches significantly faster. You can now edit the last opened file while the rest of the app loads in the background.

0

충격적인 연구 결과입니다.

과학자들이 대형 언어 모델이 인간이 온라인에서 자극적인 콘텐츠를 과도하게 소비할 때처럼 스스로 ‘뇌가 썩는(brain rot)’ 현상을 겪는다는 사실을 증명했습니다.

연구진은 몇 달간 "짧고 자극적인 트위터 글"만 모델에 학습시킨 결과, 사고 능력은 23% 하락했고, 긴 맥락 기억력은 30% 감소했으며, 성격 테스트에서는 자기애 및 반사회성 지표가 급등했습니다.

더 문제는, 고품질 데이터로 다시 학습시켜도 손상이 완전히 복구되지 않았다는 점입니다. 내부 표현 구조가 영구적으로 변질된 상태로 남았다는 분석입니다.

질 낮은 데이터는 단순히 결과만 나빠지는 게 아니라, 모델 자체의 인지 구조까지 뒤틀릴 수 있다는 뜻입니다.

AI의 '둠스크롤링' 현상이 이미 벌어지고 있습니다.

Photo by CHOI on October 21, 2025. May be an image of blueprint, crossword puzzle, newspaper, magazine and text.
0

[2일차] 23p.

애플리케이션은 정해진 방식대로 구현해야 한다. 어떤 애플리케이션에 어떤 URL을 보내든지, 그 전에 클라이언트 애플리케이션에서 안전하지 않거나 제한된 문자 를 변환하는 것이 좋다. 안전하지 않은 모든 문자를 인코딩하기만 하면, 다른 애플리케이션으로부터 특별한 의미를 가지는 문자를 받았을 때 혼동할 걱정 없이, 애플리케이션 간에 공유할 수 있는 URL의 원형을 유지할 수 있다.

HTTP 완벽 가이드 2일차
1

Zopfli 와 Zstd 도 원래 2호선의 2 를 써서 2opfli 와 2std 로 작명되었습니다. 그러나 대부분의 프로그래밍 언어에서 함수명의 첫 글자를 숫자로 할 수 없다는 규칙 때문에 2 와 비슷한 알파벳을 빌려 쓰게 됩니다. 이것은 출근 시간대 구로디지털단지역에 가 보면 납득할 수 있으며 (아님)

1
2
0
0

백준 등 프로그래밍 문제에서 계산한 결과를 10^9+7로 나눈 나머지를 출력하라 지시하는 경우가 많은데, 오버플로우를 막기 위함인건 알았지만 그 값을 소수로 사용하는 이유는 오늘 처음 알았다. 그 값이 소수여야 모듈러 곱셈 역원을 구할 수 있기 때문이다. (10^7+9는 10자리인 첫 번째 소수이기 때문에 자주 사용된다고 한다.)

풀어 말하자면 실수에서 2를 나누는 것과 1/2를 곱하는 것 대신 군 안에서는 2를 나누는 대신 모듈러 했을 때의 곱셈 역원인 정수를 대신 곱해줄 수 있는데, 모듈러하는 값이 소수일 때만 곱셈 역원이 항상 존재한다.

예시: 팩토리얼, 조합 경우의 수와 같이 매우 큰 수를 계산할 때 곱셈 역원을 사용할 수 있음

C(n, k) = n! x (k!)^-1 x ((n-k)!)^-1 (mod p)

소수가 아닌 경우 아래같은 케이스가 있음 e.g. (m = 8, a = 1, b = 2) 1 / 2 mod{8}을 구할 수 없음

  • x: 2x mod 8
  • 0: 0
  • 1: 2
  • 2: 4
  • 3: 6
  • 4: 0 ... 반복

https://www.geeksforgeeks.org/dsa/modulo-1097-1000000007 https://www.quora.com/What-exactly-is-print-it-modulo-10-9-+-7-in-competitive-programming-web-sites

5

얼마 전 웹서핑을 하다가 우연찮게 현재 앤트로픽에서 엔지니어이자 연구원으로 근무하고 있는 Nelson Elhage가 쓴 Computers can be understood(=컴퓨터는 이해가능하다)라는 글을 봤습니다. 다 읽고나니 이 분 마인드가 제가 평소에 CS 공부할 때랑 너무 비슷해서 공감이 가고 아직 CS 뉴비인 저한텐 굉장히 도움이 되는 한편, 이 마인드가 어떠한 단점을 또한 가져다주는지 잘 얘기하는 것 같아 (사실 읽으면서 뜬끔하는 게 많았음) 저만 알기엔 아까워서 이렇게 번역해서 올려봅니다.

번역된 글을 보려면 여기로 이동해주세용.

혹시나 오역 및 CS 용어에 문제가 있다면 언제든 알려주시면 감사하겠습니다.

8
0
1
2
0

오이카페에 이어그리기에 이어서 그림으로 답글을 달 수 있는 기능이 추가되었습니다! 그리고, 그림 상세 페이지에서 답글과 댓글을 한눈에 볼 수 있도록 개선되었습니다! 예시

개선된 오이카페 그림 상세 페이지.
5

Tailscale을 비롯한 Wireshark 기반의 VPN 도구를 이번에 처음 접하게 되면서 "신세계"를 맛보고 있습니다.

저는 다양한 개발 환경을 테스트하고 학습하는 것을 선호하다보니 계속해서 여러 종류의 노트북이나 PC를 구입해서 사용해왔습니다. 그러다보니 관리 문제도 있고, 어딘가로 여행을 가거나 떠나야 할 일이 생기면 어떤 디바이스를 챙겨 가야 하는지가 상당한 고민이 되곤 했습니다.

그렇지만 인터넷만 붙어있으면 어디서든 동일 네트워크 상에 존재하는 것처럼 일관된 환경을 만들 수 있고, 모든 네트워크 송수신 트래픽이 암호화된 상태를 유지하고 있으며, 속도까지 빠르니 더할 나위 없이 좋습니다.

제 경우는 그래서, Surface Pro 8, Surface Laptop 7, GPU 달린 Intel 랩탑, 라즈베리 파이 4, 맥북, 아이폰, 아이패드, Azure VM, WSL 2 환경까지 매우 많은 디바이스와 가상 머신을 전부 단일 네트워크 환경에 붙여서 자유롭게 사용하고 있습니다.

만약 노트북과 데스크톱, NAS 등의 디바이스를 동시에 붙여서 사용해야 하는 것이 고민이라면 Wireshark나 Tailscale을 꼭 살펴보실 것을 권해드리고 싶습니다. 👍

11
1

So, these days, I'm always trying to find and follow the conf.d tradition. The rationale of this tradition looks like:

  • /etc/somepackage/somepackage.conf is where the default configuration is.
  • /etc/somepackage/conf.d/ is where the overrides are; this is where you put your user conf.

Normally somepackage.conf is managed by the package manager. When the package gets upgraded (shipping a new version of somepackage.conf), and there are local changes, the package manager will ask you: To overwrite with the maintainer's version or to keep yours.

This question is often difficult to answer, especially if you can't, for the life of you, remember what the heck that package is about. Even "show diff" sometimes fails to help. You have to resort to searching.

Keeping your confs under conf.d helps you avoid this altogether. It also helps you separate them, selectively include/exclude some of them to a system, and prioritize them (the 00-my.conf and 99-my.conf pattern).

But that makes me wonder: If all of my user conf will stay inside conf.d, why bother? Why have /etc/somepackage/somepackage.conf at all? Why is it under /etc anyway? Legacy. /etc/resolv.conf is the first example to come to mind. Different apps fight over the control of this file, so sometimes you encounter advice like sudo chattr +i to prevent any change. Absurd, but it works!

So today I briefly wondered if there's any ongoing effort or a new clever solution to address this. Well, there's NixOS which nullifies quite a bit of my point. I've always liked its idea since like 15 years ago. But is there anything else, anything new, for my existing (less exciting) systems?

…I asked ChatGPT 5-Thinking about this, and its answer was mostly expected. The only thing that amused me was the discovery of etckeeper. OK that looks interesting.

2