Profile img

Juntai Park

@arkjun@hackers.pub · 65 following · 89 followers

中年(중년)中小企業(중소기업) 開發者(개발자), 90年代(년대) Console Gamer(콘솔 게이머). 좋은 하루를 繼續(계속)해 나아간다. 좋은 하루가 모이면 좋은 人生(인생)이 된다.

韓国人のプログラマー、40代、小学生の息子とゲームするのが幸せ😃💕龍が如く 、ゼルダの伝説、マリオ、ピクミン好き

「いい1日を続ける」
いい1日を続けていけば、いい人生になる!

threads
@rkjun
x
@rkJun
uri.life
@arkjun@uri.life
GitHub
@arkjun

Juntai Park shared the below article:

Vibe Writing

Minyoung Jeong @kkung@hackers.pub

Hammerspoon과 OpenAI API를 활용하여 맥에서 선택한 텍스트를 즉시 번역하는 스크립트를 소개합니다. 이 스크립트는 Cmd+Shift+K 단축키를 통해 선택된 텍스트를 OpenAI의 GPT-4o 모델을 사용하여 한-영 또는 영-한 번역을 수행하고, 번역된 텍스트로 선택 영역을 자동으로 대체합니다. Accessibility API를 활용하여 텍스트 선택 및 대체 과정을 자동화했으며, OpenAI API를 호출하여 고품질 번역을 제공합니다. Vibe coding을 통해 개발하려 했으나, API 문제로 직접 구현했으며, 이 스크립트를 통해 영문 작성 시 번거로움을 줄이고 생산성을 향상시킬 수 있습니다.

Read more →
4

Juntai Park shared the below article:

OX 테스트 당신은 책중독자인가?

박준규 @curry@hackers.pub

이 글은 톰 라비의 《어느 책중독자의 고백》을 인용하여 독자가 스스로를 "책중독자"로 진단해볼 수 있는 간단한 OX 테스트를 제공합니다. 모르고 같은 책을 두 번 산 적이 있는지, 표지 디자인만 보고 책을 구매한 적이 있는지 등 10가지 질문을 통해 독자 스스로가 책에 대한 애정을 어느 정도 가지고 있는지 되돌아보게 합니다. 이 테스트는 가벼운 마음으로 자신의 독서 습관을 재미있게 평가해보고, 책에 대한 애정을 다시 한번 확인하는 계기를 마련해줍니다.

Read more →
5

아 9월부터 강의를 합니다 (교수가 되었습니다). 무슨 과목을 맡게될지는 모르겠지만 꿈에 그리던 기깔난... 마치 IoT로 도배된 집과도 같은 강의를 해보겠습니다 기대해주세요. 그리고 언젠가 이 경험들이 쌓여서 파이콘에서라도 발표하면 좋겠네요.

14

Juntai Park shared the below article:

How to pass the invisible

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub

This post explores the enduring challenge in software programming of how to pass invisible contextual information, such as loggers or request contexts, through applications without cumbersome explicit parameter passing. It examines various approaches throughout history, including dynamic scoping, aspect-oriented programming (AOP), context variables, monads, and effect systems. Each method offers a unique solution, from the simplicity of dynamic scoping in early Lisp to the modularity of AOP and the type-safe encoding of effects in modern functional programming. The post highlights the trade-offs of each approach, such as the unpredictability of dynamic scoping or the complexity of monad transformers. It also touches on how context variables are used in modern asynchronous and parallel programming, as well as in UI frameworks like React. The author concludes by noting that the art of passing the invisible is an eternal theme in software programming, and this post provides valuable insights into the evolution and future directions of this critical aspect of software architecture.

Read more →
11
1
0
7
2
0
4

Juntai Park shared the below article:

VitePress localSearchPlugin 버그 디버깅하기

Lee Dogeon @moreal@hackers.pub

이 글은 Zenn 트렌드 봇 제작 중 VitePress 로컬 검색 기능의 버그를 발견하고 수정하는 과정을 담고 있습니다. Fedify 문서에서 검색 기능이 제대로 작동하지 않는 것을 확인한 후, 코드 블록 내의 특정 마크다운 문법(`markdown-it-jsr-ref` 플러그인)이 문제임을 밝혀냈습니다. VitePress의 `localSearchPlugin.ts` 파일을 분석하여, 헤딩 내의 `<a>` 태그를 처리하는 정규식의 non-greedy한 특성이 버그의 원인임을 알아내고, 정규식에서 `?` 기호를 제거하여 문제를 해결했습니다. PR을 통해 수정 사항을 제안하고 빠르게 머지된 경험을 공유하며, 디버깅 과정과 PR 준비에 대한 회고와 함께 개선점을 제시합니다. 이 글은 문제 해결 과정과 디버깅 경험을 통해 독자들에게 인사이트를 제공합니다.

Read more →
3
9

Juntai Park shared the below article:

If you're building a JavaScript library and need logging, you'll probably love LogTape

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub

LogTape offers a novel approach to logging in JavaScript libraries, designed to provide diagnostic capabilities without imposing choices on users. Unlike traditional methods such as using debug packages or custom logging systems, LogTape operates on a "library-first design" where logging is transparent and only activated when configured. This eliminates the fragmentation problem of managing multiple logging systems across different libraries. With zero dependencies and support for both ESM and CommonJS, LogTape ensures minimal impact on users' projects, avoiding dependency conflicts and enabling tree shaking. Its universal runtime support and efficient performance make it suitable for various environments. By using a hierarchical category system, LogTape prevents namespace collisions, offering a seamless developer experience with TypeScript support and structured logging patterns. LogTape provides adapters for popular logging libraries like Winston and Pino, bridging the transition for users invested in other systems. Ultimately, LogTape offers a way to enhance library capabilities while respecting users' preferences and existing choices, making it a valuable consideration for library authors.

Read more →
10

실제로 Hackers' Pub은 Mac mini M4 깡통에서 돌아가는데, 아직 Asahi Linux가 M4를 지원 안 해서 macOS 안에 컨테이너 띄워서 돌리고 있어요. Asahi Linux가 M4 지원할 때까지 숨 참고 기다리는 중입니다…

2
4
7

내가 Git 쓰다가 왕대빵 커밋 똥히스토리 남기는 전형적인 패턴이다.

  1. 간단한 기능 A를 추가하려고 한다.
  2. A를 추가하려면 기존의 설계 B를 고쳐야한단걸 깨닫는다.
  3. B를 고친다.
  4. A를 추가한다.

이렇게 3, 4의 변경이 한데 들어가 있는 무근본 커밋이 탄생한다. 2 -> 3 사이에 stash를 하면 간단히 해결되는 문젠데 매번 까먹고 실천을 못한다.

5
11
16
6

요즘 '이건 잘못된 코드지만 당분간 고칠일이 없기를 기도하자'고 하며 넘어간 코드들에서 나온 버그들을 계속 고치는 중이다.

과거의 나의 정확한 안목에 뿌듯해하며 동시에 피눈물을 흘리고 있다.

8

이뿐만이 아니다. 예스24는 낙후된 시스템을 운용하는 것으로 전해진다. 단적인 예로 사이트 개발에 '닷넷 프레임워크'를 사용하고 있다. 닷넷 프레임워크는 현재는 잘 사용하지 않는 개발 언어로 윈도 서버에서만 운영 가능하기 때문에 개발자의 외면을 받고 있다.

닷넷 프레임워크는

  • 현재는 잘 사용하지 않는 -> 아님¹
  • 개발 언어로 -> 아님²
  • 윈도 서버에서만 운영 가능하기 때문에 -> 아님³
  • 개발자의 외면을 받고 있다 -> 일단 점유율은 아님¹

예를 확인 없이 내세운 기사네요 🙃

@nyeongAn Nyeong (安寧) .NET이랑 .NET Framework가 서로 다른 물건이예요. .NET은 .NET Core가 리브랜딩된 거고, 10년 전에 .NET Framework를 대체했습니다. .NET Framework는 Windows에서만 돌아가는 것도 사실이고요. .NET Core, 즉 현재의 .NET은 .NET Framework와 브랜드 측면에서는 연속성이 있지만, 기술적으로는 아예 새로 만들어진 구현입니다. 오픈 소스라는 점도 다르고요. 전반적으로 .NET Framework는 레거시 기술이 맞아요.

4
1

Hackers' Pub에 로그인한 상태에서의 타임라인 구성을 조금 바꿔봤습니다. 기존의 “연합우주” 탭을 “피드”라고 수정했고, “연합우주” 탭과 “Hackers' Pub” 탭은 기본적으로 로그아웃했을 때의 “연합우주” 및 “Hackers' Pub” 탭과 동일한 타임라인이 표시되게 했습니다. 아직 팔로를 많이 하지 않은 분들에게는 “연합우주” 및 “Hackers' Pub” 타입라인이 새로운 콘텐츠를 발견하기 좋은 공간이 될 겁니다.

11
3
5

지금은 아니지만 내가 HHKB 레이아웃을 쓰고 터미널에서 이것저것 하는 것 때문에 vim 에 대해 관심을 가지는 동료들이 있었다. 가장 쉽게 적용할 수 있는 것은 예쁜 터미널 에디터였고 그 첫 후보로 nvchad 를 추천 또는 설치해주었다. https://nvchad.com/ vscode 에서 이걸로 당장 넘어오라고는 당연히 못하고 터미널에서 코드 읽어 볼 때 사용하라곤 했다. 몇몇은 vscode 에서 vim 플러그인을 설치해 사용하기 시작했다. lazyvim 과 nvchad 를 번갈아 가며 쓰고 있다. siduck 의 미감은 훌륭하다.

타이머 패널은 마우스로 드래그할 수 있다.
5

아까 멘토링 시간에, Next.js가 점점 Vercel에 종속적으로 변해가는 모습에 사용자들이 점점 이탈하지 않을까 하는 질문을 했어요. 그랬더니 아직은 걱정할 필요 없다고 3~5년은 더 갈 거라는데, 개인적으로는 아직 잘 모르겠지만 Vite같은 번들러조차도 지원하지 않는데 Deploy까지 Vercel에 모든 것을 맡겨야 한다고 하면... 눈에 보이는 사용자 이탈에 3년도 안 걸리지 않을까 하는 생각을 조심스럽게 하고 있어요.

4

종종 일 앞에 사람이 있다는 점을 간과하는 발언을 들을 때가 있다. 사람을 소울리스 코딩머신으로 취급한다거나, 부서의 상황을 배제하고 일만을 고려하는 의견들. 어느 정도는 일리가 있겠으나 성공적인 의사소통으로 평가하긴 어렵다.

3
2
6
2
7
9

Juntai Park shared the below article:

미리알림을 이용한 생활 루틴 자동화

제이미 @theeluwin@hackers.pub

이 글은 아이폰의 '미리알림' 앱을 활용하여 일상 및 업무 루틴을 자동화하는 방법을 소개합니다. ADHD 성향을 가진 저자는 주기적으로 해야 하는 일들을 잊지 않기 위해 '미리알림'을 통해 알림을 받고, 이를 통해 뇌의 인지 자원을 절약하고 효율성을 높입니다. 작업을 세분화하고, 완료 후 즉시 체크하는 방식을 통해 미루는 습관을 개선하고, 새로운 습관을 형성하는 데 도움을 받습니다. 또한, '미리알림'을 자주 확인하는 습관을 통해 중요한 일들을 잊지 않도록 관리하며, '구글 캘린더'와 일기장을 병행하여 전체적인 일정 관리와 자기 성찰을 돕습니다. 이 시스템은 루틴 관리를 자동화하고, 새로운 습관을 쉽게 만들 수 있도록 도와주는 유용한 방법입니다.

Read more →
8

지난번 read papers with me에 이어서... 이번에도 어차피 논문 읽을겸, 세미나 발표 준비하듯 피피티도 만들고, 영상도 촬영해봤는데요,

결국 촬영 + 편집에 오버헤드가 너무 많이 걸려서 이것도 그다지 좋은 방법이 아니었네요. 혹시라도 비슷한 생각 하신 분들은 참고하시길(...)

https://www.youtube.com/watch?v=X6yWfjBgHsg

4

루비온레일즈에서는 CoC라는 게 있습니다.
Convention over Configuration.
그러니까 설정보다 컨벤션을 더 중시하게 본다는 겁니다.
설정 파일에다가 이것저것 적는 것이 아니라 그저 관행대로 하면 알아서 동작하는 거.

예를 들어서 라우트에 articles란 이름의 경로를 만들면, 이 경로는 articles_controller.rb 와 자동으로 매핑이 됩니다.
그리고 articles_controllerindex 액션은 views/articles/index.html.erb 을 자동으로 찾아서 렌더링 합니다.
이를 위한 어떤 설정도 필요 없습니다. 그저 관행일 뿐입니다.
DB 의 테이블 이름과 모델 클래스의 이름이 항상 동일하다는 것도 CoC의 한 예입니다.

처음엔 이런 관행이 짜증 나기도 했습니다.
왜 모든 테이블 이름이 복수형이어야만 하지?
Person 모델이 있으면 당연히 테이블 이름도 person이어야 직관적이지 않나? 왜 people이라는 복수형을 강제하는 거지?
이런 생각으로 반항하며 대들 때마다 레일즈는 고통을 돌려주었습니다.

초반에는 Rails와 많이 다투면서 이런 고집스러운 녀석과는 같이 못 살겠다 생각을 했었습니다만...
그 장점을 받아들이고 나서 드디어 친하게 지낼 수 있게 되었습니다.
오히려 제약하고 강제하면서 코딩이 만사 편해질 수 있구나 하는 걸 배웠습니다.

그런데 이게 꼭 코딩 시에만 적용되는 것은 아니었습니다.
사내 문화에 이런 걸 적용한 회사도 있었습니다.

카카오에 처음 들어갔을 때 영어 닉네임을 정해야만 했습니다.
그 영어 닉네임은 사람들에게 불리는 내 호칭이기도 했지만, 내 이메일 주소가 되기도 했습니다. 사내 github 주소가 되었고 사내 게시판의 닉네임이 되었습니다.
동료의 메일 주소를 물어볼 필요가 없었습니다. 부르는 이름이 메일 주소니까.
저는 Windows 컴퓨터를 사용해왔지만 얄짤없었습니다. 모든 사람들에게 맥북이 지급되었습니다.
사람들의 자유를 너무 제약하고 강제하는 것 아닌가?

돌아보니 이런 문화들이 마치 레일즈의 CoC처럼 느껴집니다.
회사 문화를 처음 만든 사람들이 레일즈를 워낙 좋아해서 영향을 받은 거 아닌가 하는 의심마저 들었습니다.(웃음)
엄격하게 강제하지만 구성원들이 잘 따르기만 하면 모두가 편해지는 관례.

이런 것이 좋을 때도 있다는 사실을 이제는 받아들입니다.

9
9

Juntai Park shared the below article:

Sealed Secrets - 가볍게 적용 가능한 GitOps with Secret

01010011 @01010011@hackers.pub

Sealed Secrets는 Vault와 같은 외부 Secret 관리 시스템을 도입하기 어려운 소규모 조직에게 적합한 대안입니다. GitOps 배포 파이프라인에서 API 키와 같은 Secret 정보를 안전하게 관리하는 데 어려움을 겪는 경우, Sealed Secrets는 클러스터 내부의 Secret Controller와 클라이언트 측 유틸리티를 통해 Secret을 암호화하고 관리합니다. 이 방식은 Secret을 Git 리포지토리에 안전하게 저장할 수 있게 하여 GitOps 흐름을 유지하면서도 보안 리스크를 줄여줍니다. AES-256-GCM + RSA-4096 방식으로 암호화된 Secret은 공개 저장소에 저장해도 안전하며, 클러스터에서 복호화되어 애플리케이션에서 일반 Secret처럼 사용할 수 있습니다. Sealed Secrets는 완벽한 해결책은 아니지만, 중소 규모 서비스에서 보안과 자동화 사이의 균형을 맞추는 데 유용한 도구입니다.

Read more →
6

빨간 공이 n개, 초록 공이 100-n개 들어있는 불투명한 통이 있습니다. n은 0에서 100까지의 정수 중 균등하게 무작위로 선택됩니다. 통에서 첫 번째 공을 뽑았더니 빨간 공이 나왔습니다. 첫 번째 공을 꺼내두고 통에서 두 번째 공을 뽑을 때, 빨간 공과 초록 공 중 어느 공이 나올 확률이 더 높을까요 (혹은 두 확률이 같을까요)?

출처: https://x.com/littmath/status/1751648838501224790

2

소니의 플랫폼(PS5)에서 개발을 하면 필연적으로 파트너 사이트를 매우 빈번히 이용할 수 밖에 없는데, NDA에 걸릴 것들이 많아 내부의 이야기는 할애하더라도, 외부의 이야기인 사이트 크레덴셜 관리 폴리시에 관한 불평은 좀 해야겠다. 2개월마다 패스워드를 바꾸라고 요구하는 것도 적잖이 성가신 이야기이나, [[최근 사용한 24개의 패스워드]] 를 제외하고 변경할 것을 요구한다. 정기적으로 강제로 패스워드 변경을 요구하는 것이 실효적인 보안 향상 효과가 있는가에 대해서는 상당히 questionable하기도 하거니와, 내 최근 사용 패스워드의 해쉬 24개를 사이트가 쥐는 것은 상당히 어처구니가 없다.

파트너 웹사이트의 접근 조차 올해까지 IP whitelisting으로 운영되고 있었을 정도로 (올해 상반기에야 이 운영방침은 해제되었다) '실효성 없지만 제약은 강한 강박적 "보안" 조치들' 은 전형적인 일본 기업의 IT 운영 폴리시라고 하겠다.

8
5

@hongminhee洪 民憙 (Hong Minhee)

  • 이곳이 마음에 들어요. 만들어주셔서 감사합니다.
  • 마크다운이 된다니 만세입니다. 마스토돈에선 안되거든요.
  • 글 수정 기능 + 수정 내역 보기 가 있으면 좋겠다고 생각하고 있다는 점을 수줍게 염치없게 말씀드려봅니다. 저는 제가 써놓은 것에 오타가 있거나 주술호응이 틀렸다거나 하면 스트레스를 심하게 받거든요. 그런데 마스토돈에서 수정 기능을 써 보니까, 이게 많이 좋았어요.
6
2
3

  • 중국어를 전공했습니다.
  • 전역하자마자(금요일 전역, 월요일 출근) 강원도에서 제약 영업을 1년 4개월 정도 했습니다.
  • 컴퓨터 학원을 1년 정도 다니면서 정보보안 스터디를 했습니다.
    • 이때 Python, C, Java순으로 프로그래밍을 처음 접했습니다.
  • 정보보안 관제 회사에서 고객사에 파견 나가 악성코드 대응 업무를 4년 정도 했습니다.
    • 이때 개발자가 되고 싶어서 C++ 코리아 스터디에 몇 번 참석했는데 여기서 운명의 ‘모나드’라는 단어를 처음 접하고 하스켈 공부를 시작했습니다.
  • 기업에서 정보보안 담당자 7년 차로 일하고 있습니다.
    • 코딩은 취미로 하거나 혼자만 하는 소소한 업무 자동화에 활용하고 있습니다.
  • 풀타임 개발자와 오픈소스 메인테이너의 삶을 동경하고 있습니다.
  • 주로 Windows에서 Putty로(80x24, Consolas) 리눅스 서버에 붙어서 Vim을 사용합니다. Visual Studio Code를 잠깐 써봤는데 다시 Putty로 돌아왔습니다.
  • 집에서는 몇 년 전 중고로 산 MacBook Air M1을 사용하고 있습니다.
  • 회사에서는 몇 년 전 중고로 산 HHKB를 씁니다.
  • 30대 후반, 기혼, 자녀는 셋(둘째와 셋째는 쌍둥이) 있습니다. 경기도에 살고 있습니다.
18