<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>실습 예제 on Advanced Beginner</title><link>https://advanced-beginner.github.io/ko/docs/kotlin/examples/</link><description>Recent content in 실습 예제 on Advanced Beginner</description><generator>Hugo</generator><language>ko-KR</language><managingEditor>d8lzz1gpw@mozmail.com (kimbenji)</managingEditor><webMaster>d8lzz1gpw@mozmail.com (kimbenji)</webMaster><lastBuildDate>Wed, 13 May 2026 06:58:22 +0000</lastBuildDate><atom:link href="https://advanced-beginner.github.io/ko/docs/kotlin/examples/index.xml" rel="self" type="application/rss+xml"/><item><title>환경 설정 심화</title><link>https://advanced-beginner.github.io/ko/docs/kotlin/examples/setup/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/kotlin/examples/setup/</guid><description>&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;소요 시간&lt;/strong&gt;: 약 10분&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;build.gradle.kts&lt;/code&gt;의 핵심 블록(plugins, dependencies, kotlin, application) 의미 정리&lt;/li&gt;
&lt;li&gt;&lt;code&gt;jvmToolchain(17)&lt;/code&gt; vs &lt;code&gt;sourceCompatibility&lt;/code&gt; 차이 이해&lt;/li&gt;
&lt;li&gt;IntelliJ IDEA 단축키와 ktlint 통합으로 협업 환경 정비&lt;/li&gt;
&lt;li&gt;트러블슈팅 패턴(클래스 버전, 의존성 갱신, 캐시 무효화)&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;대상 독자&lt;/strong&gt;: Kotlin 환경 설정의 기본을 끝낸 개발자
&lt;strong&gt;선수 지식&lt;/strong&gt;: &lt;a href="../../quick-start/"&gt;Quick Start&lt;/a&gt; 완료 (JDK 17 설치, &lt;code&gt;gradle init&lt;/code&gt;, 첫 &lt;code&gt;./gradlew run&lt;/code&gt; 실행까지)&lt;/p&gt;
&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;기본 설치는 Quick Start에서&lt;/strong&gt;&lt;br&gt;JDK 17 설치, &lt;code&gt;gradle init&lt;/code&gt;으로 Kotlin DSL 프로젝트 생성, IntelliJ IDEA 처음 열기 등 첫 환경 구축은 &lt;a href="../../quick-start/"&gt;Quick Start&lt;/a&gt;에서 다룹니다. 이 페이지는 그 다음 단계 — 빌드 스크립트의 핵심 옵션과 협업에 필요한 추가 설정을 정리합니다.
&lt;/blockquote&gt;

&lt;hr&gt;
&lt;h4 id="step-1--buildgradlekts-핵심-설정"&gt;Step 1 — build.gradle.kts 핵심 설정&lt;a class="anchor" href="#step-1--buildgradlekts-%ed%95%b5%ec%8b%ac-%ec%84%a4%ec%a0%95"&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Kotlin DSL로 작성된 빌드 스크립트입니다. 핵심 옵션을 이해합니다.&lt;/p&gt;</description></item><item><title>기본 예제</title><link>https://advanced-beginner.github.io/ko/docs/kotlin/examples/basic/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/kotlin/examples/basic/</guid><description>&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;소요 시간&lt;/strong&gt;: 약 15분&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;data class&lt;/code&gt;로 간결한 데이터 모델 정의&lt;/li&gt;
&lt;li&gt;&lt;code&gt;filter&lt;/code&gt;, &lt;code&gt;map&lt;/code&gt;, &lt;code&gt;sortedBy&lt;/code&gt; 등 컬렉션 처리 함수 활용&lt;/li&gt;
&lt;li&gt;확장 함수로 기존 타입에 도메인 특화 기능 추가&lt;/li&gt;
&lt;li&gt;&lt;code&gt;when&lt;/code&gt;, &lt;code&gt;?:&lt;/code&gt;, &lt;code&gt;?.&lt;/code&gt; 등 Kotlin 표현식 적극 활용&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;대상 독자&lt;/strong&gt;: Kotlin 환경 설정을 마친 개발자
&lt;strong&gt;선수 지식&lt;/strong&gt;: &lt;a href="https://advanced-beginner.github.io/ko/docs/kotlin/examples/setup/"&gt;환경 설정&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;설치된 환경에서 Kotlin의 핵심 기능을 직접 실행하며 익힙니다. 각 예제는 &lt;code&gt;src/main/kotlin/&lt;/code&gt; 아래에 파일을 만들어 실행합니다.&lt;/p&gt;
&lt;h4 id="step-1--hello-kotlin"&gt;Step 1 — Hello Kotlin&lt;a class="anchor" href="#step-1--hello-kotlin"&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;가장 간단한 Kotlin 프로그램부터 시작합니다.&lt;/p&gt;</description></item><item><title>Spring Boot 연동</title><link>https://advanced-beginner.github.io/ko/docs/kotlin/examples/spring-boot-integration/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/kotlin/examples/spring-boot-integration/</guid><description>&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;소요 시간&lt;/strong&gt;: 약 20분&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;start.spring.io&lt;/code&gt;에서 Kotlin + Spring Web + Spring Data JPA 선택&lt;/li&gt;
&lt;li&gt;&lt;code&gt;build.gradle.kts&lt;/code&gt;에 &lt;code&gt;kotlin-spring&lt;/code&gt;, &lt;code&gt;kotlin-jpa&lt;/code&gt; 플러그인 필수&lt;/li&gt;
&lt;li&gt;JPA 엔티티에 &lt;code&gt;open&lt;/code&gt; 클래스 이슈 → &lt;code&gt;kotlin-jpa&lt;/code&gt; 플러그인이 자동 해결&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@RestController&lt;/code&gt;, &lt;code&gt;@Service&lt;/code&gt;, &lt;code&gt;@Entity&lt;/code&gt; 모두 Kotlin 방식으로 작성 가능&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;대상 독자&lt;/strong&gt;: Kotlin 기초와 Spring Boot 경험이 있는 개발자
&lt;strong&gt;선수 지식&lt;/strong&gt;: &lt;a href="https://advanced-beginner.github.io/ko/docs/kotlin/examples/setup/"&gt;환경 설정&lt;/a&gt;, Spring Boot 기초&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Kotlin과 Spring Boot 3.2.x를 연동하여 간단한 사용자 관리 REST API를 구축합니다.&lt;/p&gt;
&lt;h4 id="step-1--프로젝트-생성"&gt;Step 1 — 프로젝트 생성&lt;a class="anchor" href="#step-1--%ed%94%84%eb%a1%9c%ec%a0%9d%ed%8a%b8-%ec%83%9d%ec%84%b1"&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://start.spring.io"&gt;start.spring.io&lt;/a&gt;에서 프로젝트를 생성합니다.&lt;/p&gt;</description></item><item><title>Kafka 연동</title><link>https://advanced-beginner.github.io/ko/docs/kotlin/examples/kafka-integration/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/kotlin/examples/kafka-integration/</guid><description>&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;소요 시간&lt;/strong&gt;: 약 25분&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;spring-kafka&lt;/code&gt; 의존성 추가 후 &lt;code&gt;application.yml&lt;/code&gt; 설정&lt;/li&gt;
&lt;li&gt;&lt;code&gt;KafkaTemplate&amp;lt;String, String&amp;gt;&lt;/code&gt;으로 메시지 발행&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@KafkaListener(topics = [&amp;quot;...&amp;quot;], groupId = &amp;quot;...&amp;quot;)&lt;/code&gt;로 메시지 수신&lt;/li&gt;
&lt;li&gt;Consumer Group 네이밍 규칙: &lt;code&gt;{app-name}-group&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;대상 독자&lt;/strong&gt;: Kotlin + Spring Boot 기초를 이해한 개발자
&lt;strong&gt;선수 지식&lt;/strong&gt;: &lt;a href="https://advanced-beginner.github.io/ko/docs/kotlin/examples/spring-boot-integration/"&gt;Spring Boot 연동&lt;/a&gt;, Kafka 기초&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Kotlin과 Spring Kafka를 사용하여 메시지를 발행하고 수신하는 예제를 구현합니다. 이 예제는 사이트의 &lt;code&gt;docker/&lt;/code&gt; 디렉토리에 있는 Kafka(KRaft 모드, 포트 9092)를 사용합니다.&lt;/p&gt;
&lt;h4 id="step-1--kafka-브로커-실행"&gt;Step 1 — Kafka 브로커 실행&lt;a class="anchor" href="#step-1--kafka-%eb%b8%8c%eb%a1%9c%ec%bb%a4-%ec%8b%a4%ed%96%89"&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 프로젝트 루트에서&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; docker
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker-compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 상태 확인&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker-compose ps&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;정상 실행 시 &lt;code&gt;kafka&lt;/code&gt; 컨테이너가 &lt;code&gt;Up&lt;/code&gt; 상태여야 합니다.&lt;/p&gt;</description></item><item><title>코루틴 실무 사용</title><link>https://advanced-beginner.github.io/ko/docs/kotlin/examples/coroutines-practical/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/kotlin/examples/coroutines-practical/</guid><description>&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;소요 시간&lt;/strong&gt;: 약 30분&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;async { }&lt;/code&gt; + &lt;code&gt;await()&lt;/code&gt; — 두 API를 병렬 호출, 직렬 대비 속도 향상&lt;/li&gt;
&lt;li&gt;&lt;code&gt;suspend fun&lt;/code&gt;을 &lt;code&gt;@GetMapping&lt;/code&gt;에 사용하면 Spring MVC에서 코루틴 컨트롤러 동작&lt;/li&gt;
&lt;li&gt;&lt;code&gt;withTimeout(ms) { }&lt;/code&gt; — 타임아웃 지정, 초과 시 &lt;code&gt;TimeoutCancellationException&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;구조화된 동시성 — 부모 코루틴이 취소되면 자식 코루틴도 자동 취소&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;대상 독자&lt;/strong&gt;: Kotlin 기초와 Spring Boot 경험이 있는 개발자
&lt;strong&gt;선수 지식&lt;/strong&gt;: &lt;a href="https://advanced-beginner.github.io/ko/docs/kotlin/examples/spring-boot-integration/"&gt;Spring Boot 연동&lt;/a&gt;, 코루틴 기초 개념&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;코루틴을 실무 시나리오에 적용합니다. 두 외부 API를 병렬 호출하고, Spring MVC 컨트롤러에서 &lt;code&gt;suspend fun&lt;/code&gt;을 사용하며, 타임아웃과 취소 전파를 다룹니다.&lt;/p&gt;</description></item><item><title>Multiplatform 시작</title><link>https://advanced-beginner.github.io/ko/docs/kotlin/examples/multiplatform-intro/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/kotlin/examples/multiplatform-intro/</guid><description>&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;소요 시간&lt;/strong&gt;: 약 30분&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;commonMain&lt;/code&gt; — 모든 플랫폼에서 공유하는 Kotlin 코드&lt;/li&gt;
&lt;li&gt;&lt;code&gt;expect&lt;/code&gt; — 공통 모듈에서 선언, &lt;code&gt;actual&lt;/code&gt; — 각 플랫폼에서 구현&lt;/li&gt;
&lt;li&gt;&lt;code&gt;jvmMain&lt;/code&gt;, &lt;code&gt;jsMain&lt;/code&gt; — 플랫폼 특화 코드&lt;/li&gt;
&lt;li&gt;한 번 작성한 비즈니스 로직을 JVM(백엔드/Android)과 JS(프론트엔드)에서 재사용&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;대상 독자&lt;/strong&gt;: Kotlin 중급 이상의 개발자
&lt;strong&gt;선수 지식&lt;/strong&gt;: &lt;a href="https://advanced-beginner.github.io/ko/docs/kotlin/examples/setup/"&gt;환경 설정&lt;/a&gt;, 기본 Kotlin 문법&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Kotlin Multiplatform(KMP)으로 비즈니스 로직을 여러 플랫폼에서 공유합니다. 날짜 포매터를 공통 모듈로 작성하고, JVM과 JS에서 각각 구현하는 미니 프로젝트를 진행합니다.&lt;/p&gt;
&lt;h4 id="step-1--프로젝트-구조-이해"&gt;Step 1 — 프로젝트 구조 이해&lt;a class="anchor" href="#step-1--%ed%94%84%eb%a1%9c%ec%a0%9d%ed%8a%b8-%ea%b5%ac%ec%a1%b0-%ec%9d%b4%ed%95%b4"&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;KMP 프로젝트에서 코드는 소스 세트(source set)로 구성됩니다.&lt;/p&gt;</description></item></channel></rss>