언어
-
[Python] +와 += 차이점언어/파이썬 & 장고 2019. 1. 27. 18:23
파이썬에서 어떤 값을 더할 때 +를 사용하여 새로운 변수에 결과값을 담을 수도 있고 기존에 사용하던 변수에 +=로 값을 대체할 때가 있습니다. 더 나아가 각 리스트를 합칠 때도 사용됩니다. 아래는 리스트를 합치는 예시입니다.a = [1,2] b = [3,4] c = a+b print(c) # [1, 2, 3, 4] a += b print(a) # [1, 2, 3, 4] 위 결과만 봤을 때 +와 +=의 차이가 없는 것처럼 확인됩니다. 그러나 아래 예시를 보면 똑같다 라는 가정이 틀렸다는 것을 볼 수 있습니다.a = [1,2] b = (3,4) c = a+b Traceback (most recent call last): File "", line 1, in TypeError: can only concatena..
-
[Django] queryset 결과 합치기언어/파이썬 & 장고 2019. 1. 22. 21:24
합칠 대상의 결과가 2개 이상인 경우union()union()를 사용해서 1개로 합칠 수 있습니다. union()의 2번째 인자는 중복을 허용할지에 대한 여부인데 기본값은 False로 중복을 허용하지 않습니다. (중복데이터일 경우 중복제거)result = a.union(b, all=True)결과가 쿼리셋 리스트 타입이기 때문에 ORM 형식을 그대로 사용할 수 있습니다.| 연산자| 연산자를 사용하여 손쉽게 쿼리셋 타입 리스트를 합칠 수 있습니다.result = a | b결과가 쿼리셋 리스트 타입이기 때문에 ORM 형식을 그대로 사용할 수 있습니다. + 연산자+ 연산자를 사용하기 위해선 각 쿼리셋 리스트 타입을 일반 리스트 타입으로 변경한 후 합칩니다.a = list(a) b = list(b)result =..
-
[Django] Where 절 or 문 사용하기 (Q() 사용하기)언어/파이썬 & 장고 2019. 1. 22. 20:27
Django model ORM로 Where절에 or 문을 추가하고 싶다면 Q() 를 사용해야 합니다. 사용법은 아래와 같습니다.사용하기ORfrom django.db.models import Q Base.objects.filter( Q(name='qwer') | Q(no=152124)# 동일한 결과 # SELECT * FROM base WHERE no=152124 OR name='qwer'Q() 조건 연결from django.db.models import Q q = Q() q.add(Q(no=12121), q.OR) q.add(Q(name=lee)|Q(name=kim), q.AND) q.add(Q(142411), q.OR) Base.objects.filter(q)# 동일한 결과 # SELECT * FROM..
-
[Python] Selenium 사용하기 (+PhantomJS)언어/파이썬 & 장고 2019. 1. 21. 22:51
Selenium은 웹앱을 테스트 하는데 주로 사용하는 프레임워크입니다. webdriver API를 통해 브라우저를 제어하게 할 수 있습니다. JavaScript를 이용해 비동기적으로 컨텐츠를 호출할 수 있으므로 브라우저에서 보이는 컨텐츠라면 전부 가져올 수 있다는 것을 의미합니다. 한마디로 Selenium은 실제 웹 브라우저가 동작하기 때문에 JS로 렌더링이 완료된 후의 DOM 결과물에 대한 접근이 가능합니다.설치파이썬브라우저의 업데이트 마다 새로운 드라이버를 잡기 때문에 최신버전을 유지하는 것이 좋습니다.pip3 install seleniumwebdriver아래에서는 chrome을 설치하여 사용합니다.https://sites.google.com/a/chromium.org/chromedriver/down..
-
[Node] Node.js 버전 관리하기 (설치, 업데이트, 다운그레이드)언어/자바스크립트 2019. 1. 21. 21:31
node와 npm 버전을 최신으로 전부 올렸다가 기존 프로젝트가 실행되지 않아 노드 버전을 다시 내려야 하는 상황이 왔습니다. 1시간 삽질 덕에 아래와 같이 정리합니다.Node 버전 확인$ node -vCache 삭제$ sudo npm cache clean --forcen 플러그인 설치n은 node의 버전을 관리해주는 플러그인입니다. 해당 플러그인이 있으면 노드 버전을 변경할 때, 해당 노드 삭제가 아닌 사용할 버전선택이라는 간편함이 있으니 설치해줍니다.$ sudo npm install -g n최신 버전 설치$ n lateststable 버전 설치$ n stableLTS 버전 설치$ n lts특정 버전 설치n 다음 특정 버전을 입력하여 설치하여 줍니다.$ n 5.6.0 $ n 8.11.1 $ n 11.4..
-
[Django] subquery 표현하는 방법 (subquery, outerref 사용법)언어/파이썬 & 장고 2019. 1. 21. 20:59
WHERE 절의 subqueryitem = Item.objects.all() base = Base.objects.filter(no__in=Subquery(item.values('no'))) == 동일 쿼리 SELECT * FROM base WHERE no IN (SELECT no FROM item)SELECT 절의 subqueryitem = Item.objects.all() base = Base.objects.annotate(no=Subquery(item.values('no'))) == 동일 쿼리 SELECT *, (SELECT no FROM item) AS "no" FROM base 더 복잡하게먼저 위에서 그냥 예시를 들었던 모델은 아래와 같이 정의되었다고 가정합니다.class Base(models.M..
-
[Python] 문자열 포맷팅 방법들 (%, str.format, f-string)언어/파이썬 & 장고 2019. 1. 20. 04:04
파이썬에서 문자열 포맷팅 방식은 다양합니다. 아래에서 다양한 방법과 사용법을 설명하겠습니다. % operator (오래된 방식) C에서 prinf 스타일로 사용한 적이 있으면 익숙한 방식입니다. python3 이전의 방식으로 편리하지만 타입을 정확하게 알고 작성해야 한다는 단점이 있습니다. test = 'Hello %s' % 'Bob' print(test) # Hello Bob 만약 데이터 타입이 integer일 경우 아래와 같이 %s로 추가합니다. test = 'age: %i' % 111 print(test) # age: 111 만약 포맷팅하고자 하는 데이터 타입이 다를 경우, 아래와 같이 에러를 뱉게 됩니다. test = 'age: %i' % '111' # Traceback (most recent c..
-
[Django] crontab 사용하기언어/파이썬 & 장고 2019. 1. 19. 17:18
Django 에서는 crontab 기능을 지원하여 손쉽게 배치를 추가/실행/삭제를 할 수 있습니다.설치$ pip3 install django-crontabcrontab 등록스크립트 등록을 위한 함수를 생성합니다.# app/cron.py from my.app import run def scheduler(): run() pass 이후 settings.py에서 아래와 같은 형식으로 등록합니다.CRONJOBS = [ ('* * * * *', 'app.cron.scheduler') ] CRONJOBS 내에 들어가는 데이터 형식은 아래와 같습니다.(' 분 시 일 월 요일 ', '앱이름.파일명.함수명')스케쥴링에 대한 자세한 내용은 http://brownbears.tistory.com/15 에서 확인할 수 있습니다...
-
[Golang] BeautifulSoup 사용하기 (goquery 사용하기)언어/Golang 2019. 1. 19. 16:24
Python에는 beautifulsoup 패키지가 존재해 Go에서도 없을까 찾아보던 도중 유사한 패키지를 찾았습니다. 해당 패키지를 사용하여 웹 크롤러를 만들거나 html에서 필요한 정보를 검색할 때, 편리하게 코딩할 수 있습니다.설치$ go get github.com/PuerkitoBio/goquery사용법아래는 현재 최신버전인 1.5 버전으로 설명합니다. 1.4이하 버전에서는 NewDocument()가 존재했지만 1.4버전에서 더이상 사용하지 않으므로 언급하지 않습니다.package main import ( "fmt" "log" "net/http" "github.com/PuerkitoBio/goquery" ) func ExampleScrape() { // Request the HTML page. re..
-
[Python] pathlib 사용하기언어/파이썬 & 장고 2019. 1. 18. 22:02
파이썬 3.4부터 내장함수로 pathlib가 추가되었습니다. pathlib가 추가되기 이전에는 os 모듈을 사용했습니다. pathlib는 파일위치 찾기, 파일 입출력과 같은 동작을 하는데 os모듈과 어떻게 다른지 아래에서 설명합니다.pathlib 설명pathlib 모듈의 기본 아이디어는 파일시스템 경로를 단순한 문자열이 아니라 객체로 다루자는 것입니다. 가령 파일의 존재성 여부를 판단하는 것은 아래와 같이 작성할 수 있습니다.import os from pathlib import Path file_path = './path/to/file' if os.path.exists(file_path): pass p = Path(file_path) if p.exists(): pass 파일시스템을 문자열이 아닌 객체로 ..