REA(Reverse Engineer Anything) 사용법 — 코딩 에이전트로 바이너리와 Electron 앱 분석하기
다른 앱에서 본 기능을 내 프로젝트에도 넣고 싶을 때가 있다. 소스가 없으면 디스어셈블러를 열어 함수를 따라가야 하는데, 이 작업은 도구도 많고 시간도 오래 걸린다. REA(Reverse Engineer Anything)는 이 작업을 코딩…
다른 앱에서 본 기능을 내 프로젝트에도 넣고 싶을 때가 있다. 소스가 없으면 디스어셈블러를 열어 함수를 따라가야 하는데, 이 작업은 도구도 많고 시간도 오래 걸린다. REA(Reverse Engineer Anything)는 이 작업을 코딩…
AI 코딩 에이전트를 쓰기 시작한 뒤로 손으로 치는 코드는 확실히 줄었습니다. 그런데 이상하게도 퇴근 시간은 그대로입니다. Unhandled Exception Podcast 진행자 댄 클라크(Dan Clarke)도 같은 고민을 털어놓습니다. "AI가 몇 초 만에…
메신저 답장, 커밋 메시지, 이슈 코멘트처럼 짧은 글을 하루에도 수십 번 타이핑한다. 말로 하면 빠른데, OS 내장 받아쓰기는 플랫폼마다 다르고 리눅스에는 아예 없다. 클라우드 음성 인식 서비스는 음성을 외부로 보내야…
CSV 한 줄, PATH 같은 콜론 목록, 설정 파일의 key=v1;v2;v3처럼 구분자로 이어진 문자열을 배열로 나누는 일은 셸 스크립트에서 매일 나온다. 그런데 흔히 쓰는 방법들은 공백이 든 필드, * 같은 glob…
API 응답을 페이지별로 모은 리스트, 파일마다 읽은 줄 목록처럼 리스트의 리스트를 한 줄로 펴야 하는 경우는 흔하다. 방법은 list comprehension, itertools.chain, sum(xss, []) 등 여럿인데, 어느 것이 빠른지에 대한 통념과…
레지스터 플래그, 권한 비트, 상태 마스크처럼 정수 하나의 특정 비트만 켜고 끄는 코드는 드라이버부터 일반 애플리케이션까지 어디에나 있다. 연산 자체는 |, &, ^ 한 줄이지만, 시프트할 리터럴의 타입을 잘못 고르면…
빌드 산출물이나 .env 같은 파일을 실수로 커밋한 뒤 뒤늦게 .gitignore에 추가해도, git은 그 파일을 계속 추적하고 변경을 M으로 보여준다. .gitignore는 아직 추적하지 않는(untracked) 파일에만 적용되기 때문이다. 흔히 쓰는 git rm…
설정 파일이나 같은 저장소의 다른 스크립트를 읽으려면 스크립트 자신이 있는 디렉터리를 알아야 한다. pwd는 호출한 쪽의 작업 디렉터리일 뿐이라 쓸 수 없고, dirname $0은 실행 방식에 따라 결과가 달라진다. 흔히…
작업하던 파일을 main_final.py, main_final2.py로 복사해 두다 보면 어느 것이 최신인지 금방 헷갈린다. 며칠 전 동작하던 코드로 돌아가고 싶은데 그 시점의 사본이 없기도 하다. Git은 이 문제를 파일 사본이 아니라 "변경…
Yocto로 이미지를 만들다 보면 패키지 하나를 넣거나 빼야 할 일이 계속 생긴다. 그런데 local.conf에 IMAGE_INSTALL += "strace"라고 적어도 이미지에 strace가 들어가지 않는다. 이미지 레시피가 IMAGE_INSTALL을 다시 할당해버리기 때문인데, 이처럼 변수마다…