깨알팁: 유효한 유니코드 코드포인트 값의 범위에는 구멍이 있습니다. UTF-16을 위해 만들어진 surrogate pair 영역입니다. 이 영역의 값은 UTF-16 외에서는 의미가 없고 사용될 수 없습니다.
크로이세
@kroisse@hackers.pub · 17 following · 34 followers
나는 코딩을 하는 게 아니야. 그냥 바이브를 타고 있는 거지.
GitHub
- @Kroisse
UTF-16이 한 트롤링으로 Byte Order Mark (U+FFFE) 라는 것도 있죠... UTF-16LE인지 UTF-16BE인지 확인하기 위해 바이트 인코딩된 문자열 맨 앞에 넣는 문자인데 (0xFE가 먼저 오면 LE) 어떤 에디터는 이걸 UTF-8 문자열에도 집어넣어서 UTF-8인지 확인하겠다고 설치고 다니는 이하생략
깨알팁: 유효한 유니코드 코드포인트 값의 범위에는 구멍이 있습니다. UTF-16을 위해 만들어진 surrogate pair 영역입니다. 이 영역의 값은 UTF-16 외에서는 의미가 없고 사용될 수 없습니다.
아는 친구한테 들은 얘기인데, 최근 이직한 회사에서 Python을 쓰는데 린트나 포매터 같은 것도 전혀 설정을 안 해놓고 살고 있기에 도입하자고 했더니 “그런 거 쓸 거면 Python 안 쓰죠”라는 말과 함께 제안을 거절 당했다고 한다. Python에서도 린트나 포매터는 물론이고 타입 체커까지 붙여서 살려면 살 수 있지만, 어쩐지 그런 거 신경 쓸 사람들은 최근 10년 사이에 다들 다른 언어로 넘어가 버리고 그런 거 신경 안 쓰는 사람들만 Python을 계속 쓰게 된 게 아닌가 싶은 생각이 들었다.
@hongminhee洪 民憙 (Hong Minhee) 그렇게 php의 길을 걷게 되는데
@kroisse크로이세 아항 파워쉘이 있었네요? 근데 그러면 .NET 기반이 아닌 프로그램은 기본적으로는 그 출력방식을 못쓰는건가요?
@bglbgl gwyng 저는 그렇게 알고 있습니다. 그래서 PowerShell 스크립팅을 하드하게 하는 상황이면 유용하다고는 하는데 그 외 바깥 세계로는 널리 퍼지지 않은 것 같아요.
이미 늦은 제안같지만... 터미널에 뭔가를 보여주는 방법에, 그냥 stdout에다가 출력하는 거랑, TUI 프로그램들이 사용하는 ANSI Escape Sequences가 있다. 전자는 가장 간단하고 무식한 방법이고, 후자는 무제한의 자유도를 제공하는, 그래서 그위에 TUI를 구현할수 있는 방법이다.
나는 그사이에 적당히 구조화된 출력을 할수있는 방식이 있으면 좋겠다. JS에서 console.group하듯이 말이다. 그래서 출력이 너무 길면 fold/unfold도 할수 있고? 지금 큰 코드베이스에다가 빌드돌렸다가 에러나면 무슨 맥락인지 파악하는데 한세월인데, 그런걸 잘 읽게해주는데 도움이 될것이다.
@bglbgl gwyng PowerShell이 그런 구조화된 출력을 지향하는데, 그 형식이 .NET object라는 사소한 디테일이 있기는 합니다.
@kroisse크로이세 그냥 워크트리 쓰지 않고 클론을 여러 개 하는 건 별로려나요?
@hongminhee洪 民憙 (Hong Minhee) 브랜치를 옮겨다니거나 다른 커밋을 체리픽하거나 할 때 git worktree는 저장소 하나로 취급되니까 따로 fetch를 안 해줘도 돼서 편했었는데, Dev Container를 계속 쓰려면 별 수 없이 로컬 클론 여러 벌을 쓰는 방식으로 회귀해야겠군요...
Claude Code가 터미널 앱인 이유가 Anthropic 직원들이 워낙 다양한 환경에서 개발해서였다던데 그 중에 Dev Containers를 쓰는 사람은 없었나 봄.
아 근데 Claude Code 너무 Dev Containers랑 찰떡이긴 한데
실수로 클로드가 rm -rf ~/ 날려도 괜찮고
Git worktree와 Dev Containers와 Claude Code의 대환장 조합
git worktree로 나눈 작업본 폴더에서 dev container를 연다 -> 원본 .git 폴더가 컨테이너 밖에 있어서 git이 먹통이 됨
모든 worktree들을 포함한 부모 폴더에서 dev container를 연다 -> devcontainer.json을 저장소 작업본 밖에 둬야함, 서로 다른 브랜치끼리 worktree로 나눠서 컨테이너 단위로 Claude Code를 격리하려던 의도가 무색해짐
worktree를 쓰지 말고 dev container를 같은 작업본에서 여러 번 연다 -> 작업본 폴더는 공유되니까 Claude Code끼리 서로 같은 파일을 수정하면서 카오스가 펼쳐짐
Claude Code가 터미널 앱인 이유가 Anthropic 직원들이 워낙 다양한 환경에서 개발해서였다던데 그 중에 Dev Containers를 쓰는 사람은 없었나 봄.
Git worktree와 Dev Containers와 Claude Code의 대환장 조합
git worktree로 나눈 작업본 폴더에서 dev container를 연다 -> 원본 .git 폴더가 컨테이너 밖에 있어서 git이 먹통이 됨
모든 worktree들을 포함한 부모 폴더에서 dev container를 연다 -> devcontainer.json을 저장소 작업본 밖에 둬야함, 서로 다른 브랜치끼리 worktree로 나눠서 컨테이너 단위로 Claude Code를 격리하려던 의도가 무색해짐
worktree를 쓰지 말고 dev container를 같은 작업본에서 여러 번 연다 -> 작업본 폴더는 공유되니까 Claude Code끼리 서로 같은 파일을 수정하면서 카오스가 펼쳐짐
아 C++ 모듈 쓰고 싶다!!!
사실 거짓말입니다 저는 그저 Rust crate면 충분합니다
아 C++ 모듈 쓰고 싶다!!!
팔자에 없던 C++ 시즌 2. 심지어 이번에는 녹도 슬지 않은 순수한 모오던 C++.
사실 C++보다는 CMake를 써야 한다는 점이 좀 더 고통스럽다.
팔자에 없던 C++ 시즌 2. 심지어 이번에는 녹도 슬지 않은 순수한 모오던 C++.
@bglbgl gwyng Haskell 쓰던 사람으로서 Option::unwrap() 같은 걸 쓸 거면 어째서 Option 타입을 만들어서 쓰는 걸까 싶은 생각이 들 때가 있습니다…
@hongminhee洪 民憙 (Hong Minhee)
@bglbgl gwyng Haskell에도 fromJust 같은 함수가 있는 것과 비슷한 이유가 아닐까 싶습니다. segfault를 내거나 다른 해로운 일이 일어나지 않는 대신 즉시 종료되어 주기는 한다는 점에서 적어도 null 포인터보다는 낫기도 하고요.