Programming (92) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ ์จํ๋ ๋ฏธ์ค ๋ฐฐํฌ ์๋ฒ ์ฅ์ ํ๊ณ - ๋ ์นด๋ ๊ณ ์ฅ(ft. gitlab, ubuntu) on-premise / ubuntu ํ๊ฒฝ์ ๋ฐฐํฌ ์๋ฒ ๋์ด๋ฆฌ๊ธฐ ํ์ฌ ์ ๋ฌดํ๊ฒฝ์์ ๋ด๋ถ ๋ณด์๋ง์์ ๊ฐ๋ฐ์ ํ๊ณ ์๋ ์์ค๋ฅผ ๊ฐ ๊ฐ๋ฐ์์ ์ฐ๊ด๋ ๊ทธ๋ฃน์ฌ๋ก ๋ฐฐํฌ๋ฅผ ํ๊ธฐ ์ํ ์๋ฒ๊ฐ ์จํ๋ ๋ฏธ์ค(on-premise) ํ๊ฒฝ์ผ๋ก ๊ตฌ์ฑ ๋์ด์๋๋ฐ, ์ค์ ์ ์ ์์ด ์๋๋ ๊ฒ์ ๋ฐ๊ฒฌํ๋ค. ์์ค ๋ฐฐํฌ๋ฅผ ์ํด์ ํด๋น ์๋ฒ์ gitlab / jenkis๋ฅผ docker๋ก ๋์์ ํธ์คํ ํ๊ณ ์์๋๋ฐ ๊ฐ๋ฐ์๋ค์ pc์์ ํด๋น ํธ์คํ ์ค์ด gitlab ์ฌ์ดํธ๊ฐ ์ ์์ด ๋์ง ์์๋ค. ๋น์ ์กฐ์น๋ฅผ ์ํ ์งํ ์ฌํญ์ ์ด๋ ๋ค.๐ ๏ธ ์กฐ์น ๋ฐฉ๋ฒ1. ๋ก๊ทธ ํ์ธ ํด๋ณด๊ธฐ$ cd /home/docker/gitlab๋ก๊ทธํ์ผ์ด ์กด์ฌํ๋ ๊ณณ์ผ๋ก ์ด๋$ docker-compose logs -f {์ปจํ ์ด๋ ํน์ ์๋น์ค ์ด๋ฆ}๋ก๊ทธ ํ์ธ. {์ปจํ ์ด๋ ํน์ ์๋น์ค.. [JS] ๋ณด์ ํคํจ๋ ์ ๋ ฅ error ์์ธ์ฒ๋ฆฌ(ft. isNaN) ํ์ฌ์์ ์ด์ํ๊ณ ์๋ ์ฑ์ ๋ณด์ ํคํจ๋๋ฅผ ์ฌ์ฉํ๋ ์๋น์ค์์ ์๋ชป๋ ์ ๋ ฅ ๊ฐ์ผ๋ก ์ธํ ์ค๋ฅ์ ํธ๋ฌ๋ธ ์ํ ์ ์งํํ์ต๋๋ค. ์๋ฒ์์ input ๊ฐ ๊ฒ์ฆ์ ํตํด์ ์ ๋ฌด ์ค๋ฅ๋ฅผ ๋ฑ์ด๋ด ์๋ชป๋ ์ ๋ณด๊ฐ ์ ๋ฐ์ดํธ ๋์ง๋ ์์์์ง๋ง, ํ๋ฉด ์์ค(front end)์์ ์์ธ์ฒ๋ฆฌ ๋ฏธํก์ผ๋ก ์๋ชป๋ input ๊ฐ์ ์๋ฒ(back end) ์ธก์ผ๋ก ๋ณด๋ด๊ณ ์์์ ํ์ธํ์ต๋๋ค. ๐ฎ ๋ฌธ์ ์ํฉ๋ณด์ ํคํจ๋์ ์ฌ์ฉํ๋ ์ด๋ฒคํธ์ value๋ฅผ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์์ numberic์ ๊ฒ์ฆ์ด ๋์ง ์์์ ์ซ์ํ ๊ฐ๋ง ๋ค์ด์์ผํ๋ ๋ถ๋ถ์ ์ค์ string์ด ๋ค์ด์ค๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ์์ต๋๋ค. ๐ ๏ธ ์กฐ์น๋ฐฉ๋ฒํคํจ๋ ์ด๋ฒคํธ๋ฅผ ํตํด์ ๋ค์ด์ค๋ value ๊ฐ์ ํ๋ฉด์์ isNaN๋ฅผ ์ฌ์ฉํด ํ๋ฒ ๋ ์์ธ์ฒ๋ฆฌ ํ์์ต๋๋ค. ๊ธฐ์กด ๋ก์ง์ ๊ฒฝ์ฐ, value๊ฐ s.. [Vue] Multiple v-model ์์ ์(modifiers) ์ฒ๋ฆฌํ๊ธฐ(์ต์ ์ฌ์ฉํ๊ธฐ) Vue ๊ณต์ ๊ฐ์ด๋ ๋ฌธ์์์ v-model์ ์์ ์ ์ฒ๋ฆฌ, ๋ค์ค(multiple) v-model ์ฌ์ฉ๋ฒ์ ๋ํด์ ๋์์๋ค. ํ๋์ v-model ์์ ์๋ฅผ ์ด์ฉํด set, get๊ณผ ๊ฐ์ ์ต์ ์ ์ฌ์ฉํ๋๋ฒ์ด ์๊ฐ ๋์ง๋ง, ๋ค์ค v-model์ ์ฌ์ฉํ์ ๋, ์์ ์๋ฅผ ๋ฐ๋ ๋ฐ์๋ง ์๊ฐ๋๊ณ set๊ณผ ๊ฐ์ ์ต์ ์ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ด ๋น ์ ธ์์ด ์ถ๊ฐ ํด๋ณธ๋ค. composition ์คํ์ผ ์งํฅํด์ composition ๋ฐฉ์์ผ๋ก๋ง ์๊ฐ ํฉ๋๋ค. ๐ค ์์ ์ฝ๋ ::: ๊ณต์ ๊ฐ์ด๋ playground ์์ ๋ฅผ ํ์ฉ App.vue first: second: MyComponent.vue ์ ์ฝ๋๋ 2๊ฐ์ input๊ณผ v-model์ ๊ฐ๋ Mycomponent.vue๋ฅผ App.vue์์ import ํด์ ์ฌ์ฉ.. [Shell Script] CI/CD ์๋ํ ๋ฐฐํฌ๋ฅผ ์ํ ํ์ผ ๋ชจ๋ํฐ๋ ์ ์คํฌ๋ฆฝํธ ๋ง๋ค๊ธฐ ํ์ฌ ๋ด์ ๋ฐฐํฌ ํ๊ฒฝ์ด ๋ณต์กํ๋ค. ํ์ฌ ์ฌ์ง ์ค์ธ ํ์ฌ๋ ํนํ, ๋ณด์์ ์ธ ๋ถ๋ถ์ ๋ฏผ๊ฐํด์ ์ ๋ฌด๋ณ๋ก ๋ค์ํ ๋ฐฐํฌ ํ๊ฒฝ์ด ๊ตฌ์ฑ ๋์ด์๋ค. ๊ทธ ์ค์ ๊ฐ์ ํ๊ณ ์ถ์๋ ๋ฐ์ชฝ์ง๋ฆฌ CI/CD ํ๊ฒฝ์ด ์์๋๋ฐ ์ด๋ฒ์ ์๊ฐ์ ์ฌ์ ๊ฐ ์๊ฒจ ํด๋น ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์๋ค. ๊ธฐ์กด์ ํ๊ฒฝ์์ Jenkis๋ฅผ ์ด์ฉํด์ git์ ๋ฐ์๋ ์์ค๋ฅผ ์ค์ ๊ฐ๋ฐ ์๋ฒ์ ๋ฐ์ํ์๋๋ฐ ๋ณด์์ ์ธ ๋ฌธ์ ๋ก Jenkis๋ฅผ ํตํด์ ๋ฐฐํฌ๊น์ง ์งํํ์ง๋ ๋ชปํ๊ณ ์์ถ๋ ์์ค ํ์ผ๋ง linux ํ๊ฒฝ์ ๊ฐ๋ฐ ์๋ฒ๋ก ์ ์กํ๊ฒ ๊ตฌ์ฑ๋์ด ์์๋ค.๋ฐ๋ผ์, ๋ฐฐํฌ๋ฅผ ์ํด์ ๊ฐ๋ฐ์ ์ง์ ์๋ฒ๋ก ์ ์ํด ์์ถ๋ ์์ค ํ์ผ์ ํ์ด์ ๋ฐฐํฌ๋ฅผ ์งํํ์๋ค. ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ํ์ผ ๋ชจ๋ํฐ๋ง ์์ ๋ง๋ค์ด์ ์๋ฒ์์ ์๋๋ฐฐํฌ๋ฅผ ์งํํ ์ ์๊ฒ ๊ตฌ์ฑํ๋ค. ๐ ํด๊ฒฐ๋ฐฉ๋ฒ1. Jenkis๋ฅผ ํต.. [Swift] Cannot assign to property: 'self' is immutable Cannot assign to property: 'self' is immutable ๋ฌธ์ ์์ธ๊ณผ ํด๊ฒฐ์ ๋ฌธ์ ๋ ๊ตฌ์กฐ์ฒด(Struct)์์ property๋ฅผ ํจ์๋ฅผ ํตํด์ ๋ณ๊ฒฝํ๋ ค๊ณ ํ ๋, ๋ฐ๊ฒฌํ ์ ์๋ค.๊ธฐ๋ณธ์ ์ผ๋ก ๊ตฌ์กฐ์ฒด๋ ์ค๋ ์ท(snap shot)์ ์ฐ์ด๋ด๋ ๊ฒ์ด๋ค.struct Example { var p = 0 func changeP() { p += 1 //p๋ฅผ 1์ฆ๊ฐ }}์ ์ฝ๋์์ p๋ ๊ฐ๋ณ ๋ณ์๋ก ์ ์ํ๋ค. ํ์ง๋ง ํด๋น ๊ตฌ์กฐ์ฒด๋ ๋ณํ์ง ์๋ ์ค๋ ์ท์ด ๋์ด์ผํ๊ธฐ์ ๊ตฌ์กฐ์ฒด ์ ์ฅ์์ ๋ถ๋ณ์ด์ฌ์ผํ property p๋ฅผ ๊ตฌ์กฐ์ฒด ๋ด๋ถ ํจ์์์ ๋ณ๊ฒฝํ ์ ์๋ค.var ex1 = Example()ex1.p = 1 //p๊ฐ์ ๋ณ๊ฒฝ์ ์ฒ๋ผ Example์ ์์๋ฐ์ ์์ฑํ ex1๊ฐ์ฒด๋ p๊ฐ.. [Java] modelmapper jdk 17 issue "modelmapper Unable to make field private final java.time.LocalDate java.time.LocalDateTime.date accessible: module java.base does not "opens java.time" to unnamed module" ํด๊ฒฐ java spring ํ๊ฒฝ์์ modelmapper ๋ฅผ ์ฌ์ฉํ๋ ์ค ์๋์ ๊ฐ์ ์ด์๊ฐ ๋ฐ์ "modelmapper Unable to make field private final java.time.LocalDate java.time.LocalDateTime.date accessible: module java.base does not "opens java.time" to unnamed module" Java 9๋ถํฐ๋ ๋ชจ๋ ์์คํ ์ด ๋์ ๋์์ผ๋ฉฐ, ๋ชจ๋ ๊ฐ์ ์ ๊ทผ์ ๋ช ์์ ์ผ๋ก ์ ์ดํ๊ฒ ๋์์ต๋๋ค. ์ด ๋ฌธ์ ๋ Java 9 ์ด์์์ ModelMapper์ java.time ํจํค์ง์ ์ฌ์ฉ ์ฌ์ด์ ์ ๊ทผ ์ ํ์ผ๋ก ๋ฐ์ํ ์ด์ ํ์ฌ ๋ด ํ๊ฒฝ์ jdk 17์ด์๊ณ entity์ private์ผ๋ก ์ค์ ๋ LocalDateTi.. [VScode] Mac VScode ESLint ์ ์ฅ ์, ์๋ ์ ๋ ฌ, ์๋ ์์ ์ค์ VScode์์ ESLint ์ ์ฅ ์, ์๋์ ๋ ฌ ์ค์ ๋ฐฉ๋ฒ 1. setting.json ์ผ๊ธฐ Mac์ ๊ฒฝ์ฐ, "Command + P" ๋จ์ถํค๋ก ํ์ผ ๊ฒ์ ์ฐฝ์ ์ฐ ํ, setting.json(.vscode) ๋ฅผ ์ผ๊ธฐ 2. ESLint ์ ์ฅ ์, ์๋์ ๋ ฌ ์ฝ๋ ์ถ๊ฐํ๊ธฐ "editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit" } ์ ์ฝ๋๋ฅผ ์ถ๊ฐ ๋ฐ๋ก ์ ์ฉ์ด๋์ง ์๋๋ค๋ฉด, VScode๋ฅผ ์ฌ์์, VScode ํ์ฅ์์ ESLint๋ฅผ "์ฌ์ฉ์ํจ" > "๋ค์๋ก๋" > "์ฌ์ฉ" ์์๋ก ์ฌ์์ ํด๋ณด๊ธฐ [TypeScript] VScode "๋ชจ๋ ๋๋ ํด๋น ํ์์ ์ฐพ์ ์..." ์ค๋ฅ VScode์์ TS๊ฐ ์ค์น๋ ํ๋ก์ ํธ๋ฅผ ์ด์์ ๋, ์์ฃผ "๋ชจ๋ ๋๋ ํด๋นํ์์ ์ฐพ์ ์ ์์ต๋๋ค....(Cannot fine module...)"์ ์ค๋ฅ๋ฅผ ์์ฃผ ๋ณผ ์ ์๋ค. Vue3 ํ๋ก์ ํธ์ TS๋ฅผ ์ถ๊ฐํ์์ ๋, ๋ฐ๋ก ์ด๋ฌํ ์ค๋ฅ๊ฐ ๋ฌ๋๋ฐ ํด๊ฒฐ๋ฒ์ ์ ์ด๋ณธ๋ค. ํ๋ก์ ํธ๋ฅผ ๋ฐ๋ก ์์ฑํ์ ๊ฒฝ์ฐ, ๋ณดํต vite.config.ts, tsconfig.node.json, tsconfig.app.json, App.vue ์์ ํ์ธ๋๋ค. ์ค์ ์ค์น๋ TSํ๋ฌ๊ทธ์ธ๊ณผ VScode์์ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํ๋ ํ๋ฌ๊ทธ์ธ์ด ์ถฉ๋ํ์ฌ ๋๋ ์ค๋ฅ์ธ๋ฐ, ์ค์ npm ํน์ pnpm install์ด๋ build๋ ์ ๋๋๋ฐ ๋ถ์ ๋ฐ์ค ๋ฑ์ผ๋ก ๋ฌธ๋ฒ์ ์ค๋ฅ์ฒ๋ผ ํ๊ธฐ๋๋ค๋ฉด, ์๋์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ํด๊ฒฐ๋๋ค.(install์ด๋ build๊ฐ ์๋.. ์ด์ 1 2 3 4 5 6 7 8 ยทยทยท 12 ๋ค์