01010011

@01010011@hackers.pub · 27 following · 14 followers

코딩 에이전트들이 uv를 회피하는 경향이 있어서 짜쳤었는데 이렇게 지시를 해두니 uv를 잘씀. never invoke 가 key term 인듯?

  • Python 3.11 + managed exclusively with uv.

    • Never invoke pip, python -m venv, virtualenv, poetry.
  • Environment workflow

1) create / refresh the virtual environment

uv venv source .venv/bin/activate

2) add or upgrade a dependency

uv add <package> uv add --dev <package> uv remove <package>

3) install everything exactly as pinned

uv sync


* **Running commands** – always prefix with `uv run --`
  ```bash

  uv run -- ruff check .
  uv run -- mypy .
  uv run -- pytest -q
  
1

구글 release-please + python(uv) 프로젝트 시멘틱 버저닝 버그.

release-please 를 이용해 uv 로 관리하는 프로젝트를 Semantic Versioning 하려면 아직 release-please에서 uv 지원을 안하기 때문에 uv.lock toml을 array filter 써서 편집해 줘야 한다. uv.lock 편집을 안하면 봇이 올리는 릴리즈 PR 이 실패한다.

문제는 toml 을 json 변환할 때 오류가 있어서 의도대로 편집이 안된다는거.

일단 요런 식으로 Ad Hoc 한 땜질이 가능함.

혹시라도 누군가 release-please + uv 로 SemVer 설정할 때 나처럼 삽질하지 않길 바람.

"jsonpath": "$.package[?(@.name.value=='package-name')].version"

https://github.com/googleapis/release-please/issues/2455?utm_source=chatgpt.com

1
1

Apache Pulsar 4에서 ZooKeeper가 대체되는구나.

원래 Pulsar는 장기 플랜으로 ZooKeeper 대체를 계획, Cloud Native 한 운영에 맞도록 etcd를 대체자로 계획하고 있었다.
근데 어쩐 일인지 oxia 라는 Metadata store service 를 자체적으로 개발, etcd와 oxia 중에 선택할 수 있도록 했다.

메세지 브로커 서비스 특성상 운영에 큰 문제거 없다면 잘 건드리지 않기 때문에 당분간 내가 쓸 일은 없겠지만 Cloud Native 한 Pulsar 신규 구성을 염두에 둔다면 oxia를 고려해 보는 것도 나쁘지 않겠다.

https://streamnative.io/blog/announcing-apache-pulsar-tm-4-0-towards-an-open-data-streaming-architecture

https://github.com/streamnative/oxia?tab=readme-ov-file

oxia logo image
1

데코레이터 대신 직접 함수객체 생성하려고 Callable 타입인 fn을 lambda로 넘기려 한다. arguments 처리를 위해 signature 정보를 넣어줬더니 mypy 가 배를 짼다.

이럴땐

  1. cast 한다
  2. mypy ignore 한다

어떻게 하는게 바람직한가요?

2

간만에 필받아서 aider 커꾸(commit 꾸미기) 함.
gum 이라는 훌륭한 쉘꾸 도구 + git pretty format + delta 썼어요

# Define the git log format string with color formatting for better readability
local GIT_FORMAT="%C(bold yellow)Hash:%C(reset) %C(bold cyan)%h%C(reset) %C(dim white)(%cd)%C(reset)%n"
GIT_FORMAT+="%C(bold yellow)Author:%C(reset) %C(bold white)%an%C(reset) %C(dim white)<%ae>%C(reset)%n"
GIT_FORMAT+="%C(bold yellow)Message:%C(reset) %C(bold white)%s%C(reset)"

# Define the date format
local DATE_FORMAT="%Y-%m-%d %H:%M:%S"

# Perform the commit with aider and show a styled commit summary
aider --commit && \
gum style \
  --border rounded \
  --padding "0 2" \
  --border-foreground 39 \
  "$(git log -1 \
      --pretty=format:"$GIT_FORMAT" \
      --date=format:"$DATE_FORMAT" \
      --color=always)" && \

# Show detailed changes using delta for side-by-side diff with line numbers
git show -1 --color=always --stat --patch | delta --side-by-side --line-numbers
2

가장 선호하는 JetBrains IDE가 AI 시대에 뒤쳐지고 있어서 안타까웠는데 AI assistant 와 Junie 업데이트로 이제 좀 쓸만해진 것 같다.

여전히 부족한 점이 많기는 하다.
Agent는 느리고, 현재 상태에 대한 가시성이 없어 계속 기다려야할지 중단하고 새로운 세션을 열어야 할지에 대한 판단이 안선다.

prompt를 별도 관리할 수 있게 한 점은 훌륭하나 포맷이나 디렉토리를 유저가 선택할 수 있게 했더라면 더욱 유용했을 것이다. 나는 prompt가 다른 에이전트와 공유 가능하길 원한다.

vscode copilot처럼 Claude로부터 mcp 서버 설정을 불러올 수 있다. 하지만 역시 현재 상태 가시성이 없어 제대로 mcp 서버와 인터랙션이 되고 있는지 확인하기 어렵다.

그럼에도 불구하고 Cursor 나 Copilot에 충분히 대항할만한 업데이트라 생각한다. 앞으로를 응원한다!
https://www.jetbrains.com/ko-kr/junie/

1

Manning 에서 올해 4번째로 구독한 책은 'API Design Patterns'

https://www.manning.com/books/api-design-patterns

API 설계의 원칙에 맞게 고려할 사항들을 패턴화, 일목요연하게 정리한 책. GoF 책처럼 Motivation, Overview, Implementation, Trade-off 로 구분지어 설명하는 구성이 너무 마음에 든다. 뛰어난 개발자/개발사가 작성한 API를 자주 경험하다보면 & 개발 경험이 어느 정도 쌓이면 API 설계에 대한 감이 적당히 생기는데 이 책은 '적당' 하거나 '감' 의 영역에 있던 불분명한 경계를 명확히 해준다는 장점이 있다.

API Design Patterns Book Cover
7

회사의 Private Network 환경에서만 발생하는 간헐적 alpine docker build hang 문제가 있었다. 이 문제의 원인은 MSS(Maximum Segment Size) 경계에 걸친 패킷이 alpine apk 의 DF(Don't Fragment) flag 때문에 적절히 분할되지 못해 생기는데에 있었다. (방화벽 문제도 있지만 이건 원인을 정확히 모르겠다.)

기록해 둘만한 재미있는 현상이어서 글로 정리를 하고 싶었는데 안타깝게도 회사 밖에선 재현이 어렵네.

암튼, Private Network 환경에서 간헐적으로 docker 의 동작이 달라진다면 bridge interface 의 MTU 를 조정해 볼 것을 추천한다.(특히 alpine)

4