ํ”„๋ก ํŠธ์—”๋“œ 7

[JavaScript] Function vs Const

React๋กœ ์›น ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ ์ปดํฌ๋„ŒํŠธ๋ฅผ function(){} ํ˜•ํƒœ๋กœ ์„ ์–ธํ•˜๊ธฐ๋„ ํ•˜๊ณ  const=()=>{} ํ˜•ํƒœ๋กœ ์„ ์–ธํ•˜๊ธฐ๋„ ํ•œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋‘ ๋ฐฉ์‹์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ์ง€, ๋” ๋‚˜์€ ๋ฐฉ์‹์ด ์žˆ๋‹ค๋ฉด ์–ด๋–ค ๊ฒƒ์ธ์ง€ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž. ๋จผ์ € ๋‘ ๋ฐฉ์‹์˜ ์ฐจ์ด์ ์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€์ด๋‹ค. ํ˜ธ์ด์ŠคํŒ… ๊ฐ€๋Šฅ ์—ฌ๋ถ€ export default ๋™์‹œ ์„ ์–ธ ์—ฌ๋ถ€ * ํ˜ธ์ด์ŠคํŒ…(hoisting) : ์ธํ„ฐํ”„๋ฆฌํ„ฐ๊ฐ€ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ํ•จ์ˆ˜, ๋ณ€์ˆ˜, ํด๋ž˜์Šค ๋˜๋Š” ์ž„ํฌํŠธ(import)์˜ ์„ ์–ธ๋ฌธ์„ ํ•ด๋‹น ๋ฒ”์œ„์˜ ๋งจ ์œ„๋กœ ์ด๋™์‹œํ‚ค๋Š” ๊ณผ์ • ํ˜ธ์ด์ŠคํŒ… ๊ฐ€๋Šฅ ์—ฌ๋ถ€ Function() ์œผ๋กœ ์„ ์–ธํ•˜๋Š” ๋ฐฉ์‹์€ ํ˜ธ์ด์ŠคํŒ…์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ ์‹คํ–‰ ์ฝ”๋“œ ๋ฐ‘์— ์„ ์–ธ์„ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ฐ˜๋ฉด์— Const=()=>์™€ ๊ฐ™์€ ๊ฒฝ์šฐ ํ˜ธ์ด์ŠคํŒ…์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ..

[ํฌํŠธํด๋ฆฌ์˜ค ์ œ์ž‘ ๊ณผ์ •] CSS - ๊ธ€์”จ ํ…Œ๋‘๋ฆฌ๋งŒ ๋‚จ๊ธฐ๊ณ  ๋ฐฐ๊ฒฝ ์ œ๊ฑฐํ•˜๊ธฐ

์œ„์™€ ๊ฐ™์ด ์›น์‚ฌ์ดํŠธ ๋ฉ”์ธ ํŽ˜์ด์ง€์— ํƒ€์ดํ‹€์„ ํ…Œ๋‘๋ฆฌ๋งŒ ์ œ๊ฑฐํ•œ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•˜๊ณ  ์‹ถ์–ด์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ–ˆ๋‹ค. color:transparent; -webkit-text-stroke: 1px black; ๊ธ€์”จ์˜ ์ปฌ๋Ÿฌ๋ฅผ ํˆฌ๋ช…์ƒ‰์œผ๋กœ ์„ค์ •ํ•˜๊ณ , -webkit-text-stroke : width color; ํ˜•์‹์œผ๋กœ ๊ธ€์”จ์— ํ…Œ๋‘๋ฆฌ๋ฅผ ์ค„ ์ˆ˜ ์žˆ๋‹ค.

[ํฌํŠธํด๋ฆฌ์˜ค ์ œ์ž‘ ๊ณผ์ •] ํ™˜๊ฒฝ ์„ค์ •(React์™€ TypeScript๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ )

๋จผ์ €, ๋‚˜๋Š” React, TypeScript๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ CSS ์Šคํƒ€์ผ๋ง์€ Styled-Component๋ฅผ ์“ฐ๊ณ , ๊ฒŒ์‹œํŒ ๊ธฐ๋Šฅ์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” Firebase๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•ด๋ดค๋˜ React๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ํŽธํ•ด์„œ๋„ ์žˆ์ง€๋งŒ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์šฉ์ดํ•˜๋‹ค. ์ปดํฌ๋„ŒํŠธ์˜ ๊ธฐ๋Šฅ๊ณผ ์—ญํ• ์„ ๊ตฌ๋ถ„ํ•ด์„œ ์œ ์ง€๋ณด์ˆ˜์™€ ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•˜๊ณ , ๋ฐ˜๋ณต ์‚ฌ์šฉ์ด ํ•„์š”ํ•  ๊ฒฝ์šฐ ๋ถ„๋ฆฌํ•ด์„œ ์ €์žฅํ•ด๋‘๊ณ  ๋‹ค์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. Virtual DOM์„ ์ด์šฉํ•ด์„œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. Virtual DOM์€ ์‹ค์ œ DOM์˜ ๋ณต์‚ฌ๋ณธ์œผ๋กœ, ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ณ€ํ™”๋ฅผ ์ฃผ๊ณ  ์‹ถ์€ ๋ถ€๋ถ„๋งŒ Virtual DOM์„ ๋ณ€๊ฒฝํ•œ ๋’ค์— ์‹ค์ œ DOM๊ณผ ๋น„๊ตํ•ด์„œ ๋ณ€ํ™”๊ฐ€ ์ผ์–ด๋‚œ ๋ถ€๋ถ„ ์ฆ‰, ์‹ค์ œ..

[ํฌํŠธํด๋ฆฌ์˜ค ์ œ์ž‘ ๊ณผ์ •] Intro.

https://1eehyunji.com/ ์ดํ˜„์ง€ | ํ”„๋ก ํŠธ์—”๋“œ ํฌํŠธํด๋ฆฌ์˜ค 1eehyunji.com ์ง€๋‚œ 11์›”, ์•ฝ ์ผ์ฃผ์ผ๊ฐ„ ํ”„๋ก ํŠธ์—”๋“œ ํฌํŠธํด๋ฆฌ์˜ค ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. ๋ฐ˜์‘ํ˜•, ์• ๋‹ˆ๋ฉ”์ด์…˜์— ์กฐ๊ธˆ ์‹ ๊ฒฝ์จ์„œ ๋ชจ๋ฐ”์ผ์—์„œ๋„ ์›ํ™œํ•˜๊ฒŒ ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋™์ ์ธ ๋ฐ˜์‘ํ˜• ์›น์„ ๋ชฉํ‘œ๋กœ ํ–ˆ๋‹ค! ๋‹จ์ˆœ ๋‚ด ์†Œ๊ฐœ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ฒŒ์‹œํŒ ํ˜•ํƒœ์˜ ํŽ˜์ด์ง€๋„ ๋งŒ๋“ค์–ด์„œ ๋ฐฉ๋ฌธ์ž๊ฐ€ ๋ฉ”์‹œ์ง€๋„ ๋‚จ๊ธธ ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๋‹ค. ์ตœ๊ทผ์—” ๋‹คํฌ๋ชจ๋“œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด๋ณด๋ ค๊ณ  ์ƒ๊ฐ์ค‘์ด๋‹ค! ๊ทธ๋ฆฌ๊ณ  ์กฐ๊ธˆ ๋” ๊ณ ๋ฏผํ•ด๋ณด๋ฉด์„œ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง์ด๋‚˜ ๋‚˜๋ฅผ ๋” ์–ดํ•„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ๋“ค์„ ๊ตฌํ˜„ํ•ด๋‚˜๊ฐ€๋ ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ฐœ๋ฐœ ๊ณผ์ •์„ ์ด ๊ฒŒ์‹œํŒ์—๋‹ค ์ž์„ธํ•˜๊ฒŒ ํ’€์–ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป To Be Continued...

[WEB] SEO(Search Engine Optimizer)์— ๋„์›€๋˜๋Š” HTTPS

๊ตฌ๊ธ€์€ SSL ์ธ์ฆ์„œ๋ฅผ ๊ฐ•์กฐํ•˜๋ฉด์„œ ์‚ฌ์ดํŠธ ๋‚ด ๋ชจ๋“  ์š”์†Œ๊ฐ€ ๋™์ผํ•˜๋‹ค๋ฉด HTTPS ์„œ๋น„์Šค๋ฅผ ํ•˜๋Š” ์‚ฌ์ดํŠธ๊ฐ€ ๊ทธ๋ ‡์ง€ ์•Š์€ ์‚ฌ์ดํŠธ๋ณด๋‹ค SEO ์ˆœ์œ„๊ฐ€ ๋†’์„ ๊ฒƒ์ด๋ผ๊ณ  ๊ณต์‹์ ์œผ๋กœ ๋ฐํ˜”๋‹ค. SEO๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด, ๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™”๋ฅผ ๋œปํ•˜๋ฉฐ ์‚ฌ์šฉ์ž๋“ค์ด ๊ฒ€์ƒ‰์—”์ง„์œผ๋กœ ์›น ์‚ฌ์ดํŠธ์—์„œ ๊ฒ€์ƒ‰ํ–ˆ์„ ๋•Œ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํŽ˜์ด์ง€ ์ƒ๋‹จ์— ๋…ธ์ถœ์‹œ์ผœ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์˜๋ฏธํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์บ๋…ธ๋‹ˆ์ปฌ ์„ค์ •, ๋ฉ”ํƒ€ ์„ค์ • ๋“ฑ์ด ์žˆ๋‹ค. ์บ๋…ธ๋‹ˆ์ปฌ ์„ค์ • ๋™์ผํ•œ ์›น ํŽ˜์ด์ง€๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ URL์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ ํ‘œ์ค€ URL์ด ๋ฌด์—‡์ธ์ง€ ๊ฒ€์ƒ‰ ์—”์ง„์— ์•Œ๋ ค์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์•„๋ž˜ ์„ธ ๊ฐœ์˜ URL์ด ๋ชจ๋‘ ๋™์ผํ•œ ํŽ˜์ด์ง€๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ์ด์ฒ˜๋Ÿผ ๋˜‘๊ฐ™์€ ๋‚ด์šฉ์ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ URL์„ ๊ฐ€์งˆ ๊ฒฝ์šฐ ๊ฐ URL์— ๋Œ€ํ•œ..

[JavaScript] ํ”„๋ก์‹œ(Proxy) ๊ฐ์ฒด

ํ”„๋ก์‹œ ๊ฐ์ฒด๋Š” ์–ด๋–ค ๋Œ€์ƒ์˜ ๊ธฐ๋ณธ์ ์ธ ๋™์ž‘(์†์„ฑ ์ ‘๊ทผ, ํ• ๋‹น, ์ˆœํšŒ, ์—ด๊ฑฐ, ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋“ฑ)์˜ ์ž‘์—…์„ ๊ฐ€๋กœ์ฑ„์„œ ํŠน๋ณ„ํ•œ ๋‹ค๋ฅธ ๋™์ž‘(ํŠธ๋žฉ)์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๋œปํ•œ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํ”„๋ก์‹œ ๊ฐ์ฒด๋Š” ๋‘ ๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง„๋‹ค. target : ํ”„๋ก์‹œํ•  ๋Œ€์ƒ handler : target์˜ ๋™์ž‘์„ ๊ฐ€๋กœ์ฑ„๊ณ  ์–ด๋– ํ•œ ๋‹ค๋ฅธ ๋™์ž‘์„ ํ•  ๊ฒƒ์ธ์ง€ ์„ค์ •๋˜์–ด ์žˆ๋Š” ํ•จ์ˆ˜ ํ”„๋ก์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ •์˜ํ•œ๋‹ค. const proxy = new Proxy(target, handler) ๋จผ์ € ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์—†๋Š” ์•„๋ž˜ ์ฝ”๋“œ์™€ ๊ฐ™์€ ํ”„๋ก์‹œ๋ผ๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? const target= {}; const proxy = new Proxy(target, {}) //ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์—†๋Š” proxy ๊ฐ์ฒด ์ •์˜ proxy.test = 5; // 1. proxy์—..

[WEB] ์›น ๋ธŒ๋ผ์šฐ์ €์˜ ์บ์‹œ(์ฟ ํ‚ค, ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€, ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€)

์ฟ ํ‚ค, ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€, ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์˜ ์ž‘์€ ์ €์žฅ์†Œ ์—ญํ• ์„ ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์„ ํ†ตํ•ด ๋ณดํ†ต ์‚ฌ์šฉ์ž์˜ ์ปค์Šคํ…€ํ•œ ์ •๋ณด๋‚˜ ์ธ์ฆ ๋ชจ๋“ˆ ๊ด€๋ จ ์‚ฌํ•ญ๋“ค์„ ์›น ๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅํ•ด์„œ ์ถ”ํ›„ ์„œ๋ฒ„์— ์š”์ฒญํ•  ๋•Œ ์ž์‹ ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์•„์ด๋ดํ‹ฐํ‹ฐ๋‚˜ ์ค‘๋ณต ์š”์ฒญ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ์“ฐ์ธ๋‹ค. ์ฟ ํ‚ค ์ฟ ํ‚ค๋Š” ๋ธŒ๋ผ์šฐ์ €์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ์ˆ˜๋‹จ ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ, ๋งŒ๋ฃŒ๊ธฐํ•œ์ด ์žˆ๋Š” ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ์ด๋‹ค. ๋ธŒ๋ผ์šฐ์ €์—์„œ ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ์ „์†กํ•  ๋•Œ, ๊ทธ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์— Set-Cookie ํ—ค๋”๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ, ๋ธŒ๋ผ์šฐ์ €๋Š” Set-Cookie์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ด ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ "์ฟ ํ‚ค"๋ผ ํ•œ๋‹ค. Set-Cookie : normal=yes ์œ„์ฒ˜๋Ÿผ ์„œ๋ฒ„์˜ ์‘๋‹ต์— Set-Cookie ํ—ค๋”๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ, normal์ด๋ผ๋Š” ์ด๋ฆ„์— yes๊ฐ€ ์ €์žฅ..