분류 전체보기
-
[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..
-
[PostgreSQL] array (list) 타입 관련 함수DB/PostgreSQL 2019. 1. 19. 17:57
array 데이터를 각 로우로 변경unnest(array타입) -- 예시 select unnest(ARRAY[1,2]) 1 2 (2 rows)array 타입에 데이터 추가array_append(array, 값) -- 예시 array_append(ARRAY[1,2], 3) {1,2,3}array 타입끼리 협차기array_cat(array, array} -- 예시 array_cat(ARRAY[1,2], ARRAY[3,4]) {1,2,3,4}array에서 string(단일컬럼)으로 변경array_to_string(array, 구분자, [NULL 값 대체 구분자]) -- 예시 array_to_string(ARRAY[1, 2, 3, NULL, 5], ',', '*') 1,2,3,*,5string을 array로 변..
-
[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 에서 확인할 수 있습니다...
-
백업 vs 아카이브 차이점공부 2019. 1. 19. 16:51
백업과 아카이브는 엄연히 다른 기능입니다.백업이란?백업(Backup)은 데이터가 손상되거나 손실될 경우를 대비해 저장하는 데이터의 사본입니다. 원본 데이터는 백업을 생성한 후에도 지우지 않습니다. 백업의 예로 휴대폰의 사진을 클라우드에 복사하는 것부터 중요한 파일을 USB에 복사하는 등 다양합니다. 또한 파일 서버(비정형 데이터)와 데이터베이스(구조화 데이터)도 백업합니다. 이처럼 백업은 데이터를 그대로 복사하는 것에에 중점을 둡니다.백업은 사고가 났을 때 데이터를 복원(Restore)하는 것입니다. 만약 휴대폰의 모든 사진을 클라우드로 백업했는데 휴대폰이 고장났으면 클라우드에 백업한 파일을 그대로 내려받아 사용할 수 있으며 서버 내 랜섬웨어가 걸렸다면 랜섬웨어 해결 후, 백업한 데이터를 받아 정상적으로..
-
[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..