분류 전체보기
-
[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..
-
[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 파일시스템을 문자열이 아닌 객체로 ..
-
[Python] BeautifulSoup 사용하기언어/파이썬 & 장고 2019. 1. 18. 21:28
웹 크롤러를 만들거나 html에서 필요한 정보를 검색할 때, BeautifulSoup 라이브러리를 사용하여 편리하게 코딩할 수 있습니다.설치$ pip3 install beautifulsoup4beautifulsoup에는 기본적으로 파이썬 표준라이브러리인 html 파서를 지원하지만, lxml이라는 모듈이 더 빠르게 동작하므로 lxml 모듈도 설치해 줍니다.$ pip3 install lxml 아래는 beautifulsoup에서 사용할 수 있는 파서의 장단점을 보여주는 테이블 입니다.Parser선언방법장점단점파이썬 html.parserBeautifulSoup(markup, 'html.parser')설치할 필요 없음적당한 속도 lxml HTML parserBeautifulSoup(markup, 'lxml')매우..
-
[Python] argparse 사용법 (파이썬 인자값 추가하기)언어/파이썬 & 장고 2019. 1. 16. 21:42
파이썬 스크립트를 개발할 때, 호출 당시 인자값을 줘서 동작을 다르게 하고 싶은 경우가 있습니다. 이때, 파이썬 내장함수인 argparse 모듈을 사용하여 원하는 기능을 개발할 수 있습니다.아래 설명은 파이썬 3.7 버전 기준으로 작성했습니다.사용법간단하게 인자값을 받아 처리하는 로직은 아래와 같습니다.import argparse # 인자값을 받을 수 있는 인스턴스 생성 parser = argparse.ArgumentParser(description='사용법 테스트입니다.') # 입력받을 인자값 등록 parser.add_argument('--target', required=True, help='어느 것을 요구하냐') parser.add_argument('--env', required=False, defa..
-
샤딩(sharding), 파티셔닝(partitioning)DB 2018. 12. 23. 16:14
샤딩(sharding)과 파티셔닝(partitioning)의 차이파티셔닝이란 퍼포먼스(performance), 가용성(availability) 또는 정비용이성(maintainability)를 목적으로 논리적인 데이터 엘리먼트들을 다수의 table로 쪼개는 행위를 뜻하는 일반적인 용어입니다.샤딩은 수평 파티셔닝(horizontal partitioning)과 동일합니다. 데이터베이스를 샤딩하게 되면 기존에 하나로 구성될 스키마를 다수의 복제본으로 구성하고 각각의 샤드에 어떤 데이터가 저장될 지를 샤드 키를 기준으로 분리합니다. 수평 파티셔닝 (horizontal partitioning) = 샤딩 위 예시를 보면 1 ~ 5 번 고객의 정보는 하나의 샤드에 저장하고 6 ~ 10 번 고객의 정보는 다른 샤드에 저..
-
서버 사이드 렌더링(SSR), 클라이언트 사이드 렌더링(CSR)웹 2018. 12. 23. 15:51
SSR 이란?Server Side Rendering 의 약어로써 단어 그대로 서버에서 렌더링을 작업합니다. 기존에 존재하던 방식으로 사용자가 웹페이지에 접근할 때, 서버에 페이지에 대한 요청을 하며 서버에서는 html, view 와 같은 리소스들을 어떻게 보여질지 해석하고 렌더링하여 사용자에게 반환합니다. 웹에서 제공하는 정보량이 많아지고 데스크탑보다 성능이 다소 떨어지는 스마트폰의 웹에 대한 요구가 커지면서 새로운 기법이 탄생했습니다.CSR 이란?Client Side Rendering의 약어로써 최초에 1번 서버에서 전체 페이지를 로딩하여 보여주고 이후에는 사용자의 요청이 올 때마다, 리소스를 서버에서 제공한 후 클라이언트가 해석하고 렌더링을 하는 방식입니다. 여기에 Angular JS, Backbon..
-
[DB] ETL이란DB 2018. 12. 22. 21:53
ETL은 Extract, Transform, Load 의 앞글자를 딴 용어입니다. 즉 데이터를 추출, 변환, 적재를 한다는 것입니다. 내용은 그렇게 어렵지가 않습니다.예를 들어, calendar라는 테이블에 년/월/일/시/분/초 형태로 각 컬럼이 존재합니다. 이러한 데이터를 사용하여 통계를 내는 어떤 프로그램을 실행하려고 확인 했더니 해당 프로그램은 년월일/시분초 와 같은 컬럼형태를 요구하고 있을 때 작업을 하는 것을 ETL이라 합니다.예시Extract대상이 되는 calendar 테이블에서 년/월/일/시/분/초 형태의 데이터를 전부 추출합니다.Transform추출한 데이터를 요구하는 형태인 년월일/시분초 형태로 변경을 합니다.Load변경이 된 데이터를 새로운 테이블에 적재합니다.요약간단하게 위와 같은 단..