From 21fe97859835f6fb6df1b33ba41c546d2dacd091 Mon Sep 17 00:00:00 2001
From: Alfex4936 <ikr@kakao.com>
Date: Sun, 19 Mar 2023 23:37:08 +0900
Subject: [PATCH] Update chapter 2

---
 docs/03_ko.html                    |   4 +-
 docs/21_ko.html                    |  23 ++-
 docs/22_ko.html                    |  43 ++++-
 docs/23_ko.html                    |  10 +-
 docs/24_ko.html                    |  44 ++++-
 docs/25_ko.html                    |  29 ++-
 docs/26_ko.html                    |  13 +-
 docs/28_ko.html                    |   7 +-
 docs/30_ko.html                    |  76 ++++++++
 docs/32_ko.html                    |  76 ++++++++
 docs/34_ko.html                    |  76 ++++++++
 docs/TOC_ko.html                   |  15 +-
 docs/chapter_2_ko.html             |  23 ++-
 docs/chapter_3_ko.html             |   4 +-
 docs/chapter_4_ko.html             |   4 +-
 docs/chapter_5_ko.html             |   4 +-
 docs/chapter_6_ko.html             |   4 +-
 docs/ferris.webp                   | Bin 0 -> 5870 bytes
 docs/ferris_lofi.webp              | Bin 0 -> 9988 bytes
 docs/tour.css                      |   1 +
 frontend/lessons/ko/chapter_2.yaml | 276 ++++++++++++++++++++++++++++-
 21 files changed, 677 insertions(+), 55 deletions(-)
 create mode 100644 docs/30_ko.html
 create mode 100644 docs/32_ko.html
 create mode 100644 docs/34_ko.html
 create mode 100644 docs/ferris.webp
 create mode 100644 docs/ferris_lofi.webp

diff --git a/docs/03_ko.html b/docs/03_ko.html
index c4f7036..5c5000d 100644
--- a/docs/03_ko.html
+++ b/docs/03_ko.html
@@ -38,7 +38,9 @@
             <h1>Rust 언어 설치</h1>
             <p><a href="https://rustup.rs/" target="_blank" rel="noopener">https://rustup.rs/</a></p>
 <p><a href="https://visualstudio.microsoft.com/ko/visual-cpp-build-tools/" target="_blank" rel="noopener"><code>Microsoft C++ Build Tools</code></a></p>
-<p><a href="https://www.rust-lang.org/tools/install" target="_blank" rel="noopener">@Link</a></p>
+<p><a href="https://www.rust-lang.org/tools/install" target="_blank" rel="noopener">@Rust lang Link</a></p>
+<p><a href="https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-msvc/rustup-init.exe" target="_blank" rel="noopener">@DOWNLOAD RUSTUP-INIT.EXE (64-BIT)</a></p>
+<p><a href="https://static.rust-lang.org/rustup/dist/i686-pc-windows-msvc/rustup-init.exe" target="_blank" rel="noopener">@DOWNLOAD RUSTUP-INIT.EXE (32-BIT)</a></p>
 <pre><code class="bash">curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh</code></pre>
 <div align="center">
 <p>
diff --git a/docs/21_ko.html b/docs/21_ko.html
index e466078..356a9b1 100644
--- a/docs/21_ko.html
+++ b/docs/21_ko.html
@@ -35,14 +35,29 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>Hey</h1>
-            <p>CSW</p>
+            <h1>소유권과 빌림 검사기</h1>
+            <p>Rust의 메모리 관리가 소유권, 빌림, 그리고 수명의 개념에 기반한다는 것을 설명합니다.</p>
+<p>Rust의 시스템은 가비지 컬렉터가 필요 없이 컴파일 시간에 메모리 관리 문제를 방지하도록 설계되어 있다는 것을 강조합니다.</p>
+<ol>
+<li>Rust의 메모리 관리 방식 소개:<ol>
+<li>Rust는 소유권, 빌림, 그리고 수명을 기반으로 한 메모리 관리 시스템을 도입하여 메모리 안전성을 보장합니다.</li>
+<li>이 시스템은 컴파일 시간에 메모리 관리 문제를 확인하고 방지하므로, 런타임 시 메모리 누수나 <code>세그멘테이션 폴트</code>와 같은 문제가 발생하지 않습니다.</li></ol></li>
+<li>가비지 컬렉터 없이 메모리 관리 문제 방지:<ol>
+<li>Rust의 메모리 관리 시스템은 가비지 컬렉터가 필요 없이 메모리를 안전하게 관리할 수 있게 해줍니다.</li>
+<li>소유권과 빌림 규칙을 통해 컴파일러가 메모리 사용에 대한 제약 조건을 검사하고, 문제가 있는 경우 컴파일 오류를 발생시킵니다.</li>
+<li>이를 통해 런타임 시 메모리 관리 문제가 발생할 여지가 없도록 합니다.</li></ol></li>
+</ol>
+<p>이렇게 Rust는 소유권, 빌림, 그리고 수명을 기반으로 하는 메모리 관리 시스템을 통해 가비지 컬렉터 없이도 메모리 안전성을 보장하며,</p>
+<p>컴파일 시간에 메모리 관리 문제를 방지하는 방식으로 문제를 해결합니다.</p>
+<p>이 시스템은 런타임에 발생할 수 있는 메모리 관련 문제를 최소화하여 성능과 안정성을 높입니다.</p>
             <div class="bottomnav">
                 <span class="back"><a href="chapter_2_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="chapter_3_ko.html" rel="next">다음 ❯</a></span>
+                <span class="next"><a href="22_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
-            <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="300" height="100%"></center></div>
+            <div class="code">
+            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%2F*%0A%EC%9D%B4+%EC%BD%94%EB%93%9C%EC%97%90%EC%84%9C%2C+%EB%A8%BC%EC%A0%80+%22hello%22+%EA%B0%92%EC%9D%84+%EA%B0%96%EB%8A%94+%EA%B0%80%EB%B3%80+String+%EB%B3%80%EC%88%98+s%EB%A5%BC+%EC%84%A0%EC%96%B8%ED%95%A9%EB%8B%88%EB%8B%A4.%0A%0A%EA%B7%B8%EB%9F%B0+%EB%8B%A4%EC%9D%8C+%26+%EC%97%B0%EC%82%B0%EC%9E%90%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC+s%EC%97%90+%EB%8C%80%ED%95%9C+%EB%B6%88%EB%B3%80+%EC%B0%B8%EC%A1%B0+r1%EC%9D%84+%EB%A7%8C%EB%93%AD%EB%8B%88%EB%8B%A4.%0A%0Ar1%EC%9D%80+%EB%B9%8C%EB%A6%BC%28borrowing%29%EC%9D%98+%EC%98%88%EC%8B%9C%EB%A1%9C%2C+s%EC%9D%98+%EC%86%8C%EC%9C%A0%EA%B6%8C%EC%9D%84+%EA%B0%80%EC%A0%B8%EA%B0%80%EC%A7%80+%EC%95%8A%EA%B3%A0+%EA%B7%B8+%EA%B0%92%EC%9D%84+%EC%9D%BD%EC%9D%84+%EC%88%98+%EC%9E%88%EC%A7%80%EB%A7%8C+%EC%88%98%EC%A0%95%ED%95%A0+%EC%88%98%EB%8A%94+%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.%0A%0Ar1%EC%9D%98+%EA%B0%92%EC%9D%84+%EC%B6%9C%EB%A0%A5%ED%95%9C+%ED%9B%84%2C+r1%EC%9D%B4+%EC%8A%A4%EC%BD%94%ED%94%84%EB%A5%BC+%EB%B2%97%EC%96%B4%EB%82%98+%EB%8D%94+%EC%9D%B4%EC%83%81+%EB%B9%8C%EB%A0%A4%EC%A7%80%EC%A7%80+%EC%95%8A%EA%B2%8C+%EB%90%A9%EB%8B%88%EB%8B%A4.%0A%0A%EA%B7%B8%EB%9F%B0+%EB%8B%A4%EC%9D%8C+%26mut+%EC%97%B0%EC%82%B0%EC%9E%90%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC+s%EC%97%90+%EB%8C%80%ED%95%9C+%EA%B0%80%EB%B3%80+%EC%B0%B8%EC%A1%B0+r2%EB%A5%BC+%EB%A7%8C%EB%93%AD%EB%8B%88%EB%8B%A4.%0A%0Ar2%EC%9D%80+%EB%98%90+%EB%8B%A4%EB%A5%B8+%EB%B9%8C%EB%A6%BC%EC%9D%98+%EC%98%88%EC%8B%9C%EC%9E%85%EB%8B%88%EB%8B%A4.+%EC%9D%B4%EB%B2%88%EC%97%90%EB%8A%94+s%EB%A5%BC+%EA%B0%80%EB%B3%80%EC%9C%BC%EB%A1%9C+%EB%B9%8C%EB%A0%A4%EC%99%80%EC%84%9C+%EA%B0%92%EC%9D%84+%EC%88%98%EC%A0%95%ED%95%A0+%EC%88%98+%EC%9E%88%EA%B2%8C+%EB%90%A9%EB%8B%88%EB%8B%A4.%0A%0A%EC%9A%B0%EB%A6%AC%EB%8A%94+push_str%28%29+%EB%A9%94%EC%86%8C%EB%93%9C%EB%A5%BC+%ED%86%B5%ED%95%B4+r2%EB%A5%BC+%ED%86%B5%ED%95%B4+%EB%AC%B8%EC%9E%90%EC%97%B4+%22%2C+world%21%22%EB%A5%BC+s%EC%97%90+%EC%B6%94%EA%B0%80%ED%95%98%EA%B3%A0%2C+r2%EC%9D%98+%EA%B0%92%EC%9D%84+%EC%B6%9C%EB%A0%A5%ED%95%A9%EB%8B%88%EB%8B%A4.%0A%0A%EB%A7%88%EC%A7%80%EB%A7%89%EC%9C%BC%EB%A1%9C+r2%EA%B0%80+%EC%8A%A4%EC%BD%94%ED%94%84%EB%A5%BC+%EB%B2%97%EC%96%B4%EB%82%98+%EB%8D%94+%EC%9D%B4%EC%83%81+%EB%B9%8C%EB%A0%A4%EC%A7%80%EC%A7%80+%EC%95%8A%EA%B2%8C+%EB%90%98%EB%A9%B4%2C+s%EB%8A%94+%EB%8B%A4%EC%8B%9C+%EC%9E%90%EC%9C%A0%EB%A1%AD%EA%B2%8C+%EC%82%AC%EC%9A%A9%ED%95%A0+%EC%88%98+%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.%0A%0A%EC%9D%B4+%EC%BD%94%EB%93%9C+%EC%8A%A4%EB%8B%88%ED%8E%AB%EC%9D%80+Rust%EC%9D%98+%EC%86%8C%EC%9C%A0%EA%B6%8C%EA%B3%BC+%EB%B9%8C%EB%A6%BC+%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%B4+%EA%B0%80%EB%B9%84%EC%A7%80+%EC%BB%AC%EB%A0%89%ED%84%B0+%EC%97%86%EC%9D%B4+%EC%95%88%EC%A0%84%ED%95%98%EA%B3%A0+%ED%9A%A8%EC%9C%A8%EC%A0%81%EC%9D%B8+%EB%A9%94%EB%AA%A8%EB%A6%AC+%EA%B4%80%EB%A6%AC%EB%A5%BC+%EA%B0%80%EB%8A%A5%ED%95%98%EA%B2%8C+%ED%95%98%EB%8A%94+%EB%B0%A9%EC%8B%9D%EC%9D%84+%EB%B3%B4%EC%97%AC%EC%A4%8D%EB%8B%88%EB%8B%A4.%0A%0ARust%EB%8A%94+%EC%BB%B4%ED%8C%8C%EC%9D%BC+%EC%8B%9C%EA%B0%84%EC%97%90+%EC%86%8C%EC%9C%A0%EA%B6%8C%EA%B3%BC+%EB%B9%8C%EB%A6%BC+%EA%B7%9C%EC%B9%99%EC%9D%84+%EA%B0%95%EC%A0%9C%ED%95%A8%EC%9C%BC%EB%A1%9C%EC%8D%A8%0A%0A%EB%A9%94%EB%AA%A8%EB%A6%AC+%EB%88%84%EC%88%98%EB%82%98+%EC%84%B8%EA%B7%B8%EB%A9%98%ED%85%8C%EC%9D%B4%EC%85%98+%ED%8F%B4%ED%8A%B8%EC%99%80+%EA%B0%99%EC%9D%80+%EB%9F%B0%ED%83%80%EC%9E%84+%EC%98%A4%EB%A5%98%EB%A5%BC+%EB%B0%A9%EC%A7%80%ED%95%98%EB%AF%80%EB%A1%9C+Rust+%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%9D%80+%EC%95%88%EC%A0%95%EC%A0%81%EC%9D%B4%EB%A9%B4%EC%84%9C%EB%8F%84+%EB%86%92%EC%9D%80+%EC%84%B1%EB%8A%A5%EC%9D%84+%EB%B3%B4%EC%9E%A5%ED%95%A9%EB%8B%88%EB%8B%A4.%0A*%2F%0A%0Afn+main%28%29+%7B%0A++++let+mut+s+%3D+String%3A%3Afrom%28%22Hello%22%29%3B%0A%0A++++%7B%0A++++++++let+r1+%3D+%26s%3B+%2F%2F+%EB%B6%88%EB%B3%80+%EB%B9%8C%EB%A6%BC%0A++++++++println%21%28%22%7B%7D%22%2C+r1%29%3B%0A++++%7D+%2F%2F+r1%EC%9D%B4+%EC%8A%A4%EC%BD%94%ED%94%84%EB%A5%BC+%EB%B2%97%EC%96%B4%EB%82%A8%0A%0A++++let+r2+%3D+%26mut+s%3B+%2F%2F+%EA%B0%80%EB%B3%80+%EB%B9%8C%EB%A6%BC%0A++++r2.push_str%28%22%2C+world%21%22%29%3B%0A++++println%21%28%22%7B%7D%22%2C+r2%29%3B%0A%7D+%2F%2F+r2%EA%B0%80+%EC%8A%A4%EC%BD%94%ED%94%84%EB%A5%BC+%EB%B2%97%EC%96%B4%EB%82%A8%2C+s%EB%8A%94+%EB%8D%94+%EC%9D%B4%EC%83%81+%EB%B9%8C%EB%A0%A4%EC%A7%80%EC%A7%80+%EC%95%8A%EC%9D%8C%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
+            </div>
         </div>
         <!-- <script>
           document.addEventListener("DOMContentLoaded", function() {
diff --git a/docs/22_ko.html b/docs/22_ko.html
index a0da480..e6a76b6 100644
--- a/docs/22_ko.html
+++ b/docs/22_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
@@ -34,14 +35,44 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>Hey</h1>
-            <p>CSW</p>
+            <h1>소유권</h1>
+            <p><strong>Ownership</strong></p>
+<p>소유권 정의: Rust에서 각 값은 하나의 소유자를 가지며, 소유자가 범위를 벗어나면 값이 할당 해제됩니다.</p>
+<p>소유권 이전 방법을 예제를 통해 설명합니다 (예: 값을 새 변수에 할당하거나 함수에 전달할 때).</p>
+<p>값이 범위를 벗어날 때 자동으로 호출되는 drop 함수를 소개합니다.</p>
+<p>소유권 정의:</p>
+<p>Rust에서는 각 값에 대해 하나의 소유자가 존재하며, 소유자가 해당 값을 관리합니다.</p>
+<p>소유자가 범위를 벗어나면 Rust는 자동으로 해당 값의 메모리를 해제합니다.</p>
+<p>소유권 이전 예제:</p>
+<p>예제 1: 값을 새 변수에 할당할 때</p>
+<p>s1이 가리키는 값의 소유권이 s2로 이전되어 s1은 사용할 수 없습니다.</p>
+<pre><code class="rust">let s1 = String::from("hello");
+let s2 = s1;</code></pre>
+<p>예제 2: 함수에 값을 전달할 때</p>
+<p>s가 takes_ownership 함수에 전달되면서 소유권이 이전되고 함수 내에서 값의 메모리가 해제됩니다.</p>
+<pre><code class="rust">fn takes_ownership(s: String) {
+    println!("{}", s);
+}
+
+fn main() {
+    let s = String::from("hello");
+    takes_ownership(s);
+    // 여기에서 s는 사용할 수 없습니다.
+}</code></pre>
+<p><code>drop</code> 함수 소개:</p>
+<p>Rust에서는 값이 범위를 벗어날 때 자동으로 drop 함수가 호출됩니다.</p>
+<p>drop 함수는 메모리를 안전하게 해제하는 역할을 합니다.</p>
+<p>이를 통해 개발자가 직접 메모리 해제를 관리할 필요가 없습니다.</p>
+<p>소유권, 소유권 이전 방법, 그리고 drop 함수를 통해 Rust는 메모리 관리를 단순화하고 안전하게 할 수 있습니다.</p>
+<p>이로 인해 메모리 누수나 세그멘테이션 폴트와 같은 문제를 효과적으로 방지할 수 있습니다.</p>
             <div class="bottomnav">
-                <span class="back"><a href="chapter_3_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="chapter_4_ko.html" rel="next">다음 ❯</a></span>
+                <span class="back"><a href="21_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="23_ko.html" rel="next">다음 ❯</a></span>
+            </div>
             </div>
+            <div class="code">
+            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%2F%2F+%60drop%60+%ED%95%A8%EC%88%98+%EC%86%8C%EA%B0%9C%3A%0A%2F%2F+Rust%EC%97%90%EC%84%9C%EB%8A%94+%EA%B0%92%EC%9D%B4+%EB%B2%94%EC%9C%84%EB%A5%BC+%EB%B2%97%EC%96%B4%EB%82%A0+%EB%95%8C+%EC%9E%90%EB%8F%99%EC%9C%BC%EB%A1%9C+drop+%ED%95%A8%EC%88%98%EA%B0%80+%ED%98%B8%EC%B6%9C%EB%90%A9%EB%8B%88%EB%8B%A4.%0A%2F%2F+drop+%ED%95%A8%EC%88%98%EB%8A%94+%EB%A9%94%EB%AA%A8%EB%A6%AC%EB%A5%BC+%EC%95%88%EC%A0%84%ED%95%98%EA%B2%8C+%ED%95%B4%EC%A0%9C%ED%95%98%EB%8A%94+%EC%97%AD%ED%95%A0%EC%9D%84+%ED%95%A9%EB%8B%88%EB%8B%A4.%0A%2F%2F+%EC%9D%B4%EB%A5%BC+%ED%86%B5%ED%95%B4+%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80+%EC%A7%81%EC%A0%91+%EB%A9%94%EB%AA%A8%EB%A6%AC+%ED%95%B4%EC%A0%9C%EB%A5%BC+%EA%B4%80%EB%A6%AC%ED%95%A0+%ED%95%84%EC%9A%94%EA%B0%80+%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.%0Astruct+CustomStruct+%7B%0A++++data%3A+String%2C%0A%7D%0A%0Aimpl+Drop+for+CustomStruct+%7B%0A++++fn+drop%28%26mut+self%29+%7B%0A++++++++println%21%28%22Dropping+CustomStruct+with+data%3A+%7B%7D%22%2C+self.data%29%3B%0A++++%7D%0A%7D%0A%0Afn+main%28%29+%7B%0A++++let+custom+%3D+CustomStruct+%7B%0A++++++++data%3A+String%3A%3Afrom%28%22hello%22%29%2C%0A++++%7D%3B%0A++++println%21%28%22Created+CustomStruct+with+data%3A+%7B%7D%22%2C+custom.data%29%3B%0A++++%2F%2F+custom%EC%9D%80+%EC%9D%B4+%EC%8A%A4%EC%BD%94%ED%94%84%EB%A5%BC+%EB%B2%97%EC%96%B4%EB%82%98%EB%A9%B4%EC%84%9C+drop+%ED%95%A8%EC%88%98%EA%B0%80+%ED%98%B8%EC%B6%9C%EB%90%98%EC%96%B4+%EB%A9%94%EB%AA%A8%EB%A6%AC%EA%B0%80+%EC%95%88%EC%A0%84%ED%95%98%EA%B2%8C+%ED%95%B4%EC%A0%9C%EB%90%A9%EB%8B%88%EB%8B%A4.%0A%7D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
             </div>
-            <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="300" height="100%"></center></div>
         </div>
         <!-- <script>
           document.addEventListener("DOMContentLoaded", function() {
diff --git a/docs/23_ko.html b/docs/23_ko.html
index 64a27c8..a873b44 100644
--- a/docs/23_ko.html
+++ b/docs/23_ko.html
@@ -35,14 +35,14 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>Hey</h1>
-            <p>CSW</p>
+            <h1>빌림</h1>
+            <p><strong>Borrowing</strong></p>
             <div class="bottomnav">
-                <span class="back"><a href="chapter_3_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="chapter_4_ko.html" rel="next">다음 ❯</a></span>
+                <span class="back"><a href="22_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="24_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
-            <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="300" height="100%"></center></div>
+            <div class="code"><center><img src="/ajou.webp" alt="Rust Tutorial" width="300" height="100%"></center></div>
         </div>
         <!-- <script>
           document.addEventListener("DOMContentLoaded", function() {
diff --git a/docs/24_ko.html b/docs/24_ko.html
index 26d3703..d53a269 100644
--- a/docs/24_ko.html
+++ b/docs/24_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
@@ -34,14 +35,45 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>Hey</h1>
-            <p>CSW</p>
+            <h1>수명</h1>
+            <p><strong>Lifetime</strong></p>
+<p>참조와 그들이 빌리는 값 사이의 관계를 나타내기 위해 수명이 사용됩니다.</p>
+<p>여기선 함수 시그니처와 구조체에서 수명을 어떻게 표시하는지 보여줍니다.</p>
+<p>수명은 주로 빌림 검사기가 메모리 안전성을 보장하기 위한 도구로 사용되며, 컴파일러에 의해 자주 자동으로 추론된다는 것을 강조합니다.</p>
+<p>수명이란 무엇인가:</p>
+<p>수명은 참조와 빌려진 값 사이의 관계를 표현하는데 사용됩니다.</p>
+<p>수명은 참조가 유효한 기간 동안 해당 값이 메모리에서 해제되지 않도록 보장합니다.</p>
+<p>함수 시그니처와 구조체에서의 수명 표시:</p>
+<p>예제 1: 함수 시그니처에서 수명 표시</p>
+<pre><code class="rust">// 여기에서 사용된 'a는 수명을 나타내는 표시입니다.
+// 이를 통해 입력과 출력의 참조들이 동일한 수명을 가지도록 합니다.
+fn longest<'a>(s1: &'a str, s2: &'a str) -> &'a str {
+    if s1.len() > s2.len() {
+        s1
+    } else {
+        s2
+    }
+}</code></pre>
+<p>예제 2: 구조체에서 수명 표시</p>
+<pre><code class="rust">// Person 구조체는 이름을 문자열 슬라이스로 저장합니다.
+// 여기에서 사용된 'a는 구조체의 이름 필드가 참조하는 문자열 슬라이스의 수명을 나타냅니다.
+struct Person<'a> {
+    name: &'a str,
+}</code></pre>
+<p>수명과 빌림 검사기:</p>
+<p>수명은 빌림 검사기가 참조가 유효한 기간 동안 값이 메모리에서 해제되지 않도록 보장하는 데 사용됩니다.</p>
+<p>대부분의 경우, 컴파일러는 수명을 자동으로 추론할 수 있습니다.</p>
+<p>그러나 복잡한 상황에서는 개발자가 수명을 명시해야 할 수도 있습니다.</p>
+<p>수명을 이해하고 올바르게 사용함으로써 Rust의 빌림 검사기가 메모리 관리를 안전하게 수행할 수 있도록 지원할 수 있습니다.</p>
+<p>이는 Rust 프로그램의 성능과 안정성에 크게 기여합니다.</p>
             <div class="bottomnav">
-                <span class="back"><a href="chapter_4_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="chapter_5_ko.html" rel="next">다음 ❯</a></span>
+                <span class="back"><a href="23_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="25_ko.html" rel="next">다음 ❯</a></span>
+            </div>
             </div>
+            <div class="code">
+            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%2F%2F+%EA%B5%AC%EC%A1%B0%EC%B2%B4+%EC%A0%95%EC%9D%98%0A%2F%2F+%EB%91%90+%EA%B0%9C%EC%9D%98+%EC%B0%B8%EC%A1%B0%EB%A5%BC+%EA%B0%80%EC%A7%80%EB%8A%94+%EA%B5%AC%EC%A1%B0%EC%B2%B4%EB%A5%BC+%EB%A7%8C%EB%93%AD%EB%8B%88%EB%8B%A4.+%EA%B0%81+%EC%B0%B8%EC%A1%B0%EB%8A%94+%EB%8B%A4%EB%A5%B8+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84%EC%9D%84+%EA%B0%80%EC%A7%91%EB%8B%88%EB%8B%A4.%0Astruct+TwoRefs%3C%27a%2C+%27b%3E+%7B%0A++++ref_a%3A+%26%27a+str%2C%0A++++ref_b%3A+%26%27b+str%2C%0A%7D%0A%0A%2F%2F+%ED%95%A8%EC%88%98+%EC%A0%95%EC%9D%98%0A%2F%2F+%EB%91%90+%EA%B0%9C%EC%9D%98+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84%EC%9D%84+%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%EC%9E%85%EB%8B%88%EB%8B%A4.%0A%2F%2F+%EC%9E%85%EB%A0%A5+%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%98+%EA%B8%B8%EC%9D%B4%EC%97%90+%EB%94%B0%EB%9D%BC+%EB%91%90+%EB%AC%B8%EC%9E%90%EC%97%B4+%EC%A4%91+%ED%95%98%EB%82%98%EB%A5%BC+%EB%B0%98%ED%99%98%ED%95%A9%EB%8B%88%EB%8B%A4.%0A%2F%2F+%27b%3A+%27a%EB%A1%9C+%EB%91%90+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84+%EA%B0%84%EC%9D%98+%EA%B4%80%EA%B3%84%EB%A5%BC+%EC%84%A4%EC%A0%95%ED%95%B4%EC%84%9C%0A%2F%2F+%27b+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84%EC%9D%80+%27a+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84%EB%B3%B4%EB%8B%A4+%EA%B8%B8%EA%B1%B0%EB%82%98+%EA%B0%99%EC%95%84%EC%95%BC+%ED%95%A9%EB%8B%88%EB%8B%A4.%0Afn+choose_str%3C%27a%2C+%27b%3A+%27a%3E%28str_a%3A+%26%27a+str%2C+str_b%3A+%26%27b+str%29+-%3E+%26%27a+str+%7B%0A++++if+str_a.len%28%29+%3E+str_b.len%28%29+%7B%0A++++++++str_a%0A++++%7D+else+%7B%0A++++++++str_b%0A++++%7D%0A%7D%0A%0Afn+main%28%29+%7B%0A++++%2F%2F+%EB%AC%B8%EC%9E%90%EC%97%B4+%EC%83%9D%EC%84%B1%0A++++let+a+%3D+String%3A%3Afrom%28%22%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94.%22%29%3B%0A++++let+b+%3D+String%3A%3Afrom%28%22%EB%B0%98%EA%B0%91%EC%8A%B5%EB%8B%88%EB%8B%A4.%22%29%3B%0A%0A++++%7B%0A++++++++%2F%2F+%EB%91%90+%EA%B0%9C%EC%9D%98+%EC%84%9C%EB%A1%9C+%EB%8B%A4%EB%A5%B8+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84%EC%9D%84+%EA%B0%80%EC%A7%84+%EA%B5%AC%EC%A1%B0%EC%B2%B4+%EC%83%9D%EC%84%B1%0A++++++++let+c+%3D+%22%EC%97%AC%EA%B8%B0%EC%84%9C+%EB%A7%8C%EB%82%98%EC%84%9C+%EB%B0%98%EA%B0%80%EC%9B%8C%EC%9A%94%21%22%3B%0A++++++++let+two_refs+%3D+TwoRefs+%7B%0A++++++++++++ref_a%3A+%26a%2C%0A++++++++++++ref_b%3A+%26c%2C%0A++++++++%7D%3B%0A%0A++++++++%2F%2F+%ED%95%A8%EC%88%98+%ED%98%B8%EC%B6%9C%0A++++++++let+longest_str+%3D+choose_str%28two_refs.ref_a%2C+two_refs.ref_b%29%3B%0A++++++++println%21%28%22%EA%B0%80%EC%9E%A5+%EA%B8%B4+%EB%AC%B8%EC%9E%90%EC%97%B4%3A+%7B%7D%22%2C+longest_str%29%3B%0A++++%7D%0A%0A++++%2F%2F+%EC%97%AC%EA%B8%B0%EC%84%9C+two_refs%EB%8A%94+%EC%82%AC%EB%9D%BC%EC%A7%80%EA%B3%A0%2C+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84+%27a%EC%99%80+%27b%EB%8A%94+%EB%8D%94+%EC%9D%B4%EC%83%81+%EC%A1%B4%EC%9E%AC%ED%95%98%EC%A7%80+%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4.%0A%7D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
             </div>
-            <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="300" height="100%"></center></div>
         </div>
         <!-- <script>
           document.addEventListener("DOMContentLoaded", function() {
diff --git a/docs/25_ko.html b/docs/25_ko.html
index 0e875ce..0717b8e 100644
--- a/docs/25_ko.html
+++ b/docs/25_ko.html
@@ -35,14 +35,33 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>Hey</h1>
-            <p>CSW</p>
+            <h1>빌림</h1>
+            <p><strong>Borrow checker</strong></p>
+<p>빌림 검사기가 컴파일 시간에 빌림 규칙을 적용하여 메모리 안전성을 보장하는 방법을 설명합니다.</p>
+<p>빌림 검사기는 코드 내 참조의 수명을 분석함으로써 작동한다는 것을 설명합니다.</p>
+<p>빌림 검사기가 컴파일 시간에 메모리 관리 오류를 포착하는 방법을 예제를 통해 보여줍니다.</p>
+<p>빌림 검사기가 컴파일 시간에 빌림 규칙을 적용하는 방법 설명:</p>
+<p>Rust의 빌림 검사기는 컴파일 시간에 참조 규칙을 적용하여 메모리 안전성을 보장합니다.</p>
+<p>이를 통해 런타임에 발생할 수 있는 메모리 누수, 데이터 경쟁 등의 문제를 사전에 방지할 수 있습니다.</p>
+<p>빌림 검사기가 코드 내 참조의 수명을 분석하는 방법 설명:</p>
+<p>빌림 검사기는 함수, 구조체 및 코드 내에서 참조의 수명을 추적하고 분석합니다.</p>
+<p>이를 통해, 참조의 수명이 끝난 이후에도 사용되거나, 다른 참조가 유효하지 않은 상태에서 접근하는 것을 방지합니다.</p>
+<p>빌림 검사기가 컴파일 시간에 메모리 관리 오류를 포착하는 예제:</p>
+<pre><code class="rust">fn main() {
+    let mut x = 5;
+    let y = &mut x;
+    let z = &x;
+    println!("x: {}, y: {}, z: {}", x, y, z);
+}</code></pre>
+<ul>
+<li>위 코드는 컴파일 시간에 오류를 발생시킵니다. - 빌림 검사기는 x가 변경 가능한 참조와 불변 참조가 동시에 존재하는 것을 감지합니다. - 빌림 검사기의 오류 메시지를 통해 개발자는 문제가 발생한 원인을 파악하고 코드를 수정할 수 있습니다.</li>
+</ul>
             <div class="bottomnav">
-                <span class="back"><a href="chapter_4_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="chapter_5_ko.html" rel="next">다음 ❯</a></span>
+                <span class="back"><a href="24_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="26_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
-            <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="300" height="100%"></center></div>
+            <div class="code"><center><img src="/ajou.webp" alt="Rust Tutorial" width="300" height="100%"></center></div>
         </div>
         <!-- <script>
           document.addEventListener("DOMContentLoaded", function() {
diff --git a/docs/26_ko.html b/docs/26_ko.html
index 86f5aee..7c6cbef 100644
--- a/docs/26_ko.html
+++ b/docs/26_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
@@ -34,14 +35,14 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>Hey</h1>
-            <p>CSW</p>
+            <h1>소유권</h1>
+            <p>gff</p>
             <div class="bottomnav">
-                <span class="back"><a href="chapter_5_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="chapter_6_ko.html" rel="next">다음 ❯</a></span>
+                <span class="back"><a href="25_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="chapter_3_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
-            <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="300" height="100%"></center></div>
+            <div class="code"><center><img src="/ajou.webp" alt="Rust Tutorial" width="300" height="100%"></center></div>
         </div>
         <!-- <script>
           document.addEventListener("DOMContentLoaded", function() {
diff --git a/docs/28_ko.html b/docs/28_ko.html
index 4fa59b1..64a27c8 100644
--- a/docs/28_ko.html
+++ b/docs/28_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
@@ -37,8 +38,8 @@
             <h1>Hey</h1>
             <p>CSW</p>
             <div class="bottomnav">
-                <span class="back"><a href="chapter_6_ko.html" rel="prev">❮ 이전</a></span>
-                
+                <span class="back"><a href="chapter_3_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="chapter_4_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
             <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="300" height="100%"></center></div>
diff --git a/docs/30_ko.html b/docs/30_ko.html
new file mode 100644
index 0000000..0e875ce
--- /dev/null
+++ b/docs/30_ko.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+    <html lang="ko">
+    <head>
+        <title>Rust 튜토리얼 - 자기주도프로젝트</title>
+
+        <meta charset="UTF-8">
+        <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
+        <meta content="utf-8" http-equiv="encoding">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
+        <meta name="keywords" content="Rust, Programming, Learning">
+        <meta name="description" content="Rust tutorial website based on tour_of_rust">
+        <meta name="theme-color" content="#ff6801"/>
+        <meta http-equiv="Cache-Control" content="max-age=3600">
+        
+        <link rel="stylesheet" href="tour.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/night-owl.min.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.1/css/all.min.css">
+        
+        <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
+        <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
+        <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
+        <link rel="/manifest" href="./site.webmanifest">
+        
+        <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
+        <script src="./tour.js" defer></script>
+        <!-- <script>hljs.highlightAll();</script> -->
+        <script src="./highlight.badge.min.js"></script>
+    </head>
+    <body>
+        <div class="tour">
+            <div class="header">
+                <span class="title"><a href="index.html">Rust 튜토리얼</a></span>
+                <span class="nav">
+                <span class="toc"><a href="TOC_ko.html">목차</a></span>
+            </div>
+            <div class="page">
+            <h1>Hey</h1>
+            <p>CSW</p>
+            <div class="bottomnav">
+                <span class="back"><a href="chapter_4_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="chapter_5_ko.html" rel="next">다음 ❯</a></span>
+            </div>
+            </div>
+            <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="300" height="100%"></center></div>
+        </div>
+        <!-- <script>
+          document.addEventListener("DOMContentLoaded", function() {
+            // Select the widget's text element using its XPath
+            const xpath = '/html/body/main/div/div/div[1]/div[1]/div/button[1]/div';
+            const widgetText = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
+
+            // Change the text content of the element
+            widgetText.textContent = "New Text";
+          });
+        </script> -->
+
+        <script>
+        var pres = document.querySelectorAll("pre>code");
+        for (var i = 0; i < pres.length; i++) {
+            hljs.highlightElement(pres[i]);
+        }
+        var options = {
+            loadDelay: 0,
+            copyIconClass: "far fa-clipboard",
+            checkIconClass: "fa fa-check text-success",
+            blogURL: "http://rust-study.ajousw.kr/"
+        };
+        window.highlightJsBadge(options);
+        </script>
+
+        <footer>
+          <p>아주대학교 Software Tool Time - Rust 튜토리얼 (Basic)</p>
+        </footer>
+    </body>
+</html>
\ No newline at end of file
diff --git a/docs/32_ko.html b/docs/32_ko.html
new file mode 100644
index 0000000..3dbc0b4
--- /dev/null
+++ b/docs/32_ko.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+    <html lang="ko">
+    <head>
+        <title>Rust 튜토리얼 - 자기주도프로젝트</title>
+
+        <meta charset="UTF-8">
+        <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
+        <meta content="utf-8" http-equiv="encoding">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
+        <meta name="keywords" content="Rust, Programming, Learning">
+        <meta name="description" content="Rust tutorial website based on tour_of_rust">
+        <meta name="theme-color" content="#ff6801"/>
+        <meta http-equiv="Cache-Control" content="max-age=3600">
+        
+        <link rel="stylesheet" href="tour.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/night-owl.min.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.1/css/all.min.css">
+        
+        <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
+        <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
+        <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
+        <link rel="/manifest" href="./site.webmanifest">
+        
+        <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
+        <script src="./tour.js" defer></script>
+        <!-- <script>hljs.highlightAll();</script> -->
+        <script src="./highlight.badge.min.js"></script>
+    </head>
+    <body>
+        <div class="tour">
+            <div class="header">
+                <span class="title"><a href="index.html">Rust 튜토리얼</a></span>
+                <span class="nav">
+                <span class="toc"><a href="TOC_ko.html">목차</a></span>
+            </div>
+            <div class="page">
+            <h1>Hey</h1>
+            <p>CSW</p>
+            <div class="bottomnav">
+                <span class="back"><a href="chapter_5_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="chapter_6_ko.html" rel="next">다음 ❯</a></span>
+            </div>
+            </div>
+            <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="300" height="100%"></center></div>
+        </div>
+        <!-- <script>
+          document.addEventListener("DOMContentLoaded", function() {
+            // Select the widget's text element using its XPath
+            const xpath = '/html/body/main/div/div/div[1]/div[1]/div/button[1]/div';
+            const widgetText = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
+
+            // Change the text content of the element
+            widgetText.textContent = "New Text";
+          });
+        </script> -->
+
+        <script>
+        var pres = document.querySelectorAll("pre>code");
+        for (var i = 0; i < pres.length; i++) {
+            hljs.highlightElement(pres[i]);
+        }
+        var options = {
+            loadDelay: 0,
+            copyIconClass: "far fa-clipboard",
+            checkIconClass: "fa fa-check text-success",
+            blogURL: "http://rust-study.ajousw.kr/"
+        };
+        window.highlightJsBadge(options);
+        </script>
+
+        <footer>
+          <p>아주대학교 Software Tool Time - Rust 튜토리얼 (Basic)</p>
+        </footer>
+    </body>
+</html>
\ No newline at end of file
diff --git a/docs/34_ko.html b/docs/34_ko.html
new file mode 100644
index 0000000..b3edb7e
--- /dev/null
+++ b/docs/34_ko.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+    <html lang="ko">
+    <head>
+        <title>Rust 튜토리얼 - 자기주도프로젝트</title>
+
+        <meta charset="UTF-8">
+        <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
+        <meta content="utf-8" http-equiv="encoding">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
+        <meta name="keywords" content="Rust, Programming, Learning">
+        <meta name="description" content="Rust tutorial website based on tour_of_rust">
+        <meta name="theme-color" content="#ff6801"/>
+        <meta http-equiv="Cache-Control" content="max-age=3600">
+        
+        <link rel="stylesheet" href="tour.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/night-owl.min.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.1/css/all.min.css">
+        
+        <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
+        <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
+        <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
+        <link rel="/manifest" href="./site.webmanifest">
+        
+        <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
+        <script src="./tour.js" defer></script>
+        <!-- <script>hljs.highlightAll();</script> -->
+        <script src="./highlight.badge.min.js"></script>
+    </head>
+    <body>
+        <div class="tour">
+            <div class="header">
+                <span class="title"><a href="index.html">Rust 튜토리얼</a></span>
+                <span class="nav">
+                <span class="toc"><a href="TOC_ko.html">목차</a></span>
+            </div>
+            <div class="page">
+            <h1>Hey</h1>
+            <p>CSW</p>
+            <div class="bottomnav">
+                <span class="back"><a href="chapter_6_ko.html" rel="prev">❮ 이전</a></span>
+                
+            </div>
+            </div>
+            <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="300" height="100%"></center></div>
+        </div>
+        <!-- <script>
+          document.addEventListener("DOMContentLoaded", function() {
+            // Select the widget's text element using its XPath
+            const xpath = '/html/body/main/div/div/div[1]/div[1]/div/button[1]/div';
+            const widgetText = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
+
+            // Change the text content of the element
+            widgetText.textContent = "New Text";
+          });
+        </script> -->
+
+        <script>
+        var pres = document.querySelectorAll("pre>code");
+        for (var i = 0; i < pres.length; i++) {
+            hljs.highlightElement(pres[i]);
+        }
+        var options = {
+            loadDelay: 0,
+            copyIconClass: "far fa-clipboard",
+            checkIconClass: "fa fa-check text-success",
+            blogURL: "http://rust-study.ajousw.kr/"
+        };
+        window.highlightJsBadge(options);
+        </script>
+
+        <footer>
+          <p>아주대학교 Software Tool Time - Rust 튜토리얼 (Basic)</p>
+        </footer>
+    </body>
+</html>
\ No newline at end of file
diff --git a/docs/TOC_ko.html b/docs/TOC_ko.html
index c0e42be..2735a58 100644
--- a/docs/TOC_ko.html
+++ b/docs/TOC_ko.html
@@ -58,15 +58,20 @@
 <li><a href="18_ko.html">Error handling</a></li>
 <li><a href="19_ko.html">Chapter 1 - 마무리</a></li>
 </ul><h3><a href="chapter_2_ko.html">Chapter 2 - Ownership</a></h3><ul>
-<li><a href="21_ko.html">Hey</a></li>
+<li><a href="21_ko.html">소유권과 빌림 검사기</a></li>
+<li><a href="22_ko.html">소유권</a></li>
+<li><a href="23_ko.html">빌림</a></li>
+<li><a href="24_ko.html">수명</a></li>
+<li><a href="25_ko.html">빌림</a></li>
+<li><a href="26_ko.html">소유권</a></li>
 </ul><h3><a href="chapter_3_ko.html">Chapter 3 - Generic, Trait</a></h3><ul>
-<li><a href="23_ko.html">Hey</a></li>
+<li><a href="28_ko.html">Hey</a></li>
 </ul><h3><a href="chapter_4_ko.html">Chapter 4 - Advanced</a></h3><ul>
-<li><a href="25_ko.html">Hey</a></li>
+<li><a href="30_ko.html">Hey</a></li>
 </ul><h3><a href="chapter_5_ko.html">Chapter 5 - Module</a></h3><ul>
-<li><a href="27_ko.html">Hey</a></li>
+<li><a href="32_ko.html">Hey</a></li>
 </ul><h3><a href="chapter_6_ko.html">Chapter 6 - Web Framework</a></h3><ul>
-<li><a href="29_ko.html">Hey</a></li>
+<li><a href="34_ko.html">Hey</a></li>
             </ul>
             </div>
         </div>
diff --git a/docs/chapter_2_ko.html b/docs/chapter_2_ko.html
index fa1925c..b410426 100644
--- a/docs/chapter_2_ko.html
+++ b/docs/chapter_2_ko.html
@@ -36,13 +36,32 @@
             </div>
             <div class="page">
             <h1>Chapter 2 - Ownership</h1>
-            <p>소유권, 빌리기, borrow checker</p>
+            <div align="center"> <p>
+    <img src="https://user-images.githubusercontent.com/2356749/226180667-0a6f5363-ad80-4c35-84f5-fb4341484e0f.png">
+</p> </div>
+<p>메모리 관리 문제 소개:</p>
+<p>수동 메모리 관리가 메모리 누수나 세그멘테이션 폴트와 같은 문제를 초래할 수 있는 방법을 설명합니다. 가비지 컬렉터 개념과 그 단점(예: 성능 오버헤드)을 소개합니다.</p>
+<ul>
+<li><p>수동 메모리 관리의 문제점 설명:</p></li>
+<li><p>수동 메모리 관리에서 개발자는 메모리 할당 및 해제를 직접 관리해야 합니다.</p></li>
+<li><p>메모리를 적절하게 해제하지 않으면 메모리 누수가 발생하고, 이미 해제된 메모리에 접근하려고 하면 세그멘테이션 폴트가 발생할 수 있습니다.</p></li>
+<li><p>이러한 문제는 프로그램의 안정성과 성능에 심각한 영향을 미칩니다.</p></li>
+<li><p>가비지 컬렉터 소개:</p></li>
+<li><p>가비지 컬렉터는 메모리 관리를 자동화하여 개발자가 메모리 할당 및 해제를 신경 쓰지 않아도 되게 하는 기술입니다.</p></li>
+<li><p>사용하지 않는 메모리를 자동으로 회수하여 메모리 누수를 방지할 수 있습니다.</p></li>
+<li><p>가비지 컬렉터의 단점:</p></li>
+<li><p>가비지 컬렉터의 주요 단점은 성능 오버헤드입니다.</p></li>
+<li><p>가비지 컬렉터가 메모리를 추적하고 회수하는 과정에서 시스템 리소스가 소모됩니다.</p></li>
+<li><p>가비지 컬렉션 동작 중에는 프로그램 실행이 일시 중단되거나 느려질 수 있어, 실시간 처리가 중요한 시스템에서는 문제가 될 수 있습니다.</p></li>
+</ul>
+<p>이러한 문제들에 대한 해결책으로 Rust는 소유권, 빌림, 그리고 수명을 기반으로 한 메모리 관리 시스템을 도입하였습니다.
+이를 통해 컴파일 시간에 메모리 안전성을 보장하며, 가비지 컬렉터의 성능 오버헤드를 피할 수 있습니다.</p>
             <div class="bottomnav">
                 <span class="back"><a href="19_ko.html" rel="prev">❮ 이전</a></span>
                 <span class="next"><a href="21_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
-            <div class="code"><center><img src="/ajou.webp" alt="Rust Tutorial" width="300" height="100%"></center></div>
+            <div class="code"><center><img src="/ferris.webp" alt="Rust Tutorial" width="300" height="100%"></center></div>
         </div>
         <!-- <script>
           document.addEventListener("DOMContentLoaded", function() {
diff --git a/docs/chapter_3_ko.html b/docs/chapter_3_ko.html
index 986ef15..a6a8444 100644
--- a/docs/chapter_3_ko.html
+++ b/docs/chapter_3_ko.html
@@ -38,8 +38,8 @@
             <h1>Chapter 3 - Generic, Trait</h1>
             <p>OOP</p>
             <div class="bottomnav">
-                <span class="back"><a href="21_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="23_ko.html" rel="next">다음 ❯</a></span>
+                <span class="back"><a href="26_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="28_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
             <div class="code"><center><img src="/ajou.webp" alt="Rust Tutorial" width="300" height="100%"></center></div>
diff --git a/docs/chapter_4_ko.html b/docs/chapter_4_ko.html
index f447cf3..8cda647 100644
--- a/docs/chapter_4_ko.html
+++ b/docs/chapter_4_ko.html
@@ -38,8 +38,8 @@
             <h1>Chapter 4 - Advanced</h1>
             <p>Concurrency, Macro, Unsafe</p>
             <div class="bottomnav">
-                <span class="back"><a href="23_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="25_ko.html" rel="next">다음 ❯</a></span>
+                <span class="back"><a href="28_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="30_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
             <div class="code"><center><img src="/ajou.webp" alt="Rust Tutorial" width="300" height="100%"></center></div>
diff --git a/docs/chapter_5_ko.html b/docs/chapter_5_ko.html
index 6ee0670..d90356b 100644
--- a/docs/chapter_5_ko.html
+++ b/docs/chapter_5_ko.html
@@ -39,8 +39,8 @@
             <p>모듈 사용</p>
 <p>간단한 모듈 제작 및 업로드</p>
             <div class="bottomnav">
-                <span class="back"><a href="25_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="27_ko.html" rel="next">다음 ❯</a></span>
+                <span class="back"><a href="30_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="32_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
             <div class="code"><center><img src="/ajou.webp" alt="Rust Tutorial" width="300" height="100%"></center></div>
diff --git a/docs/chapter_6_ko.html b/docs/chapter_6_ko.html
index 48ccd88..abf54ed 100644
--- a/docs/chapter_6_ko.html
+++ b/docs/chapter_6_ko.html
@@ -39,8 +39,8 @@
             <p>웹 프레임워크 actix-rs 소개</p>
 <p>간단 카카오톡 챗봇 제작</p>
             <div class="bottomnav">
-                <span class="back"><a href="27_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="29_ko.html" rel="next">다음 ❯</a></span>
+                <span class="back"><a href="32_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="34_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
             <div class="code"><center><img src="/ajou.webp" alt="Rust Tutorial" width="300" height="100%"></center></div>
diff --git a/docs/ferris.webp b/docs/ferris.webp
new file mode 100644
index 0000000000000000000000000000000000000000..7eaa72791c67e2ebd2e2722b464398d15ac78e6f
GIT binary patch
literal 5870
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
BD6aqj

literal 0
HcmV?d00001

diff --git a/docs/ferris_lofi.webp b/docs/ferris_lofi.webp
new file mode 100644
index 0000000000000000000000000000000000000000..2fa6b310bc9292a3c43339d84857d461545f6fd1
GIT binary patch
literal 9988
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

literal 0
HcmV?d00001

diff --git a/docs/tour.css b/docs/tour.css
index b265057..78f8133 100644
--- a/docs/tour.css
+++ b/docs/tour.css
@@ -341,6 +341,7 @@ body.welcome-cover {
   text-decoration: underline;
 }
 
+ol,
 ul {
   font-size: 22px;
   line-height: 36px;
diff --git a/frontend/lessons/ko/chapter_2.yaml b/frontend/lessons/ko/chapter_2.yaml
index 4efdebc..1f13d73 100644
--- a/frontend/lessons/ko/chapter_2.yaml
+++ b/frontend/lessons/ko/chapter_2.yaml
@@ -1,10 +1,278 @@
 - title: Chapter 2 - Ownership
+  source: >-
+    /ferris.webp
+  content_markdown: >
+    <div align="center">
+    <p>
+        <img src="https://user-images.githubusercontent.com/2356749/226180667-0a6f5363-ad80-4c35-84f5-fb4341484e0f.png">
+    </p>
+    </div>
+
+
+    메모리 관리 문제 소개:
+
+
+    수동 메모리 관리가 메모리 누수나 세그멘테이션 폴트와 같은 문제를 초래할 수 있는 방법을 설명합니다. 가비지 컬렉터 개념과 그 단점(예: 성능 오버헤드)을 소개합니다.
+
+
+    - 수동 메모리 관리의 문제점 설명:
+
+      - 수동 메모리 관리에서 개발자는 메모리 할당 및 해제를 직접 관리해야 합니다.
+
+      - 메모리를 적절하게 해제하지 않으면 메모리 누수가 발생하고, 이미 해제된 메모리에 접근하려고 하면 세그멘테이션 폴트가 발생할 수 있습니다.
+
+      - 이러한 문제는 프로그램의 안정성과 성능에 심각한 영향을 미칩니다.
+
+    - 가비지 컬렉터 소개:
+
+      - 가비지 컬렉터는 메모리 관리를 자동화하여 개발자가 메모리 할당 및 해제를 신경 쓰지 않아도 되게 하는 기술입니다.
+
+      - 사용하지 않는 메모리를 자동으로 회수하여 메모리 누수를 방지할 수 있습니다.
+
+    - 가비지 컬렉터의 단점:
+
+      - 가비지 컬렉터의 주요 단점은 성능 오버헤드입니다.
+
+      - 가비지 컬렉터가 메모리를 추적하고 회수하는 과정에서 시스템 리소스가 소모됩니다.
+      
+      - 가비지 컬렉션 동작 중에는 프로그램 실행이 일시 중단되거나 느려질 수 있어, 실시간 처리가 중요한 시스템에서는 문제가 될 수 있습니다.
+
+
+    이러한 문제들에 대한 해결책으로 Rust는 소유권, 빌림, 그리고 수명을 기반으로 한 메모리 관리 시스템을 도입하였습니다.
+
+    이를 통해 컴파일 시간에 메모리 안전성을 보장하며, 가비지 컬렉터의 성능 오버헤드를 피할 수 있습니다.
+- title: 소유권과 빌림 검사기
+  code: >-
+    https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%2F*%0A%EC%9D%B4+%EC%BD%94%EB%93%9C%EC%97%90%EC%84%9C%2C+%EB%A8%BC%EC%A0%80+%22hello%22+%EA%B0%92%EC%9D%84+%EA%B0%96%EB%8A%94+%EA%B0%80%EB%B3%80+String+%EB%B3%80%EC%88%98+s%EB%A5%BC+%EC%84%A0%EC%96%B8%ED%95%A9%EB%8B%88%EB%8B%A4.%0A%0A%EA%B7%B8%EB%9F%B0+%EB%8B%A4%EC%9D%8C+%26+%EC%97%B0%EC%82%B0%EC%9E%90%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC+s%EC%97%90+%EB%8C%80%ED%95%9C+%EB%B6%88%EB%B3%80+%EC%B0%B8%EC%A1%B0+r1%EC%9D%84+%EB%A7%8C%EB%93%AD%EB%8B%88%EB%8B%A4.%0A%0Ar1%EC%9D%80+%EB%B9%8C%EB%A6%BC%28borrowing%29%EC%9D%98+%EC%98%88%EC%8B%9C%EB%A1%9C%2C+s%EC%9D%98+%EC%86%8C%EC%9C%A0%EA%B6%8C%EC%9D%84+%EA%B0%80%EC%A0%B8%EA%B0%80%EC%A7%80+%EC%95%8A%EA%B3%A0+%EA%B7%B8+%EA%B0%92%EC%9D%84+%EC%9D%BD%EC%9D%84+%EC%88%98+%EC%9E%88%EC%A7%80%EB%A7%8C+%EC%88%98%EC%A0%95%ED%95%A0+%EC%88%98%EB%8A%94+%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.%0A%0Ar1%EC%9D%98+%EA%B0%92%EC%9D%84+%EC%B6%9C%EB%A0%A5%ED%95%9C+%ED%9B%84%2C+r1%EC%9D%B4+%EC%8A%A4%EC%BD%94%ED%94%84%EB%A5%BC+%EB%B2%97%EC%96%B4%EB%82%98+%EB%8D%94+%EC%9D%B4%EC%83%81+%EB%B9%8C%EB%A0%A4%EC%A7%80%EC%A7%80+%EC%95%8A%EA%B2%8C+%EB%90%A9%EB%8B%88%EB%8B%A4.%0A%0A%EA%B7%B8%EB%9F%B0+%EB%8B%A4%EC%9D%8C+%26mut+%EC%97%B0%EC%82%B0%EC%9E%90%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC+s%EC%97%90+%EB%8C%80%ED%95%9C+%EA%B0%80%EB%B3%80+%EC%B0%B8%EC%A1%B0+r2%EB%A5%BC+%EB%A7%8C%EB%93%AD%EB%8B%88%EB%8B%A4.%0A%0Ar2%EC%9D%80+%EB%98%90+%EB%8B%A4%EB%A5%B8+%EB%B9%8C%EB%A6%BC%EC%9D%98+%EC%98%88%EC%8B%9C%EC%9E%85%EB%8B%88%EB%8B%A4.+%EC%9D%B4%EB%B2%88%EC%97%90%EB%8A%94+s%EB%A5%BC+%EA%B0%80%EB%B3%80%EC%9C%BC%EB%A1%9C+%EB%B9%8C%EB%A0%A4%EC%99%80%EC%84%9C+%EA%B0%92%EC%9D%84+%EC%88%98%EC%A0%95%ED%95%A0+%EC%88%98+%EC%9E%88%EA%B2%8C+%EB%90%A9%EB%8B%88%EB%8B%A4.%0A%0A%EC%9A%B0%EB%A6%AC%EB%8A%94+push_str%28%29+%EB%A9%94%EC%86%8C%EB%93%9C%EB%A5%BC+%ED%86%B5%ED%95%B4+r2%EB%A5%BC+%ED%86%B5%ED%95%B4+%EB%AC%B8%EC%9E%90%EC%97%B4+%22%2C+world%21%22%EB%A5%BC+s%EC%97%90+%EC%B6%94%EA%B0%80%ED%95%98%EA%B3%A0%2C+r2%EC%9D%98+%EA%B0%92%EC%9D%84+%EC%B6%9C%EB%A0%A5%ED%95%A9%EB%8B%88%EB%8B%A4.%0A%0A%EB%A7%88%EC%A7%80%EB%A7%89%EC%9C%BC%EB%A1%9C+r2%EA%B0%80+%EC%8A%A4%EC%BD%94%ED%94%84%EB%A5%BC+%EB%B2%97%EC%96%B4%EB%82%98+%EB%8D%94+%EC%9D%B4%EC%83%81+%EB%B9%8C%EB%A0%A4%EC%A7%80%EC%A7%80+%EC%95%8A%EA%B2%8C+%EB%90%98%EB%A9%B4%2C+s%EB%8A%94+%EB%8B%A4%EC%8B%9C+%EC%9E%90%EC%9C%A0%EB%A1%AD%EA%B2%8C+%EC%82%AC%EC%9A%A9%ED%95%A0+%EC%88%98+%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.%0A%0A%EC%9D%B4+%EC%BD%94%EB%93%9C+%EC%8A%A4%EB%8B%88%ED%8E%AB%EC%9D%80+Rust%EC%9D%98+%EC%86%8C%EC%9C%A0%EA%B6%8C%EA%B3%BC+%EB%B9%8C%EB%A6%BC+%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%B4+%EA%B0%80%EB%B9%84%EC%A7%80+%EC%BB%AC%EB%A0%89%ED%84%B0+%EC%97%86%EC%9D%B4+%EC%95%88%EC%A0%84%ED%95%98%EA%B3%A0+%ED%9A%A8%EC%9C%A8%EC%A0%81%EC%9D%B8+%EB%A9%94%EB%AA%A8%EB%A6%AC+%EA%B4%80%EB%A6%AC%EB%A5%BC+%EA%B0%80%EB%8A%A5%ED%95%98%EA%B2%8C+%ED%95%98%EB%8A%94+%EB%B0%A9%EC%8B%9D%EC%9D%84+%EB%B3%B4%EC%97%AC%EC%A4%8D%EB%8B%88%EB%8B%A4.%0A%0ARust%EB%8A%94+%EC%BB%B4%ED%8C%8C%EC%9D%BC+%EC%8B%9C%EA%B0%84%EC%97%90+%EC%86%8C%EC%9C%A0%EA%B6%8C%EA%B3%BC+%EB%B9%8C%EB%A6%BC+%EA%B7%9C%EC%B9%99%EC%9D%84+%EA%B0%95%EC%A0%9C%ED%95%A8%EC%9C%BC%EB%A1%9C%EC%8D%A8%0A%0A%EB%A9%94%EB%AA%A8%EB%A6%AC+%EB%88%84%EC%88%98%EB%82%98+%EC%84%B8%EA%B7%B8%EB%A9%98%ED%85%8C%EC%9D%B4%EC%85%98+%ED%8F%B4%ED%8A%B8%EC%99%80+%EA%B0%99%EC%9D%80+%EB%9F%B0%ED%83%80%EC%9E%84+%EC%98%A4%EB%A5%98%EB%A5%BC+%EB%B0%A9%EC%A7%80%ED%95%98%EB%AF%80%EB%A1%9C+Rust+%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%9D%80+%EC%95%88%EC%A0%95%EC%A0%81%EC%9D%B4%EB%A9%B4%EC%84%9C%EB%8F%84+%EB%86%92%EC%9D%80+%EC%84%B1%EB%8A%A5%EC%9D%84+%EB%B3%B4%EC%9E%A5%ED%95%A9%EB%8B%88%EB%8B%A4.%0A*%2F%0A%0Afn+main%28%29+%7B%0A++++let+mut+s+%3D+String%3A%3Afrom%28%22Hello%22%29%3B%0A%0A++++%7B%0A++++++++let+r1+%3D+%26s%3B+%2F%2F+%EB%B6%88%EB%B3%80+%EB%B9%8C%EB%A6%BC%0A++++++++println%21%28%22%7B%7D%22%2C+r1%29%3B%0A++++%7D+%2F%2F+r1%EC%9D%B4+%EC%8A%A4%EC%BD%94%ED%94%84%EB%A5%BC+%EB%B2%97%EC%96%B4%EB%82%A8%0A%0A++++let+r2+%3D+%26mut+s%3B+%2F%2F+%EA%B0%80%EB%B3%80+%EB%B9%8C%EB%A6%BC%0A++++r2.push_str%28%22%2C+world%21%22%29%3B%0A++++println%21%28%22%7B%7D%22%2C+r2%29%3B%0A%7D+%2F%2F+r2%EA%B0%80+%EC%8A%A4%EC%BD%94%ED%94%84%EB%A5%BC+%EB%B2%97%EC%96%B4%EB%82%A8%2C+s%EB%8A%94+%EB%8D%94+%EC%9D%B4%EC%83%81+%EB%B9%8C%EB%A0%A4%EC%A7%80%EC%A7%80+%EC%95%8A%EC%9D%8C%0A
+  content_markdown: >
+    Rust의 메모리 관리가 소유권, 빌림, 그리고 수명의 개념에 기반한다는 것을 설명합니다.
+
+
+    Rust의 시스템은 가비지 컬렉터가 필요 없이 컴파일 시간에 메모리 관리 문제를 방지하도록 설계되어 있다는 것을 강조합니다.
+
+
+    1.  Rust의 메모리 관리 방식 소개:
+        1. Rust는 소유권, 빌림, 그리고 수명을 기반으로 한 메모리 관리 시스템을 도입하여 메모리 안전성을 보장합니다.
+        2. 이 시스템은 컴파일 시간에 메모리 관리 문제를 확인하고 방지하므로, 런타임 시 메모리 누수나 `세그멘테이션 폴트`와 같은 문제가 발생하지 않습니다.
+    2. 가비지 컬렉터 없이 메모리 관리 문제 방지:
+        1.  Rust의 메모리 관리 시스템은 가비지 컬렉터가 필요 없이 메모리를 안전하게 관리할 수 있게 해줍니다.
+        2. 소유권과 빌림 규칙을 통해 컴파일러가 메모리 사용에 대한 제약 조건을 검사하고, 문제가 있는 경우 컴파일 오류를 발생시킵니다.
+        3. 이를 통해 런타임 시 메모리 관리 문제가 발생할 여지가 없도록 합니다.
+
+
+    이렇게 Rust는 소유권, 빌림, 그리고 수명을 기반으로 하는 메모리 관리 시스템을 통해 가비지 컬렉터 없이도 메모리 안전성을 보장하며,
+
+
+    컴파일 시간에 메모리 관리 문제를 방지하는 방식으로 문제를 해결합니다.
+
+
+    이 시스템은 런타임에 발생할 수 있는 메모리 관련 문제를 최소화하여 성능과 안정성을 높입니다.
+- title: 소유권
+  code: >-
+    https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%2F%2F+%60drop%60+%ED%95%A8%EC%88%98+%EC%86%8C%EA%B0%9C%3A%0A%2F%2F+Rust%EC%97%90%EC%84%9C%EB%8A%94+%EA%B0%92%EC%9D%B4+%EB%B2%94%EC%9C%84%EB%A5%BC+%EB%B2%97%EC%96%B4%EB%82%A0+%EB%95%8C+%EC%9E%90%EB%8F%99%EC%9C%BC%EB%A1%9C+drop+%ED%95%A8%EC%88%98%EA%B0%80+%ED%98%B8%EC%B6%9C%EB%90%A9%EB%8B%88%EB%8B%A4.%0A%2F%2F+drop+%ED%95%A8%EC%88%98%EB%8A%94+%EB%A9%94%EB%AA%A8%EB%A6%AC%EB%A5%BC+%EC%95%88%EC%A0%84%ED%95%98%EA%B2%8C+%ED%95%B4%EC%A0%9C%ED%95%98%EB%8A%94+%EC%97%AD%ED%95%A0%EC%9D%84+%ED%95%A9%EB%8B%88%EB%8B%A4.%0A%2F%2F+%EC%9D%B4%EB%A5%BC+%ED%86%B5%ED%95%B4+%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80+%EC%A7%81%EC%A0%91+%EB%A9%94%EB%AA%A8%EB%A6%AC+%ED%95%B4%EC%A0%9C%EB%A5%BC+%EA%B4%80%EB%A6%AC%ED%95%A0+%ED%95%84%EC%9A%94%EA%B0%80+%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.%0Astruct+CustomStruct+%7B%0A++++data%3A+String%2C%0A%7D%0A%0Aimpl+Drop+for+CustomStruct+%7B%0A++++fn+drop%28%26mut+self%29+%7B%0A++++++++println%21%28%22Dropping+CustomStruct+with+data%3A+%7B%7D%22%2C+self.data%29%3B%0A++++%7D%0A%7D%0A%0Afn+main%28%29+%7B%0A++++let+custom+%3D+CustomStruct+%7B%0A++++++++data%3A+String%3A%3Afrom%28%22hello%22%29%2C%0A++++%7D%3B%0A++++println%21%28%22Created+CustomStruct+with+data%3A+%7B%7D%22%2C+custom.data%29%3B%0A++++%2F%2F+custom%EC%9D%80+%EC%9D%B4+%EC%8A%A4%EC%BD%94%ED%94%84%EB%A5%BC+%EB%B2%97%EC%96%B4%EB%82%98%EB%A9%B4%EC%84%9C+drop+%ED%95%A8%EC%88%98%EA%B0%80+%ED%98%B8%EC%B6%9C%EB%90%98%EC%96%B4+%EB%A9%94%EB%AA%A8%EB%A6%AC%EA%B0%80+%EC%95%88%EC%A0%84%ED%95%98%EA%B2%8C+%ED%95%B4%EC%A0%9C%EB%90%A9%EB%8B%88%EB%8B%A4.%0A%7D%0A
+  content_markdown: >
+    **Ownership**
+
+
+    소유권 정의: Rust에서 각 값은 하나의 소유자를 가지며, 소유자가 범위를 벗어나면 값이 할당 해제됩니다.
+
+
+    소유권 이전 방법을 예제를 통해 설명합니다 (예: 값을 새 변수에 할당하거나 함수에 전달할 때).
+
+
+    값이 범위를 벗어날 때 자동으로 호출되는 drop 함수를 소개합니다.
+
+
+    소유권 정의:
+
+
+    Rust에서는 각 값에 대해 하나의 소유자가 존재하며, 소유자가 해당 값을 관리합니다.
+
+
+    소유자가 범위를 벗어나면 Rust는 자동으로 해당 값의 메모리를 해제합니다.
+
+
+    소유권 이전 예제:
+
+
+    예제 1: 값을 새 변수에 할당할 때
+
+
+    s1이 가리키는 값의 소유권이 s2로 이전되어 s1은 사용할 수 없습니다.
+
+    %rust%
+    let s1 = String::from("hello");
+
+    let s2 = s1;
+    %end%
+
+
+    예제 2: 함수에 값을 전달할 때
+
+
+    s가 takes_ownership 함수에 전달되면서 소유권이 이전되고 함수 내에서 값의 메모리가 해제됩니다.
+
+    %rust%
+    fn takes_ownership(s: String) {
+        println!("{}", s);
+    }
+
+
+    fn main() {
+        let s = String::from("hello");
+        takes_ownership(s);
+        // 여기에서 s는 사용할 수 없습니다.
+    }
+    %end%
+
+
+    `drop` 함수 소개:
+
+
+    Rust에서는 값이 범위를 벗어날 때 자동으로 drop 함수가 호출됩니다.
+
+
+    drop 함수는 메모리를 안전하게 해제하는 역할을 합니다.
+
+
+    이를 통해 개발자가 직접 메모리 해제를 관리할 필요가 없습니다.
+
+
+    소유권, 소유권 이전 방법, 그리고 drop 함수를 통해 Rust는 메모리 관리를 단순화하고 안전하게 할 수 있습니다.
+
+
+    이로 인해 메모리 누수나 세그멘테이션 폴트와 같은 문제를 효과적으로 방지할 수 있습니다.
+- title: 빌림
   source: >-
     /ajou.webp
   content_markdown: >
-    소유권, 빌리기, borrow checker
-- title: Hey
+    **Borrowing**
+- title: 수명
+  code: >-
+    https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%2F%2F+%EA%B5%AC%EC%A1%B0%EC%B2%B4+%EC%A0%95%EC%9D%98%0A%2F%2F+%EB%91%90+%EA%B0%9C%EC%9D%98+%EC%B0%B8%EC%A1%B0%EB%A5%BC+%EA%B0%80%EC%A7%80%EB%8A%94+%EA%B5%AC%EC%A1%B0%EC%B2%B4%EB%A5%BC+%EB%A7%8C%EB%93%AD%EB%8B%88%EB%8B%A4.+%EA%B0%81+%EC%B0%B8%EC%A1%B0%EB%8A%94+%EB%8B%A4%EB%A5%B8+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84%EC%9D%84+%EA%B0%80%EC%A7%91%EB%8B%88%EB%8B%A4.%0Astruct+TwoRefs%3C%27a%2C+%27b%3E+%7B%0A++++ref_a%3A+%26%27a+str%2C%0A++++ref_b%3A+%26%27b+str%2C%0A%7D%0A%0A%2F%2F+%ED%95%A8%EC%88%98+%EC%A0%95%EC%9D%98%0A%2F%2F+%EB%91%90+%EA%B0%9C%EC%9D%98+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84%EC%9D%84+%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%EC%9E%85%EB%8B%88%EB%8B%A4.%0A%2F%2F+%EC%9E%85%EB%A0%A5+%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%98+%EA%B8%B8%EC%9D%B4%EC%97%90+%EB%94%B0%EB%9D%BC+%EB%91%90+%EB%AC%B8%EC%9E%90%EC%97%B4+%EC%A4%91+%ED%95%98%EB%82%98%EB%A5%BC+%EB%B0%98%ED%99%98%ED%95%A9%EB%8B%88%EB%8B%A4.%0A%2F%2F+%27b%3A+%27a%EB%A1%9C+%EB%91%90+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84+%EA%B0%84%EC%9D%98+%EA%B4%80%EA%B3%84%EB%A5%BC+%EC%84%A4%EC%A0%95%ED%95%B4%EC%84%9C%0A%2F%2F+%27b+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84%EC%9D%80+%27a+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84%EB%B3%B4%EB%8B%A4+%EA%B8%B8%EA%B1%B0%EB%82%98+%EA%B0%99%EC%95%84%EC%95%BC+%ED%95%A9%EB%8B%88%EB%8B%A4.%0Afn+choose_str%3C%27a%2C+%27b%3A+%27a%3E%28str_a%3A+%26%27a+str%2C+str_b%3A+%26%27b+str%29+-%3E+%26%27a+str+%7B%0A++++if+str_a.len%28%29+%3E+str_b.len%28%29+%7B%0A++++++++str_a%0A++++%7D+else+%7B%0A++++++++str_b%0A++++%7D%0A%7D%0A%0Afn+main%28%29+%7B%0A++++%2F%2F+%EB%AC%B8%EC%9E%90%EC%97%B4+%EC%83%9D%EC%84%B1%0A++++let+a+%3D+String%3A%3Afrom%28%22%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94.%22%29%3B%0A++++let+b+%3D+String%3A%3Afrom%28%22%EB%B0%98%EA%B0%91%EC%8A%B5%EB%8B%88%EB%8B%A4.%22%29%3B%0A%0A++++%7B%0A++++++++%2F%2F+%EB%91%90+%EA%B0%9C%EC%9D%98+%EC%84%9C%EB%A1%9C+%EB%8B%A4%EB%A5%B8+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84%EC%9D%84+%EA%B0%80%EC%A7%84+%EA%B5%AC%EC%A1%B0%EC%B2%B4+%EC%83%9D%EC%84%B1%0A++++++++let+c+%3D+%22%EC%97%AC%EA%B8%B0%EC%84%9C+%EB%A7%8C%EB%82%98%EC%84%9C+%EB%B0%98%EA%B0%80%EC%9B%8C%EC%9A%94%21%22%3B%0A++++++++let+two_refs+%3D+TwoRefs+%7B%0A++++++++++++ref_a%3A+%26a%2C%0A++++++++++++ref_b%3A+%26c%2C%0A++++++++%7D%3B%0A%0A++++++++%2F%2F+%ED%95%A8%EC%88%98+%ED%98%B8%EC%B6%9C%0A++++++++let+longest_str+%3D+choose_str%28two_refs.ref_a%2C+two_refs.ref_b%29%3B%0A++++++++println%21%28%22%EA%B0%80%EC%9E%A5+%EA%B8%B4+%EB%AC%B8%EC%9E%90%EC%97%B4%3A+%7B%7D%22%2C+longest_str%29%3B%0A++++%7D%0A%0A++++%2F%2F+%EC%97%AC%EA%B8%B0%EC%84%9C+two_refs%EB%8A%94+%EC%82%AC%EB%9D%BC%EC%A7%80%EA%B3%A0%2C+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84+%27a%EC%99%80+%27b%EB%8A%94+%EB%8D%94+%EC%9D%B4%EC%83%81+%EC%A1%B4%EC%9E%AC%ED%95%98%EC%A7%80+%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4.%0A%7D%0A
+  content_markdown: >
+    **Lifetime**
+
+
+    참조와 그들이 빌리는 값 사이의 관계를 나타내기 위해 수명이 사용됩니다.
+
+
+    여기선 함수 시그니처와 구조체에서 수명을 어떻게 표시하는지 보여줍니다.
+
+
+    수명은 주로 빌림 검사기가 메모리 안전성을 보장하기 위한 도구로 사용되며, 컴파일러에 의해 자주 자동으로 추론된다는 것을 강조합니다.
+
+
+    수명이란 무엇인가:
+
+
+    수명은 참조와 빌려진 값 사이의 관계를 표현하는데 사용됩니다.
+
+
+    수명은 참조가 유효한 기간 동안 해당 값이 메모리에서 해제되지 않도록 보장합니다.
+
+
+    함수 시그니처와 구조체에서의 수명 표시:
+
+
+    예제 1: 함수 시그니처에서 수명 표시
+
+    %rust%
+    // 여기에서 사용된 'a는 수명을 나타내는 표시입니다.
+
+    // 이를 통해 입력과 출력의 참조들이 동일한 수명을 가지도록 합니다.
+
+    fn longest<'a>(s1: &'a str, s2: &'a str) -> &'a str {
+        if s1.len() > s2.len() {
+            s1
+        } else {
+            s2
+        }
+    }
+    %end%
+
+
+    예제 2: 구조체에서 수명 표시
+
+
+    %rust%
+    // Person 구조체는 이름을 문자열 슬라이스로 저장합니다.
+
+    // 여기에서 사용된 'a는 구조체의 이름 필드가 참조하는 문자열 슬라이스의 수명을 나타냅니다.
+
+    struct Person<'a> {
+        name: &'a str,
+    }
+    %end%
+
+
+    수명과 빌림 검사기:
+
+
+    수명은 빌림 검사기가 참조가 유효한 기간 동안 값이 메모리에서 해제되지 않도록 보장하는 데 사용됩니다.
+
+
+    대부분의 경우, 컴파일러는 수명을 자동으로 추론할 수 있습니다.
+
+
+    그러나 복잡한 상황에서는 개발자가 수명을 명시해야 할 수도 있습니다.
+
+
+    수명을 이해하고 올바르게 사용함으로써 Rust의 빌림 검사기가 메모리 관리를 안전하게 수행할 수 있도록 지원할 수 있습니다.
+
+
+    이는 Rust 프로그램의 성능과 안정성에 크게 기여합니다.
+- title: 빌림
   source: >-
-    /ferris_lofi.png
+    /ajou.webp
+  content_markdown: >
+    **Borrow checker**
+
+
+    빌림 검사기가 컴파일 시간에 빌림 규칙을 적용하여 메모리 안전성을 보장하는 방법을 설명합니다.
+
+
+    빌림 검사기는 코드 내 참조의 수명을 분석함으로써 작동한다는 것을 설명합니다.
+
+
+    빌림 검사기가 컴파일 시간에 메모리 관리 오류를 포착하는 방법을 예제를 통해 보여줍니다.
+
+
+    빌림 검사기가 컴파일 시간에 빌림 규칙을 적용하는 방법 설명:
+
+
+    Rust의 빌림 검사기는 컴파일 시간에 참조 규칙을 적용하여 메모리 안전성을 보장합니다.
+
+
+    이를 통해 런타임에 발생할 수 있는 메모리 누수, 데이터 경쟁 등의 문제를 사전에 방지할 수 있습니다.
+
+
+    빌림 검사기가 코드 내 참조의 수명을 분석하는 방법 설명:
+
+
+    빌림 검사기는 함수, 구조체 및 코드 내에서 참조의 수명을 추적하고 분석합니다.
+
+
+    이를 통해, 참조의 수명이 끝난 이후에도 사용되거나, 다른 참조가 유효하지 않은 상태에서 접근하는 것을 방지합니다.
+
+
+    빌림 검사기가 컴파일 시간에 메모리 관리 오류를 포착하는 예제:
+
+
+    %rust%
+    fn main() {
+        let mut x = 5;
+        let y = &mut x;
+        let z = &x;
+        println!("x: {}, y: {}, z: {}", x, y, z);
+    }
+    %end%
+
+    - 위 코드는 컴파일 시간에 오류를 발생시킵니다.
+    - 빌림 검사기는 x가 변경 가능한 참조와 불변 참조가 동시에 존재하는 것을 감지합니다.
+    - 빌림 검사기의 오류 메시지를 통해 개발자는 문제가 발생한 원인을 파악하고 코드를 수정할 수 있습니다.
+- title: 소유권
+  source: >-
+    /ajou.webp
   content_markdown: >
-    CSW
+    gff
-- 
GitLab