<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>일단 뭐라도 해봅시다</title>
        <link>https://velog.io/</link>
        <description>Just do it BB!</description>
        <lastBuildDate>Sat, 09 Aug 2025 07:59:55 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>일단 뭐라도 해봅시다</title>
            <url>https://images.velog.io/images/eden_kang/profile/7651a570-bba6-4cea-8e31-8aad343865bc/스크린샷 2020-07-25 오전 9.49.13.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. 일단 뭐라도 해봅시다. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/eden_kang" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[1. 투명한 성경책?]]></title>
            <link>https://velog.io/@eden_kang/Prj.-%ED%88%AC%EB%AA%85%ED%95%9C-%EC%84%B1%EA%B2%BD%EC%B1%85-with-RAG-AGENT</link>
            <guid>https://velog.io/@eden_kang/Prj.-%ED%88%AC%EB%AA%85%ED%95%9C-%EC%84%B1%EA%B2%BD%EC%B1%85-with-RAG-AGENT</guid>
            <pubDate>Sat, 09 Aug 2025 07:59:55 GMT</pubDate>
            <description><![CDATA[<h1 id="1-프로젝트-소개">1. 프로젝트 소개</h1>
<h2 id="11-왜-만들었나">1.1 왜 만들었나</h2>
<p>우리 교회 목사님은 매주 성경 연구를 하시는데,<br>한 구절만 봐도 그 구절과 관련된 <strong>모든 주석과 자료를 다 읽고</strong> 준비하십니다.<br>그 과정에서 자료를 <strong>찾고, 열고, 비교</strong>하는 데 시간이 정말 많이 걸립니다.</p>
<p>그래서 생각했습니다.<br><strong>“성경 한 구절만 입력해도, 그 구절과 연관된 수많은 자료와 논문을 한 번에 찾을 수 있으면 얼마나 좋을까?
담임목사님이 어린 시절 꾸신 꿈에 투명한 성경책을 봤는데, 책이 덮여있어도 투명하기 때문에 한눈에 성경 전체가 보였다고 하셨는데, 그걸 기술로 만들 수 있지 않을까?”</strong></p>
<p>그게 바로 <strong>투명한 성경책</strong>입니다.<br>성경 본문을 절(verse) 단위로 저장하고,<br>질문이나 구절을 입력하면 관련 절과 자료를 <strong>한 번에 검색해서 보여주는</strong> 시스템입니다.<br>AI는 해석을 최소화하고, 근거 중심으로만 답합니다.</p>
<hr>
<h2 id="12-목표">1.2 목표</h2>
<ul>
<li><strong>투명성</strong>: 항상 출처(장:절)와 자료 목록을 같이 제시</li>
<li><strong>정확성</strong>: 근거 데이터 내에서만 답변, 해석 최소화</li>
<li><strong>편의성</strong>: 인터넷 없이 로컬에서 동작(Ollama 기반)</li>
<li><strong>확장성</strong>: 성경 외에도 신학 논문, PDF, 설교문까지 검색 가능</li>
<li><strong>심화 기능</strong>: 특정 구절에 대한 자료를 <strong>견해별로 그룹화</strong>하여 보여주기</li>
</ul>
<hr>
<h2 id="13-주요-특징">1.3 주요 특징</h2>
<table>
<thead>
<tr>
<th>특징</th>
<th>설명</th>
</tr>
</thead>
<tbody><tr>
<td><strong>절 단위 검색</strong></td>
<td>성경은 절이 의미 최소 단위 → 절 단위로 색인</td>
</tr>
<tr>
<td><strong>로컬 LLM</strong></td>
<td><code>gpt-oss:20b</code>를 Ollama로 구동, API 비용 X</td>
</tr>
<tr>
<td><strong>벡터 검색</strong></td>
<td>FAISS로 빠르고 정확한 임베딩 기반 검색</td>
</tr>
<tr>
<td><strong>출처 필수</strong></td>
<td>답변 끝에 항상 해당 절과 자료 출처 표시</td>
</tr>
<tr>
<td><strong>견해별 그룹화</strong></td>
<td>검색된 자료를 해석/주제별로 묶어 정리</td>
</tr>
</tbody></table>
<hr>
<h2 id="14-어떻게-작동하나">1.4 어떻게 작동하나</h2>
<ol>
<li>사용자가 구절이나 질문 입력<br>예: “요한복음 3:16-20에 대한 자료를 모두 찾아줘, 그리고 견해별로 그룹으로 묶어 알려줘”</li>
<li>시스템이 입력을 벡터로 변환(임베딩)  </li>
<li>FAISS에서 관련 절/자료 Top-K 검색  </li>
<li>LLM이 검색 결과를 읽고 <strong>비슷한 견해끼리 그룹</strong>을 만듦  </li>
<li>각 그룹은 <strong>그룹명</strong>, <strong>내용 요약</strong>, <strong>출처 목록</strong>을 포함  </li>
<li>최종 결과를 사용자에게 전달</li>
</ol>
<hr>
<h2 id="15-결과-예시">1.5 결과 예시</h2>
<pre><code>[요한복음 3:16-20에 대한 자료]

1. 구원론 중심 해석
   - 하나님이 세상을 사랑하여 구원을 베푸신다는 관점
   - 출처: 주석 A, 논문 B

2. 사랑과 헌신 강조
   - 믿는 자가 하나님의 사랑을 깨닫고 삶으로 실천해야 한다는 관점
   - 출처: 주석 C, 설교문 D

3. 심판과 빛/어둠 대비
   - 진리를 따르는 자와 그렇지 않은 자의 구분
   - 출처: 논문 E, 주석 F</code></pre><hr>
<h2 id="16-기대-효과">1.6 기대 효과</h2>
<ul>
<li>목사님이 구절별로 주석·논문·자료를 찾는 시간을 대폭 단축</li>
<li>필요한 구절과 관련 자료를 한 번에 모아서 보여줌</li>
<li>AI가 <strong>아는 척</strong> 없이, 신뢰도 높은 근거 기반 답변 제공</li>
<li>연구자·설교자·성경 공부 모임 모두 활용 가능</li>
<li>다양한 관점을 한눈에 비교 가능 → 토론/연구 효율 상승</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[python] pip 미러서버 패키지 없음 - ERROR: Could not find a version that satisfies the requirement]]></title>
            <link>https://velog.io/@eden_kang/Ubuntu-pip-%EB%AF%B8%EB%9F%AC%EC%84%9C%EB%B2%84-%EC%97%90-%EB%82%B4%EA%B0%80-%EC%93%B0%EA%B3%A0-%EC%8B%B6%EC%9D%80-%ED%8C%A8%ED%82%A4%EC%A7%80%EC%9D%98-%EB%B2%84%EC%A0%84%EC%9D%B4-%EC%97%86%EC%9D%84-%EB%95%8C-%EB%82%98%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%84-%ED%95%A0%EA%B9%8C</link>
            <guid>https://velog.io/@eden_kang/Ubuntu-pip-%EB%AF%B8%EB%9F%AC%EC%84%9C%EB%B2%84-%EC%97%90-%EB%82%B4%EA%B0%80-%EC%93%B0%EA%B3%A0-%EC%8B%B6%EC%9D%80-%ED%8C%A8%ED%82%A4%EC%A7%80%EC%9D%98-%EB%B2%84%EC%A0%84%EC%9D%B4-%EC%97%86%EC%9D%84-%EB%95%8C-%EB%82%98%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%84-%ED%95%A0%EA%B9%8C</guid>
            <pubDate>Wed, 12 Mar 2025 04:33:10 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/eden_kang/post/9e546f17-a0fb-4da3-86a9-ba4926924ab1/image.png" alt=""></p>
<h2 id="topic">Topic</h2>
<p>기본적으로 pip install을 하면 공식서버에서 패키지들을 다운받게 되는데 공식서버는 해외에 있기 때문에 속도가 느릴때가 많습니다. 그래서 보통 한국에서는 카카오 서버 등을 공식서버를 대신해 미러서버로 사용하게 되죠. </p>
<h2 id="problem">Problem.</h2>
<p>그런데 가끔씩? 아니 좀 자주.. 미러서버에 내가 쓰고 싶은 패키지 버전이 없을 때가 있습니다. 보통 최신버전이 없을 때가 많아서, 그동안 큰 문제가 안되었는데 오늘은 openmanus를 돌려보려는 과정에서 패키지가 없다하여, 이 문제를 해결해야 했습니다. </p>
<p><img src="https://velog.velcdn.com/images/eden_kang/post/78f4087c-cb2f-4a4c-8669-33d8ee3e5987/image.png" alt=""></p>
<h2 id="question">Question?</h2>
<p>pip install에 대한 try catch 같은게 있지 않을까 생각을 하며 GPT 선생님께 여쭤보았습니다. 당연히 있더라구요. 기본은 속도가 빠른 미러서버를 쓰고, 없는 패키지 버전에 대해서만 공식서버를 사용하게 하는 것이 가능했습니다. </p>
<h2 id="answer">Answer!</h2>
<ul>
<li>pip에 대한 config 생성<pre><code>mkdir -p ~/.pip
vi ~/.pip/pip.conf</code></pre></li>
<li>config 작성<pre><code>[global]
index-url = https://mirror.kakao.com/pypi/simple
extra-index-url = https://pypi.org/simple</code></pre></li>
</ul>
<p>이렇게 하면 기본은 카카오로 사용하고, 없을 경우에만 공식서버를 사용하게 되어 패키지 not found는 이제 보기 어렵게 됩니다. Good luck!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[ React ] <select>에서 onChange 가 계속 call 된다면?]]></title>
            <link>https://velog.io/@eden_kang/React-select%EC%97%90%EC%84%9C-onChange-%EA%B0%80-%EA%B3%84%EC%86%8D-call-%EB%90%9C%EB%8B%A4%EB%A9%B4</link>
            <guid>https://velog.io/@eden_kang/React-select%EC%97%90%EC%84%9C-onChange-%EA%B0%80-%EA%B3%84%EC%86%8D-call-%EB%90%9C%EB%8B%A4%EB%A9%B4</guid>
            <pubDate>Wed, 02 Feb 2022 07:58:05 GMT</pubDate>
            <description><![CDATA[<h3 id="onchange는-항상-event기반이-되게-하자">onChange는 항상 event기반이 되게 하자</h3>
<pre><code>&lt;select&gt;
    onChange={this.onChangeSelectValue()}
       &lt;option&gt; ... &lt;/option&gt;
&lt;/select&gt; </code></pre><p>코드가 위와 같이 되어있다면 딱히 이벤트가 없어도 onChangeSelectValue는 계속 call 될 수 있다. 그럴 땐 아래와 같이 onChange를 event로 감싸보자. 그렇게 하면 event가 일어날 때만 로직이 call된다. </p>
<pre><code>&lt;select&gt;
    onChange={(e) =&gt; {this.onChangeSelectValue()}}
       &lt;option&gt; ... &lt;/option&gt;
&lt;/select&gt; </code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[통통 튀는 Spring-boot 2. DB 연동 ]]></title>
            <link>https://velog.io/@eden_kang/%ED%86%B5%ED%86%B5-%ED%8A%80%EB%8A%94-Spring-boot-2.-DB-%EC%97%B0%EB%8F%99</link>
            <guid>https://velog.io/@eden_kang/%ED%86%B5%ED%86%B5-%ED%8A%80%EB%8A%94-Spring-boot-2.-DB-%EC%97%B0%EB%8F%99</guid>
            <pubDate>Thu, 26 Aug 2021 11:33:00 GMT</pubDate>
            <description><![CDATA[<h1 id="1-hello-world">1. Hello World!</h1>
<blockquote>
<p>기본 세팅을 했으니 모든 개발의 꽃인 Hello World!를 찍어보죠. 
여기서부턴 드디어 뭔가 코드를 적게됩니다. 어렵지 않으니 천천히 따라하시면 됩니다. </p>
</blockquote>
<p>프로젝트 폴더의 resources/static 폴더에 index.html 파일을 생성합니다. 
파일을 생성하는 방법은 해당 폴더를 오른쪽 클릭해서 new -&gt; file 누르시고 이름을 index.html로 정해주시면 됩니다. </p>
<p><img src="https://images.velog.io/images/eden_kang/post/9459dcd3-0930-4d30-9841-8c53053a0d5c/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202020-07-28%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%202.24.00.png" alt=""></p>
<p>index.html에 들어갈 코드입니다. 복사해서 붙여넣으세요. </p>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
    &lt;head&gt;
       &lt;meta charset=&quot;UTF-8&quot;&gt;
        &lt;title&gt;Index&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;h1&gt;Hello World!&lt;/h1&gt;
    &lt;/body&gt;
&lt;/html&gt;
</code></pre><blockquote>
<p>spring 프로젝트에서 resources 폴더에는 이름 뜻 그대로, 프로젝트의 &quot;자원&quot;이 될 수 있는 이미지나, html파일 등이 들어가게 됩니다. 이를 보통 정적(변하지 않는) 리소스라고 합니다.  </p>
</blockquote>
<p>이렇게 넣으신 후 서버를 껐다 키시고 (<em>정지 눌렀다가 재생버튼 다시 누르시라는 말입니다</em>) localhost:8080 에 가시면 우리는 World에 Hello를 외칠 수 있습니다. </p>
<p><img src="https://images.velog.io/images/eden_kang/post/08d8aeec-120e-47f1-bce3-f347afd11dae/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202020-07-28%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%202.30.04.png" alt=""></p>
<h1 id="2-mvc-패턴">2. MVC 패턴?</h1>
<blockquote>
</blockquote>
<p>&quot;여러분은 이제 spring 프로젝트로 Hello World를 시전한 어엿한 개발자가 되었습니다~ 축하드립니다!&quot; 라고 하고 싶지만 그러면 맞을 수 있습니다. 이제 진짜 개발자처럼 보이기 위해서 MVC에 대해서 배워보죠. </p>
<p><img src="https://lh3.googleusercontent.com/proxy/80KYGkLzJrDbjzNts5okd7u-eGw1tVza5BcNyQ2yywnHJZlrfmpMJ0v7hmdrhdrgJCtmNXU50nJH5bUx_RAHuYxcLOmQqunf_bQwoZ0I9BtbJ118QeJO_HJXcuNdMv6n9WFuKURhO4XPNYMfKJdpHPpoB4daHLXxkCU4I5VDoWc7BwA_EeU-EgFvPOMD0ETm7g" alt=""></p>
<p>MVC는 Model-View-Controller의 약자입니다. 이게 뭐냐 하고 물으신다면, 대답해드리는 것이 인지상정이겠죠? 간단하게 설명드리자면 아래와 같습니다. </p>
<blockquote>
<p><strong>Model</strong> : 프로젝트에서 실제 계산/비즈니스 로직이 일어나는 곳입니다. 
<strong>View</strong>: 프로젝트의 view, 말 그대로 화면입니다. 
<strong>Controller</strong> : Model과 View 사이에 껴서 데이터를 컨트롤 하는 곳입니다. </p>
</blockquote>
<p>예시로 설명을 드릴게요. 지금 저희가 만들려고 하는 프로젝트에 글을 등록하는 기능을 저희가 구현해야 한다고 생각을 해봅시다.</p>
<blockquote>
<ol>
<li>맨 먼저 유저는 글쓰기 화면에서 글을 씁니다. 여기서 화면에 해당하는 곳이 <strong>View</strong> 입니다. 그리고 글을 다 쓰고 &quot;저장&quot; 버튼을 누르는 순간, 작성한 글 데이터는 API를 통해 스프링이 돌아가고 있는 서버로 전송됩니다. </li>
<li>여기서 이 &quot;글 데이터&quot;를 서버에서 처음 받는 곳이 <strong>Controller</strong> 입니다. </li>
<li>컨트롤러는 데이터를 받아서, 실제 DB에 글 데이터를 입력하는 곳으로 보내줍니다. 여기가 <strong>Model</strong>입니다. 그리고 컨트롤러는 다시 &#39;작성완료 되었다&#39;는 내용을 받아서 화면에 넘겨줍니다. </li>
</ol>
</blockquote>
<p>그래서 최종적으로 유저는 &quot;글 저장 완료!&quot; 라는 화면을 보게 되는 것이죠. </p>
<p>MVC 패턴은 서로 분업을 해서 효율적으로 일을 처리하기 위한 하나의 구조라고 할 수 있습니다. </p>
<h1 id="3-mvc를-작성해보자">3. MVC를 작성해보자</h1>
<blockquote>
<p>controller 패키지를 생성합니다. 그리고 새로운 자바 파일을 만들어서 MyController라고 해줍니다. 단, 패키지를 생성하실 때, 사진처럼 맨 뒤에 controller라고 붙여줘야 합니다. 패키지 경로여서 다 지우고 쓰시면 안됩니다. 그리고 자바파일은 기본적으로 첫 글자가 <em>대문자로</em> 시작해야합니다.</p>
</blockquote>
<p><img src="https://images.velog.io/images/eden_kang/post/d8d7ea67-8a4c-4ede-b152-e5c3e955708b/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202020-07-28%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%203.06.23.png" alt=""></p>
<p><img src="https://images.velog.io/images/eden_kang/post/a7504946-93a3-4f69-ae45-0f9944c14475/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202020-07-28%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%203.06.53.png" alt=""></p>
<p>MyController.class 파일 내용</p>
<blockquote>
<p>여기서 @로 시작하는 코드는 어노테이션(Annotation)이라고 하는데, Spring에서 해당 코드가 어떤 역할을 하는지 찾기 편하게 달아주는 이름표라고 생각하시면 됩니다. 얘는 컨트롤러니까 @Controller 라고 이름을 달아주죠. @getMapping(&quot;url&quot;)은 get 방식이면서 &quot;url&quot;로 들어오는 요청에 대한 처리를 여기서 한다는 의미입니다. 자매품 @postMapping도 있습니다.</p>
</blockquote>
<pre><code>package com.eden.todoTest.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class MyController {

    @GetMapping(&quot;/&quot;)
    private String helloWorld(){
        return &quot;index.html&quot;;
    }
}</code></pre><p>이렇게 세팅하고 껐다 키시면, 익숙한 헬로월드를 보게 되실겁니다.</p>
<h1 id="3-드디어-db">3. 드디어 DB!</h1>
<p>드디어 말로만 듣던 데이터베이스(DB)라는 녀석을 다룰 차례입니다. 앞으로는 디비라고 할게요 <del>길고 한영도 귀찮으니</del>. 일단 우리는 아는게 없으니, 디비의 개념부터 간단히 알아볼게요. 일단 우리가 웹사이트나 앱을 이용할 때, 1회용 데이터가 아닌 모든~ 데이터를 보관하는 저장소가 디비의 역할입니다. 자 이제, 디비를 만들어볼까요? 디비의 종류는 정말 많지만 크게 SQL을 쓰냐 안쓰냐로 갈립니다. 저희는 여기서 SQL디비 중에 mysql 계통인 mariaDB를 쓸거에요. 이유는 무료이기 때문이죠! </p>
<p>⬇️ MariaDB 설치는 아래의 링크를 참고해주세요 ⬇️ </p>
<p><a href="https://offbyone.tistory.com/199">WINDOW - mariaDB 설치</a>
<a href="https://mariadb.com/kb/ko/installing-mariadb-on-macos-using-homebrew/">MAC - mariaDB 설치</a></p>
<p>자 디비는 잘 설치하셨죠? 모르면 댓글 남겨주시거나 구글에 &quot;mariaDB 설치&quot; 검색하시면 많이 나오니까 링크 참고하셔서 진행해주세요. 앞으로 &quot;개발에 관련된 검색은 무조건 GOOGLE!&quot; 이거 명심해주세요. 설치가 되셨으면 터미널에 명령어를 한번 입력해보죠. 제대로 설치가 잘 되었다면 설치한 버전 정보가 나올거에요(<em>버전은 저랑 달라도 상관없습니다</em>). 여기까지 되셨으면 디비 설치 완료! 축하드립니다 ㅋㅋ 이제 다음 글에서 디비를 제대로 써보죠. </p>
<pre><code>$ mysql --version</code></pre><p><img src="https://images.velog.io/images/eden_kang/post/c3724043-93f9-4583-8a58-aecd290f7357/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-08-26%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%208.25.06.png" alt="정상설치가 되었을 때"></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[통통 튀는 Spring-boot 1. 시작하기  ]]></title>
            <link>https://velog.io/@eden_kang/%ED%86%B5%ED%86%B5-%ED%8A%80%EB%8A%94-Spring-boot-1.-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@eden_kang/%ED%86%B5%ED%86%B5-%ED%8A%80%EB%8A%94-Spring-boot-1.-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0</guid>
            <pubDate>Fri, 24 Jul 2020 02:56:24 GMT</pubDate>
            <description><![CDATA[<h1 id="0-스프링은-처음입니다만">0. 스프링은 처음입니다만,</h1>
<blockquote>
<p>안녕하세요. 여러분과 함께 삽질을 시작할 에덴입니다. 저는 주로 node, vue와 같이 js를 주로 다루다가 필요에 의해 스프링을 시작하게 되었습니다. 저도 오래 전 학원에서 잠깐 들춰본 것 외에 스프링은 처음입니다. 그래서 다른 분들 포스트에 비해 정확하지 않을 수 있으니, 부족한 점은 언제라도 말씀해주시면 바로 수정하겠습니다.  </p>
</blockquote>
<h1 id="1-과연-할-수-있을까">1. 과연 할 수 있을까?</h1>
<p>하나. 아래의 기술 스택을 가진 TO-DO 서비스를 만든다.
하나. 될 때까지 포기하지 않는다!!!!!!!! -&gt; 이게 제일 중요합니다. 제가 포기하지 않길.. </p>
<h4 id="기술스택-">기술스택 :</h4>
<blockquote>
<p>Bankend : spring-boot + jpa, graphQL
Frontend : React + Apollo, Antdesign
DB: MySQL(MariaDB)
deploy : AWS</p>
</blockquote>
<h1 id="2-삽질의-시작---작업준비">2. 삽질의 시작 - 작업준비</h1>
<p>자, 이제 Spring-boot 프로젝트를 시작해보죠! 
기존의 Spring 프레임워크는 정말 세팅하는데 하루종일 걸렸어요. 
xml 기반의 세팅은 정말 끔찍했고 뻑하면 빈을 찾을 수 없었다고 합니다만 <del>그건 제 탓입니다.</del> 
다행히도 요즘 많이 사용하고 있는 spring-boot는 이니셜라이져라는 툴을 제공함으로 단 3분만에 기본 프로젝트를 구축할 수 있게 해주었습니다. Thx God!</p>
<p><a href="https://start.spring.io/">스프링부트 이니셜라이져 링크</a></p>
<p>이 링크로 가면 간단한 설정만으로 세팅된 프로젝트 파일을 다운받을 수 있습니다. 
먼저 프로젝트 세팅에서 캡처와 같이 작성하고, 단 영어로 작성해야합니다. 그리고 ADD 버튼을 눌러 부가 라이브러리들을 추가해준다음, 다 끝나면 Generate 버튼을 눌러 다운받으시면 세팅 끝!</p>
<p><img src="https://images.velog.io/images/eden_kang/post/dd8a66cb-e56a-4f50-bc04-64bc15b56658/image.png" alt="프로젝트 세팅"></p>
<p><img src="https://images.velog.io/images/eden_kang/post/25c3d17b-8d74-45fd-bc17-8f36c0f10a96/image.png" alt="부가라이브러리 세팅"></p>
<p>그리고 저는 여기서 IDE(코드편집기)로 인텔리제이를 사용할 예정입니다. 최애인 vscode를 사용하고 싶었지만, 자바에는 인텔리가 더 최적화가 잘되어 있는듯하네요;; 여러분 편한거 쓰시면 됩니다만, 따라하기 편하시려면 같은 툴 쓰시는게 나을거에요. 인텔리는 저도 아직은 30일 체험판 쓰니까 다운받고 30일안에 끝내시면 됩니다 ㅋㅋ </p>
<p><a href="https://www.jetbrains.com/idea/?gclid=Cj0KCQjw6uT4BRD5ARIsADwJQ1-YlToG3-Jq6MGW61aRemgzeYPggPgoBrYo0gcTi8Fg1y2TRhOl87AaAuoUEALw_wcB">인텔리제이 다운</a></p>
<h1 id="3-한번-켜봅시다">3. 한번 켜봅시다</h1>
<p>이니셜라이져로 다운받은 파일을 압축풀고, IDE로 실행하면 아래와 같은 화면을 만나게 되실거에요. 기본 빌드 끝나고 나면 우측 상단의 그냥 빨간 네모로 표시한 재생버튼 눌러주세요. 그러면 자동으로 스프링이 켜져야 하는데.. 그렇지 않고 아마 이런 에러를 만나시게 될겁니다? </p>
<p><img src="https://images.velog.io/images/eden_kang/post/39080c19-621b-4ef1-867e-710d13a12ce0/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202020-07-28%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2012.26.30.png" alt=""></p>
<p><img src="https://images.velog.io/images/eden_kang/post/381b6aeb-eb56-4a76-b5e8-a28df9dc4abb/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202020-07-28%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%201.31.03.png" alt="이런 에러"> </p>
<blockquote>
<p>&quot;이런 에러&quot; : 에러의 내용을 간단히 설명드리자면, &quot;너 JPA쓴다며, 쓸려면 url을 줘야지 왜 안줘?&quot; 입니다. 그래서 우리는 &quot;알겠어 안쓰면 되잖아&quot;로 대답을 하면 문제가 해결됩니다. - JPA는 나중에 DB를 다룰 때 사용합니다. </p>
</blockquote>
<p><img src="https://images.velog.io/images/eden_kang/post/9be97f1b-8c20-40c6-8110-22583be8872d/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202020-07-28%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%201.43.25.png" alt=""></p>
<p>그러면 당황하지 않고 build.gradle 파일을 열어서 jpa 라이브러리를 // 으로 일단 주석처리 해주시면 됩니다. 그리고 build.gradle파일을 수정하면 옆에 코끼리 아이콘이 나올거에요. 코끼리가 다시 빌드해주는 친구입니다. 코끼리를 누르면 수정된 내용으로 다시 빌드를 합니다. 그리고 재생 버튼을 누르면 정상적으로 스프링이 실행됩니다. 스프링이 실행되면 맨 밑줄에 이렇게 나옵니다. </p>
<pre><code>Started TodoTestApplication in 1.163 seconds (JVM running for 1.578)</code></pre><p>이걸 확인하시고 인터넷 창을 여셔서 localhost:8080 을 입력하시면 이렇게 에러가 나오게 됩니다. 아직 지정해준 내용이 없으니 당연한 에러입니다. 여기까지 나오셨으면 기본 내용은 성공이니 다음으로 넘어가시면 됩니다. </p>
<p><img src="https://images.velog.io/images/eden_kang/post/118b234c-76a7-4693-afe2-e6d6618459a0/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202020-07-28%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%201.59.28.png" alt=""></p>
]]></description>
        </item>
    </channel>
</rss>