[Next.js] Rendering
ยท
๐Ÿ‘จ‍๐Ÿ’ป Programming/Next.js
What is Rendering?Rendering is the process of transforming the component code you write into UI that users can see and interact withIn Next.js, the tricky part to building a performant application is figuring out when and where this transformation should happen.CSR, SSR and RSCs?Rendering in React → Rendering in Next.jsHow rendering works in React - CSRClient Side RenderingThis whole approach - ..
[Next.js] Next.js ์†Œ๊ฐœ
ยท
๐Ÿ‘จ‍๐Ÿ’ป Programming/Next.js
IntroductionNext.js is a React framework for building full-stack web application.๋ฆฌ์•กํŠธ๋งŒ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•  ๋•Œ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์‹คํ–‰ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ์•กํŠธ๋Š” ์œ ์ € ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ์ด๊ณ , ๋ผ์šฐํŒ…, ๋ฐ์ดํ„ฐ ํŽ˜์นญ ๋“ฑ๋“ฑ ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๊ฒฐ์ •์„ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.Next.js๋Š” ์œ ์ € ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์œ„ํ•ด ๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ์ถ”๊ฐ€์ ์ธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์—๋Š” ๋ผ์šฐํŒ…, ์ตœ์ ํ™”๋œ ๋ Œ๋”๋ง, ๋ฐ์ดํ„ฐ ํŽ˜์นญ, ๋ฒˆ๋“ค๋ง, ์ปดํŒŒ์ผ๋ง ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Next.js๋Š” ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ๋ชจ๋‘ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€์ ์ธ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ํŠน์ง•๋“ค์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋”ฐ๋ผ์•ผํ•  ์ปจ๋ฒค์…˜์ด ์žˆ..
[TanStack Query] TanStack Query๋ž€
ยท
๐Ÿ‘จ‍๐Ÿ’ป Programming/React
TanStack Query๋ž€๋„คํŠธ์›Œํฌ์—์„œ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ์˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.๊ณต์‹๋ฌธ์„œTS/JS, React, Solid, Vue, Svelte๋ฅผ ์œ„ํ•œ ๊ฐ•๋ ฅํ•œ ๋น„๋™๊ธฐ ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์„ธ๋ถ€์ ์ธ ์ƒํƒœ๊ด€๋ฆฌ, ์ˆ˜๋™์ ์ธ refetching ๊ทธ๋ฆฌ๊ณ  ๋Š์ž„์—†๋Š” ๋น„๋™๊ธฐ ์ŠคํŒŒ๊ฒŒํ‹ฐ ์ฝ”๋“œ๋ฅผ ํ† ์Šคํ•ด๋ผ. ํ…์Šคํƒ ์ฟผ๋ฆฌ๋Š” ์„ ์–ธ์ ์ด๊ณ , ์ตœ์‹ ์˜ ์ž๋™ํ™”๋œ ์ฟผ๋ฆฌ ๊ทธ๋ฆฌ๊ณ  mutation์„ ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ๊ฐœ๋ฐœ์ž์™€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.์„ ์–ธ์ ์ด๊ณ  ์ž๋™์ ์ž…๋‹ˆ๋‹ค.๋ฐ์ดํ„ฐ fetching ๋กœ์ง์„ ์ผ์ผ์ด ์ž‘์„ฑํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. TanStack Query์—๊ฒŒ ์–ด๋””์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉด ๋˜๋Š”์ง€ ์–ผ๋งˆ๋‚˜ ๋ฐ์ดํ„ฐ์˜ ์‹ ์„ ๋„๋ฅผ ์œ ์ง€ํ•  ๊ฒƒ์ธ์ง€ ๋งํ•ด์ฃผ์„ธ์š”. ๊ทธ๋Ÿฌ๋ฉด ๋‚˜๋จธ์ง€๋Š” ์ž๋™์ ์ผ๊ฒƒ์ž…๋‹ˆ๋‹ค. TanStack ์ฟผ๋ฆฌ๋Š”..
[JS] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉ์šฉ๋„, ECMASCRIPT, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํŠน์ง•
ยท
๐Ÿ‘จ‍๐Ÿ’ป Programming/JavaScript
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์‚ฌ์šฉ์šฉ๋„๋ธŒ๋ผ์šฐ์ €Node.js๊ฐ€ ๋“ฑ์žฅํ•œ ์ดํ›„๋ถ€ํ„ฐ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋™์ž‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ์ฝ”๋“œ๋ฅผ ํ•œ์ค„์”ฉ ๋ฒˆ์—ญํ•ด์„œ ์‹คํ–‰ํ•˜๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ์ž…๋‹ˆ๋‹ค.๋ธŒ๋ผ์šฐ์ €๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์„ ๋‚ด์žฅํ•˜๊ณ  ์žˆ๊ณ , Node.js์—๋„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์„ ๋‚ด์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ๋ธŒ๋ผ์šฐ์ €๋Š” HTML, CSS, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ, ์›นํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋ง ํ•˜๋Š” ๊ฒƒ์ด ์ฃผ๋ชฉ์ ์ด๋ผ๋ฉด, Node.js๋Š” ๋ธŒ๋ผ์šฐ์ € ์™ธ๋ถ€์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์ฃผ๋ชฉ์ ์ž…๋‹ˆ๋‹ค.ECMAScript์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•ต์‹ฌ ๋ฌธ๋ฒ•์„ ๊ทœ๊ฒฉํ™”ํ•œ ํ‘œ์ค€์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.๊ฐ ๋ธŒ๋ผ์šฐ์ € ์ œ์กฐ์‚ฌ๋Š” ECMAScript ์‚ฌ์–‘์„ ์ค€์ˆ˜ํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €์— ๋‚ด์žฅ๋˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์„ ๊ตฌํ˜„ํ•ด..
[Java] ํด๋ž˜์Šค (2)
ยท
๐Ÿ‘จ‍๐Ÿ’ป Programming/Java
์ƒ์„ฑ์ž ๋‹ค์ค‘ ์ •์˜์ƒ์„ฑ์ž๋„ ๋‹ค์ค‘ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์ƒ์„ฑ์ž๊ฐ€ ๋‹ค์ค‘ ์ •์˜๋˜์—ˆ๋‹ค๊ณ  ํ• ์ง€๋ผ๋„, ํ˜ธ์ถœ๋˜๋Š” ์ƒ์„ฑ์ž๋Š” 1๊ฐœ์ž…๋‹ˆ๋‹ค.class MyString { private byte[] string; public MyString() {} public MyString(String param) { this.string = param.getBytes(); } public MyString(int param) { String tmp; tmp = String.format("%d", param); this.string = tmp.getBytes(); } public String getString() { if (string == n..
[Java] ํด๋ž˜์Šค (1)
ยท
๐Ÿ‘จ‍๐Ÿ’ป Programming/Java
Object(๊ฐ์ฒด)OOP์—์„œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋‹จ์œ„์š”์†Œ์ž…๋‹ˆ๋‹ค.์ž๋ฐ”์—์„œ๋Š” ํด๋ž˜์Šค๋ผ๋Š” ๋ฌธ๋ฒ•์œผ๋กœ ๊ฐ์ฒด๋ฅผ ๊ธฐ์ˆ ํ•˜๊ณ , ํด๋ž˜์Šค๋Š” ๋ฐ˜๋“œ์‹œ ์กด์žฌ ์ด์œ ์™€ ๋ชฉ์ ์ด ๋ช…ํ™•ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.ํด๋ž˜์Šค์—์„œ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ์ธ์Šคํ„ด์Šค๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.*OOP(Object-Oriented Programming)ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐ์ฒด์˜ ์ง‘ํ•ฉ์ฒด๋กœ ๋ณด๊ณ  ๊ฐ์ฒด๋“ค์€ ์„œ๋กœ ๊ด€๊ณ„๋ฅผ ๊ฐ–๋Š”๋‹ค๋Š” ๊ด€์ ์„ ๊ฐ–๊ณ  ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.ํด๋ž˜์Šคํด๋ž˜์Šค ์•ˆ์— ์žˆ๋Š” ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜๋ฅผ ๋ฉค๋ฒ„๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.๋” ์ž์„ธํžˆ ๋ณ€์ˆ˜๋Š” ํ•„๋“œ, ํ•จ์ˆ˜๋Š” ๋ฉ”์„œ๋“œ๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.์„ ์–ธ๊ณผ ์ •์˜๊ฐ€ ๊ณต์กดํ•˜๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์‚ฌ๋žŒ์„ ๋ฐฐ๋ คํ•˜์—ฌ ์ž‘์„ฑํ•˜๋Š” ๋Šฅ๋ ฅ์ด ํ•„์ˆ˜์ ์œผ๋กœ ์š”๊ตฌ๋ฉ๋‹ˆ๋‹ค.ํด๋ž˜์Šค๋Š” constructor, field, method๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.์ ‘๊ทผ์ œ์–ด์žpublic : ์™ธ๋ถ€ ์ ‘๊ทผ ํ—ˆ์šฉprotected : ๊ฐ™์€ ํŒจ..
[JavaScript] var, let, const
ยท
๐Ÿ‘จ‍๐Ÿ’ป Programming/JavaScript
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋Š” ๋ฐฉ๋ฒ•์€ var, let, const ์„ธ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ES5๊นŒ์ง€ var๊ฐ€ ์œ ์ผํ•œ ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ์ด์˜€์ง€๋งŒ, ES6 ์ดํ›„ var ์‚ฌ์šฉ์„ ์ง€์–‘ํ•˜๊ณ  let, const๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.๊ทธ ์ด์œ ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.var๋Š” ๋ณ€์ˆ˜์˜ ์ค‘๋ณต์„ ์–ธ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…(hoisting)์ด ๋ฐœ์ƒํ•˜์—ฌ, ๋ณ€์ˆ˜ ์„ ์–ธ์ด์ „์—๋„ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.var๋Š” ํ•จ์ˆ˜๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„๋ผ, ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ ๋ณ€์ˆ˜ ์™ธ์—๋Š” ๋ชจ๋‘ ์ „์—ญ ๋ณ€์ˆ˜๊ฐ€ ๋˜๋ฒ„๋ฆฝ๋‹ˆ๋‹ค.ํ•ด๋‹น ํ•ญ๋ชฉ๋“ค์ด ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋Š”์ง€ ํ•˜๋‚˜์”ฉ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.๋ณ€์ˆ˜ ์ค‘๋ณต ์„ ์–ธvar๋Š” ๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ ์ค‘๋ณต์„ ์–ธ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ค‘๋ณต์„ ์–ธ์„ ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด, ์˜๋„์น˜ ์•Š๊ฒŒ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๊ณ , ์ด๋Š” ์˜ค๋ฅ˜๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.var name = jin;var name = kim;var age ..
[Java] String ๊ฐ์ฒด๊ฐ€ ๋น„์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•
ยท
๐Ÿ‘จ‍๐Ÿ’ป Programming/Java
null?์ž๋ฐ”์˜ primitive ํƒ€์ž…์˜ ๊ฒฝ์šฐ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ 0์ด๋‚˜ false๊ฐ€ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, reference ํƒ€์ž…์˜ ๊ฒฝ์šฐ ์ฃผ์†Œ๊ฐ’์ด ๋“ค์–ด์™€์•ผํ•˜๊ณ , ์ฃผ์†Œ๊ฐ’์ด ์ดˆ๊ธฐํ™” ๋˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ ์ฃผ์†Œ๊ฐ€ ์—†๋‹ค๋ผ๊ณ  ํ‘œํ˜„์„ ํ•ด์•ผํ•˜๋Š”๋ฐ ์ด ๋•Œ null์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.์ฆ‰, null์ด๋ผ๋Š” ๊ฒƒ์€ ์•„๋ฌด ์ฃผ์†Œ๋„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋ผ๋Š” ์˜๋ฏธ๋กœ ์ดํ•ดํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.NullPointExceptionNullPointException(NPE)์€ ์ปดํŒŒ์ผ ์‹œ์ ์ด ์•„๋‹Œ ๋Ÿฐํƒ€์ž„ ์‹œ์ ์— ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊นŒ๋‹ค๋กœ์šด ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. NPE๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.null ๊ฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๊ฒฝ์šฐnull ๊ฐ์ฒด์˜ ํ•„๋“œ์— ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ๊ฒฝ์šฐ๋นˆ ๋ฐฐ์—ด ๊ฐ์ฒด์˜ ๊ธธ์ด ์†์„ฑ์„ ๊ฐ€์ ธ์˜ฌ ๊ฒฝ์šฐ...String ๊ฐ์ฒด๊ฐ€ ๋น„์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•== nu..
[CSS] ๋ง์ค„์ž„
ยท
๐Ÿ‘จ‍๐Ÿ’ป Programming/CSS
๋ง์ค„์ž„ ํ•œ์ค„ ์ ์šฉํ•˜๊ธฐp { width : 200px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }์–ผ๋งˆ์˜ ๋„ˆ๋น„๋ฅผ ๋„˜์–ด๊ฐ”์„ ๊ฒฝ์šฐ ๋ง์ค„์ž„์„ ์‚ฌ์šฉํ• ๊ฑด์ง€ width๋ฅผ ์ง€์ •ํ•ด์ฃผ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.white-space: nowrap์„ ์‚ฌ์šฉํ•ด ์ž๋™์ค„ ๋ฐ”๊ฟˆ์„ ์—†์•ฑ๋‹ˆ๋‹ค.text-overflow: ellipsis๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ธ€์ž๊ฐ€ ํŠน์ • ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋ฉด ๋ง์ค„์ž„ํ‘œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค๋‹ˆ๋‹ค.text-overflow๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„  overflow๋ฅผ ์ง€์ •ํ•ด์•ผํ•˜๋Š”๋ฐ overflow : hidden๋ฅผ ์ ์šฉํ•ด์ค๋‹ˆ๋‹ค.๋ง์ค„์ž„ ์—ฌ๋Ÿฌ์ค„ ์ ์šฉํ•˜๊ธฐp { width: 200px; overflow: hidden; text-overflow: ellips..