Juntai Park

@arkjun@hackers.pub · 47 following · 44 followers

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

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

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

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

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을 이용해 웹 프런트엔드도 크게 개선하고, 모바일 앱까지 만드는 걸 염두에 두고 있습니다.

6

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
  }
}
3

長年の経験を持つエンジニア。何でもすぐにこなせるように見えるかもしれないが、実際には動きは遅く、時代の変化に完全には対応しきれず、過去の考え方を引きずっている部分もある。それでも古い思考を壊し、前に進もうと努力し続けている。

1
1
3
3
8
6
1
0
0
3
3
4
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배 많아진 데이터를 처리하기 위한 인프라가 필요해졌다. 그래서 거기 개발팀이 데이터베이스와 데이터 파이프라인 구축을 시작하게 되었다고 한다. 그 팀에서는 일종의 특이점이 시작된것이다;;

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

27
2
0

会社の業務用PCをUbuntuデスクトップに切り替えようとしたけれど、結局は諦めることにした話。

  1. 社内メッセンジャーがWindowsとMacにしか対応していない。Wineで動かしてみたところ、表示は問題なくても、韓国語の入力が遅かったり、頻繁にクラッシュしたりして実用的ではなかった。

  2. VSCodeやCursorなど一部のアプリで、韓国語と英語の切り替えができなかったり、韓国語の入力がスムーズにできなかったりする。韓国語入力に関する問題は昔からあるが、2024年版では改善されていると期待していた。けれど、現実はそう甘くなかった。

  3. 細かい不便も色々とある。マルチモニターを3台使っているが、モニターの位置設定がたまにリセットされてしまう(ログイン画面では必ず初期化される)。

個人的には、素直にWindows上でWSLを使った方が精神衛生上よさそうだという結論に至った。

こうなったら、いっそMac専用で行くしかない。

1

회사 업무 피씨를 우분투 데스크탑으로 바꿔 보려다 포기한 얘기

  1. 회사메신저가 윈도, 맥에서만 동작함. wine 으로 시도해 본 결과, 보는 건 잘 되는데 한글 쓰기 동작이 느리거나 크러시가 자주 발생함.

  2. VSCode, Cursor 를 비롯한 일부 프로그램에서 한영전환이 안되거나, 한글 입력이 매끄럽지 않다. 한글입력 문제는 오래전부터 있어와서 24년 버전 쯤에서는 잘 될 거라 믿었으나, 그렇지 않았다.

  3. 소소하게 불편한 일부 요소들. 다중 모니터 3대 환경에서, 다르게 설정된 모니터 위치값이 가끔 초기화 된다. (로그인 화면에서는 무조건 초기화된 상태)

개인적으로는 그냥 윈도에 WSL 로 쓰는 게 내 정신건강에 이롭겠다는 결론에 도달했다.

이렇게 된 이상, 맥 전용으로 간다.

2

뒷북인지도 모르겠습니다만, 스레드에서 해커즈펍에 양방향 링크 표시가 잘 나오네요. 다만, 해커즈펍에서 스레드 링크의 양방향 링크 표시가 사라졌습니다. 😆

스레드 프로필해커스펍 프로필
1
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

WindowsとMacを併用しながら開発してるんだけど、

  • Windowsでは実質的にWSLでUbuntu上でしか作業してないんだよね。
  • だったら、いっそWindowsを捨ててUbuntu Desktopに完全移行した方が効率いいんじゃないかと思い始めてる。
  • Windows専用のアプリが必要な時は、たぶんWineで何とかなるんじゃないかなーって。
1

윈도와 맥을 혼용하면서 개발을 하고 있는데

  • 윈도에서는 WSL 로 사실상 개발 업무를 우분투 기반으로만 하고 있어서,
  • 그냥 윈도를 밀고 우분투 데스크탑을 깔아서 쓰는게 낫겠다 싶은 생각이 들었다.
  • 윈도전용 프로그램은 그냥 wine 인가(?) 그거 쓰면 되지 않을까 싶어서...
3

책에 나온 예제를 따라 하는데 결과가 책과 달라 이상했다. 코드를 한참 보다가 결국 원인을 찾았다. 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
2

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

4日間のテスト支援が終了し、常駐先での業務も無事に完了しました。お世話になった社員さんと、自腹で焼肉(サムギョプサル)を食べながらお疲れ様会をしました。一緒に頑張ってくれた仲間への感謝と、自分へのご褒美です。😎

明日からは本社に復帰します。

Java(Spring)のプロジェクトが一段落し、これからはまたNode(Nest、Next)ベースのプロジェクトが始まります。

中小企業の中年エンジニア歴、いつの間にか21年目。今日もプロジェクトと共に生きています。

2

4일간의 테스트 지원 종료, 파견종료로 고객사를 나오면서, 함께 한 직원과 내돈내산으로 저녁을 먹었다. 파견나와 고생한 직원에 감사와, 고생한 나에 대한 셀프 보상으로 삼겹살 먹음. 😎

내일부터 다시 본사로 출근합니다.

Java (Spring) 프로젝트 끝. 다시 Node (Nest, Next) 프로젝트 시작합니다. 중년의 중소기업 개발자는 어느덧 21년째, 여전히 프로젝트를 먹고 삽니다.

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.

10
0
0

소프트웨어 엔지니어를 위한 연합우주 서비스 Hackers' Pub을 알고 계신가요? 저희가 특별히 중요시하는 것은 다른 플랫폼과는 조금 다른 행동 강령입니다.

저희는 현실 세계의 불평등이 온라인 공간에도 그대로 반영된다는 사실을 인식하고 있습니다. 그래서 “모든 사람을 동등하게 대우”한다는 표면적인 중립성이 아닌, 구조적 불평등에 적극적으로 대응하는 자세를 분명히 하고 있습니다. 이러한 접근의 일환으로, 차별적 발언과 차별에 대항하는 발언을 구분합니다. 이를 통해 “차별은 안 된다”는 명목 하에 차별 비판까지 동일시하는 “양비론”의 함정을 피할 수 있다고 생각합니다.

기술 커뮤니티에서 자주 볼 수 있는 문제로는 특정 기술 선택에 대한 비판이나 기술 수준에 따른 계층화가 있습니다. “이것도 모르냐?”는 태도는 학습을 방해할 뿐입니다. 저희는 초보자와 경험자 모두 동등하게 존중받는 환경 조성을 중요시합니다.

또한, 연합우주의 핵심 가치로 프라이버시가 있지만, Hackers' Pub에서는 특히 익명성의 권리를 강조합니다. 타인의 신원을 특정하려는 행위나 익명이라는 이유로 차별하는 것을 금지함으로써, 안심하고 참여할 수 있는 공간을 지향합니다.

이러한 행동 강령 자체도 완벽하지 않으며, 커뮤니티와 함께 발전해 나가는 것이라고 생각합니다. 모든 구성원이 개선안을 제안할 수 있는 체계를 마련함으로써, 더 나은 환경을 함께 만들어 나가고자 합니다.

자세한 내용은 Hackers' Pub 행동 강령을 참조해 주세요. 연합우주에서 더 건강한 기술 커뮤니티를 함께 키워나가지 않으실래요?

ソフトウェアエンジニア向けのフェディバースサービスHackers' Pubをご存知でしょうか?私たちが特に大切にしているのは、他のプラットフォームとは少し異なる行動規範です。

私たちは現実社会の不平等がオンライン空間にも反映されることを認識しています。そのため、「すべての人を同じように扱う」という表面的な中立性ではなく、構造的不平等に積極的に対応する姿勢を明確にしています。このアプローチの一環として、差別的発言と差別に対抗する発言を区別しています。これにより、差別への批判まで同列に扱ってしまう「両極端主義」の落とし穴を避けられると考えています。

技術コミュニティでよく見られる問題として、特定の技術選択への批判や技術レベルによる階層化があります。「これも知らないの?」という態度は学びを阻害するだけです。私たちは初心者も経験者も同じく尊重される環境づくりを重視しています。

また、フェディバースの核心的価値としてプライバシーがありますが、Hackers' Pubでは特に匿名性の権利を強調しています。他者の素性を特定しようとする行為や、匿名であることを理由とした差別を禁止することで、安心して参加できる場を目指しています。

こうした行動規範自体も完璧ではなく、コミュニティとともに進化するものだと考えています。すべてのメンバーが改善案を提案できる仕組みを整えることで、より良い環境を共に創っていきたいと思います。

詳細はHackers' Pubの行動規範をご覧ください。フェディバースでより健全な技術コミュニティを一緒に育てていきませんか?

※Hackers' Pubは現在招待制となっています。ご興味のある方はコメントや私(@hongminhee洪 民憙 (Hong Minhee))へのDMでメールアドレスをお知らせください。

3

소프트웨어 엔지니어를 위한 연합우주 서비스 Hackers' Pub을 알고 계신가요? 저희가 특별히 중요시하는 것은 다른 플랫폼과는 조금 다른 행동 강령입니다.

저희는 현실 세계의 불평등이 온라인 공간에도 그대로 반영된다는 사실을 인식하고 있습니다. 그래서 “모든 사람을 동등하게 대우”한다는 표면적인 중립성이 아닌, 구조적 불평등에 적극적으로 대응하는 자세를 분명히 하고 있습니다. 이러한 접근의 일환으로, 차별적 발언과 차별에 대항하는 발언을 구분합니다. 이를 통해 “차별은 안 된다”는 명목 하에 차별 비판까지 동일시하는 “양비론”의 함정을 피할 수 있다고 생각합니다.

기술 커뮤니티에서 자주 볼 수 있는 문제로는 특정 기술 선택에 대한 비판이나 기술 수준에 따른 계층화가 있습니다. “이것도 모르냐?”는 태도는 학습을 방해할 뿐입니다. 저희는 초보자와 경험자 모두 동등하게 존중받는 환경 조성을 중요시합니다.

또한, 연합우주의 핵심 가치로 프라이버시가 있지만, Hackers' Pub에서는 특히 익명성의 권리를 강조합니다. 타인의 신원을 특정하려는 행위나 익명이라는 이유로 차별하는 것을 금지함으로써, 안심하고 참여할 수 있는 공간을 지향합니다.

이러한 행동 강령 자체도 완벽하지 않으며, 커뮤니티와 함께 발전해 나가는 것이라고 생각합니다. 모든 구성원이 개선안을 제안할 수 있는 체계를 마련함으로써, 더 나은 환경을 함께 만들어 나가고자 합니다.

자세한 내용은 Hackers' Pub 행동 강령을 참조해 주세요. 연합우주에서 더 건강한 기술 커뮤니티를 함께 키워나가지 않으실래요?

11
0
0
5

하스켈 코드 포매터 stylish-haskell을 잘 쓰고 있습니다. Vim에서 :%!stylish-haskell이라고 입력하는 방식으로 사용하는데요, 코드에 문제가 있을 경우 코드 전체가 지워지고 다음과 같은 문자열로 대체됩니다.

<string>:1:18: error: [GHC-58481] parse error on input `!'

Vim에서 작업 중이므로 단순히 u를 눌러서 취소하면 되긴 합니다만 혹시 다른 방법이 있을까요?

0

지금까지 Hackers' Pub은 반드시 이메일을 통해 로그인 링크를 수신하는 식으로만 로그인이 가능했는데, 사실은 많이 번거로웠죠?

이를 해결하기 위해 Hackers' Pub에 패스키 기능을 추가했습니다. 패스키 추가는 설정패스키 페이지에서 할 수 있으며, 패스키가 등록된 기기 및 브라우저에서는 로그인 페이지에서 자동적으로 패스키를 사용할 것인지 묻는 창이 뜨게 됩니다.

Hackers' Pub의 패스키 설정 페이지. 위쪽에는 패스키 등록을 위한 폼이, 아래쪽에는 등록된 패스키를 나열한 표가 보인다.Hackers' Pub의 로그인 페이지. 우측 상단에 패스키를 사용하여 로그인할 것인지 묻는 창이 보인다.
0

지금까지 Hackers' Pub은 반드시 이메일을 통해 로그인 링크를 수신하는 식으로만 로그인이 가능했는데, 사실은 많이 번거로웠죠?

이를 해결하기 위해 Hackers' Pub에 패스키 기능을 추가했습니다. 패스키 추가는 설정패스키 페이지에서 할 수 있으며, 패스키가 등록된 기기 및 브라우저에서는 로그인 페이지에서 자동적으로 패스키를 사용할 것인지 묻는 창이 뜨게 됩니다.

Hackers' Pub의 패스키 설정 페이지. 위쪽에는 패스키 등록을 위한 폼이, 아래쪽에는 등록된 패스키를 나열한 표가 보인다.Hackers' Pub의 로그인 페이지. 우측 상단에 패스키를 사용하여 로그인할 것인지 묻는 창이 보인다.
9
0
3

客先に来ると、いつもよりも2倍くらいのペースで体力が削られていく。そりゃそうだ。普段の2倍くらい喋って、その合間にソースコードを見たり、タスクを整理したりしていると、「あれ、自分今日何してたっけ…?」って思った頃にはもう一日が終わってる。

今週は、たぶんずっとこんな感じになりそう。

QAテストのサポートで客先に常駐しているエンジニアの、ちょっとしたつぶやき。

2

[1]에서 문자열을 다룰 때 StrictTextBuilder의 성능을 비교하는 예제에서 Builder의 성능이 더 좋다고 설명한다. 그런데 내 PC에서 같은 코드를 실행했는데 결과가 반대로 나왔다. 이상해서 문자열 길이를 늘렸더니 책에서 말한대로 나왔다.

ghci> concatSpeedTest 50000
0.004451s
0.04721s
ghci> concatSpeedTest 500000
0.062405s
0.023449s
ghci> concatSpeedTest 5000000
0.511402s
0.205632s

  1. Chris Martin, Julie Moronuki, 《Sockets and Pipes》 ↩︎

3
5
0

아무래도 앱 개발은 혼자선 하면 안되고 트러블슈팅을 할수 있도록 팀을 갖추고 해야하는거 같다. 추잡한 문제들이 너~무 많다. 하지만 이런 허접한 교훈을 얻고 관둘순 없으니 어떻게든 혼자서 마저 나아가야한다.

7
4
1

GitHub Actions 워크플로우로 도커 이미지 빌드를 자동화하기 위한 일요일 밤의 삽질... 러너와 라즈베리파이의 플랫폼이 다르다는 걸 간과했다. 타겟 플랫폼에 그냥 linux/arm64를 추가해서 멀티 플랫폼 빌드를 할 수는 없고, QEMU으로 에뮬레이션해서 빌드해야 했다.

GitHub Actions 워크플로우 실행 이력. 0.0.3 버전 실패, 0.0.4 버전 실패, 0.0.5 버전 실패, 0.0.6 버전 성공.

@parksbSimon Park Hackers' Pub도 Mac mini에서 돌아가고 있어서 linux/arm64 플랫폼으로 이미지를 빌드해야 했는데, 처음에는 GitHub Actions에서 QEMU 써서 하다가 너무 오래 걸려서 나중에는 GitHub Actions 러너 자체를 ubuntu-24.04-arm로 바꿔버렸습니다…

3