๋ฐ์ํ ์ ์ฒด ๊ธ423 ์ดํํฐ๋ธ ์ฝํ๋ฆฐ - 5์ฅ ๊ฐ์ฒด ์์ฑ ์์ดํ 33. ์์ฑ์ ๋์ ํฉํ ๋ฆฌ ํจ์๋ฅผ ์ฌ์ฉํ๋ผํฉํ ๋ฆฌ ํจ์์ ์ฅ์ ํจ์์ ์ด๋ฆ์ ์ถ๊ฐํ ์ ์๋ค.ArrayList(3) vs ArrayList.withSize(3)์ํ๋ ํ์ ์ ๋ฆฌํด์ด ๊ฐ๋ฅํ๋ค.ํธ์ถ๋ ๋๋ง๋ค ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค ํ์๊ฐ ์๋ค.๊ฐ์ฒด๋ฅผ ๋ง๋ค ์ ์๋ ๊ฒฝ์ฐ null ๋ฆฌํด์ ํ๋๋ก ๋ง๋ค ์ ์๋ค.ex) createOrNull(), findByIdOrNull()inline, reified๋ก ๋ง๋ค ์ ์๋ค.์ธ๋ผ์ธ ํจ์๋ก ๋ง๋ค๋ฉด ์ปดํ์ผ ํ ์์ฑ๋๋ ๋ฐ์ดํธ์ฝ๋์ ํจ์ ๋ณธ๋ฌธ์ด ๋ค์ด๊ฐ์ ํจ์ ํธ์ถ์ ์ค๋ฒํค๋๊ฐ ์์ด์ง๋ค.reified๋ก ๋ง๋ค๋ฉด ์ ๋ค๋ฆญ ํ์ ์ ์ ๋ณด๋ฅผ(Class Type) ๋ฐํ์์๋ ์ฌ์ฉํ ์ ์๋ค. ์ฝํ๋ฆฐ์์ ํฉํ ๋ฆฌ ํจ์class MyList( val head: T, val tail:.. 2025. 8. 15. ์ดํํฐ๋ธ ์ฝํ๋ฆฐ - 4์ฅ ์ถ์ํ ์ค๊ณ ์์ดํ 26. ํจ์ ๋ด๋ถ์ ์ถ์ํ ๋ ๋ฒจ์ ํต์ผํ๋ผ์ปดํจํฐ ๊ณผํ์์ ์ถ์ํ๋ ๋ณต์กํ ์๋ฃ, ๋ชจ๋, ์์คํ ๋ฑ์ผ๋ก๋ถํฐ ํต์ฌ์ ์ธ ๊ฐ๋ ๋๋ ๊ธฐ๋ฅ์ ๊ฐ์ถ๋ ค๋ด๋ ๊ฒ๊ฐ๋จํ๊ฒ ํํํ๋ฉด, ์ถ์ํ๋ ๋ณต์ก์ฑ์ ์จ๊ธฐ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋จ์ํ ๋ฐฉ์ ์ฝ๋์์๋ ์ถ์ํ๋ฅผ ์ํ ๊ธฐ๋ณธ์ ์ธ ๋๊ตฌ๊ฐ ๋ฐ๋ก ํจ์์ด๋ค.์ถ์ํ ๋ ๋ฒจ ํต์ผ(Single Level of Abstraction, SLA) ์์น: ํจ์๋ ๋์ ๋ ๋ฒจ๊ณผ ๋ฎ์ ๋ ๋ฒจ์ ๊ตฌ๋ถํด์ ์ฌ์ฉclass CoffeeMachine { fun makeCoffee() { boilWater() // ๋ฌผ์ ๋์ด๊ณ , brewCoffee() // ์ปคํผ๋ฅผ ๋ด๋ฆฌ๊ณ , pourCoffee() // ์ปคํผ๋ฅผ ๋ถ๊ณ , pourMilk() // ์ฐ์ ๋ฅผ ๋ฃ๋๋ค... 2025. 7. 12. Kafka Consumer ์ค์ ๊ฐ์ด๋ ์ง๋ ํฌ์คํ ์์ Kafka Producer ์ค์ ์ ๋ํด ์ดํด๋ณด์๋๋ฐ์, ์ด๋ฒ ํฌ์คํ ์์๋ Consumer ๊ด๋ จํ์ฌ ์ค์ ๋ค์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค. https://kafka.apache.org/documentation/#consumerconfigs Apache KafkaApache Kafka: A Distributed Streaming Platform.kafka.apache.orgkey.deserializerDeserializer class for key that implements the org.apache.kafka.common.serialization.Deserializer interface.key ๋ฐ์ดํฐ์ ์ญ์ง๋ ฌํ๋ฅผ ์ํ Deserializer ํด๋์คType: classDefault: Name: KE.. 2025. 7. 9. Kafka Producer ์ค์ ๊ฐ์ด๋ Kafka๋ฅผ ์ฒ์ ๊ตฌ์ถํ๋ฉด์(MSK) ๋จ์ํ Produce/Consume ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ํ๋ก๋์, ์ปจ์๋จธ, ๋ธ๋ก์ปค, ํ ํฝ ๋ฑ ์ค์ ๊ฐ๋ค์ ๋ํด ์ดํดํ๊ณ ์ ์ ํ ์ค์ ํ๋ ๊ฒ์ด ๊ฝค๋ ์ด๋ ค์ ๋๋ฐ์,์ด์ ๊ด๋ จํ์ฌ ๊ฐ๊ฐ ์ด๋ค ์ค์ ๋ค์ด ์กด์ฌํ๋์ง ์ดํด๋ณด๊ณ , ์ํฉ์ ๋ง๋ ๊ฐ๋ค์ ์ ์ค์ ํ ์ ์๋๋ก ์ ๋ฆฌํ๊ณ ์ ํฉ๋๋ค. ์ฐ์ ์นดํ์นด ํ๋ก๋์(Producer) ๊ด๋ จ ์ค์ ๋ถํฐ! https://kafka.apache.org/documentation/#producerconfigs Apache KafkaApache Kafka: A Distributed Streaming Platform.kafka.apache.orgkey.serializerSerializer class for key that implements the o.. 2025. 7. 6. ์ดํํฐ๋ธ ์ฝํ๋ฆฐ - 3์ฅ ์ฌ์ฌ์ฉ์ฑ ์์ดํ 19. knowledge(์๋์ ์ธ ์ ๋ณด)๋ฅผ ๋ฐ๋ณตํ์ฌ ์ฌ์ฉํ์ง ๋ง๋ผํ์๊ฐ ์๊ฐํ๋ ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ์ฅ ํฐ ๊ท์น์?ํ๋ก์ ํธ์์ ์ด๋ฏธ ์๋ ์ฝ๋๋ฅผ ๋ณต์ฌํด์ ๋ถ์ฌ๋ฃ๊ณ ์๋ค๋ฉด, ๋ฌด์ธ๊ฐ๊ฐ ์๋ชป๋ ๊ฒ์ด๋ค.ํ๋ก๊ทธ๋จ์์ ์ค์ํ knowledge ๋ ๊ฐ์ง?๋ก์ง: ํ๋ก๊ทธ๋จ์ด ์ด๋ค ์์ผ๋ก ๋์ํ๋์ง์ ํ๋ก๊ทธ๋จ์ด ์ด๋ป๊ฒ ๋ณด์ด๋์ง๊ณตํต ์๊ณ ๋ฆฌ์ฆ: ์ํ๋ ๋์์ ํ๊ธฐ ์ํ ์๊ณ ๋ฆฌ์ฆ๋น์ฆ๋์ค ๋ก์ง์ ์๊ฐ์ด ์ง๋๋ฉด์ ๊ณ์ ๋ณํ์ง๋ง, ๊ณตํต ์๊ณ ๋ฆฌ์ฆ์ ํ ๋ฒ ์ ์๋ ํ ํฌ๊ฒ ๋ณํ์ง ์๋๋ค.class Student { fun isPassing(): Boolean = ... fun qualifiesForScholarship(): Boolean = ... private fun calculatePointsFromPassedC.. 2025. 6. 25. ์ดํํฐ๋ธ ์ฝํ๋ฆฐ 2์ฅ - ๊ฐ๋ ์ฑ ์์ดํ 11. ๊ฐ๋ ์ฑ์ ๋ชฉํ๋ก ์ค๊ณํ๋ผ๋ก๋ฒํธ ๋งํด์ ํด๋ฆฐ ์ฝ๋ ... "๊ฐ๋ฐ์๊ฐ ์ฝ๋ ์์ฑํ๋ ๋ฐ๋ 1๋ถ ๊ฑธ๋ฆฌ์ง๋ง, ์ฝ๋ ๋ฐ๋ 10๋ถ์ด ๊ฑธ๋ฆฐ๋ค."๊ฐ๋ ์ฑ์ด๋, ์ฝ๋๋ฅผ ์ฝ๊ณ ์ผ๋ง๋ ๋น ๋ฅด๊ฒ ์ดํดํ ์ ์๋์ง๋ฅผ ์๋ฏธํ๋ค.// Aif (persion != null && person.isAdult) { view.showPerson(person)} else { view.showError()}// Bperson?.takeIf { it.isAdult } ?.let(view::showPerson) ?: view.showError()A๊ฐ ์ฝ๊ณ ์ดํดํ๊ธฐ๊ฐ ์ฌ์ด๋ฐ, ๊ธฐ๋ณธ์ ์ผ๋ก '์ธ์ง ๋ถํ'๋ฅผ ์ค์ด๋ ๋ฐฉํฅ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ผ๊ณ ํ๋ค.100% ๊ณต๊ฐ์ด ๋์ง๋ ์๋๋ค. ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ ์ตํ๊ณ , ์ ์ฌ์ฉํ๋ค๋ฉด ์ถฉ๋ถํ ์ฝ๊ณ .. 2025. 6. 14. ์ดํํฐ๋ธ ์ฝํ๋ฆฐ - 1์ฅ ์์ ์ฑ ์์ดํ 1. ๊ฐ๋ณ์ฑ์ ์ ํํ๋ผ(๊ฐ๋ฅํ๋ฉด) var ๋ณด๋ค๋ val ์ฌ์ฉ(๊ฐ๋ฅํ๋ฉด) mutable ํ๋กํผํฐ๋ณด๋ค๋ immutable ํ๋กํผํฐ ์ฌ์ฉmutable ๊ฐ์ฒด๋ฅผ ์ธ๋ถ์ ๋ ธ์ถํ์ง ๋ง์.class Test { fun calculate(): Int { println("Cal...") return 42 } val fizz = calculate() val buzz get() = calculate()}fun main() { println(Test().buzz)}//Cal...//Cal...//42์ฝ๊ธฐ ์ ์ฉ ์ปฌ๋ ์ ์ Mutable ์ปฌ๋ ์ ์ผ๋ก ๋ค์ด์บ์คํ ํ๋ฉด ์๋๋ค.์ฝ๊ธฐ ์ ์ฉ์์ mutable๋ก ๋ณ๊ฒฝํด์ผ ํ๋ค๋ฉด, ๋ณต์ ๋ฅผ ํตํด ์๋ก์ด mutable ์ปฌ๋ ์ ์ .. 2025. 6. 3. "์ฌํ ์ํํธ์จ์ด" ๋์ ๋ฆฌ๋ทฐ 1๋ถ | ํ๋ก๊ทธ๋๋จธ๋ฅผ ์ํ ์์น๊ฐ๋ฅํ ํ ์ข์ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋๊ธฐ๋ฅผ ์ง์ฌ์ผ๋ก ์ํ์ง ์๋ ์ฌ๋์ด๋ผ๋ฉด ์๋ฌด๋ฆฌ ๊ฐ๋ฅด์น๊ณ ์ง์ ํ๊ณ ์ธ๋ฏธ๋์ ๋ณด๋ด๋๋ผ๋ ์๋ฏธ๊ฐ ์๋ค. ๊ทธ๋ฐ ์ฌ๋์ ๋์์ง์ง ์๋๋ค.ํต์ฌ์, ๋ ๋์์ง๋ ค๋ฉด ๋ฐ๋์ ๋ ๋์์ง๊ณ ์ถ๋ค๋ ์์์ด ์์ด์ผ ํ๋ค๋ ๊ฒ์ด๋ค. ์์ง๋์ด์ ์์ธ๋ถ์ผ๋ฅผ ๋ง๋ก ํ๊ณ ์์ง๋์ด๋ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์๊ฐ์ ํด์ผ ํ๋ค. ๋๋ ์ด ๋ฌธ์ ๋ฅผ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ํด๊ฒฐํ ์ ์๋ค. ์ด๋ค ๋ฌธ์ ๋ ๊ทธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ด ํญ์ ์กด์ฌํ๊ณ , ๊ทธ ๋ฐฉ๋ฒ์ ์์๋ผ ์๋ ๊ตฌํํ ์๋ ์๋ค.์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ด๋, ์ ์ง๋ณด์์ ์ ๋ณ๋๊ฒ ๊ณต์ ๋ค์ด์ง ์๋๋ผ๋ ๋ฐ์ํ ์ ์๋ ๋ชจ๋ ์ํฉ์ ์กฐ๊ฑด์ ๋์ํ๊ณ , ํฉ๋ฆฌ์ ์์ค์ ํธ๋ํฝ ์์ ๊ฐ๋นํ ์ ์๋ ์ผ์ข ์ ๋ค๋ฆฌ๋ฅผ ์ง๋ ์ผ์งง์ ๊ธฐ๊ฐ์ด์์ง๋ง ์ด๊ธฐ์ ํ๋ฌ๋ํธ๋ฅผ ๋ง๋ค์ด๊ฐ๋ ๊ณผ.. 2025. 5. 24. ๋ถ์ฐ ์์คํ ์ ์ํ Unique ID ์์ฑ๊ธฐ ์ค๊ณ https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=278536695 [์ ์์ฑ ] ๊ฐ์ ๋ฉด์ ์ฌ๋ก๋ก ๋ฐฐ์ฐ๋ ๋๊ท๋ชจ ์์คํ ์ค๊ณ ๊ธฐ์ด16๊ฐ์ง ์ค์ ์์คํ ์ค๊ณ ๋ฉด์ ๋ฌธ์ ์ ์์ธํ ๋ต์์ ์ ์ํ๋ค. ์์คํ ๋์ ์๋ฆฌ๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ ์ฃผ๋ 188๊ฐ์ ๋ํด๋ก ์ค๋ช ํ๋ฉด์ 4๋จ๊ณ ์ ๊ทผ๋ฒ์ผ๋ก ๋ฉด์ ๋ฌธ์ ๋ฅผ ํ ์ ์๋๋ก ๋๋๋ค. ์ด ์ฑ www.aladin.co.kr ๊ฐ์์ด๋ฒ ํํธ์์๋ ๋ถ์ฐ ์์คํ ์์ ์ฌ์ฉ๋ Unique ID ์์ฑ๊ธฐ๋ฅผ ์ค๊ณํด๋ณด์. ๊ฐ๋จํ ํ๋ก์ ํธ, ๊ฐ์ธ ํ๋ก์ ํธ ๋ฑ์ผ๋ก ID๋ฅผ ์ค๊ณํ ๋๋ 'auto_increment' ์์ฑ์ด ์ค์ ๋ ๊ธฐ๋ณธ ํค๋ฅผ ์ฌ์ฉํ๊ณค ํ๋ค.ํ์ง๋ง ๋ถ์ฐ ํ๊ฒฝ์์๋ 'auto_increment'๋ฅผ ์ฌ์ฉํ ์ ์๋๋ฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ ํ ๋๋ก๋ ์๊ตฌ.. 2025. 5. 12. "์ดํํฐ๋ธ ์ํํธ์จ์ด ์ํคํ ์ฒ" ๋ฆฌ๋ทฐ ํ์์ ์ดํํฐ๋ธ ์๋ฆฌ์ฆ(์ดํํฐ๋ธ ์๋ฐ, ์ดํํฐ๋ธ ์ฝํ๋ฆฐ, ์ดํํฐ๋ธ ์ํํธ์จ์ด ํ ์คํ ...)๋ฅผ ์ ์ตํ๊ฒ ์ฝ์๊ธฐ์ ํด๋น ๋์๋ ์ฌ๋ฐ์ ๊ฒ ๊ฐ์์ ์ ๊ณต๋ฐ์ ์ฝ์ด๋ณด๊ฒ ๋์์ต๋๋ค.์ง๊ธ ๋น์ฅ ์ํคํ ํธ ๋ ๋ฒจ๋ก ์ค๋ฌด๋ฅผ ๋ด๋นํ์ง๋ ์์ง๋ง, ๊ฒฐ๊ตญ ์๊ฐ์ด ์ง๋๋ฉด์ ํฐ๊ทธ๋ฆผ(?)์ ๋ณด๋๊ฒ์ด ์ค์ํ๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ์ธ์ฌ์ดํธ๋ฅผ ์ป์ ๊ฒ์ ๊ธฐ๋ํ๊ณ ์์ต๋๋ค. ํด๋น ๋์๋ ์ํํธ์จ์ด ๋ณต์ก์ฑ์ ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ํคํ ์ฒ์ ํต์ฌ ๊ฐ์น์์ ๊ฐ์กฐํ๊ณ ์์ต๋๋ค. ์ํคํ ํธ๋ ์๊ตฌ์ฌํญ์ ๋ณํ์ ๊ธฐ์ ๋ณ๋์ฑ์ ์ ์ฐํ๊ฒ ๋์ํ ์ ์์ด์ผ ํ๋ฉฐ, ํต์ฌ์ ๊ฒฐ๊ตญ ๋จ์ํจ์ด๋ผ๊ณ ๊ฑฐ๋ญ ๊ฐ์กฐํ๊ณ ์์ต๋๋ค. ๋ฌธ์ํ๋ ํ์์ ์ด๋ฉฐ, ์ต์ ์ํ๋ฅผ ์ ์งํ์ง ์๋๋ผ๋ ์๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ซ๋ค๊ณ ์๊ธฐํฉ๋๋ค. ๋ํ ์ ๋ณด ์ํคํ ์ฒ์ ์ฉ์ด์ง ๊ด๋ฆฌ๋ก, ์๊ฐ์ด ์ง๋๋ ํ์ํ ์ ๋ณด๋ฅผ ์ฒด๊ณ์ .. 2025. 4. 26. ์ด์ 1 2 3 4 ยทยทยท 43 ๋ค์ ๋ฐ์ํ