서버 프로그래밍(281)
-
Python 테스트 커버리지 확인
작성한 unit test가 어느 정도의 소스 코드에 대한 테스트를 커버하고 있는지 확인할때 사용한다. $ python -m unittest discover $ coverage run -m unittest discover https://coverage.readthedocs.io/en/coverage-5.2/ Coverage.py — Coverage.py 5.2 documentation Coverage.py is a tool for measuring code coverage of Python programs. It monitors your program, noting which parts of the code have been executed, then analyzes the source to identif..
2020.07.17 -
MongoDB의 샤딩된 컬랙션에서 $lookup Aggregation 연산 불가
MongoDB의 Aggregation 연산시 $lookup을 이용하면 여러개의 컬랙션에서 쿼리를 처리한 후 합칠 수 있다. (일종의 JOIN 연산) 이것은 유사한 데이터를 가진 여러개의 컬랙션의 결과를 합쳐서 정렬하여 하나의 결과로 만들때 꽤나 유용하다. 다만, enableSharding 된 컬랙션의 경우에는 $lookup Aggregation에서 사용할 수 없다는 것이다. 잘 동작하던 컬랙션을 향후 데이터가 많아질 것을 대비해서 샤딩을 적용했더니 그 다음부터 멀쩡하던 API가 동작하지 않아서 발견한 이슈이다. https://stackoverflow.com/questions/34633111/mongodb-to-use-sharding-with-lookup-aggregation-operator MongoDB..
2020.07.14 -
Python 웹사이트 스크래핑시 인코딩 문제 해결
euc-kr 인코딩 웹사이트의 경우나, utf-8 인코딩 웹사이트임에서 한글이 깨지는 경우 다른 언어에서 늘 했던대로 문자열 인코딩/디코딩으로 한글 인코딩을 변경해주려고 했는데 이것이 통하지 않는다. 간만에 삽질을 하던 끝에 requests로 사이트를 읽어왔을때 아래와 같이 respons의 인코딩을 None으로 바꿔주고 텍스트를 가져오면 UTF-8로 변경된 문자열이 넘어온다. 물론 모든 사이트에 해당하는 것이 아니라 euc-kr로 인코딩되어 있거나 utf-8로 인코딩했다고 하는데 한글이 깨지는 사이트 등 일부에만 해당하는 듯. 인코딩이 유니코드 인코딩(예: UTF-8 등)이거나 한글 인코딩(예: EUC-KR)이면 일반적으로 한글이 깨지지 않지만, ISO-8859-1와 같이 영문 인코딩이면 한글이 깨지게 ..
2020.07.14 -
Python urlopen의 HTTP Error 403: Forbidden
urlopen과 BeautifulSoup을 이용하여 웹사이트에서 정보를 파싱하는 기능을 구현했는데, 적지 않은 외국 사이트에서 "HTTP Error 403: Forbidden" 에러가 발생했다. 아마도 외국 사이트들은 쿠키 사용을 승인 받는 팝업이 뜨는 것 때문에 정상적으로 결과값을 가져오지 못하는 것으로 추정된다. 별의별 방법으로 대안을 만들어도 안되기에... from urllib.request import urlopen from bs4 import BeautifulSoup word = 'house' r = urlopen('https://www.google.pl/search?&dcr=0&tbm=isch&q='+word) data = r.read() https://stackoverflow.com/ques..
2020.06.18 -
React에서 버튼 Long Press 처리
버튼의 Long Press, Short Press 처리는 사실 어느 플랫폼에서나 기본적으로 필요한 기능임에도 React에서 Long Press 처리는 쓸데 없이 손이 많이 가는 듯하다. 다행히 react-longpressable을 이용하여 쉽게 처리하였으나, 이 또한 100% 만족스럽지는 않다. 재미있는 것은 react-longpressable을 이용하여 Long/Short press 처리를 했을때, Button 태그의 onClick은 Long Press후 후 해제했을때 호출해서 Long press start와 end를 구분하여 처리할 수 있다는 점이다. 물론 Short press를 했을 때에는 Button의 onClick이 호출되지 않는다. https://www.npmjs.com/package/reac..
2020.06.03 -
Git commit을 하나로 합치기
개발을 하다보면 하나의 티켓을 처리하는데 자잘한 commit 들을 수십개까지 만들면서 작업을 하는 경우가 있다. 작업이 끝난 다음 Merge Request를 할 때, 구질구질하게 수십개의 commit으로 나열되어 있는 것을 보면 보기도 않좋지만 commit log 관리에도 좋지 않다. 이런 경우 git rebase를 이용하여 하나의 commit으로 합칠 수 있다. https://charsyam.wordpress.com/2013/01/11/%EC%9E%85-%EA%B0%9C%EB%B0%9Cgit-%EC%97%AC%EB%9F%AC-%EA%B0%9C%EC%9D%98-commit-%ED%95%98%EB%82%98%EB%A1%9C-%ED%95%A9%EC%B9%98%EA%B8%B0/ [입 개발]GIT: 여러 개의 ..
2020.05.06