| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- pnpm
- Vue.js
- java ์ฝ๋ฉ ํ ์คํธ
- ๋ฐฑ์ค
- ๋ฏธ๊ตญ๋ฐฐ๋น์ฃผํฌ์
- GIT
- ์๊ณ ๋ฆฌ์ฆ
- ์๋ฐ์คํฌ๋ฆฝํธ
- ์ฝํ๋ฆฐ
- ์ฝํ๋ฆฐ ์คํ
- ๋ฐฐ๋น์ฃผ
- kotlin ์๊ณ ๋ฆฌ์ฆ
- javascript
- ์๋ฐ
- python
- ๋ฐฑ์ค ์ฝํ๋ฆฐ
- Kotlin
- ํ์ฝํ
- ๋ฏธ๊ตญ์ฃผ์
- Java
- linux
- ํ์ด์ฌ
- Swift
- ์ฝํ๋ฆฐ ์๊ณ ๋ฆฌ์ฆ
- kotlin algorithm
- vue3
- js
- CI/CD
- ์๋ฐ ์๊ณ ๋ฆฌ์ฆ
- ํ๋ก๊ทธ๋๋จธ์ค
- Today
- Total
๋ชฉ๋กProgramming/Java, Kotlin (15)
๐ ์ ์ด์ ๋จธ๋ฆฟ์์ผ๋ก
๊ธ์ต๊ถ์์ IT ๊ฐ๋ฐ์๋ก ์ผํ๋ฉด์ ํ์ฅ์์ '๋ ๊ฑฐ์(Legacy)'๋ผ๊ณ ๋ถ๋ฆฌ๋ ์ค๋๋ ์ฝ๋๋ฅผ ์์ฃผ ๋ง์ฃผํ๊ฒ ๋ฉ๋๋ค.์ ๋ ์ด๋ฐ ์ฝ๋๋ฅผ ๋จ์ํ ๋ ๊ฑฐ์('์ค๋๋ ์ฝ๋'๋ '๊ธฐ์ ๋ถ์ฑ')๋ผ๊ณ ๋งํ๊ณ ์ถ์ง๋ ์์ต๋๋ค. ์ด ์ฝ๋๋ค์ ์ญ์ ๋ ๊ฐ ์์ฒ๋ง ๊ฑด์ ๊ฑฐ๋๋ฅผ ๋ฒํ จ๋ธ '์ด์๋จ์ ์ฝ๋'์ด์, ๋น์์ ์น์ดํ ๊ณ ๋ฏผ์ด ๋ด๊ธด '์ ๋ฐฐ๋ค์ ์ ์ฐ'์ ๋๋ค.๊ธ์ต๊ถ์ ํน์ฑ์ 'ํ์ ์ ์ธ ์ฑ๋ฅ'๋ณด๋ค '๋จ ํ๋์ ์ค๋ฅ๋ ์๋ ์์ '์ด 1์์์์ ํ ๋๊น์. ํ์ง๋ง ์ต๊ทผ ์ ๊ท ํ๋ก์ ํธ๋ ๊ณตํต ๋ชจ๋ ๊ฐ๋ฐ ๊ณผ์ ์์๋ ๋ฌด์์์ ์ผ๋ก StringBuffer๊ฐ ์ฌ์ฉ๋๋ ๋ชจ์ต์ ๋ณด๋ฉฐ, ๊ฐ๋ฐ์๋ก์ ์์ ๋ฌผ์ํ๋ฅผ ๋์ง๊ฒ ๋์์ต๋๋ค. "์ฐ๋ฆฌ๋ ์ง๊ธ ์์ ์ ์ํด StringBuffer๋ฅผ ์ฐ๋ ๊ฑธ๊น, ์๋๋ฉด ๊ด์ต์ ์ผ๋ก ์ฐ๊ณ ์๋ ๊ฑธ๊น?"1. 10๋ ์ ์ ์ ๋ต์ด ..
๐ Java ์ ๋ค๋ฆญ(Generic)์ ์ ์ฌ์ฉํ ๊น? Java๋ฅผ ์ฌ์ฉํ๋ค ๋ณด๋ฉด List, Map ๊ฐ์ ์ ๋ค๋ฆญ(Generic) ๋ฌธ๋ฒ์ ์์ฃผ ์ ํ๊ฒ ๋ฉ๋๋ค.๊ทธ๋ ๋ค๋ฉด ์ ๊ตณ์ด ์ ๋ค๋ฆญ์ ์จ์ผ ํ ๊น์?์ด๋ฒ ๊ธ์์๋ ์ ๋ค๋ฆญ์ ๋์ ์ด์ , ๋ด๋ถ ๋์ ๋ฐฉ์, ์ค์ ์์ , ์ฃผ์ํ ์ ๊น์ง ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.์ ๋ค๋ฆญ์ด๋?์ ๋ค๋ฆญ(Generic) ์ ํด๋์ค๋ ๋ฉ์๋์์ ์ฌ์ฉํ ๋ฐ์ดํฐ ํ์ ์ ์ธ๋ถ์์ ์ง์ ํ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ๋ฅ์ ๋๋ค.List list = new ArrayList();์ ์ฝ๋์์ List๋ String๋ง ๋ด์ ์ ์๋ค๋ ๋ป์ ๋๋ค. ์ ์ ๋ค๋ฆญ์ ์ฌ์ฉํ๋๊ฐ?1. ์ปดํ์ผ ํ์ ํ์ ์ฒดํฌ (ํ์ ์์ ์ฑ ํ๋ณด)์ ๋ค๋ฆญ์ด ์๋ ์์ ์๋ ๋ชจ๋ ํ์ ์ด Object๋ก ์ฒ๋ฆฌ๋์๊ณ ,์๋ชป๋ ํ๋ณํ์ผ๋ก ์ธํด ClassCastException..
์์ฃผ ์ฐ์ด๋ ์๋ฃ๊ตฌ์กฐ๋ฐฐ์ดimport java.util.*;public class ListExample { public static void main(String[] args) { // intํ ๋ฐฐ์ด int[] intArray = new int[100]; // ํฌ๊ธฐ๊ฐ 100์ธ intํ ๋ฐฐ์ด ์์ฑ (์ด๊ธฐ๊ฐ 0) int[] intArrayInit = {1, 2, 3, 4, 5}; // ์์ฑ๊ณผ ํจ๊ป ๊ฐ์ ํ ๋นํ ๋ฐฐ์ด // ์์ ์ ๊ทผ (์ธ๋ฑ์ค ์ฌ์ฉ) System.out.println(intArray[0)); // ์ถ๋ ฅ: 0 System.out.println(intArrayInit[0)); // ์ถ๋ ฅ: 1 // ๋ฌธ์์ด ๋ฐฐ์ด Str..
๋ฐฐ์ด // ๋ฐฐ์ด ์ด๊ธฐํ val array1 = arrayOf(1, 2, 3) val array2 = Array(3) {0} println(array1.joinToString()) // 1, 2, 3 println(array2.joinToString()) // 0, 0, 0 array2[0] = 1 // 0 ์ธ๋ฑ์ค์ ๊ฐ์ 1๋ก ๋ณ๊ฒฝ println(array2.joinToString()) // 1, 0, 0 // ArrayList ์์ฑ val list = ArrayList() list.add(1) list.add(2) println(list) // 1, 2 ์คํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ก ๊ฐ์ง๊ณ ์์ง ์์ผ๋ฉฐ, Mu..
Spring๊ณผ Redis๋ฅผ ํ์ฉํ ๋์์ฑ ์ฒ๋ฆฌ ๋ฐ ๋ฐ์ดํฐ ์ผ๊ด์ฑํ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ๋์์ฑ ์ฒ๋ฆฌ๊ฐ ์ค์ํ ์์์ ๋๋ค. ํนํ ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฑฐ๋ ์กฐํํ๋ ํ๊ฒฝ์์ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๊ฒ์ ํฐ ๋์ ๊ณผ์ ๊ฐ ๋ฉ๋๋ค. ์ค์ ๋ก ๋ฌด์์ ํฌ์ธํธ(๋๋ค ํฌ์ธํธ) ์ง๊ธ ์ด๋ฒคํธ๋ฅผ ๊ฐ๋ฐํ๋ ๊ฒฝํ์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ๊ธ์ ์์ฑํด ๋ด ๋๋ค.1. ๋์์ฑ ์ฒ๋ฆฌ์ ํ์์ฑ๋์์ฑ์ด๋ ์ฌ๋ฌ ํธ๋์ญ์ ์ด ๋์์ ์คํ๋ ๋ ๋ฐ์ํ๋ ํ์์ผ๋ก, ๋ฐ์ดํฐ๋ฒ ์ด์ค์์์ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์์ ์ ์ถฉ๋์ ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ฌํ ์ถฉ๋์ด ๋ฐ์ํ๋ฉด ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ด ์ ํด๋ ์ ์์ผ๋ฉฐ, ์ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.2. Spring์์์ ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์คSpring์์๋ ํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ ์์ค์ ์ค์ ํ์ฌ ..
์จ๋ผ์ธ Kotlin ์ฐ์ต์ฅhttps://play.kotlinlang.org/ Kotlin Playground: Edit, Run, Share Kotlin Code Online play.kotlinlang.org์ ์ฌ์ดํธ์ ์ ์ํ๋ฉด ๋ณ๋์ IntelliJ์ ๊ฐ์ ๋ณ๋์ IDE ์์ด Kotlin ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ฐ์ตํ ์ ์๋ค. ๋ฐฑ์ค๊ณผ ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฐ์ตํ ๋, IDE๋ฅผ ํตํด์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ง ์์๋๋๋ค๋ ์ ์์ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์์ ๊ฒ ๊ฐ๋ค.
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..
Java๋ ์ธ์๋ก ๋๊ฒจ์ค ๊ฐ์ฒด์ ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด ํด๋น ๊ฐ์ฒด์ ์ค์ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ค. add ํจ์๋ ์ธ์๋ก ๋ฐ๋ model ๊ฐ์ฒด ์์ number ํ๋์ ๊ฐ์ 1 ๋ํ๋ ํจ์์ด๋ค. ์ฒ์์ ์๋ model ๊ฐ์ฒด๋ฅผ add ํจ์์ ์ธ์๋ก ๋๊ฒจ์ ์คํํ๋ฉด ์ฒ์ model์ ํ๋ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ค. C์ธ์ด๋ python์์ ํจ์์ ์ธ์๋ฅผ ๋๊ธฐ๋ฉด ์ค์ ๊ฐ(ํน์ ๊ฐ์ฒด์ ์ฃผ์ ๊ฐ)์ด ์๋ ์ธ์์ ๊ฐ์ ๋ณต์ฌ ๊ฐ์ด ๋์ด๊ฐ๋ค. ์ด๋ ๊ฒ ์๋ณธ์ ๋ณต์ฌ ๊ฐ์ ์ธ์์ ๋๊ฒจ์ฃผ๋ ๋ฐฉ๋ฒ์ "Call By Value"๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ค์ ๋ก ์๋ณธ A๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ํด์ addํจ์์ return ๊ฐ์ธ B ๋ค์ ๋์ ํด์ค ์ ์๋ค. Model model = new Model() model = add(model)// add ํจ์์ return์ Model cl..
xml์์ ํ์ผ ํ๊ตญ์ด 25 ์์ธ java๋ก xmlํ์ผ parsing ํ๊ธฐ XML ํ์ผ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์ ์ฐจ๋ HTML ํ์ผ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์ ์ฐจ์ ์ ์ฌํฉ๋๋ค. HTML์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ์์ ํ๊ธฐ ์ํด์๋ ํ์ํ ํ๊ทธ๋ฅผ ์ธ์ํด์ค ํ์๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, document.getElementById("๊ฐ์ ธ์ฌ ํ๊ทธ์ Id") ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด์ ํน์ ์์ด๋๋ฅผ ๊ฐ์ง ํ๊ทธ๋ฅผ ์ธ์ํ ์ ์์ต๋๋ค. ์ด์ฒ๋ผ xmlํ์ผ ์ญ์ ํ๊ทธ๋ฅผ ์ธ์ํ๊ธฐ ์ํด์ ํ์ํ ์ ์ฐจ๋ ๋ฌธ์์ ์์ฒด ๊ฐ์ฒด์ธ document๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋๋ค. import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax..
Java๋ด์ ๋ด์ฅ๋์ด์๋ GUI์ธ ์ค์(swing)์ ์ด์ฉํ์ฌ ๊ฐ๋จํ ํ ์ด ํ๋ก๊ทธ๋จ(๊ฐ๊ณ๋ถ ํ๋ก์ ํธ)์ ์์ฑํ์์ต๋๋ค. ์ด๋ค ๊ธฐ๋ฅ์ ์ด๋ป๊ฒ ๋ง๋ค์๋์ง ์๊ฐํด์ผํ ๋ถ๋ถ์ด ์ด๋ค ๊ฒ ์์์ง ํ๊ณ ํ๊ธฐ ์ํด ๊ธฐ๋กํฉ๋๋ค. ใใใ๋ฐ๋ก๊ฐ๊ธฐ ๋ก๊ทธ์ธ ํ์๊ฐ์ ํ ์คํธ ํ๋ ํํธ ์ฝ์ ํ ์ด๋ธ ๋ฐ์ดํฐ ์ฝ์ ํ ์ด๋ธ ์๋ก๊ณ ์นจ ํ ์ด๋ธ ํ ์ญ์ โถ๋ก๊ทธ์ธ ๊ธฐ๋ฅ ์์ด๋ ํน์ ๋น๋ฐ๋ฒํธ๋ฅผ ๊ธฐ์ ํ๋ ํ ์คํธํ๋(textfield)๊ฐ ๊ธฐ์ ๋์ง ์์ผ๋ฉด ํ๋จ ๋ผ๋ฒจ์ ๊ฒฝ๊ณ ๋ฌธ์ ์์ฑ. ์ณ์ง ์์ ์์ด๋๋ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ์ ๋, ๊ฒฝ๊ณ ๋ฌธ GUI ์์ฑ. ๋ก๊ทธ์ธ ๋ฒํผ์ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํด์ฃผ๋ ๋ฉ์๋ actionListener ๊ฐ์ฒด๋ฅผ ์์ฑํด ๋ ํด์ฃผ๊ณ ํ ์คํธ๊ฐ ๋น์ด์์ ๋, ์ ํํ๋ idHint, pwHint ๋ฌธ์์ด๊ณผ ๋์ผํ ๊ฒฝ์ฐ ๋ผ๋ฒจ ๊ฒฝ๊ณ ๋ฌธ์ด ๋ณด์ผ ์ ์๊ฒ ํด ..