전체 글

각종 버그 🐞/Python

[Python] requests 패키지의 ConnectionResetError(104, 'Connection reset by peer')

python의 requests 패키지를 사용하다가 보면 간혹 connection reset by peer라는 내용의 104 에러가 발생하곤 합니다. 소켓 연결 실패 시에 생기는 에러인 것으로 알고 있는데, 1시간 가량의 구글링에도 답을 찾지 못하다가 header를 추가하는 방식으로 해결해서 그 과정을 정리해 두려고 합니다. 문제 상황은 requests 패키지의 get 함수를 사용해 크롤링을 진행하려다가 발생했습니다. 아마 다들 비슷하실 것 같은데요, 구체적으로는 다음의 코드를 실행하다가 발생했습니다. import requests r = requests.get("http://patft.uspto.gov/") 에러 내용은 다음과 같았습니다. Traceback (most recent call last): Fi..

Python/백준 알고리즘

[백준 알고리즘: python 3] #2805 - 나무자르기(이분 탐색 스터디)

https://www.acmicpc.net/problem/2805 2805번 문제는 백준 알고리즘의 이분 탐색 단계에 속하는 비교적 낮은 성공률의 문제입니다. 문제의 성공률이 낮아 어려울까 생각을 했었는데, 이분 탐색의 개념을 그대로 적용할 수만 있다면 난이도가 높은 문제는 아니었습니다. 이분 탐색은 매 스텝마다 탐색의 범위를 절반씩 줄여나가며 정답으로 가까워지는 탐색 방법으로 탐색 방법 중 매우 빠른 속도를 자랑하는 알고리즘입니다. 흔히, 오름차순으로 이루어진 배열에서 원하고자 하는 값을 찾을 때 이분 탐색을 사용해 빠르게 찾아내는 것을 예시로 들어 설명하는 것 같았습니다. 저는 이분 탐색의 개념을 이 블로그에서 쉽게 알 수 있었는데요, 그림으로 차근차근 설명이 되어 있으니 공부하실 때 참고하시면 좋을..

Python/백준 알고리즘

[백준 알고리즘: python 3] #1027 - 고층 건물

https://www.acmicpc.net/problem/1027 1027번 문제는 겉보기에 그렇게 어렵지 않게 보이지만, 약간의 수학적인 아이디어가 필요한 문제입니다. 여기서 사용된 수학적인 아이디어란, 어떤 건물에서 다른 건물을 볼 수 있는 조건이 수학적으로 어떻게 해석되느냐? 에 대한 답을 할 수 있어야 한다는 것이었네요. Hint! 문제에서는 어떤 건물(x1, y1)에서 다른 건물(x2, y2)을 볼 수 있으려면, 두 건물을 이은 선분이 다른 건물을 지나거나 접하지 않아야 한다고 했습니다. 아래의 그림은 임의의 한 건물을 기준으로 오른쪽을 볼 때, 볼 수 있는 건물들이 무엇이 있는지 보여준 것입니다. 아이디어 설명을 위해 그렸네요. 우선, 빨간색 건물을 기준으로 본다고 할 때, 저는 이 건물의 오..

Python/백준 알고리즘

[백준 알고리즘: python 3] #1026 - 보물

https://www.acmicpc.net/problem/1026 1026번 문제는 보물이라는 이름으로 소개되어 있습니다. 어렵지 않은 문제였고, 다만 저는 문제를 풀 때 두가지 방법이 생각이 났었네요. Hint! 이 문제에서 주어진 것처럼, A는 재정렬을 해야하는 수열, B는 그대로 있어야 하는 수열입니다. S는 두 배열의 각 원소끼리 곱하여 더하는 수식을 의미합니다. (임의로 배열을 설정하고 수식에 적용하시면 알 수 있습니다.) 두 배열의 각 원소끼리 곱하여 더했을 때, 최소가 되는 상황은 한 원소가 크면 클수록 곱해지는 다른 원소는 작아져야 한다는 것입니다. 문제의 예제와 힌트를 보면, 재정렬된 A는 B의 원소들 중 가장 큰 원소 (8)를 A 원소들 중, 가장 작은 수(0)와 매치하고 그 다음 큰 ..

Python/백준 알고리즘

[백준 알고리즘: python 3] #1629 - 곱셈(분할 정복 스터디)

https://www.acmicpc.net/problem/1629 이번 문제는 분할 정복 개념을 공부하기 위해 백준 알고리즘의 단계별 문제 풀이에서 고른 성공률 25%의 곱셈이라는 문제입니다. 음.. 이 문제를 풀면서 느꼈던 것은 분할 정복의 개념 자체는 쉽지만 이 개념을 어떻게 적용하는지는 쉽지 않다는 것입니다. 마치, 고등학교 때 미적분 기본 개념들을 숙지해도 수능의 29, 30번 문제는 어떻게 푸는지 감이 잘 안잡히는... 그런 느낌이었습니다. 아이디어가 떠오르면 어떻게든 하면 되는데? 그 아이디어가 생각나기까지는 어느 정도 직관이 필요한 것 같습니다. 분할 정복이란? 분할 정복이란, 말 그대로 분할하고 정복하여 답을 구해내는 알고리즘 기법입니다. 당연한 말이잖아... 좀 더 풀어 설명하면, 주어진..

Python/백준 알고리즘

[백준 알고리즘: python 3] #10951 - A + B - 4

https://www.acmicpc.net/problem/10951 백준 문제 번호 순서대로 푸는 것이... 그닥 좋은 것 같지 않아서 단계별로 풀고 있습니다. (쉬운 문제가 정말정말 많군요 ㅠㅠ, 순위 팍팍 올려버뤼기~) 쉬운 대부분의 문제는 스킵하고 살짝 테크닉이 들어간 문제들을 리뷰하려고 합니다. 10951 문제.. 사실 별건 아니고, while문을 사용하는 단계에 있는 기본 문제인데 사용자의 `input`이 없을 경우 while문을 어떻게 빠져나오는지 몰라서 구글링 했다는 그런... 자존심 살짝 상한 일이 있어서 살포시 적고 갑니다. 채점 컴퓨터의 `input`이 없는 경우 런타임 에러가 발생하는 것을 확인할 수 있었습니다. 따라서, 인풋을 진행을 할 때 런타임 에러가 발생하는 경우 사용자의 입력..

Python/백준 알고리즘

[백준 알고리즘: python 3] #1931 - 회의실 배정 (Greedy 알고리즘 스터디)

https://www.acmicpc.net/problem/1931 이번 문제는 Greedy 알고리즘에 대한 개념을 공부하기 위해 선정된 1931번 회의실 배정 문제입니다. Greedy 알고리즘이 이름이 생소해서 시간이 좀 걸릴까 했는데, 개념 자체는 그렇게 어렵지 않고 그 개념을 그대로 이해해서 풀 수 있는 문제여서 적절히 잘 배운 것 같습니다. Greedy 알고리즘, 탐욕 알고리즘은 매 순간마다 최적의 답을 찾아가는 알고리즘입니다. 보통 이전에 리뷰한 Dynamic Programming(DP)과 비교가 되곤 하는데요, 되도록 모든 경우에 대해 탐색을 해서 전체의 해결책을 찾는 DP와는 달리 탐욕 알고리즘은 지금 당장의 분기마다 최적의 답만 찾아간다는 것이 다릅니다. 1분의 시간이 있는데, 지금 당장 바..

웹/Django

Django 서비스 AWS로 배포하기 - [6] https 적용하기

Django 서비스 AWS로 배포하기 - [1] 프로젝트 준비와 AWS 서버 대여 Django 서비스 AWS로 배포하기 - [2] github과 프로젝트 업로드 Django 서비스 AWS로 배포하기 - [3] uWSGI 연결하기 Django 서비스 AWS로 배포하기 - [4] nginx 연결하기 Django 서비스 AWS로 배포하기 - [5] 도메인 연결하기 (가비아) 이번 포스트는 AWS Certificate Manager를 이용해 SSL 인증서를 발급하고 nginx에 적용하여 HTTPS 주소로 웹 페이지를 운영할 수 있도록 해보겠습니다. 여기까지 하시면 웹 페이지 배포와 관련된 기본적인 부분은 모두 완료되었다고 생각하시면 됩니다! 그리고 아래 과정을 통해 과금이 발생할 수도 있습니다. 정확히 얼마나 ..

웹/Django

Django 서비스 AWS로 배포하기 - [5] 도메인 연결하기 (가비아)

Django 서비스 AWS로 배포하기 - [1] 프로젝트 준비와 AWS 서버 대여 Django 서비스 AWS로 배포하기 - [2] github과 프로젝트 업로드 Django 서비스 AWS로 배포하기 - [3] uWSGI 연결하기 Django 서비스 AWS로 배포하기 - [4] nginx 연결하기 nginx를 연결하여 자신의 프로젝트를 연결했다면, 이젠 못생긴 url 주소를 변경하고 싶으실 겁니다. 이번 포스트에서는 가비아에서 도메인 주소를 구입하여 AWS에 연결해보도록 하겠습니다. (+2020.11.23 추가) AWS 상에서 Route 53 부분의 UI 디자인이 바뀐 부분을 인지해둔 상태입니다. 업데이트를 해두려면 날을 잡고 살펴봐야 하는데 여유가 잘 없네요 ㅠㅠ 조만간 업데이트 해두려고 합니다! 일단 ..

Python/백준 알고리즘

[백준 알고리즘: python 3] #2178 - 미로탐색(BFS 스터디)

https://www.acmicpc.net/problem/2178 2178번 문제는 알고리즘 스터디에서 BFS 주제로 잡은 문제입니다. 기본적인 BFS 문제인 것으로 생각이 될 정도의 난이도인 것 같고 연습하기에 좋은 것 같습니다. Breadth First Search(너비 우선 탐색)의 줄임말인 BFS는 깊이 우선 탐색인 DFS 와 함께 소개가 되고는 합니다. 노드를 전부 탐색한다는 점에서 비슷하지만 탐색하는 방식의 차이 때문에 각각의 방법으로 풀 수 있는 문제가 구분되기도 하기 때문인데요, 미로에서 시작 지점부터 도착 지점까지 최소거리를 구하는 이번 문제가 대표적인 BFS 문제로 여겨지는 것 같습니다. BFS는 DFS와는 달리 재귀적인 함수의 형태를 가지지 않는 점과, Queue 자료 구조를 사용한다..

hellonero
네로의 다락방