<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>yu_jep.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Thu, 16 Dec 2021 12:13:33 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. yu_jep.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/yu_jep" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[TSL_2021.12.16]]></title>
            <link>https://velog.io/@yu_jep/TSL2021.12.16</link>
            <guid>https://velog.io/@yu_jep/TSL2021.12.16</guid>
            <pubDate>Thu, 16 Dec 2021 12:13:33 GMT</pubDate>
            <description><![CDATA[<h1 id="java-정리">JAVA 정리</h1>
<hr>
<h2 id="상속">상속+</h2>
<h3 id="super">super</h3>
<img src="https://images.velog.io/images/yu_jep/post/169acd44-93ea-44ef-91c0-e6a70f0f9fa4/super.png" width="80%">

<blockquote>
<p>super : 내가 상속받은 부모 class를 가르키는 키워드</p>
</blockquote>
<ul>
<li>super.함수() : 상속받은 부모 class의 모든 함수를 호출 할 수 있다.</li>
</ul>
<h3 id="오버로딩-overloading">오버로딩 (overloading)</h3>
<p>한 class 내에 동일한 이름의 메소드를 여러개 정의 하는 것</p>
<blockquote>
<p>&lt;조건&gt;</p>
</blockquote>
<ul>
<li>메소드 이름이 동일해야 한다. </li>
<li>매개변수의 개수 혹은 타입이 달라야한다.</li>
</ul>
<p>[부적합 코드]
<img src="https://images.velog.io/images/yu_jep/post/5b79ba29-6568-41d2-bbf6-20ae8cb0d2a2/%EC%98%A4%EB%B2%84%EB%A1%9C%EB%94%A9%20%EC%A1%B0%EA%B1%B4x.png" width="83%"></p>
<p>[정상 코드]
<img src="https://images.velog.io/images/yu_jep/post/65eb0d14-9519-4b47-9b6a-6dc94003a771/%EC%98%A4%EB%B2%84%EB%A1%9C%EB%94%A9%20%EC%82%AC%EC%A7%84%20%EC%88%98%EC%A0%953.png" width="56%"></p>
<h4 id="오버라이딩-overriding">오버라이딩 (overriding)</h4>
<p>부모 class로부터 상속받은 메소드의 내용을 변경 하는 것
상속받은 메소드를 그대로 사용하기도 하지만, 필요에 의해 변경해야 할 경우</p>
<blockquote>
<p>&lt;조건&gt;</p>
</blockquote>
<ul>
<li>부모 class의 메소드와 이름이 같아야 한다.</li>
<li>부모 class의 메소드와 매개변수가 같아야 한다.</li>
<li>부모 class의 메소드와 반환타입이 같아야 한다.</li>
</ul>
<p>[정상 코드]
<img src="https://images.velog.io/images/yu_jep/post/7c113d42-6355-451d-bd3c-6f008cd6cc64/%EC%98%A4%EB%B2%84%EB%9D%BC%EC%9D%B4%EB%94%A9%20%EC%88%98%EC%A0%95.png" width="60%"></p>
<hr>
<h3 id="예외에러처리">예외,에러처리</h3>
<p>[자바에 미리 정의 되어있는 예외 클래스]
<img src="https://images.velog.io/images/yu_jep/post/0d28b6e5-45cd-45ba-9be8-9eca869d3838/%EC%98%88%EC%99%B8%EC%B2%98%EB%A6%AC,%20%EC%97%90%EB%9F%AC%EC%B2%98%EB%A6%AC.png" width="90%"></p>
<p>[입력 방법]</p>
<pre><code class="language-java">try {
    // 예외가 발생할 가능성이 있는 코드를 구현한다.
} catch (FileNotFoundException e) {
    // FileNotFoundException이 발생했을 경우,이를 처리하기 위한 코드를 구현한다.
} catch (IOException e) {
    // FileNotFoundException이 아닌 IOException이 발생했을 경우,이를 처리하기 위한 코드를 구현한다.
} finally {
    // 예외의 발생여부에 관계없이 항상 수행되어야하는 코드를 구현한다.
}</code></pre>
<blockquote>
<p>하위 에러처리를 더 위의 catch문에 적어준다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[TSL_2021.12.14]]></title>
            <link>https://velog.io/@yu_jep/TSL2021.12.14-2ix99p6e</link>
            <guid>https://velog.io/@yu_jep/TSL2021.12.14-2ix99p6e</guid>
            <pubDate>Tue, 14 Dec 2021 12:23:41 GMT</pubDate>
            <description><![CDATA[<h2 id="java-정리">JAVA 정리</h2>
<h3 id="생성자란">생성자란?</h3>
<blockquote>
</blockquote>
<ul>
<li>인스턴스가 생성될 때 사용되는 &#39;인스턴스 초기화 메소드&#39; 입니다.</li>
<li>즉, new 와 같은 키워드로 해당 클래스의 인스턴스가 새로 생성될 때, 자동으로 호출되는 메소드입니다.</li>
<li>인스턴스 변수를 초기화 하는 용도로 사용합니다.</li>
</ul>
<h4 id="-작성-예시-">[ 작성 예시 ]</h4>
<pre><code class="language-java">class Phone {
    String model;
    String color;
    int price;

    // 생성자
    Phone(String model, String color, int price) {
        this.model = model;
        this.color = color;
        this.price = price;
    }
}

public class Main {
    public static void main(String[] args) {
        Phone galaxy = new Phone(&quot;Galaxy10&quot;, &quot;Black&quot;, 100);

        Phone iphone =new Phone(&quot;iPhoneX&quot;, &quot;Black&quot;, 200);

        System.out.println(&quot;철수는 이번에 &quot; + galaxy.model + galaxy.color + &quot; + 색상을 &quot; + galaxy.price + &quot;만원에 샀다.&quot;);
        System.out.println(&quot;영희는 이번에 &quot; + iphone.model + iphone.color + &quot; + 색상을 &quot; + iphone.price + &quot;만원에 샀다.&quot;);
    }
}</code></pre>
<h4 id="-동작-설명-">[ 동작 설명 ]</h4>
<img src="https://images.velog.io/images/yu_jep/post/e7d86d95-f781-4ef5-9906-45c550ca3e9e/%EC%83%9D%EC%84%B1%EC%9E%90%20%ED%9D%90%EB%A6%84.png" width="95%">

<ul>
<li>위 그림과 같이 new Phone(&quot;Galaxy10&quot;, &quot;Black&quot;, 100); 에서 새로운 인스턴스가 생성되면 Phoe class에서 새로운 생성자Phone(~, ~, ~) 를 만들어서 다시 정의해 주고 이 class를 활용에 사용한다. </li>
</ul>
<h4 id="만약-생성자를-만들어주지-않는다면">만약! 생성자를 만들어주지 않는다면?</h4>
<ul>
<li>class 에 선언된 변수는 instance 가 생성될 때 값이 초기화(initialize)된다. 
이 때, 변수의 선언부나 생성자를 통해서 초기화를 해주지 않는다면, 기본값(default value)를 가지게 된다. -&gt; 기본값 ex) 0, 0.0, null </li>
</ul>
<h3 id="상속이란">상속이란?</h3>
<blockquote>
</blockquote>
<ul>
<li>상속이란 기존의 클래스를 재사용하는 방식 중의 하나입니다.</li>
<li>한 번 작성한 코드가 재사용이 필요하다면, 변경사항만 코드로 작성하므로 상대적으로 적은 양의 코드를 작성할 수 있게 됩니다. </li>
<li>이렇게 코드를 재사용하면, 코드와 클래스가 많아질수록 관리가 용이하다는 장점이 있습니다.</li>
</ul>
<h4 id="-작성-예시--1">[ 작성 예시 ]</h4>
<pre><code class="language-java">class Animal {
    String name;

    public void cry() {
        System.out.println(name + &quot; is crying.&quot;);
    }
}

class Dog extends Animal {

    Dog(String name) {
        this.name = name;
    }

    public void swim() {
        System.out.println(name + &quot; is swimming!&quot;);
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog(&quot;코코&quot;);
        dog.cry();
        dog.swim();

        Animal dog2 = dog;
        dog2.cry();
//        dog2.swim(); // compile error
    }
}</code></pre>
<h4 id="-동작-설명--1">[ 동작 설명 ]</h4>
<img src="https://images.velog.io/images/yu_jep/post/0aa5d49f-5bed-410b-b4f1-52c1308bbcd5/%EC%83%81%EC%86%8D.png" width="60%">

<ul>
<li>Dog class가 Animal class를 상속받아 Dog class에서는 Animal의 cry()함수랑 Dog의 swim()함수를 다 사용 가능하나 Animal에서는 본인의 함수 cry() 만 사용 가능하다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[TSL_2021.12.14 ]]></title>
            <link>https://velog.io/@yu_jep/TSL2021.12.14</link>
            <guid>https://velog.io/@yu_jep/TSL2021.12.14</guid>
            <pubDate>Tue, 14 Dec 2021 11:19:38 GMT</pubDate>
            <description><![CDATA[<h3 id="java-정리">JAVA 정리</h3>
<h4 id="1-연산자">1. 연산자</h4>
<pre><code class="language-java">int num1 = 10;
int num2 = 5; 

// 산술연산
System.out.println(num1 + num2); // 더하기 연산
System.out.println(num1 - num2); // 빼기 연산
System.out.println(num1 * num2); // 곱하기 연산
System.out.println(num1 / num2); // 나누기 연산
System.out.println(num1 % num2); // 나머지 연산

// 대입 연산자
num1 += num2; // num1 = num1 + num2
num1 -= num2; // num1 = num1 - num2
num1 *= num2; // num1 = num1 * num2
num1 /= num2; // num1 = num1 / num2
num1 %= num2; // num1 = num1 % num2 

// 관계 연산자
int num1 = 10;
int num2 = 20;
int num3 = 10;

System.out.println(num1 &gt; num2); // 10 &gt; 20
System.out.println(num1 &gt;= num3); // 10 &gt;= 10
System.out.println(num1 &lt; num2); // 10 &lt; 20
System.out.println(num1 &lt;= num2); // 10 &lt;= 20
System.out.println(num1 == num3); // 10 == 10
System.out.println(num1 != num2); // 10 != 20

// 논리 연산자
boolean a = true;
boolean b = false;

System.out.println(a &amp;&amp; b);
// &amp;&amp;는 두가지 모두 참일 경우에는 true를, 그렇지 않을 경우에는 false를 반환합니다.
System.out.println(a || b);
// ||는 두가지 모두 거짓일 경우에는 false를, 그렇지 않을 경우에는 true를 반환합니다.
System.out.println(!b);
// !는 피연산자의 논리값을 바꿉니다. true는 false로 , false는 true로 반환합니다.

// 비트 연산자 (URL 참고) 
// http://www.tcpschool.com/c/c_operator_bitwise</code></pre>
<hr>
<h4 id="2-조건문">2. 조건문</h4>
<pre><code class="language-java">// if문
if (조건식){
    실행 코드
}

// 예시
int check = 100;
int num1 = 150;
if (num1 &gt; check) {
    System.out.println(&quot;100보다 큰 수입니다&quot;);
}

// if ~ else if
int num2 = 50;
if (num1 &gt; check) {
    System.out.println(&quot;100보다 큰 수입니다&quot;);
} else {
    System.out.println(&quot;100보다 작은 수입니다.&quot;);
}


// switch문
switch (입력 변수){
    case 입력값1 : 실행 구문
        break;
    case 입력값2 : 실행 구문
        break;
    case 입력값3 : 실행 구문
        break;
    default: 기본 실행 구문
        break;
}

// 예시 
char score = &#39;A&#39;;
switch (score) {
    case &#39;A&#39;:
        System.out.println(&quot;A등급입니다.&quot;);
        break;
    case &#39;B&#39;:
        System.out.println(&quot;B등급입니다.&quot;);
        break;
    case &#39;C&#39;:
        System.out.println(&quot;C등급입니다.&quot;);
        break;
    default:
        System.out.println(&quot;C등급보다 낮은 등급입니다.&quot;);
        break;
}


// 삼항연산자 
// &#39;?&#39;를 기준으로 조건식이 true일 경우에는 A 코드를, false일 경우에는 B 코드를 수행합니다.
(조건식) ? A : B

// 예시
int a = 5;

String reuslt = (a &lt; 10) ? &quot;10보다 작습니다.&quot; : &quot;10보다 큽니다.&quot;;
System.out.println(reuslt);
</code></pre>
<hr>
<h4 id="2-반복문">2. 반복문</h4>
<pre><code class="language-java">// for문
for(초기값 ; 조건식 ; 증감식){
    실행 코드 블럭
}

// 예시
int sum = 0;

for (int i = 0; i &lt; 10; i++) {
    sum += (i + 1);
}
System.out.println(sum);


// for - each문
for (String day : days) {
    System.out.println(day);
}


// while문
while(조건식){
    실행 코드 블럭
}

// 예시
int i = 0;
int sum = 0;
while (i &lt; 10) {
    sum += i + 1;
    i += 1;
}
System.out.println(sum);

// break
int i = 0;
while (i &lt; 10){
    if (i==5){
        break;
    }
    i += 1;
}
System.out.println(i);

// continue
for(int i=0;i&lt;10;i++){
  if (i==5){
      continue;
  }
  System.out.println(i);
}
</code></pre>
<pre><code class="language-java">class Phone {
    String model;
    String color;
    int price;

    Phone(String model, String color, int price) {
        this.model = model;
        this.color = color;
        this.price = price;
    }
}

public class Main {
    public static void main(String[] args) {
        Phone galaxy = new Phone(&quot;Galaxy10&quot;, &quot;Black&quot;, 100);

        Phone iphone =new Phone(&quot;iPhoneX&quot;, &quot;Black&quot;, 200);

        System.out.println(&quot;철수는 이번에 &quot; + galaxy.model + galaxy.color + &quot; + 색상을 &quot; + galaxy.price + &quot;만원에 샀다.&quot;);
        System.out.println(&quot;영희는 이번에 &quot; + iphone.model + iphone.color + &quot; + 색상을 &quot; + iphone.price + &quot;만원에 샀다.&quot;);
    }
}
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[내일배움캠프 D+79]]></title>
            <link>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D79</link>
            <guid>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D79</guid>
            <pubDate>Wed, 01 Dec 2021 18:20:05 GMT</pubDate>
            <description><![CDATA[<h3 id="teamproject-작업시-에러">TeamProject 작업시 에러</h3>
<h4 id="get코드를-다-작성하고-동작을-시켜-보았는데-아래와-같은-오류가-나왔다">GET코드를 다 작성하고 동작을 시켜 보았는데 아래와 같은 오류가 나왔다.</h4>
<img src="https://images.velog.io/images/yu_jep/post/7650789e-64be-45de-9ca2-5c40f503eb39/application%20%EB%8F%99%EC%9E%91%EC%8B%9C%20%EC%98%A4%EB%A5%98.PNG" width="97%">

<h4 id="오류-내용의-마지막-부분을-읽어보니-해결-가능할-거-같아-보인다">오류 내용의 마지막 부분을 읽어보니 해결 가능할 거 같아 보인다.</h4>
<img src="https://images.velog.io/images/yu_jep/post/65b69dd0-db99-43a7-a4bd-d7d86fe49de6/application%20%EB%8F%99%EC%9E%91%EC%8B%9C%20%EC%98%A4%EB%A5%98%20%EC%B0%BE%EC%9D%8C.PNG">

<blockquote>
<h4 id="오류-마지막-부분-내용">오류 마지막 부분 내용</h4>
<p>&quot;No property nickName1 found for type User! Did you mean &#39;NickName&#39;?&quot;
의역 : &quot;사용자 유형에 대해 nickName1 속성을 찾을 수 없습니다! &#39;NickName&#39;을(를) 의미하셨습니까?&quot;</p>
</blockquote>
<h4 id="오류-해결">오류 해결</h4>
<p>NickName이라는 변수를 두 Repository에서 같이 사용해서 그런거 같아 한쪽을 지워줬다.
<img src="https://images.velog.io/images/yu_jep/post/88b7b42e-7dd5-4a88-8290-7fa4fe74484f/application%20%EB%8F%99%EC%9E%91%EC%8B%9C%20%EC%98%A4%EB%A5%98%20%ED%95%B4%EA%B2%B0.PNG" width="97%"></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[내일배움캠프 D+78]]></title>
            <link>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D78</link>
            <guid>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D78</guid>
            <pubDate>Tue, 30 Nov 2021 17:35:01 GMT</pubDate>
            <description><![CDATA[<h3 id="teamproject-api-설계">TeamProject API 설계</h3>
<h3 id="✍🏻-메인페이지--사진페이지">✍🏻 메인페이지 / 사진페이지</h3>
<p>기능 | Method | URL | Return
|:---:|:---:|:---:|:---:
게시글 가져오기 | GET | /api/upload | <code>Upload</code>
강아지 선택 값 가져오기 | GET | /api/upload | <code>Upload</code>
강아지 사진 가져오기 | GET | /api/upload | <code>Upload</code>
프로필 정보 가져오기 | GET | /api/User{userId} | <code>User</code>
프로필 사진 가져오기 | GET | /api/User{userId} | <code>User</code></p>
<ul>
<li>내가 구현하는 부분은 다 GET으로 팀원 분들의 URL과 Repository를 설계 해야 돼서 오늘 꽤 많은 난관이 있었다.</li>
</ul>
<p>문제 POST부분이 아직 구현이 안돼 직접 작성하였다.(이 부분은 팀원분이 작성하신 부분이 있었지만 내 설계랑 맞지않아 조금 수정하였고 내일 회의 해봐야겠다.)</p>
<blockquote>
<h4 id="feedjava-올리는-파일-정보">Feed.java (올리는 파일 정보)</h4>
</blockquote>
<pre><code class="language-java">@Entity
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class Feed extends Timestamped {
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Id
    private Long idx;                   // ID
                                        //
    @Column(name = &quot;writerIdx&quot;)
    private String userId;              // 사용자 아이디
    @Column(nullable = true)
    private String updateDate;          // 글 생성일자 또는 변경일자
    @Column(nullable = true)
    private String mainImagePath;       // 글 메인 이미지 파일명(ex-filename.png)
    @Column(nullable = false)
    private String content;             // 글 내용
    @Column(nullable = false)
    private String address;             // 글 or 사진을 올린 장소
    @Column(nullable = false)
    private String size;                // 강아지 크기
    @Column(nullable = false)
    private Long likeCount;             // 글 좋아요 개수
                                        //
    public Feed(FeedDto feedDto){
        this.idx = feedDto.getIdx();
        this.userId = feedDto.getUserId();
        this.updateDate = feedDto.getUpdateDate();
        this.mainImagePath = feedDto.getMainImagePath();
        this.content = feedDto.getContent();
        this.address = feedDto.getAddress();
        this.size = feedDto.getSize();
        this.likeCount = feedDto.getLikeCount();
    }
}</code></pre>
<blockquote>
<h4 id="userjava--사용자-정보">User.java  (사용자 정보)</h4>
</blockquote>
<pre><code class="language-java">@Getter
@Entity
@NoArgsConstructor
@AllArgsConstructor
public class User {
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Id
    private Long idx;
                                    //
    @Column(name = &quot;writerIdx&quot;)
    private String userId;          // 사용자 아이디
                                    //
    @Column(nullable = false)
    private String ProfileImg;      // 프로필 사진
}</code></pre>
<blockquote>
<h4 id="feeddto">FeedDto</h4>
</blockquote>
<pre><code class="language-java">@Getter
@NoArgsConstructor
@AllArgsConstructor
public class FeedDto {
    private Long idx;              // ID
    private String userId;         // 사용자 아이디
    private String updateDate;     // 글 생성일자 또는 변경일자
    private String mainImagePath;  // 글 메인 이미지 파일명(ex-filename.png)
    private String content;        // 글 내용
    private String address;        // 글 or 사진을 올린 장소
    private String size;           // 강아지 크기
    private Long likeCount;        // 글 좋아요 개수
}</code></pre>
<blockquote>
<h4 id="userdto">UserDto</h4>
</blockquote>
<pre><code class="language-java">@Getter
@NoArgsConstructor
@AllArgsConstructor
public class UserDto {
    private Long idx;
    private String userId;          // 사용자 아이디
    private String ProfileImg;      // 프로필 사진
}</code></pre>
<p>내일 내 구현 부분인 MainPage 와 PhotoPage에 해당한 Spring 부분을 구현 할 예정이다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[내일배움캠프 D+73]]></title>
            <link>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D73</link>
            <guid>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D73</guid>
            <pubDate>Thu, 25 Nov 2021 08:59:55 GMT</pubDate>
            <description><![CDATA[<h3 id="member-예시-만들어서-실습-중-오류-사항">Member 예시 만들어서 실습 중 오류 사항</h3>
<ul>
<li>API 멤버관리 (id, 이름, 나이) </li>
</ul>
<table>
<thead>
<tr>
<th>기능</th>
<th>Method</th>
<th>URL</th>
<th>Return</th>
</tr>
</thead>
<tbody><tr>
<td>멤버 조회</td>
<td>GET</td>
<td>api/members</td>
<td>List&lt;&#39;Member&#39;&gt;</td>
</tr>
<tr>
<td>멤버 등록</td>
<td>POST</td>
<td>api/members/add</td>
<td>Member</td>
</tr>
<tr>
<td>멤버 이름/나이 수정</td>
<td>PUT</td>
<td>api/members/{id}</td>
<td>Long</td>
</tr>
<tr>
<td>멤버 퇴소</td>
<td>DELETE</td>
<td>api/members/{id}</td>
<td>Long</td>
</tr>
<tr>
<td>멤버 검색</td>
<td>GET</td>
<td>api/search/{id}</td>
<td>Long</td>
</tr>
</tbody></table>
<h4 id="put-오류404-에러">PUT 오류(404 에러)</h4>
<blockquote>
<img src =https://images.velog.io/images/yu_jep/post/2f12e069-e54a-4f14-a02a-e828f194c7dc/%ED%8F%AC%EC%8A%A4%ED%8A%B8%EB%A7%A8%20%EC%97%90%EB%9F%AC%20%ED%99%95%EC%9D%B8.PNG width=90%>
</blockquote>
<hr>
<h4 id="코드확인-controller---url-확인">코드확인 (Controller - URL 확인)</h4>
<ul>
<li>put,delete url 오타<blockquote>
<img src =https://images.velog.io/images/yu_jep/post/69494df7-61ba-454b-aa8e-c3c274ff5a7b/%EC%97%90%EB%9F%AC%20url%20%EC%BD%94%EB%93%9C.PNG width=60%>
</blockquote>
</li>
</ul>
<hr>
<h4 id="코드확인-controller---url-확인-1">코드확인 (Controller - URL 확인)</h4>
<ul>
<li>put,delete url 오타 수정<blockquote>
<img src =https://images.velog.io/images/yu_jep/post/5d4bad9f-e379-47dc-9502-4cd6ae1260fd/%EC%97%90%EB%9F%AC%20url%20%EC%BD%94%EB%93%9C.PNG width=60%></blockquote>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[내일배움캠프 D+72]]></title>
            <link>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D72</link>
            <guid>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D72</guid>
            <pubDate>Wed, 24 Nov 2021 12:18:45 GMT</pubDate>
            <description><![CDATA[<h4 id="1-1-javascript-코드를-보던중-경고표시가-있어-확인해-봤다">1-1. JavaScript 코드를 보던중 경고표시가 있어 확인해 봤다.</h4>
<p><img src="https://images.velog.io/images/yu_jep/post/af2205e4-e845-421f-b405-875f38878303/%EB%8A%94%EB%8A%94.PNG" alt=""></p>
<p><img src="https://images.velog.io/images/yu_jep/post/d17a29f8-553f-41fe-8bb4-56f1c7ec3fdd/%EB%8A%94%EB%8A%94%EB%8A%94.PNG" alt=""></p>
<h4 id="1-2--과--차이">1-2. &#39;==&#39; 과 &#39;===&#39; 차이</h4>
<ul>
<li><p>&#39;==&#39; -  Equal Operator</p>
<blockquote>
<p>ex)
console.log(0 == &quot;0&quot;); // true 
console.log(0 == &quot;&quot;); // true </p>
</blockquote>
</li>
<li><p>&#39;===&#39; - Strict Equal Operator
문자형식까지 체크해서 비교해 준다.</p>
<blockquote>
<p>ex)
console.log(0 === &quot;0&quot;); // false 
console.log(0 === &quot;&quot;); // false </p>
</blockquote>
</li>
</ul>
<hr>
<h4 id="2-spring-데이터-저장에-대한-궁금증">2. Spring 데이터 저장에 대한 궁금증</h4>
<blockquote>
<p>Memo(requestDto)를 memoRepository에 저장
<img src="https://images.velog.io/images/yu_jep/post/606a3e75-1dfb-4eab-a1e2-9cd6443f4487/post%20controller.PNG" alt="">
Memo 테이블
<img src="https://images.velog.io/images/yu_jep/post/f19c599c-90a4-4238-a8e3-b5e26fc14989/memojava.PNG" alt="">
Repository에서 JpaRepository를 상속 받고있다.
<img src="https://images.velog.io/images/yu_jep/post/7c31042f-fa74-437f-af93-e7ef5ca3dddd/%EB%A0%88%ED%8D%BC%EC%A7%80%ED%86%A0%EB%A6%AC.PNG" alt="">
데이터 베이스를 육안으로 확인 할 수 없어 데이터를 어디에 저장하는지 의문 이었는데 곽영호 튜터님께서 JpaRepository를 상속 받으면 자동으로알아서 데이터 베이스에 저장해 둔다고 하셨다. 
<img src="https://images.velog.io/images/yu_jep/post/159786c2-4d47-45eb-bb28-6d8ef286073e/%EC%BA%A1%EC%B2%98.PNG" alt="">
그리고 위 index파일에서 response값을 어떻게 저장하는지 궁금했는데 해결이 되었다.</p>
</blockquote>
<hr>
<h4 id="3-네이버-api---get">3. 네이버 API - GET</h4>
<blockquote>
<ul>
<li>URL : <a href="https://openapi.naver.com/v1/search/shop.json?query=hat">https://openapi.naver.com/v1/search/shop.json?query=hat</a>
query=(조회할 상품)<br>
</li>
</ul>
</blockquote>
<ul>
<li>URL : <a href="https://openapi.naver.com/v1/search/shop.json?query=hat&amp;display=3">https://openapi.naver.com/v1/search/shop.json?query=hat&amp;display=3</a> (&amp;<del>&amp;</del>이렇게 이어서 적을 수도있다.)
&amp;display=3(상품갯수)
&amp;start=2(시작 상품의 index)
&amp;sort= sim (유사도순), date (날짜순), asc(가격오름차순) ,dsc(가격내림차순)
<img src="https://images.velog.io/images/yu_jep/post/3eb05927-4812-4b62-b900-21999621b569/%EB%84%A4%EC%9D%B4%EB%B2%84%20%EA%B2%80%EC%83%89.PNG" alt=""></li>
</ul>
<hr>
<h5 id="출처">출처</h5>
<p><a href="https://steemit.com/kr-dev/@cheonmr/js-operator">https://steemit.com/kr-dev/@cheonmr/js-operator</a>
[네이버] <a href="https://developers.naver.com/docs/search/shopping/">https://developers.naver.com/docs/search/shopping/</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[내일배움캠프 D+71]]></title>
            <link>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D71</link>
            <guid>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D71</guid>
            <pubDate>Tue, 23 Nov 2021 12:53:10 GMT</pubDate>
            <description><![CDATA[<ol>
<li><p>프로젝트 일정
<img src="https://images.velog.io/images/yu_jep/post/1b480bca-3e46-460e-a43f-9ffb3e8fdbfe/%EC%9D%BC%EC%A0%95.PNG" alt="">
아직 Spring 공부가 미진해서 이번주 수요일까지 끝낼 예정 이었으나, 목요일 html,css작업이 일찍 끝나면 조금더 공부해야 할 거 같다.
다음주는 쭉 프로젝트 진행을 하고 일요일 점검을 한 뒤 팀원분들과 코드를 합치고 수정을 해나가야겠다.</p>
</li>
<li><p>Spring </p>
</li>
</ol>
<ul>
<li>findAllByOrderByModifiedAtDesc() : findAll해온 값을 내림차순으로 정리</li>
<li>index.html에서 POST랑 PUT에서 contentType: &quot;application/json&quot;을 설정 해 주었는데 POSTMAN에서도 설정을 해주는게 JSON형식으로 동작하는 거 같다.</li>
</ul>
<p>-Spring 학습이 조금 늦었지만 확실히 잡고 프로젝트를 진행하는게 맞다 판단해서 일정의 앞부분에 넣었지만 그래도 최대한 빨리 학습을 끝내야겠다 생각한다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[내일배움캠프 D+70]]></title>
            <link>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D70</link>
            <guid>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D70</guid>
            <pubDate>Mon, 22 Nov 2021 15:29:21 GMT</pubDate>
            <description><![CDATA[<h3 id="프로젝트-3차">프로젝트 3차</h3>
<p>이전 기능에 새로운 기능들을 더해 팀원분들과 함께 layerd 계획 단계까지 진행했다. </p>
<blockquote>
<h4 id="1-회원가입--로그인페이지">1. 회원가입 &amp; 로그인페이지</h4>
<p><img src="https://images.velog.io/images/yu_jep/post/12fb056d-92c5-4fbe-8fb4-b27851895ce6/New%20Wireframe%201%20(1).png" alt="">
<img src="https://images.velog.io/images/yu_jep/post/809bbb95-5ebb-45ef-9eae-df1737003b0d/New%20Wireframe%201%20(5).png" alt="">
<img src="https://images.velog.io/images/yu_jep/post/99c8f374-f7e4-4b3c-b226-beb150ab1a0e/New%20Wireframe%201%20(6).png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="2-1-메인페이지">2-1. 메인페이지</h4>
<p><img src="https://images.velog.io/images/yu_jep/post/ccc388e0-c263-41fd-a294-7454c56b9404/01.%20%EB%A9%94%EC%9D%B8%ED%99%94%EB%A9%B4%20(1)%20(Alternate%20954c).png" alt="">
2-2. 원하는 강아지 피드만 보기
<img src="https://images.velog.io/images/yu_jep/post/f6243260-8b9d-4943-990d-84e8a6cc4e93/01.%20%EB%A9%94%EC%9D%B8%ED%99%94%EB%A9%B4%20(1).png" alt="">
2-3. 게시물 선택시
<img src="https://images.velog.io/images/yu_jep/post/08f240c4-0056-4f08-9589-e75e7a8a89e3/00.%20%EB%A7%88%EC%9D%B4%ED%8E%98%EC%9D%B4%EC%A7%80%20(Alternate%20954c).png" alt="">
2-4. 닉네임 선택시
<img src="https://images.velog.io/images/yu_jep/post/2b5e72ba-2867-4d38-8274-d84d3190a3b0/New%20Wireframe%201%20(2).png" alt="">
2-5. 해당 위치 클릭시 (그 장소에 올린 사진 모아보기)
<img src="https://images.velog.io/images/yu_jep/post/b6917c20-c93e-47a6-986c-f51c8e08c23b/New%20Wireframe%201%20(3).png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="3-사진업로드">3. 사진업로드</h4>
<p><img src="https://images.velog.io/images/yu_jep/post/4affe2b8-3120-4c07-b4ea-4d37e1417b0d/02.%20%EC%82%AC%EC%A7%84%20%EB%93%B1%EB%A1%9D%20(1).png" alt="">
<img src="https://images.velog.io/images/yu_jep/post/1cc0c245-0f90-40b0-be64-33828c7e64db/02.%20%EC%82%AC%EC%A7%84%20%EB%93%B1%EB%A1%9D%20(2).png" alt=""></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[내일배움캠프 D+69(WIL)]]></title>
            <link>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D69WIL</link>
            <guid>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D69WIL</guid>
            <pubDate>Sun, 21 Nov 2021 16:04:17 GMT</pubDate>
            <description><![CDATA[<h3 id="-월요일-">( 월요일 )</h3>
<p><a href="https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D63">내일배움캠프 D+63</a></p>
<h3 id="화요일--금요일">(화요일 ~ 금요일)</h3>
<p>실시간 강의를 듣는데 진도가 많이 늦어 TIL을 작성하지 않고 편하게 Spring 기능 작성에 모든 시간을 쏟았다. TIl을 간단하게 작성 할 수도 있다 생각했지만 성격상 대충 적는 거에도 뭔가 정리를 해야하는 게 있어 시간을 많이 투자해 일단 잠시 내려두고 다음주 월요일 부터 어느정도 안정화 되면 시작 하려 한다. </p>
<h3 id="토요일">(토요일)</h3>
<p>휴식</p>
<h3 id="일요일">(일요일)</h3>
<h4 id="🎉내배캠-팀원분의-github-1주년🎉">[🎉내배캠 팀원분의 Github 1주년🎉]</h4>
<p>같이 수업을 듣는 팀원 분의 Gighub 업로드가 1년을 맞이했다는 소식을 들었다. 잔디를 보니 그동안 많은 시간의 노력이 보이는 거 같다. 
같은 팀으로 지내며 수업을 따라가면서 Github 업로드까지 한다는건 쉽지 않은데 그것을 다 하시는 건 정말 대단한것 같다 나도 앞으로 매일 업로드를 하는 정도까지는 아니어도 꾸준히 한주에 5번 정도는 업로드하는 습관을 들여야 겠다. Github 업로드에 있어 많은 귀감이 되었다!
이렇게 해야 전공자라는 소리를 듣는건가... 노력 많이 해야겠다.
(-전공자 소리 듣고싶은 비전공자-)</p>
<p>[나의 Github] <a href="https://github.com/YuJehyeop">https://github.com/YuJehyeop</a>
[팀원 분의 Github] <a href="https://github.com/Lluora">https://github.com/Lluora</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[내일배움캠프 D+63]]></title>
            <link>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D63</link>
            <guid>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D63</guid>
            <pubDate>Mon, 15 Nov 2021 15:15:07 GMT</pubDate>
            <description><![CDATA[<h3 id="docker">Docker?</h3>
<blockquote>
<h4 id="정의">정의</h4>
</blockquote>
<h5 id="docker는-애플리케이션을-개발-배송-및-실행을-해주는-개방형-플랫폼이다">Docker는 애플리케이션을 개발, 배송 및 실행을 해주는 개방형 플랫폼이다.</h5>
<blockquote>
<h4 id="특징">특징</h4>
</blockquote>
<h5 id="애플리케이션을-인프라에서-분리할-수-있으므로-소프트웨어를-빠르게-제공할-수-있다">애플리케이션을 인프라에서 분리할 수 있으므로 소프트웨어를 빠르게 제공할 수 있다.</h5>
<h5 id="애플리케이션을-관리하는-것과-동일한-방식으로-인프라를-관리할-수-있다">애플리케이션을 관리하는 것과 동일한 방식으로 인프라를 관리할 수 있다.</h5>
<h5 id="container-라는-격리된-환경에서-애플리케이션을-패키징하고-실행할-수-있는-기능을-제공한다">Container 라는 격리된 환경에서 애플리케이션을 패키징하고 실행할 수 있는 기능을 제공한다.</h5>
<h3 id="container">Container?</h3>
<blockquote>
<h4 id="정의-1">정의</h4>
</blockquote>
<h5 id="컨테이너는-이미지의-실행-가능한-인스턴스">컨테이너는 이미지의 실행 가능한 인스턴스</h5>
<blockquote>
<h4 id="특징-1">특징</h4>
</blockquote>
<h5 id="docker-api-또는-cli를-사용하여-컨테이너를-생성-시작-중지-이동-또는-삭제할-수-있다">Docker API 또는 CLI를 사용하여 컨테이너를 생성, 시작, 중지, 이동 또는 삭제할 수 있다.</h5>
<h5 id="container를-하나-이상의-네트워크에-연결하거나-스토리지를-연결하거나-현재-상태를-기반으로-새-이미지를-생성할-수도-있다">Container를 하나 이상의 네트워크에 연결하거나, 스토리지를 연결하거나, 현재 상태를 기반으로 새 이미지를 생성할 수도 있다.</h5>
<h5 id="기본적으로-container는-다른-container-및-해당-host-system과-비교적-잘-격리되어-있다">기본적으로 Container는 다른 Container 및 해당 HOST System과 비교적 잘 격리되어 있다.</h5>
<h5 id="container의-네트워크-저장소-또는-기타-기본-하위-시스템이-다른-container나-host-system과-얼마나-격리되었는지-제어할-수-있다">Container의 네트워크, 저장소 또는 기타 기본 하위 시스템이 다른 Container나 HOST System과 얼마나 격리되었는지 제어할 수 있다.</h5>
<h5 id="container는-image와-container를-만들거나-시작할-때-제공하는-구성-옵션으로-정의된다">Container는 Image와 Container를 만들거나 시작할 때 제공하는 구성 옵션으로 정의된다.</h5>
<h5 id="container가-제거되면-영구-저장소에-저장되지-않은-상태-변경-사항은-사라진다">Container가 제거되면 영구 저장소에 저장되지 않은 상태 변경 사항은 사라진다.</h5>
<h3 id="이전-방식과-비교">이전 방식과 비교</h3>
<p><img src="https://images.velog.io/images/yu_jep/post/9c5fe36a-ded8-41bd-8170-f9a1502a708c/image.png" alt=""></p>
<h4 id="전통적인-배포시대-traditional-deployment">전통적인 배포시대 (Traditional Deployment)</h4>
<blockquote>
<h5 id="물리서버에서-실행--하나의-물리서버에-여러개의-애플리케이션을-실행하여-리소스를-많이-차지하는-인스턴스가-존재-할-경우-그-외의-애플리케이션들의-성능이-저하될-우려가-있다">물리서버에서 실행 : 하나의 물리서버에 여러개의 애플리케이션을 실행하여 리소스를 많이 차지하는 인스턴스가 존재 할 경우 그 외의 애플리케이션들의 성능이 저하될 우려가 있다.</h5>
</blockquote>
<h5 id="--해결책으로는-여러-물리-서버를-사용하면-되지만-비용이-많이-든다는-단점이-있다">- 해결책으로는 여러 물리 서버를 사용하면 되지만 비용이 많이 든다는 단점이 있다.</h5>
<h4 id="가상화된-배포-시대-virtualized-deployment">가상화된 배포 시대 (Virtualized Deployment)</h4>
<blockquote>
<h5 id="단일-물리-서버의-cpu에서-여러-가상-시스템vm을-실행할-수-있게-한다">단일 물리 서버의 CPU에서 여러 가상 시스템(VM)을 실행할 수 있게 한다.</h5>
</blockquote>
<h5 id="가상화를-사용하면-vm간에-애플리케이션을-격리하고-애플리케이션의-정보를-다른-애플리케이션에서-자유롭게-액세스-할-수-없으므로-일정-수준의-보안성을-제공할-수-있다">가상화를 사용하면 VM간에 애플리케이션을 격리하고 애플리케이션의 정보를 다른 애플리케이션에서 자유롭게 액세스 할 수 없으므로, 일정 수준의 보안성을 제공할 수 있다.</h5>
<h4 id="컨테이너-개발-시대-container-deployment">컨테이너 개발 시대 (Container Deployment)</h4>
<blockquote>
<h5 id="컨테이너는-vm과-유사하지만-격리-속성을-완화하여-애플리케이션-간에-운영체제os를-공유한다-그러므로-컨테이너는-가볍다고-여겨진다">컨테이너는 VM과 유사하지만 격리 속성을 완화하여 애플리케이션 간에 운영체제(OS)를 공유한다. 그러므로 컨테이너는 가볍다고 여겨진다.</h5>
</blockquote>
<h5 id="vm과-마찬가지로-컨테이너에는-자체-파일-시스템-cpu-점유율-메모리-프로세스-공간-등이-있다-기본-인프라와의-종속성을-끊었기-때문에-클라우드나-os-배포본에-모두-이식할-수-있다">VM과 마찬가지로 컨테이너에는 자체 파일 시스템, CPU 점유율, 메모리, 프로세스 공간 등이 있다. 기본 인프라와의 종속성을 끊었기 때문에, 클라우드나 OS 배포본에 모두 이식할 수 있다</h5>
<hr>
<p>[출처]
Docker, Container
<a href="https://docs.docker.com/get-started/overview/">https://docs.docker.com/get-started/overview/</a>
이전 방식과 비교
<a href="https://kubernetes.io/ko/docs/concepts/overview/what-is-kubernetes/#%EC%97%AC%EC%A0%95-%EB%8F%8C%EC%95%84%EB%B3%B4%EA%B8%B0">https://kubernetes.io/ko/docs/concepts/overview/what-is-kubernetes/#%EC%97%AC%EC%A0%95-%EB%8F%8C%EC%95%84%EB%B3%B4%EA%B8%B0</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[내일배움캠프 D+62(WIL)]]></title>
            <link>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D62WIL</link>
            <guid>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D62WIL</guid>
            <pubDate>Sun, 14 Nov 2021 16:35:58 GMT</pubDate>
            <description><![CDATA[<h3 id="-월요일-">( 월요일 )</h3>
<p><a href="https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D56">내일배움캠프 D+56</a></p>
<h3 id="-화요일-">( 화요일 )</h3>
<p><a href="https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D57">내일배움캠프 D+57</a></p>
<h3 id="-수요일-">( 수요일 )</h3>
<p><a href="https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D47">내일배움캠프 D+58</a></p>
<h3 id="-목요일-">( 목요일 )</h3>
<p>스프링 실습 과정에서 코드가 제대로 읽히지 않고 흐름도 파악이 안돼 이래저래 계속 코드를 읽어보았다.</p>
<h3 id="-금요일-">( 금요일 )</h3>
<p><a href="https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D60">내일배움캠프 D+60</a></p>
<h3 id="-토요일-">( 토요일 )</h3>
<p>현재 진행으로는 휴식을 취하면 안되지만 하루라도 쉬지 않으면 다음주를 맞이할 자신이 없어 하루종일 잠자면서 휴식을 취했다.</p>
<h3 id="-일요일-">( 일요일 )</h3>
<p>스프링 실습에서 코드를 넣는 과정이 이해가 안가 계속 반복 작업으로 만들어 보다가 시큐리티 부분에서 오류가 자꾸 나와서 일단 급한데로 튜터님 코드를 빌어 작성을 하고 내일 강의에 필요한 부분을 읽어 뒀다.</p>
<p>이대로 가다간 이도저도 안 될거같아 더 열심히 해야하는데 정확한 방법을 잘 모르겠다. 이번주 내로 얼른 나의 방법을 찾아 뒤쳐지는 부분을 조금씩 쫒아와야겠다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[내일배움캠프 D+60]]></title>
            <link>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D60</link>
            <guid>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D60</guid>
            <pubDate>Fri, 12 Nov 2021 18:27:45 GMT</pubDate>
            <description><![CDATA[<h2 id="layered-acitectuer">Layered Acitectuer</h2>
<p><img src="https://images.velog.io/images/yu_jep/post/d871f64b-616f-413a-99dc-50225d3078d5/Layered%20Acitectuer2.png" alt=""></p>
<h3 id="acitectuer-설명">[Acitectuer 설명]</h3>
<blockquote>
<h4 id="client---db">Client -&gt; DB</h4>
</blockquote>
<ol>
<li>Client에서 요청을 보낸다.</li>
<li>Web Interface(MVC)에서 DTO를 생성해준다.</li>
<li>DTO를 통해 Service Layer로 보내준다. </li>
<li>CRUD를 통해 Repository에 요청한다.</li>
<li>Repository의 DAO객체에 Enetity로 RDBMS에 접근한다.</li>
</ol>
<blockquote>
<h4 id="db---client">DB -&gt; Client</h4>
</blockquote>
<ol>
<li>Repository의 DAO객체에서 Enetity로 RDBMS에 접근한다.</li>
<li>Repository에서 DTO로 Service Layer와 Presentation Layer에 접근한다.</li>
<li>Web Interface(MVC)에서 JSP로 Client에 응답해 준다.</li>
</ol>
<p>*DTO는 단방향으로 방향 갯수에 맞춰 나누어 그려주었다.</p>
<h3 id="mvc">MVC.</h3>
<p>MVC 패턴은 어플리케이션을 개발할 때 그 구성 요소를 Model과 View 및 Controller 등 세 가지 역할로 구분하는 디자인 패턴입니다. 비즈니스 처리 로직(Model)과 UI 영역(View)은 서로의 존재를 인지하지 못하고, Controller가 중간에서 Model과 View의 연결을 담당한다.</p>
<h3 id="dto">DTO.</h3>
<p>Data Transfer Object의 약자로, 계층 간 데이터 교환 역할을 한다. DB에서 꺼낸 데이터를 저장하는 Entity를 가지고 만드는 일종의 Wrapper라고 볼 수 있는데, Entity를 Controller 같은 클라이언트단과 직접 마주하는 계층에 직접 전달하는 대신 DTO를 사용해 데이터를 교환한다.</p>
<h3 id="dao">DAO.</h3>
<p>Data Access Object의 약자로, 실제로 DB에 접근하는 객체다. DAO는 프로젝트의 서비스 모델과 실제 데이터베이스를 연결하는 역할을 하며, JPA에서는 DB에 데이터를 CRUD 하는 Repository 객체들이 DAO라고 볼 수 있다.</p>
<h3 id="entity">Entity.</h3>
<p>관계형 데이터베이스 : entity는 저장될 수 있는 어떤 데이터에 관한 사람, 장소, 또는 사물이다.
데이터 모델링 : entity는 분류될 수 있고, 다른 entity들에 대해 정해진 관계를 가지는 데이터 단위이다.</p>
<p>출처: <a href="https://linuxism.ustd.ip.or.kr/45">https://linuxism.ustd.ip.or.kr/45</a> [linuxism]</p>
<h3 id="jsp-javaserverpages">JSP (JavaServerPages)</h3>
<p>Java 언어를 기반으로 하는 Server Side 스크립트 언어</p>
<hr>
<p>[출처]
Layered Acitectuer : <a href="https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D60">https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D60</a>
MVC : <a href="https://tecoble.techcourse.co.kr/post/2021-04-25-dto-layer-scope/">https://tecoble.techcourse.co.kr/post/2021-04-25-dto-layer-scope/</a>
DTO, DAO : <a href="https://velog.io/@ohzzi/Entity-DAO-DTO%EA%B0%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EB%A9%B0-%EC%99%9C-%EC%82%AC%EC%9A%A9%ED%95%A0%EA%B9%8C">https://velog.io/@ohzzi/Entity-DAO-DTO%EA%B0%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EB%A9%B0-%EC%99%9C-%EC%82%AC%EC%9A%A9%ED%95%A0%EA%B9%8C</a>
Entity : <a href="https://linuxism.ustd.ip.or.kr/45">https://linuxism.ustd.ip.or.kr/45</a>
JSP : <a href="https://gmlwjd9405.github.io/2018/11/03/jsp.html">https://gmlwjd9405.github.io/2018/11/03/jsp.html</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[내일배움캠프 D+58]]></title>
            <link>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D58</link>
            <guid>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D58</guid>
            <pubDate>Wed, 10 Nov 2021 16:41:02 GMT</pubDate>
            <description><![CDATA[<h2 id="ioc--di--bean">IOC &amp; DI &amp; Bean</h2>
<img src = https://images.velog.io/images/yu_jep/post/405cd830-9354-4359-b0a8-e3bf27c72128/%EA%B7%B8%EB%A6%BC05.png width=90%>

<blockquote>
<h4 id="관계-이해도">[관계 이해도]</h4>
<p>IOC에서 사용할 객체A를 생성 하려 한다. 이때 DI를 통해 외부에서 객체A와 같은 타입의 객체A를 생성한 뒤 IOC contaner에 주입을 시켜준다. 이때 의존관계가 설정되고 주입된 객체A를 Bean Object라 한다. </p>
</blockquote>
<h3 id="1-ioc-제어권의-역전">1. IOC (제어권의 역전)</h3>
<p>객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미한다.</p>
<h3 id="2-ioc-contanier">2. IOC Contanier</h3>
<p>객체에 대한 생성 및 생명주기를 관리할 수 있는 기능</p>
<blockquote>
<ul>
<li>IoC 컨테이너는 객체의 생성을 책임지고, 의존성을 관리한다.</li>
</ul>
</blockquote>
<ul>
<li>POJO의 생성, 초기화, 서비스, 소멸에 대한 권한을 가진다.</li>
<li>개발자들이 직접 POJO를 생성할 수 있지만 컨테이너에게 맡긴다.
*POJO : 특정 자바 모델이나 기능, 프레임워크 등을 따르지 않은 자바 오브젝트</li>
</ul>
<h3 id="3-di">3. DI</h3>
<p>다른 객체를 사용할 때 해당 객체의 외부에서 생성한 의존성이 걸린 객체를 주입한다.</p>
<blockquote>
</blockquote>
<p>상세한 기능은 다음과 같다.</p>
<ul>
<li>IOC가 객체를 생성하려 한다.</li>
<li>의존성이 필요한 객체의 멤버변수를 조사한다.</li>
<li>의존성이 필요한 객체의 멤버변수와 동일한 타입의 객체를 외부에 생성한다.</li>
<li>외부에 생성한 객체를 주입한다.(의존관계를 주입해 주는 것이다.)</li>
</ul>
<h3 id="4bean">4.Bean</h3>
<p>Spring IoC 컨테이너가 관리하는 자바 객체를 빈(Bean)이라는 용어로 부른다.</p>
<blockquote>
<ul>
<li>우리가 new 연산자로 어떤 객체를 생성했을 때 그 객체는 빈이 아니다.</li>
</ul>
</blockquote>
<ul>
<li>ApplicationContext.getBean()으로 얻어질 수 있는 객체는 빈이다.</li>
<li>Spring에서의 빈은 ApplicationContext가 알고있는 객체 
즉, ApplicationContext가 만들어서 그 안에 담고있는 객체를 의미한다.</li>
</ul>
<hr>
<p>[참고자료]
 <a href="https://dog-developers.tistory.com/12">https://dog-developers.tistory.com/12</a>
 <a href="https://ko.wikipedia.org/wiki/Plain_Old_Java_Object">https://ko.wikipedia.org/wiki/Plain_Old_Java_Object</a>
 <a href="https://atoz-develop.tistory.com/entry/Spring-%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B9%88Bean%EC%9D%98-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%83%9D%EC%84%B1-%EC%9B%90%EB%A6%AC">https://atoz-develop.tistory.com/entry/Spring-%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B9%88Bean%EC%9D%98-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%83%9D%EC%84%B1-%EC%9B%90%EB%A6%AC</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[내일배움캠프 D+57]]></title>
            <link>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D57</link>
            <guid>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D57</guid>
            <pubDate>Tue, 09 Nov 2021 18:22:10 GMT</pubDate>
            <description><![CDATA[<h3 id="stateless">Stateless</h3>
<h4 id="정의-위키백과">정의 [위키백과]</h4>
<p>컴퓨팅에서 무상태 프로토콜(stateless protocol)은 어떠한 이전 요청과도 무관한 각각의 요청을 독립적인 트랜잭션으로 취급하는 통신 프로토콜로, 통신이 독립적인 쌍의 요청과 응답을 이룰 수 있게 하는 방식이다. 무상태 프로토콜은 서버가 복수의 요청 시간대에 각각의 통신 파트너에 대한 세션 정보나 상태 보관을 요구하지 않는다. 반면, 서버의 내부 상태 유지를 요구하는 프로토콜은 상태 프로토콜(stateful protocol)로 부른다.</p>
<h4 id="정리">정리.</h4>
<p>Server의 response가 Client와의 세션과 독립적이다
즉, 사용자(브라우저)의 이전 상태 쿠키와 세션 정보를 기록하지 않는 접속을 의미한다. 
브라우저가 데이터를 전송할 때마다 연결하고 바로 끊어 버리는 방식이다. </p>
<h4 id="장점">장점.</h4>
<p>Server와 Client간의 연결을 계속 유지해 주지 않아 자원의 활용에서 좀더 효율적이다.</p>
<h4 id="단점">단점.</h4>
<p>요청 시마다 상태 정보를 전달해야 한다.</p>
<hr>
<h3 id="stateful">Stateful</h3>
<p>stateless와 반대로 Server의 response가 계속 연결 되어있어 client의 이전 상태를 기록하고 있는 것이다.</p>
<h4 id="장점-1">장점.</h4>
<ul>
<li>웹서버가 사용자(브라우저)의 상태 client(쿠기) or server(세션) 정보를 기억하고 있다가 유용한 정보로써 활용</li>
<li>서버에서 클라이언트 세션을 유지할 필요가 없을 때 서버 리소스를 절약</li>
</ul>
<h4 id="단점-1">단점.</h4>
<ul>
<li>정보를 저장해 둬야하므로 서버의 무리가 감</li>
<li>서버 확장이 어려움</li>
<li>web, mobile 요청 처리 어려움</li>
<li>CSRF의 문제 : 세션 보안 문제</li>
<li>CORS의 문제 : 도메인 리소스 문제</li>
<li>REST API : Stateless 지향</li>
</ul>
<hr>
<p>[출처]
<a href="https://akdl911215.tistory.com/290">https://akdl911215.tistory.com/290</a>
<a href="https://junshock5.tistory.com/83">https://junshock5.tistory.com/83</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[내일배움캠프 D+56]]></title>
            <link>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D56</link>
            <guid>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D56</guid>
            <pubDate>Mon, 08 Nov 2021 17:26:50 GMT</pubDate>
            <description><![CDATA[<h3 id="1-파일생성">1. 파일생성</h3>
<blockquote>
<p>NEW Project
<img src = https://images.velog.io/images/yu_jep/post/5bfd7113-0164-45e6-acbe-559b83cbea8b/01_NEW_Project_setting_01.PNG width=90%>
Dependencies 설정 (의존성 설정)
의존성을 설정 해 줌으로써 버전을 명시하지 않아도 자동으로 맞는 버전을 가져와준다.
<img src = https://images.velog.io/images/yu_jep/post/b40f1d00-38cc-4c81-acee-c2a36a22b66c/02_NEW_Project_setting_02.PNG width=90%>
Application.java 파일에서 Run을 해준다.
<img src = https://images.velog.io/images/yu_jep/post/02442362-c10d-4a13-af3e-f836a1e127d0/05_start_test_01.PNG width=90%>
<a href="http://localhost:8080">http://localhost:8080</a> 에서 다음과 같이 나오면 정상 동작하는 것이다.
<img src = https://images.velog.io/images/yu_jep/post/da6d2338-9005-4cd9-9fcb-550b647d609c/04_start_sucess.PNG width=90%>
Auto import 설정해 주기
<img src = https://images.velog.io/images/yu_jep/post/b6203053-b3b3-49a3-a334-2fb38b78d2b4/06_auto_imprte_setting.PNG width=90%></p>
</blockquote>
<h3 id="2-생성자-만들기">2. 생성자 만들기</h3>
<blockquote>
</blockquote>
<p>Prac.java, Course.java 파일 생성
<img src = https://images.velog.io/images/yu_jep/post/2d949f44-3ee0-4947-bf3e-27447e8cda5d/07_class_prac.PNG width=90%>
생성자 코드 값 매치 확인
<img src = https://images.velog.io/images/yu_jep/post/62fd0392-bd85-434d-a2fd-f3df6f82ec82/09_%EC%83%9D%EC%84%B1%EC%9E%90_%EC%97%B0%EC%8A%B502PNG.png width=90%></p>
<h3 id="3-gettersetter">3. getter/setter</h3>
<blockquote>
<p>Course.java코드 getter/setter 설정 및 생성
<img src = https://images.velog.io/images/yu_jep/post/02a8b490-a8e3-40af-87c8-731909781ecc/10_getter_setter_prac.PNG width=90%>
Tutor.java코드 getter/setter 설정 및 생성 -&gt; Prac.java 실행시 null값 출력
<img src = https://images.velog.io/images/yu_jep/post/4f4bf0f6-df38-4e61-a548-c196890c745b/11_getter_setter_prac_null.PNG width=90%>
Prac.java 코드 입력 출력 위치를 바꿔주며 해결
<img src = https://images.velog.io/images/yu_jep/post/a83f2579-b834-4f06-9865-9565c6152751/12_getter_setter_prac_null_sucess.PNG width=90%></p>
</blockquote>
<h3 id="4-h2">4. H2</h3>
<blockquote>
</blockquote>
<p>application.properties에 다음 코드 추가</p>
<blockquote>
<blockquote>
<p>spring.h2.console.enabled=true
spring.datasource.url=jdbc:h2:mem:testdb</p>
</blockquote>
</blockquote>
<p>Main 재실행 &gt; <a href="http://localhost:8080/h2-console">http://localhost:8080/h2-console</a>  &gt; url=jdbc:h2:mem:testdb 확인 &gt;
Test Connection &gt; Connect</p>
<blockquote>
<img src = https://images.velog.io/images/yu_jep/post/906cfee7-f148-48dd-a46e-77db3cce1918/13_h2_prac.PNG width=90%>
H2 연결 확인
<img src = https://images.velog.io/images/yu_jep/post/e2fdd670-c856-48e6-aea4-22bbd9841714/14_h2_sucess.PNG width=90%>
</blockquote>
<h3 id="5-jpa">5. JPA</h3>
<blockquote>
<p>build.gradle에 다음 코드 추가</p>
<blockquote>
<p>implementation &#39;org.springframework.boot:spring-boot-starter-data-jpa&#39;</p>
</blockquote>
</blockquote>
<img src = https://images.velog.io/images/yu_jep/post/a0557bfd-dc14-42ac-9844-603e1b465e1b/15_JPA_Setting.PNG width=90%>
Lectuer.java 생성 및 LectureRepository.java 인터페이스 생성(코드 추가)
<img src = https://images.velog.io/images/yu_jep/post/13583d88-e0c6-4ccd-b991-474a5e177634/16_JPA_Setting_create_pack_Lec_Lecrepo.PNG width=90%>
main 실행 >Terminar 확인
<img src = https://images.velog.io/images/yu_jep/post/578b9583-9688-43fe-b862-c30e701fcf17/17_JPA_test.PNG width=90%>

<h3 id="6-상속">6. 상속</h3>
<blockquote>
<p>Tutor.java에서 Tutor에 Person 상속 
<img src = https://images.velog.io/images/yu_jep/post/089daff8-7fee-4b82-85a9-d6435c7316e2/18_%EC%83%81%EC%86%8D_%EC%BD%94%EB%93%9C%EC%9E%91%EC%84%B1_%EC%98%88%EC%8B%9C.PNG width=90%></p>
<blockquote>
<p>SQL이 보이도록 application.properties 세팅
Timestamped.java 생성, Lecture에 Timestamped 상속</p>
</blockquote>
<img src = https://images.velog.io/images/yu_jep/post/dadb3208-4dd9-44bf-8046-d0bbec1af4b7/19_%EC%83%81%EC%86%8D_%EC%97%B0%EC%8A%B5_%ED%8C%8C%EC%9D%BC%EC%88%98%EC%A0%95%EB%B0%8F%EC%83%9D%EC%84%B1.PNG width=90%>
>item01Application에 @EnableJpaAuditing 추가 > main 실행 > 
http://localhost:8080/h2-console 실행 확인 
<img src = https://images.velog.io/images/yu_jep/post/e0e26111-ae49-4231-b384-c344f3c90759/20_%EC%83%81%EC%86%8D_%EC%97%B0%EC%8A%B5_%ED%8C%8C%EC%9D%BC%EC%88%98%EC%A0%95%EB%B0%8Fh2%EC%B6%9C%EB%A0%A5%ED%99%95%EC%9D%B8.PNG width=90%>
</blockquote>
<h3 id="7-crud">7. CRUD</h3>
<blockquote>
<p>Create, Read : Repository의 save와 findAll() 활용 &gt; H2 확인
<img src = https://images.velog.io/images/yu_jep/post/b925ef94-78b3-4b2b-bb01-a140538bcef4/21_CRUD_create_read.PNG width=90%>
Update1 : LectureService파일 생성 및 Lecture.java 파일 수정
<img src = https://images.velog.io/images/yu_jep/post/210154c7-7fa0-49d9-ad76-e54c5148274e/22_CRUD_Update_%ED%8C%8C%EC%9D%BC%EC%88%98%EC%A0%95%EB%B0%8F%EC%83%9D%EC%84%B1.PNG width=90%>
Update2 : Application파일 .update()로 파일 업로드
<img src = https://images.velog.io/images/yu_jep/post/bd3538a4-2966-42f3-8dfa-2b094fd003b7/23_CRUD_Update_sucess.PNG width=90%>
Delete : deleteAll()</p>
<blockquote>
<p>lectureRepository.deleteAll();</p>
</blockquote>
</blockquote>
<img src = https://images.velog.io/images/yu_jep/post/396e801c-9687-46d7-90d6-d9dfc5d90235/24_CRUD_Delete.PNG width=90%>


<h3 id="8-lombok">8. Lombok</h3>
<blockquote>
<p>Lombok Setting
<img src = https://images.velog.io/images/yu_jep/post/433954d7-a4aa-4194-8afe-6498f8b26d04/25_Lombok_setting_01.PNG width=90%>
Lombok Setting (shift 두번 검색)
<img src = https://images.velog.io/images/yu_jep/post/1b81275a-6e97-4eff-bcac-ec85685c352f/26_Lombok_setting_02_shiftx2.PNG width=90%>
Lombok Setting (Lombok설치)
<img src = https://images.velog.io/images/yu_jep/post/17501c36-fe30-43fb-87b9-b60733698e11/27_Lombok_setting_03.PNG width=90%></p>
</blockquote>
<h3 id="9-dto">9. DTO</h3>
<blockquote>
<p>패키지 및 파일 생성
<img src = https://images.velog.io/images/yu_jep/post/22fef941-0514-4c72-9733-4067ceadabe8/28_DTO_%ED%8C%A8%ED%82%A4%EC%A7%80%EB%B0%8F%ED%8C%8C%EC%9D%BC%EC%83%9D%EC%84%B1.PNG width=90%>
LectureService 수정전
<img src = https://images.velog.io/images/yu_jep/post/8c8b01e9-4ca6-4eea-b2b0-9aa7cd4613b1/29_DTO_lectureService%EC%88%98%EC%A0%95%EC%A0%84.PNG width=90%>
LectureService 수정후 ( LectureService 생성자 삭제)
<img src = https://images.velog.io/images/yu_jep/post/4630a1ee-e7cb-4d9f-967d-f3b3424dac26/30_DTO_lectureService%EC%88%98%EC%A0%95%ED%9B%84.PNG width=90%></p>
</blockquote>
<h3 id="10-get-getter">10. GET @Getter</h3>
<blockquote>
<p>Lecture 수정전
<img src = https://images.velog.io/images/yu_jep/post/0aeaf65c-df53-4e91-b3c1-5b27e874d7ea/31_DTO_lecture%EC%88%98%EC%A0%95%EC%A0%84.PNG width=90%>
Lecture 수정후 ( get함수 다 지우고 @Getter 추가 )
<img src = https://images.velog.io/images/yu_jep/post/90003e38-c8dc-4209-be25-49ae0f681b59/32_DTO_lecture%EC%88%98%EC%A0%95%ED%9B%84.PNG width=90%>
Application 수정전
<img src = https://images.velog.io/images/yu_jep/post/afcc533d-7b5f-4ad7-8afa-3144c252bef5/33_DTO_Application_%EC%88%98%EC%A0%95%EC%A0%84.PNG width=90%>
Application 수정후
<img src = https://images.velog.io/images/yu_jep/post/4dae07c8-1dc2-43a6-a59e-a64909e465c2/34_DTO_Application_%EC%88%98%EC%A0%95%ED%9B%84.PNG width=90%>
@GetMapping, url 입력 추가
<img src = https://images.velog.io/images/yu_jep/post/d3646f00-c944-4895-94c3-9ccf16b7ae93/35_API_GET_01.PNG width=90%>
실행 ( localhost:8080/api/lectures 접속 ) &gt; GET성공 
<img src = https://images.velog.io/images/yu_jep/post/e86f5f5f-502b-40f6-a83a-adc4ae97259a/35_API_GET_%EC%8B%A4%ED%96%89.PNG width=90%></p>
</blockquote>
<h3 id="11-post-postmapping">11. Post @PostMapping</h3>
<blockquote>
<p>LectureController 수정전
<img src = https://images.velog.io/images/yu_jep/post/eccb2458-63e2-4d5f-8c6a-99ed14981034/36_API_POST_LecControll_%EC%88%98%EC%A0%95%EC%A0%84.PNG width=90%>
LectureController 수정
@PostMapping, url 추가
<img src = https://images.velog.io/images/yu_jep/post/285006a7-01e9-4842-949a-c19f7fe72184/37_API_POST_LecControll_%EC%88%98%EC%A0%95%ED%9B%84.PNG width=90%>
Lecture 수정전
<img src = https://images.velog.io/images/yu_jep/post/040c7279-b485-41f8-9b6d-53c4dd45bf2b/38_API_POST_Lecl_%EC%88%98%EC%A0%95%EC%A0%84.PNG width=90%>
Lecture 수정후 (Lecture 생성자 삭제)
<img src = https://images.velog.io/images/yu_jep/post/a19b34e0-f44b-4164-9283-b1cf706b629a/39_API_POST_Lecl_%EC%88%98%EC%A0%95%ED%9B%84.PNG width=90%>
Postman 실행 (<a href="http://localhost:8080/api/lectures">http://localhost:8080/api/lectures</a>) -415에러발생
<img src = https://images.velog.io/images/yu_jep/post/05da2f34-2ff1-4a28-bae8-dae5824b3a53/40_API_POST_error.PNG width=90%>
Postman 415에러 Media Type json으로 변경으로 해결
<img src = https://images.velog.io/images/yu_jep/post/21b3955d-4b39-4a67-a81b-40a9210bea02/41_API_POST_error_json%EC%9C%BC%EB%A1%9C%EB%B3%80%EA%B2%BD.PNG width=90%></p>
</blockquote>
<h3 id="11-put-putmapping">11. Put @PutMapping</h3>
<blockquote>
<p>LectureController 수정
@PutMapping, url 추가
<img src = https://images.velog.io/images/yu_jep/post/2e62fc93-b7aa-48b1-96e9-73b565f4b066/42_API_PUT_%ED%8C%8C%EC%9D%BC%EC%88%98%EC%A0%95.PNG width=90%>
Postman 실행 (<a href="http://localhost:8080/api/lectures/1">http://localhost:8080/api/lectures/1</a>) -405에러발생
<img src = https://images.velog.io/images/yu_jep/post/dffa01b1-2eab-4cbf-9fd7-d79b743414c7/43_API_PUT_error.PNG width=90%>
Postman 405에러 method변경으로 해결
<img src = https://images.velog.io/images/yu_jep/post/9a5541d1-a743-45f3-a752-fa57bb8c2734/44_API_PUT_error_postman_method%EB%B3%80%EA%B2%BD.PNG width=90%></p>
</blockquote>
<h3 id="12-delete-deletemapping">12. DELETE @DeleteMapping</h3>
<blockquote>
<p>LectureController 수정
@DeleteMapping, url 추가 - 오류
<img src = https://images.velog.io/images/yu_jep/post/34554768-20cb-4616-a427-3db792e5d9f2/45_API_DELETE_%EC%8B%9C%EB%8F%84.PNG width=90%>
DELETE 수정 완료
<img src = https://images.velog.io/images/yu_jep/post/7f8ecd44-8b03-4d6b-aae6-918c4f8c1655/46_API_DELETE_%EC%A0%95%EB%8B%B5.PNG width=90%></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[내일배움캠프 D+55(WIL)]]></title>
            <link>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D55WIL</link>
            <guid>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D55WIL</guid>
            <pubDate>Sun, 07 Nov 2021 17:41:05 GMT</pubDate>
            <description><![CDATA[<h3 id="-월요일-">( 월요일 )</h3>
<p>AWS 서버리스 프론트엔드-1 강의를 복습하고 정리하느라 TIL을 작성하지 못했지만 그만큼 기록보다는 학습에 온힘을 쏟았다 생각한다.</p>
<h3 id="-화요일-">( 화요일 )</h3>
<p><a href="https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D46">내일배움캠프 D+50</a></p>
<h3 id="-수요일-">( 수요일 )</h3>
<p><a href="https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D47">내일배움캠프 D+51</a></p>
<h3 id="-목요일-">( 목요일 )</h3>
<p><a href="https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D52">내일배움캠프 D+52</a></p>
<h3 id="-금요일-">( 금요일 )</h3>
<p>AWS 서버리스 백엔드까지 진도가 나갔지만 이전에 AWS키워드 정리와 실시간 강의를 이해 하는데 있어 신경을 많이 써서 TIL을 작성하지 못했다.</p>
<h3 id="-토요일-">( 토요일 )</h3>
<p>오시영 튜터님과 면담을 했다. 나의 면담 내용은 이전에 밀려있는 AWS키워드 정리와 학원에서 주는 강의를 듣기도 해야하고 실시간 강의에서 알려주는 기능을 이해하는데 있어 시간이 너무 오래걸려서 나의 공부방식에 있어 틀린부분이나 미숙한 부분을 여쭤 보았다. 튜터님께서는 일단 키워드 정리는 기능을 반복해서 구현하면서 생기는 의문이나 모르는 부분을 기준으로 키워드를 뽑아 간단하게 정리하고 일단 기능을 익히는게 우선이라 하셨다. 면담이 끝나고 AWS정리는 잠시 내려두고 기능 구현을 해 보았다.</p>
<h3 id="-일요일-">( 일요일 )</h3>
<p>현재까지 진행된 기능 구현을 익히고 기록을 해 두었다. 내가 어떤 순서로 어떻게 구현되는지 알기 위해 하나하나 파트가 바뀔 때마다 기록을 해두었고 월요일에 진행하는 기능에 맞춰 TIL에 작성할 예정이다. </p>
<p>한 주 동안 느낀점.
이전에 밀린 부분과 미숙한 부분이 있지만 이번주는 키워드 정리에 너무 많은 신경과 시간을 써서 못했는데 이번 면담을 통해 시간을 좀더 필요한 부분에 집중하고 얼른 끝낸 뒤 이전에 밀린 부분을 해 봐야겠다는 생각을 했다.
잠도 많이 자야겠다... 하루 수면시간 평균 4시간이었던 한주.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[내일배움캠프 D+52]]></title>
            <link>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D52</link>
            <guid>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D52</guid>
            <pubDate>Thu, 04 Nov 2021 16:25:53 GMT</pubDate>
            <description><![CDATA[<h3 id="객체지향-추상화란">객체지향 추상화란?</h3>
<p>연관되어 있는 변수와 메소드를 결합해서 하나의 그룹을 짓는 것.</p>
<ul>
<li>예시를 들어 보면 필통에는 연필, 지우개, 볼펜 등의 필기구 들이 있다.</li>
</ul>
<blockquote>
<h4 id="model">model</h4>
</blockquote>
<pre><code class="language-java">class 필기구 {
    연필();
    지우개();
    볼펜();
}
public class 필통 extends 필기구 {
    필통A.연필()
    필통A.지우개()
    필통A.볼펜()
    //
    필통B.연필()
    필통B.지우개()
    필통B.볼펜()
}</code></pre>
<h3 id="다형성doly-mophism">다형성(Doly-mophism)</h3>
<p>다형성은 같은 타입이지만 실행 결과가 다양한 객체를 대입할 수 있는 성질.
다중 상속과 비슷하다.</p>
<blockquote>
<p>ex)</p>
</blockquote>
<pre><code class="language-java">    Interface Bird{};
    Interface Dog{};
    //
    class animal implements Bird, Dog{}</code></pre>
<p>-&gt; animal 클래스에 Bird와 Dog를 다중으로 상속해 준다. </p>
<h3 id="캡슐화란">캡슐화란?</h3>
<p>객체의 속성, 메소드를 하나로 묶고 실제 구현 내용을 외부에 감추는 것으로 객체의 무결성을 보장해준다.
쉽게 생각하면 &quot;내부에서 어떤 과정을 거치던 동작만 하면된다.&quot;</p>
<h3 id="결합도란">결합도란?</h3>
<p>모듈 간에 상호 의존하는 정도 또는 두 모듈 사이의 연관 관계를 의미한다.
ex) 주문하는 고객이 메뉴를 변경하면 직원이 변경된 메뉴에 의해 변화된 행동을 취해야하는 것과 같다.</p>
<h3 id="응집도란">응집도란?</h3>
<p>응집도는 정보 은닉 개념을 확장한 것으로, 명령어나 호출문 등 모듈의 내부 요소들의 서로 관련되어 있는 정도, 즉 모듈이 독립적인 기능으로 정의되어 있는 정도를 의미합니다.
ex) 관련된 기능이 합쳐져 있는 것으로 +, -, x, / 기능의 사칙연산 모듈을 생각하면 된다.</p>
<h3 id="인터페이스란">인터페이스란?</h3>
<p>객체가 각각의 역할과 책임이 있고 메시지로 상호작용해서 협력해 나가는것.</p>
<ul>
<li>설계 객체의 인터페이스는 객체가 수신 할 수 있는 메시지 목록으로 구성됨.</li>
<li>객체가 어떤 메시지를 수신 할 수 있는 지가 객체가 제공하는 인터페이스의 모양을 빚는다.<blockquote>
</blockquote>
UI : Program 과 user 의 연결부 (접점)
API : Program 과 Program 의 연결부(접점) 
HTTP API : 데이터 줘! --- (HTTP) --- 그래!
JAVA API Doc : Code --- Interface --- Code
 -&gt; 인터페이스 규칙만 지키면 내부사항, 동작 몰라도 된다. - 캡슐화랑 비슷한 것 같다.</li>
</ul>
<h3 id="gettersetter">Getter/Setter</h3>
<p>Getter: 정보를 가져오는 메소드
Setter: 정보를 바꾸는 메소드</p>
<h4 id="gettersetter를-사용하는-이유">Getter/Setter를 사용하는 이유</h4>
<blockquote>
<p>객체들의 데이터를 pirvate로 접근을 제한하고, Getter,Setter로만 접근하면 외부로부터 객체를 보호하며 객체의 무결성을 보장해 줄 수 있다.</p>
</blockquote>
<h3 id="데메테르의-법칙이란-low-of-demeter">데메테르의 법칙이란? (Low of Demeter)</h3>
<p>기본 개념은 &quot; 정보 은닉 &quot; 원칙에 따라 주어진 객체가 다른 모든 것(하위 구성 요소 포함)의 구조 또는 속성에 대해 가능한 한 적게 가정해야 한다는 것입니다.
즉, 디미터의 법칙은 다른 객체가 어떠한 자료를 갖고 있는지 내부를 몰라야 한다는 것을 의미한다.</p>
<h3 id="rdbms란">RDBMS란?</h3>
<p>(Relational Database Management System: 관계형 데이터베이스 관리 시스템)
사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해 주고 데이터베이스를 관리해 주는 소프트웨어</p>
<h3 id="h2-rdbms의-소프트웨어-중-하나">H2 (RDBMS의 소프트웨어 중 하나)</h3>
<p>Java SQL 데이터베이스로 초 경량에 인메모리 DB를 지원한다.
인메모리 DB란 서버가 작동하는 동안에만 내용을 저장하고, 서버가 작동을 멈추면 데이터가 모두 삭제되는 데이터베이스를 말한다.</p>
<h3 id="nosql-not-only-sql-no-sql-">NoSQL (Not Only SQL, No SQL ...)</h3>
<p>SQL만을 사용하지 않는 데이터베이스 관리 시스템(DBMS)으로 여러 유형의 데이터베이스를 사용한다. </p>
<h3 id="jpa">JPA</h3>
<p>SQL을 쓰지 않고 데이터를 생성, 조회, 수정, 삭제할 수 있도록 해주는 번역기.</p>
<h3 id="jdbc">JDBC</h3>
<p>자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다. JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다</p>
<h3 id="didependency-injection--의존성-주입">DI(Dependency Injection : 의존성 주입)</h3>
<p>외부에서 두 객체 간의 인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 해준다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[내일배움캠프 D+51]]></title>
            <link>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D47</link>
            <guid>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D47</guid>
            <pubDate>Wed, 03 Nov 2021 18:27:35 GMT</pubDate>
            <description><![CDATA[<h3 id="java-기초정리">JAVA 기초정리</h3>
<h3 id="기본틀">기본틀</h3>
<blockquote>
<h4 id="mainjava">Main.java</h4>
</blockquote>
<pre><code class="language-java">  public class Main {
      public static void main(String[] args){
      }
  }</code></pre>
<hr>
<h3 id="자료형">자료형</h3>
<details><summary>코드보기</summary>

<blockquote>
<h4 id="mainjava-1">Main.java</h4>
</blockquote>
<pre><code class="language-java">  public class Main {
      public static void main(String[] args){
          //
          // int
          int number = 5;  
          System.out.println(number); // (출력)단축: sout+tab
          //
          // 자료형
          String hello = &quot;Hello sparta&quot;; 
          System.out.println(hello);
          //
          // 상수
          final int finalNumber = 1; 
          System.out.println(finalNumber);
      }
  } </code></pre>
<h4 id="숫자">숫자</h4>
<blockquote>
<h4 id="mainjava-2">Main.java</h4>
</blockquote>
<pre><code class="language-java">  public class Main {
      public static void main(String[] args){
          //
          // short: 2 바이트로 표현 가능한 정수형 자료형
          short s = 1;
          System.out.println(s);
          //
          // int: 4 바이트로 표현 가능한 정수형 자료형
          int a = 3;
          System.out.println(a);
          //
          // long: 8 바이트로 표현 가능한 정수형 자료형
          long b= 4;
          System.out.println(b);
          //
          // float: 소수점 표현 가능한 자료형 
          // (뒤에 F를 붙여줘야된다.)
          float f = 5.5F;
          System.out.println(f);
          //
          // double: 좀더 큰 범위의 소수점 표현 가능한 자료형 
          // (뒤에 F를 붙여줘야된다.)
          double d = 5.5F;
          System.out.println(d);
          //
          // 자료형들이 보여줄 수 있는 최대값, 최소값 보기
          System.out.println(Short.MAX_VALUE);
          System.out.println(Short.MIN_VALUE);
          //
          System.out.println(Integer.MAX_VALUE);
          //
          System.out.println(Long.MAX_VALUE);
          //
          System.out.println(Float.MAX_VALUE);
          //
          System.out.println(Double.MAX_VALUE);
      }
  }</code></pre>
<h4 id="문자">문자</h4>
<blockquote>
<h4 id="mainjava-3">Main.java</h4>
</blockquote>
<pre><code class="language-java">  public class Main {
      public static void main(String[] args){
          //
          // 문자 하나를 표현해주는 자료형 (char는 한글자만 가능)
          char c = &#39;A&#39;;
          System.out.println(c);
          //
          // 논리 자료형 (불리언)
          boolean fact = true;
          fact = false;
          System.out.println(fact);
           //
          // 바이트
          byte data = &#39;d&#39;;
          System.out.println(data);
      }
  }</code></pre>
<h4 id="참조-자료형">참조 자료형</h4>
<blockquote>
<h4 id="mainjava-4">Main.java</h4>
</blockquote>
<pre><code class="language-java">  public class Main {
      public static void main(String[] args){
           //
          int[] intEmptyArray = new int[5]; // 인덱스 방법
          System.out.println(Arrays.toString(intEmptyArray));
          //
          int[] intArray = new int[] {1, 2, 3, 4, 5};
          System.out.println(Arrays.toString(intArray));
          //
          String[] stringEmptyArray = new String[5];
          System.out.println(Arrays.toString(stringEmptyArray));
          //
          String[] season = {&quot;봄&quot;, &quot;여름&quot;, &quot;가을&quot;, &quot;겨울&quot;};
             System.out.println(Arrays.toString(season));
      //
      System.out.println(season[season.length -1]);
      }
  }</code></pre>
</details>

<hr>
<h3 id="연산자">연산자</h3>
<details><summary>코드보기</summary>

<blockquote>
<h4 id="operatorjava">Operator.java</h4>
</blockquote>
<pre><code class="language-java">  public class Operator {
      public static void main(String[] args) {
      //
  // 사칙연산
          int num1 = 10;
          int num2 = 5;
      //
          System.out.println(num1 + num2);
          System.out.println(num1 - num2);
          System.out.println(num1 * num2);
          System.out.println(num1 / num2);
          System.out.println(0);
          //
  // 대입 연산자
          int num3 = 10;
          int num4 = 5;
          //
          System.out.println(num3);
          //
          num1 += num4;
          System.out.println(num3); // 15
          //
          num1 -= num4;
          System.out.println(num3); //10
          //
          num1 *= num4;
          System.out.println(num3); //50
          //
          num1 /= num4;
          System.out.println(num3); //10
          //
          num1 %= num4;
          System.out.println(num3); // 0
          //
  // 관계 연산자
          int num5 = 10;
          int num6 = 5;
          System.out.println(num5);
          //
          num5 += num6;
          System.out.println(num5); // 15
          //
          num1 -= num6;
          System.out.println(num5); //10
          //
          num1 *= num6;
          System.out.println(num5); //50
          //
          num1 /= num6;
          System.out.println(num5); //10
          //
          num1 %= num6;
          System.out.println(num5); // 0
          //
  // 논리 연산자
          boolean a = true;
          boolean b = false;
          System.out.println(a &amp;&amp; b); // and : 둘 다 참인경우
          System.out.println(a || b); // or
          System.out.println(!b); // NOT
      }
  }</code></pre>
</details>

<hr>
<h3 id="조건문">조건문</h3>
<details><summary>코드보기</summary>

<blockquote>
<h4 id="onditionaljava">onditional.java</h4>
</blockquote>
<pre><code class="language-java">  // if 문
  public class onditional {
      public static void main(String[] args){
          int check = 100;
          int num1 = 150;
          System.out.println(&quot;100보다 큰수 입니다.&quot;);
          //
  // switch 문
          char score = &#39;A&#39;;
          System.out.println(&quot;A등급 축하합니다.&quot;);
          //
  // 삼항 연산자  조건문? True : Fales
          int a= 5;
          String result = &quot;10보다 작습니다.&quot;;
          System.out.println(result);
          //
  // for 문
          int sum = 0;
          for ( int i=0; i&lt;10; i++){
              sum += i;
          }
          System.out.println(sum);
          //
  // for ehch 문
          // write your code here
          String[] days = {&quot;Monday&quot;, &quot;Tuesday&quot;, &quot;Wednesday&quot;, &quot;Thursday&quot;, &quot;Friday&quot;, &quot;Saturday&quot;, &quot;Sunday&quot;};
          for(String day : days){
              System.out.println(day);
          }
          //
  // while 문
          int i =0;
          int sum = 0;
          while (i &lt; 10){
              if (i ==4){
                  i++;
                  continue; // i == 4일때 i+1하고 이어서 아래 코드 동작
              }
              sum += (i+1);
              i++;
          }
          System.out.println(sum);
          //
  // do while 문 do 부분을 동작한 후 while문 동작
          int i =0;
          int sum = 0;
          do{
              sum += (i+1);
              i++;
          } while (i &lt; 10){
              if (i ==4){
                  i++;
                  continue; // i == 4일때 i+1하고 이어서 아래 코드 동작
              }
              sum += (i+1);
              i++;
          }
          System.out.println(sum);
      }
  }</code></pre>
</details>

<hr>
<h3 id="객체지향-언어">객체지향 언어</h3>
<details><summary>코드보기</summary> 

<h4 id="클래스">클래스</h4>
<blockquote>
<h4 id="object_oriented_languagejava">object_oriented_language.java</h4>
</blockquote>
<pre><code class="language-java">  class Phone {
      String model;
      String color;
      int price;
  }
  public class object_oriented_language {
      public static void main(String[] args) {
          Phone galaxy = new Phone();
          galaxy.model = &quot;Galaxy10&quot;;
          galaxy.color = &quot;Black&quot;;
          galaxy.price = 100;
          //
          Phone iphone = new Phone();
          iphone.model = &quot;iPhoneX&quot;;
          iphone.color = &quot;Black&quot;;
          iphone.price = 200;
          //
          System.out.println(&quot;철수는 이번에&quot; + galaxy.model + galaxy.color + &quot; + 색상을 &quot; + galaxy.price + &quot;만원에 샀다.&quot;);
          System.out.println(&quot;영희는 이번에&quot; + iphone.model + iphone.color + &quot; + 색상을 &quot; + iphone.price + &quot;만원에 샀다.&quot;);
      }
  }</code></pre>
<hr>
<h4 id="매소드">매소드</h4>
<blockquote>
<h4 id="object_oriented_languagejava-1">object_oriented_language.java</h4>
</blockquote>
<pre><code class="language-java">  class Calculation {
      int add(int x, int y) {
          return x + y;
      }
      int subtract(int x, int y) {
          return x - y;
      }
  }
  public class object_oriented_language {
      public static void main(String[] args){
          Calculation calculation = new Calculation();
          int addResult = calculation.add(1,2);
          int subtracResult = calculation.subtract(5,3);
          //
          System.out.println(addResult);
          System.out.println(subtracResult);
      }
  }</code></pre>
<hr>
<h4 id="생성자">생성자</h4>
<blockquote>
<h4 id="heritorjava">heritor.java</h4>
</blockquote>
<pre><code class="language-java">// 생성자
  class Phone {
      String model;
      String color;
      int price;
      //
      public Phone(String model, String color, int price) {
          this.model = model;
          this.color = color;
          this.price = price;
      }
  }
  public class heritor {
      public static void main(String[] args) {
          Phone galaxy = new Phone(&quot;galaxy10&quot;, &quot;black&quot;, 100);
          Phone iphone =new Phone(&quot;iphoneX&quot;, &quot;black&quot;, 200);
          //
          System.out.println(&quot;철수는 이번에 &quot; + galaxy.model + galaxy.color + &quot; + 색상을 &quot; + galaxy.price + &quot;만원에 샀다.&quot;);
          System.out.println(&quot;영희는 이번에 &quot; + iphone.model + iphone.color + &quot; + 색상을 &quot; + iphone.price + &quot;만원에 샀다.&quot;);
      }
  }
  //
  // 생성자를 사용하지 않은 케이스
  //
  class DefaultValueTest {
      byte byteDefaultValue;
      int intDefaultValue;
      short shortDefaultValue;
      long longDefaultValue;
      float floatDefaultValue;
      double doubleDefaultValue;
      boolean booleanDefaultValue;
      String referenceDefaultValue;
  }
  //
  public class heritor {
      public static void main(String[] args) {
          DefaultValueTest defaultValueTest = new DefaultValueTest();
          System.out.println(&quot;byte default: &quot; + defaultValueTest.byteDefaultValue);
          System.out.println(&quot;short default: &quot; + defaultValueTest.shortDefaultValue);
          System.out.println(&quot;int default: &quot; + defaultValueTest.intDefaultValue);
          System.out.println(&quot;long default: &quot; + defaultValueTest.longDefaultValue);
          System.out.println(&quot;float default: &quot; + defaultValueTest.floatDefaultValue);
          System.out.println(&quot;double default: &quot; + defaultValueTest.doubleDefaultValue);
          System.out.println(&quot;boolean default: &quot; + defaultValueTest.booleanDefaultValue);
          System.out.println(&quot;reference default: &quot; + defaultValueTest.referenceDefaultValue);
      }
  }</code></pre>
<hr>
<h4 id="상속">상속</h4>
<blockquote>
<h4 id="inheritancejava">Inheritance.java</h4>
</blockquote>
<pre><code class="language-java">  class Animal {
      String name;
      public void cry() {
          System.out.println(name + &quot;is crying.&quot;);
      }
  }
  class Dog extends Animal {
      Dog(String name) {
          this.name = name;
      }
      public void swim() {
          System.out.println(name + &quot; is swimming.&quot;);
      }
  }
  public class Inheritance {
      public static void main(String[] args) {
          Dog dog = new Dog(&quot;코코&quot;);
          dog.cry();
          dog.swim();
          //
          Animal dog2 = new Dog(&quot;미미&quot;);
          dog2.cry();
          dog2.swim();
      }
  }</code></pre>
<hr>
<h4 id="overloading">Overloading</h4>
<blockquote>
<h4 id="inheritancejava-1">Inheritance.java</h4>
</blockquote>
<pre><code class="language-java">  public class Inheritance {
      public static void main(String[] args) {
          // write your code here
      }
      int add(int x, int y, int z){
          return x+y+z;
      }
      long add(int a, int b, long c){
          return a+b+c;
      }
      int add(int a, int b){
          return a+b;
      }
  }</code></pre>
<h4 id="overriding">Overriding</h4>
<blockquote>
<h4 id="inheritancejava-2">Inheritance.java</h4>
</blockquote>
<pre><code class="language-java">  class Animal {
      String name;
      String color;
      public Animal(String name, String color) {
          this.name = name;
      }
      public Animal(String name) {
      }
      @Override
        void cry() {
          System.out.println(name + &quot; is crying&quot;);
      }
  }
  class Dog extends Animal {
      public Dog(String name) {
          super(name);
      }
      public void cry() {
          System.out.println(name + &quot; is barking&quot;);
      }
  }
  public class Inheritance {
      public static void main(String[] args) {
          Animal dog = new Dog(&quot;코코&quot;);
          dog.cry();
      }
  }</code></pre>
</details>


<hr>
<h3 id="접근-제어자">접근 제어자</h3>
<details><summary>코드보기</summary>

<blockquote>
<h4 id="package">package</h4>
</blockquote>
<h4 id="modifiertestjava">ModifierTest.java</h4>
<pre><code class="language-java">  package pkg;
  //
  public class ModifierTest {
      //
      public void messageInside() {
          System.out.println(&quot;This is private modifier&quot;);
      }
      public void messageOutside() {
          System.out.println(&quot;This is public modifier&quot;);
          messageOutside();
      }
      public void messageProtected() {
          System.out.println(&quot;This is Protected modifier&quot;);
      }
      void massagePackagePrivate() {
          System.out.println(&quot;This is package private modifier&quot;);
      }
  }</code></pre>
<hr>
<blockquote>
<h4 id="access_modifierjava">access_modifier.java</h4>
</blockquote>
<pre><code class="language-java">  import pkg.ModifierTest;
  //
  class Child extends ModifierTest {
      void callParentProtected() {
          System.out.println(&quot;call my parent&#39;s protected method&quot;);
          super.messageProtected();
      }
  }
  //
  public class access_modifier {
      public static void main(String[] args) {
          ModifierTest modifierTest = new ModifierTest();
          modifierTest.messageOutside();
  //        modifierTest.messageInside();
  //        modifierTest.messageProtected();
  //        modifierTest.massagePackagePrivate();
          //
          Child child = new Child();
          child.callParentProtected();
      }
  }</code></pre>
</details>

<hr>
<h3 id="추상-클래스">추상 클래스</h3>
<details><summary>코드보기</summary>  

<blockquote>
<h4 id="abstract_classjava">abstract_class.java</h4>
</blockquote>
<pre><code class="language-java">  abstract class Bird {
      private int x, y, z;
      //
      void fly(int x, int y, int z) {
          printLocation();
          System.out.println(&quot;이동합니다.&quot;);
          this.x = x;
          this.y = y;
          if (flyable(z)) {
              this.z = z;
          } else {
              System.out.println(&quot;그 높이로는 날 수 없습니다&quot;);
          }
          printLocation();
      }
      //
      abstract boolean flyable(int z);
      //
      public void printLocation() {
          System.out.println(&quot;현재 위치 (&quot; + x + &quot;, &quot; + y + &quot;, &quot; + z + &quot;)&quot;);
      }
  }
  //
  class Pigeon extends Bird {
      @Override
      boolean flyable(int z) {
          return z &lt; 10000;
      }
  }
  //
  class Peacock extends Bird {
      @Override
      boolean flyable(int z) {
          return false;
      }
  }
  //
  public class abstract_class {
      public static void main(String[] args) {
          Bird pigeon = new Pigeon();
          Bird peacock = new Peacock();
          System.out.println(&quot;-- 비둘기 --&quot;);
          pigeon.fly(1, 1, 3);
          System.out.println(&quot;-- 공작새 --&quot;);
          peacock.fly(1, 1, 3);
          System.out.println(&quot;-- 비둘기 --&quot;);
          pigeon.fly(3, 3, 30000);
      }
  }</code></pre>
</details>

<h3 id="인터페이스">인터페이스</h3>
<details><summary>코드보기</summary>  

<blockquote>
<h4 id="abstract_classjava-1">abstract_class.java</h4>
</blockquote>
<pre><code class="language-java">  abstract class Bird {
      private int x, y, z;
      //
      void fly(int x, int y, int z) {
          printLocation();
          System.out.println(&quot;이동합니다.&quot;);
          this.x = x;
          this.y = y;
          if (flyable(z)) {
              this.z = z;
          } else {
              System.out.println(&quot;그 높이로는 날 수 없습니다&quot;);
          }
          printLocation();
      }
      //
      abstract boolean flyable(int z);
      //
      public void printLocation() {
          System.out.println(&quot;현재 위치 (&quot; + x + &quot;, &quot; + y + &quot;, &quot; + z + &quot;)&quot;);
      }
  }
  //
  class Pigeon extends Bird {
      @Override
      boolean flyable(int z) {
          return z &lt; 10000;
      }
  }
  //
  class Peacock extends Bird {
      @Override
      boolean flyable(int z) {
          return false;
      }
  }
  //
  public class abstract_class {
      public static void main(String[] args) {
          Bird pigeon = new Pigeon();
          Bird peacock = new Peacock();
          System.out.println(&quot;-- 비둘기 --&quot;);
          pigeon.fly(1, 1, 3);
          System.out.println(&quot;-- 공작새 --&quot;);
          peacock.fly(1, 1, 3);
          System.out.println(&quot;-- 비둘기 --&quot;);
          pigeon.fly(3, 3, 30000);
      }
  }</code></pre>
</details>

<p>추후 내용 추가 (설명, 동작 이미지, 추가 자바기초 내용)</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[내일배움캠프 D+50]]></title>
            <link>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D46</link>
            <guid>https://velog.io/@yu_jep/%EB%82%B4%EC%9D%BC%EB%B0%B0%EC%9B%80%EC%BA%A0%ED%94%84-D46</guid>
            <pubDate>Mon, 01 Nov 2021 16:54:46 GMT</pubDate>
            <description><![CDATA[<h3 id="aws-서버리스-프론트엔드-1">AWS 서버리스 프론트엔드-1</h3>
<h4 id="과정-내일배움캠프-d44-추가">&lt;과정&gt; (내일배움캠프 D+44 추가)</h4>
<h4 id="16-cloudfront">16. CloudFront</h4>
<ul>
<li>생성하기 &gt; Origin domain 설정 &gt; Default root object-potional 설정</li>
<li>도메인 이름 확인(브라우저로 열어보기)</li>
</ul>
<h4 id="17-도메인-연결">17. 도메인 연결</h4>
<ul>
<li>가비아 레코드수정 ( 값/위치 : CloudFront 도메인 이름으로 수정)</li>
<li>브라우저 확인(<a href="http://www.url.shop">www.url.shop</a>: 403에러 )</li>
<li>CloudFront &gt; 16.에서 생성한 파일 &gt; Settings 수정 &gt; alternate domain name 추가(&quot;<a href="http://www.url.shop&quot;">www.url.shop&quot;</a>) &gt; 에러발생</li>
</ul>
<h4 id="18-인증서-만들기certificate-manager-이용">18. 인증서 만들기(Certificate Manager 이용)</h4>
<ul>
<li>17.의 Settings &gt; Custom ssl certificate의 Request certificate &gt; 인증서 요청 &gt;
도매인 이름 추가 (*.url.shop) &gt; 검증방법(DNS) &gt; 저장</li>
<li>가비아 레코드 추가 &gt; 위 검증에서 값 확인 &gt; 가비아 DNS 레코드 수정 이름(검증): 호스트(가비아), 값(검증): 값/위치(가비아) &gt; 발급확인 </li>
</ul>
<h4 id="19-waf-만들기">19. WAF 만들기</h4>
<ul>
<li>설정: Name, Resource type(cloudFront distributions), add AWS resources &gt; Next</li>
<li>Add rules and rule groups(Default web ACL action for requests that dont&#39;t match any rules &gt; Allow 체크) &gt; Next</li>
<li>Configure metrics &gt; Request sampling options &gt; 검토 &gt; 확인</li>
</ul>
<h4 id="20-아이피-차단-룰-추가">20. 아이피 차단 룰 추가</h4>
<ul>
<li>IP sets &gt;  아이피 리스트 생성 &gt; 아이피 추가 (IP set name, ip addresses) &gt; 룰 추가(Add my own rules and rule groups) &gt; Rule type(IP set, Rule(name 설정, IP set)) &gt; 확인 </li>
<li>테스트 (403 에러) </li>
</ul>
<h4 id="21-sql-인젝션-룰-추가">21. SQL 인젝션 룰 추가</h4>
<ul>
<li>룰 추가 (Rule builder 선택 , Rule(name 설정), Statement 설정)</li>
<li>테스트 (403 에러)</li>
<li>데이터 확인</li>
</ul>
<h4 id="22-네임서버-route53-이전">22. 네임서버 Route53 이전</h4>
<ul>
<li>Route 53 &gt; DNS 관리 호스팅 영역 생성 &gt; 도메인 이름 설정, 퍼블릭 호스팅 영역, 정보확인(이름서버 4개)</li>
</ul>
<h4 id="23-가비아-네임서버-설정">23. 가비아 네임서버 설정</h4>
<ul>
<li>관리툴 &gt; 네임서버 확인 &gt; 네임 서버 변경 22번의 4개 &gt; 변경 확인 </li>
<li>레코드 생성 &gt; 호스팅 영역 세부 정보 &gt; 레코드 생성 &gt; 빠른 레코드 생성 &gt; 확인.</li>
</ul>
]]></description>
        </item>
    </channel>
</rss>