Skip to content

Latest commit

 

History

History
43 lines (38 loc) · 2.48 KB

2024-01-11-thu.md

File metadata and controls

43 lines (38 loc) · 2.48 KB

TIL

virtumall 배포 삽질... 두구둥

  1. mysql 연결
  • Error: MySQLdb.OperationalError: (2002, "Can't connect to local server through socket '/run/mysqld/mysqld.sock' (2)"
  • 결론적으로는 manage.py의 default setting 경로가 settings.development 로 되어있어서 생긴이슈였다. 로컬 mysql에 연결되게끔 설정되어 있었다.
  • 원인 파악을 위해
    • Github Action 배포 파이프라인에서 .env 파일이 잘못들어갔는지 확인
    • docker pull 이미지가 최신인지 확인
    • 보안 그룹 설정 확인하고, docker container 내부에서 RDS mysql 서버로 연결되는지 확인(ping)
    • 위의 모든 것이 정상이이서 설마...? 하고 python manage.py diffsettings 로 확인해보니, dev 환경의 settings가 적용 되어있었다. (절레절레)
  1. nginx -> gunicorn으로 request 포워딩
    • docker exec -it virtumall-proxy ping virtumall_api
    • nginx.conf의 proxy_pass 설정에서 container 이름대신 docker-compose의 서비스이름을 썼다.
location / {
	proxy_pass http://virtumall:8000;
}

algorithm https://github.com/aohus/TIL/blob/main/algorithm/List/dynamic_array_flowerbed.ipynb https://github.com/aohus/TIL/blob/main/algorithm/List/dynamic_array_string_comprehensions.ipynb

easy라는데 나만 어려웠던 문제

문제
문제는 식물 배치 정보인 flowerbed와 심어야하는 식물의 수 n이 주어진다.

flowerbed = [1, 0, 0, 0, 1]
위와 같이 주어진 flowerbed의 1은 식물이 심있음을 뜻하고, 0은 빈자리를 뜻한다.
식물은 연속해서 심을 수 없을 때, n개의 식물을 심을 수 있으면 True, 자리가 부족하면 False를 반환하라.

풀이
컨셉: 식물을 심을 수 있는 자리에 심고, 심은 식물의 수를 count로 센다.
- prev로 이전 자리에 식물이 있는지 기억한다.
- flowerbed를 순회하며, 직전 자리가 비어있고(=prev가 0이면) 현재 자리도 비어있으면 식물을 심고 count+1 한다.
- 식물을 심었는데, 뒤에 식물이 있는 경우 count-1 해준다.

마지막 count-1 해주는 부분이 중요하다.
- 식물을 심을 수 있는 조건은 '현재 자리'를 기준으로 양 옆이 모두 0 이어야한다. 따라서 연속된 3자리를 확인하고 count+1 해주어야한다.
- 하지만 현재 풀이에서는 '현재 자리' 직전이 0이면 우선 count+1을 해주고 있기 때문에, 그 다음 자리 확인시 조건을 만족하지 못하면 다시 count-1을 해주고 있다.