/images/profile.png

Hi i'am shy.

Package Manager

ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค. ์˜์กด์„ฑ ์„ค์น˜ / ์‚ญ์ œ / ์—…๋ฐ์ดํŠธ ์˜์กด์„ฑ ๊ด€๋ฆฌ ํŒจํ‚ค์ง€ ๋ฐฐํฌ ์บ์‹ฑ ๋ณด์™„ ๋Œ€๋ถ€๋ถ„์˜ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๊ฐ€ ๊ธฐ๋Šฅ์ ์œผ๋กœ ๋น„์Šทํ•˜๊ฒŒ ๋ณด์ผ ์ˆ˜ ์žˆ์œผ๋‚˜, ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ๋งค์šฐ ๋‹ค๋ฅด๋‹ค. npm/ yarn classic์˜ ๊ฒฝ์šฐ node_modules๋ผ๋Š” ํด๋”์•ˆ์— flatํ•˜๊ฒŒ ์ €์žฅ๋˜๋Š” ๊ตฌ์กฐ๋กœ dependency๋ฅผ ์„ค์น˜ํ–ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์€ ๋น„ํšจ์œจ์ ์ด๊ณ  ๊นจ์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜๊ฐ€ ์žˆ๋‹ค. pnpm, yarn berry๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๊ณ , ๋งŽ์€ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋“ค ์†์—์„œ ์šฐ๋ฆฌ์˜ ์›Œํฌํ”Œ๋กœ์šฐ์— ์•Œ๋งž๊ฒŒ ์„ ํƒํ•ด์•ผ ํ•  ์ˆœ๊ฐ„์ด ์™”๋‹ค. NPM npm์˜ ๋น„ํšจ์œจ์ ์ธ ์˜์กด์„ฑ ๊ฒ€์ƒ‰ npm ์€ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์ด์šฉํ•ด์„œ ์˜์กด์„ฑ์„ ๊ด€๋ฆฌํ•œ๋‹ค.

optimization index

Introduction ๋‹ค๋“ค ์ž˜ ์•Œ๊ณ  ์žˆ๋‹ค์‹ถ์ด, ์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์˜๋ฏธํ•œ๋‹ค. ์ธ๋ฑ์Šค๋Š” ํ•œ๋ฒˆ ์ƒ์„ฑ๋˜๋ฉด ์ถ”๊ฐ€์ ์ธ ์กฐ์น˜๊ฐ€ ํ•„์š”์—†์ง€๋งŒ, ์ฟผ๋ฆฌ ํ”Œ๋ž˜๋„ˆ๊ฐ€ ์ข‹์€ ๊ฒฐ์ •์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ๋Œ๊ณ  ์ฃผ๊ธฐ์ ์œผ๋กœ ANALYZE ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ํ†ต๊ณ„๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค. ํฐ ํ…Œ์ด๋ธ”์— ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋ฉด ์‹œ์Šคํ…œ์€ ํ…Œ์ด๋ธ”๊ณผ ์ธ๋ฑ์Šค๋ฅผ ๋™๊ธฐํ™”ํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค. ์ด ๊ณผ์ •์—์„œ DB ์—”์ง„๋งˆ๋‹ค ๋‹ค๋ฅด๊ฒ ์ง€๋งŒ, ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์ž‘์—…์ด ๋Š๋ ค์งˆ ์ˆ˜ ๋„ ์žˆ๋‹ค. Index Type ์ด ํฌ์ŠคํŒ…์€, postgres ๊ณต์‹๋ฌธ์„œ๋ฅผ ๋ณด๊ณ  ์ž‘์„ฑํ•œ ๊ธ€์ด๋ผ ์•„๋ž˜์™€ ๊ฐ™์ด 5๊ฐœ์˜ ์ธ๋ฑ์Šค ํƒ€์ž…์„ ์„ค๋ช…ํ•œ๋‹ค.

Mysql Condition Filtering

Condition Filtering join ๊ณผ์ •์—์„œ, prefix rows๋Š” ํ•œ ํ…Œ์ด๋ธ”์—์„œ ์ฒ˜๋ฆฌํ•œ ํ–‰๋“ค์ด join์— ์“ฐ์ด๊ธฐ ์œ„ํ•ด ์ „๋‹ฌ๋˜๋Š” ํ–‰์„ ์˜๋ฏธํ•œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ optimizer๋Š” row์˜ ์กฐํ•ฉ์˜ ์ˆ˜๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค์ง€ ์•Š๋Š” ๋ฐฉํ–ฅ์œผ๋กœ prefix count๊ฐ€ ๋‚ฎ์€ ํ…Œ์ด๋ธ”์„ join์˜ ์•ž์— ๋‘๋ ค๊ณ  ๋…ธ๋ ฅํ•œ๋‹ค. ์กฐ๊ฑด ํ•„ํ„ฐ๋ง ์—†์ด๋Š”, prefix rows๋Š” where์ ˆ์— ์˜ํ•ด ์„ ํƒ๋œ ํ–‰์˜ ์˜ˆ์ƒ ์ˆ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค. ๋ฐ˜๋ฉด์—, ์กฐ๊ฑด ํ•„ํ„ฐ๋ง์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด, ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ์ด์ „์— ๊ณ ๋ ค๋˜์ง€ ์•Š์€ where ์ ˆ์˜ ๋‹ค๋ฅธ ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋ฏ€๋กœ prefix rows count๋ฅผ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. EXPLAIN์„ ๋ณด๋ฉด, rows column์€ access method์— ์˜ํ•ด ๊ณ„์‚ฐ๋œ row estimate๋ฅผ ์˜๋ฏธํ•˜๊ณ , filtered column์€ ๋ฐฑ๋ถ„์œจ์„ ์˜๋ฏธํ•˜๋Š”๋ฐ, 100์€ ํ•„ํ„ฐ๋ง์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

Mysql hash join

hash join mysql์—์„œ join์„ ์‹คํ–‰ํ•˜๋Š” ์œ ์ผํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ BNL ์ด์—ˆ๋‹ค. BNL์€ ์™ธ๋ถ€ ํ…Œ์ด๋ธ”์„ ์Šค์บ”ํ•˜๋ฉด์„œ ์ผ์ • ํฌ๊ธฐ์˜ ๋ธ”๋ก(๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ)๋ฅผ ์ฑ„์šธ ๋•Œ๊นŒ์ง€ ํ–‰์„ ์ฝ๊ณ , ๋‚ด๋ถ€ ํ…Œ์ด๋ธ”์„ ์Šค์บ”ํ•˜๋ฉด์„œ ์™ธ๋ถ€ ํ…Œ์ด๋ธ”์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ์— ์žˆ๋Š” ํ–‰๊ณผ ์ผ์น˜ํ•˜๋Š” ์ง€ ํ™•์ธํ•˜๊ณ  ๊ฒฐํ•ฉํ•œ ํ›„ ๊ฒฐ๊ณผ์„ธํŠธ์— ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ๊ทธ ์ดํ›„๋กœ๋Š”, hash join์ด๋ผ๋Š” BNL ๋ณด๋‹ค ๋” ํšจ์œจ์ ์œผ๋กœ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค. hash join์€ ๋‘ ์ž…๋ ฅ ์‚ฌ์ด์—์„œ ์ผ์น˜ํ•˜๋Š” ํ–‰์„ ์ฐพ๊ธฐ ์œ„ํ•ด ํ•ด์‰ฌ ํ…Œ์ด๋ธ”์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. 1 2 3 4 SELECT given_name, country_name FROM persons JOIN countries ON persons.

Dataframe

Dataframe Basic dataframe์˜ ๊ฐ๊ฐ์˜ column์€ series์ž„ axis=1์€ x์ถ•, axis=0๋Š” y์ถ•์ž„ dataframe์˜ column index๋Š” series์˜ name๊ณผ ๋™์ผ properties shape : (n_row,n_columns) index : axis=0, RangeIndex df.index -> RangeIndex(start=0,stop=30000,step=1) columns : axis=1, equals to series names axes : [index, columns] ๊ผด dtypes : ๊ฐ column์˜ type creation 1 2 3 4 5 6 7 8 df = pd.Dataframe({ # series_name : array of object "id":[1,2], "store_nbr":[1,2], "family":['POURTRY','PRODUCT'] }) df = pd.read_csv("some_csv_file.csv") pandas_read_csv_document

Strategy_pattern

strategy pattern ์ด๋ž€? Strategy Pattern์€ ๊ฐ์ฒด๋‚ด์—์„œ ํ–‰๋™์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๊ณ , original context class ๋‚ด์—์„œ ์„œ๋กœ ์ƒํ˜ธ๊ตํ™˜ ํ•  ์ˆ˜ ์žˆ๋Š” ํŒจํ„ด์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์บก์Šํ™”ํ•˜์—ฌ ๋ณ€๊ฒฝ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•ด์ฃผ๋Š” ๋””์ž์ธ ํŒจํ„ด์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์œ„ ๊ตฌ์กฐ์—์„œ ๊ฐ€์žฅ ์ƒ์œ„์— ์žˆ๋Š” class๋ฅผ context class๋ผ ํ•  ๋•Œ, context class์˜ ์—ญํ• ์€ strategy interface๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. strategy interface ๋Š” ๋ชจ๋“  ๊ฒฌ๊ณ ํ•œ strategies์— ๊ณตํ†ต๋˜๋Š” ๋ถ€๋ถ„์ด๊ณ , ๊ฒฌ๊ณ ํ•œ strategy๋Š” ์–ด๋–ค ํ–‰๋™์„ ํ•ด์•ผํ•  ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋””์ž์ธ์„ ๊ตฌ์„ฑํ•œ๋‹ค๋ฉด, context class๋Š” ๊ฐ strategy๊ฐ€ ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋“  ์ฐธ์กฐํ•˜๋Š” strategy๊ฐ€ ๊ทธ ํ–‰๋™์„ ์‚ฌ์šฉํ•˜๋„๋ก ๋กœ์ง๋งŒ ๊ตฌ์„ฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.