문제 개요 기존에 있는 사다리에 다리를 추가해서 본래 자리로 돌아올 수 있도록 하는 최소의 다리수를 구하는 문제입니다. 문제 접근 문제 조건을 잘못봐서 다리가 최대 3개까지라는 것을 모르고 2270개의 조합을 어떻게 브루트포스로 풀지라는 생각 때문에 삽질을 했습니다. 사다리에 다리를 추가하는 과정을 백트래킹으로 구현하면 해결되는 문제입니다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Objects; class Po..
서론 Django 프로젝트의 Docker 컨테이너에서 슈퍼유저를 생성하는 방법을 소개합니다. 본론 Dockerfile에서 오류 Docker Image로 만들 때 createsuperuser 를 실행하려고 하면 아래와 같은 에러가 발생합니다. ex) echo "example/example@example.com/password/password" | python manage.py createsuperuser Superuser creation skipped due to not running in a TTY. You can run manage.py createsuperuser in your project to create one manually. 위 문장에서도 나와 있듯 수동으로만 슈퍼 유저를 생성할 수 있도록 ..
서론 Ubuntu 22.04에서 도커컴포즈 파일로 build 옵션을 사용해서 도커파일을 빌드하고 컨테이너로 올리려고 할 때 계속해서 http: invalid Host header라는 오류가 발생하였습니다. 해당 오류를 해결하는 방법을 소개합니다. 본론 문제 소개 시스템 환경 OS: Ubuntu 22.04 docker: v20.10.24 docker-compose: v2.17.2 날벼락 같은 오류 소식. 다른 머신에서는 정상적으로 작동 되는데, 대체 왜 너는 안되니? docker compose up 명령어 수행 중 발생한 오류로 docker-compose.yaml 파일에 이미지를 build 옵션을 통해 작성할 경우에 buildkit에서 오류가 발생했습니다. 해당 문제를 해결하기 위해 구글링했습니다. 문제 ..
문제 개요 세로줄과 가로줄의 문제의 조건을 만족하는 경사로의 개수를 찾는 문제입니다. 문제 접근 구현문제입니다. 이 문제를 풀면서 다시한번 구현이 약하다는 것을 느꼈습니다. 단순 구현문제 같은데 사소한 실수가 많아서 테스트를 성공하지 못한 경우가 많았습니다. 핵심은 문제의 조건을 잘 이해하고 이에 맞도록 구현하는 것이라고 생각합니다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class Main { static int N; static int L; static int[][] map; static void input() t..
서론 Docker 컨테이너로 Django와 MySQL 혹은 MariaDB 를 올려서 연결하는 방법을 소개합니다. 본론 docker-compose.yaml DB Image version: "3.7" services: apop: ... db: # 이미지 이름과 버전을 명시 image: mariadb:11.1.3 # 꺼져도 다시 시작 restart: always # 컨테이너 이름 -> settings.py에서도 사용 container_name: mariadb # 마운트 이름 지정, docker desktop을 사용한다면 Volumnes에 해당 이름으로 저장 volumes: - mariadb-data:/var/lib/mysql # 네트워크 이름 networks - network1 ports: - "3306:33..
문제 개요 최대 8개의 CCTV의 방향을 바꾸어가면서 가장 많은 지역을 감시할 수 있는 방법을 찾는 문제입니다. 문제 접근 최대 8개의 CCTV가 존재하고 4방향으로만 돌릴 수 있으므로 최대 48=65,536 번의 시도가 있어야 합니다. 따라서 최대 시도 횟수가 적으므로 브루트포스로 해결할 수 있습니다. 그래서 백트래킹과 일부 구현을 통해 문제를 해결하였습니다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.List; class Camera{ private ..
서론 서버를 이전하거나 불의의 사고로 웹 서버가 중단 되어도 다시 살아날 수 있게끔 도커를 이용해 Django 서버를 이미지화 하는 방법을 소개합니다. 여기에서는 Dockerfile 작성 방법에 대해서 소개합니다. 배포에 필요한 다른 기술들은 다루지 않습니다. 본론 DockerFile 개념 도커 이미지를 만들기 위한 스크립트라고 생각할 수 있습니다. 도커 프로그램은 도커파일에 기술된 대로 명령을 수행하여 적절히 가공된 이미지를 생성할 수 있습니다. 작성법 특별한 확장자가 필요하지 않습니다. 그저 파일명을 Dockerfile로 설정하는 걸로 충분합니다. 도커파일의 기본적인 스크립트는 아래와 같이 작성합니다. # 파이썬 버전은 https://hub.docker.com/_/python 여기에서 확인할 수 있습..
서론 Django에서 static 파일들을 전송할 때 localhost에서는 아무 문제 없을 수도 있지만, 실제 배포시에는 static 파일을 전달할 수 없기 때문에 이런 static 파일들을 모아서 웹 서버에서 전달해야 합니다. 이때 static 파일들을 모으는 방법을 소개합니다. 본론 static 클라이언트에게 전달되는 변하지 않는(정적인) 파일들을 통칭합니다. 예를 들어 css, js, img 등이 해당됩니다. settings.py static 파일들을 모으거나 사용하기 위해서는 settings.py에 설정을 해주어야 합니다. STATIC_URL Django Template에서 static 태그를 사용했을 경우에 주어지는 기본 url을 의미합니다. 예제 # settings.py STATIC_URL ..
