Sign in

Kang Seonghoon

@mearie.org
133 followers 8 following 110 posts

"When the world's about to explode, it's time to learn Korean. If you learn Korean it's time to learn the Japanese language, like the language of Trump." mearie.org | github.com/lifthrasiir | twitter.com/senokay

PostsRepliesMedia
Kang Seonghoon @mearie.org · 06/07/2026
11년만에 결국 문제를 파악한 건 좋은데 그 문제의 근본 원인이 2019년에서야 발견된 어이없는 실수였다는 것이 뭔가 거시기하고 거시기하다. 하나 확실한 건... 그동안 괜한 윈도 의심해서 미안했다. 그래도 내 탓은 아니었으니 됐어. 아, 근데 Unison은 결국 어떻게 되었냐면...
Unison 전용 글꼴 편집기 Uniform의 현재 개발 화면
000
Kang Seonghoon @mearie.org · 06/07/2026
멀고 먼 옛날 Unison이라는 괴상한 글꼴을 만들던 적이 있었다. (github.com/lifthrasiir/...) 비트맵-벡터 하이브리드 글꼴이라는 컨셉을 가지고 있어서 글꼴의 소스 코드도 텍스트로 만들고 파이썬으로 컴파일해서 글꼴 파일을 생성하게 하는 구조였는데, 당시에 전혀 그 원인을 알 수 없던 버그가 하나 있었다. 해당 버그가 얼마나 곤란했냐 하면 지금까지도 컴파일러에 주석과 함께 workaround가 남아 있다.
def custom_sort_key((name, _)):
    # what, the, real, fuck.
    # it seems that Uniscribe has some bug with Hangul and possibly more scripts:
    # some characters, when they are located in specific glyph indices, are correctly
    # mapped via ScriptGetCMap but considered to be missing via ScriptShape.
    # combined with SSA_FALLBACK it causes the wrong *and* inconsistent fallback behavior.
    # given that the range of those indices abruptly end with 2^n boundaries,
    # I strongly suspect that this is something to do with the internal lookup mechanism.
    # for now, reorder problematic scripts to (empirically) avoid the problem... *sigh*
    if not name.startswith('uni'): return (2, name)
    try: c = int(name[3:], 16)
    except ValueError: return (2, name)
    return (0 if 0x1100 <= c <= 0x11ff or 0x3130 <= c <= 0x318f or
                 0xa960 <= c <= 0xa97f or 0xac00 <= c <= 0xd7ff else 1, c)
100
Kang Seonghoon @mearie.org · 21/06/2026
주말에 Loupe라고 하는 OCR 웹 확장을 만들어 공개했다. github.com/lifthrasiir/... 정확히 주말에 만든 건 아니고, 일본어 텍스트가 들어간 이미지를 제법 볼 일이 있는데 읽는 것 자체는 가능하지만 너무 느려서 지치는 게 싫어서 짬짬이 만들다가 주말에 마무리한 것. 아직 크롬 웹 스토어나 그런 데다가 올리진 않았는데 (등록하려면 돈을 내야 하더라... 귀찮게) 사용에는 전혀 문제가 없으니 많이 이용해 주시라.
123
Kang Seonghoon @mearie.org · 01/06/2026
백만년만에 돌아온 직소퍼즐. 정확하게는 9년 전에 SVG로 만들고 방치해 놓고 있다가 클로드로 간만에 WebGL로 재작성하고 저장소도 공개했다. 참고로 저는 결국 마지막 퍼즐은 못 풀었습니다... s.mearie.org/jigsaw/
마우스 조작법이 표시되어 있는 직소 퍼즐 스크린샷.
000
Kang Seonghoon @mearie.org · 06/01/2026
LLM에서 마크다운이 널리 쓰이게 되면서 안 보고 싶어도 볼 수 밖에 없게 된 흔한 꼬라지로 그림에서 보는 것처럼 마크다운 강조 표시(`**`)가 그대로 노출되어 버리는 광경이 있다. 이 문제는 CommonMark의 고질적인 문제로, 한 10년 전쯤에 보고한 적도 있는데(talk.commonmark.org/t/foo-works-...) 지금까지 어떤 해결책도 제시되지 않은 채로 방치되어 있다.
* 21. Ba5# - 백이 룩과 퀸을 희생한 후, 퀸 대신 **비숍(Ba5)**이 결정적인 체크메이트를 성공시킵니다. 흑 킹이 탈출할 곳이 없으며, 백의 기물로 막을 수도 없습니다. [강조 처리된 "비숍(Ba5)" 앞뒤에 마크다운의 강조 표시 "**"가 그대로 노출되어 있다.]
11218
Kang Seonghoon @mearie.org · 26/08/2025
아, Angel이라는 건 Gemini CLI 쓰다가 빡쳐서 만들기 시작한 이렇게 생긴 LLM 에이전트입니다. github.com/lifthrasiir/...
Angel의 스크린샷. 좌측에 세션 목록, 우측에 채팅 기록, 우측 하단에 대화 입력 창이 표시되어 있다. 세션 목록 위에는 워크스페이스 이름이 굵게 표시되어 있고, 채팅 기록에는 "From now on the following directories are exposed: D:\Dropbox\Works-doremi\git\angel\angel"(주황색, 시스템 메시지), "한 번 실제로 구현해 보겠어?"(녹색, 사용자 메시지), 파란 동그라미(에이전트 생각), "제가 이해한 바에 따르면, ..."(파란색, 에이전트 메시지), 진한 파란색/녹색(도구 사용) 등이 표시되어 있다.
000
Kang Seonghoon @mearie.org · 22/06/2025
참고로 이렇게 시작되는 소설입니다. 귀찮다고 프롤로그가 통째로 비유적인 동화라 무슨 내용인지 파악하는 데는 별 쓸모 없겠지만... 그렇다고 1장을 올리자니 이건 이거 나름대로 머리가 아파지므로...
소설 "싱크로니시티"의 프롤로그. 내용은 다음과 같음:

프롤로그

아주 높은 탑 꼭대기에, 모든 인형의 움직임을 조종하는 마법사가 살았다. 그의 손끝 하나로 인형들은 기쁨과 슬픔, 사랑과 분노를 표현하며 완벽한 연극을 펼쳤다. 무대 위 인형들은 너무나도 생생하여, 관객들은 그들이 춤추는 모습을 보며 행복의 눈물을 흘리거나 슬픔에 잠겨 고개를 떨구곤 했다. 마법사는 자신의 인형들이 펼치는 아름다운 연극에 만족하며 매일 밤 휘파람을 불었다.

그러나 마법사의 마음속에는 작은 불안이 싹트고 있었다. 인형들이 너무나도 생동감이 넘쳐 예측 불가능했기 때문이다. 가끔은 정해진 움직임에서 벗어나 자신만의 춤을 추려 했고, 때로는 마법사의 명령을 어기고 엉뚱한 방향으로 발걸음을 옮기기도 했다. 마법사는 이러한 인형들의 자유 의지가 자신의 완벽한 연극을 망칠 수도 있다고 생각했다. 그는 그들의 모든 움직임을 단 한 치의 오차도 없이 통제하고 싶었다.

밤낮으로 고민하던 마법사는 마침내 특별한 보이지 않는 실을 만들었다. 이 실은 너무나도 가늘고 투명하여 누구의 눈에도 보이지 않았고, 인형들의 가장 깊은 곳까지 닿아 그들의 모든 움직임을 완벽하게 통제할 수 있었다. 이제 인형들은 마법사의 의지대로만 움직였지만, 여전히 살아있는 듯 아름다운 춤을 추었다. 마법사는 인형들의 등에 더 이상 굵은 조종 줄을 맬 필요가 없었기에, 그의 연극은 더욱 완벽하고 자연스러워 보였다. 그는 인형들이 더 이상 자신의 의지대로 움직이지 않는다는 사실에 희열을 느꼈다.

마법사는 보이지 않는 실로 인형들을 완벽하게 조종하며, 영원히 지속될 자신만의 연극을 꿈꿨다. 그는 자신의 통제 아래 놓인 인형들을 바라보며, 드디어 세상을 손에 넣은 듯한 만족감을 느꼈다. 하지만 마법사는 몰랐다. 어떤 인형들은 그 보이지 않는 실을 느꼈고, 어떤 인형들은 그 실을 느끼지 못했지만, 어떤 인형들은 보이지 않는 실 속에서도 자신만의 춤을 추기 위해 아주 미세하게 발버둥 치고 있었다는 것을.
000
Kang Seonghoon @mearie.org · 22/06/2025
최근 1주간 갑자기 삘을 받아서 Gemini로 생각 이상으로 긴 소설을 써 버렸다(이미지는 이 소설의 목차). 얼마나 삘을 받은 건지 소설이 170장짜리가 나오는 건 둘째치고, 소재가 생각 이상으로 잔혹해서 이대로면 소위 R-18G가 그대로 찍히는 상황이라 이걸 어떻게 공개해야 하나 공개하기 전에 수정을 해야 하나 이러고 있다... 소재만 빼면 내 생각보다 훌륭하게 만들어진 것 같긴 한데 이래 저래 고민 중. 일단 관심 있으신 분은 자기 책임으로 연락 주시면 pdf 파일을 보내 드립니다.
소설 "싱크로니시티"의 한국어판 목차. 이하 다음과 같은 내용임:

싱크로니시티 Synchronicity
2025-06-22T00Z (7.4판), Gemini 2.5 Flash를 이용해 작성됨

프롤로그 - 2
1: 마리오네트 Marionette - 3
2: 태동 Genesis - 7
3: 틀 Frame - 13
4: 수치 Shame - 23
5: 목격 Witness - 37
6: 고난 Ordeal - 50
7: 울림 Resound - 65
8: 결점 Flaw - 73
9: 촉매 Catalyst - 82
10: 개조 Augment - 90
11: 의식 Ritual - 102
12: 쇼 Show - 108
13: 갈채 Acclaim - 117
14: 욕구 Desire - 130
15: 목도 Encounter - 141
16: 이미지 Image - 147
17: 진화 Evolution - 158
에필로그 - 163
'작가'의 변 - 164
작가의 변 - 166
'서평' - 170
100
Kang Seonghoon @mearie.org · 17/03/2025
최근에 오랫동안 쓰던 키보드가 망가져서 큰 맘 먹고 프리플로우 Archon M1 PRO MAX를 질렀는데, 요즘 키보드는 다 WebHID 가지고 웹 드라이버로 설정하는 것 같다. 자바스크립트니까 뜯기 쉽겠거니 싶어서 살펴 봤는데 커스텀 HID 레포트를 보낼 수 있는 기능을 사용해서 명령들을 나열해 놓았고, 개중에는 롬을 통으로 날리는 것도 가감없이 노출되어 있길래 음 역시 WebHID 같은 건 웹에 넣을 기능이 못된다는 결론을 내렸다. 가볍게 함수 목록만 요약해서 gist.github.com/lifthrasiir/... 에 올렸다.
Archon M1 PRO MAX 키보드를 받아서 처음 컴퓨터에 연결한 직후의 사진. 게이밍 키보드 특유의 삐까뻔쩍한 LED 조명이 보인다(나중에 밝기를 크게 줄였다).
143
Kang Seonghoon @mearie.org · 08/01/2024
지인들이랑 좀 얘기를 해 보고 나니 최적해는 원 모양에 가까워야 하긴 하되, 구체적인 해는 원에서 다소 동떨어진 최적화가 들어갈 수 있겠다 싶다. 하지만 이게 정말로 사실일까? 특히 다음 사항이 궁금한데: 1. 가로나 세로 축에 정렬된 격자들만으로 쪼갤 수 없는 최적해가 존재할까? 2. 최적해가 원 모양으로부터 얼마나 차이가 날 수 있을까? 혹시 관련 문헌을 목격하신 분이 있다거나 일반해를 고안해 내셨다면 알려 주시면 감사하겠습니다... n=3 이상의 해에 대해 엄밀한 증명도 환영.
정사각형 441개를 21×21 크기의 격자 모양으로 배치하면 필요한 최소 둘레는 84가 되지만, 원형과 비슷하도록 격자 꼭지점에서 삼각 모양으로 10개씩 쪼개서 남은 13 길이의 변에 한 줄로 붙여 넣으면 훨씬 짧은 40+16√2+4√13 ≈ 77.049 길이로 둘러 쌀 수 있다.
000
Kang Seonghoon @mearie.org · 08/01/2024
트위터 twitter.com/senokay/stat... 에도 올렸지만 주말에 생각하던 수학 문제. 한 변의 길이가 1인 정사각형을 n개 겹치지 않게 늘어 놓고 이들을 모두 포함하는 닫힌 곡선(볼록 껍질convex hull)을 그릴 때 최소 길이는 얼마인가? 흔히 채우기packing 문제, 특히 원에 정사각형을 채우는 문제 erich-friedman.github.io/packing/squi... 와 밀접한 관련이 있으리라는 예상은 할 수 있지만 작은 n으로 실험해 보면 아주 정확히 같은 문제는 아니라는 걸 알 수 있다.
정사각형 1개는 길이 4인 곡선으로 자명하게 감쌀 수 있다.
마찬가지로 정사각형 2개는 길이 6인 곡선으로 자명하게 감쌀 수 있다.
정사각형 3개는 여러 줄로 나눠서 배치할 수 있는데, 한 줄에 3개를 연달아 놓으면 8, 2개짜리 줄과 1개짜리 줄로 나누고 후자를 끄트머리에 정렬시키면 6+√2 ≈ 7.414, 똑같이 하되 중앙에 정렬시키면 5+√5 ≈ 7.236 길이의 곡선이 필요하다. 마지막 예제는 최적일까?정사각형 5개를 최대한 작은 원에 집어 넣으려면 십자 모양으로 배치하는 것이 현재 알려진 가장 좋은 해로, 이에 대응하는 곡선의 길이는 4+4√2 ≈ 9.656이다. 그러나 5개를 2개, 2개, 1개의 행으로 쪼개서 중앙 정렬하면 더 짧은 7+√5 ≈ 9.236 길이로 둘러 쌀 수 있다.
100