인수인계 준비

Today I Learned 날짜 2024년 10월 31일 목요일 내용 누구나 알아볼 수 있는 코드 아임리포트를 떠나보내기 위한 나름의 작업을 착수했다. 그동안 동작하게만 만드느라 함수 이름, 파일 이름등을 개판쳐놨기 떄문이다. 열심히 문서작업도 해놨지만.. 그래도 코드를 보고 어디가 어딘지 쯤은 알 수 있게 해놔야 하지 않을까? 몇가지 규칙을 세워서 정리를 좀 했다. 사용하지 않는 것은 무조건 삭제한다. 데이터베이스에 접근하는 코드는 crud.py 에 다 모아둔다. 함수 이름은 길더라도 뭘 하는지 표현하도록 만든다. 함수 내용이 길면 각주로 어디서 어떤 짓을 하는지 써놓는다. 예외를 작성한 부분은 그 이유를 각주로 써놓는다. 정리하면서 느낀건.. 정말 코드 더럽게 써놨다. 단 한글자도 빠짐없이 내가 쓴 코드인데도 구조를 파악하기가 힘들었다… process 라는 표현이 드럽게 많고, 추상 클래스를 사용했는데 반복 코드가 한가득이였다. 게다가 중간에 의미 없는 과정이 괜히 들어가 있기도하고… 그때그떄 바로 다음 로직만 보면서 만들다보니 길이 S자로 만들어진 듯 했다. ...

2024년 10월 31일 · 1 분 · 배준수

잘못 낳은 자식

Today I Learned 날짜 2024년 10월 30일 수요일 내용 또이터 오차 또 데이터에 오차가 있다는 이야기를 듣고, 아임리포트 수리에 들어갔다. 실제로 다운로드 받아서 추려낸 데이터와 비교헀을 떄, 각 날짜보다 실제 나와야할 값보다 적은 값들이 찍혀있었다. 각 날짜는 모든 캠페인이나 광고그룹이 가지는 값의 합을 의미하니 어떤 캠페인이나 광고그룹이 누락되지 않았을까 싶어 뒤져보니 몇 개의 광고그룹이 시트에 포함되지 않아있었다. 예전에는 키워드 문제로 발생한 오류 떄문에 들어오지 않는 유형의 캠페인들이 있었으나 이번에는 불규칙했다. ...

2024년 10월 30일 · 2 분 · 배준수

VS코드에서 검색 범위 제한하기

Today I Learned 날짜 2024년 10월 29일 화요일 내용 VS코드 검색 제외 개인적으로 각 서비스마다 가상환경을 만들어서 패키지나 인터프리터 설정을 열심히 관리하고 있다. 아임리포트 작업 중, 로깅문을 로거로 설정하는 과정에서 대참사가 발생했다… 검색 기능에서 logging을 찾았는데 수천 개가 떴다. 원인은 가상환경의 패키지를 관리하는 lib 폴더 내에 것들도 검색됐기 떄문이다. logging이야 워낙 기본적으로 많이 쓰이니까 당연한거긴 한데.. lib 내의 패키지 관련 코드들은 건드리면 안되지만.. 실수로 싹 다 바꿨다. 다시 logger를 logging으로 싹다 바꿀수도 없는게, 내가 바꿔서 logger가 된건지 원래 logger였는지 수천 개를 구분할 수 가 없다.. 어쩔수 없이 가상환경을 싹 밀어버리고 다시 설치했다. ...

2024년 10월 29일 · 1 분 · 배준수

깃허브 cherry-pick 사용하기

Today I Learned 날짜 2024년 10월 28일 월요일 내용 cherry-pick 드디어 네이버 커머스 솔루션 서비스를 실서버 배포했다. 아직 심사 전이라 고객은 없긴하지만… 이전에 실서버 운영 관련해서 인수인계를 받을때 실서버 배포 후 처리해야할 것들(환경 변수, 커맨드, 크론 등등)을 미리 적어놓으라고, 정신없어서 까먹는다고 들었었는데 어느샌가 잘 안하고 있었다. 사실 실서버 배포후 하는 일은 거진 비슷하긴 해서.. 커맨드는 거의 안돌리고 크론작업 추가하거나 환경변수 새로 업로드 하는 정도? 물론 그러다가 피 볼 뻔한 일이 한 번 있긴 했어서 이번엔 슨배임께 배운대로 했다. 이번엔 페이스북 앱 설정, 네이버 커머스 솔루션 설정 등 할게 산더미지만 깔쌈하게 처리했다. ...

2024년 10월 28일 · 2 분 · 배준수

천 번 난 오류

Today I Learned 날짜 2024년 10월 25일 금요일 내용 천 번의 오류 우리 슬랙의 무료 평가판 기간이 끝나면서, 마지막에 추가한 sentry 알람이 사라졌다.. 이제 에러가 나는지 직접 들어가서 확인해봐야 한다. 요즘 설치 수가 많아지면서 그래도 잘 작동하는 줄 알았는데.. 똑같은 오류가 천 번 이상 지속적으로 나고 있었다. 오류 메시지는 쇼피파이 상품 미디어의 ID가 이미 존재하는 값이라, DB가 롤백된다는 내용이다. 모두 쇼피파이 설치 로직에서 발생했다. 쇼피파이 상품 미디어의 ID는, 쇼피파이에서 제공하는 값이다. 쇼피파이에서 globally unique id라 했으니까 분명 중복이 된 값이 들어올리는 없고.. 이미 저장된 상품을 또 저장해서 발생한 문제인지 알아봤는데, 이 에러가 터진 샵들 중 첫 설치인 샵들이 많았다. ...

2024년 10월 25일 · 2 분 · 배준수

알림톡에 링크 추가

Today I Learned 날짜 2024년 10월 24일 목요일 내용 알림톡에서 손님받기 알림톡에는 3가지 링크가 포함된다. 완성된 배너이미지 보러 가는것, 다운로드 받기, 삭제하기 버튼이다. 해당 버튼을 누르면 기존 어드민과는 별개의 페이지로 이동하고 해당 액션을 취할 수 있다. 그 내부에서 처리하는 건 이미 존재햐는 기능이라, 버튼을 누르면 서버 엔드포인트로 요청을 보내도록 구현할 수도 있겠으나, 그 요청을 검증해야 한다고 생각했다. 리소스를 건드리는 작업인 만큼, 권한이 있는 클라이언트의 요청임을 확인하고 싶었다. 버튼을 누르면, 하고자 하는 행동과 jwt 토큰이 path로 포함된 채 이동한다. 클라이언트에선 jwt 토큰을 서버로 보내 검증을 요청한다. 서버는 토큰이 올바르다면, 필요한 유저정보 (서비스 ID, 액세스 토큰, 플랫폼)와 배너이미지의 ID를 반환한다. 토큰이 올바르지 않다면 웬놈이냐며 쫒아낸다. 만약 이 과정이 없었다면 ID만 알아도 URL로 접근해 남의 리소스를 처리할 수 있을수도 있다. ...

2024년 10월 24일 · 1 분 · 배준수

페이스북 테스트앱으로 댓글 수집

Today I Learned 날짜 2024년 10월 23일 수요일 내용 테스트용 페이스북 앱 페이스북 앱은 참 갈대같다. 로그인과 관련된 설정을 바꾸더라도 안바뀔 떄도 있고 바로 바뀔 떄도 있다. 콜백 URL을 여러개로 설정해도 괜찮을 것처럼 UI가 되어있긴 한데, 어떻게 될지 모르겠다. 실서버에서도 사용하는거라 괜히 잘못 건드렸다가 요즘 아주 신나신 서비스께 누가 될까봐 건드리지를 못하겠다. 이번에 네이버 스마트스토어 쪽 서비스를 추가하면서 QA를 진행할 차례다. 지금 설정대로라면 인스타그램 로그인 부분은 실서버에 가서야 QA를 할 수 있는데.. 실서버 올라간다고 바로 솔루션이 개시되는게 아니라(심사 필요) 상관은 없다만.. 그래도 철저한 QA를 위해, 앞으로 개발의 편의성을 위해 테스트용 페북 앱을 만들어야 한다. 기존에도 시도했었으나 왠지 모르게 댓글만 안불러와진다. 게시글은 되는데 댓글만.. ...

2024년 10월 23일 · 1 분 · 배준수

알림톡 머갈톡

Today I Learned 날짜 2024년 10월 22일 화요일 내용 알림톡 배너 이미지를 모두 생성한 사람에게 알림톡을 보내줘야 한다. 처음 만들어 보는거긴 한데.. 나름 API 문서도 잘되어있고 테스트용 서버도 만들어놓은 서비스라, 생각보다는 쉽게 만들었다. 1 코드 비공개 로컬에서 잘 되길래, 테스트서버에 올리고 실제 알림톡을 보내봤는데 안보내진다. 뭔가 파라미터가 잘못됐다는데.. 정말 2시간동안 눈이 빠져라 찾아봐도 잘못된 부분이 없었다. 혹시나 싶어 발송메서드의 key 부분을 다시 API 문서에 있는 텍스트로 복사 붙여넣기 해봤다. 하는 과정에서 다시한번 봤으나, 다른 글자는 없었다. 그런데 갑자기 작동한다. 뭐가 잘못되었는지 여전히 모르고, 왜 작동하는지 여전히 모르겠다. ...

2024년 10월 22일 · 1 분 · 배준수

Selenium에게 패배한 개발자 : PIL

Today I Learned 날짜 2024년 10월 21일 월요일 내용 Selenium은 말을 듣지 않는다. 인스타그램 댓글을 가져와 이미지를 생성하고 있다. 과정은 Jinja2로 HTML 생성 ⇒ Selenium으로 HTML을 렌더링해 높이 파악 ⇒ HTML2Image로 높이를 정한 이미지 생성 이다. 근데, HTML 하단의 여백이 배경이 없이 나타난다. 그라데이션 모델은 배경이 CSS가 아니라 이미지인데, 하단 84px 정도는 이 배경이미지를 불러오지 못해서 하얗게 나타난다. 이걸 해결하기 위해 온갖 시도를 다해봤으나 실패했다… 오전에 우스갯소리로 “이걸 생성해서 흰색 만큼 자르는건 개발자로서 수치스러운 겁니다”라고 했었는데.. ...

2024년 10월 21일 · 2 분 · 배준수

서버가 HTML의 길이를 파악하는 법

Today I Learned 날짜 2024년 10월 18일 금요일 내용 HTML에서 전체 길이를 파악하는 법 인스타그램에서 가져온 댓글 10개를 이미지로 만들어야 한다. html2image는 생성할 때 사이즈를 표시할 수 있는데, 어떤 값을 넣어야 할지 불명확했다. 댓글의 작성 길이에 따라 어찌 될지 모르니… GPT께서, selenium을 이용하라고 하신다. 기본적인 원리는 selenium으로 서버에서 크롬창을 띄운다. 거기에 내가 이미지로 만드려는 HTML 파일을 올린다. 그 창의 길이를 측정한다. 이미지로 만들 때 그 값을 높이로 제공하면 딱 알맞은 이미지가 생성된다. 다. 코드가 참 더러운데 어떻게 작동은 된다…? ...

2024년 10월 18일 · 2 분 · 배준수