qwlake's Blog

어서오세요, 반갑습니다 :)

백준 1406번 - 에디터

1406 - 에디터 1. 개요 https://www.acmicpc.net/problem/1406 2. 코드 LinkedList version 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41...

[Django] 장고 Rest API 서버 https 프로토콜 적용하기 (feat. nginx)

서론 클라이언트(어플)에서 서버(Django)와 통신할 때 통신내용의 보안을 강화하고자 https 프로토콜을 사용하고자 한다. https란? 깊게 파면 글이 너무 길어지니 짧게 하겠다. 우리가 이전에 주로 사용했던 http 프로토콜은 암호화되어 있지 않기 때문에 중간에 누가 패킷을 가로챈다면 내용을 볼 수 있다. 당장 여러분의 컴퓨터에 와이어샤크...

[Django] 장고 모델에 상속 사용하기 - 비슷한 모델 여러 개 생성, 상속으로 해결하기

서론 비슷한 Django 모델을 여러 개 만들어야할 때가 있다. Python의 상속을 통해 이를 해결해보고자 한다. 어떤 경우에 사용할까? Django는 모델 하나가 데이터베이스 테이블 하나를 구성한다. 예를 들어 다음과 같은 모델이 있다고 가정하자. 1 2 3 4 5 6 7 8 9 from django.db import models clas...

[Scrapy] 스크래피 LinkExtractor 모든 링크 가져오지 못하는 버그 - 중복된 링크 거르지 않고 모두 가져오기

서론 Scrapy를 사용해 크롤링을 하다 보면 링크를 크롤링하는 경우가 많다. 이 때 a태그 안의 href 값이 상대 주소로 되어 있는 경우가 있는데(ex ./mypage/payments) 이를 절대 주소로 바꿔주는 기능이 LinkExtractor이다. LinkExtractor 구조 뜯어보기 LinkExtractor를 사용할 때에는 다음의 경로에...

[Django] pytest를 사용한 장고 테스트 환경 구축 (feat. pytest Docker)

서론 Django 서버의 API 요청, Model 생성, 기능 작동 등을 테스트 해보려 한다. 테스트가 필요한 이유 우리는 기능을 추가할 때마다 기존 기능과 새로 추가된 기능이 모두 동작하는지 확인할 필요가 있다. 테스트 환경이 없다면, 이 때마다 개발자가 모든 기능을 일일이 열람하며 잘 작동하는지 확인해야 할 것이다. 하지만 테스트 환경을 잘 ...

[Django] pgAdmin 적용과 Nginx 설정 (feat. Docker)

서론 우리팀의 Django 서버의 데이터베이스는 PostgreSQL을 사용한다. 이 데이터베이스를 조금 더 쉽게 관리, 모니터링하기 위해서 pgAdmin을 설치하려 한다. 또한 우리는 docker로 관리되고 있는 상황이라 이 과정에서 pgAdmin으로 접속하기 위한 Nginx 설정도 다뤄보려 한다. pgAdmin? https://www.pgadm...

[Django] Celery,Redis로 Scrapy 크롤링 주기적으로 하기 (feat. Docker)

서론 우리 팀에서 Django로 구축한 서버는 Scrapy로 주기적으로 크롤링해서 데이터베이스에 저장하는 역할을 한다. 동시에 저장된 데이터를 달라는 요청이 들어오면 이것도 대응해야 한다. 만약 이 과정을 동기로 처리한다면 크롤링 하는 동안에는 요청에 응답하지 못하기 때문에 비동기로 처리하려고 한다. 또한, 주기적으로 작업(크롤링) 이벤트를 발생 시...

2019 카카오 겨울 인턴 4번 - 호텔 방 배정

https://programmers.co.kr/learn/courses/30/lessons/64063 연결 리스트(Linked List) 입력 배열의 크기가 최대 20만 이므로, 꽤 크다. 방이 이미 배정 됐을때 그 다음 방을 찾기 위해서 순차 탐색만 하면 시간이 너무 오래 걸린다. 비어 있는 방을 빠르게 찾기 위해서는 연결 리스트(Linked ...

2019 카카오 겨울 인턴 3번 - 불량 사용자

https://programmers.co.kr/learn/courses/30/lessons/64064 이 문제는 각 제재 아이디에 해당하는 응모 아이디를 선별해서 가능한 모든 조합을 구하면 된다. 포인트는 각 제재 아이디는 응모 아이디 하나에 무조건 매칭되어야 한다. 예를 들어 제재 아이디: *a*, *** 응모 아이디: aaa, bbb 인 ...

2019 카카오 겨울 인턴 2번 - 튜플

https://programmers.co.kr/learn/courses/30/lessons/64065 문제 이해를 잘 못 하는 사람이 많은데, 나도 코딩테스트때 좀 헤맸었다. 1 2 3 4 5 6 { {1,2,3}, {2,1}, {1,2,4,3}, {2} } 두 번째 입력 예제를 보면 각 원소의 개수가 모두 다른 것...