Provisioning 이란, 한정된 자원을 최적의 효율을 위해 제공하는 기술적 개념을 말한다. 유저의 요청에 맞게 자원을 미리 세팅해두고, 유저의 요청에 따라 준비된 자원들을 목적과 효율에 맞게 제공하는 개념이다. 특정 분야에서 한정되어 사용하는 개념이 아니라 다양한 분야에서 응용되어지는 주제이다. (IT 분야만으로 한정되지도 않는다) IT 분야의 Provisioning의 예시로는, Server Provisioning, Storage Provisioning, Telecommunication Provisioning 등이 있다.
column_constraint 는 Optional 이다. (unique 와 같은 제약조건)
user 라는 table에 name, email, age 컬럼 생성
example1 : constraint 가 없을 떄,
1 2 3 4 5
mysql> CREATE TABLE user( name CHAR(20), email CHAR(40), age INT(3) )
example2 : constraint가 있을 때,
1 2 3 4 5 6 7
mysql> CREATE TABLE user2( user_id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20) NOT NULL, email VARCHAR(30) UNIQUE NOT NULL, age INT(3) DEFAULT'30', rdate TIMESTAMP )
(3) 수정
(3)-1. DATABASE 수정
DATABASE 의 encoding 수정
현재 문자열 encoding 확인
1
mysql> SHOW VARIABLES LIKE "CHARACTER_SET_DATABASE";
mydb 데이터베이스의 문자열 인코딩을 utf8 로 변경
1
mysql> ALTER DATABASE mydb CHARACTER_SET = utf8;
user 데이터베이스의 문자열 인코딩을 ascii 로 변경
1
mysql> ALTER DATABASE user CHARACTER_SET=ascii
(3)-2. TABLE 수정
user 테이블에 tmp라는 컬럼명, TEXT 데이터 타입 컬럼을 추가
1
mysql> ALTER TABLE user ADD tmp TEXT;
Posted Updated wiki / Scrapy4 minutes read (About 526 words)
a = response.xpath('xpath') # xpath 로 지정한 엘리먼트를 가져온다. a_text = reponse.xpath('xpath/text()') # 엘리먼트의 text data 를 가져온다. a_text.extract() # 엘리먼트의 text data들을 말그대로 extract 하여, list 형태로 return 해준다
3. Scrapy 사용하기
(1) scrapy 프로젝트 생성
shell command
1
scrapy startproject crawler
1
!scrapy startproject crawler
New Scrapy project 'crawler', using template directory '/Users/emjayahn/.pyenv/versions/3.7.0/envs/dss/lib/python3.7/site-packages/scrapy/templates/project', created in:
/Users/emjayahn/Dev/DSS/TIL(markdown)/crawler
You can start your first spider with:
cd crawler
scrapy genspider example example.com
Pillow 는 Python에서 이미지를 핸들링 하기위한 라이브러리이다. 스크린 샷, 이미지 크롭, 썸네일 등을 만들 수 있다.
또한, 다양한 이미지 확장자를 다룰수 있다. (예, jpg, png)
Pillow install
1
pip install Pillow
1. Import Convention
Pillow 를 사용하기에 앞서, Import 해야한다.
1
from PIL import Image
2. Pillow 메소드
(1) open()
이름 그대로, 경로와 파일 이름을 적어주면, 해당 이미지리턴하여 Variable 에 할당한다.
1
image = Image.open("imagefile_name")
(2) crop()
이름 그대로, image 를 잘라준다. 이 때 Parameter 는 box형태로 들어가게 된다.
box 는 (left, upper, right, lower) 로 들어가게 된든데, pixel 단위로 들어가면 된다
이미지의 가장 왼쪽과 위쪽 라인을 기준으로,
left px 만큼
upper px 만큼
(왼쪽을 기준으로) right px 만큼
(위쪽을 기준으로) bottom px 만큼
잘라, box 로 만들어 준다.
1 2 3
box = (10, 10, 110, 110) image.crop(box) ### 이렇게 되면 가로세로 100px 만큼의 이미지가 만들어진다.
(3) thumbnail()
썸네일을 만들어준다.
썸네일의 활용 방안은 한 가지 사진을 어플리케이션 곳곳에서 사용한다고 할 때, 데이터 사이즈가 큰 원본 사진을 계속 해서 들고 다니며 사용하면 어플리케이션에 따라 메모리 낭비, 서버용량 낭비, 트래픽 낭비 등으로 이어질 수 있다. 따라서, 이미지의 데이터 크기와 해상도를 낮춰 사용할 수 있다.
1 2
image.thumbnail((pixel, pixel)) #thumbnail 메소드를 사용하여, 원하는 pixel 수로 줄일 수 있다.
Posted Updated wiki / Requests4 minutes read (About 560 words)
Requests 패키지는 크롤링 하고자 하는 페이지를 url 값을 통해 가져와 객체로 변환 해주는 기능을 가지고 있다.
1. Installation
Requests 를 이용하기 위해 package 를 설치해준다.
1
$ pip3 install requests
request를 이용하면서, json 형식으로의 크롤링과, html 형식으로 css selecting 을 위한 크롤링을 실습해 볼 것이므로, BeautifulSoup Package 역시 같이 설치해준다. (BeautifulSoup은 html parser 를 이용해보기 위함이다.)
python-forecastio 는 dark sky 의 api를 활용해 날씨 데이터를 받아올때 사용해보기 위해 설치한다.
.find_elements_ by_css_selector 는 다르다.element 는 하나의 selector 만 선택하는 반면, elements 는 여러가지 element 를 셀렉팅 해서, 리스트 형식으로 Return 한다.
따라서 이렇게 리스트 형식으로 Return 이 된 경우, List[0] 등과 같이 그 엘리먼트를 뒤에 지정해줘야된다. 즉,
1 2 3 4
driver.find_element_by_css_selector(nameof cssselector) #위는 바로 selecting 이 된것이지만, driver.find_elements_by_css_selector(nameof cssselector)[0] #위는 뒤에 selecting 위해 list 의 요소를 선택 해주어야한다.
4. 버튼 클릭하기
1 2
# 위의 방법처럼, element 를 선택해준다. driver.find_element_by_css_selector("name of css selector").click()
5. id, class, 그 외의 attribute 값을 selecting 하는 법
1 2 3 4
driver.find_element_by_css_selector("name of css selector.").click() # id 의 경우 : #idname # class 의 경우 : .classname # 다른 attribute 의 경우 : [attribute = 'value']
6. selecting 한 element 의 attribute value 를 얻는 방법
CSS로 선택한 element에 html 태그에는 다양한 attribute 들이 있을 수 있다. 이 중 attribute의 value에 접근 하고 싶을 때는 .get_attribute()메소드를 사용할 수 있다.
1
driver.find_element_by_css_selector("name of css selector").get_attribute("attribute_name")
7. element 의 위치와, 사이즈 구하기
스크롤을 내리거나, 엘리먼트의 위치와 크기를 알고 싶을 때 사용할 수 있다.
1 2 3 4 5
element = driver.find_element_by_css_selector("name of css selector") element.location #element 의 좌측 상단의 위치가 pixel 단위로 x, y 값의 dictionary로 보여준다. element.size #element 의 size 를 height, width를 pixel 단위로 dictionary로 보여준다.