누구나 이해할 수 있는 코드 짜기

Today I Learned 날짜 2024년 1월 25일 목요일 내용 낫 놓고 기억자도 모름 알리익스프레스에서 크롤링을 제한해두었다. 어제 겪은 문제의 원인이다. 상품 정보를 가져오지 못하는 이유를 온갖 곳에서 찾았을 때 분명 보았던 글이고, 생각도 해봤지만 특정하지 못했다. 개발 실력을 키우는 수준에서 가능한 것과 그렇지 않은 것을 구별해내는 능력은 아직 먼 일일지도 모르겠지만, 좀 갖고싶다. 코드개선 오늘은 전체적으로 내가 작성한 코드의 퀄리티를 높이는 작업을 했다. 타입 힌팅 : 함수들의 반환 타입을 지정해주었다. 재사용성할 필요성은 느끼지 못해서 스키마에 추가하진 않았다. 키워드인자 : 함수를 정의할 때 parameter도 정의한다. 함수를 호출할 때 정의한 순서대로 값을 넣을 수도 있고(위치인자), 정의한 parameter 이름으로 넣을 수도 있다(키워드인자). 키워드 인자는 어떤 값이 어떤 인자로 쓰여있는지 확실히 알 수 있기 때문에, 여러 사람이 보는 코드에서 불필요한 혼동을 줄여준다. nltk 데이터 : 받은 리뷰들을 각 단어의 원형으로 토큰화하고, 긍부정을 판별하기 위해서 데이터가 필요하다. 데이터가 자주 업데이트 되지 않다보니 한번만 다운로드 하도록 변경했다. 기존에는 분석함수 호출할 떄마다 다운로드했는데, 큰 것은 용량이 122MB다 보니 너무 비효율적이다. S3 버킷에 넣을까 고민했는데, 매번 가져와서 조회하는 것도 효율적이지 않다고 생각했다. 그럼 docker-compose에 빌드할 때 다운로드하도록 추가할 것도 고민해봤다. 하지만 애초에 데이터를 저장해두는 이유는, 이 데이터가 업데이트가 잘 되지 않기 떄문이다. 최근 업데이트가 2016년이였으니까.. 그냥 위젯이나 이메일 템플릿 저장하듯이 디렉토리에 추가해주었다. 괜히 어렵게 생각했네. 회고 평탄할 줄 알았지만 힘든 한주였다. ...

2024년 1월 25일 · 1 분 · 배준수

열심히 집중하여 최선을 다해 아무것도 못하기

Today I Learned 날짜 2024년 1월 24일 수요일 내용 하루종일 아무것도 해낸 게 없다. 다행히 오늘은 딱히 프론트쪽에 심어둔 폭탄이 없어서 급하게 바꾸거나 할 부분은 없었다. 지금 스프린트에서, 리뷰들을 수집해오면 기존에 존재하는 테이블에 리뷰 수집 기록을 남기고, 이 테이블의 자식 테이블 격인 분석 기록 테이블에 레코드를 추가한다. 그리고 리뷰를 분석하여 결과 테이블에 결과를 기록한다. 상품에 대한 정보 중 일부(제목, 판매량 등)이 DB에 저장되지 않는 문제가 발생했으나 해결하지 못하고 있다. 상황이 참 꼬여있는게, 로컬에서는 받아오는데 전혀 문제가 없고 로컬에서 테스트 서버의 데이터베이스에 연결해서 테스트서버를 구동해봐도 DB에 정보를 잘 저장한다. 하지만 테스트서버에서 API를 테스트 했을때만 일부 정보를 찾지 못한다. 따라서 해결을 위한 테스트는 모두 테스트 서버에서 이뤄져야 하는데 나는 아직 코드싸개라 권한이 없다보니 참 힘들다. ...

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

피그마 안 본 카르마

Today I Learned 날짜 2024년 1월 23일 화요일 내용 코드를 그지같이 짠 댓가를 톡톡히 치뤘다. 문제는 나만 치룬게 아니라는게.. 기획안과 피그마 피그마와 기획안 현황을 제대로 숙지하지 않았다. 그래서 여러 문제가 생겼는데, 여러 분석 결과를 보여주는 화면에 관련된 API를 만들지 않았다. 리뷰의 판정에 중립을 설정하지 않았다. 필요한 데이터를 제대로 넘기지 않았다. 이외에도 수두룩하다. API 자체는 급하게 만들었으나 여러가지 수정해야할 것들도 존재했고 똑바로 만들지 않아서 고쳐야 할 것도 많았다. 애초에 내가 잘 테스트해서 끝내놨어야 했는데 그러지 못해서 발생한 일이었다. ...

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

ECS 망령

Today I Learned 날짜 2024년 1월 22일 월요일 내용 진척이 많이 됐지만, 디테일이 많이 부족한 상황. ECS Task 이쯤되면 ECS가 일본 축구선수 (이) 시바사키 가쿠의 약자는 아닐까 의심된다. 오늘 weekly review report 메일이 발송되지 않았다. 지금은 스프린트 중이라 나중에 고쳐야하지만 얼추 봤을땐 cron식이 잘못된 것으로 보인다. 구글 스프레드시트에 데이터를 추가하는 Task에서도 오류를 발견했다. 작동자체는 잘 되지만 데이터 상의 날짜가 이틀 전으로 들어간다. 내가 넣고자 하는 날짜는 오늘이었으나, UTC 시간 상 한국 시간 8시는 전날 오후 11시다. 따라서 Task가 동작하는 시간의 “오늘”은 실제론 어제다. 그리고 내가 작성한 cronjob은 날짜를 어제로 설정한다. 이 cronjob은 어제의 “어제”, 즉 그저께를 가리키게 된다. ...

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

Fastapi의 Background task

Today I Learned 날짜 2024년 1월 19일 금요일 내용 오늘은 어쩌다보니 내 생각의 흐름을 적지 않았다. 막혀서 깊게 고민한 적이 없어서 그런가.. API 어제 리뷰들에 대한 세부 정보를 만드는 함수들을 다 만들었다. 오늘은 프론트에서 해당 데이터를 요청할 때를 응답하는 API를 만들었다. 이미 데이터를 저장하는 건 완성되어 있었기 떄문에, 알맞게 받아서 주는 것은 어렵지 않았다. 프론트를 내가 하는게 아니다보니 다른 사람도 쉽게 이해할 수 있도록 작성하려고 나름 노력했다. 각주에도 헷갈릴 만한 부분도 적고, parameter나 변수, 함수 이름도 최대한 직관적으로 적었다. 너무 이름이 길어서 좀 거슬리긴 한데, 이도 저도 아닌 이름보다 낫기도 하고 정 거슬리면 실서버 배포 전에 바꾸면 되겠지. ...

2024년 1월 19일 · 2 분 · 배준수

python package 알아보기

Today I Learned 날짜 2024년 1월 18일 목요일 내용 하루종일 함수를 만들면서 코드를 짰다. 재밌다! nltk 파이썬 패키지 중 하나로 자연어 처리를 위한 패키지이다. 자연어라 하면 그냥 사람들이 쓰는 언어(영어, 한국어, 일본어 등등)다. 자연어 처리라 하면, 사람들이 작성한 문장을 단어 단위로 쪼개기도 하고, 그 쪼갠 단어를 원형으로 변형해준다. 예를 들어, “벌써 이번 달의 절반이 지났다니 시간 참 빠르네” 라는 문장을 “벌써”, “이번”, “달”, “의”, “절반”, “이”, “지났다니”, “시간”, “참”, “빠르네” 로 쪼갠다. 보시다싶이 그냥 띄어쓰기로 쪼개는 게 아니라 실제 어근 단위로 쪼개준다. 물론 한국어보단 영어가 훨씬 정확하다. 위 단어들은 원래 형태가 아니기 떄문에 “빠르네”를 “빠르다”로 바꿔준다거나 “의” , “이”와 같은 조사(영어에서는 관사)를 제거해주기도 한다. 의미 없는 단어들을 불용어(stopwords)라고 한다. ...

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

업보 청산하기

Today I Learned 날짜 2024년 1월 17일 수요일 내용 일이 많이 꼬여서 밤 새는거 아닌가 싶었으나 늘 그랬듯 답을 찾았다. 또경변수 지긋지긋한 ECS Task가 또 말썽을 부린다. 오늘 아침에 구글 스프레드시트에 추가되었어야 할 데이터가 추가 되지 않았다! 하필 1시간이 지나버려서 Task 기록도 안남았다. 실행 주기를 바꿔 실행해봤더니 또 환경변수를 못찾는다고 땡깡부린다. 하… 그동안은 테스트서버였고, 지금은 실서버라서 Task에 문제가 전혀 없는데 도대체 어디부터 또 시작해야 할지 눈 앞이 깜깜해졌다. 환경변수가 있는데 왜 못찾냐고! Task 상세정보를 봤는데 내가 알던 환경변수 경로와 달랐다. 생각해보니 실서버는 production을 위한 환경변수를 받아야 하는데 추가를 안해줬다. 진짜 없어서 못찾았구나? 그래도 미안하진 않다. 추가해주니 잘 작동한다. ...

2024년 1월 17일 · 4 분 · 배준수

DKIM 헤더에 포함시키기

Today I Learned 날짜 2024년 1월 16일 화요일 내용 다행히 Task들이 얼추 마무리 되었다. 얼추인 이유는 실서버에서도 잘 되나 확인해야 하니까.. DKIM이 없는 이유 DMARC 설정을 위해 SPF와 DKIM을 적용했었다. 이메일을 받으면 원본에서 header를 확인할 수 있다. 이것처럼 DKIM은 흔적도 없다. DMARC는 둘 중 하나만 통과하면 되기 때문에 기능에 이상은 없으나 분명 설정한게 나타나지 않으니 찝찝해서 그냥 지나칠 수 없었다. 고민의 흐름은 다음과 같았다. 이 인증의 핵심은 alph.kr 이라는 도메인에서 온 메일은 안전하다는 증거다. alph.kr은 AWS의 Route53에서 라우팅한다. 나는 테스트를 위해 info@alph.kr의 daum 메일로 보내고 있다. 목적지는 gmail 이 DMARC는 누가 어떻게 확인하는가? 우선 이 고민에 대한 답을 얻었다 ...

2024년 1월 16일 · 3 분 · 배준수

AWS ECS와 S3 버킷의 통신 해결

Today I Learned 날짜 2024년 1월 15일 월요일 내용 드으으으으디어 ECS를 해결했다! ECS 정복 직전 너무 자주 말한듯 하지만.. ECS 클러스터가 S3 버킷에서 환경변수를 가져오지 못하고 있었다. 질문 I am encountering an issue with my ECS service where tasks are consistently failing during deployment. The specific error message I receive is as follows: 1 ResourceInitializationError: failed to download env files: file download command: non empty error stream: service call has been retried 5 time(s): RequestCanceled: request context canceled caused by: context deadline exceeded ECS tasks are configured to download environment files from an S3 bucket. My ECS service is in the Seoul region (ap-northeast-2), and the S3 bucket is in the US East (Ohio) region (us-east-2). The S3 bucket and objects are not set to public access. I suspect that the issue might be related to timeout settings, as the error indicates that the request is canceled after multiple retries due to a context deadline being exceeded. I have tried setting the startTimeout and stopTimeout in the task definition JSON to 120 seconds, but this has not resolved the issue. ...

2024년 1월 15일 · 5 분 · 배준수

ECS 클러스터는 왜 일을 안할까?

Today I Learned 날짜 2024년 1월 12일 금요일 내용 타운홀미팅이 있어 오전밖에 시간이 없었다. 딱히 시간이 있었다고 해결이 됐을 것 같진 않지만.. SEO HTML의 <meta> 태그는 해당 페이지에 대한 다양한 정보를 표현하기 위해 사용한다. 쉬운 부분이라 다들 알겠지만, 나는 속성에 대해 몰랐던 부분이 있었는데, title 속성은 없다. meta가 아니라 head에 title 태그를 추가하면 된다. 최근 keyword 속성은 잘 쓰지 않는다. 너도 나도 이것 저것 추가를 많이 하다보니 알고리즘이 신경쓰지 않는다고 한다. description : 뭔가 읽기 편하고, 간결한게 좋을 것 같지만 사실 최근에는 검색의 핵심이다. 타겟 유저가 검색에 포함할 법한 단어가 포함되어 있는 것이 좋다. 따라서 동어반복은 좋지 않다. 그렇다고, 말이 안되는 단순 단어 나열만 작성하면 알고리즘이 무시한다. 이정도…? 구글 검색 봇의 마음은 참 갈대같다. ...

2024년 1월 12일 · 3 분 · 배준수