전체 글

전체 글

    [Python] 백준 15684번 - 사다리 조작

    [Python] 백준 15684번 - 사다리 조작

    문제: https://www.acmicpc.net/problem/15684 15684번: 사다리 조작 사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선 www.acmicpc.net 문제를 처음보고 이걸 어떻게 풀어야하나 좀 당황스러웠다 ㅎㅎ.. 일단 사다리 구현부터 해보자 싶어서 dfs를 활용해 사다리 구현만 해보았따. 이후 부르트포스로 빈 사다리 자리에 하나씩 넣어가면서 풀어야하나 고민을 하다가 1시간이 지나서 답을 보기로했다. 답을 보니 실제로 dfs로 하나하나 넣어가면서 최소값을 찾는 문제였다.. 부르트 포스를 많이 안풀기도 했고, 비효율적이라는 생각이 들어서..

    [Python] 백준 2146번 - 다리 만들기 (bfs, dfs 풀이)

    [Python] 백준 2146번 - 다리 만들기 (bfs, dfs 풀이)

    문제: https://www.acmicpc.net/problem/2146 2146번: 다리 만들기 여러 섬으로 이루어진 나라가 있다. 이 나라의 대통령은 섬을 잇는 다리를 만들겠다는 공약으로 인기몰이를 해 당선될 수 있었다. 하지만 막상 대통령에 취임하자, 다리를 놓는다는 것이 아깝다 www.acmicpc.net 문제를 보고 각 육지의 테두리에 있는 좌표들만 모아서 좌표들끼리 최단거리를 비교하며 최소값을 찾아가야겠다고 생각을 했다. 처음에는 bfs로 육지가 나올 때 마다 주변 4방향을 탐색하여 바다와 인접하는 경우에만 리스트에 담으며 테두리 좌표값을 구했다. 코드는 다음과 같다. from collections import deque n = int(input()) board = [list(map(int, ..

    [K8S] 'node had volume node affinity conflict' 문제 해결

    [K8S] 'node had volume node affinity conflict' 문제 해결

    쿠버네티스 실습 중 mysql pod가 계속 pending 상태에 빠져있어 pod describe를 봤더니 다음과 같은 에러메세지가 뜬다. 1 node had taint {}, that the pod didn-t tolerate - 한 노드는 테인트 설정 때문에 할당이 되지 않는 상태이다. 1 node had volume node affinity confilct - 한 노드는 affinity conflict 때문에 할당이 막혀있는 상태이다. 현재 환경 구성은 마스터노드 1대와 워커노드 1대로 총 2대의 노드를 사용중이다. 마스터 노드 마스터 노드의 정보를 확인해보면, NoSchedule이라는 Taint가 적용되어있다. 즉, 마스터 노드는 스케줄링을 허용하지 않고있다는 의미다. 따라서 1 node had ..

    Ubuntu에 NFS 구성하기

    Ubuntu에 NFS 구성하기

    쿠버네티스 실습을 하면서 파드에 PV(Persistent Volume)을 붙이기 위해 NFS를 구성했다. 일반적으로는 NFS서버를 따로 만들어 구축하지만, 노트북의 리소스가 부족해 k8s worker-node로 쓰고있는 서버(Ubuntu)에 nfs 스토리지를 만들어 master node에 mount 해보았다. NFS를 어떻게 구성했는지 살펴보자. NFS란 NFS란, Network File System의 약어로 네트워크에 파일을 저장하는 것이다. 이는 다른 서버에 저장 공간을 생성해두고, 네트워크를 통해 접근하여 로컬에 있는 저장공간처럼 사용하도록 하는 분산파일시스템이다. Worker Node - NFS 스토리지 생성 1. NFS 패키지 설치 sudo apt install nfs-kernel-server ..

    [K8S] emptyDir 공유 볼륨 사용하기

    [K8S] emptyDir 공유 볼륨 사용하기

    EmptyDir 볼륨 emptyDir은 컨테이너 간에 공유 볼륨을 사용하고자 할 때 사용된다. 이때 생성되는 공유 볼륨은 파드 안에 생성되기 때문에 파드가 삭제될 때 함께 삭제된다. (즉, 파드 재생성시 데이터도 날라가게 된다.) 만약 파드간에 공유 볼륨을 사용하고자 한다면, persistent volume(PV)(NFS, 클라우드 스토리지 볼륨 등)을 사용하는것이 좋다. PV는 영구볼륨으로 파드가 삭제되어도 계속 남아있기 때문이다. 먼저 파드 템플릿은 다음과 같이 작성한다. apiVersion: v1 kind: Pod metadata: name: pod-volume-1 spec: containers: - name: container1 image: kubetm/init volumeMounts: - nam..

    [IaC] VirtualBox + Vagrant로 CentOS 환경 구축하기

    [IaC] VirtualBox + Vagrant로 CentOS 환경 구축하기

    쿠버네티스 교육을 듣기에 앞서 환경 세팅을 위해 VirtualBox와 Vagrant로 CentOS OS의 가상머신을 구축해보았다. Vagrant란? Vagrant란 HashCorp사의 서비스로, 코드 기반으로 호스트에 빠르게 가상환경을 구축하도록 해준다. 코드 기반으로 가상환경을 구축하기 때문에 IaC(Infrastructure as Code) 도구이다. 일반적으로 VM을 생성하려면 Hypervisor에 가상머신을 생성하고, OS를 설치하고 HDD 파티션 설정, SSH 설정 등 많은 과정을 거쳐야 한다. 이때 Vagrant를 사용하면 이 과정들을 코드 기반의 파일(vagrantfile)로 생성해두고 hypervisor에 빠르게 동일한 스펙의 서버들을 프로비저닝 할 수 있다. (그림 참조) 참고로 Vagr..

    [Django] 상용 환경에서 staticfiles를 찾지 못하는 에러 해결

    [Django] 상용 환경에서 staticfiles를 찾지 못하는 에러 해결

    https://jjung0326.tistory.com/101 [django] WEB 서버 '400 Bad Request Error' 해결 AWS에서 3 tier architecture을 구성하고 WEB서버에 접속하면 'Bad Request 400 에러'가 떨어지는 문제를 해결해보았다. 구성한 서버는 다음과 같다. WEB - Nginx IP: 3.39.165.45 WAS - Gunicorn IP: 3.37.209.223 1. 에러 확 jjung0326.tistory.com WEB서버에서 400에러가 뜨는 문제는 해결했는데... 화면이 깨져 나오는걸 보니 staticfiles 경로를 찾고있지 못하고 있는 것 같다. 아마 설정파일 어딘가에서 꼬여있는 것 같다. 뭐가 문젠지 찾아보자. 1. Django sett..

    [Django] WEB 서버 '400 Bad Request Error' 해결

    [Django] WEB 서버 '400 Bad Request Error' 해결

    AWS에서 3 tier architecture을 구성하고 WEB서버에 접속하면 'Bad Request 400 에러'가 떨어지는 문제를 해결해보았다. 구성한 서버는 다음과 같다. WEB - Nginx IP: 3.39.165.45 WAS - Gunicorn IP: 3.37.209.223 1. 에러 확인 vi /var/log/nginx/error.log 명령어로 어디서 에러가 나고있는지 확인할 수 있다. 에러내용을 보면 ~/register_form/.static_root 폴더와 ~/register_form/.static_root/css 폴더가 forbidden 되어있다. 그리고 was 서버로 connection이 refused 되어 연결이 계속 failed되는 상태이다. 2. 포트 확인 WEB서버와 WAS서버..