search API ๋ก ๊ฒ์์ ์๊ทผ ๊ธฐ๋ณธ์ ์ธ ๊ฒ์์ด ์ ์๋จนํ์ ์๋ฆฐ์ด๋ค์ด ํค๋ฉ๊ฑฐ๋ผ๋ ์๊ฐ์ ๋จ๊ฒจ๋ณธ๋ค.. ๋๋ํ ๊ทธ๋ฌํ์๊ธฐ์ { "query": { "bool": { "filter": [ "query_string": { "default_field": "ํ๋์ด๋ฆ", "query": "\"์ฐพ๊ณ ์ํ๋ value ๊ฐ\"" } ] } } } ์ด๋ฅด์ผ ๋ฃ์ผ๋ฉด ์์ฃผ ๊น๊ผผํ๊ฒ ๋์จ๋ค
๋งฅ์ฌ๋ธ
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fvsd0a%2FbtqOlfu8FoL%2FkLe1xkByZYbKIX9jdKCbjK%2Fimg.jpg)
1. ๋ฆฌ๋
์ค crontab์ ๋ฌธ์ ๊ฐ ๋์๋ db ์ ๊ทผ ํ์ผ์ ์ง์ ๋๋ฐ DB ํ
์ด๋ธ์ด ์ด์ํ๋ค. 2. 1๋ฒ ์ ์ ๋ฌด์ํ ๋๋ฒ๊น
์ด ์์๊ณ ์๋ฌด๋ฆฌ ํด๋ด๋ ์ฟผ๋ฆฌ๋ ์ฝ๋์ ์ด์์ด ์์๊ธฐ ๋๋ฌธ์ ์ ์ง๊ฒฝ๊น์ง ๊ฐ๊ฑฐ๋ค. ์๋๋ ์ค์๋ฒ์ ์ ๋ฐ์ง์ ํ๋ฉด ์๋จ;ใ
; ์ผ๋จ ๋๋ ํ๊ฐ๋๊ธฐ๋ ํ๊ณ , ์๋น์ค์ ์ง์ฅ์ด ์์ ๊ฑฐ๋ ๊ฑธ ํ์ ํ๊ณ ์ ๋ฌ์ง๋ง. ํ๋ฒ ํผ๋๊ณ (ใ
;) ๋ค์ ๋๋ฒ๊น
ํ ๊ณผ์ ์ 1. ํ
์คํธ ์๋ฒ๋ฅผ ํ๋ ๊ตฌ์ถํ๋ค. 2. ๊ฐ๋ฐ ํ๊ฒฝ์ ์
ํ
ํ๋ค. 3. ๋๋น๋ ๊ฐ์ด ์ฌ๋ ธ๋ค๊ฐ ๋ค๋ฅธ ๋๋น์๋ฒ ์ด์ฉํ๊ณ , ์ด์์ค์ ๋๋น ๋ณต์ฌ๋ ํจ ใ
; mysql์ export import๊ฐ ์์ฃผ ์ฝ๋๋ผ๋. 4. ๋ฌธ์ ๊ฐ ๋ ํ
์ด๋ธ์ ์ ๊ทผํ๋ ํ์ผ์ crontab์ ์ฌ๋ฆผ 5. ๊ฒ์ฌ ๊ฒฐ๊ณผ ๋น์ฐ~ํ ์~๋ฌด ๋ฌธ์ ์์ ----------------------..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHv1eD%2FbtqOeDbCAgN%2FLZTDQuBU0B2enR9Eedc6JK%2Fimg.png)
์๋ฒ์ mysql ๋น๋ํ๊ณ , ์ฌ๋ฌ ์ค์ ๋ค์ ๋ง ํ๋ ์ฐฐ๋์ root ์๊ฒฉ ์ ์ ๋ชจ๋ ์์ดํผ ํ์ฉ์ผ๋ก ํ๋ ค๋๊ฑธ ์๋ชปํด์ ํน์ ์์ดํผ๋ก ํด์ userํ
์ด๋ธ์์ host ์
๋ฐ์ดํธ๋ก ๋ชจ๋ ์์ดํผ ํ์ฉ (%)์ผ๋ก ๋ฐ๊ฟจ๋ค ๊ทผ๋ฐ ์ ๋ค์ด๊ฐ์ ธ์ ๋ญ์ง๋ญ์ง ํ๋ค๊ฐ ๊ถํ ๋ฐ๊พธ๊ณ ๋๋ฉด FLUSH PRIVILEGES๋ฅผ ํด์ผํ๋ค๋ ๊ฑธ ๋ณด๊ณ ํ๋๋ ๋ฐ๋ก ํด๊ฒฐ ๋๋น
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVUr5V%2FbtqNZN7koGf%2FhGvDvU4wZsJtDYkBp3Spa0%2Fimg.jpg)
๋ถ๋ช
ํ ์์
์ํธ ์ ์ฅํ ๋ utf-8๋ก ์ ์ฅํ๋๋ฐ ์๋จนํ ๊ฒ ๊ฐ๋ค ์ฒจ์ ์ด๋ฐ์์ผ๋ก ๋์์ ํ๊ธฐ ์ฐพ์๋ณด๊ณ 'utf-8' codec can't decode byte 0xb0 in position 0: invalid start byte utf-16์ธ๊ฐ? ์ถ์ด์ ๋ณ๊ฒฝํด๋ดค๋๋ ๋ ์๋ฌ๋ฅผ ๋ฑ๊ธธ๋ ์, ์ด๊ฑฐ ์์
์ด ์ ๋๋ก ์ ์ฅ ์ํด์คฌ๊ตฌ๋ ์ถ์ด์ ์ธ์ฝ๋ฉ euc-kr ๋ก ๋ฐ๊ฟ์คฌ๋๋ ์์ฃผ ์๋จ!^^ ์ค๋๋ ํํ๋ก์ด ์ฝ๋ฉ์ํ์ด๋ค.
cuttlepool ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ pip install cuttlepool ํ๋ฉด ๋๋ค๊ณ ํ๋๋ฐ, ๊ณ์ import ์๋ฌ๊ฐ ๋์ ๋๋ฌด ํ๊ฐ ๋ฌ๋ค. ๋ด๊ฐ ์คํ์ํค๋ py๋ /mnt ๊ฒฝ๋ก ์๋์ ์๊ณ cuttlepool์ /usr ๊ฒฝ๋ก ์๋์ ์ค์น ๋๋ค. pip freeze๋ก ์ค์น๋ ๋ชจ๋๋ ๋ณด๊ณ ํ๋๋ฐ ์ ํ ๋ฌธ์ ๊ฐ ์์ด์ ์ง์ฆ์ด ๋ฌ๋ค. ์ด๊ธ์ ๋์ ๊ฐ์ ์ฌ๋๋ค์ ์ํ ํ์ ๊ธ....โ
์คํ์ํค๊ณ ์ํ๋ py ํ์ผ์์ import sys sys.path.insert(0,'/usr ์ด์ฉ๊ตฌ(๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒฝ๋ก)') ํด์ฃผ๋ฉด ๊ทน๋ฝ! ใ
ใ
ใ
๊ฐ์ /mnt ์์ ์๋๊ฒ ์๋๋ผ์ ์ ๋ ๊ฒ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ก ์ถ๊ฐํด์ค์ผ ๊ฐ๊ณ ์ฌ ์ ์๋ค๊ณ ํ๋ค. ํด.. ๊ทธ๋ผ ์ด๋ง.. ์ฆ๊ฑฐ์ด ๊ฐ๋ฐ์ํ ๋์ธ์~
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOxK77%2FbtqH4tfqgDp%2FqYQ1kANg66ALkb8jRHC240%2Fimg.png)
python 3.x ๋ฒ์ ์ ์ฌ์ฉ์ค์ ๊ฐ์๊ธฐ ์ ๋๋ print("์์์๊ฐ :", datetime.datetime.now()) ์ฌ๊ธฐ์ ์๋ฌ๋ฅผ ๋ฑ์๋ค ๊ทธ๋์ ์์นํ ๊ฒฐ๊ณผ ๋งจ ์์ # -*- coding: utf-8 -*- ์ด๊ฑธ ๋ถ์๋๋ฐ ๋ ์์์๊ฐ ์ ๋ถ๋ถ์ด ์ด๋ฐ์์ผ๋ก ๋์ค์ง ์๋ ๊ฒ์ด๋ค. ๊ทธ๋์ ๊ธฐ์กด ์ฝ๋๋ฅผ print("์์์๊ฐ : {}".format(datetime.datetime.now())) ์ด๋ ๊ฒ ๋ฐ๊ฟจ๋๋ ์ ์์ ์ผ๋ก ๋์๋ค. ์ ๊ฐ์๊ธฐ ์ด๋ ๊ฒ ๋๋๊ฑด์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค. ์ด์จ๋ ํด๊ฒฐ
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFXbVg%2FbtqGteSwkuu%2FufTUuehpPE6xAfJlsc06L0%2Fimg.png)
1. ์ฑ๊ธํค ํจํด (Singleton Pattern) ์ด๋? - ์ํํธ์จ์ด ๋์์ธ ํจํด์ผ๋ก์, ์ฑ๊ธํด ํจํด(Singleton pattern)์ ๋ฐ๋ฅด๋ ํด๋์ค๋, ์์ฑ์๊ฐ ์ฌ๋ฌ ์ฐจ๋ก ํธ์ถ๋๋๋ผ๋ ์ค์ ๋ก ์์ฑ๋๋ ๊ฐ์ฒด๋ ํ๋์ด๊ณ ์ต์ด ์์ฑ ์ดํ์ ํธ์ถ๋ ์์ฑ์๋ ์ต์ด์ ์์ฑ์๊ฐ ์์ฑํ ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํ๋ค. ์ฃผ๋ก ๊ณตํต๋ ๊ฐ์ฒด๋ฅผ ์ฌ๋ฌ๊ฐ ์์ฑํด์ ์ฌ์ฉํ๋ DBCP(DataBase Connection Pool)์ ๊ฐ์ ์ํฉ์์ ๋ง์ด ์ฌ์ฉ๋๋ค. ๊ฐ๋จํ ๋งํด์, ํ๋ฒ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ ์ผ๋ก ์ฌ๋ ค๋๊ณ , ์ด ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ์ ์ญ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋ค์ด ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ์ค์ฌ์ฃผ๋ ํจํด์ด๋ค. 2. ์ฑ๊ธํค ํจํด ์ฐ๋ ์ด์ (1) ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ๋ฐฉ์งํ๋ค. (2) ๋ค๋ฅธ ํด๋์ค์ ์ธ์คํด์ค๋ค์ด ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๊ธฐ ์ฝ๋ค. (3) ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdL1ey%2FbtqGtCdNCUC%2F4n3ltBYwcUzh0g8ppqgwCK%2Fimg.png)
1. ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ (Object-Oriented Programming, OOP)๋? - ๋จ์ด์ ๋ป๋ถํฐ ์ดํด๋ณด๋ฉด ๊ฐ์ฅ ํต์ฌ ๋จ์ด๋ '๊ฐ์ฒด'์ด๋ค. ๊ทธ๋ ๋ค๋ฉด ๊ฐ์ฒด๋ ๋ฌด์์ผ๊น? ์ด๋ ํ ์ญํ ์ ํ๋ ์ฌ๋ฌผ์ด๋ ์์ง์ด๋ ๊ฒ ๋ชจ๋ ๋ค ๊ฐ์ฒด๊ฐ ๋ ์ ์๋ค. ์ด๋ฅผ ํ๋ก๊ทธ๋๋ฐ์ ๊ด์ ์์ ๋ณด๋ฉด, ํน์ ์ญํ ์ ํ๋ ๋ฉ์๋,๋ณ์, ์๋ฃ ๊ตฌ์กฐ ๋ฑ์ด ๋ ์ ์๋ค. ๋ฐ๋ผ์, ์ด๋ฐ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ปค๋ค๋ ํ๋ก ๋ณด๋ฉด, ํน์ ์ญํ ๋ณ๋ก ์~ ๋ฌถ์ด ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ค์ํ๋ค. ์ด๋ฐ ๊ฒ์ ์ผ๋ํด ๋๊ณ ์ฅ์ , ํน์ง ๊ทธ๋ฆฌ๊ณ ์ค๊ณ ์์น ๋ฑ์ ๋ณด๋ฉด ์ดํด๊ฐ ๋น ๋ฅด๋ค. 2. OOP ์ฅ์ - S/W์ ์ง์ ํฅ์ํ๊ธฐ ์ํด ๊ฐํ ์์ง๋ ฅ(Strong Cohesion)๊ณผ ์ฝํ ๊ฒฐํฉ๋ ฅ(Weak Coupling)์ ์งํฅํด์ผ ํ๋๋ฐ, OOP์ ๊ฒฝ์ฐ ํด๋..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7thsG%2FbtqGg51GIgu%2F3qqhSbYsOeFCrGOKcJrzrK%2Fimg.png)
์์ ํ์ํ ๋ฐฐ๊ฒฝ๋ค์ ๋ํด์ ์ด๋์ ๋ ์ดํด๋ณด๊ณ ๋๋ ๊ด๋ จ๋ ์๋ฃ๋ค์ ๋ณด๋๋ฐ ํจ์ฌ ์์ํจ์ ๋๊ผ๋ค. ์ฌ์ค asyncio์ ๋ํด ๊ณต๋ถํ๋ ๊ฒ = ๋ฐฐ๊ฒฝ์ง์ ๊ณต๋ถํ๊ธฐ ์ด๊ฒ์ธ ๊ฒ ๊ฐ๋ค. ์์ง ๋ถ์กฑํ ๊ฐ๋
๋ค์ ์ถํ ํ์ํ ๋ฐฐ๊ฒฝ์ง์ ์๋ฆฌ์ฆ๋ก ์์ฑํด๋ณด๋๋ก ํ ๊ฒ์ด๋ค. 1. Asyncio๋? - ์ผ๋จ Async (๋น๋๊ธฐ) + input/output (์
์ถ๋ ฅ) ์ด๋ผ๋ ๋ป์ด๋ค. - ๋น๋๊ธฐ๋ผ๋ ๊ฒ์ ์ด๋ฏธ์ง๋ฅผ ์ฐธ๊ณ ํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค. - ๋๊ธฐ๋ ์์
1์ด ๋๋๋ ๊ฒ์ ๊ธฐ๋ค๋ ธ๋ค๊ฐ ์์
2๋ฅผ ํ๋ ๋ฐ๋ฉด ๋น๋๊ธฐ๋ ์์
1์ด ์งํ๋๋ ๋์ ์์
2๋ ํ ์ ์๋ค. ๊ฐ์์ ์ผ๋ก๋ง ๋ด๋ ์๊ฐ์ด ํ์ ํ ์ ์ฝ๋๋ค๋ ๊ฒ์ ์ ์ ์๋ค. - ๊ทธ๋ผ ์ io(์
์ถ๋ ฅ)์ด๋๋ฉด CPU๊ฐ ํ์์ ๋ฉ๋ชจ๋ฆฌ ์ฅ์น๋ค๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ์๋ ์ฐจ์ด๋ก ์ธํด CPU์ ์์
..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmNDgB%2FbtqGkVdfkd5%2FQJ9Vl3x4eKdSOc3HEFg4Zk%2Fimg.png)
asyncio๋ฅผ ๊ณต๋ถํ๋ ค๋ค๊ฐ ์ ๋ชจ๋ฅด๋ ๋ถ๋ถ์ด ๋ง์์ ๊ทธ๋ฅ ๋ชจ๋ฅด๋ ๋ถ๋ถ๋ถํฐ ๊ณต๋ถํ๊ณ ๋์ด๊ฐ๊ณ ์ ํ๋ค. 1. ์ฝ๋ฃจํด(coroutine) ์ด๋? - cooperative routine์ ์๋ฏธํ๋๋ฐ, ์๋ก ํ๋ ฅํ๋ ๋ฃจํด์ด๋ผ๋ ๋ป์ด๋ค. - ์ฐ์ ๋ฃจํด์ด๋ผ๋ ๊ฐ๋
๋ถํฐ ์ดํด๋ณธ๋ค. def add(a, b): c = a + b # add ํจ์๊ฐ ๋๋๋ฉด ๋ณ์์ ๊ณ์ฐ์์ ์ฌ๋ผ์ง print(c) print('add ํจ์') def calc(): add(1, 2) # add ํจ์๊ฐ ๋๋๋ฉด ๋ค์ calc ํจ์๋ก ๋์์ด print('calc ํจ์') calc() ์ด ์ฝ๋์์ calcํจ์์์ add๋ฅผ ๋ถ๋ ๊ณ , addํจ์๊ฐ ๋๋๋ฉด calc๋ก ๋ค์ ๋์์จ๋ค. ์ด๋, calc๊ฐ ๋ฉ์ธ ๋ฃจํด์ด๊ณ , add๋ ์๋ธ๋ฃจํด์ด ๋๋ ๊ฑฐ๋ค. - ์ด๋ฐ์์..