아카이브
보관된 모든 글
Generate C# Class의 본체는 SetCallbacks다
Input System을 설치부터 세 가지 제어 방식까지 훑는 2024년 글을 현행 문서와 대조했다. 예제 세 개에 전부 들어 있는 죽은 조건문이 하나 있고, 생성된 클래스는 정작 그걸 쓸 이유가 되는 기능을 안 쓰고 있다.
플레이 타임은 DateTime이 아니라 TimeSpan이다
타임 어택 게임의 경과 시간을 UI에 띄우려고 현재 시각 유틸리티를 스크랩했는데, 정작 필요한 건 다른 타입이었다. 경과 시간의 타입도, 읽어야 할 시계도, 포맷 문자열의 규칙도 다르다.
isGrounded는 센서가 아니라 지난 Move의 기록이다
isGrounded가 제대로 동작하지 않아 레이캐스트로 바꿨다는 글을 현행 문서와 대조했다. 증상도 해법도 실재하는데, 문서를 보면 원인이 다른 데 있고 해법의 숫자에도 문제가 있다.
IK Pass가 꺼져 있으면 IK 함수 여섯 개가 전부 무음이다
Animator의 프로퍼티와 함수를 정리한 2021년 공부 노트를 현행 문서와 대조했다. 설명은 정확한데, 적힌 스위치를 무효로 만드는 조건 쪽이 비어 있다. 세 군데가 그랬다.
[MenuItem]은 Editor 폴더로 가야 하는데, MonoBehaviour는 거기 못 간다
애트리뷰트 열여덟 개를 정리한 2021년 글을 현행 문서와 대조했다. 대부분 맞는데, 한 예제는 요구가 서로 충돌하고, 하나는 문서가 쓰지 말라고 하며, 하나는 막아주는 범위가 생각보다 좁다.
Release를 먼저 부르면 Completed는 무효해진 핸들을 받는다
Addressables를 정리한 2023년 글을 현행 문서와 대조했다. 예제 코드의 해제 순서에 문제가 있고, 헤맸다는 중복 키 문제는 문서에 한 줄로 적혀 있다. 출발점이었던 언리얼의 소프트 참조와 나란히 놓으면 그 해제 문제가 더 분명해진다.
OverlapSphere는 Ignore Raycast 레이어를 무시하지 않는다
같은 Physics 클래스인데 Raycast와 OverlapSphere의 기본 레이어 마스크가 다르다. 쿼리에서 빼두려고 Ignore Raycast에 올려둔 오브젝트가 OverlapSphere에는 그대로 잡힌다.
CrossFade의 0.3f: 한쪽은 0.3초고 한쪽은 아니다
2014년에 쓰인 CrossFade 설명을 확인했다. 그 글은 맞다. 다만 지금 쓰는 컴포넌트에는 같은 이름의 메서드가 따로 있고, 두 번째 인자의 단위가 다르다.
Clamp이 두 개다: 인자를 거꾸로 주면 한쪽만 예외를 던진다
Mathf.Clamp 설명은 네 줄이면 끝난다. 문제는 그 네 줄 바깥이다. 인자를 거꾸로 줬을 때, NaN이 들어왔을 때, 그리고 각도를 클램프할 때 무슨 일이 생기는지 확인했다.
렌더 파이프라인은 에셋이고, 빌트인은 그 칸이 비었을 때의 결과다
Unity의 렌더 파이프라인 소개 문서를 읽었다. 셋 중 하나를 고르는 문제로 알고 있었는데, 문서를 따라가 보니 빌트인은 고르는 게 아니라 아무것도 배정하지 않았을 때 남는 것이었다.
빌트인 셰이더 예제 13개: 목록 아래로 갈수록 URP로 안 넘어온다
Unity 공식 HLSL 셰이더 예제 13개는 전부 빌트인 전용이다. 위쪽 몇 개는 이름만 바꾸면 URP에서 돌고, 라이팅부터는 재작성이다. 예제별로 어디까지 넘어오는지 대조했고, 그 과정에서 앞 글에서 틀린 줄도 나왔다.
커스텀 셰이더 문서의 표는 목차가 아니라 분기다
Unity의 Custom shaders 페이지에는 URP 줄과 빌트인 줄이 따로 있다. 인터넷에서 찾은 셰이더 코드가 컴파일조차 안 되는 이유가 대개 그 갈림이다. 양쪽의 실제 차이와, 아무도 안 누르는 Troubleshooting 줄 아래 있던 내용을 정리했다.
Unity 코드 최적화 문서는 목차의 목차다: 두 층 내려가서 건진 규칙들
Unity 매뉴얼의 Code optimization 페이지는 링크 다섯 줄이 전부다. 그 다섯 중 넷이 또 목차였다. 끝까지 내려가서 실제로 코드를 바꾸게 만드는 항목만 추렸다.
Sentis 워크플로 6단계: 문서 코드가 생략한 소유권과 블로킹
Sentis 공식 워크플로 문서는 여섯 단계짜리 뼈대다. 그 뼈대가 생략한 것 — Resources 폴더, 텐서 소유권, 결과를 읽는 줄에서 발생하는 GPU 대기 — 를 같은 문서의 다른 페이지와 대조해 정리했다.
443은 TCP만이 아니다
위키백과의 TCP/UDP 포트 목록을 IANA 등록부와 대조했다. 443에 UDP가 빠져 있고, 동적 포트 구간은 실제 리눅스 값과 다르고, 1024번 경계는 고정이 아니다.
Read 한 번이 메시지 하나가 아니다
TcpListener.AcceptTcpClient 문서를 스크랩해뒀었다. 예제 코드가 TCP를 메시지 단위로 다루고, 같은 문서 세트의 다른 페이지에는 고쳐진 판이 올라가 있다.
포크 세 번 끝에 공식판이 나왔다
URP용 글리치 이펙트 패키지의 README를 스크랩해뒀었다. 지금 그 저장소를 열면 저자가 더 이상 갱신하지 않는다는 공지와 함께 keijiro의 공식 URP판을 가리킨다.
FreezePositionY가 얼리는 건 월드 Y다
RigidbodyConstraints를 정리한 글을 매뉴얼과 대조했다. 열거형 멤버 넷이 빠져 있고, 어느 축을 기준으로 얼리는지가 없고, 비트 연산 설명이 두 군데 어긋난다.
huggingface-cli는 없어졌고, SSL 오류의 답은 따로 있다
Hugging Face 모델을 통째로 받는 세 가지 방법을 정리한 글을 확인했다. 그중 둘이 쓰는 명령이 v1.0에서 제거됐고, SSL 오류에 git을 권한 건 맞지만 이유가 글에 적힌 것과 다르다.
ident가 아니라 peer다
우분투에 PostgreSQL을 설치하는 2021년 글을 확인했다. 이 글대로 나오는 12는 2024년에 수명이 끝났고, 인증 방식 설명은 처음부터 한 단어가 어긋나 있었다.
파도 전선이 뭔가 했더니 wavefront였다
Unity의 GPU 최적화 how-to 한국어 페이지를 영문 원문과 대조했다. 용어가 한 문서 안에서 갈리고, 프레임 디버거 항목은 번역이 아니라 원문이 그렇게 적혀 있다.
댓글에서 된다고 확인된 그 기능은 OpenCode 1.3.0에서 빠졌다
OpenCode 사용 후기와 설치 가이드를 지금 기준으로 확인했다. 글이 지금은 된다고 적은 기능은 공식 문서가 금지라고 적게 됐고, JSON 예시에는 복사하면 깨지는 흔적이 남아 있다.
8개월 된 설치 가이드: oh-my-opencode는 이제 그 이름이 아니다
2026년 1월에 나온 oh-my-opencode 설치 가이드를 지금 기준으로 확인했다. 프로젝트 이름부터 바뀌었고, 글이 경고한 Anthropic 구독 차단은 4월에 실제로 시행됐다.
Ollama 응답이 길었던 건 답변이 길어서가 아니다
Ollama API를 훑은 메모를 공식 문서와 대조했다. 답변이 너무 길다던 것의 원인은 stream 하나인데, 원문은 세 가지를 한꺼번에 바꿔서 원인이 셋으로 나뉘어 있었다.
공식 문서를 스크랩했더니: Mirror 문서에 없는 메서드가 하나 적혀 있다
이번 스크랩은 Mirror의 Network Manager 공식 문서 그 자체다. 대조할 원문이 없으니 문서를 소스와 대봤더니, 존재하지 않는 메서드 이름과 실제와 다르게 읽히는 문장이 나왔다.
USING HASH는 InnoDB에서 조용히 B-Tree가 된다
MySQL·MariaDB 인덱스 생성과 EXPLAIN을 정리한 글을 매뉴얼과 대조했다. 해시 인덱스 레시피는 InnoDB에서 동작하지 않고, EXPLAIN 컬럼 설명 넷이 틀렸다.
Mirror 설계 패턴 글의 예제가 씬 전환에서 깨지는 이유
Mirror의 올바른 설계 패턴을 정리한 글을 확인했다. 큰 그림은 맞는데 마지막 예제가 SceneManager.LoadScene을 부른다. 늦게 들어온 클라이언트가 엉뚱한 씬을 받는다.
Mirror 사전 지식: 에셋스토어 배포본은 GitHub보다 1년 넘게 뒤처져 있다
Mirror를 붙이기 전에 알아둘 것들을 정리한 글을 다시 봤다. 개념 설명은 지금도 맞는데 첫 항목이 걸린다. 에셋스토어 배포본은 2025년 2월에 멈춰 있고 GitHub 릴리스는 계속 나오고 있다.
Mirror NetworkManager 인스펙터 다시 읽기: Network Address는 서버가 쓰지 않는다
NetworkManager 인스펙터를 항목별로 정리한 표를 소스의 툴팁과 대조했다. 그룹 배치가 어긋난 곳이 있고, Headless Start Mode의 선택지와 Evaluation Interval의 단위는 틀렸다.
Mirror의 Command와 RPC: 서버에서 실행된다는 게 안전하다는 뜻은 아니다
Mirror의 Command, ClientRpc, TargetRpc를 정리한 글을 다시 봤다. 접두사 규칙과 인자 타입이 지금과 다르고, 무엇보다 예제 코드가 서버 권위를 무력화하는 패턴을 그대로 담고 있다.
Unity JsonUtility 정리: 제약은 JSON이 아니라 직렬화기에서 온다
JsonUtility의 제약 목록을 외우는 대신 하나의 규칙으로 정리했다. 인스펙터에 안 보이면 JSON에도 안 담긴다. 그리고 문서에 없는 가장 위험한 항목인 다형성 문제까지.
문자 인코딩 정리: 유니코드는 2바이트가 아니다
ISO 8859-1부터 EUC-KR, CP949, UTF-8까지 정리한 글을 다시 봤다. 널리 퍼진 오해 세 개를 공식 문서와 직접 측정한 바이트로 바로잡고, 글자가 깨졌을 때 원인을 역추적하는 방법까지 정리했다.
ML-Agents 설치 문서 읽기: 파이썬 3.10.12는 권장이 아니라 상한이다
ML-Agents 설치 절차가 왜 이렇게 까다로운지를 툴킷이 두 조각으로 나뉜 구조에서 짚었다. Conda와 3.10.12 지정의 이유, Unity 패키지와 Python 패키지의 버전 짝, 그리고 Sentis와 Inference Engine이라는 두 이름까지.
InputAction을 직접 구독하기: 델리게이트로 다루는 입력의 수명
PlayerInput의 Behavior 대신 InputAction을 코드에서 직접 구독하는 방식을 정리했다. 등록과 해제를 짝으로 두는 이유, 액션을 누가 활성화하는가, 그리고 문자열로 액션을 찾는 것의 비용까지.
GPU 인스턴싱 셰이더: 한국어 매뉴얼의 매크로 이름에 A가 빠져 있다
커스텀 셰이더에 GPU 인스턴싱을 붙이는 Unity 2021.3 매뉴얼을 지금 기준으로 다시 봤다. 한국어 페이지에 매크로 오타가 세 군데 있고, 렌더 파이프라인 호환성 표는 그 사이에 바뀌었다.
Git LFS 추적 해제하기: `git lfs uninstall`은 기본이 전역이다
LFS 추적을 해제하고 GitHub 저장공간을 되찾는 절차를 정리한 2021년 글을 지금 기준으로 다시 봤다. 명령어 세 개의 설명이 실제 동작과 다르고, GitHub의 LFS 정책도 그 사이에 바뀌었다.
Docker 빌드와 실행 다시 보기: `docker build .`의 점은 Dockerfile 경로가 아니다
DB를 컨테이너에 격리해두려고 찾다가 스크랩한 글이다. `docker build .`의 점이 무엇인지, 예제 Dockerfile이 왜 실제로는 실행되지 않는지, 그리고 정작 DB를 올릴 때 필요한 것들은 무엇인지 정리했다.
DeepVoice AI 에셋 다시 보기: '외부 연결 없이 독립적으로'가 아니었다
로컬에서 도는 TTS 에셋을 찾다가 스크랩해둔 리뷰였는데, '완전히 독립적으로 동작한다'는 결론이 사실과 달랐다. 그 근거는 원문 안에 이미 네 개나 적혀 있었다. 그럼 정말 로컬로 도는 건 무엇인지까지 정리했다.
Mirror의 클라이언트 사이드 예측: Physics.Simulate 없이 되감기
예측이 왜 필요하고 어떻게 동작하는지, 그리고 Mirror가 물리 씬 전체를 재시뮬레이션하지 않는 대신 무엇을 포기했는지 정리했다. 문서가 2024년 3월에 멈춰 있다는 점과 그 사이 코드는 계속 움직였다는 점도 함께.
Unity PlayerInput 정리: Behavior 하나가 코드를 통째로 바꾼다
PlayerInput의 API 레퍼런스는 프로퍼티 목록일 뿐이라 정작 필요한 걸 알려주지 않는다. Behavior 네 가지가 왜 서로 다른 코드를 요구하는지, 콜백이 왜 여러 번 오는지, 그리고 싱글플레이어에 이 컴포넌트가 필요한지를 정리했다.
Cinemachine Follow Camera 뜯어보기: Binding Mode는 회전 모드가 아니다
레이싱·러너 게임의 추적 카메라를 만드는 Follow Camera를 Cinemachine 3 기준으로 정리했다. Binding Mode가 실제로 무엇을 정하는지, 그리고 흔히 오해되는 마우스 입력·Target Offset을 공식 문서로 바로잡았다.
AWS 마켓플레이스로 뒤끝 구독하기: 경고문이 왜 붙어 있는지부터
뒤끝을 AWS 마켓플레이스에서 구독하는 절차와, 안내문에 붙은 두 개의 경고가 왜 붙어 있는지를 AWS SaaS 온보딩 구조로 설명했다. 해지가 무엇을 정지시키는지와 요금이 어디에 적혀 있는지도 정리했다.
AWS 데이터 전송 비용: 요금표가 아니라 경계선을 봐야 한다
2021년에 정리된 AWS 데이터 전송 요금 글을 지금 기준으로 다시 봤다. 숫자는 이미 여러 번 바뀌었지만 구조는 그대로다. 무엇이 경계선이고, 원문의 어느 부분이 지금은 틀렸는지 정리했다.
Unity용 Gemini 클라이언트를 뜯어보다: 클라이언트에 API 키를 넣는다는 것
asus4/google-gemini-unity는 Unity에서 Gemini API를 부르는 비공식 클라이언트다. 설치 절차와 의존성 체인을 정리하고, README가 안내하는 .env 방식이 배포 빌드에서 왜 성립하지 않는지, 그럼 무엇을 써야 하는지까지 짚었다.
서명된 APK 뽑기: 진짜 결과물은 APK가 아니라 키스토어다
오픈 소스 앱을 직접 빌드해보려다 정리한 글. Android Studio의 Generate Signed Bundle/APK 절차와, 이 절차에서 한 번 만들면 되돌릴 수 없는 키스토어를 어디에 두어야 하는지, Play의 AAB 요구와 앱 서명이 무엇을 바꿨는지까지 짚었다.
Unity 광고 미디에이션 정리: 워터폴이 끝나고 비딩만 남았다
미디에이션이 무엇이고 워터폴과 인앱 비딩이 어떻게 다른지, 그리고 클라이언트 개발자 입장에서 이 SDK가 빌드에 무엇을 붙이는지 정리했다.
Sentis에서 텐서 데이터에 직접 접근하기: 리드백을 피하는 이유와 방법
온디바이스 추론의 병목은 대개 추론 자체가 아니라 GPU와 CPU 사이의 데이터 이동이다. Sentis가 그걸 줄이려고 제공하는 API를 정리했다.
lilToon 파라미터 정리: 공식 문서를 대조한 한국어 레퍼런스
lilToon 인스펙터는 한국어를 지원하지만 공식 문서는 일본어뿐이다. 한국어 자료에 오역이 도는 이유이기도 해서, 일본어 원문을 항목별로 대조해 정리했다.
Ext4와 NTFS: 리눅스와 윈도우가 디스크를 다루는 방식
우분투를 설치하다 기본값으로 찍혀 있던 Ext4가 뭔지 몰라 찾아본 기록. 구조부터 윈도우와 공유할 드라이브 포맷, 그리고 개발에서 가장 자주 물리는 대소문자 문제까지.
그래픽스 파이프라인 정리: 정점이 픽셀이 되기까지
3D 기하가 화면의 픽셀이 되기까지 거치는 단계를 순서대로 정리했다. 한국어 자료에서 자주 빠지는 정점 후처리와 출력 병합, 그리고 메시 셰이더처럼 최근에 생긴 경로까지 포함했다.
adb 정리: 안드로이드 디버그 브리지의 구조와 명령어
안드로이드 빌드를 붙잡고 디버깅할 때 쓰는 adb를 구조부터 명령어까지 정리했다. SDK Platform Tools 37.0.1 기준이며, 한국어 자료에 흔한 10년 전 정보와 어디서 갈리는지도 같이 짚었다.