๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“  archive29

[Haskell Tutorial] Hello World! ๐Ÿ’ก ํ•ด๋‹น ํฌ์ŠคํŠธ๋Š” Learn Haskell by building a blog generator ๋ฅผ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ๐Ÿ“Œ Haskell ๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ค์ • ๊ฐ€์žฅ ๋จผ์ € GHCup ์„ ์„ค์น˜ํ•ด์ค๋‹ˆ๋‹ค. Haskell ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ HLS, ghc ๋“ฑ์„ ๋ฒ„์ „๋ณ„๋กœ ํŽธํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. GHCup GHCup From here you can search these documents. Enter your search terms below. www.haskell.org curl --proto '=https' --tlsv1.2 -sSf | sh ์„ค์น˜๊ฐ€ ๋๋‚˜๋ฉด, ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ํˆด ๋ฒ„์ „๋“ค์„ ํ•œ๋ˆˆ์— ํ™•์ธํ•˜๋ฉฐ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. $ ghcup tui vscode ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ Haskell ํ”Œ๋Ÿฌ๊ทธ.. 2022. 11. 28.
[Design Pattern] PUB-SUB ํŒจํ„ด ๐Ÿ“Œ PUB-SUB ํŒจํ„ด PUB-SUB ํŒจํ„ด์€ Observer ํŒจํ„ด์˜ ์ผ์ข…์ด๋ฉฐ ๋‹ค์ˆ˜์˜ consumer ๊ฐ€ ์ž์‹ ์ด ๊ด€์‹ฌ ์žˆ๋Š” ์ด๋ฒคํŠธ๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. (๋‹จ, sender ์™€ receiver ๋Š” coupling ๋˜์ง€ ์•Š์•„ ์„œ๋กœ์˜ ์กด์žฌ๋ฅผ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.) ๐Ÿ“Œ PUB-SUB vs Observer ์œ„๋Š” Observer Pattern ์˜ ๋™์ž‘ ํ๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ๋ฆ„์„ ๊ตฌํ˜„ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ Observer Pattern ์„ ๊ตฌํ˜„ํ–ˆ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด PUB-SUB ๋Š” ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ๋Š” ๊ฒƒ ์ผ๊นŒ์š”? PUB-SUB ์˜ ๊ฒฝ์šฐ Subject -> Publisher ๊ทธ๋ฆฌ๊ณ  Observer -> Subscriber ๋ผ๋Š” ๋ช…์นญ์ƒ์˜ ๋ณ€๊ฒฝ๋งŒ ์กด์žฌํ•  ๋ฟ ๋ˆˆ์— ๋„๋Š” ์ฐจ์ด์ ์€ ์—†์–ด ๋ณด์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋งŽ์€ ์„œ.. 2022. 6. 13.
JWT (JSON Web Token) ๐Ÿ“Œ JWT ๋ž€? JWT๋Š” JSON ํฌ๋งท์„ ์ด์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์†์„ฑ์„ ์ €์žฅํ•˜๋Š” claim ๊ธฐ๋ฐ˜์˜ web token ์ž…๋‹ˆ๋‹ค. ํ† ํฐ ์ž์ฒด๋ฅผ ์ •๋ณด๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— self-contained ๋ฐฉ์‹ ์ด๋ผ๊ณ  ํ•˜๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ๋ฆ„์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. JWT์—๋Š” ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ํ† ํฐ์— ํฌํ•จํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๊ฐ™์€ ์„œ๋ฒ„์™€์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์˜ค๋ฒ„ ํ—ค๋“œ๋ฅผ ์ตœ์†Œํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์„œ๋ฒ„๋Š” JWT ์ƒ์„ฑ ์‹œ JWT ์— ๊ฒ€์ฆ์ด๋‚˜ ๊ถŒํ•œ ์ธ๊ฐ€ ์‹œ ํ•„์š”ํ•œ ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— JWT ์— ๋Œ€ํ•œ ์ƒํƒœ๋ฅผ ๋”ฐ๋กœ ๊ด€๋ฆฌํ•˜์ง€ ์•Š์•„ stateless ํ•œ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ“Œ JWT ๊ตฌ์กฐ JWT ๋Š” header , payload , signature ์„ธ ๊ฐ€์ง€๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ถ€๋ถ„์€ base64-URLSAFE ๋กœ ์ธ์ฝ”.. 2022. 5. 23.
Cookie & Web Storage ๐Ÿ“Œ ์ฟ ํ‚ค์™€ ์ฐจ์ด์ ? 1๏ธโƒฃ ๋„คํŠธ์›Œํฌ ์š”์ฒญ ์‹œ ์›น ์‚ฌ์ดํŠธ์—์„œ cookie ๋ฅผ ์„ค์ •ํ•˜๋ฉด ๋งค ์š”์ฒญ๋งˆ๋‹ค ํ—ค๋”์— ๋‹ด๊ฒจ์„œ ์„œ๋ฒ„๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ web storage ๋Š” ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ์กด์žฌํ•˜๋ฉฐ ์„œ๋ฒ„๋กœ ์ „์†ก๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ ๋น„์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 2๏ธโƒฃ HTTP ํ—ค๋” ์กฐ์ž‘ ๋˜ํ•œ ์Šคํ† ๋ฆฌ์ง€ ๊ฐ์ฒด๋Š” ์„œ๋ฒ„๊ฐ€ HTTP ํ—ค๋”๋ฅผ ํ†ตํ•ด ์กฐ์ž‘ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. web storage ๊ฐ์ฒด๋Š” ๋ชจ๋‘ JS ๋‚ด์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. 3๏ธโƒฃ ์ €์žฅ์šฉ๋Ÿ‰ ์ฟ ํ‚ค๋Š” ์ตœ๋Œ€ 20๊ฐœ์— ๊ฐ ์ฟ ํ‚ค์— 4KB ์˜ ์šฉ๋Ÿ‰ ์ œํ•œ์ด ์žˆ๋Š” ๋ฐ˜๋ฉด์— web storage ๋Š” ๋ธŒ๋ผ์šฐ์ €์™€ ๊ธฐ๊ธฐ์— ๋”ฐ๋ผ ๋‹ค๋ฅด์ง€๋งŒ ๋ชจ๋ฐ”์ผ์€ 2MB , ๋ฐ์Šคํฌํƒ‘์€ 5MB ~ 10MB ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๐Ÿ“Œ Local Storage & Session Storage.. 2022. 5. 22.
[Vue.js] ๋ฐ˜์‘ํ˜• ์‹œ์Šคํ…œ์˜ ๋‚ด๋ถ€ ๋™์ž‘ ๋ฐฉ์‹ ์‚ดํŽด๋ณด๊ธฐ ๐Ÿ’ก ๋ณธ ํฌ์ŠคํŠธ๋Š” Vue 2.x ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Vue์˜ ๋ฐ˜์‘ํ˜• ์‹œ์Šคํ…œ์€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ• ๊นŒ? ์ด์ „ ํฌ์ŠคํŠธ์—์„œ ์ œ๊ฐ€ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ์‹ค์ œ ๋งˆ์ฃผํ–ˆ๋˜ ์ด์Šˆ์™€ ํ•จ๊ป˜ Vue ์˜ ๋ฐ˜์‘ํ˜• ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ดค๋‹ค๋ฉด ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ๋‚ด๋ถ€ ๋™์ž‘์— ๋Œ€ํ•ด ์ข€ ๋” ๊นŠ์ด ์žˆ๋Š” ๋‚ด์šฉ๋“ค์„ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ“Œ Vue ๋Š” ์–ด๋–ป๊ฒŒ ์ƒํƒœ ๋ณ€ํ™”๋ฅผ ๊ฐ์ง€ํ• ๊นŒ? ๋‹ค์Œ์€ data ๋ฅผ ํ™”๋ฉด์— ๋ณด์—ฌ์ฃผ๋Š” ๊ฐ„๋‹จํ•œ Vue ์ปดํฌ๋„ŒํŠธ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค. {{ name }} ์—ฌ๊ธฐ์„œ name ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์ด ๊ฐ’์ด ํ™”๋ฉด์— ๊ทธ๋Œ€๋กœ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. Vue ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ์ด ๊ณผ์ •์ด ์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋˜๋Š” ๊ฒƒ์ผ๊นŒ์š”? ๋‹ค์Œ์€ Vue ๊ณต์‹ ๋ฌธ์„œ์— ์†Œ๊ฐœ๋˜์–ด์žˆ๋Š” ๋ฐ˜์‘ํ˜•์˜ ๋™์ž‘ ์›๋ฆฌ์— ๋Œ€ํ•œ ๊ทธ๋ฆผ์ž…๋‹ˆ๋‹ค. data ์†์„ฑ์˜ ํ• ๋‹น ๋ฐฉ์‹ Vue ๋Š” data ๋กœ JavaSc.. 2022. 3. 7.
[Vue.js ์ƒํƒœ๊ด€๋ฆฌ 3ํŽธ] Vuex ์–ธ์ œ, ์–ด๋–ป๊ฒŒ ์จ์•ผํ• ๊นŒ? Redux ๋ฅผ ๊ณ ์•ˆํ•œ Dan Abramov ๋Š” ์ƒํƒœ ๊ด€๋ฆฌ์— ๋Œ€ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜๊ฒฌ์„ ๋งํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Flux ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์•ˆ๊ฒฝ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์–ธ์ œ ํ•„์š”ํ• ์ง€๋Š” ์Šค์Šค๋กœ ์•Œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” vuex ๋ฅผ ์–ธ์ œ ์“ฐ๋Š” ๊ฒƒ์ด ์ข‹์„์ง€์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์–ด๋Š ๊ธฐ์ˆ ์ด๋‚˜ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋“ฏ ํ•ญ์ƒ ์ •๋‹ต์ธ ๊ฒƒ์€ ์—†์œผ๋‹ˆ๊นŒ์š” ๐Ÿ˜„. ๐Ÿ“Œ Vuex ๋„์ž… ์‹œ ๊ณ ๋ คํ•  ์  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ทœ๋ชจ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์€ ์•ฑ์˜ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๋ฉด Vuex ๊ฐ€ ๊ผญ ํ•„์š”ํ•  ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ์ข€ ๋” ์ž์„ธํ•˜๊ฒŒ๋Š” ์•ฑ์ด ์–ด๋– ํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๊ณ  ์žˆ๋Š”์ง€๊ฐ€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๋ฐ์ดํ„ฐ ํ๋ฆ„์€ ์ผ์ •ํ•œ ํŒจํ„ด์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์•™ ์ง‘์ค‘์‹์œผ๋กœ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™๋‹ค๋Š” ํŒ๋‹จ์ด ๋“ค ๋•Œ๊นŒ์ง€ ์ •๋ง Vuex ๊ฐ€ ํ•„์š”ํ•œ ์ƒํ™ฉ์ธ์ง€ ์ƒ๊ฐํ•ด๋ณผ ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ.. 2022. 3. 7.