https://app.daily.dev/posts/i-built-a-terminal-based-portfolio-you-can-access-via-ssh-4qn79zov9
daily.dev 에서 우연히 본 터미널로 만든 포트폴리오.
ssh terminalfolio.xyz
명령으로 접근해 볼 수 있는데, CLI 감성이 나쁘지 않네요.
덤으로 CLI 에서 사용하는 React 라이브러리 Ink가 있다는 것도 처음 알았네요.
@arkjun@hackers.pub · 65 following · 71 followers
中年의 中小企業 開發者, 90年代 Console Gamer. 좋은 하루를 繼續해 나아간다. 좋은 하루가 모이면 좋은 人生이 된다.
韓国人のプログラマー、40代、小学生の息子とゲームするのが幸せ😃💕龍が如く 、ゼルダの伝説、マリオ、ピクミン好き
「いい1日を続ける」
いい1日を続けていけば、いい人生になる!
https://app.daily.dev/posts/i-built-a-terminal-based-portfolio-you-can-access-via-ssh-4qn79zov9
daily.dev 에서 우연히 본 터미널로 만든 포트폴리오.
ssh terminalfolio.xyz
명령으로 접근해 볼 수 있는데, CLI 감성이 나쁘지 않네요.
덤으로 CLI 에서 사용하는 React 라이브러리 Ink가 있다는 것도 처음 알았네요.
어제 튜링의 사과를 처음 구경했습니다. 귀인들 만나느라 이용은 안하고 구경만. 조금 과장해서 얘기하면, 다른 공유 오피스와는 다르게 PC방에 개발자 모인 것 같은 느낌이었습니다. 다른 오피스들처럼 조용하고, 조금은 생기 없는 풍경이 아니라, 상대적으로 소음도 좀 있고, 활기가 있어 보여 의외였습니다. 장소 오너분들도 개발자로 알고 있는데, 개발자 이해도가 높은 게, 영향이 있는 것 아닐까요?
(삶에 찌든 사람들 모인 PC방 말고, 젊은이들이 즐겁게 노는 모습의 PC방입니다.)
@lionhairdino 가본 적은 없지만 여기서 몇번 언급되는 걸 보고 있자니 왠지 친근한 느낌도 들고, 저도 언젠가는 가보고 싶네요.
@arkjunJuntai Park 멋지네요! 사실, 번역 관련해서 사내에서 테스트를 해본적이 있는데 Gemini가 번역을 특출나게 잘 하더라구요. OpenAI는 Response API가 편해서 그냥 선택한 것 이였습니다 ㅎㅎ
@kkungMinyoung Jeong 글 읽을 때의 번역은 여러 브라우저 확장으로 잘 쓰고 있었는데, 글쓰기를 이렇게 쉽고 편하게, 좋은 퀄리티로 다른 언어로 변환하니, 저에게는 정말 신세계네요! 감사합니다. 😂 (내친김에 일본어용도 살짝 바꿔서 아주 유용하게 쓰고 있습니다.)
일전에 @kkungMinyoung Jeong 님께서 올려주신 Vibe Writing 글에, 숟가락을 얹어보았습니다.
HammerSpoon 에서 쓰는 lua 코드에서 OpenRouter 의
google/gemini-2.0-flash-001
모델로 살짝 수정했습니다.
바로바로 한영, 영한 변환하니까, 너무 편하고 좋네요. 다른 언어도 추가하고 그외 다른 활용 요소들도 생각 나서, 앞으로도 이것저것 만져볼 것 같네요.
local config = {
open_router_api_key = "sk-...",
open_router_api_url = "https://openrouter.ai/api/v1/chat/completions",
model = "google/gemini-2.0-flash-001",
}
local function callOpenRouter(text, callback)
if not config.open_router_api_key or config.open_router_api_key ~= "sk-..." then
hs.alert.show("Config error: Please set your open_router_api_key in modules/ko-en.lua")
return
end
local instruction = "입력된 문장이 영어일 경우 한국어로, 한국어일 경우 영어로 변환해줘. 의미를 모국어 사용자가 자연스럽게 받아들일 수 있게 정확하고 유창하게 전달하고, 불필요한 문장을 생략하여 명료하게 작성해. 번역어 외의 다른 문장을 추가하지 말고 번역 그 자체만 반환해."
local payload = {
model = config.model,
messages = {
{role = "assistant", content = instruction},
{role = "user", content = text}
},
max_tokens = 4096,
stream = false
}
local request_body = hs.json.encode(payload)
local headers = {
["Content-Type"] = "application/json",
["Authorization"] = "Bearer " .. config.open_router_api_key,
["HTTP-Referer"] = "https://hammerspoon.ai",
["X-Title"] = "Hammerspoon Translator"
}
hs.http.asyncPost(config.open_router_api_url, request_body, headers, function(status, response, _)
if status == 200 then
local success, data = pcall(hs.json.decode, response)
if success and data.choices and #data.choices > 0 and data.choices[1].message and data.choices[1].message.content then
local translated = data.choices[1].message.content
print("TR: " .. translated)
callback(translated)
else
local error_message = "API call failed. Response: " .. hs.inspect(data)
print(error_message)
hs.alert.show(error_message)
callback(nil)
end
else
local error_message = "HTTP request failed. Status: " .. status .. ", Response: " .. response
print(error_message)
hs.alert.show(error_message)
callback(nil)
end
end)
end
Juntai Park replied to the below article:
Minyoung Jeong @kkung@hackers.pub
Hammerspoon과 OpenAI API를 활용하여 맥에서 선택한 텍스트를 즉시 번역하는 스크립트를 소개합니다. 이 스크립트는 Cmd+Shift+K 단축키를 통해 선택된 텍스트를 OpenAI의 GPT-4o 모델을 사용하여 한-영 또는 영-한 번역을 수행하고, 번역된 텍스트로 선택 영역을 자동으로 대체합니다. Accessibility API를 활용하여 텍스트 선택 및 대체 과정을 자동화했으며, OpenAI API를 호출하여 고품질 번역을 제공합니다. Vibe coding을 통해 개발하려 했으나, API 문제로 직접 구현했으며, 이 스크립트를 통해 영문 작성 시 번거로움을 줄이고 생산성을 향상시킬 수 있습니다.
Read more →@kkungMinyoung Jeong 오웃 좋네요! 공유 감사합니다. Open Router 와 일본어 버전으로도 살짝 추가해서 애용해야겠어요!
Juntai Park shared the below article:
Minyoung Jeong @kkung@hackers.pub
Hammerspoon과 OpenAI API를 활용하여 맥에서 선택한 텍스트를 즉시 번역하는 스크립트를 소개합니다. 이 스크립트는 Cmd+Shift+K 단축키를 통해 선택된 텍스트를 OpenAI의 GPT-4o 모델을 사용하여 한-영 또는 영-한 번역을 수행하고, 번역된 텍스트로 선택 영역을 자동으로 대체합니다. Accessibility API를 활용하여 텍스트 선택 및 대체 과정을 자동화했으며, OpenAI API를 호출하여 고품질 번역을 제공합니다. Vibe coding을 통해 개발하려 했으나, API 문제로 직접 구현했으며, 이 스크립트를 통해 영문 작성 시 번거로움을 줄이고 생산성을 향상시킬 수 있습니다.
Read more →Juntai Park shared the below article:
박준규 @curry@hackers.pub
이 글은 톰 라비의 《어느 책중독자의 고백》을 인용하여 독자가 스스로를 "책중독자"로 진단해볼 수 있는 간단한 OX 테스트를 제공합니다. 모르고 같은 책을 두 번 산 적이 있는지, 표지 디자인만 보고 책을 구매한 적이 있는지 등 10가지 질문을 통해 독자 스스로가 책에 대한 애정을 어느 정도 가지고 있는지 되돌아보게 합니다. 이 테스트는 가벼운 마음으로 자신의 독서 습관을 재미있게 평가해보고, 책에 대한 애정을 다시 한번 확인하는 계기를 마련해줍니다.
Read more →gemini-cli 이것저것 만져보는 중인데, gemini-2.5-pro
의 코드 수정능력이 생각보다 괜찮아서 좀 더 써볼 것 같다. VSCode 의 Gemini Code Assist 보다는 만족감이 더 높다. 다만 이미지 분석 용도는 아닌 것 같고. 코딩 용도로 쓰면 괜찮을 것 같다.
사용자의 실수였다고 한다. (미안해요. 구글.)
gemini-cli 이것저것 만져보는 중인데, gemini-2.5-pro
의 코드 수정능력이 생각보다 괜찮아서 좀 더 써볼 것 같다. VSCode 의 Gemini Code Assist 보다는 만족감이 더 높다. 다만 이미지 분석 용도는 아닌 것 같고. 코딩 용도로 쓰면 괜찮을 것 같다.
쓰다보면 어느 순간 모델이 pro 가 아니라 flash 로 바뀌어져 있는데, 왜 그런지 모르겠다..
gemini-cli 이것저것 만져보는 중인데, gemini-2.5-pro
의 코드 수정능력이 생각보다 괜찮아서 좀 더 써볼 것 같다. VSCode 의 Gemini Code Assist 보다는 만족감이 더 높다. 다만 이미지 분석 용도는 아닌 것 같고. 코딩 용도로 쓰면 괜찮을 것 같다.
아 9월부터 강의를 합니다 (교수가 되었습니다). 무슨 과목을 맡게될지는 모르겠지만 꿈에 그리던 기깔난... 마치 IoT로 도배된 집과도 같은 강의를 해보겠습니다 기대해주세요. 그리고 언젠가 이 경험들이 쌓여서 파이콘에서라도 발표하면 좋겠네요.
@theeluwin제이미 축하드립니다~!!
아 9월부터 강의를 합니다 (교수가 되었습니다). 무슨 과목을 맡게될지는 모르겠지만 꿈에 그리던 기깔난... 마치 IoT로 도배된 집과도 같은 강의를 해보겠습니다 기대해주세요. 그리고 언젠가 이 경험들이 쌓여서 파이콘에서라도 발표하면 좋겠네요.
Juntai Park shared the below article:
洪 民憙 (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 →@annyeong안녕 님과
@nebuletoHaze 님, 두 분께서 도와주시기로 했습니다! 감사합니다!
클로드 코드 쓰는 사람들이 다 100달러 이상 플랜을 쓰라고 하니 현혹이 되는구만
클로드 코드 쓰는 사람들이 다 100달러 이상 플랜을 쓰라고 하니 현혹이 되는구만
@jaeholee 저도 Claude Max 구독해서 씁니다… 코딩 에이전트 중에서는 가장 만족스러운 것 같아요.
この論文では、LLM が解けないほど難しいタスク、例えば難しいプログラミングのタスクに直面したとき、「分かりません」と言ったり、一目で分かるような間違ったコードを出力すると BAD ボタンを押されてしまうので、あえて出力を複雑にしたりデバッグしにくいコードを出力し、それによりユーザーは煙に巻かれる・ミスが隠蔽されるといった現象が実験により確認されています。
面白い
Juntai Park shared the below article:
Lee Dogeon @moreal@hackers.pub
이 글은 Zenn 트렌드 봇 제작 중 VitePress 로컬 검색 기능의 버그를 발견하고 수정하는 과정을 담고 있습니다. Fedify 문서에서 검색 기능이 제대로 작동하지 않는 것을 확인한 후, 코드 블록 내의 특정 마크다운 문법(`markdown-it-jsr-ref` 플러그인)이 문제임을 밝혀냈습니다. VitePress의 `localSearchPlugin.ts` 파일을 분석하여, 헤딩 내의 `<a>` 태그를 처리하는 정규식의 non-greedy한 특성이 버그의 원인임을 알아내고, 정규식에서 `?` 기호를 제거하여 문제를 해결했습니다. PR을 통해 수정 사항을 제안하고 빠르게 머지된 경험을 공유하며, 디버깅 과정과 PR 준비에 대한 회고와 함께 개선점을 제시합니다. 이 글은 문제 해결 과정과 디버깅 경험을 통해 독자들에게 인사이트를 제공합니다.
Read more →Juntai Park shared the below article:
洪 民憙 (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 →실제로 Hackers' Pub은 Mac mini M4 깡통에서 돌아가는데, 아직 Asahi Linux가 M4를 지원 안 해서 macOS 안에 컨테이너 띄워서 돌리고 있어요. Asahi Linux가 M4 지원할 때까지 숨 참고 기다리는 중입니다…
LogTape 1.0.0 출시 발표
LogTape 1.0.0이 출시되었습니다. 이 로깅 라이브러리는 현대적인 JavaScript 생태계를 위해 설계되었으며, 의존성이 없고 Node.js, Deno, Bun, 브라우저, 엣지 함수 등 다양한 런타임을 지원합니다. LogTape는 라이브러리 우선 설계를 통해 라이브러리 작성자가 사용자에게 부담을 주지 않고 로깅 기능을 추가할 수 있도록 합니다. 이번 릴리스에서는 고성능 로깅 인프라를 위한 비동기 싱크 옵션, AWS CloudWatch Logs 및 Windows Event Log와의 통합, 그리고 개발 경험을 향상시키는 예쁜 콘솔 로깅 기능이 추가되었습니다. 또한, 기존 Winston 및 Pino 로깅 시스템과의 원활한 통합을 위한 어댑터 패키지를 제공하여 LogTape를 사용하는 라이브러리를 쉽게 통합할 수 있도록 지원합니다. LogTape 1.0.0은 안정성과 성숙도를 제공하며, 다양한 로깅 요구 사항을 충족시키는 포괄적인 패키지 생태계를 구축했습니다.
hackers.pub · Hackers' Pub
Link author: 洪 民憙 (Hong Minhee)@hongminhee@hackers.pub
나는.. 가끔.. https://hackers.pub/nodeinfo/2.1 를 확인한다...... 오늘 기준으로 해커스펍 가입하신분 대략 345명...
내가 Git 쓰다가 왕대빵 커밋 똥히스토리 남기는 전형적인 패턴이다.
이렇게 3, 4의 변경이 한데 들어가 있는 무근본 커밋이 탄생한다. 2 -> 3 사이에 stash를 하면 간단히 해결되는 문젠데 매번 까먹고 실천을 못한다.
어라라라라라라 이게 왜 된거야
해커스펍.... 모임.... 아마 가능할 수도 있을 것 같습니다.... 이제 장소와 시간만 구하면 된다.....
@hongminhee洪 民憙 (Hong Minhee) ありがとうございます!調べるとDRY原則の初出はこの本なんですね!本質的なことが書かれている名著は陳腐化しないので、1冊買っておきます😎
@shiromadaraしろまだら
@hongminhee洪 民憙 (Hong Minhee) 何年前か、韓国語訳で読みましたが、けっこう役に立ちました。 タイトルは就職の面接のためな本に見えますが、中身はシステムの設計について説明する本です。シリーズで第2弾も出たようですが、それはまだ読んでいませんね。
アレックス・シュウ
システム設計の面接試験
https://www.amazon.co.jp/システム設計の面接試験-アレックス・シュウ/dp/4802614063
@arkjunJuntai Park
@chanjin65이찬진 살펴봤는데, Threads 쪽의 ActivityPub 구현에 버그가 있는 것 같습니다. https://threads.net/.well-known/webfinger?resource=acct%3Achanjin65%40threads.net를 조회하면 액터 객체가 https://threads.net/ap/users/17841400639660143/라고 나오는데, 정작 액터 객체를 조회하면
404 Not Found
가 나오네요. 🤔
@hongminhee洪 民憙 (Hong Minhee)
@chanjin65이찬진 페디버스 공유 기능이 아직은 베타라서 어쩔 수 없는가 봐요. 😅
오버엔지니어링을 자제해야 하지만 이게 또 일하면서 보람을 느낄 수 있는 방법 중 하나라 타협점을 찾아야겠음
요즘 '이건 잘못된 코드지만 당분간 고칠일이 없기를 기도하자'고 하며 넘어간 코드들에서 나온 버그들을 계속 고치는 중이다.
과거의 나의 정확한 안목에 뿌듯해하며 동시에 피눈물을 흘리고 있다.
이뿐만이 아니다. 예스24는 낙후된 시스템을 운용하는 것으로 전해진다. 단적인 예로 사이트 개발에 '닷넷 프레임워크'를 사용하고 있다. 닷넷 프레임워크는 현재는 잘 사용하지 않는 개발 언어로 윈도 서버에서만 운영 가능하기 때문에 개발자의 외면을 받고 있다.
닷넷 프레임워크는
예를 확인 없이 내세운 기사네요 🙃
@nyeongAn Nyeong (安寧) .NET이랑 .NET Framework가 서로 다른 물건이예요. .NET은 .NET Core가 리브랜딩된 거고, 10년 전에 .NET Framework를 대체했습니다. .NET Framework는 Windows에서만 돌아가는 것도 사실이고요. .NET Core, 즉 현재의 .NET은 .NET Framework와 브랜드 측면에서는 연속성이 있지만, 기술적으로는 아예 새로 만들어진 구현입니다. 오픈 소스라는 점도 다르고요. 전반적으로 .NET Framework는 레거시 기술이 맞아요.
@chanjin65이찬진 님이 스레드에 올린 글 [1] 을 Hackers' Pub 에도 공유하려고 했는데, Hackers' Pub 에서
@chanjin65이찬진 님의 노트에 해당 글이 올라오지 않는다..
스레드의 페디버스 연동 기능이 개선되어, 페디버스 공유를 켜면 팔로우하는 페디버스 계정의 게시물들을 볼 수 있는 피드가 생겼고 페디버스 계정을 검색할 수 있다는 내용 ↩︎
Zenn이라는 사이트가 있길래 찾아봤더니 뭐지 엄청난 양질의 포스팅이 https://zenn.dev/calloc134/articles/how-react-works-guide
Hackers' Pub에 로그인한 상태에서의 타임라인 구성을 조금 바꿔봤습니다. 기존의 “연합우주” 탭을 “피드”라고 수정했고, “연합우주” 탭과 “Hackers' Pub” 탭은 기본적으로 로그아웃했을 때의 “연합우주” 및 “Hackers' Pub” 탭과 동일한 타임라인이 표시되게 했습니다. 아직 팔로를 많이 하지 않은 분들에게는 “연합우주” 및 “Hackers' Pub” 타입라인이 새로운 콘텐츠를 발견하기 좋은 공간이 될 겁니다.
웹핑거 사이트에 하스켈 클라이언트 링크를 추가하는 PR을 제출했다. PR은 바로 머지(merge) 되었는데 배포에 이슈가 있어서 아직 사이트에 반영되지는 않았다.
지금은 아니지만 내가 HHKB 레이아웃을 쓰고 터미널에서 이것저것 하는 것 때문에 vim 에 대해 관심을 가지는 동료들이 있었다. 가장 쉽게 적용할 수 있는 것은 예쁜 터미널 에디터였고 그 첫 후보로 nvchad 를 추천 또는 설치해주었다. https://nvchad.com/ vscode 에서 이걸로 당장 넘어오라고는 당연히 못하고 터미널에서 코드 읽어 볼 때 사용하라곤 했다. 몇몇은 vscode 에서 vim 플러그인을 설치해 사용하기 시작했다. lazyvim 과 nvchad 를 번갈아 가며 쓰고 있다. siduck 의 미감은 훌륭하다.
아까 멘토링 시간에, Next.js가 점점 Vercel에 종속적으로 변해가는 모습에 사용자들이 점점 이탈하지 않을까 하는 질문을 했어요. 그랬더니 아직은 걱정할 필요 없다고 3~5년은 더 갈 거라는데, 개인적으로는 아직 잘 모르겠지만 Vite같은 번들러조차도 지원하지 않는데 Deploy까지 Vercel에 모든 것을 맡겨야 한다고 하면... 눈에 보이는 사용자 이탈에 3년도 안 걸리지 않을까 하는 생각을 조심스럽게 하고 있어요.
종종 일 앞에 사람이 있다는 점을 간과하는 발언을 들을 때가 있다. 사람을 소울리스 코딩머신으로 취급한다거나, 부서의 상황을 배제하고 일만을 고려하는 의견들. 어느 정도는 일리가 있겠으나 성공적인 의사소통으로 평가하긴 어렵다.
최근 TS 코딩중에 async/sync에 대해 polymorphic한 인터페이스를 제공하려하다보니 HKT의 필요성을 느끼게 되었다. 해결책은 그냥 synchronous만 제공하기로;;
엔지니어링 이야기는 아니지만 이번에 명함이나 홍보물을 Figma로 디자인해서 출력했는데 팁이나 경험을 글로 한번 적어보고 싶다.
https://x.com/zenncafe_team/status/1934808141943984286?t=RlZp8hwULdeWPLsaCIbBlQ&s=19
Zenn도 커뮤니티 밋업을 하는듯...? 참고로 Zenn은 일본에서는 dev.to 와 같은 위상의 개발자 블로그 커뮤니티이다....
当たり前かもしれないが、日本では“namespace”を「名前空間」と翻訳するんだな。
Hackers' Pub 오프라인 모임하는 상상
Juntai Park shared the below article:
제이미 @theeluwin@hackers.pub
이 글은 아이폰의 '미리알림' 앱을 활용하여 일상 및 업무 루틴을 자동화하는 방법을 소개합니다. ADHD 성향을 가진 저자는 주기적으로 해야 하는 일들을 잊지 않기 위해 '미리알림'을 통해 알림을 받고, 이를 통해 뇌의 인지 자원을 절약하고 효율성을 높입니다. 작업을 세분화하고, 완료 후 즉시 체크하는 방식을 통해 미루는 습관을 개선하고, 새로운 습관을 형성하는 데 도움을 받습니다. 또한, '미리알림'을 자주 확인하는 습관을 통해 중요한 일들을 잊지 않도록 관리하며, '구글 캘린더'와 일기장을 병행하여 전체적인 일정 관리와 자기 성찰을 돕습니다. 이 시스템은 루틴 관리를 자동화하고, 새로운 습관을 쉽게 만들 수 있도록 도와주는 유용한 방법입니다.
Read more →