<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>dong_hi.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Fri, 16 Feb 2024 08:35:34 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>dong_hi.log</title>
            <url>https://velog.velcdn.com/images/dong_hi/profile/ca5df944-6fdd-4ff6-b57b-ae7fe5af7ed1/image.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. dong_hi.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/dong_hi" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[트러블슈팅] 카카오맵 api 불러올때 지도 재범위 설정 ]]></title>
            <link>https://velog.io/@dong_hi/%ED%8A%B8%EB%9F%AC%EB%B8%94%EC%8A%88%ED%8C%85-%EC%B9%B4%EC%B9%B4%EC%98%A4%EB%A7%B5-api-%EB%B6%88%EB%9F%AC%EC%98%AC%EB%95%8C-%EC%A7%80%EB%8F%84-%EC%9E%AC%EB%B2%94%EC%9C%84-%EC%84%A4%EC%A0%95</link>
            <guid>https://velog.io/@dong_hi/%ED%8A%B8%EB%9F%AC%EB%B8%94%EC%8A%88%ED%8C%85-%EC%B9%B4%EC%B9%B4%EC%98%A4%EB%A7%B5-api-%EB%B6%88%EB%9F%AC%EC%98%AC%EB%95%8C-%EC%A7%80%EB%8F%84-%EC%9E%AC%EB%B2%94%EC%9C%84-%EC%84%A4%EC%A0%95</guid>
            <pubDate>Fri, 16 Feb 2024 08:35:34 GMT</pubDate>
            <description><![CDATA[<h1 id="레퍼런스">레퍼런스</h1>
<p>지도 범위 재설정 하기
지도 범위를 재설정합니다. 어떤 좌표나 마커들이 지도에 모두 보여야 할 때 좌표들의 정보를 갖는 LatLngBounds를 사용하여 좌표들이 모두 보이게 지도의 중심좌표와 레벨을 재설정 할 수 있습니다.</p>
<pre><code class="language-javascript">
var map = new kakao.maps.Map(mapContainer, mapOption); // 지도를 생성합니다

// 버튼을 클릭하면 아래 배열의 좌표들이 모두 보이게 지도 범위를 재설정합니다 
var points = [
    new kakao.maps.LatLng(33.452278, 126.567803),

];

// 지도를 재설정할 범위정보를 가지고 있을 LatLngBounds 객체를 생성합니다
var bounds = new kakao.maps.LatLngBounds();    

var i, marker;
for (i = 0; i &lt; points.length; i++) {
    // 배열의 좌표들이 잘 보이게 마커를 지도에 추가합니다
    marker =     new kakao.maps.Marker({ position : points[i] });
    marker.setMap(map);

    // LatLngBounds 객체에 좌표를 추가합니다
    bounds.extend(points[i]);
}

function setBounds() {
    // LatLngBounds 객체에 추가된 좌표들을 기준으로 지도의 범위를 재설정합니다
    // 이때 지도의 중심좌표와 레벨이 변경될 수 있습니다
    map.setBounds(bounds);
}</code></pre>
<h1 id="적용">적용</h1>
<p><img src="https://velog.velcdn.com/images/dong_hi/post/e737c710-a1ad-404d-beb6-5e0224655bd3/image.png" alt=""></p>
<h2 id="문제점-중심에서-벗어남-고쳐야함">문제점: 중심에서 벗어남 고쳐야함</h2>
<pre><code class="language-javascript">// bounds 선언
var map = new kakao.maps.Map(mapContainer, mapOption); // 지도를 생성합니다
        // 지도를 재설정할 범위정보를 가지고 있을 LatLngBounds 객체를 생성합니다
        var bounds = new kakao.maps.LatLngBounds();
        function setBounds() {
            // LatLngBounds 객체에 추가된 좌표들을 기준으로 지도의 범위를 재설정합니다
            // 이때 지도의 중심좌표와 레벨이 변경될 수 있습니다
            map.setBounds(bounds);
        }</code></pre>
<h2 id="1번째-시도">1번째 시도</h2>
<p><code>console.log(clickPosition);</code>
<img src="https://velog.velcdn.com/images/dong_hi/post/5dc319a6-4ae0-491e-8c22-ef10dd3b306b/image.png" alt="">
marker 찍는 함수에다가
<code>bounds.extend(clickPosition);</code> 넣어보기</p>
<pre><code class="language-javascript">function addSelectedMarker({la, ma}, index) {

                marker = new kakao.maps.Marker({
                    position: new kakao.maps.LatLng(la, ma), // 마커의 위치
                    image: markerImage
                });

            marker.setMap(map)

            var clickPosition = new kakao.maps.LatLng(la, ma)
            // 검색된 장소 위치를 기준으로 지도 범위를 재설정하기위해
            // LatLngBounds 객체에 좌표를 추가합니다
            console.log(clickPosition);
            bounds.extend(clickPosition);
}</code></pre>
<h2 id="실패">실패!!</h2>
<h2 id="2번째">2번째</h2>
<p><code>console.log(laMas[1].la);</code><img src="https://velog.velcdn.com/images/dong_hi/post/4eb04ac4-428b-4eb6-a6f5-0f6f5a06a329/image.png" alt=""></p>
<p><code>bounds.extend(new kakao.maps.LatLng(laMas[0]));</code> 이거 넣어도 중심 안옮겨짐</p>
<pre><code class="language-javascript">const laMas = JSON.parse(/*[[${laMas}]]*/ []);

        laMas.forEach((lama, index) =&gt; {
            addSelectedMarker(lama, index);
            // 검색된 장소 위치를 기준으로 지도 범위를 재설정하기위해
            // LatLngBounds 객체에 좌표를 추가합니다
            console.log(laMas[1]);

            bounds.extend(new kakao.maps.LatLng(laMas[0]));
            // bounds.extend(new window.kakao.maps.LatLng(laMas[1]));
        })</code></pre>
<p>도 안됌.</p>
<h2 id="3번째">3번째</h2>
<p>스트링말고 double 로 해보기
오류뜸</p>
<h2 id="4번째-_해결">4번째 _해결</h2>
<hr>
<p>setBounds 함수 다 버림.
처음 <code>mapOption</code>에서 center 에 바로 걍 넣음
<code>chatGPT</code>한테 자바스크립트에서 자료형어케바꾸냐고 물어봄 =&gt; <code>parseFloat</code> 쓰라함.
=&gt;&gt; <code>오류</code>남 <code>lamas</code>가 선언이 안되어있음.
===&gt; lamas 변수선은 위로 올림 해결~~</p>
<pre><code class="language-javascript">
const laMas = JSON.parse(/*[[${laMas}]]*/ []);
        var mapContainer = document.getElementById(&#39;map&#39;), // 지도를 표시할 div
            mapOption = {
                //지도의 중심좌표
                center: new kakao.maps.LatLng(parseFloat(laMas[0].la),parseFloat(laMas[0].ma)),

                level: 7 // 지도의 확대 레벨
            };</code></pre>
<p><img src="https://velog.velcdn.com/images/dong_hi/post/af03b99b-8d3d-4c1a-a555-28b01f42d941/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[깃헙 push pull 충돌 관리]]></title>
            <link>https://velog.io/@dong_hi/%EA%B9%83%ED%97%99-push-pull-%EC%B6%A9%EB%8F%8C-%EA%B4%80%EB%A6%AC</link>
            <guid>https://velog.io/@dong_hi/%EA%B9%83%ED%97%99-push-pull-%EC%B6%A9%EB%8F%8C-%EA%B4%80%EB%A6%AC</guid>
            <pubDate>Mon, 22 Jan 2024 04:17:36 GMT</pubDate>
            <description><![CDATA[<p><a href="https://velog.io/@jhyeom1545/git-7">https://velog.io/@jhyeom1545/git-7</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[테킷 따라가기] Day03_DB SQL 오답노트]]></title>
            <link>https://velog.io/@dong_hi/%ED%85%8C%ED%82%B7-%EB%94%B0%EB%9D%BC%EA%B0%80%EA%B8%B0-Day03DB-SQL-%EC%98%A4%EB%8B%B5%EB%85%B8%ED%8A%B8</link>
            <guid>https://velog.io/@dong_hi/%ED%85%8C%ED%82%B7-%EB%94%B0%EB%9D%BC%EA%B0%80%EA%B8%B0-Day03DB-SQL-%EC%98%A4%EB%8B%B5%EB%85%B8%ED%8A%B8</guid>
            <pubDate>Tue, 02 Jan 2024 16:58:32 GMT</pubDate>
            <description><![CDATA[<h2 id="기본-명령어">기본 명령어</h2>
<pre><code class="language-sql">#  전체 데이터베이스 리스팅
SHOW DATABASES;
# `mysql` 데이터 베이스 선택
USE mysql;
# 테이블 리스팅
SHOW TABLES;
# 특정 테이블의 구조
DESC `user`;</code></pre>
<h2 id="수정">수정</h2>
<p>(create문과 유사)</p>
<pre><code class="language-sql">
# 테이블 구조 수정(id 칼럼 추가, first)
ALTER TABLE article ADD COLUMN id INT FIRST;</code></pre>
<p><img src="https://velog.velcdn.com/images/dong_hi/post/4f686203-46ec-4e41-b9d4-9927a9966a71/image.png" alt=""></p>
<pre><code class="language-sql"># 기존 데이터에 id값 추가(id = 1, id IS NULL)
UPDATE article
SET id =1 
WHERE id IS NULL;
# 데이터 조회(*, 둘다 수정되어 버림..)
SELECT * FROM article;</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[테킷_따라가기]Day02_SBB 요청상황별 추천하는 HTTP 메서드]]></title>
            <link>https://velog.io/@dong_hi/%ED%85%8C%ED%82%B7%EB%94%B0%EB%9D%BC%EA%B0%80%EA%B8%B0Day02SBB-%EC%9A%94%EC%B2%AD%EC%83%81%ED%99%A9%EB%B3%84-%EC%B6%94%EC%B2%9C%ED%95%98%EB%8A%94-HTTP-%EB%A9%94%EC%84%9C%EB%93%9C</link>
            <guid>https://velog.io/@dong_hi/%ED%85%8C%ED%82%B7%EB%94%B0%EB%9D%BC%EA%B0%80%EA%B8%B0Day02SBB-%EC%9A%94%EC%B2%AD%EC%83%81%ED%99%A9%EB%B3%84-%EC%B6%94%EC%B2%9C%ED%95%98%EB%8A%94-HTTP-%EB%A9%94%EC%84%9C%EB%93%9C</guid>
            <pubDate>Wed, 13 Dec 2023 18:47:42 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/dong_hi/post/74d31bfa-57c9-48d0-931d-33f54ab170bf/image.png" alt=""></p>
<ul>
<li><p>POST : 생성</p>
<ul>
<li>회원가입</li>
<li>글쓰기</li>
<li>댓글쓰기</li>
<li>로그인<ul>
<li>로그인을 하면 세션이 생성</li>
</ul>
</li>
<li>로그아웃</li>
<li>추천</li>
</ul>
</li>
<li><p>PUT(혹은 PATH) : 수정</p>
<ul>
<li>글 수정</li>
<li>댓글 수정</li>
</ul>
</li>
<li><p>DELETE :삭제</p>
<ul>
<li>글 삭제</li>
<li>댓글 삭제</li>
<li>추천취소</li>
</ul>
</li>
<li><p>GET : 나머지들    </p>
</li>
</ul>
<p>MPA : 타임리프나 JSP</p>
<pre><code>- POST , GET 주로 씀
- fetch 함수를 통해서 PUT과 DELTE 도 사용할 수는 있지만, 
대부분 POST 와 GET 만 사용</code></pre><p>SPA : 리액트, 뷰, 앵귤러, 스벨트</p>
<pre><code>- POST , GET 주로 씀</code></pre><p>참고:<a href="https://velog.io/@dataliteracy/HTTP-%EB%A9%94%EC%84%9C%EB%93%9C-%EB%8F%99%EC%9E%91%ED%95%B4%EB%B3%B4%EA%B8%B0">https://velog.io/@dataliteracy/HTTP-%EB%A9%94%EC%84%9C%EB%93%9C-%EB%8F%99%EC%9E%91%ED%95%B4%EB%B3%B4%EA%B8%B0</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[인텔리제이_오류수첩]layout에 빨간줄오류]]></title>
            <link>https://velog.io/@dong_hi/%EC%9D%B8%ED%85%94%EB%A6%AC%EC%A0%9C%EC%9D%B4%EC%98%A4%EB%A5%98%EC%88%98%EC%B2%A9</link>
            <guid>https://velog.io/@dong_hi/%EC%9D%B8%ED%85%94%EB%A6%AC%EC%A0%9C%EC%9D%B4%EC%98%A4%EB%A5%98%EC%88%98%EC%B2%A9</guid>
            <pubDate>Wed, 13 Dec 2023 18:33:43 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/dong_hi/post/af4b8ce5-3abe-4bdf-ab48-862391eb6092/image.png" alt=""></p>
<p>체크 해제하면
<img src="https://velog.velcdn.com/images/dong_hi/post/e777003d-ed58-412e-94c0-0342f9f7d22c/image.png" alt="">
해결
<img src="https://velog.velcdn.com/images/dong_hi/post/83b70de3-8fc5-458a-ae48-28e5de6c95c0/image.png" alt="">
Inspections ➡️ Unbound namespace prefix ✅ 를 해제하면 된다.
참고
<a href="https://m.blog.naver.com/owjs3901/221582693935">인텔리제이 HTML 추가속성 오류 해결법</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[인텔리제이_오류수첩]디렉토리 분리해서 보기 톱니바퀴 안보일때]]></title>
            <link>https://velog.io/@dong_hi/%EC%9D%B8%ED%85%94%EB%A6%AC%EC%A0%9C%EC%9D%B4%EC%98%A4%EB%A5%98%EC%88%98%EC%B2%A9%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC-%EB%B6%84%EB%A6%AC%ED%95%B4%EC%84%9C-%EB%B3%B4%EA%B8%B0</link>
            <guid>https://velog.io/@dong_hi/%EC%9D%B8%ED%85%94%EB%A6%AC%EC%A0%9C%EC%9D%B4%EC%98%A4%EB%A5%98%EC%88%98%EC%B2%A9%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC-%EB%B6%84%EB%A6%AC%ED%95%B4%EC%84%9C-%EB%B3%B4%EA%B8%B0</guid>
            <pubDate>Wed, 13 Dec 2023 12:42:38 GMT</pubDate>
            <description><![CDATA[<ol>
<li>톱니바퀴 선택 후
<img src="https://velog.velcdn.com/images/dong_hi/post/e6ae20d0-0005-4f7d-b3c4-6174a8c91b97/image.png" alt="">
2) Compact Middle Packages 란 체크를 해제하거나 선택합니다.</li>
</ol>
<p>2.톱니바퀴가 없다면
<img src="https://velog.velcdn.com/images/dong_hi/post/fb6c9e0b-8231-408a-ba7f-22e2cd5cb9db/image.png" alt="">
Options =&gt; TreeApperance =&gt; Compact Middle Packages 해제
<img src="https://velog.velcdn.com/images/dong_hi/post/cf653e24-c16e-49f3-b102-7608899a553b/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[테킷 따라가기]_1Day_SB 기본강의01
Ultimate로 스프링부트 개발하기 : 프로젝트 생성]]></title>
            <link>https://velog.io/@dong_hi/%ED%85%8C%ED%82%B7-%EB%94%B0%EB%9D%BC%EA%B0%80%EA%B8%B01DaySB-%EA%B8%B0%EB%B3%B8%EA%B0%95%EC%9D%98Ultimate%EB%A1%9C-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%EA%B0%9C%EB%B0%9C%ED%95%98%EA%B8%B0-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%83%9D%EC%84%B1</link>
            <guid>https://velog.io/@dong_hi/%ED%85%8C%ED%82%B7-%EB%94%B0%EB%9D%BC%EA%B0%80%EA%B8%B01DaySB-%EA%B8%B0%EB%B3%B8%EA%B0%95%EC%9D%98Ultimate%EB%A1%9C-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%EA%B0%9C%EB%B0%9C%ED%95%98%EA%B8%B0-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%83%9D%EC%84%B1</guid>
            <pubDate>Fri, 08 Dec 2023 11:09:53 GMT</pubDate>
            <description><![CDATA[<h2 id="프로젝트-생성하기">프로젝트 생성하기</h2>
<p><img src="https://velog.velcdn.com/images/dong_hi/post/444e1a5b-8403-4767-95e5-c9fedd399454/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/dong_hi/post/de75e5c9-315a-421b-887f-0fedc604f023/image.png" alt=""></p>
<h3 id="spring-boot-devtools">Spring Boot DevTools</h3>
<p>서버 껏다키기 자동</p>
<h3 id="spring-web">Spring Web</h3>
<p>Scanner(System.in) 말고
HTTP 로 컨트롤러와 액션을 받을 수 있게
키보드로 입력받지 않고 웹 브라우져로 입력을 받음. </p>
<h2 id="프로젝트-설정">프로젝트 설정</h2>
<p><a href="https://velog.io/@dong_hi/%ED%85%8C%ED%82%B7%EC%9D%BC%EC%A7%802day">[테킷_일지]2D_스프링에서 필수</a></p>
<p><code>application.propertices</code> 에서 <code>application.yml</code>로 확장자 바꾸고 아래와같이 코딩</p>
<pre><code class="language-yml">server:
  port: 8020</code></pre>
<p>바꾼 이유 : 프로퍼티스보다 중복 코드가 줄어들기에</p>
<h2 id="서버확인">서버확인</h2>
<p>Application.java Run 시
아래 와같은 빌드 코드가 뜨면 성공
<img src="https://velog.velcdn.com/images/dong_hi/post/d5e2376f-6510-4f4c-8853-a80e83956dc7/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[git 명령어]]></title>
            <link>https://velog.io/@dong_hi/git-%EB%AA%85%EB%A0%B9%EC%96%B4</link>
            <guid>https://velog.io/@dong_hi/git-%EB%AA%85%EB%A0%B9%EC%96%B4</guid>
            <pubDate>Mon, 04 Dec 2023 05:52:01 GMT</pubDate>
            <description><![CDATA[<h2 id="git-머지-실패-시">git 머지 실패 시</h2>
<pre><code class="language-bash">git reset --merge HEAD~1 </code></pre>
<p>명령어도 쓸 수 있습니다:</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[JAVA] 스트림]]></title>
            <link>https://velog.io/@dong_hi/JAVA-%EC%8A%A4%ED%8A%B8%EB%A6%BC</link>
            <guid>https://velog.io/@dong_hi/JAVA-%EC%8A%A4%ED%8A%B8%EB%A6%BC</guid>
            <pubDate>Thu, 30 Nov 2023 14:57:36 GMT</pubDate>
            <description><![CDATA[<p>스트림 이해 안되서 글 보고 쓰기 공부법 들어간다
출처:<a href="https://hbase.tistory.com/171">https://hbase.tistory.com/171</a>
<img src="blob:https://velog.io/7a5cf083-6f48-4561-b11d-69073506d4b2" alt="업로드중.."></p>
<hr>
<h2 id="자바-스트림stream이란">자바 스트림(Stream)이란</h2>
<blockquote>
<p>java 8 부터 지원되기 시작함.
컬렉션에 저장되어 엘리먼트들을 하나씩 순회하며
처리하는 코드패턴. 람다식과 함께 사용되 데이터 처리 간결하게 함. </p>
</blockquote>
<hr>
<h2 id="복습--배열-선언">복습 : 배열 선언</h2>
<p>스트림에 앞서 배열 선언과 재 생성을 복습하자</p>
<pre><code class="language-java">//배열은 길이가 정해져있다.
//같은타입만 넣을 수 있다. 이차원배열이아닌이상
//**값 목록으로 배열생성**
//1.  타입[] 변수;
//2. 타입 변수[];
//값 미리 선언
String [] names ={&quot;값1&quot;, &quot;값2&quot;};
//값 나중에 선언
int[] names = null;
names = new int [] { 1, 2, 3};

// **new 연산자로 배열 생성 **
String [] names = new String[3];
</code></pre>
<hr>
<h1 id="스트림-사용법">스트림 사용법</h1>
<hr>
<h2 id="스트림생성-배열-arraysstream">스트림생성-배열 Arrays.stream</h2>
<p>먼저 생성.
배열은 <code>Arrays.stream</code>사용</p>
<pre><code class="language-java">String[] arr = new String[]{&quot;a&quot;, &quot;b&quot;,&quot;c&quot;}
String&lt;String&gt; stream = Arrays.stream(arr);
Stream &lt;String&gt; streamofArrayPart= Arrays.stream(arr, 1,3); 
//인덱스 1포함, 3 제외 =&gt; (&quot;b&quot;, &quot;c&quot;)
</code></pre>
<h2 id="스트림생성-컬렉션">스트림생성-컬렉션</h2>
<pre><code>List&lt;String list = Arrays.asLsti(&quot;a&quot;,&quot;b&quot;,&quot;c&quot;);
Stream&lt;String&gt; stream = list.stream();
</code></pre><h2 id="스트림생성-빌더">스트림생성-빌더</h2>
<pre><code>직접 값 입력함
String&lt;String&gt; stream = Stream&lt;String&gt; builder()
    .add(&quot;Apple&quot;)
    .add(&quot;Banana&quot;)
    .add(&quot;Melon&quot;)
    .build();
// 애플 바나나 멜론 순서로 문자열 데이터를 처리.    </code></pre><h2 id="스트림생성--generator">스트림생성 -Generator</h2>
<pre><code class="language-java">//데이터를 생성하는 람다식을 이용해서 스트림을 생성함.
public static&lt;T&gt; Stream&lt;T&gt; generate (Supplier&lt;T&gt; s){...}
//Supplier에 해당하는 람다식이 데이터를 생성. 
Stream&lt;String&gt; stream =Stream.generate(() -&gt; &quot;Hello&quot;).limit(5);
// Hello 찍어냄. 무한 생성 limit() 메소드를 이용해 스트림이 5개만 제한 </code></pre>
<h2 id="스트림생성---iterate">스트림생성 - iterate</h2>
<pre><code class="language-java">//수열 형태 데이터 생성
Stream&lt;String&gt; stream = Stream.iterate(100, n-&gt; n+10).limit(5);
//출력 결과: 100 부터 10씩 증가 하는 숫자 생성</code></pre>
<hr>
<h1 id="스트림-데이터가공">스트림 데이터가공</h1>
<h2 id="filter">Filter</h2>
<pre><code class="language-java">Stream&lt;Integer&gt; stream = IntStream.range(1,10).boxed();
</code></pre>
<blockquote>
<p>boxed가 뭘까?
자바 Int 변수를 다룰 때 Integer 클래스로 오토박생해서 처리하는 경우:</p>
</blockquote>
<p>오버헤드 발생!~! =&gt; 성능저하
스트림 객체에서는 이를 위해 </p>
<p>제네릭을 이용한 클래스로 사용 시 박식 사용</p>
<pre><code class="language-java">Stream&lt;Integer&gt; stream = IntStream.range(1,10).boxed();
</code></pre>
<h3 id="filter예제">filter예제</h3>
<ol>
<li>1 ~ 9 까지 데이터를 뽑아내는 스트림 만들고</li>
<li>filter 메소드에 짝수 선별하는 람다식</li>
<li>짝스 데이터만 뽑아내는 객체 리턴</li>
</ol>
<pre><code class="language-java">Stream&lt;Integer&gt; stream  = IntStream.range(1,10).boxed();
stream.filter(v -&gt; ((v %2) ==0))
    .forEach(System.out::println);

//출력결과 :
//2,4,6,8</code></pre>
<h2 id="map">Map</h2>
<p>map()은 스트림에서 뽑아져 나온는 데이터를 변경</p>
<h3 id="map-예제">Map 예제</h3>
<p>짝수에다가 10씩 곱하기</p>
<pre><code class="language-java">Stream&lt;Integer&gt; stream = IntStream.range(1,10).boxed();
stream.filter(v -&gt; ((V%2) ==0))
    .map(v -&gt; v *10)
    .forEach(System.out::println);
//출력결과:
//20, 40, 60, 80</code></pre>
<h2 id="sorted">Sorted</h2>
<p>스트림데이터 정렬시 사용
오름 차순,, 내림차순 등등</p>
<h1 id="스트림-결과-생성">스트림 결과 생성</h1>
<p>지금까지는 중간작업
데이터 가공, 필터링 후 그 값을 컬렉션으로 모우는 작업 필요</p>
<h2 id="통계값">통계값</h2>
<p>정수 값을 받는 스트림의 마무리는 &#39;총합&#39;을 구하거나 &#39;최대값&#39;,&#39;최소값&#39;, &#39;숫자의개수&#39;, &#39;평균값
등에 대한 계산. </p>
<pre><code class="language-java">int sum = IntStream.range(1,10).sum();
int count = IntStream.range(1,10).count();

int max = IntStream.range(1,10).max();
int min = IntStream.range(1,10).min();
int avg =IntStream.range(1,10).average();

//짝수 숫자의 총합
int evenSum = IntStream.range(1,10)
    .filter(v-&gt; ((v%2) ==))
    .sum();
</code></pre>
<h2 id="foreach">foreach</h2>
<p>스트림에서 뽑아져 나온값에 작업할때 
리턴하지 않음</p>
<pre><code class="language-java">Set&lt;Integer&gt; evenNumber = IntStream.range(1,1000).boxed()
    .filter(n -&lt; (n%2 ==0))
    .forEach(System.out:println);
// 출력결과:
1 부터 999까지 숫자 중 짝수만 뽑아냄 </code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[인텔리제이 커뮤니티버전에서 얼티메이트 버전 업그레이드]]></title>
            <link>https://velog.io/@dong_hi/%EC%9D%B8%ED%85%94%EB%A6%AC%EC%A0%9C%EC%9D%B4-%EC%BB%A4%EB%AE%A4%EB%8B%88%ED%8B%B0%EB%B2%84%EC%A0%84%EC%97%90%EC%84%9C-%EC%96%BC%ED%8B%B0%EB%A9%94%EC%9D%B4%ED%8A%B8-%EB%B2%84%EC%A0%84-%EC%97%85%EA%B7%B8%EB%A0%88%EC%9D%B4%EB%93%9C</link>
            <guid>https://velog.io/@dong_hi/%EC%9D%B8%ED%85%94%EB%A6%AC%EC%A0%9C%EC%9D%B4-%EC%BB%A4%EB%AE%A4%EB%8B%88%ED%8B%B0%EB%B2%84%EC%A0%84%EC%97%90%EC%84%9C-%EC%96%BC%ED%8B%B0%EB%A9%94%EC%9D%B4%ED%8A%B8-%EB%B2%84%EC%A0%84-%EC%97%85%EA%B7%B8%EB%A0%88%EC%9D%B4%EB%93%9C</guid>
            <pubDate>Wed, 29 Nov 2023 08:52:55 GMT</pubDate>
            <description><![CDATA[<p>인텔리제이 커뮤니티버전에서 얼티메이트 버전 업그레이드 기능은 없으므로
인텔리제이 얼티메이트 버전을 설치해준다
일단, 커뮤니티 버전을 삭제하진않았다.
<a href="https://www.jetbrains.com/idea/download/?section=windows#section=windows">https://www.jetbrains.com/idea/download/?section=windows#section=windows</a>
<img src="https://velog.velcdn.com/images/dong_hi/post/c4e53f1d-c31a-44ae-a589-a2c9f5b3d650/image.png" alt="">
설정해주고 next 
재부팅해주고
<img src="https://velog.velcdn.com/images/dong_hi/post/f096665a-aaeb-47d3-b0d4-08c459148d6b/image.png" alt="">
바탕화면에
커뮤니티 버전 옆에 한개 더생김 오른쪽 아이콘 눌러서
<img src="https://velog.velcdn.com/images/dong_hi/post/c812ad16-1e7a-4858-9d1a-da9f1c6e75c2/image.png" alt="">
좌 하단 로그인 눌러 로그인
<img src="https://velog.velcdn.com/images/dong_hi/post/2845cbf7-b8b6-4a67-b0c0-70c011b2cad5/image.png" alt="">
위 사진의 라이센스 아이디와 사진에는 잘라서 안보임</p>
<p><img src="https://velog.velcdn.com/images/dong_hi/post/eae3091d-c30a-4cc8-abb1-5de8cdb7d5c0/image.png" alt=""></p>
<p>위 사진의 라이센스 아이디 같은거 확인후 액티베이트 파란버튼 누르면
exit 하고 다시 재 실행하면
<img src="https://velog.velcdn.com/images/dong_hi/post/f2314c18-ff3e-4717-aaf1-baa7f87f3e34/image.png" alt="">
나옴</p>
<p>완성.</p>
<p><a href="https://pingfanzhilu.tistory.com/entry/IntelliJ-IntelliJ-%EC%9D%B8%ED%85%94%EB%A6%AC%EC%A0%9C%EC%9D%B4-Spring-Boot-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%83%9D%EC%84%B1-%EB%B0%8F-%EC%8B%A4%ED%96%89%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95">참고</a> </p>
<p><img src="https://velog.velcdn.com/images/dong_hi/post/3aba4190-6ee3-498d-9ef2-5c2a97dd5ed6/image.png" alt="">
아 스프링부트 간편하게 너무 잘만들어짐
커뮤니티도 어렵지는 않은데 얼티메이트 다시 까는 시간이 더 적네 이럴줄은 몰랐는데
맥유저가 이런 기분일까. 환경설정 안해도 되는 이 기분,,,,<img src="https://velog.velcdn.com/images/dong_hi/post/777489d1-6cc4-4a06-a597-e18073001b07/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[SBB]  JPA(Java Persistence API)-entity]]></title>
            <link>https://velog.io/@dong_hi/SBB-JPAJava-Persistence-API-entity</link>
            <guid>https://velog.io/@dong_hi/SBB-JPAJava-Persistence-API-entity</guid>
            <pubDate>Wed, 22 Nov 2023 07:39:55 GMT</pubDate>
            <description><![CDATA[<h2 id="목표">목표</h2>
<h2 id="spring-boot에서-jpa-사용하기">Spring Boot에서 JPA 사용하기</h2>
<blockquote>
<p>환경
Framework : Spring Boot 3.1.5
Build : Gradle 8.4
JDK : JDK21</p>
</blockquote>
<blockquote>
<p>할것 요약</p>
</blockquote>
<ol>
<li>build.gradle에 JPA dependency 추가하기</li>
<li>application.yml에 JPA 설정 추가하기</li>
<li>JPA Entity 생성</li>
<li>JPA Repository 생성</li>
<li>JPA CRUD API 만들어보기</li>
</ol>
<h3 id="1-buildgradle에-jpa-dependency-추가하기">1. build.gradle에 JPA dependency 추가하기</h3>
<pre><code>dependencies {
    // JPA
    implementation &#39;org.springframework.boot:spring-boot-starter-data-jpa&#39;
}</code></pre><h3 id="2-applicationyml에-jpa-설정-추가하기">2. application.yml에 JPA 설정 추가하기</h3>
<pre><code>spring:
  ## JPA Setting Info
  jpa:
    hibernate:
      ddl-auto: create  # option type: create, create-drop, update, validate, none
    properties:
      hibernate:
        diarect: org.hibernate.dialect.H2Dialect  # 쿼리의 기준이 되는 데이터베이스 엔진을 설정합니다.
        show_sql: true  # sql 쿼리를 보여줍니다.
        format_sql: true  # sql query formatting
        use_sql_comments: true  # sql 쿼리의 추가정보를 보여줍니다.

logging:
  level:
    org:
      hibernate:
        type:
          descriptor:
            sql: trace  # query의 ?에 어떤 값이 들어가는지 추적할 수 있는 설정입니다. TRACE Log에 값을 보여줍니다.
</code></pre><h3 id="3-jpa-entity-생성">3. JPA Entity 생성</h3>
<p> 엔티티는 데이터베이스 테이블과 매핑되는 자바클래스를 말한다.
 질문과 답변에 해당하는 엔티티가 있어야함. </p>
<h4 id="질문엔티티">질문엔티티</h4>
<p> <img src="https://velog.velcdn.com/images/dong_hi/post/3835a77b-d64c-4200-a2f8-e15252513254/image.png" alt=""></p>
<h4 id="답변엔티티">답변엔티티</h4>
<p> <img src="https://velog.velcdn.com/images/dong_hi/post/471eb5a9-d5a0-4abf-b7ae-47821e822352/image.png" alt=""></p>
<h3 id="questionjava-파일question-엔티티-생성">Question.java 파일(question 엔티티 생성)</h3>
<pre><code class="language-java">package com.ll.sbmission20231121;

import jakarta.persistence.*;
import lombok.Generated;
import lombok.Getter;
import lombok.Setter;

import java.util.List;

@Getter
@Setter
@Entity
//JPA 가 엔티티로 인식한다.


public class Question {
    @Id
    //데이터 구분을 위함.
    // JPA 에서 엔티티의 기본 키 값을 자동생성하는 방법을 지정하는 어노테이션.
    // 엔터티를 데베에 저장시에 해당 엔터티의 기본 키 값을 자동 생성후 이를 데베의 identity 컬럼에 의존해 할당
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    //질문의 고유번호
    @Column(length = 200)
    //컬럼의 길이
    private String subject;
    //질문의 제목

    @Column(columnDefinition = &quot;TEXT&quot;)

    //테이블의 열과 매핑 시 정의를 지정하는 어노테이션 . 열의 정의를 &quot;text&quot;로 지정
    //      글자수 제한 두지 않음 .
    private String content;
    //질문의 내용
    private  LockModeType createDate;
    //질문을 작성한 일시

    @OneToMany(mappedBy = &quot;question&quot;, cascade = CascadeType.REMOVE)
    private List&lt;Answer&gt; answerList;
}</code></pre>
<h3 id="answerjava-파일-answer-엔티티-생성">Answer.java 파일 (answer 엔티티 생성)</h3>
<pre><code class="language-java">package com.ll.sbmission20231121;

import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.ColumnDefault;
import java.time.LocalDateTime;

@Getter
@Setter
@Entity

public class Answer {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    //답변의 고유 번호
    @Column(columnDefinition  = &quot;TEXT&quot;)
    private String content;
    //답변 내용
    private LocalDateTime createDate;
    //답변 작성 일시
    @ManyToOne
    private Question question;
    //어떤 질문에 대한 답변 인지 알기 위한 질문 속성
}</code></pre>
<h2 id="이해-안된던-것">이해 안된던 것</h2>
<pre><code class="language-java">//sql 대신에 create 테이블 을 만듦
//insert in (1, &quot;제목&quot;)
//insert in (2, &quot;제목&quot;)
//insert in (3, &quot;제목&quot;)

@Id
 //ID 컬럼은 primary key 

 @GeneratedValue(strategy = GenerationType.IDENTITY)
//자동으로 인덱스 값증가해서 붙여주기 위해서 IDENTITY 컬럼 사용.

private Integer id;
</code></pre>
<h2 id="완성">완성.</h2>
<p><img src="https://velog.velcdn.com/images/dong_hi/post/be368bdb-2c9d-452f-b87d-25a677a0e4a3/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[SBB] JPA-h2데이터베이스 스프링부트에 띄우기]]></title>
            <link>https://velog.io/@dong_hi/SBB-JPA-h2%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8%EC%97%90-%EB%9D%84%EC%9A%B0%EA%B8%B0</link>
            <guid>https://velog.io/@dong_hi/SBB-JPA-h2%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8%EC%97%90-%EB%9D%84%EC%9A%B0%EA%B8%B0</guid>
            <pubDate>Tue, 21 Nov 2023 16:11:11 GMT</pubDate>
            <description><![CDATA[<p>ORM 은 쿼리 대신
JPA 는 ORM 인터페이스 모음
    - H2 데이터베이스 설치가 먼저</p>
<blockquote>
<p>환경
Framework : Spring Boot 3.1.5
Build : Gradle 8.4
JDK : JDK21</p>
</blockquote>
<blockquote>
<p>할 것 요약</p>
</blockquote>
<ol>
<li>build.gradle에 H2 dependency 추가</li>
<li>application.yml에 H2 설정 추가</li>
<li>H2 Console 접속해보기</li>
</ol>
<h3 id="1-buildgradle에-h2-dependency-추가">1. build.gradle에 H2 dependency 추가</h3>
<pre><code>dependencies {
    // H2
    runtimeOnly &#39;com.h2database:h2&#39;
}</code></pre><h3 id="2-applicationyml에-h2-설정-추가">2. application.yml에 H2 설정 추가</h3>
<pre><code>spring:
  # H2 Setting Info (H2 Console에 접속하기 위한 설정정보 입력)
  h2:
    console:
      enabled: true  # H2 Console을 사용할지 여부 (H2 Console은 H2 Database를 UI로 제공해주는 기능)
      path: /h2-console  # H2 Console의 Path
  # Database Setting Info (Database를 H2로 사용하기 위해 H2연결 정보 입력)
  datasource:
    driver-class-name: org.h2.Driver  # Database를 H2로 사용하겠다.
    url: jdbc:h2:~/test  # H2 접속 정보
    username: sa  # H2 접속 시 입력할 username 정보 (원하는 것으로 입력)
    password:  # H2 접속 시 입력할 password 정보 (원하는 것으로 입력)</code></pre><h3 id="3-h2-console-접속해보기">3. H2 Console 접속해보기</h3>
<p>Application.java 실행 (Spring Boot를 Run(실행) )
<a href="http://localhost:8020/">http://localhost:8020/</a> 위에서 설정한 H2 path를 뒤에 붙여 접속 </p>
<pre><code>http://localhost:8020/h2-console</code></pre><p><img src="https://velog.velcdn.com/images/dong_hi/post/569f05c6-5cdd-48c0-8acf-8f20ee26ad88/image.png" alt=""></p>
<p>연결누르면 아래 화면 완성.</p>
<p>   <img src="https://velog.velcdn.com/images/dong_hi/post/75834709-d173-4ccf-9b42-13672722d89b/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[SBB]인텔리제이 커뮤니티버전으로 스프링부트 생성하기]]></title>
            <link>https://velog.io/@dong_hi/%EC%9D%B8%ED%85%94%EB%A6%AC%EC%A0%9C%EC%9D%B4-%EC%BB%A4%EB%AE%A4%EB%8B%88%ED%8B%B0%EB%B2%84%EC%A0%84%EC%9C%BC%EB%A1%9C-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@dong_hi/%EC%9D%B8%ED%85%94%EB%A6%AC%EC%A0%9C%EC%9D%B4-%EC%BB%A4%EB%AE%A4%EB%8B%88%ED%8B%B0%EB%B2%84%EC%A0%84%EC%9C%BC%EB%A1%9C-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0</guid>
            <pubDate>Tue, 21 Nov 2023 13:08:57 GMT</pubDate>
            <description><![CDATA[<p> <img src="https://velog.velcdn.com/images/dong_hi/post/8e02e9b2-390d-4d71-a116-b66257cb76ef/image.png" alt="">
<img src="https://velog.velcdn.com/images/dong_hi/post/1525ed85-b9f6-40c3-a0d3-fc2d984ebc6b/image.png" alt="">
<img src="https://velog.velcdn.com/images/dong_hi/post/206f8a8d-6b36-4fdd-92f6-ffdba64a3c93/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Lombok 자동생성자 생성]]></title>
            <link>https://velog.io/@dong_hi/pjjdqtuy</link>
            <guid>https://velog.io/@dong_hi/pjjdqtuy</guid>
            <pubDate>Tue, 14 Nov 2023 04:53:10 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/dong_hi/post/49d11e96-c840-4374-bde7-3c28f966cf2c/image.png" alt="">
최소한 알아야하는 위에것</p>
<h2 id="자바-21로-변경">자바 21로 변경</h2>
<p><a href="https://www.theserverside.com/blog/Coffee-Talk-Java-News-Stories-and-Opinions/How-to-install-Java-21">https://www.theserverside.com/blog/Coffee-Talk-Java-News-Stories-and-Opinions/How-to-install-Java-21</a></p>
<h2 id="지역변수-전역변수-인스턴스변수-클래스변수">지역변수, 전역변수, 인스턴스변수, 클래스변수</h2>
<ol>
<li><p>지역변수와 전역변수의 구분은 선언한 위치에 따라다르다.</p>
</li>
<li><p>전역변수는 어디서나 호출 가능하고 지역변수는 Method(함수) 안에 서식한다.</p>
</li>
<li><p>전역변수 종류는 두가지로 인스턴스 변수(객체 변수), 클래스 변수(static 변수)가 있다</p>
</li>
<li><p>인스턴스 변수(객체 변수)는 같은 클래스에서만 자유롭게 사용가능하고, 클래스 변수(static)는 다른 클래스에서도 사용이 가능하다.</p>
</li>
<li><p>클래스 변수는 해쉬값이 같고, 객체 변수는 객체 선언마다 다른 해쉬값이 생성된다.</p>
</li>
</ol>
<h2 id="인텔리제이-커뮤니티버전으로-스프링부트-열기">인텔리제이 커뮤니티버전으로 스프링부트 열기</h2>
<h2 id="가비지-컬렉터">가비지 컬렉터</h2>
<h2 id="allargsconstructor">@AllArgsConstructor</h2>
<p> @ResponseBody //이 함수의 리턴값을 그대로 브라우저에 출력하라는 의미</p>
<h2 id="문제점">문제점</h2>
<p>스프링부트 21버전이 연결이 안되서 17버전으로 수업을 듣고있음. </p>
<ol>
<li>자바 17버전과 21 버전 같이 왔다갔다하며 프젝 생성 중.</li>
<li>인텔리제이 커뮤니티버전임. (크게 상관이없다하셔서 이대로 진행하고싶어요)
 a. 자바 21버전으로 스프링부트를 열었는데 21 버전 이 맞지 않음 =&gt; 해결을 자바 홈 경로 변경 해도 미해결
 b. 자바 17버전으로는 스프링부터 잘 열리고 locallohst:8020 사이트 연결 잘됨.<pre><code>     가) </code></pre>Error: Registry key &#39;Software\JavaSoft\Java Runtime Environment&#39;\CurrentVersion&#39; has value &#39;1.8&#39;, but &#39;1.7&#39; is required. 오류 뜸
=&gt; 스택오버플로우에서는 자바 버전 재설치 하라함.하기 시름</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[자바 assertj 사용 , Dependecy 설정]]></title>
            <link>https://velog.io/@dong_hi/%EC%9E%90%EB%B0%94-assertj-%EC%82%AC%EC%9A%A9-Dependecy-%EC%84%A4%EC%A0%95</link>
            <guid>https://velog.io/@dong_hi/%EC%9E%90%EB%B0%94-assertj-%EC%82%AC%EC%9A%A9-Dependecy-%EC%84%A4%EC%A0%95</guid>
            <pubDate>Wed, 08 Nov 2023 03:10:24 GMT</pubDate>
            <description><![CDATA[<p>build.gradle 파일 에서 dependencies 설정</p>
<pre><code>dependencies {
    // 롬복 추가
    implementation &#39;org.projectlombok:lombok:1.18.30&#39;
    annotationProcessor &#39;org.projectlombok:lombok:1.18.30&#39;

    // 테스트 환경에서도 롬복 사용
    testImplementation &#39;org.projectlombok:lombok:1.18.30&#39;
    testAnnotationProcessor &#39;org.projectlombok:lombok:1.18.30&#39;

    testImplementation &#39;org.assertj:assertj-core:3.24.2&#39;

    testImplementation platform(&#39;org.junit:junit-bom:5.9.1&#39;)
    testImplementation &#39;org.junit.jupiter:junit-jupiter&#39;
}</code></pre><p><img src="https://velog.velcdn.com/images/dong_hi/post/1b286a23-ca9b-4c5b-b94c-f862193f0f7d/image.png" alt="">
<img src="https://velog.velcdn.com/images/dong_hi/post/a35ef79f-6f00-4943-8070-0411a47a5775/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[진짜 하기 싫다]]></title>
            <link>https://velog.io/@dong_hi/%EC%A7%84%EC%A7%9C-%ED%95%98%EA%B8%B0-%EC%8B%AB%EB%8B%A4</link>
            <guid>https://velog.io/@dong_hi/%EC%A7%84%EC%A7%9C-%ED%95%98%EA%B8%B0-%EC%8B%AB%EB%8B%A4</guid>
            <pubDate>Wed, 01 Nov 2023 05:41:21 GMT</pubDate>
            <description><![CDATA[<h1 id="부서별-부서명-사원리스트-평균연봉-최고연봉-최소연봉-사원수">부서별, 부서명, 사원리스트, 평균연봉, 최고연봉, 최소연봉, 사원수</h1>
<h2 id="v1조인-안한-버전">V1(조인 안한 버전)</h2>
<h3 id="if문-버전">IF문 버전</h3>
<p>SELECT IF(deptId = 1, &#39;홍보&#39;, &#39;기획&#39;) AS <code>부서명</code>,
GROUP_CONCAT(<code>name</code> ORDER BY id DESC SEPARATOR &#39;, &#39;) AS <code>사원리스트</code>,
CONCAT(FORMAT(TRUNCATE(AVG(E.salary), 0), 0), &#39;만원&#39;) AS <code>평균연봉</code>,
CONCAT(MAX(salary), &#39;만원&#39;) AS <code>최고연봉</code>,
CONCAT(MIN(salary), &#39;만원&#39;) AS <code>최소연봉</code>,
CONCAT(COUNT(*), &#39;명&#39;) AS <code>사원수</code>
FROM emp
GROUP BY deptId;
<img src="https://velog.velcdn.com/images/dong_hi/post/6536ddcb-850e-4ae2-b11a-4938e8849f62/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[DB]]></title>
            <link>https://velog.io/@dong_hi/Temp-Title</link>
            <guid>https://velog.io/@dong_hi/Temp-Title</guid>
            <pubDate>Tue, 31 Oct 2023 02:00:59 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/dong_hi/post/65e77395-895a-43a7-8529-b05a37cdc7b8/image.png" alt="">
<a href="https://velog.io/@hyeddo/MySQL-%EC%99%84%EC%A0%84-%EC%82%AD%EC%A0%9C-%ED%9B%84-%EC%9E%AC%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0">MySQL 완전 삭제 후 재설치하기</a></p>
<h3 id="알게된-것">알게된 것</h3>
<pre><code class="language-sql"># 테이블 리스팅
SHOW TABLES;
# 특정 테이블의 구조
DESC `user`;</code></pre>
<pre><code class="language-sql">
#데이터 또 하나 추가(title = 제목, body = 내용)
INSERT INTO article SET title = &#39;제목&#39;, `body` = &#39;내용&#39;;

#테이블 구조 수정(id 칼럼 추가, first)
ALTER TABLE article ADD COLUMN id INT FIRST;

# 날짜 칼럼 추가(id 칼럼 뒤에) =&gt; regDate DATETIME
ALTER TABLE article ADD COLUMN regDate DATETIME AFTER id;</code></pre>
<pre><code class="language-sql">
# article 테이블 조회(*)
## id가 NULL인 데이터 생성이 가능하네?
SELECT * FROM article
# id 데이터는 꼭 필수 이기 때문에 NULL을 허용하지 않게 바꾼다.(alter table, not null)
## 기존의 NULL값 때문에 실패가 뜬다.
ALTER TABLE article MODIFY id INT NOT NULL;
# 기존의 NULL값이 0으로 바뀐다.
UPDATE article SET id =0;
# NULL을 허용하지 않게 바꾼다.(alter table, not null)

ALTER TABLE article MODIFY id INT NOT NULL;
# article 테이블 조회(*)</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[CS 회고]백엔드_로드맵]]></title>
            <link>https://velog.io/@dong_hi/CS-%ED%9A%8C%EA%B3%A0%EB%B0%B1%EC%97%94%EB%93%9C%EB%A1%9C%EB%93%9C%EB%A7%B5</link>
            <guid>https://velog.io/@dong_hi/CS-%ED%9A%8C%EA%B3%A0%EB%B0%B1%EC%97%94%EB%93%9C%EB%A1%9C%EB%93%9C%EB%A7%B5</guid>
            <pubDate>Mon, 30 Oct 2023 18:19:19 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/dong_hi/post/61eaeaba-8f2a-474f-bb10-25a9d82ba4bf/image.png" alt=""></p>
<p>아키텍처, Ci/cd , api </p>
<h2 id="mdn">MDN</h2>
<p>라우터에 연결된 각 컴퓨터들이 로 단순한 구조를 가지게됨
=&gt; 네트워크 확장.</p>
<h2 id="웹소켓">웹소켓</h2>
<p>데이터를 주고받을 때 HTTP로 주고받음.
실시간 통신 필요. 채팅 , 주식</p>
<h2 id="json">JSON</h2>
<p>자바스크립트 표현법
자주 사용됨</p>
<h2 id="인증과-인가">인증과 인가</h2>
<p>인증은 authentication이고신원확인 로그인
인가는 authorization이죠 할 수 있는 접근권한</p>
<h2 id="데이터베이스">데이터베이스</h2>
<p>NoSQL :sql 뿐만 아니라 더 쓴다. 분산 서버 용이
ex) 몽고DB 
redis: 분산캐시 키를 기반으로 관리. 
RDB : 데이터 저장 삭제
ORM은 Object Relation Mapping의 약자입니다
    클래스 오브젝트와 테이블의 관계를 클래스로 가져올수 있는 프로그램.
    실행시에 쿼리 생성 혹은 쿼리 실행. 
    ORM 사용시, 쿼리 작성없이 DB 조작 가능.데이터 관리
    BUT!! 통계 쿼리같은 복잡한 쿼리는 로우쿼리가 용이
    =&gt; N + 1 문제는 불필요하게 많은 쿼리발생
        클래스의 모델에 다른클래스의 관계를 설정하고 
        해당 클래스 조회를 할 때 데이터 개수만큼 쿼리가 발생</p>
<h2 id="rest">REST</h2>
<p>HTTP URI 방식으로 자원을 표현
post, get, put, delete</p>
<h2 id="graphql">GraphQL</h2>
<p>json형태로 쓰이는 쿼리 언어 스펙
클라이언트가 서버로부터 데이터를 효과적으로 가져옴</p>
<h2 id="배치처리">배치처리</h2>
]]></description>
        </item>
        <item>
            <title><![CDATA[[자바_일지]클래스와 ]]></title>
            <link>https://velog.io/@dong_hi/%EC%9E%90%EB%B0%94%EC%9D%BC%EC%A7%80%ED%81%B4%EB%9E%98%EC%8A%A4%EC%99%80-%EB%A9%94%EC%86%8C%EB%93%9C</link>
            <guid>https://velog.io/@dong_hi/%EC%9E%90%EB%B0%94%EC%9D%BC%EC%A7%80%ED%81%B4%EB%9E%98%EC%8A%A4%EC%99%80-%EB%A9%94%EC%86%8C%EB%93%9C</guid>
            <pubDate>Mon, 30 Oct 2023 08:30:06 GMT</pubDate>
            <description><![CDATA[<h3 id="클래스">클래스</h3>
<h4 id="자바는-객체를-만들기-위해-반드시-클래스를-먼저-만들어야-한다-클래스는-객체를-만들기-위한-일종의-틀이다">자바는 객체를 만들기 위해 반드시 클래스를 먼저 만들어야 한다. 클래스는 객체를 만들기 위한 일종의 틀이다.</h4>
<p>붕어빵이 객체라면, 붕어빵 틀은 클래스
자동차 클래스 생성</p>
<p><img src="https://velog.velcdn.com/images/dong_hi/post/6d6450d6-409a-4bae-90cd-745f9afdabaa/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[git 협업]]></title>
            <link>https://velog.io/@dong_hi/git-%ED%98%91%EC%97%85</link>
            <guid>https://velog.io/@dong_hi/git-%ED%98%91%EC%97%85</guid>
            <pubDate>Mon, 30 Oct 2023 05:43:18 GMT</pubDate>
            <description><![CDATA[<p>일반
main) git pull origin main
로컬의 main 브랜치 최신화
main) 작업
main) git add . &amp;&amp; git commit -m &quot;작업&quot;
main) git push origin main</p>
<p>GITHUB FLOW
GITHUB) 이슈 할당, 이슈 1(enhancement)
본인에게 할당된 일 찾기
혹은 미할당된 일을 본인 스스로 할당
혹인 본인 스스로 이슈 생성
main) git pull origin main
로컬의 main 브랜치 최신화
main) git checkout -b e/1
e/1 브랜치 생성 및 이동
e/1) 작업
e/1) git add &amp;&amp; git commit -m &quot;작업&quot;
e/1) 작업
e/1) git add &amp;&amp; git commit -m &quot;작업&quot;
main) git push origin e/1
로컬의 e/1 브랜치를 원격지로 푸시
GITHUB) PR(e/1 =&gt; main) 생성, 2번 PR 생성
GITHUB PR 2) 투표
GITHUB PR 2) 투표 통과
GITHUB PR 2) 반영
merge or rebase or squash
GITHUB PR 2) e/1 브랜치 삭제
GITHUB ISSUE 1) 닫기
e/1) git checkout main
작업이 끝났으니 다시 main 브랜치로 이동
main) git branch -D e/1
e/1 브랜치 삭제
main) git fetch --prune
내 컴퓨터에 남아 있는 원격지 e/1에 대한 흔적 제거</p>
]]></description>
        </item>
    </channel>
</rss>