๊ฐ๋
์ ๋์ค ํ์์คํฌํ(UNIX timestamp)๋ 1970๋
1์ 1์ผ 00:00:00 UTC๋ถํฐ ์์ํ์ฌ ๊ฒฝ๊ณผํ ์ด ์๋ฅผ ๋ํ๋ธ๋ค. UNIX time (= Epoch time, POSIX time)์ UNIX ์ด์์ฒด์ ๋ฅผ ๊ฐ๋ฐํ ๋ฒจ ์ฐ๊ตฌ์์์ ์ ์ํ ๊ฐ๋
์ธ๋ฐ, UNIX ์ด์์ฒด์ ์ ์ต์ด ์ถ์๋
๋๊ฐ 1971๋
์ด์ด์ ๊ทผ๋ฐฉ์ ์๊ฐ์ ์์๋ก ์ก์ ๊ฒ์ด๋ค. UNIX time์ ์ทจ๊ธํ๋ ์ฟผ๋ฆฌ์์๋ UTC ๊ธฐ์ค์ด๋ผ๋ ๊ฒ์ ์ ์ํด์ผํ๋ค. ์์ ISO8601 2023-12-15T07:38:37Z 2023-12-15T16:38:37+09:00 ์์ ์๊ฐ์ ์๋์ Unix Time Stamp๋ก ๋ณํํ์ฌ ์ ์ฅํ ์ ์๋ค. Unix Time Stamp ์ด ๋จ์: 1702625917 ๋ฐ๋ฆฌ์ด ๋จ์: 1702625917863 ๋..
๐ฉ๐ป๐ป Dev
ISO 8601์ ๋ ์ง์ ์๊ฐ์ ํํํ๋ ๊ตญ์ ์ ์ธ ํ์ค์ด๋ค. ์ด ํ์ค์ ์ ์ธ๊ณ์ ์ผ๋ก ํต์ฉ๋๋ฉฐ, ๋ฐ์ดํฐ ๊ตํ, ์ํํธ์จ์ด ๊ฐ๋ฐ, ๊ตญ์ ์ ์ธ ์ปค๋ฎค๋์ผ์ด์
๋ฑ ๋ค์ํ ๋ถ์ผ์์ ์ฌ์ฉ๋๋ค. ๊ธฐ๋ณธ ํํ ๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ ๊ธฐ๋ณธ์ ์ธ ํํ๋ ๋ค์๊ณผ ๊ฐ๋ค. 2023-12-17T09:00:00+09:00" 2023-12-17: ๋ ์ง T09:00:00: 'T'๋ ์๊ฐ์ด ์์๋จ์ ๋ํ๋ด๋ฉฐ, 09:00:00์ ์ค์ 9์๋ฅผ ์๋ฏธ. +09:00: ์ด ๋ถ๋ถ์ ํด๋น ์๊ฐ์ด UTC(ํ์ ์ธ๊ณ์)๋ณด๋ค 9์๊ฐ ์์๋ ์๊ฐ๋์์ ๋ํ๋ธ๋ค. ์ด ๊ฒฝ์ฐ, ์ด ์๊ฐ์ ํ๊ตญ ํ์ค์(KST)๋ ์ผ๋ณธ ํ์ค์(JST)์ ๊ฐ์ ์๊ฐ๋์ ํด๋นํฉ๋๋ค. ์ฆ, ์ด ์๊ฐ์ UTC ์๊ฐ์ผ๋ก ๋ณํํ๋ฉด 2023๋
12์ 17์ผ 00:00:00(์์ )์ด ๋๋ค. UTC(ํ์ ์ธ..

Context๋? : Props Drilling์ ๋์ Context๋ ์ปดํฌ๋ํธ์์ Props๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋๊ฒจ์ฃผ๋ ๋ฐฉ์์ด๋ค. ํน์ ๋ฐ์ดํฐ๋ฅผ ์ปดํฌ๋ํธ ํธ๋ฆฌ ์ ์ฒด์ ๊ฑธ์ณ ์ฝ๊ฒ ๊ณต์ ํ ์ ์๊ฒ ํด์ค๋ค. Context๋ Props Drilling ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ์ค ์ ์๋ค. Props Drilling : ์ค์ฒฉ๋ ์ฌ๋ฌ ๊ณ์ธต์ ์ปดํฌ๋ํธ์๊ฒ props ์ ๋ฌ. ๋ฌธ์ ์ : ํน์ prop์ ์ฌ์ฉํ์ง ์๋ ์ปดํฌ๋ํธ๋ค์๊ฒ๋ ํด๋น prop์ ๋ด๋ ค์ฃผ์ด์ผ ํ๋ ๋นํจ์จ. ๊ฐ๋
์ฑ ํ๋ฝ. ์ปดํฌ๋ํธ ๊ฒฐํฉ๋ ์์น์ผ๋ก ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง ๋ฐ์ ๊ฐ๋ฅ, ์ฝ๋์ ๋ณต์ก๋ ์ฆ๊ฐ context๋ ๋ฆฌ์กํธ ๋ฒ์ 16๋ถํฐ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฆฌ์กํธ ๋ด์ฅ API๋ก, ์ด๋ค ๋ฆฌ์กํธ ํ๋ก์ ํธ๋ผ๋ ๋ฆฌ์กํธ๋ฅผ import ํ๋ฉด context๋ฅผ ๋ฐ๋ก ์์ฑํ๊ณ ..
React์์ ์ปดํฌ๋ํธ์ ์๋ช
์ฃผ๊ธฐ๋ ํฌ๊ฒ ์ธ ๋จ๊ณ๋ก ๊ตฌ๋ถ๋๋ค. : ๋ง์ดํ
(Mounting), ์
๋ฐ์ดํธ(Updating), ๊ทธ๋ฆฌ๊ณ ์ธ๋ง์ดํ
(Unmounting) ๊ฐ ๋จ๊ณ๋ ์ปดํฌ๋ํธ์ ์์ฑ, ์
๋ฐ์ดํธ ๋ฐ ํ๊ดด ๊ณผ์ ์ ํด๋นํ๋ค. 1. ๋ง์ดํ
(Mounting) ์ด ๋จ๊ณ๋ ์ปดํฌ๋ํธ๊ฐ ์ฒ์์ผ๋ก ์์ฑ๋์ด DOM์ ์ฝ์
๋๋ ๊ณผ์ ์ด๋ค. ๋ง์ดํธ ๊ณผ์ ์์๋ ์ฒ์์ผ๋ก render ๋ฉ์๋๊ฐ ํธ์ถ๋์ด ์ปดํฌ๋ํธ๊ฐ ํ๋ฉด์ ๋ ๋๋ง ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ์๋ช
์ฃผ๊ธฐ ๋ฉ์๋๊ฐ ๋ง์ดํ
๋จ๊ณ์์ ํธ์ถ๋๋ค. (์์ฃผ ์ฌ์ฉ๋๋ ์๋ช
์ฃผ๊ธฐ ๋ฉ์๋๋ ๋ณผ๋์ฒด) constructor(): ์ปดํฌ๋ํธ์ ์์ฑ์. ์ปดํฌ๋ํธ์ ์ด๊ธฐ ์ํ๋ฅผ ์ค์ ํ๋ค. static getDerivedStateFromProps(): ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ ๋๊ธฐ ์ ์ ํธ์ถ๋๋ค. props์ ์ํด ..
useMemo ์ฌ์ฉ ๋ชฉ์ useMemo๋ React์์ ์ ๊ณตํ๋ ํ
(Hook) ์ค ํ๋๋ก, ์ฃผ๋ก ๋ ๊ฐ์ง ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ค. ๊ณ์ฐ ๋น์ฉ์ด ๋์ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๊ณ ์ฌ์ฌ์ฉํ๊ธฐ ์ํด - ๋ง์ฝ ์ปดํฌ๋ํธ๊ฐ ๊ณ์ฐ ๋น์ฉ์ด ๋ง์ด ๋๋ ์ฐ์ฐ์ ์ํํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ฌ๋ฌ ๋ฒ ์ฌ์ฌ์ฉํด์ผ ํ๋ค๋ฉด useMemo๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๊ณ ํ์ํ ๋ ์ฌ์ฌ์ฉํ ์ ์๋ค. ์ฐธ์กฐ ๋์ผ์ฑ(Reference Equality)์ ์ ์งํ๊ธฐ ์ํด - React์์ ๊ฐ์ฒด๋ ๋ฐฐ์ด๊ณผ ๊ฐ์ ๋ณต์กํ ๋ฐ์ดํฐ ํ์
์ props๋ก ๋๊ธธ ๋, ์ด ๋ฐ์ดํฐ๊ฐ ๋งค๋ฒ ์๋ก ์์ฑ๋๋ฉด ์์ ์ปดํฌ๋ํธ๊ฐ ๋ถํ์ํ๊ฒ ์ฌ๋ ๋๋ง๋ ์ ์๋ค. useMemo๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ์ ์ฅํ๋ฉด, ์ปดํฌ๋ํธ์ ๋ฆฌ๋ ๋๋ง์ด ๋ฐ์ํด๋ ๋์ผํ ์ฐธ์กฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์งํ ์ ์๋ค...
API ๋ค์ด๋ฐ์ ํ๋ค๊ฐ ๊ณ ๋ฏผ์ด ์๊ฒผ๋ค.[PUT] /urls/{id}/move๊ณผ [PUT] /urls/move/{id} ์ค ์ด๋ค ๊ฒ ๋ ๋์์ง ๋ง์ด๋ค.์ด๋ฅผ ์ํด ๊ตฌ๊ธ๋ง์ ํ๋ค๊ฐ, REST API URI๋ฅผ ๋์์ธํ๋ ๊ท์น ํน์ ์ปจ๋ฒค์
์ด ์กด์ฌํ๋ค๋ ๊ฒ์ ์๊ฒ ๋์๋ค. REST API์ URIREST API๋ Representational State Transfer (ํํ ์ํ ์ ์ก)์ ์ฝ์์ด๋ฉฐ, ์น ๊ธฐ๋ฐ์ ์์คํ
๊ฐ ํต์ ์ ์ํ ์ํคํ
์ฒ ์คํ์ผ์ด๋ค. ์ด ๋ฐฉ์์ ์์(Resource)์ ์ํ๋ฅผ HTTP ๋ฉ์๋(GET, POST, PUT, DELETE ๋ฑ)๋ฅผ ์ฌ์ฉํ์ฌ ์ ์กํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ๋๋ค. ๊ฐ ์์์ ํน์ ํ URI(Uniform Resource Identifier, ํต์ผ๋ ์์ ์๋ณ์)์ ์ํด ์๋ณ๋๋ค.U..
๋ฐฐํฌ๋ ํ์ด์ง์ ๋ํด, ์๋ก๊ณ ์นจ ์ ํน์ ํ์ด์ง (ํ์ด์ง A๋ก ์ง์นญ) ๋ก ์ด๋๋๋ ์ด์๊ฐ ๋ฐ์ํ๋ค. ํ๋ก ํธ๋ฅผ ๋ก์ปฌ์์ ์คํํ์ ๋๋ ์๋ก๊ณ ์นจํด๋ ํ์ด์ง๊ฐ ์ ์ง๋๊ณ ์์๊ณ .. ํ๋ก ํธ ์ฝ๋์์ ํ์ด์ง A๋ก ๋ผ์ฐํ
๋๋ ๋ชจ๋ ์ฝ๋๋ค์ ์ดํด๋ณด์์ง๋ง ์์ธ์ ์ฐพ์ ์ ์์๋ค. (location.href, router.replace ๋ฑ๋ฑ ...) ๋คํธ์ํฌ ์๋๋ฅผ ์ฒ์ฒํ ํ๊ณ ๋คํธ์ํฌ ํญ์์ ์์ฒญ๋ค์ ์ดํด๋ณด๋ค ๋ค๋ฅธ ํ์ด์ง์์ ์๋ก๊ณ ์นจ์ ์คํํ์ ๋ ํ์ด์ง A๋ก ์ด๋ํ๊ธฐ ์ ์ '๋ก๊ทธ์ธ' ํ์ด์ง๋ฅผ ์์ฃผ ๋น ๋ฅด๊ฒ ๊ฑฐ์ณค๋ค๊ฐ ํ์ด์ง A๋ก ์ด๋ํ๋ค๋ ๊ฒ์ ๋ฐ๊ฒฌํ๊ฒ ๋์๋ค. ํด๋น ํ๋ก์ ํธ๋ next.js๋ฅผ ์ฌ์ฉํ๋ ํ๋ก์ ํธ์ด๊ณ , pages ๋ฐ๋ก ์๋ ์๋ index.tsx๊ฐ ๋ก๊ทธ์ธํ์ด์ง์ด๋ฉฐ ์ฒ์ ์ ์๋๋ ํ์ด์ง์๋ค. ์ด๋ฅผ ๋ฐ๊ฒฌํ๊ณ ..
application.properties ์คํ๋ง ํ๋ ์์ํฌ์์ application.properties ํ์ผ์ ์ ํ๋ฆฌ์ผ์ด์
๊ตฌ์ฑ ์ค์ ์ ์ ์ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. ์ด ํ์ผ์๋ ์ ํ๋ฆฌ์ผ์ด์
์คํ์ ํ์ํ ํ๊ฒฝ๋ณ ์ค์ , ์ธ๋ถ ์๋น์ค ์ฐ๊ฒฐ ์ ๋ณด, ๋ค์ํ ์ปค์คํ
์ค์ ๊ฐ ๋ฑ์ด ํฌํจ๋ ์ ์๋ค. ์ฃผ์ ์ญํ ์ ๋ค์๊ณผ ๊ฐ๋ค: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์ : ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ ๋ณด, ์ฌ์ฉ์ ์ด๋ฆ, ๋น๋ฐ๋ฒํธ ๋ฑ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ จ ์ค์ ์ ์ง์ ํ๋ค. ์๋ฒ ๊ตฌ์ฑ: ์๋ฒ ํฌํธ, ์ฝํ
์คํธ ๊ฒฝ๋ก, ์ธ์
ํ์์์ ๋ฑ ์๋ฒ ๊ด๋ จ ์ค์ ์ ์ ์ํ๋ค. ๋ก๊น
์ค์ : ๋ก๊ทธ ์์ค, ๋ก๊ทธ ํ์ผ ๊ฒฝ๋ก์ ๊ฐ์ ๋ก๊น
์ค์ ์ ๊ด๋ฆฌํ๋ค. ์ ํ๋ฆฌ์ผ์ด์
๋งค๊ฐ๋ณ์: ์ ํ๋ฆฌ์ผ์ด์
๋ด๋ถ์์ ์ฌ์ฉํ ๋งค๊ฐ๋ณ์๋ฅผ ์ ์ํ์ฌ ์ฝ๋์์ ์ฐธ์กฐํ ์ ์๊ฒ ํ๋ค. ์คํ๋ง ๋ถํธ ์๋ ๊ตฌ์ฑ: ์คํ๋ง..

vscode์ผ๋ก spring์ ์ฌ์ฉํ ๋, ํฐ๋ฏธ๋์์ ์ถ๋ ฅ๋๋ ๋ก๊ทธ ๋ฉ์์ง์ ์์์ด ์์ด ๊ฐ๋
์ฑ์ด ๋๋ฌด ๋จ์ด์ ธ ์ธํ
๋ฐฉ๋ฒ์ ์์๋ณด์๋ค. (์คํ๋ง ๊ฐ๋ฐ์ ํ ๋ ์ธํ
๋ฆฌ์ ์ด๋ฅผ ์ฐ์๋ ๋ถ๋ค์ด ๋ง์์ค๋ก ์์ง๋ง ๋ผ์ด์ ์ค ๋ฌธ์ ๋ก vscode๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ์๋ ๊ฑธ๋ก ์๊ณ ์๋ค. ์ธํด์ ์งํ์ค์ธ ํ์ฌ์์๋ vscode ๊ฐ๋ฐํ๊ฒฝ์ ์ฌ์ฉํ์๊ณ ์ด์ ๋ฐ๋ฅธ extension์ผ๋ก ์ธํ
ํ๋ ๊ฑธ ๊ถ์ ํ์
์ vscode๋ฅผ ์ฌ์ฉ์ค์ด๋ค.) settings.json์ผ๋ก ์ ๋ ๋ ๋ธ๋ก๊ทธ ํฌ์คํ
์ ๋ณด๊ณ ์์ ๊ฐ์ด ์๋ํด๋ณด์์ง๋ง, background, foreground ๊ด๋ จ ์์๋ง ์ ์ฉ๋๊ณ INFO, WARN, ERROR ๋ฑ์ ์์์๋ ์ ์ฉ๋์ง ์์๋ค. (์ฐธ๊ณ ๋ก ์๋ฐ์คํฌ๋ฆฝํธ ์ฌ์ฉ ์ค์ง๋ฅผ ํ๋ฉด ๋๋๊ทธ ๋ถ๊ฐ๋ฅํ ๊ณณ์์๋ ์ฝ๋ ๋๋๊ทธ๊ฐ ๊ฐ..

ํน์ ๋ถ๋ถ์์ ์์ (PUT) ์์ฒญ์ ํ ์ 500 ์๋ฌ๊ฐ ๋ฌ๋ค๋ ์ด์๊ฐ ์์๋ค. ์ด์๋ฅผ ์ฌํํ๊ณ ๋ก๊ทธ๋ฅผ ํ์ธํ๋ WARN NullPointerException ~~ ์ด๋ ๊ฒ ๋ ์์๋ค. 1. ๋ฐ์ํ๋ ๋ถ๋ถ์ try catch๋ก ๋ฌถ์ด์ NullPointerException ์ ๋ก๊ทธ๋ฅผ ๋์์ฃผ์๋ค. ๋ก๊ทธ ๋ฉ์์ง๋ ์๋์ ๊ฐ์๋ค.20231114 10:45:48.808 [http-nio-8090-exec-9] ERROR c.i.l.a.f.s.FileComponentUrlServiceImpl - NullPointerException caught: java.lang.NullPointerException: null at com.api.filecomponenturl.service.FileComponentUrlService..