Juntai Park

@arkjun@hackers.pub · 62 following · 68 followers

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

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

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

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

요즘은 내가 코드를 짤 일은 없고, 개발계획도 AI가 짜고, 개발을 실제로 하는것도 AI가 한다. AI가 좀 핀트 어긋난 것 같으면 내가 잠깐 수정해주는 정도? 누가 보면 바이브 코딩이지만, 엄밀하게는 "바이브 코딩"은 아니다.

요즘 애용하고 있는 워크플로우는 이렇다.

  1. Gemini 웹 대화창 띄워서 "~~한 요구사항이 있어. 시니어 개발자로서 어떻게 작업을 이어나갈지 계획을 알려줘" 하고 마스터 플랜을 뽑는다
  2. Gemini에서 응답이 오면, "AI 한테 그걸 시킬건데, AI가 이해할 수 있게 스텝 바이 스텝으로 XML 포맷으로 지시사항을 알려줘. 각각의 지시사항은 하나하나 검토하기 편하게, 여러개로 분리된 파일이었으면 좋겠어" 라고 프롬프트를 순차적으로 뽑아낸다
  3. 검토할 거 검토해보고, 적당히 괜찮겠다 싶으면, 프롬프트를 Aider든 뭐든 AI에다가 복붙하면 끝.
  4. 최종 결과는 Repomix 돌려서 Gemini 웹 대화창에 올리고, 1~3을 반복

중소규모 플젝은 이게 잘 먹히고, 3주에 걸쳐서 할 것 같았던 작업을 3일컷으로 끝냈다.

9
7
1
1

Juntai Park shared the below article:

데이터 효율성으로 본 AI와 인간의 비교

bgl gwyng @bgl@hackers.pub

이 글은 AI와 인간의 능력 비교에서 데이터 효율성의 중요성을 강조하며 시작합니다. 현재 AI는 인간에 비해 데이터 효율성이 떨어지지만, 일단 학습된 능력은 복제 가능하다는 점을 지적하며 콜센터 직원과 같은 직업군에 대한 위협은 여전하다고 설명합니다. 데이터 효율성이 중요한 경영인과 연구자는 AI를 유용한 도구로 활용할 수 있지만, 인간의 데이터 효율성이 정말 높은지에 대한 의문을 제기합니다. Yann Lecun의 주장을 인용하여 인간이 받아들이는 데이터 양이 AI 학습에 쓰이는 양보다 적지 않음을 언급하며, 인간은 데이터를 있는 그대로 학습하지 않고 편향에 기반하여 학습한다는 흥미로운 주장을 제시합니다. 마지막으로, AI에게 인간처럼 무모한 결론을 내리도록 가르치는 것이 옳은지에 대한 질문을 던지며, 압도적인 양의 데이터를 통해 더 많은 진실을 알아낼 수 있는지에 대한 고민으로 마무리합니다. 이 글은 AI 개발 방향에 대한 새로운 시각을 제시하며 독자에게 깊은 생각거리를 제공합니다.

Read more →
8
4

( ~ 5/31) 제 3회 파이 웹 심포지움 참가자 모집

< 이 행사는 한빛미디어의 장소 후원을 받았습니다 > 주제: AI 시대를 위한 파이썬으로 웹 서비스 개발하기

최근 파이썬이 가장 많이 쓰이는 분야는 단연코 AI입니다. 이제 AI 서비스에 웹 개발이 필요해지는 순간이 많아졌습니다.

웹 서비스 개발 뿐 아니라 openai 나 bedrock같은 AI 서비스의 api 를 이용한 또 다른 서비스를 만들어야합니다.

AI 서비스를 만들면서 겪은 웹 서비스 기술을 함께 나누어보세요! 세션이 끝난 이후엔 다과와 함께 네트워킹 시간도 가질 수 있습니다.

일시 : 2025년 5월 31일 (토) 13:00 ~ 18:00 장소 : 서울특별시 서대문구 연희로2길 62 한빛미디어 리더스홀

https://event-us.kr/pythonkorea/event/103147

1
4

5월 24일(土) 한국 연합우주 개발자 모임(FediDev KR)에서 두 번째 스프린트 모임을 개최합니다! 장소는 뚝섬역 5번 출구쪽에 위치한 튜링의 사과(@TuringAppleDev튜링의 사과)입니다.

참고로 스프린트 모임이란 함께 모여서 오픈 소스 코딩을 하는 자리인데, 한국 연합우주 개발자 모임의 스프린트에서는 새로운 연합우주 서비스나 앱을 개발하거나, 번역이나 문서에 기여하는 등 연합우주와 관련된 다양한 오픈 소스 활동을 모여서 함께 합니다. 지난 스프린트 모임의 기록을 스프린트 블로그(@sprints.fedidev.kr한국 페디버스 개발자 모임)에서 살펴보실 수 있습니다.

저는 그날 Fedify, Hollo, Hackers' Pub에 기여하시고자 하는 분들을 옆에서 도와드릴 예정입니다. Fedify, Hollo, Hackers' Pub에 기여해보고 싶었던 분들이 계시다면 모임에 참가하여 저와 함께 스프린트를 해보는 것도 좋을 것 같습니다.

이번 모임에 관심이 있으신 분은 행사 신청 페이지를 참고하시기 바랍니다.

7
1
3

안녕하세요, 업으로 프로그래밍을 하고 있는 컴퓨터 학부생 김무훈입니다.
현재 3년차 웹 프론트엔드 개발자로서, 다가오는 7월부터 함께할 정규직 포지션을 적극적으로 찾고 있습니다.

최근 학과 사무실에서 졸업 요건을 확인한 결과, 전공 필수 한 과목전공 선택 2학점(총 5학점)이 남아있음을 확인했습니다.
본래는 다음 2학기까지 수료 후 내년 2월에 졸업할 예정이었으나, 교수진과 상의한 결과 취업 및 재직이 확정된다면 수업 이수 방식을 보다 유연하게 결정할 수 있다는 긍정적인 답변을 받아 적극적으로 조기 취업을 추진하게 되었습니다.

이는 전공 필수 과목의 경우에만 해당이 되는 문제이고, 전공 선택 2학점의 경우 앞으로의 여름 학기 현장 실습 또는 다음 학기에 개설되는 하나의 원격 강의로 대체하여 문제가 없는 상태입니다.

지금까지의 업무 경험과 프로젝트는 아래의 포트폴리오에서 확인하실 수 있습니다.
📌 경력기술서 겸 포트폴리오 페이지: https://www.frontend.moe/portfolio/

좋은 인연을 찾을 수 있도록, 많은 관심과 연락 부탁드립니다!

8
3

예전부터 생각하던 건데, git reset --hard를 인자 없이 쓰면 git stash로 동작하거나, 아니면 적어도 인자 없이 썼을 때 오류가 나게끔 설정할 수 있었으면 좋겠다. 별 생각 없이 날려도 괜찮겠지 싶어서 git reset --hard 쳤다가 몇 분 뒤에 후회하는 경우가 종종 있다.

2

Hackers' PubにLLMを活用した記事の自動翻訳機能が追加されました。これにより、Hackers' Pubに投稿された英語や韓国語の記事を日本語で閲覧できるだけでなく、日本語で書いた記事を海外の読者に紹介する事も可能に成りました。

なお、Hackers' Pubは招待制で運営されています。ご興味のある方は、DMでメールアドレスを教えていただければ、招待いたします。

5

Juntai Park shared the below article:

Hackers' Pub 업데이트: LLM 기반의 게시글 번역 기능

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

LLM 기반의 게시글 번역 기능이 추가되었습니다. 우선, 자신이 쓴 게시글이 LLM을 이용해 번역되는 것을 허용하려면, 게시글 공개 설정에서 “LLM 기반 자동 번역 허용” 옵션을 켜 주셔야 합니다. 기존 게시글은 모두 이 옵션이 꺼져 있습니다만, 새로 쓰는 게시글의 경우 기본적으로 켜져 있습니다.

한국어판 게시글 공개 설정 페이지에 추가된 “LLM 기반 자동 번역 허용” 옵션
한국어판 게시글 공개 설정 페이지에 추가된 “LLM 기반 자동 번역 허용” 옵션
영어판 게시물 공개 설정 페이지에 추가된 “Allow LLM-powered automatic translation” 옵션
영어판 게시물 공개 설정 페이지에 추가된 “Allow LLM-powered automatic translation” 옵션

위와 같이 옵션을 켜 준 게시글은 위쪽에 다음과 같이 “다른 언어로 읽기” 메뉴가 표시되게 됩니다. 이 메뉴에 나오는 언어 목록은 언어 설정에서 정할 수 있습니다.

게시글 첫 부분에 표시되는 “다른 언어로 읽기” 메뉴 (한국어판)
게시글 첫 부분에 표시되는 “다른 언어로 읽기” 메뉴 (한국어판)
게시글 첫 부분에 표시되는 “Read in other languages” 메뉴 (영어판)
게시글 첫 부분에 표시되는 “Read in other languages” 메뉴 (영어판)

이 중에서 이미 번역이 완료된 언어는 바로 표시되지만, 아직 번역이 완료되지 않은 언어의 경우, 아래와 같이 기다리라는 메시지가 뜨게 됩니다. 게시글의 분량에 따라 번역 시간은 차이가 나지만, 짧으면 30초에서 길면 5분 정도 걸립니다.

게시글이 번역중이라는 메시지 (한국어판): “이 게시글은 영어에서 한국어로 번역중입니다. 번역이 완료될 때까지 기다려 주세요.”
게시글이 번역중이라는 메시지 (한국어판): “이 게시글은 영어에서 한국어로 번역중입니다. 번역이 완료될 때까지 기다려 주세요.”
게시글이 번역중이라는 메시지 (영어판): “This article is being translated from Korean to English. Please wait until the translation is complete.”
게시글이 번역중이라는 메시지 (영어판): “This article is being translated from Korean to English. Please wait until the translation is complete.”

번역이 완료되면, 아래와 같이 메시지가 바뀝니다.

게시글의 번역본 상단에 뜨는 메시지 (한국어판): “이 게시글은 영어에서 한국어로 번역되었습니다.”
게시글의 번역본 상단에 뜨는 메시지 (한국어판): “이 게시글은 영어에서 한국어로 번역되었습니다.”
게시글의 번역본 상단에 뜨는 메시지 (영어판): “This article has been translated from Korean to English.”
게시글의 번역본 상단에 뜨는 메시지 (영어판): “This article has been translated from Korean to English.”

번역 기능은 제가 Hackers' Pub을 맨 처음 구상할 때부터 핵심 기능으로 고려하고 있던 것이었습니다. 소프트웨어 프로그래머로서 일정 수준 이상 성장하기 위해서는 반드시 영어를 배워야만 하는 불합리함이나 그리고 일본어나 중국어 등 영어가 아닌 언어로 쓰인 다양한 자료에 대부분의 외국인은 접근하지 못한다는 아쉬움을 오래 전부터 느꼈기 때문입니다. 다행히 얼마 전부터 LLM의 번역 품질이 아주 좋아졌고, 이를 활용하여 꽤 괜찮은 품질의 번역 기능을 Hackers' Pub 같은 작은 웹사이트에서도 구현할 수 있게 되었네요.

참고로 현재 번역에 쓰이는 모델은 Claude Sonnet 3.7입니다. 저렴하다고는 할 수 없는 모델인데요. 시범적으로 운영해 보고, 비용이 너무 부담된다고 여겨지면 Gemini 2.5 Flash 같은 다른 모델로 전환하는 것도 고려하고 있습니다.

아무튼, 모처럼 추가한 번역 기능이니 많은 분들이 유용함을 누리셨으면 좋겠습니다.

아래는 제가 샘플로 미리 만들어 둔 번역본들입니다:

  • Ditch the DIY Drama: Why Use Fedify Instead of Building ActivityPub from Scratch? (영어) → 〈DIY 드라마는 그만: 왜 ActivityPub을 처음부터 구축하는 대신 Fedify를 사용해야 할까요?〉 (한국어)
  • 〈애플리케이션 개발 측면에서 본 Drizzle ORM 대 Kysely 비교〉 (한국어) → 「アプリケーション開発の観点から見たDrizzle ORMとKyselyの比較」 (일본어)
  • 〈deno-task-hooks: Git 훅을 Deno 태스크로 쉽게 관리하기〉 (한국어) → deno-task-hooks: Easily Manage Git Hooks as Deno Tasks (영어)
  • Browser-Native Translation and Language Detection APIs Coming Soon (영어) → 〈브라우저 네이티브 번역 및 언어 감지 API 곧 출시 예정〉 (한국어)
Read more →
6
10

개인적으로는 Node.js 호환성만 좇고 있는 최근의 Deno 업데이트가 (현실적으로 쓰기 편해지는 것은 맞지만) 조금 실망스럽긴 하다. 그냥 처음의 기조 그대로 밀어붙였다면… 뭐, 오히려 지금보다도 덜 쓰였겠지? 어려운 문제긴 하네…

4

요즘 잡일은 AI 시키고, 그사이 어려운 일을 AI랑 힘을 합쳐 해결해야하는 시대인데, 내가 하루종일 어려운일을 할 체력이 없어서 머리비우고 할수있는 잡일도 일정량 직접 한다. 파일 상하차라던가.

5

부끄럽지만 typst로 깎은 이력서와 포트폴리오를 공개합니다: https://github.com/gidongkwon/resume

게임 클라이언트에서 웹 프론트엔드로 커리어 전환을 하는 단계에 있습니다.
혹 피드백주실 것이 있다면 언제든지 좋아요...!

직링크는 아래:
이력서 - https://gidongkwon.github.io/resume/resume-gidongkwon.pdf
포트폴리오 - https://gidongkwon.github.io/resume/portfolio-gidongkwon.pdf

4

.github/copilot-instructions.md, .cursorrules, .windsurfrules, CLAUDE.md… 이것 말고도 많이 있을텐데, 어차피 들어가야 하는 내용은 다 거기서 거기. 지금은 한 파일에 적고 심볼릭 링크로 같은 곳을 바라보게 하고 있지만, .editorconfig처럼 그냥 어떤 식으로든 표준화가 되었으면 좋겠다.

1

Windsurf 커서보다 불편하다고 계속 불평했는데, 그냥 과제하나 맡기고 에이전틱하게 쓰니까 똑같이 잘한다. AI 에디터에서 UI 개선한다고 아웅다웅하는게 참 부질없는거 같다. 빅테크에서 모델 개선하는동안 가만히 놀수는 없으니까 하는건가...

2
4

이번 변경으로 홈 화면에 추가로 해커즈펍을 설치하면 android, iOS 양쪽 모두, 단독 앱인 것 같은 느낌으로 쓸 수 있게됩니다. 다만, 이메일의 로그인 링크가 설치 된 쪽으로는 안열리는 문제가 있으니 미리 로그인 된 상태에서 설치를 하셔야 곤란하지 않습니다.

4
4

엔드포인트 솔루션이나 네트워크 장비를 운영하다 보면 그 솔루션 본연의 역할을 지고지순(?) 하게 지키기보다는 뭔가 민원을 해결하는 예외 처리에 리소스를 투입할 때가 많은데 그럴 때마다 뭔가 법을 어긴 것 같고 마음이 안 좋다.

7

Hackers' Pub에 GraphQL API를 추가하고 있습니다. https://hackers.pub/graphql가 GraphQL 엔드포인트입니다. 아직 인증 기능도 없고 노출된 노드도 얼마 없습니다만, 차차 추가해 나갈 예정입니다. 다음은 예시 쿼리입니다:

{
  actorByHandle(handle: "@hongminhee@hackers.pub") {
    uuid
    iri
    type
    handle
    instance {
      host
      software
      softwareVersion
    }
    name
    bio
    avatarUrl
    url
  }
}

Mastodon 호환 API를 구현할 계획에 대해 문의 주시는 분들이 종종 계십니다만, 아마도 Hackers' Pub은 앞으로도 Mastodon 호환 API를 구현하지는 않을 것 같습니다. 개인적으로 Mastodon 호환 API가 사용성이 많이 떨어진다고도 생각하고, 이미 Hackers' Pub 고유의 기능들 가운데 Mastodon 호환 API로 표현 불가능한 것들이 좀 있기 때문입니다.

장기적으로는 GraphQL을 이용해 웹 프런트엔드도 크게 개선하고, 모바일 앱까지 만드는 걸 염두에 두고 있습니다.

7

Hackers' Pub에 GraphQL API를 추가하고 있습니다. https://hackers.pub/graphql가 GraphQL 엔드포인트입니다. 아직 인증 기능도 없고 노출된 노드도 얼마 없습니다만, 차차 추가해 나갈 예정입니다. 다음은 예시 쿼리입니다:

{
  actorByHandle(handle: "@hongminhee@hackers.pub") {
    uuid
    iri
    type
    handle
    instance {
      host
      software
      softwareVersion
    }
    name
    bio
    avatarUrl
    url
  }
}
4
3
3
8
1
0
0
3
9

3년차 웹 프런트엔드 개발자입니다. 잠시 10주 여름 방학 동안 계약직으로 일할 수 있는 직장을 찾고 있습니다. (6월 마지막 주부터 8월 마지막 주) http://frontend.moe/portfolio/

올해 2학기까지 수료하면 졸업 예정이라, 학부 졸업 이후 정규직 전환 조건으로도 희망하고 있습니다.

4
6
9

친구가 외국 반도체회사에 다니는데 이름만 들으면 다 아는 세계에서 손꼽히는 회사다. 1년 전쯤에, 친구가 자기 팀에서 예전부터 쓰고있는 시뮬레이션 코드가 너무 복잡해서 리팩토링 하고 싶다고 나를 찾아왔다. 한 2, 3000줄 되는 Numpy 코드였다.

나는 시뮬레이션의 의미 자체는 전혀 이해를 못하니(이래서 보안문제도 익스큐즈 할수 있었을 것이다), 그냥 코드의 모양만 보고 이상한 부분을 조금씩 고쳐나갔다. 그... 전형적인 물리학자들의 실험실 코드였다(코드를 못짜는건 이해를 하는데, 거기에 대해 한치의 부끄러움도 느끼지 않는다는 점이 뒷목을 잡게 만든다). Numpy 함수도 제대로 활용을 못해놨길래, 나도 Numpy 잘 못쓰지만 대충 이런 함수가 아마 있겠지... 하고 검색해서 찾아내서 교체하고 이런걸 반복했다.

이것저것 고친 다음에 잘돌아가나 한번 실행을 해봤는데, 이럴수가. 시뮬레이션이 1000배 빨라졌다. 아니 뭐, 한 2배 3배 빨라졌으면 내 솜씨라고 자부할텐데, 1000배 빨라진거는 그냥 원래 코드가 똥통이었다고 해석할수 밖에 없다. 구라안치고 정말 1000배다. 1000배의 성능향상의 보답으로 나는 교촌치킨웨지콤보세트를 현장에서 받아먹었다.

그 이후에 어떤 일이 있었냐. 기존 시뮬레이션 코드로는 하루에 시뮬레이션을 2, 3번정도밖에 돌리지 못했는데, 1000배 빨라지고 나니까 결과가 수십초만에 나오니 하루에 수백번 돌릴수 있게 된것이다(내가 고친 코드가 전부는 아니어서 1000배 향상은 아닌데, 가장 큰 병목이긴 해서 결국 100배 이상이라는 듯). 그때부터 100배 많아진 데이터를 처리하기 위한 인프라가 필요해졌다. 그래서 거기 개발팀이 데이터베이스와 데이터 파이프라인 구축을 시작하게 되었다고 한다. 그 팀에서는 일종의 특이점이 시작된것이다;;

결론: 교촌치킨웨지콤보 세트는 개맛있었다.

28
2
0
1

사람이라는 게 참 묘하다. 서비스 개발을 시키면 플랫폼 엔지니어링을 하고 싶고, 플랫폼 엔지니어링을 시키면 서비스 개발을 하고 싶어한다. 둘 다 해야 할 때는 이론 공부를 하고 싶다고 하고, 이론 공부를 시키면 서비스 개발을 하고 싶다고 한다.

8
2

토요일/일요일 각각 카테고리를 나눠서 작업하게 될 것 같습니다.

토요일

  • Fedify를 이용해서 마이크로블로그를 만드는 튜토리얼을 완주하는 것을 도전해보려고 합니다.

이미 postgres 기반으로 데이터베이스 세팅해서 만들고 있는게 있긴 하지만, Vibe coding으로 쭉 이어나가다가 Fedify를 제대로 활용하는 방법에 대해 알지 못한 상황이라 중간에 삑사리나서 헤매고 있는 상황입니다.

큰 욕심은 안내고 천천히 튜토리얼을 정주행하면서 전반적으로 한 사이클 돌고 감을 잡는 것에 의미를 둘 생각입니다. 예제는 sqlite를 쓰고 있지만, 여기서도 배리에이션 안주고 최대한 예제를 충실히 따르면서 완주하고 배리에이션은 천천히 주려고 합니다.

일요일

  • 지난주말에 작업했던 뉴스레터 서비스를 마저 작업할 것인데요. django 기반의 개발환경은 이미 세팅 완료 했습니다.

django admin에서 아티클 url을 수동으로 입력하고 langchain 기반으로 요약하는 기능 PoC로 나마 구현해보려고 합니다.



RE: https://hackerspub-ask-bot.deno.dev/message/0196468d-7fd8-7447-b2a6-e974c49e42b8

5
6

책에 나온 예제를 따라 하는데 결과가 책과 달라 이상했다. 코드를 한참 보다가 결국 원인을 찾았다. if 분기의 결과를 반대로 적었던 것이다.

repeatUntil
  :: Monad m
  => m chunk
  -> (chunk -> Bool)
  -> (chunk -> m ())
  -> m ()
repeatUntil getChunk isEnd f =
  repeatUntilNothing getChunkMaybe f
  where
    getChunkMaybe = do
      chunk <- getChunk
      if isEnd chunk
        then return (Just chunk)
        else return Nothing

청크가 없으면 Nothing을 리턴해야 하는데 반대로 적어버린 것이다. 덕분에 시간이 모자라서 남은 연습 문제 하나는 내일로 미뤄야겠다.

5

Deno는 console.log()에서 %c 형식 지정자를 통해 간단한 CSS를 사용할 수 있다.

console.log("%cHello World", "color: red");
console.log("%cHello World", "background-color: blue");
console.log("%cHello World", "text-decoration: underline");
console.log("%cHello World", "text-decoration: line-through");
console.log("%cHello World", "font-weight: bold");
console.log("%cHello World", "color: red; font-weight: bold");
console.log("%cHello %cWorld", "color: red", "color: blue");
console.log("%cHello World", "color: #FFC0CB");
console.log("%cHello World", "color: rgb(255, 192, 203)");

위 코드는 아래처럼 출력된다:

Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
4
3

I've been wrestling with implementing content support in Hackers' Pub, our -powered platform for software engineers.

While ActivityPub theoretically supports multilingual content through the contentMap property, the reality is that most server implementations (Mastodon, Misskey, etc.) don't properly handle this content as of April 2025. This creates a significant challenge for us.

We want our users to share their knowledge in multiple languages, but we need to ensure compatibility with existing ActivityPub servers. I'm considering several approaches:

  1. Creating separate posts for each language with clear language indicators, linking them through inReplyTo relationships (so translations appear as replies to the original post)
  2. Using the primary language in content while storing translations in contentMap
  3. Adding "View in other languages" links at the bottom of each post
  4. Implementing inline language dividers that degrade gracefully on non-supporting servers, for example:
    <div lang="en">
      <h3>English</h3>
      <p>This is the English content…</p>
    </div>
    <hr>
    <div lang="ko">
      <h3>한국어</h3>
      <p>한국어 내용입니다…</p>
    </div>

I'm leaning toward a hybrid approach—showing content in the user's preferred language when possible while providing easy access to other language versions.

Has anyone tackled this problem effectively? I'd love to hear about your experiences or ideas for making multilingual content work well in the fediverse, especially when dealing with server implementations that don't fully support ActivityPub's multilingual features.

11
0
0