์ „์ฒด ๊ธ€

    APM ์†Œ์Šค์„ค์น˜(1) - Apache ์†Œ์Šค ์„ค์น˜

    -์†Œ์Šค์„ค์น˜๋ฅผ ํ•˜๋Š” ์ด์œ ? : ํŒจํ‚ค์ง€ ์„ค์น˜๋กœ ๊ฐ„ํŽธํ•˜๊ฒŒ ์„ค์น˜๋ฅผ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์„ค์น˜๋˜๋Š” ํŒŒ์ผ๋“ค์ด ์‹œ์Šคํ…œ์˜ ์ž์›์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๊ณ  ํŒจํ‚ค์ง€ ๋‹จ์œ„๋กœ ์„ค์น˜๋˜๊ธฐ์— ๊ด€๋ฆฌ์ ์œผ๋กœ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•˜๋‹ค. ์†Œ์Šค ์„ค์น˜๋กœ ์ •๋ง ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ์„ ์„ค์น˜ํ•˜์ž. ์œ ์˜์‚ฌํ•ญ - php ์„ค์น˜ ์‹œ์— apache, mysql ๊ด€๋ จ ์„ค์ •์ด ๋“ค์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— php๋ฅผ ๊ฐ€์žฅ ๋‚˜์ค‘์— ์„ค์น˜ํ•˜์—ฌ ์ค€๋‹ค. - ์„ค์น˜ ์‹œ์— ์˜์กด์„ฑ ๊ฒ€์‚ฌ์— ์œ ์˜ํ•˜์ž. - /usr/local ์„ค์น˜ํ•˜๊ณ  ์†Œ์ŠคํŒŒ์ผ์€ /usr/local/src์— ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด ๊ด€๋ก€์ด๋‹ค. - ๋ฒ„์ „์ฒดํฌ [์ถœ์ฒ˜: m.blog.naver.com/PostView.nhn?blogId=tawoo0&logNo=221582362314&proxyReferer=https:%2F%2Fwww.google.co.kr%2F] 1..

    ์„œ๋ฒ„๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

    softSquared ์‹œ์ž‘ ์„œ๋ฒ„๋ž€ ๋ฌด์—‡์ธ๊ฐ€? ์„œ๋ฒ„์˜ ํŠน์ง• 1) N:1 (ํด : ์„œ) – ๋‚ด ํ”„๋กœ๊ทธ๋žจ์— ๋‹ค์ˆ˜์˜ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ˆ˜์šฉ ํ•  ์ˆ˜ ์ž‡๋Š”๊ฐ€? + ๋ณ‘๋ ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ณ ๋ ค! 2) ์„œ๋ฒ„ ํด๋ผ์ด์–ธํŠธ๋Š” ์ƒ๋Œ€์ ์ด๋‹ค. – ์„œ๋ฒ„ ๊ฐœ๋ฐœ ๋„์ค‘์— ํด๋ผ์ด์–ธํŠธ ์—ญํ• ์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜๋„ ์žˆ์Œ ์ด ๋ฐ–์—๋„ ์—ฌ๋Ÿฌ ํŠน์ง•์ด ์žˆ์ง€๋งŒ ๋Œ€ํ‘œ์  ํŠน์ง•๋งŒ ์ผ๋‹จ ์•Œ์•„ ๋‘์ž. clinet - (server programming – backend language – dbms + db) ๊ตฌ์กฐ์—์„œ ๊ด„ํ˜ธ ์•ˆ์˜ ๊ฒƒ๋“ค์„ ํ†ต์นญํ•˜์—ฌ ์„œ๋ฒ„๋ผ ๋ถ€๋ฅธ๋‹ค. ๊ทธ๋Ÿผ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•œ๋‹ค๋Š” ๋ง์€ ๋ฌด์—ˆ์ผ๊นŒ? : ์œ„์˜ ๊ด„ํ˜ธ ์•ˆ์˜ ๊ฒƒ๋“ค์„ ์‚ฌ์šฉํ•  ์šด์˜์ฒด์ œ ์œ„์— ์„ค์น˜ํ•˜์—ฌ ์„ค์ •๊นŒ์ง€ ๋งˆ์นœ ์ƒํƒœ๊ฐ€ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•œ๋‹ค๋Š” ๋ง์ด ๋œ๋‹ค. -๋‹ค์Œ์œผ๋ก  APM์„ ๊ฐ€์ƒ๋จธ์‹  ์œ„์—์„œ Ubuntu ํ™˜๊ฒฝ ์—์„œ ์ˆ˜๋™์„ค์น˜(์†Œ์Šค ..

    sys.stdin.readline

    Java ์—์„œ scanner ๋ณด๋‹ค buffer ๊ฐ€ ๋” ๊ฐ€๋ณ๊ณ  ๋น ๋ฅธ ๊ฒƒ์ฒ˜๋Ÿผ ํŒŒ์ด์ฌ์—์„œ๋„ input() ๋ณด๋‹ค sys.stdin.readline() ์ด ๋” ๋น ๋ฅด๊ฒŒ ์ž‘๋™ํ•œ๋‹ค. ์ด์œ ๋Š” input() ๋‚ด์—์„œ raw_input()์„ evaluate ํ•ด์„œ ๋ผ๋Š”๋ฐ ์ž์„ธํ•œ๊ฒƒ์€ ๋‚ด๋ถ€๋ฅผ ๋“ค์—ฌ๋‹ค ๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ์—์„œ ๋งŒ์ผ ์ž…๋ ฅ๊ฐ’์ด ๋„ˆ๋ฌด ํฌ๋‹ค๋ฉด(๋ฐฑ๋งŒ ์ด์ƒ์˜ ๊ฐฏ์ˆ˜) ํ•œ๋ฉด input()์„ ์“ฐ๋Š” ๊ฒƒ์„ ์ง€์–‘ํ•˜์ž. ์ž…๋ ฅ ์†๋„ ๋น„๊ต ์ž๋ฃŒ [www.acmicpc.net/blog/view/56]

    ๊ฐœ๋ฐœํ˜• ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„๋ฅผ ์œ„ํ•œ HTTPํ”„๋กœํ† ์ฝœ, REST API with python

    ๊ฐœ๋ฐœํ˜• ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๊ฐœ๋… ์ •๋ฆฌ API๋ž€ ๋ฌด์—‡์ธ๊ฐ€? -Application Programming Interface -ํ”„๋กœ๊ทธ๋žจ๋ผ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ธฐ ์œ„ํ•œ ๋ฐฉ์‹ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ์„œ๋กœ์˜ ๊ทœ์น™์„ ๋งŒ๋“ค์–ด ๋†“์•˜๋‹ค -> ํ”„๋กœํ† ์ฝœ - ์ด๊ฒƒ์€ ์ •ํ•˜๊ธฐ ๋‚˜๋ฆ„ - ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์ค‘ ํ•˜๋‚˜๊ฐ€HTTP(hyper text transfer protocol) ์˜ˆ๋ฅผ ๋“ค์–ด์„œ ํ™ˆํŽ˜์ด์ง€์— url์„ ์ž…๋ ฅํ•˜๋ฉด ํ•ด๋‹น ํŽ˜์ด์ง€๋กœ ๊ฐ€๋Š”๋ฐ ์ด๊ฒƒ์ด http ํ”„๋กœํ† ์ฝœ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. (http ํ”„๋กœํ† ์ฝœ ์ˆœ์„œ๋„) 1. ๋‚ด๊ฐ€ ๋ณด๊ณ  ์‹ถ์€ ํŽ˜์ด์ง€์˜ url ์„ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์„œ๋ฒ„ ์ธก์œผ๋กœ ๋ณด๋‚ธ๋‹ค 2. ์„œ๋ฒ„๋Š” ๋ธŒ๋ผ์šฐ์ € ์ธก์œผ๋กœ ์‘๋‹ต์„ ๋ณด๋‚ด์ค€๋‹ค 3. ๋ธŒ๋ผ์šฐ์ €๋Š” ์„œ๋ฒ„์—์„œ ์˜จ ์‘๋‹ต์„ ๊ฐ€์ง€๊ณ  ์‹œ๊ฐํ™” ํ•˜์—ฌ์„œ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚ด์–ด ์ค€๋‹ค. Python์—์„œ ์‚ฌ์šฉ ๋ฐฉ๋ฒ• 1. request..

    Chapter 7. ์ด์ง„ํƒ์ƒ‰

    1. ์ˆœ์ฐจํƒ์ƒ‰: ๋ฆฌ์ŠคํŠธ ์•ˆ์— ์žˆ๋Š” ํŠน์ •ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ ์•ž์—์„œ ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์”ฉ ์ฐจ๋ก€๋Œ€๋กœ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ• count()๋ฉ”์„œ๋“œ ๋˜ํ•œ ์ˆœ์ฐจํƒ์ƒ‰์ด ์ด์šฉ๋œ๋‹ค. 2. ์ด์ง„ํƒ์ƒ‰: ์ด์ง„ํƒ์ƒ‰์€ ๋ฐฐ์—ด ๋‚ด๋ถ€์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ์–ด์•ผ๋งŒ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๋ณ€์ˆ˜ 3๊ฐœ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์‹œ์ž‘์ , ๋์  ๊ทธ๋ฆฌ๊ณ  ์ค‘๊ฐ„ ์ ์„ ์ด์šฉํ•œ๋‹ค. ์ฐพ์œผ๋ ค๋Š” ๋ฐ์ดํ„ฐ์™€ ์ค‘๊ฐ„์  ์œ„์น˜์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋น„๊ตํ•ด์„œ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š”๊ฒŒ ์ด์ง„ํƒ์ƒ‰ ๊ณผ์ •์ด๋‹ค. ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(nlogn)์ด๋‹ค. (ํ•œ๋ฒˆ ํ™•์ธํ• ๋•Œ ๋งˆ๋‹ค ํ™•์ธํ•˜๋Š” ์›์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ ˆ๋ฐ˜์”ฉ ์ค„์–ด๋“ค๊ธฐ ๋•Œ๋ฌธ) ์ด์ง„ํƒ์ƒ‰ ์‰ฝ๊ฒŒ ๋ณด์ง€ ๋ง์ž!!! '์กด ๋ฒคํ‹€๋ฆฌ'(์ƒ๊ฐํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•„์ž) ์˜ ๋ง์— ๋”ฐ๋ฅด๋ฉด ์ œ๋Œ€๋กœ ์ด์ง„ ํƒ์ƒ‰ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” 10% ๋‚ด์™ธ๋ผ ํ•  ์ •๋„๋กœ ์‹ค์ œ ๊ตฌํ˜„์€ ๊นŒ..

    ๋‚˜์˜ ๋ถ€์บ๋„ˆ 125cc ์ž…๋ฌธ๊ธฐ

    ์ €์˜ ์ฒซ ๋ฐ”์ดํฌ๋Š” ๋ถ€์บ๋„ˆ 125cc ๋กœ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ฌ๋ฆฌ๋ธŒ ๊ทธ๋ฆฐ์ด ๋งค์šฐ ์ด์˜์ฃ ? ํ•œ๊ฐ• ์œ„๋„ ๋‹ฌ๋ ค๋ณด๊ณ  ๋„๋กœ์—์„œ ์‹œ๋™๋„ ๊บผ๋œจ๋ ค ๋ณด๊ณ  ์‹œ์›ํ•œ ๋ฐค๊ณต๊ธฐ ๋งž์œผ๋ฉฐ ๋ฐค๋ฐ”๋ฆฌ๋„ ํ•ด๋ณด๊ณ  ์ •๋ง ์žฌ๋ฐŒ์—ˆ๋„ค์š”! ํˆฌ์–ด๋„ ๊ฐ€๊ณ  ์‹ถ์€๋ฐ ๊ฐ™์ด ๊ฐˆ ์‚ฌ๋žŒ์ด ์—†์–ด์š” ใ… ใ…  (์•„์‹ธ๋ผ๋น„์•ผ...) ์•ž์œผ๋กœ๋„ ์•ˆ์ „ ๋ผ์ด๋”ฉ! ๋ฐฉ์–ด ์šด์ „!

    Chapter 6. ์ •๋ ฌ

    1. ์„ ํƒ์ •๋ ฌ: ๋งค๋ฒˆ ๊ฐ€์žฅ ์ž‘์€๊ฒƒ์„ ์„ ํƒํ•ด์„œ ์ •๋ ฌ ์•ˆ๋œ ๋ถ€๋ถ„์˜ ๊ฐ€์žฅ ์ฒซ๋ฒˆ์งธ ์œ„์น˜์— ์ž๋ฆฌ์‹œํ‚จ๋‹ค. tip) ํŒŒ์ด์ฌ์˜ ์Šค์™€์ดํ”„๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์ด์šฉํ•˜์ž -์‹œ๊ฐ„ ๋ณต์žก๋„: O(n^2) 2. ์‚ฝ์ž…์ •๋ ฌ: ์ด๋ฏธ ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ์— ๋ฐ์ดํ„ฐ ํ•˜๋‚˜๋ฅผ ์‚ฝ์ž… ํ• ๋•Œ ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž…ํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์„ ์ฐฉ์•ˆํ•œ๋‹ค๋Š” ์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ๋œ๋‹ค. ํ˜„์žฌ ๊ฐ€๋ฅดํ‚ค๊ณ  ์žˆ๋Š” ์ธ๋ฐ์Šค ์•ž๋ถ€๋ถ„์€ ์ด๋ฏธ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค๊ณ  ๋ณธ๋‹ค(์‹ค์ œ๋กœ ์ •๋ ฌ ๋˜์–ด ์žˆ์„๊ฒƒ์ด๋‹ค.). ์ธ๋ฑ์Šค๋ฅผ ์ ์ฐจ ์ฆ๊ฐ€ ์‹œํ‚ค๋ฉด์„œ ์•ž์˜ ๋ฐฐ์—ด์— ์‚ฝ์ž…ํ•˜๋Š” ์‹์œผ๋กœ ๊ฑฐ์˜ ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ์— ํšจ๊ณผ์ ์ด๋‹ค. - ์‹œ๊ฐ„ ๋ณต์žก๋„ : O(n^2), ๊ฑฐ์˜ ์ •๋ ฌ๋˜์–ด ์ž‡์„ ๊ฒฝ์šฐ -> O(n) 3. ํ€ต์ •๋ ฌ: ์žฌ๊ท€์‹์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค. 3๊ฐ€์ง€ ํฌ์ธํŠธ๋งŒ ๊ธฐ์–ตํ•˜์ž 1. ํ”ผ๋ฒ— ์ •ํ•˜๊ธฐ 2. ์™ผ์ชฝ ๋ถ€๋ถ„ ์˜ค๋ฅธ์ชฝ ๋ถ€๋ถ„ ๊ฐ ๋‘ ์ง€์ ์—์„œ ์ถœ๋ฐœํ•˜์—ฌ ์™ผ์ชฝ ..

    ์ƒํ™œ์ฝ”๋”ฉ OAuth ์ •๋ฆฌ

    ์ƒํ™œ์ฝ”๋”ฉ OAuth ์ •๋ฆฌ [์ถœ์ฒ˜:https://www.youtube.com/watch?v=hm2r6LtUbk8&list=PLuHgQVnccGMA4guyznDlykFJh28_R08Q-&index=1] OAuth ์— ๋“ฑ์žฅํ•˜๋Š” 3๊ฐœ์˜ ์ฃผ์ฒด๊ฐ€ ์žˆ๋‹ค. - resource owner(user) - resource server - client -(์ถ”๊ฐ€)Authorization server – ์ธ์ฆ๊ณผ ๊ด€๋ จ๋œ ์ฒ˜๋ฆฌ๋ฅผ ์ „๋‹ดํ•˜๋Š” ์„œ๋ฒ„ OAuth๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ• - Client๊ฐ€ resource server๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” resource server์˜ ์Šน์ธ์„ ์‚ฌ์ „์— ๋ฐ›์•„ ๋†”์•ผํ•œ๋‹ค. ์ด๊ฒƒ์„ ๋“ฑ๋ก(register)๋ผ๊ณ  ํ•œ๋‹ค. ์„œ๋น„์Šค ๋งˆ๋‹ค ๋‹ค ๋‹ค๋ฅด๋‹ค. ๊ณตํ†ต์ ์œผ๋กœ ๋ฐ›๋Š”๊ฒƒ์€ 1. Client ID -> ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ์–ดํ”Œ๋ฆฌ..