<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>kyumin__.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Wed, 13 Jul 2022 02:07:41 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>kyumin__.log</title>
            <url>https://images.velog.io/images/kyumin__/profile/5b39381c-624c-4126-bf67-6dbb590ebd52/social.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. kyumin__.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/kyumin__" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[sql] Programmers sql 연습]]></title>
            <link>https://velog.io/@kyumin__/Programmers-sql-%EC%97%B0%EC%8A%B5</link>
            <guid>https://velog.io/@kyumin__/Programmers-sql-%EC%97%B0%EC%8A%B5</guid>
            <pubDate>Wed, 13 Jul 2022 02:07:41 GMT</pubDate>
            <description><![CDATA[<h2 id="헤비-유저가-소유한-장소">헤비 유저가 소유한 장소</h2>
<p><img src="https://velog.velcdn.com/images/kyumin__/post/6bd9a22f-cb7b-4846-8a24-30b855f1ffae/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/kyumin__/post/6e85f822-2dea-4a4f-8b47-98999ca04b43/image.png" alt=""></p>
<p>HOST_ID 별로 COUNT가 1개보다 많은 경우 SELECT 후 결과 먼저 보고</p>
<pre><code class="language-sql">SELECT 
    HOST_ID,
    COUNT(*) AS COUNT
FROM 
    PLACES
GROUP BY 
    HOST_ID
HAVING 
    COUNT(*)&gt;1
</code></pre>
<p><img src="https://velog.velcdn.com/images/kyumin__/post/aaeb2874-1656-47e7-87ce-34c2123e19f1/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/kyumin__/post/14ee2a98-3895-4010-81a2-3375b49a60ac/image.png" alt=""></p>
<p>답</p>
<pre><code class="language-sql">SELECT 
    ID,
    NAME,
    HOST_ID
FROM
    PLACES
WHERE 
    HOST_ID IN 
    (SELECT HOST_ID FROM PLACES
    GROUP BY HOST_ID HAVING COUNT(*)&gt;1)
ORDER BY ID</code></pre>
<p>느낀점 </p>
<ul>
<li>어떤 모양의 테이블이 나와야 하는지 먼저 생각 or 그림그려본 후에 쿼리문을 짜는 것이 도움이 많이 되었음.</li>
<li>한번에 쿼리문 완성시키려 하지 말고 단계단계 한 다음에 서브쿼리로 집어넣는 것이 더 효율적인듯 <del>서브쿼리 성능문제는요...?</del></li>
<li>GROUB BY 에서 조건을 걸고싶을때는 HAVING을 사용하자 </li>
<li>IN 명령어는 유용하다</li>
</ul>
<h2 id="없어진-기록-찾기---입양-간-기록은-있는데-입양-온-기록이-없는-경우의-데이터-찾아보기">없어진 기록 찾기 - 입양 간 기록은 있는데 입양 온 기록이 없는 경우의 데이터 찾아보기</h2>
<p><img src="https://velog.velcdn.com/images/kyumin__/post/b1755c3d-2ecd-4486-a724-22fefe7b73e5/image.png" alt=""></p>
<p>답</p>
<pre><code class="language-sql">SELECT
    OUTS.ANIMAL_ID,
    OUTS.NAME
FROM 
    ANIMAL_OUTS OUTS
LEFT OUTER JOIN
    ANIMAL_INS INS
ON
    OUTS.ANIMAL_ID = INS.ANIMAL_ID
WHERE
    INS.ANIMAL_ID IS NULL
ORDER BY
    OUTS.ANIMAL_ID</code></pre>
<p>느낀점</p>
<ul>
<li>in,out과 같이 sql 예약어로 이미 사용중인 것들이 있으니까 테이블 별칭도 잘 써야함</li>
<li>outer join은 합집합 느낌 , inner join은 교집합 느낌?</li>
<li>join 선언 전에 있는 것이 좌 테이블, 선언 후는 우 테이블</li>
<li>join 선언시 사용하는 방향이 기준 테이블임 <h2 id="예-left-outer-join-인-경우에는-왼쪽-테이블을-기준으로-오른쪽-테이블-값이-없으면-null-표시">  예) left outer join 인 경우에는 왼쪽 테이블을 기준으로, 오른쪽 테이블 값이 없으면 null 표시</h2>
</li>
</ul>
<p>cf ) 별다른 명시 없이 join만 쓰면 inner join이 default
left/right를 명시하는 경우에는 무조건 outer join임
    예 ) left join = left outer join 임
        right join = right outer join 임</p>
<h2 id="동명-동물-수-찾기---group-by-having-연습">동명 동물 수 찾기 - GROUP BY, HAVING 연습</h2>
<p><img src="https://velog.velcdn.com/images/kyumin__/post/5e426292-f284-4e76-b4b5-edb6b2ed63cf/image.png" alt=""></p>
<pre><code class="language-sql">SELECT
    NAME, 
    COUNT(NAME) AS COUNT
FROM
    ANIMAL_INS
WHERE 
    NAME IS NOT NULL
GROUP BY 
    NAME
HAVING 
    COUNT(NAME)&gt;1
ORDER BY 
    NAME</code></pre>
<p>느낀점</p>
<ul>
<li>GROUP BY 에서 조건을 걸려면 HAVING을 쓴다. </li>
<li>HAVING에서 AND 연산자로 조건 여러개를 하는 방식은 지원을 하지 않는 듯.</li>
<li>GROUP BY 앞에 WHERE 연산자로 조건을 추가할 수 있음</li>
</ul>
<p>예시 )</p>
<pre><code class="language-sql">SELECT
        GROUP BY 절에 지정한 컬럼,
        위 컬럼별로 집계할 컬럼 또는 값
    FROM
        TABLE명
    WHERE 
        조건
    GROUP BY 
        그룹으로 묶을 컬럼 값
    HAVING 
        조건</code></pre>
<p>위에서 WHERE과 HAVING은 조건이 따로 없으면 생략 가능
GROUP BY 뒤에 오는 조건절은 WHERE이 아닌 HAVING임!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Git] 팀 프로젝트 - 작업 환경 흐름 확인하기]]></title>
            <link>https://velog.io/@kyumin__/Git-%ED%8C%80-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%9E%91%EC%97%85-%ED%99%98%EA%B2%BD-%ED%9D%90%EB%A6%84-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@kyumin__/Git-%ED%8C%80-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%9E%91%EC%97%85-%ED%99%98%EA%B2%BD-%ED%9D%90%EB%A6%84-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0</guid>
            <pubDate>Tue, 04 Jan 2022 03:55:18 GMT</pubDate>
            <description><![CDATA[<blockquote>
</blockquote>
<ul>
<li>각 팀원들은 본인 branch에서 코드 구현</li>
<li>본인 branch에서 구현한 코드를 원격 저장소에 push 하기 전에, 
master branch와 다른 부분이 없는지(다른 팀원이 먼저 push 해서 변경되었을 수 있기 때문에)
master branch에서 자신의 branch로 먼저 코드를 가져와야 함(pull)
<img src="https://images.velog.io/images/kyumin__/post/6f2d1823-1b97-4e86-b82a-60a38cc3366c/18.png" alt="">
clone : 깃허브에 올라온 프로젝트 내 컴퓨터 작업 폴더로 복사해오기 (최초 한 번만!)
pull : master branch 의 변경 사항 내 컴퓨터에 반영하기
push : 내 branch 에서 작업한 원격 저장소에 branch 생성하여 추가
merge : 내 branch 와 master branch 내용 합치기
이후 계속 작업하면서 pull~merge 부분만 반복해주면 됌</li>
</ul>
<blockquote>
</blockquote>
<h3 id="상황-가정">상황 가정)</h3>
<h4 id="팀원-km이-작업-후-원격-저장소에-push-master-branch에-merge-까지-한-상태에서--팀원-hm가--자신의-branchhm에서--작업한-내용을-추가하려면">팀원 km이 작업 후 원격 저장소에 push, master branch에 merge 까지 한 상태에서 , 팀원 hm가  자신의 branch(hm)에서  작업한 내용을 추가하려면?</h4>
<blockquote>
<h3 id="1-팀원-km이-변경한-내용-master-branch-에-병합까지-한-상태">1. 팀원 km이 변경한 내용 (master branch 에 병합까지 한 상태)</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/fee43ebb-ba25-4c66-b885-687c1908c460/01.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="2-팀원-hm이-자신의-branch-생성-후--hm-branch로-이동">2. 팀원 hm이 자신의 branch 생성 후 , hm branch로 이동</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/cccf9fd5-6729-4417-a5ea-d65502b06455/02.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="3-이클립스sts에서-hm-branch로-바뀐-것을-볼-수-있고-팀원-km이-수정한-부분은-아직-반영되지-않았음">3. 이클립스(sts)에서 hm branch로 바뀐 것을 볼 수 있고, 팀원 km이 수정한 부분은 아직 반영되지 않았음</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/96453120-d869-4f2a-8b07-3bbc03314a05/03.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="4-hm-branch에서--master-branch에-변경된-사항-가져오기-pull">4. hm branch에서 , master branch에 변경된 사항 가져오기 (pull)</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/6d8aa212-bff5-4577-9d12-d532cc46a06b/04.png" alt="">
    - 가져옴
<img src="https://images.velog.io/images/kyumin__/post/7a66e27e-308d-4006-b55c-6aa7fa4388ef/05.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="5-hm-branch-에서-작업한-내용">5. hm branch 에서, 작업한 내용</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/ec3cd5df-e646-44fb-9ad2-bd44ec1bc20f/06.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="6-추가한-내용-원격-저장소에-올리기-add-commit--push">6. 추가한 내용 원격 저장소에 올리기 (add, commit , push)</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/0fa70420-21f3-4e96-b330-5f4f12b7546b/07.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="7-원격-저장소에깃허브-홈페이지-잘-올라왔는지-확인">7. 원격 저장소에(깃허브 홈페이지) 잘 올라왔는지 확인</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/45b0e37b-00d2-49d6-8743-a97206b51227/08.png" alt="">
    -잘올라옴
<img src="https://images.velog.io/images/kyumin__/post/cf4a12bb-f162-4481-b088-d79372931deb/09.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="8-pull-request-에서-hm-branch의-변경-내용을-master-branch에-병합하기">8. pull request 에서 hm branch의 변경 내용을 master branch에 병합하기</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/34fa8d57-bd28-48b3-b94d-afe0d62be884/10.png" alt="">
<img src="https://images.velog.io/images/kyumin__/post/994981a5-6da6-451b-ac13-d0864e0585f9/11.png" alt="">
<img src="https://images.velog.io/images/kyumin__/post/7074cabe-0476-4597-a96d-de48c8555085/12.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="9-merge-후-master-branch에-잘-올라갔는지-확인">9. merge 후 master branch에 잘 올라갔는지 확인</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/fa0cb584-8fa4-424e-a71e-109c3db6e2df/13.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="10-다시-km-branch로-이동">10. 다시 km branch로 이동</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/46a07fa6-d983-4236-91d2-ea54bf3e194f/14.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="11-km-branch-에서는-팀원-hm-이-작성한-부분이-아직-반영되지-않음-pull-이전상태">11. km branch 에서는 팀원 hm 이 작성한 부분이 아직 반영되지 않음 (pull 이전상태)</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/7072ff97-0a58-481a-a403-0f5cd52a0d01/15.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="12-km-branch-에서-master의-내용을아까-hm-branch-내용이-merge된-상태-가져오기-pull">12. km branch 에서 master의 내용을(아까 hm branch 내용이 merge된 상태) 가져오기 (pull)</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/afb6abb7-5110-400a-8000-f5b63992ae73/16.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="13-km-branch-에서도-수정된-내용-반영된-것-확인">13. km branch 에서도 수정된 내용 반영된 것 확인</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/241b24d8-efe7-4d0f-bec1-0a695a5a3917/17.png" alt=""></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Git] 팀 프로젝트 작업 - 3. branch에서 작업한 내용을 master branch에 병합하기]]></title>
            <link>https://velog.io/@kyumin__/Git-%ED%8C%80-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%9E%91%EC%97%85-3.-branch%EC%97%90%EC%84%9C-%EC%9E%91%EC%97%85%ED%95%9C-%EB%82%B4%EC%9A%A9%EC%9D%84-master-branch%EC%97%90-%EB%B3%91%ED%95%A9%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@kyumin__/Git-%ED%8C%80-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%9E%91%EC%97%85-3.-branch%EC%97%90%EC%84%9C-%EC%9E%91%EC%97%85%ED%95%9C-%EB%82%B4%EC%9A%A9%EC%9D%84-master-branch%EC%97%90-%EB%B3%91%ED%95%A9%ED%95%98%EA%B8%B0</guid>
            <pubDate>Tue, 04 Jan 2022 01:00:16 GMT</pubDate>
            <description><![CDATA[<blockquote>
<h3 id="각-팀원이-작업한-branch-의-내용을-master-branch-에-병합하기">각 팀원이 작업한 branch 의 내용을 master branch 에 병합하기</h3>
</blockquote>
<blockquote>
<h3 id="1-프로젝트의-pull-request-탭--new-pull-request">1. 프로젝트의 pull request 탭 &gt; new pull request</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/9240ee16-1860-486a-9fa4-6356ddf4724e/018.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="2-어느-브랜치의-내용을-어디로-병합할-건지-선택해주고-create-pull-request-를-누르면-able-to-merge--하는-메세지가-나옴">2. 어느 브랜치의 내용을 어디로 병합할 건지 선택해주고, create pull request 를 누르면 &quot;Able to merge~ &quot; 하는 메세지가 나옴</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/373a0415-32e7-4ac1-a1f5-95375d250bde/020.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="3-create-pull-request--comment는-자유-하면-merge-하라고-요청이-감">3. create pull request ( comment는 자유) 하면 merge 하라고 요청이 감!!</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/c561618f-e0cd-4e15-81fd-c05bb2b08b2e/021.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="4-요청-온거-확인-merge-pull-request를-눌러서-master-branch-에-merge내용-합치기-할-수-있음">4. 요청 온거 확인, Merge pull request를 눌러서 master branch 에 merge(내용 합치기) 할 수 있음</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/9e2bfde5-fdcc-48dd-a084-e41dbfef4c2c/022.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="5-confirm-merge--merge-후--계속-작업할-거기-때문에-delete-branch-는-누르지-말것">&gt; 5. Confirm merge! ( merge 후 , 계속 작업할 거기 때문에 Delete branch 는 누르지 말것)</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/29a82e6a-6892-49ec-91df-fd3a2ad3aeb4/023.png" alt="">
<img src="https://images.velog.io/images/kyumin__/post/108a3e5b-1cf8-40a2-9ad2-39a585949a35/024.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="6-그리고-master-branch-에-가서-확인해보면-브랜치에서-작업한-내용이-master에도-잘-merge-되었음을-확인할-수-있음">6. 그리고 master branch 에 가서 확인해보면 브랜치에서 작업한 내용이 master에도 잘 merge 되었음을 확인할 수 있음</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/db43bbec-68d3-4a98-a9e7-691561bfe4db/025.png" alt="">
<img src="https://images.velog.io/images/kyumin__/post/22600ca1-1816-4df3-9870-738877857fdb/026.png" alt=""></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Git] 팀 프로젝트 환경 구성- 2. 팀원들마다 branch 생성해서 작업하기]]></title>
            <link>https://velog.io/@kyumin__/Git-%ED%8C%80-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%84%B1-2.-%ED%8C%80%EC%9B%90%EB%93%A4%EB%A7%88%EB%8B%A4-branch-%EC%83%9D%EC%84%B1%ED%95%B4%EC%84%9C-%EC%9E%91%EC%97%85%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@kyumin__/Git-%ED%8C%80-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%84%B1-2.-%ED%8C%80%EC%9B%90%EB%93%A4%EB%A7%88%EB%8B%A4-branch-%EC%83%9D%EC%84%B1%ED%95%B4%EC%84%9C-%EC%9E%91%EC%97%85%ED%95%98%EA%B8%B0</guid>
            <pubDate>Mon, 03 Jan 2022 08:43:44 GMT</pubDate>
            <description><![CDATA[<blockquote>
<h3 id="1-프로젝트가-맞게-import-되었다면-git-bash-에서-자신의-깃허브-계정-설정해주기">1. 프로젝트가 맞게 import 되었다면 git bash 에서 자신의 깃허브 계정 설정해주기</h3>
</blockquote>
<pre><code>$ git config --global user.email &quot;이메일주소&quot;</code></pre><blockquote>
<h3 id="2-프로젝트-경로로-이동">2. 프로젝트 경로로 이동</h3>
<p>cd 프로젝트 경로/프로젝트 명
예시) </p>
</blockquote>
<pre><code>$ cd /c/testenv/sts3work/guitest/</code></pre><blockquote>
<h3 id="3-브랜치-생성-후-브랜치로-이동-원격-저장소에도-생성한-브랜치-추가">3. 브랜치 생성 후 브랜치로 이동, 원격 저장소에도 생성한 브랜치 추가</h3>
</blockquote>
<pre><code>$ git branch km     ==&gt;km이라는 브랜치 생성
$ git checkout km   ==&gt; km 브랜치로 이동
$ git push origin km  ==&gt; 원격 저장소에 km 브랜치 추가</code></pre><blockquote>
<h3 id="4-원격-저장소에서-브랜치-추가-된-것-확인">4. 원격 저장소에서 브랜치 추가 된 것 확인</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/e667ae73-9b0d-4c17-84d0-7f27417890e1/013.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="5km-branch-에서-파일-수정-하고-master-branch-에서-pull--km-branch-에-push">5.km branch 에서 파일 수정 하고, master branch 에서 pull , km branch 에 push</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/b6b59035-7e1c-4f1e-82be-65b1246a8da5/014.png" alt="">
다음 명령어 입력하기!</p>
</blockquote>
<pre><code>$ git pull origin master   ==&gt; master 브랜치가 다른 사용자에 의해 변경되었을 수 있으니 달라진 내용이 있다면 가져오기 (가져오지 않으면 내 branch 에서의 수정 사항이 push 되지 않음)
$ git add --all         ==&gt; 현재 디렉토리의 전체 파일을 스테이징 영역에 추가
$ git commit -m &quot;km&quot;  ==&gt; 스테이징 영역에 올라온 파일을 내 로컬 저장소에 커밋, 커밋 메세지는 &quot;km&quot; 로 설정
$ git push origin km  ==&gt; 지역 저장소에 올라온 파일을 origin(깃허브 원격 저장소의 별칭) 의 km 브랜치에 모두 업로드하겠다는 의미</code></pre><blockquote>
<h3 id="7-해당-branch-에-정상적으로-업로드-되었는지-확인">7. 해당 branch 에 정상적으로 업로드 되었는지 확인</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/0e31978d-6139-48a2-baaf-29ceb8b8e083/015.png" alt="">
<img src="https://images.velog.io/images/kyumin__/post/a2fb57dd-2dc7-41db-8634-f80d1091f890/016.png" alt=""></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Git] 팀 프로젝트 환경 구성 - 1. 프로젝트 clone]]></title>
            <link>https://velog.io/@kyumin__/Git-%ED%8C%80-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%84%B1-1.-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-clone</link>
            <guid>https://velog.io/@kyumin__/Git-%ED%8C%80-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%84%B1-1.-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-clone</guid>
            <pubDate>Mon, 03 Jan 2022 07:33:45 GMT</pubDate>
            <description><![CDATA[<blockquote>
<h3 id="1-프로젝트-가져올-경로-확인">1. 프로젝트 가져올 경로 확인</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/8908bc8e-94bb-4c45-9c54-3b7bb8d6959a/001.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="2-깃허브에서-원격-저장소-주소-복사-복사하고-싶은-프로젝트의-원격-저장소-주소">2. 깃허브에서 원격 저장소 주소 복사 (복사하고 싶은 프로젝트의 원격 저장소 주소)</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/225ff3c0-8b86-4aa4-8e8a-a7d06cfe218c/002.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="3-git-bash-실행-후--1의-프로젝트-가져올-경로로-이동하기">3. Git bash 실행 후 , 1의 프로젝트 가져올 경로로 이동하기</h3>
<h3 id="이동-후에-git-clone--2에서-복사한-원격저장소-복붙shiftins">이동 후에 git clone + 2에서 복사한 원격저장소 복붙(shift+ins)</h3>
<p>cf) cd 명령어 :  change directory,  폴더 이동 명령어
    git clone : 프로젝트 복제
<img src="https://images.velog.io/images/kyumin__/post/0db75ac7-1350-48bd-b0e7-bf034111ebe9/003.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="4-1번의-경로에-프로젝트-복사된-것-확인">4. 1번의 경로에 프로젝트 복사된 것 확인</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/769ae30e-917a-4d49-9e19-c9c8a09cdda8/004.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="5-이클립스sts에서-importexisting-maven-project---clone-해온-프로젝트-선택">5. 이클립스(sts)에서 import&gt;existing maven project &gt;  clone 해온 프로젝트 선택</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/3375cf05-d9b0-4451-9388-e45cb341ad83/005.png" alt="">
<img src="https://images.velog.io/images/kyumin__/post/c062b145-fa2b-484c-a1f4-d636b7066d2e/006.png" alt="">
<img src="https://images.velog.io/images/kyumin__/post/39b1d15a-485f-4466-8bde-c612c6909cba/007.png" alt="">
<img src="https://images.velog.io/images/kyumin__/post/c46e8cc0-39f6-4cdf-b493-b0db69d34433/008.png" alt="">
<img src="https://images.velog.io/images/kyumin__/post/30809182-cdf0-4ae3-891a-8bde72e6b0db/009.png" alt=""></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[@Valid 어노테이션으로 유효성 검사하기]]></title>
            <link>https://velog.io/@kyumin__/Valid-%EC%96%B4%EB%85%B8%ED%85%8C%EC%9D%B4%EC%85%98%EC%9C%BC%EB%A1%9C-%EC%9C%A0%ED%9A%A8%EC%84%B1-%EA%B2%80%EC%82%AC%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@kyumin__/Valid-%EC%96%B4%EB%85%B8%ED%85%8C%EC%9D%B4%EC%85%98%EC%9C%BC%EB%A1%9C-%EC%9C%A0%ED%9A%A8%EC%84%B1-%EA%B2%80%EC%82%AC%ED%95%98%EA%B8%B0</guid>
            <pubDate>Sun, 02 Jan 2022 12:28:17 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>지금까지는 Errors 객체로 입력 항목에 대한 유효성을 검증했지만 이번에는 @valid 어노테이션을 사용해보고자 함!</p>
</blockquote>
<blockquote>
<h3 id="1pomxml에-의존설정-추가">&gt; 1.pom.xml에 의존설정 추가</h3>
</blockquote>
<pre><code>    &lt;!-- @Valid 사용하기 위해 필요한 라이브러리 --&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;org.hibernate&lt;/groupId&gt;
        &lt;artifactId&gt;hibernate-validator&lt;/artifactId&gt;
        &lt;version&gt;5.1.3.Final&lt;/version&gt;
    &lt;/dependency&gt;
    &lt;!-- jdk 11의 경우 추가 --&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;javax.xml.bind&lt;/groupId&gt;
        &lt;artifactId&gt;jaxb-api&lt;/artifactId&gt;
        &lt;version&gt;2.3.0-b170201.1204&lt;/version&gt;
    &lt;/dependency&gt;</code></pre><blockquote>
<h3 id="2-controller에서--유효성-검사할-항목을-담고있는-커맨드-객체에-valid-어노테이션-지정">&gt; 2. controller에서 , 유효성 검사할 항목을 담고있는 커맨드 객체에 @Valid 어노테이션 지정</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/b6a2ade7-91f2-418d-8178-f60f93ef5555/01.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="3-command-객체-클래스에-가서-검증할-항목-설정">&gt; 3. command 객체 클래스에 가서 검증할 항목 설정</h3>
<pre><code>예시) 
@Length(min=2,max=5, message=&quot;제목은 2자 이상, 5자 미만으로 입력하세요&quot;)
@NotEmpty(message=&quot;필수 항목입니다&quot;)
등등..</code></pre><p>   <img src="https://images.velog.io/images/kyumin__/post/07ad235a-8c1e-4e69-bf79-51dea6fa0c0d/02.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="4-에러-메세지를-보여주고-싶은-위치에-formerrors-tag-삽입하기-서버에서만-알고싶으면-안보여줘도됌">&gt;   4. 에러 메세지를 보여주고 싶은 위치에 <a href="form:errors">form:errors</a> tag 삽입하기 (서버에서만 알고싶으면 안보여줘도됌)</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/948c5da7-dcae-4a1a-a425-fba22fd92347/04.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="5-로그인-페이지에서-아무것도-입력하지-않고-요청해보면-4에서-설정한-위치에-에러-메세지가-잘-출력되는-것을-볼-수-있다">&gt; 5. 로그인 페이지에서 아무것도 입력하지 않고 요청해보면 4에서 설정한 위치에 에러 메세지가 잘 출력되는 것을 볼 수 있다</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/298f0b56-dce4-45e6-97af-032dc93eb57c/03.png" alt=""></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Spring] STS3으로 스프링 개발 환경 구축하기]]></title>
            <link>https://velog.io/@kyumin__/Spring-STS3%EC%9C%BC%EB%A1%9C-%EC%8A%A4%ED%94%84%EB%A7%81-%EA%B0%9C%EB%B0%9C-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@kyumin__/Spring-STS3%EC%9C%BC%EB%A1%9C-%EC%8A%A4%ED%94%84%EB%A7%81-%EA%B0%9C%EB%B0%9C-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0</guid>
            <pubDate>Wed, 29 Dec 2021 04:57:24 GMT</pubDate>
            <description><![CDATA[<h3 id="sts--spring-tool-suite-의-약자로-스프링-개발에-최적화된-ecplise라고-생각하면-된다---eclipsespring-framework-plugin">&gt; STS ? Spring Tool Suite 의 약자로, 스프링 개발에 최적화된 ecplise라고 생각하면 된다 -&gt; eclipse+spring framework plugin</h3>
<blockquote>
<p><strong>준비물</strong>
    -STS3  <a href="https://download.springsource.com/release/STS/3.9.18.RELEASE/dist/e4.21/spring-tool-suite-3.9.18.RELEASE-e4.21.0-win32-x86_64.zip">windows용 다운로드</a>
     (* 리눅스나 맥 환경일 경우 클릭 <a href="https://github.com/spring-projects/toolsuite-distribution/wiki/Spring-Tool-Suite-3">다운로드 링크</a>)
    - jdk11 </p>
</blockquote>
<blockquote>
<p>  c 드라이브 아래에 작업 폴더(testenv) 생성 후 그 폴더 안에
      -workspace 폴더(sts3work) 생성
    -sts 파일 압축 풀기
    -설치된 톰캣 폴더 붙여넣기 (선택)</p>
</blockquote>
<blockquote>
<p><strong>testenv 는 내 작업 폴더
네모 안의 경로로 가서 STS.exe 실행 후 위에서 생성한 workspace 폴더 지정해주기</strong>
<img src="https://images.velog.io/images/kyumin__/post/f044578d-7c47-4f56-9f4e-85077c3ed01e/000.png" alt="">
<img src="https://images.velog.io/images/kyumin__/post/ccb90e22-6fdb-49d2-999f-9c016e15f0fd/000.png" alt=""></p>
</blockquote>
<blockquote>
<p><strong>STS 실행 후 Spring legacy project 생성 
 spring boot의 경우 Spring starter project 로 생성해주기</strong>
<img src="https://images.velog.io/images/kyumin__/post/66986d02-cc19-423d-89d5-dbb46b53fb0a/001.png" alt=""></p>
</blockquote>
<blockquote>
<p><strong>프로젝트명 작성
Spring MVC project 선택</strong>
<img src="https://images.velog.io/images/kyumin__/post/e6491511-e370-43d5-8920-e03dcc8e5f1b/002.png" alt=""></p>
</blockquote>
<blockquote>
<p><strong>형식에 맞게 이름 적어주기
.과 . 사이에 문자열이 들어가야함</strong>
<img src="https://images.velog.io/images/kyumin__/post/9f69e98c-79da-4927-a431-2010de77ba06/003.png" alt=""></p>
</blockquote>
<blockquote>
<p><strong>&gt; pom.xml 수정</strong></p>
</blockquote>
<ol>
<li>java-version (jdk 11은 1.8과 하위호환됨) 수정 / 스프링 버전 수정
<img src="https://images.velog.io/images/kyumin__/post/8999c4aa-4ba5-4a6e-aaef-d224445957d9/004.png" alt=""></li>
<li>jsp 관련 의존 수정
<img src="https://images.velog.io/images/kyumin__/post/bf4240eb-4359-4326-aaf5-ae29f2b084b0/005.png" alt=""></li>
<li>빌드할 java-version 수정
<img src="https://images.velog.io/images/kyumin__/post/7a7e487a-8db8-4130-b498-d0df90ae77f2/006.png" alt=""></li>
</ol>
<p>pom.xml 전체코드 (필요시 복붙)</p>
<pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
    xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd&quot;&gt;
    &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
    &lt;groupId&gt;org.test&lt;/groupId&gt;
    &lt;artifactId&gt;www&lt;/artifactId&gt;
    &lt;name&gt;exam&lt;/name&gt;
    &lt;packaging&gt;war&lt;/packaging&gt;
    &lt;version&gt;1.0.0-BUILD-SNAPSHOT&lt;/version&gt;
    &lt;properties&gt;
        &lt;java-version&gt;1.8&lt;/java-version&gt;
        &lt;org.springframework-version&gt;4.3.25.RELEASE&lt;/org.springframework-version&gt;
        &lt;org.aspectj-version&gt;1.6.10&lt;/org.aspectj-version&gt;
        &lt;org.slf4j-version&gt;1.6.6&lt;/org.slf4j-version&gt;
    &lt;/properties&gt;
    &lt;dependencies&gt;
        &lt;!-- Spring --&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;org.springframework&lt;/groupId&gt;
            &lt;artifactId&gt;spring-context&lt;/artifactId&gt;
            &lt;version&gt;${org.springframework-version}&lt;/version&gt;
            &lt;exclusions&gt;
                &lt;!-- Exclude Commons Logging in favor of SLF4j --&gt;
                &lt;exclusion&gt;
                    &lt;groupId&gt;commons-logging&lt;/groupId&gt;
                    &lt;artifactId&gt;commons-logging&lt;/artifactId&gt;
                 &lt;/exclusion&gt;
            &lt;/exclusions&gt;
        &lt;/dependency&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;org.springframework&lt;/groupId&gt;
            &lt;artifactId&gt;spring-webmvc&lt;/artifactId&gt;
            &lt;version&gt;${org.springframework-version}&lt;/version&gt;
        &lt;/dependency&gt;

        &lt;!-- AspectJ --&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;org.aspectj&lt;/groupId&gt;
            &lt;artifactId&gt;aspectjrt&lt;/artifactId&gt;
            &lt;version&gt;${org.aspectj-version}&lt;/version&gt;
        &lt;/dependency&gt;    

        &lt;!-- Logging --&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;org.slf4j&lt;/groupId&gt;
            &lt;artifactId&gt;slf4j-api&lt;/artifactId&gt;
            &lt;version&gt;${org.slf4j-version}&lt;/version&gt;
        &lt;/dependency&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;org.slf4j&lt;/groupId&gt;
            &lt;artifactId&gt;jcl-over-slf4j&lt;/artifactId&gt;
            &lt;version&gt;${org.slf4j-version}&lt;/version&gt;
            &lt;scope&gt;runtime&lt;/scope&gt;
        &lt;/dependency&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;org.slf4j&lt;/groupId&gt;
            &lt;artifactId&gt;slf4j-log4j12&lt;/artifactId&gt;
            &lt;version&gt;${org.slf4j-version}&lt;/version&gt;
            &lt;scope&gt;runtime&lt;/scope&gt;
        &lt;/dependency&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;log4j&lt;/groupId&gt;
            &lt;artifactId&gt;log4j&lt;/artifactId&gt;
            &lt;version&gt;1.2.15&lt;/version&gt;
            &lt;exclusions&gt;
                &lt;exclusion&gt;
                    &lt;groupId&gt;javax.mail&lt;/groupId&gt;
                    &lt;artifactId&gt;mail&lt;/artifactId&gt;
                &lt;/exclusion&gt;
                &lt;exclusion&gt;
                    &lt;groupId&gt;javax.jms&lt;/groupId&gt;
                    &lt;artifactId&gt;jms&lt;/artifactId&gt;
                &lt;/exclusion&gt;
                &lt;exclusion&gt;
                    &lt;groupId&gt;com.sun.jdmk&lt;/groupId&gt;
                    &lt;artifactId&gt;jmxtools&lt;/artifactId&gt;
                &lt;/exclusion&gt;
                &lt;exclusion&gt;
                    &lt;groupId&gt;com.sun.jmx&lt;/groupId&gt;
                    &lt;artifactId&gt;jmxri&lt;/artifactId&gt;
                &lt;/exclusion&gt;
            &lt;/exclusions&gt;
            &lt;scope&gt;runtime&lt;/scope&gt;
        &lt;/dependency&gt;

        &lt;!-- @Inject --&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;javax.inject&lt;/groupId&gt;
            &lt;artifactId&gt;javax.inject&lt;/artifactId&gt;
            &lt;version&gt;1&lt;/version&gt;
        &lt;/dependency&gt;

        &lt;!-- Servlet --&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;javax.servlet&lt;/groupId&gt;
            &lt;artifactId&gt;javax.servlet-api&lt;/artifactId&gt;
            &lt;version&gt;3.0.1&lt;/version&gt;
            &lt;scope&gt;provided&lt;/scope&gt;
        &lt;/dependency&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;javax.servlet.jsp&lt;/groupId&gt;
            &lt;artifactId&gt;jsp-api&lt;/artifactId&gt;
            &lt;version&gt;2.2&lt;/version&gt;
            &lt;scope&gt;provided&lt;/scope&gt;
        &lt;/dependency&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;javax.servlet&lt;/groupId&gt;
            &lt;artifactId&gt;jstl&lt;/artifactId&gt;
            &lt;version&gt;1.2&lt;/version&gt;
        &lt;/dependency&gt;

        &lt;!-- Test --&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;junit&lt;/groupId&gt;
            &lt;artifactId&gt;junit&lt;/artifactId&gt;
            &lt;version&gt;4.7&lt;/version&gt;
            &lt;scope&gt;test&lt;/scope&gt;
        &lt;/dependency&gt;        
    &lt;/dependencies&gt;
    &lt;build&gt;
        &lt;plugins&gt;
            &lt;plugin&gt;
                &lt;artifactId&gt;maven-eclipse-plugin&lt;/artifactId&gt;
                &lt;version&gt;2.9&lt;/version&gt;
                &lt;configuration&gt;
                    &lt;additionalProjectnatures&gt;
                        &lt;projectnature&gt;org.springframework.ide.eclipse.core.springnature&lt;/projectnature&gt;
                    &lt;/additionalProjectnatures&gt;
                    &lt;additionalBuildcommands&gt;
                        &lt;buildcommand&gt;org.springframework.ide.eclipse.core.springbuilder&lt;/buildcommand&gt;
                    &lt;/additionalBuildcommands&gt;
                    &lt;downloadSources&gt;true&lt;/downloadSources&gt;
                    &lt;downloadJavadocs&gt;true&lt;/downloadJavadocs&gt;
                &lt;/configuration&gt;
            &lt;/plugin&gt;
            &lt;plugin&gt;
                &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
                &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
                &lt;version&gt;2.5.1&lt;/version&gt;
                &lt;configuration&gt;
                    &lt;source&gt;${java-version}&lt;/source&gt;
                    &lt;target&gt;${java-version}&lt;/target&gt;
                    &lt;compilerArgument&gt;-Xlint:all&lt;/compilerArgument&gt;
                    &lt;showWarnings&gt;true&lt;/showWarnings&gt;
                    &lt;showDeprecation&gt;true&lt;/showDeprecation&gt;
                &lt;/configuration&gt;
            &lt;/plugin&gt;
            &lt;plugin&gt;
                &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;
                &lt;artifactId&gt;exec-maven-plugin&lt;/artifactId&gt;
                &lt;version&gt;1.2.1&lt;/version&gt;
                &lt;configuration&gt;
                    &lt;mainClass&gt;org.test.int1.Main&lt;/mainClass&gt;
                &lt;/configuration&gt;
            &lt;/plugin&gt;
        &lt;/plugins&gt;
    &lt;/build&gt;
&lt;/project&gt;
</code></pre><blockquote>
<p><strong>&gt; pom.xml 수정 후 maven update</strong>
<img src="https://images.velog.io/images/kyumin__/post/11313ac3-a851-4394-9d68-36995543d8d3/007.png" alt=""></p>
</blockquote>
<h3 id="이클립스-톰캣-연동은--요기로">이클립스-톰캣 연동은  <a href="https://velog.io/@kyumin__/Eclipse-Tomcat-%EC%97%B0%EB%8F%99%ED%95%98%EA%B8%B0">요기로</a></h3>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Spring] 스프링 프로젝트에 lombok 라이브러리 추가,설치하기 ]]></title>
            <link>https://velog.io/@kyumin__/Spring-%EC%8A%A4%ED%94%84%EB%A7%81-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EC%97%90-lombok-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-%EC%B6%94%EA%B0%80%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@kyumin__/Spring-%EC%8A%A4%ED%94%84%EB%A7%81-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EC%97%90-lombok-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-%EC%B6%94%EA%B0%80%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0</guid>
            <pubDate>Fri, 24 Dec 2021 04:30:57 GMT</pubDate>
            <description><![CDATA[<blockquote>
<ol>
<li>pom.xml에 의존 설정 추가</li>
</ol>
</blockquote>
<pre><code>      &lt;!-- lombok 라이브러리 --&gt;
      &lt;dependency&gt;
          &lt;groupId&gt;org.projectlombok&lt;/groupId&gt;
          &lt;artifactId&gt;lombok&lt;/artifactId&gt;
          &lt;version&gt;1.18.6&lt;/version&gt;
      &lt;/dependency&gt;</code></pre><p>추가 후 메이븐 업데이트</p>
<blockquote>
<ol start="2">
<li>Java Resources&gt;Libraries&gt;Maven Dependencies 에서 lombok.jar 우클릭 후 실행
(또는 환경변수가 설정된 경우 cmd 창에서 명령어로 해도 됨)
<img src="https://images.velog.io/images/kyumin__/post/9e46229e-63d0-4ac6-b1e0-ad665408a825/01.png" alt=""></li>
</ol>
</blockquote>
<blockquote>
<ol start="3">
<li>Specify location 클릭 후 <strong>eclipse.exe</strong> 선택
<img src="https://images.velog.io/images/kyumin__/post/d10e0bbd-081f-48f0-bb25-8438b2afb033/02.png" alt="">
<img src="https://images.velog.io/images/kyumin__/post/4c2a6776-a411-4f50-9a6c-ec86e260adb1/03.png" alt=""></li>
</ol>
</blockquote>
<blockquote>
<p>4.Install&amp;Update 완료 후 이클립스 종료&amp;재실행
<img src="https://images.velog.io/images/kyumin__/post/7eaa2513-c5cc-45c0-a09d-71885e710213/04.png" alt=""></p>
</blockquote>
<blockquote>
<ol start="5">
<li>vo(dto)  class 에서 어노테이션 사용해보기
<img src="https://images.velog.io/images/kyumin__/post/2e5ff05b-3377-4c29-bd52-1e578c59dd08/05.png" alt=""></li>
</ol>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[깃허브 토큰 생성]]></title>
            <link>https://velog.io/@kyumin__/%EA%B9%83%ED%97%88%EB%B8%8C-%ED%86%A0%ED%81%B0-%EC%83%9D%EC%84%B1</link>
            <guid>https://velog.io/@kyumin__/%EA%B9%83%ED%97%88%EB%B8%8C-%ED%86%A0%ED%81%B0-%EC%83%9D%EC%84%B1</guid>
            <pubDate>Fri, 24 Dec 2021 01:13:11 GMT</pubDate>
            <description><![CDATA[<blockquote>
<ol>
<li>깃허브 홈페이지 <a href="https://github.com/">바로가기</a>
<img src="https://images.velog.io/images/kyumin__/post/bfe8dc90-6fb1-4b8a-889e-8efc68933007/001.png" alt=""></li>
</ol>
</blockquote>
<blockquote>
<ol start="2">
<li>로그인 ( 계정 없으면 회원가입~) 후 우층 상단의 프로필 아이콘 클릭 &gt; Settings
<img src="https://images.velog.io/images/kyumin__/post/7336ea64-c87b-4b60-8657-72892b65034e/002.png" alt=""></li>
</ol>
</blockquote>
<blockquote>
<ol start="3">
<li>좌측 하단의 Developer settings
<img src="https://images.velog.io/images/kyumin__/post/7a666d93-86a2-43f3-a41c-df504d223682/003.png" alt=""></li>
</ol>
</blockquote>
<blockquote>
<ol start="4">
<li>Personal access tokens &gt; Generate new token
<img src="https://images.velog.io/images/kyumin__/post/9687ff98-b431-46c1-baf5-77e4e887c0df/004.png" alt=""></li>
</ol>
</blockquote>
<blockquote>
<ol start="5">
<li>Note : 토큰 사용 목적 (자유롭게 작성)
 Expiration : 토큰 유효기간 (귀찮은거 싫으니께 나는 그냥 유효기간 없게 설정함)
 Select scopes : 토큰 권한 (그냥 프로젝트 올리는 용도인데 뭔지 모르겠어서 그냥 다 설정함)
<img src="https://images.velog.io/images/kyumin__/post/c2cb6abb-9e79-42fa-b84d-0c7cce8b955f/005.png" alt=""></li>
</ol>
</blockquote>
<blockquote>
<ol start="6">
<li>Generate token
<img src="https://images.velog.io/images/kyumin__/post/f9e4dc6a-fcdc-4502-93bb-a062fc49c364/006.png" alt=""></li>
</ol>
</blockquote>
<blockquote>
<h3 id="7-토큰-다시는-열람할수-없으니까-잘-복사해서-저장해놓기">&gt; 7. 토큰 다시는 열람할수 없으니까 잘 복사해서 저장해놓기!!!</h3>
<p>나중에 깃허브-이클립스 연동할때 실제 비밀번호 대신 토큰이 필요함
<img src="https://images.velog.io/images/kyumin__/post/f2b1324a-709b-41de-9f88-e961c821026d/007.png" alt=""></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[이클립스에서 깃허브 연동하기]]></title>
            <link>https://velog.io/@kyumin__/%EC%9D%B4%ED%81%B4%EB%A6%BD%EC%8A%A4%EC%97%90%EC%84%9C-%EA%B9%83%ED%97%88%EB%B8%8C-%EC%97%B0%EB%8F%99%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@kyumin__/%EC%9D%B4%ED%81%B4%EB%A6%BD%EC%8A%A4%EC%97%90%EC%84%9C-%EA%B9%83%ED%97%88%EB%B8%8C-%EC%97%B0%EB%8F%99%ED%95%98%EA%B8%B0</guid>
            <pubDate>Fri, 24 Dec 2021 01:07:39 GMT</pubDate>
            <description><![CDATA[<blockquote>
<ol>
<li>프로젝트 우클릭&gt; Team&gt; Share project
<img src="https://images.velog.io/images/kyumin__/post/6ae62388-f74f-412f-ac92-6634b618cbfa/01.png" alt=""></li>
</ol>
</blockquote>
<blockquote>
<ol start="2">
<li>로컬 저장소 생성
<img src="https://images.velog.io/images/kyumin__/post/3d06d37e-b897-40e7-8ca3-ceb392cf0ed6/02.png" alt=""></li>
</ol>
</blockquote>
<blockquote>
<ol start="3">
<li>Git Repositories tab 에서 프로젝트 클릭&gt;Remote 우클릭&gt; Create Remote</li>
</ol>
</blockquote>
<ul>
<li>탭이 없다면 이클립스 상단의 Window &gt; show View &gt; other &gt; git 검색 후 
Git Repositories , Git Staging 탭 두개 모두 추가해놓기!
<img src="https://images.velog.io/images/kyumin__/post/11fc7d1d-91c5-4c44-bbfe-5b93e33551f3/03.png" alt=""></li>
</ul>
<blockquote>
<ol start="4">
<li>원격 저장소와 연결할 이름(별칭..?) 지정하기
<img src="https://images.velog.io/images/kyumin__/post/d2177236-dad9-40f8-8ea6-de6edb0595ff/04.png" alt=""></li>
</ol>
</blockquote>
<blockquote>
<ol start="5">
<li>프로젝트를 올릴 원격 저장소 지정하기
<img src="https://images.velog.io/images/kyumin__/post/c87369db-6b10-478c-b42f-e28a4777ae48/05.png" alt=""></li>
</ol>
</blockquote>
<blockquote>
<ol start="6">
<li>URI = 원격 저장소의 주소 (깃허브에서 repository 주소 복사해오기)
User = 깃허브 닉네임 또는 이메일 주소
Password = 깃허브 토큰 입력 =&gt; <a href="https://velog.io/@kyumin__/%EA%B9%83%ED%97%88%EB%B8%8C-%ED%86%A0%ED%81%B0-%EC%83%9D%EC%84%B1">토큰 만드는 방법</a>
나중에 치기 귀찮으니까 자동완성 되라고 Store in Secure Store 체크 (선택사항)
<img src="https://images.velog.io/images/kyumin__/post/8ef8d143-1971-4310-871e-557a3c0e23f5/06.png" alt=""></li>
</ol>
</blockquote>
<blockquote>
<ol start="7">
<li>원격 저장소 주소 확인하고 Save
<img src="https://images.velog.io/images/kyumin__/post/174f9a49-28b5-4d07-8831-4966067df545/07.png" alt=""></li>
</ol>
</blockquote>
<blockquote>
<ol start="8">
<li>Git staging tab에 가서 올릴 파일 추가, Commit Message 작성 (자유롭게)
<img src="https://images.velog.io/images/kyumin__/post/537218e4-9c43-4e06-81e2-a0830958727c/08.png" alt="">
<img src="https://images.velog.io/images/kyumin__/post/2d4675cb-b96d-4432-9999-cb16d8a3732b/09.png" alt=""></li>
</ol>
</blockquote>
<blockquote>
<p>9
<img src="https://images.velog.io/images/kyumin__/post/7ad81fea-5c86-4691-929b-ef3f842c586c/10.png" alt=""></p>
</blockquote>
<blockquote>
<p>10 . 원격 저장소에 push
<img src="https://images.velog.io/images/kyumin__/post/376d5641-e674-45f2-a6c8-90b6237670fe/11.png" alt=""></p>
</blockquote>
<blockquote>
<p>11
<img src="https://images.velog.io/images/kyumin__/post/60696aaf-57da-4d6a-b95d-d0a1b1f67e51/12.png" alt=""></p>
</blockquote>
<blockquote>
<p>12 . 깃허브에 프로젝트 올라온거 확인!
<img src="https://images.velog.io/images/kyumin__/post/2c9445aa-9160-4d38-aefb-f4c7cacb85ac/13.png" alt=""></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Spring] MultipartFile 인터페이스를 이용해서 파일 업로드 하기]]></title>
            <link>https://velog.io/@kyumin__/Spring-MultipartFile-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4%EC%84%9C-%ED%8C%8C%EC%9D%BC-%EC%97%85%EB%A1%9C%EB%93%9C-%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@kyumin__/Spring-MultipartFile-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4%EC%84%9C-%ED%8C%8C%EC%9D%BC-%EC%97%85%EB%A1%9C%EB%93%9C-%ED%95%98%EA%B8%B0</guid>
            <pubDate>Fri, 24 Dec 2021 00:51:38 GMT</pubDate>
            <description><![CDATA[<blockquote>
<ol>
<li>pom.xml에 의존 설정 추가
<img src="https://images.velog.io/images/kyumin__/post/ce585034-acb0-431a-84da-5ff1dd8cc3aa/01.png" alt=""></li>
</ol>
</blockquote>
<pre><code>    코드
    &lt;!-- CommnsMultipartResolver --&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;commons-io&lt;/groupId&gt;
        &lt;artifactId&gt;commons-io&lt;/artifactId&gt;
        &lt;version&gt;2.0.1&lt;/version&gt;
    &lt;/dependency&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;commons-fileupload&lt;/groupId&gt;
        &lt;artifactId&gt;commons-fileupload&lt;/artifactId&gt;
        &lt;version&gt;1.2.2&lt;/version&gt;
    &lt;/dependency&gt;</code></pre><blockquote>
<ol start="2">
<li>설정파일에 bean 등록
<img src="https://images.velog.io/images/kyumin__/post/3c4003bb-bf2c-4367-9acc-42214984c310/02.png" alt=""></li>
</ol>
</blockquote>
<pre><code>코드
    &lt;!-- MultipartResolver --&gt;
    &lt;bean id=&quot;multipartResolver&quot; class=&quot;org.springframework.web.multipart.commons.CommonsMultipartResolver&quot;&gt;
        &lt;property name=&quot;maxUploadSize&quot; value=&quot;1000000000&quot;/&gt;
        &lt;property name=&quot;maxInMemorySize&quot; value=&quot;1000000000&quot;&gt;&lt;/property&gt;
    &lt;/bean&gt;</code></pre><blockquote>
<ol start="3">
<li>form의 enctype 설정</li>
</ol>
</blockquote>
<ul>
<li>주의 )form의 encType=&quot;multipart/form-data&quot; 인 경우 나중에 전송한 paramter 를 가져올 때 위 1,2의 의존설정이 필요하다
<img src="https://images.velog.io/images/kyumin__/post/2d2708de-7ce4-4edf-a8fd-3f112fdd9973/03.png" alt=""></li>
</ul>
<blockquote>
<ol start="4">
<li>input type의 name 설정 (자유, 나중에 어노테이션으로 받을 때 이 이름을 사용해야 함)
<img src="https://images.velog.io/images/kyumin__/post/38867ced-06e1-4216-a9ef-fc77d3df5388/04.png" alt=""></li>
</ol>
</blockquote>
<blockquote>
<ol start="5">
<li>controller에서 MultipartFile 인터페이스로 업로드한 파일 가져오기
@RequestParam 어노테이션 값을 4번의 input type name과 일치시키기
<img src="https://images.velog.io/images/kyumin__/post/47ba9caf-044b-43e0-ac0b-6bf36e59f94a/05.png" alt=""></li>
</ol>
</blockquote>
<blockquote>
<p> 6.파일 객체를 이용해서 파일 저장 경로 지정 
transferTo(File f) : 파일 업로드 메서드
<img src="https://images.velog.io/images/kyumin__/post/251ebbe0-29df-4105-bbbd-944fd4b9a5c2/06.png" alt=""></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[Eclipse에서 maven project import하기]]></title>
            <link>https://velog.io/@kyumin__/Eclipse%EC%97%90%EC%84%9C-maven-project-import%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@kyumin__/Eclipse%EC%97%90%EC%84%9C-maven-project-import%ED%95%98%EA%B8%B0</guid>
            <pubDate>Tue, 21 Dec 2021 01:33:39 GMT</pubDate>
            <description><![CDATA[<p>먼저 maven project export 할 때  General&gt;Archive file 로 export 해야 함 
(war 파일로 하면 빌드된 클래스만 export되기 때문에)</p>
<p>그럼 export된 파일을 다운 받고, 압축 푼 다음에</p>
<p>이클립스에서 import 할 때는 existing maven project 선택 후 , advanced tab 에 import 할 이름 작성해주고 finish 누르면 끝</p>
<p>========================================================================</p>
<h2 id="수정">수정</h2>
<p>*<em>war 파일로 export 할때 <img src="https://images.velog.io/images/kyumin__/post/4a7211f3-91a8-4410-90a4-6eec35861bdc/01.png" alt="">
이 부분 체크하고 내보내기 하면 소스코드도 같이 내보내짐(대충 보고 넘기지 말고 글좀 읽자..)
import 할때 war 파일로 import 한 후 maven project 맞춰서 필요한 xml만 추가해주면 됨
*</em></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Eclipse-Tomcat 연동하기]]></title>
            <link>https://velog.io/@kyumin__/Eclipse-Tomcat-%EC%97%B0%EB%8F%99%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@kyumin__/Eclipse-Tomcat-%EC%97%B0%EB%8F%99%ED%95%98%EA%B8%B0</guid>
            <pubDate>Tue, 14 Dec 2021 02:06:09 GMT</pubDate>
            <description><![CDATA[<blockquote>
<h3 id="1-프로젝트-우클릭--build-path">1. 프로젝트 우클릭 &gt; build path</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/92e3e54a-43be-49c1-9af3-ae6cccf0e91e/07.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="2-libraries-tab--add-library">2. Libraries tab -&gt;Add library</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/0c45886b-3e69-403d-b973-d8b1063d339c/08.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="3-server-runtime">3. Server Runtime</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/3e41d4d0-8821-4549-87f3-13beb93edcfc/09.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="4-톰캣-선택-후-finish">4. 톰캣 선택 후 finish</h3>
<h3 id="여기에서-아무것도-나오지-않으면-5번으로">**여기에서 아무것도 나오지 않으면 5번으로</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/79bf9b3b-b4b5-49ab-bd37-ea2da240f5a3/10.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="추가된-것-확인">추가된 것 확인</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/915adc66-db74-4dd7-be45-515564ecd850/11.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="4번-목록에서-아무것도-나오지-않았으면-이클립스에-톰캣-등록-먼저-해줘야함">4번 목록에서 아무것도 나오지 않았으면 이클립스에 톰캣 등록 먼저 해줘야함</h3>
<h3 id="5-window-tab--preferences">5. window tab &gt; Preferences</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/c78a286f-ebff-4a55-b0a0-6f61a901d4b3/12.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="6-serverruntime-environment">6. server&gt;Runtime Environment</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/89576bbd-d3f0-4dec-8a87-9db05119d431/13.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="7add">7.add</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/272a9aec-3c82-4ed4-851d-07206ca2e0fe/14.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="8-다운로드한-톰캣-버전과-일치하는-것-선택">8. 다운로드한 톰캣 버전과 일치하는 것 선택</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/ea5f2230-56a6-4e41-90b3-6d13e211db7c/15.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="9-톰캣-다운로드한-위치-지정--jre-지정">9. 톰캣 다운로드한 위치 지정 , JRE 지정</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/806ea4c3-6f42-4b9e-ade8-d6e52f2aeae4/16.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="10-추가-완료--이제-다시-1번부터-4번까지-순서대로-하면-됨">10. 추가 완료 =&gt; 이제 다시 1번부터 4번까지 순서대로 하면 됨</h3>
<p><img src="https://images.velog.io/images/kyumin__/post/9d9aed10-a795-45f7-96e0-23c1150de3ce/17.png" alt=""></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Spring] Maven project로 웹 프로젝트 생성하기]]></title>
            <link>https://velog.io/@kyumin__/Spring-Maven-project%EB%A1%9C-%EC%9B%B9-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@kyumin__/Spring-Maven-project%EB%A1%9C-%EC%9B%B9-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0</guid>
            <pubDate>Tue, 14 Dec 2021 01:47:27 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/kyumin__/post/0abcbc09-edde-4ec7-b7b2-43566d616f5f/01.png" alt=""></p>
<p><img src="https://images.velog.io/images/kyumin__/post/f798d0e2-f13f-4bf6-b270-f4f8bd920042/02.png" alt=""></p>
<blockquote>
<p>패키징 옵션을 war로 변경하기
<img src="https://images.velog.io/images/kyumin__/post/cafa1463-3b82-400a-81d5-26ccbdba4825/03.png" alt=""></p>
</blockquote>
<blockquote>
<p>생성하고 나면 war 파일인데 web.xml이 없어서 에러가 뜸
<img src="https://images.velog.io/images/kyumin__/post/d7185ebb-23cd-4367-a1d3-ac1aa3a5f84a/04.png" alt=""></p>
</blockquote>
<blockquote>
<p>web.xml 생성해주기 (이클립스 자동기능)
<img src="https://images.velog.io/images/kyumin__/post/8c11678b-6436-427f-bd77-6d62b2ec3efa/05.png" alt=""></p>
</blockquote>
<blockquote>
<p>web.xml 생성된 것 확인!
<img src="https://images.velog.io/images/kyumin__/post/14a9e681-aa25-4343-8b12-2b00976e74d4/06.png" alt=""></p>
</blockquote>
]]></description>
        </item>
    </channel>
</rss>