OpenAPI 문서와 실제 API가 어긋날 때 먼저 잡을 기준Swagger UI에는 분명 email이 필수라고 적혀 있는데, 실제 응답에는 가끔 빠집니다. 문서에는 status가 active | blocked라고 되어 있지만 운영 데이터에는 pending이 섞여 있습니다. 프론트엔드는 타입을 믿고 배포했는데, 어느 날 특정 고객 계정에서만 화면이 깨집니다.이런 문제는 OpenAPI를 "문서 자동 생성" 정도로만 보면 계속 반복됩니다. OpenAPI는 예쁜 API 문서가 아니라, 클라이언트와 서버가 함께 지키는 계약으로 다뤄야 합니다. 계약이 깨지는 순간은 대개 큰 리팩토링 때가 아닙니다. 필드 하나를 optional로 바꾸거나, 에러 응답 형식을 급하게 추가하거나, 테스트 데이터에 없는 케이스가 운영에서..
홈서버나 개인 프로젝트에 도커 컨테이너를 여러 개 띄워두면 이미지 업데이트를 챙기는 게 일이 된다. docker pull 하고 컨테이너 지우고 다시 띄우는 걸 컨테이너 수만큼 반복해야 한다.이걸 자동으로 해주는 게 Watchtower다.실행docker run -d \ --name=watchtower \ -e TZ=Asia/Seoul \ -v /var/run/docker.sock:/var/run/docker.sock \ --restart=always \ containrrr/watchtower --cleanup각 옵션의 의미는 이렇다.-v /var/run/docker.sock:/var/run/docker.sock : 호스트의 도커 소켓을 마운트해서 다른 컨테이너를 제어할 수 있게 한다. Watcht..
PhpStorm이나 IntelliJ에서 한글 언어팩을 켰는데 UI가 그대로 영어인 경우가 있다. 캐시를 지워도, IDE를 재시작해도 안 바뀐다.원인은 단순한데 찾기가 어렵다. 언어팩을 enable 하는 것과, 실제로 사용할 언어를 고르는 것이 별개가 됐기 때문이다.무엇이 바뀌었나예전에는 한글 언어팩이 마켓플레이스에서 설치하는 플러그인이었다. 설치하면 곧바로 적용됐다.그런데 언어팩이 IDE에 기본 번들로 들어오면서 설치/삭제가 아니라 enable / disable 방식으로 바뀌었다. 여기서 함정이 생긴다. enable은 "이 언어팩을 쓸 수 있게 해달라"는 뜻이지 "이 언어로 바꿔달라"는 뜻이 아니다.해결 순서1. 언어팩을 enable 한다Settings (Preferences) > Plugins > In..
스캔한 옛날 사진이나, 카메라 시계가 잘못 맞춰진 상태로 찍은 사진들의 메타데이터를 한 번에 고쳐야 할 때가 있다. ExifTool을 쓰면 명령 한 줄로 끝난다.설치brew install exiftool명령어위치만 변경exiftool -gpslatitude=37.6534 -gpslongitude=126.8321 \ -gpslatituderef=N -gpslongituderef=E \ -overwrite_original /경로/사진_폴더/*.jpg날짜만 변경exiftool "-AllDates=2024:08:24 12:34:56" \ -overwrite_original /경로/사진_폴더/*.jpg둘 다 변경exiftool "-AllDates=2024:08:24 12:34:56" \ -gpslatitu..
개발을 몇 년 하다 보면 오히려 기초를 대충 넘어가게 된다. HTML 태그도 그렇다. 화면에 똑같이 보이니까 아무거나 쓰게 되는데, 사실 각각 의미가 다르다.예전에 정리해뒀던 메모를 다시 꺼내 보충한다.이탤릭체: em vs i : 강조하고 싶은 부분을 이탤릭체로 표시 : 단순히 이탤릭체로 표시둘 다 화면에서는 기울어져 보인다. 차이는 의미가 있느냐다.은 emphasis, 즉 문장에서 강세를 두어 읽어야 할 부분이다. 스크린 리더는 이 부분의 억양을 실제로 다르게 읽는다. "나는 오늘 간다"와 "나는 오늘 간다"는 의미가 다른데, 그 차이를 마크업으로 표현하는 것이다.는 강조가 아니라 결이 다른 텍스트를 나타낸다. 학명, 외국어 단어, 배 이름, 생각을 나타내는 문장 같은 것이다.<!-- 강조: 읽을..
DeepL이라는 번역 서비스가 있다. 우리에게는 구글 번역과 파파고가 익숙하지만, 번역 품질만 놓고 보면 DeepL이 최강자라고 생각한다.그동안 DeepL은 한국어 번역은 지원하면서도 개발용 API에서는 한국어를 제공하지 않았다. 그러다 한국어 개발 API가 정식 오픈했고, 그 김에 젯브레인의 번역 플러그인으로 유명한 Translation에 기여를 하게 됐다.별로 한 것도 없는데 기여자 목록에 이름이 표시되니 기분이 좋더라.Translation 플러그인이란JetBrains IDE(IntelliJ, PhpStorm, WebStorm 등)에서 쓰는 번역 플러그인이다. 코드 안에서 단어나 문장을 선택하고 단축키를 누르면 바로 번역이 뜬다.변수명·함수명을 지을 때 적절한 영단어 찾기영문 라이브러리 문서나 주석을..
