๋งฅ์‚ฌ๋ธ”

search API ๋กœ ๊ฒ€์ƒ‰์‹œ ์€๊ทผ ๊ธฐ๋ณธ์ ์ธ ๊ฒ€์ƒ‰์ด ์ž˜ ์•ˆ๋จนํ˜€์„œ ์—˜๋ฆฐ์ด๋“ค์ด ํ—ค๋ฉœ๊ฑฐ๋ผ๋Š” ์ƒ๊ฐ์— ๋‚จ๊ฒจ๋ณธ๋‹ค.. ๋‚˜๋˜ํ•œ ๊ทธ๋Ÿฌํ•˜์˜€๊ธฐ์— { "query": { "bool": { "filter": [ "query_string": { "default_field": "ํ•„๋“œ์ด๋ฆ„", "query": "\"์ฐพ๊ณ ์žํ•˜๋Š” value ๊ฐ’\"" } ] } } } ์ด๋ฅด์ผ€ ๋„ฃ์œผ๋ฉด ์•„์ฃผ ๊น”๊ผผํ•˜๊ฒŒ ๋‚˜์˜จ๋‹ค
1. ๋ฆฌ๋ˆ…์Šค crontab์— ๋ฌธ์ œ๊ฐ€ ๋˜์—ˆ๋˜ db ์ ‘๊ทผ ํŒŒ์ผ์„ ์ง€์› ๋Š”๋ฐ DB ํ…Œ์ด๋ธ”์ด ์ด์ƒํ–ˆ๋‹ค. 2. 1๋ฒˆ ์ „์— ๋ฌด์ˆ˜ํ•œ ๋””๋ฒ„๊น…์ด ์žˆ์—ˆ๊ณ  ์•„๋ฌด๋ฆฌ ํ•ด๋ด๋„ ์ฟผ๋ฆฌ๋‚˜ ์ฝ”๋“œ์— ์ด์ƒ์ด ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ €์ง€๊ฒฝ๊นŒ์ง€ ๊ฐ„๊ฑฐ๋‹ค. ์›๋ž˜๋Š” ์‹ค์„œ๋ฒ„์— ์ €๋Ÿฐ์ง“์„ ํ•˜๋ฉด ์•ˆ๋จ;ใ…Ž; ์ผ๋‹จ ๋‚˜๋Š” ํ™”๊ฐ€๋‚˜๊ธฐ๋„ ํ–ˆ๊ณ , ์„œ๋น„์Šค์— ์ง€์žฅ์ด ์—†์„ ๊ฑฐ๋ž€ ๊ฑธ ํ™•์‹ ํ•˜๊ณ  ์ €๋žฌ์ง€๋งŒ. ํ•œ๋ฒˆ ํ˜ผ๋‚˜๊ณ (ใ…Ž;) ๋‹ค์‹œ ๋””๋ฒ„๊น…ํ•œ ๊ณผ์ •์€ 1. ํ…Œ์ŠคํŠธ ์„œ๋ฒ„๋ฅผ ํ•˜๋‚˜ ๊ตฌ์ถ•ํ•œ๋‹ค. 2. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์…‹ํŒ…ํ•œ๋‹ค. 3. ๋””๋น„๋„ ๊ฐ™์ด ์˜ฌ๋ ธ๋‹ค๊ฐ€ ๋‹ค๋ฅธ ๋””๋น„์„œ๋ฒ„ ์ด์šฉํ•˜๊ณ , ์ด์™€์ค‘์— ๋””๋น„ ๋ณต์‚ฌ๋„ ํ•จ ใ…Ž; mysql์€ export import๊ฐ€ ์•„์ฃผ ์‰ฝ๋”๋ผ๋Š”. 4. ๋ฌธ์ œ๊ฐ€ ๋œ ํ…Œ์ด๋ธ”์— ์ ‘๊ทผํ•˜๋Š” ํŒŒ์ผ์„ crontab์— ์˜ฌ๋ฆผ 5. ๊ฒ€์‚ฌ ๊ฒฐ๊ณผ ๋‹น์—ฐ~ํžˆ ์•„~๋ฌด ๋ฌธ์ œ ์—†์Œ ----------------------..
์„œ๋ฒ„์— mysql ๋นŒ๋“œํ•˜๊ณ , ์—ฌ๋Ÿฌ ์„ค์ •๋“ค์„ ๋ง‰ ํ•˜๋˜ ์ฐฐ๋‚˜์— root ์›๊ฒฉ ์ ‘์† ๋ชจ๋“  ์•„์ดํ”ผ ํ—ˆ์šฉ์œผ๋กœ ํ•˜๋ ค๋Š”๊ฑธ ์ž˜๋ชปํ•ด์„œ ํŠน์ • ์•„์ดํ”ผ๋กœ ํ•ด์„œ userํ…Œ์ด๋ธ”์—์„œ host ์—…๋ฐ์ดํŠธ๋กœ ๋ชจ๋“  ์•„์ดํ”ผ ํ—ˆ์šฉ (%)์œผ๋กœ ๋ฐ”๊ฟจ๋‹ค ๊ทผ๋ฐ ์•ˆ ๋“ค์–ด๊ฐ€์ ธ์„œ ๋ญ์ง€๋ญ์ง€ ํ•˜๋‹ค๊ฐ€ ๊ถŒํ•œ ๋ฐ”๊พธ๊ณ  ๋‚˜๋ฉด FLUSH PRIVILEGES๋ฅผ ํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฑธ ๋ณด๊ณ  ํ–ˆ๋”๋‹ˆ ๋ฐ”๋กœ ํ•ด๊ฒฐ ๋๋‹น
๋ถ„๋ช…ํžˆ ์—‘์…€์‹œํŠธ ์ €์žฅํ• ๋•Œ 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 ์•ˆ์— ์žˆ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ์„œ ์ €๋ ‡๊ฒŒ ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋กœ ์ถ”๊ฐ€ํ•ด์ค˜์•ผ ๊ฐ–๊ณ  ์˜ฌ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ํœด.. ๊ทธ๋Ÿผ ์ด๋งŒ.. ์ฆ๊ฑฐ์šด ๊ฐœ๋ฐœ์ƒํ™œ ๋˜์„ธ์š”~
python 3.x ๋ฒ„์ „์„ ์‚ฌ์šฉ์ค‘์— ๊ฐ‘์ž๊ธฐ ์ž˜ ๋˜๋˜ print("์‹œ์ž‘์‹œ๊ฐ„ :", datetime.datetime.now()) ์—ฌ๊ธฐ์„œ ์—๋Ÿฌ๋ฅผ ๋ฑ‰์—ˆ๋‹ค ๊ทธ๋ž˜์„œ ์„œ์น˜ํ•œ ๊ฒฐ๊ณผ ๋งจ ์œ„์— # -*- coding: utf-8 -*- ์ด๊ฑธ ๋ถ™์˜€๋Š”๋ฐ ๋˜ ์‹œ์ž‘์‹œ๊ฐ„ ์ €๋ถ€๋ถ„์ด ์ด๋Ÿฐ์‹์œผ๋กœ ๋‚˜์˜ค์งˆ ์•Š๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ print("์‹œ์ž‘์‹œ๊ฐ„ : {}".format(datetime.datetime.now())) ์ด๋ ‡๊ฒŒ ๋ฐ”๊ฟจ๋”๋‹ˆ ์ •์ƒ์ ์œผ๋กœ ๋‚˜์™”๋‹ค. ์™œ ๊ฐ‘์ž๊ธฐ ์ด๋ ‡๊ฒŒ ๋˜๋Š”๊ฑด์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค. ์–ด์จŒ๋“  ํ•ด๊ฒฐ
1. ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด (Singleton Pattern) ์ด๋ž€? - ์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ ํŒจํ„ด์œผ๋กœ์„œ, ์‹ฑ๊ธ€ํ„ด ํŒจํ„ด(Singleton pattern)์„ ๋”ฐ๋ฅด๋Š” ํด๋ž˜์Šค๋Š”, ์ƒ์„ฑ์ž๊ฐ€ ์—ฌ๋Ÿฌ ์ฐจ๋ก€ ํ˜ธ์ถœ๋˜๋”๋ผ๋„ ์‹ค์ œ๋กœ ์ƒ์„ฑ๋˜๋Š” ๊ฐ์ฒด๋Š” ํ•˜๋‚˜์ด๊ณ  ์ตœ์ดˆ ์ƒ์„ฑ ์ดํ›„์— ํ˜ธ์ถœ๋œ ์ƒ์„ฑ์ž๋Š” ์ตœ์ดˆ์˜ ์ƒ์„ฑ์ž๊ฐ€ ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. ์ฃผ๋กœ ๊ณตํ†ต๋œ ๊ฐ์ฒด๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์ƒ์„ฑํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” DBCP(DataBase Connection Pool)์™€ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ, ํ•œ๋ฒˆ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ์— ์ •์ ์œผ๋กœ ์˜ฌ๋ ค๋†“๊ณ , ์ด ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ์ „์—ญ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ์ค„์—ฌ์ฃผ๋Š” ํŒจํ„ด์ด๋‹ค. 2. ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด ์“ฐ๋Š” ์ด์œ  (1) ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ๋ฐฉ์ง€ํ•œ๋‹ค. (2) ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋“ค์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ์‰ฝ๋‹ค. (3) ..
1. ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (Object-Oriented Programming, OOP)๋ž€? - ๋‹จ์–ด์˜ ๋œป๋ถ€ํ„ฐ ์‚ดํŽด๋ณด๋ฉด ๊ฐ€์žฅ ํ•ต์‹ฌ ๋‹จ์–ด๋Š” '๊ฐ์ฒด'์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๊ฐ์ฒด๋Š” ๋ฌด์—‡์ผ๊นŒ? ์–ด๋– ํ•œ ์—ญํ• ์„ ํ•˜๋Š” ์‚ฌ๋ฌผ์ด๋‚˜ ์›€์ง์ด๋Š” ๊ฒƒ ๋ชจ๋‘ ๋‹ค ๊ฐ์ฒด๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์  ๊ด€์ ์—์„œ ๋ณด๋ฉด, ํŠน์ • ์—ญํ• ์„ ํ•˜๋Š” ๋ฉ”์†Œ๋“œ,๋ณ€์ˆ˜, ์ž๋ฃŒ ๊ตฌ์กฐ ๋“ฑ์ด ๋  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์ด๋Ÿฐ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ปค๋‹ค๋ž€ ํ‹€๋กœ ๋ณด๋ฉด, ํŠน์ • ์—ญํ• ๋ณ„๋กœ ์ž˜~ ๋ฌถ์–ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ค‘์š”ํ•˜๋‹ค. ์ด๋Ÿฐ ๊ฒƒ์„ ์—ผ๋‘ํ•ด ๋‘๊ณ  ์žฅ์ , ํŠน์ง• ๊ทธ๋ฆฌ๊ณ  ์„ค๊ณ„ ์›์น™ ๋“ฑ์„ ๋ณด๋ฉด ์ดํ•ด๊ฐ€ ๋น ๋ฅด๋‹ค. 2. OOP ์žฅ์  - S/W์˜ ์งˆ์„ ํ–ฅ์ƒํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ•ํ•œ ์‘์ง‘๋ ฅ(Strong Cohesion)๊ณผ ์•ฝํ•œ ๊ฒฐํ•ฉ๋ ฅ(Weak Coupling)์„ ์ง€ํ–ฅํ•ด์•ผ ํ•˜๋Š”๋ฐ, OOP์˜ ๊ฒฝ์šฐ ํด๋ž˜..
์•ž์„œ ํ•„์š”ํ•œ ๋ฐฐ๊ฒฝ๋“ค์— ๋Œ€ํ•ด์„œ ์–ด๋Š์ •๋„ ์‚ดํŽด๋ณด๊ณ  ๋‚˜๋‹ˆ ๊ด€๋ จ๋œ ์ž๋ฃŒ๋“ค์„ ๋ณด๋Š”๋ฐ ํ›จ์”ฌ ์ˆ˜์›”ํ•จ์„ ๋Š๊ผˆ๋‹ค. ์‚ฌ์‹ค asyncio์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๋Š” ๊ฒƒ = ๋ฐฐ๊ฒฝ์ง€์‹ ๊ณต๋ถ€ํ•˜๊ธฐ ์ด๊ฒƒ์ธ ๊ฒƒ ๊ฐ™๋‹ค. ์•„์ง ๋ถ€์กฑํ•œ ๊ฐœ๋…๋“ค์€ ์ถ”ํ›„ ํ•„์š”ํ•œ ๋ฐฐ๊ฒฝ์ง€์‹ ์‹œ๋ฆฌ์ฆˆ๋กœ ์ž‘์„ฑํ•ด๋ณด๋„๋ก ํ• ๊ฒƒ์ด๋‹ค. 1. Asyncio๋ž€? - ์ผ๋‹จ Async (๋น„๋™๊ธฐ) + input/output (์ž…์ถœ๋ ฅ) ์ด๋ผ๋Š” ๋œป์ด๋‹ค. - ๋น„๋™๊ธฐ๋ผ๋Š” ๊ฒƒ์€ ์ด๋ฏธ์ง€๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. - ๋™๊ธฐ๋Š” ์ž‘์—…1์ด ๋๋‚˜๋Š” ๊ฒƒ์„ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ์ž‘์—…2๋ฅผ ํ•˜๋Š” ๋ฐ˜๋ฉด ๋น„๋™๊ธฐ๋Š” ์ž‘์—…1์ด ์ง„ํ–‰๋˜๋Š” ๋™์•ˆ ์ž‘์—…2๋„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ€์‹œ์ ์œผ๋กœ๋งŒ ๋ด๋„ ์‹œ๊ฐ„์ด ํ˜„์ €ํžˆ ์ ˆ์•ฝ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. - ๊ทธ๋Ÿผ ์™œ io(์ž…์ถœ๋ ฅ)์ด๋ƒ๋ฉด CPU๊ฐ€ ํ•˜์œ„์˜ ๋ฉ”๋ชจ๋ฆฌ ์žฅ์น˜๋“ค๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ ์†๋„ ์ฐจ์ด๋กœ ์ธํ•ด CPU์˜ ์ž‘์—…..
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๋Š” ์„œ๋ธŒ๋ฃจํ‹ด์ด ๋˜๋Š” ๊ฑฐ๋‹ค. - ์ด๋Ÿฐ์‹์˜..
ํ‚จ์ง€ (Kinzie)
'๋งฅ์‚ฌ๋ธ”' ํƒœ๊ทธ์˜ ๊ธ€ ๋ชฉ๋ก