@winuss
Hello :) Developer notes!

๐ŸŒ React Best Practice

November 24, 2022

๋Œ€์„ธ ํ”„๋ก ํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ ๋ฆฌ์—‘ํŠธ๋กœ ๊ฐœ๋ฐœ์„ ํ•˜๊ธฐ์— ์•ž์„œ ๊ฐ€๊ธ‰์ ์ด๋ฉด ๊ผญ ์ง€์ผœ์•ผํ•  ๋ถ€๋ถ„์„๋“ค ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์Šต๊ด€์ ์œผ๋กœ ์•„๋ž˜ ๋‚ด์šฉ๋“ค์€ ๋ฐ˜๋“œ์‹œ ์ˆ™์ง€ํ•ฉ์‹œ๋‹ค! ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์™€ ํ›…์„ ์‚ฌ์šฉ React ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์™€ ํ›…์€ ํด๋ž˜์Šค์— ๋น„ํ•ด ๋” ๊ฐ„๊ฒฐํ•˜๊ณ  ์ฝ๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋ฏ€๋กœ ๋” ์ž์ฃผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ƒํƒœ์‚ฌ์šฉ ํ”ผํ•˜๊ธฐ React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•  ๋•Œ ์ƒํƒœ๋ฅผ ๋งŽ์ด ์‚ฌโ€ฆ


๐Ÿ„ Angular Hybrid Rendering

October 27, 2022

์ด์ „ ๊ธ€์—์„œ CSR, SSR, SSG์— ๋Œ€ํ•ด ๊ฐ๊ฐ์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด์„œ ๋‹ค๋ค„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. Angular, React, Vue์—์„œ ๊ฐ๊ฐ์˜ ๋ฐฉ์‹์œผ๋กœ ์ด๋Ÿฌํ•œ ๋ Œ๋”๋ง ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„์„ ํ•  ์ˆ˜๊ฐ€ ์žˆ๋Š”๋ฐ์š”. ๋Œ€ํ‘œ์ ์œผ๋กœ Angular๋Š” Universal, React๋Š” NextJs, Vue๋Š” Nuxt ๋“ฑ์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™๋„ค์š”. Angular๋Š” ๊ตญ๋‚ด์—์„œ ์ธ๊ธฐ๊ฐ€ ๋งŽ์ด ์—†์–ดโ€ฆ


๐ŸŽจ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž˜ ๋ชจ๋ฅด๋Š” HTML ํƒœ๊ทธ

January 16, 2022

์›น์„ ๊ฐœ๋ฐœํ•˜๋‹ค๋ณด๋ฉด ์ต์ˆ™ํ•œ HTML ํƒœ๊ทธ๋“ค๋งŒ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๊ณ  ๊ทธ์™ธ ๊ธฐ๋Šฅ์ ์ธ ๋ถ€๋ถ„๋“ค์€ javascript๋‚˜ css๋กœ ๊ตฌํ˜„์„ ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ (div, span anchor, header, list.. ๋“ฑ) ์•„์ฃผ ์œ ์šฉํ•˜๋ฉด์„œ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ž˜ ๋ชจ๋ฅด๋Š” ํƒœ๊ทธ๋“ค์„ ํ•œ๋ฒˆ ์‚ดํŽด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. CSS ,JS๋กœ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ ๊ฒƒ์„ ์ด์ œ HTML๋กœ ์‹ฌํ”Œํ•˜๊ฒŒ ๊ฐœ๋ฐœํ•ด ๋ณด์„ธ์š”. โ€ฆ


๐Ÿ”ฎ Server/Client Side Rendering

January 08, 2022

์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ Œ๋”๋ง ๋ฐฉ์‹์€ ํฌ๊ฒŒ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๋ Œ๋”๋ง ๋ฐฉ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์„ ์‚ดํŽด๋ณด๊ธฐ์— ์•ž์„œ ๊ณผ๊ฑฐ ์›น ์‚ฌ์ดํŠธ์˜ ์—ญ์‚ฌ์— ๋Œ€ํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Static Site 1990๋…„ ์ค‘๋ฐ˜๊นŒ์ง€๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์ดํŠธ๊ฐ€ static ์‚ฌ์ดํŠธ ์˜€์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„์— ์ด๋ฏธ ์ž˜ ๋งŒ๋“ค์–ด์ง„ html๋ฌธ์„œ๋“ค์ด ์žˆ๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ๋ถ€๋ผ์šฐ์ €์—์„œ ์ฃผ์†Œ์— ์ ‘์†ํ•˜๋ฉด ์„œ๋ฒ„์— ์ด๋ฏธ ๋ฐฐํฌ๋˜โ€ฆ


๐Ÿ“— Angular Google Analytics Traking

January 02, 2022

๊ตฌ๊ธ€ ๋ถ„์„์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ถ”์ฒ™์•„์ด๋””๊ฐ€ ํฌํ•จ๋œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ index.html ํŽ˜์ด์ง€์— ์‚ฝ์ž…๋งŒ ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์•„์ฃผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์—ฐ๋™์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Angular์™€ ๊ฐ™์€ SPA๋ฐฉ์‹์€ ๋‹จ์ผํŽ˜์ด์ง€๋กœ ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ˆœํžˆ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ณต์‚ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐ ๋ฐฉ์‹์œผ๋กœ ๋งŒ์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋ถ„์„๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ธฐ์—๋Š” ์•„์‰ฌ์›€์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ? Angulโ€ฆ


๐Ÿค  Web Storage

April 11, 2021

Web Storage Web Storage๋Š” HTML5์—์„œ ์ถ”๊ฐ€๋œ ๊ฐ„๋‹จํ•œ ํ‚ค์™€ ๊ฐ’์„ ์ €์žฅ(key-value storage) ํ•  ์ˆ˜ ์žˆ๋Š” ์ €์žฅ์†Œ์ด๋‹ค. ๋ฐ์ดํ„ฐ์˜ ์ง€์†์„ฑ์— ๋”ฐ๋ผ ์˜๊ตฌ์ €์žฅ์†Œ(LocalStorage)์™€ ์ž„์‹œ์ €์žฅ์†Œ(SessionStorage) ๋‘๊ฐ€์ง€๋ฅผ ์ง€์›ํ•œ๋‹ค. ๊ทธ ๋™์•ˆ ๋งŽ์ด ์‚ฌ์šฉํ•ด ์™”๋˜ ์ฟ ํ‚ค์™€ ๊ฑฐ์˜ ์ฐจ์ด๊ฐ€ ์—†์–ด ๋ณด์ด์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ์ฟ ํ‚ค์˜ ๋‹จ์ ์„ โ€ฆ


Python ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ Dask

November 01, 2020

ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ๊ฐ€ ํšจ์œจ์ ์ธ๋ฐ, ๊ทธ๋ž˜์„œ Apache Spark์˜ pyspark๋ฅผ ๋งŽ์ด๋“ค ์‚ฌ์šฉํ•œ๋‹ค. ์†๋„๋Š” ๋งค์šฐ ๋น ๋ฅด์ง€๋งŒ Pandas์— ์ต์ˆ™ํ•œ ์‚ฌ๋žŒ๋“ค์€ ๋ถˆํŽธํ•œ ์ ์ด ์žˆ๋‹ค. ์ด๋ฅผ ํ•ด์†Œ์‹œ์ผœ ์ค„๋งŒํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋ฐ”๋กœ Dask์ด๋‹ค. (๊ทธ ์™ธ modin, ray, vaex๋“ฑ์ด ์žˆ๋Š”๋“ฏ ํ•˜๋‹ˆ ๊ด€์‹ฌ์žˆ๋‹ค๋ฉด ์ฐพ์•„๋ณด์ž.) ๋ณ‘๋ ฌ ์ปดํ“จํŒ…(Parallel Coโ€ฆ


DataFrame ์‹œ๊ณ„์—ด ์ž๋ฃŒ ๋‹ค๋ฃจ๊ธฐ

October 31, 2020

DatetimeIndex ์ธ๋ฑ์Šค ์‹œ๊ณ„์—ด ์ž๋ฃŒ๋Š” ์ธ๋ฑ์Šค๊ฐ€ ๋‚ ์งœ ํ˜น์€ ์‹œ๊ฐ„์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋งํ•œ๋‹ค. Pandas์—์„œ ์‹œ๊ณ„์—ด ์ž๋ฃŒ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ์ธ๋ฑ์Šค๋ฅผ ์ž๋ฃŒํ˜•์œผ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. ๋Š” ํŠน์ •ํ•œ ์ˆœ๊ฐ„์— ๊ธฐ๋ก๋œ ํƒ€์ž„์Šคํƒฌํ”„(timestamp) ํ˜•์‹์˜ ์‹œ๊ณ„์—ด ์ž๋ฃŒ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ์ธ๋ฑ์Šค์ด๋‹ค. ํƒ€์ž„์Šคํƒฌํ”„ ์ธ๋ฑ์Šค์˜ ๋ผ๋ฒจ๊ฐ’์ด ๋ฐ˜๋“œ์‹œ ์ผ์ •ํ•œ ๊ฐ„๊ฒฉ์ผ ํ•„์š”๋Š” ์—†๋‹ค. ์ธ๋ฑ์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™โ€ฆ


DataFrame ํ”ผ๋ด‡๊ณผ ๊ทธ๋ฃน

October 18, 2020

ํ”ผ๋ด‡ํ…Œ์ด๋ธ” ํ”ผ๋ด‡ํ…Œ์ด๋ธ”(pivot table)์ด๋ž€ ๋ฐ์ดํ„ฐ ์—ด ์ค‘์—์„œ ๋‘๊ฐœ์˜ ์—ด์„ ๊ฐ๊ฐ ํ–‰ ์ธ๋ฑ์Šค, ์—ด ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜์—ฌ ํŽผ์ณ๋†“์€ ๊ฒƒ์„ ๋งํ•œ๋‹ค. Pandas๋Š” ํ”ผ๋ด‡ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๋งค์„œ๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์ฒซ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ๋Š” ํ–‰ ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉํ•  ์—ด ์ด๋ฆ„, ๋‘๋ป”์งธ ์ธ์ˆ˜๋กœ๋Š” ์—ด ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉํ•  ์—ด ์ด๋ฆ„, ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฐ์ดํ„ฐ๋กœ ์‚ฌ์šฉํ•  ์—ด ์ด๋ฆ„์„โ€ฆ


DataFrame ํ•ฉ์„ฑ

October 09, 2020

Pandas๋Š” ๋‘ ๊ฐœ ์ด์ƒ์˜ DataFrame์„ ํ•˜๋‚˜๋กœ ํ•ฉ์น˜๋Š” ๋ฐ์ดํ„ฐ ๋ณ‘ํ•ฉ(merge)์ด๋‚˜ ์—ฐ๊ฒฐ(concatenate)์„ ์ง€์›ํ•œ๋‹ค. ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ DataFrame ๋ณ‘ํ•ฉ ํ•จ์ˆ˜๋Š” ๋‘ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์˜ ๊ณตํ†ต ์—ด ํ˜น์€ ์ธ๋ฑ์Šค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์„ ํ•ฉ์นœ๋‹ค. ์ด ๋•Œ ๊ธฐ์ค€์ด ๋˜๋Š” ์—ด, ํ–‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ‚ค(Key)๋ผ๊ณ  ํ•œ๋‹ค. ํ•จ์ˆ˜๋กœ ์œ„์˜ ๋‘ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ df1โ€ฆ