<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>hey-chocopie.log</title>
        <link>https://velog.io/</link>
        <description>~_~</description>
        <lastBuildDate>Sun, 08 Jan 2023 05:06:50 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. hey-chocopie.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/hey-chocopie" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[자바 속성으로 배우기.]]></title>
            <link>https://velog.io/@hey-chocopie/%EC%9E%90%EB%B0%94-%EC%86%8D%EC%84%B1%EC%9C%BC%EB%A1%9C-%EB%B0%B0%EC%9A%B0%EA%B8%B0</link>
            <guid>https://velog.io/@hey-chocopie/%EC%9E%90%EB%B0%94-%EC%86%8D%EC%84%B1%EC%9C%BC%EB%A1%9C-%EB%B0%B0%EC%9A%B0%EA%B8%B0</guid>
            <pubDate>Sun, 08 Jan 2023 05:06:50 GMT</pubDate>
            <description><![CDATA[<h1 id="자바-설치시">자바 설치시</h1>
<p>jre : 자바 러닝 환경 (8까지 무료고 그 후로는 유료임.)
jdk : 자바 개발 킷트 (이건 최신버전 다운)</p>
<p>어떤환경이든 jre를 통해 os에 상관없이 가상머신을 이용해 실행이 가능하다.
<img src="https://velog.velcdn.com/images/hey-chocopie/post/c73924d3-d8c0-4570-a33d-2697bb1692c4/image.png" alt=""></p>
<h1 id="양수와-음수-비트일때">양수와 음수 비트일때</h1>
<p>2의 이진수는 00000000 00000000 00000000 00000010
-2의 이진수는 11111111 11111111 11111111 11111110</p>
<h1 id="실수-사용">실수 사용</h1>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/74ac25b2-4e81-4ca5-b235-737f8c11abc1/image.png" alt=""></p>
<h1 id="자료형-추론">자료형 추론</h1>
<ul>
<li>자바 10부터 지역변수로 사용하면 추론이 가능함. </li>
</ul>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/f22d28cd-7275-4fbf-a032-0ac3f5307278/image.png" alt=""></p>
<h1 id="상수">상수</h1>
<p>final을 사용하면 아래와 바뀌지 않는 변수를 만들수 있음.</p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/f993f303-6870-4f8b-a791-136a07f93082/image.png" alt=""></p>
<h1 id="switch-case">switch-case</h1>
<ul>
<li>조건 식이 아래와 같이 정수이거나 문자열일때 좀거 가독성 있게 작성가능. </li>
</ul>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/e87c49bc-242e-4979-ac6b-39407582291e/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/bc0c8994-7913-43e4-b3b9-4737e73de304/image.png" alt=""></p>
<h1 id="for-문-예제">for 문 예제</h1>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/960878ff-7b6b-4199-b531-4df15674fc97/image.png" alt=""></p>
<h1 id="class의-main">class의 main</h1>
<p>class 의 메인문은 아래와같이 빌드후 실행시 자동으로 호출됨</p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/f9e1c07a-70ff-4059-ac78-7a500bb4038e/image.png" alt=""></p>
<p>아래 와 같이 다른 클래스에서 호출할 수도 있음
<img src="https://velog.velcdn.com/images/hey-chocopie/post/138d2e91-a975-4e74-8164-377216831d6d/image.png" alt=""></p>
<h1 id="생성자">생성자</h1>
<p>클래스에 생성자가 없으면 자동으로 생성자가 생성됨. 
<img src="https://velog.velcdn.com/images/hey-chocopie/post/72602986-5daf-4cb2-a20a-36eef2e173dc/image.png" alt=""></p>
<h1 id="클래스-안에서-다른-클래스-가져다-쓸떄">클래스 안에서 다른 클래스 가져다 쓸떄</h1>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/db8d9db5-0f97-406e-8b23-5a7d59c62cc2/image.png" alt=""></p>
<h1 id="this">this.</h1>
<p>클래스 내부에서 this를 쓰면 주소값 똑같음. 
<img src="https://velog.velcdn.com/images/hey-chocopie/post/7501d3a1-7abf-48b1-b9cb-bd84be1df970/image.png" alt=""></p>
<h1 id="class에서-static을-통한공유">class에서 static을 통한공유</h1>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/ac951c88-630b-4d75-bf17-5a54126e2264/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey-chocopie/post/cd02051f-3047-46c3-bf59-2ec11de3f25f/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/873bdd85-e4c9-4ee7-9d2c-d5b3830da611/image.png" alt=""></p>
<h1 id="싱글톤-패턴">싱글톤 패턴</h1>
<p>싱글톤 패턴은 class를 <strong>하나의 인스턴스만 생성</strong>해서 사용할경우 싱글톤패턴을 사용한다.</p>
<blockquote>
<p>예를 들어 날짜 같은 경우에 일반적으로 하나의 인스턴스만 사용하면 된다.  그래서 하나의 인스턴스만 생성해서 사용하도록 클래스를 설계하는걸 싱글톤 패턴이라고 한다. </p>
</blockquote>
<h3 id="싱글톤-패턴-클래스">싱글톤 패턴 클래스</h3>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/237a9e6f-79a9-4853-9ce5-a48e4c4e199f/image.png" alt=""></p>
<h3 id="사용예">사용예</h3>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/fc0d93b5-d926-4c4b-b5d4-9e8ac5c35c07/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[모던 C++ 디자인 패턴 ]]></title>
            <link>https://velog.io/@hey-chocopie/%EB%AA%A8%EB%8D%98-C-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4</link>
            <guid>https://velog.io/@hey-chocopie/%EB%AA%A8%EB%8D%98-C-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4</guid>
            <pubDate>Thu, 15 Dec 2022 10:10:13 GMT</pubDate>
            <description><![CDATA[<h1 id="1-soide-원칙">1. SOIDE 원칙.</h1>
<p>단일 책임 원칙(Single responsibility principle) - 약어: SRP
개방 폐쇄 원칙(Open/closed principle) - 약어: OCP
리스코프 치환 원칙(Liskov substitution principle) - 약어: LSP
인터페이스 분리 원칙(Interface segregation principle) - 약어: ISP
의존관계 역전 원칙(Dependency inversion principle) - 약어: DIP</p>
<h3 id="1리스코프-치환-원칙">1.리스코프 치환 원칙</h3>
<p>지난번에 이해했던 개념이 잘못되었었다. </p>
<p>정정하기위해 다시 글을남김.</p>
<p>리스코프의 원칙은 부모에서 호출하는 모든 동작은 자식에서도 똑같이 구현할수 있어야한 다는개념임. </p>
<p>예를들면 정사각형과 직사각형이 있는데, 직사각형을 부모객체로 하고 자식을 정사각형으로 해서 구현한다면 리스코프 원칙을 지킨거 같지만, 자식은 직사각형을 구현 못함 그래서 원칙에 위반.</p>
<p>올바른 방법은 더 상위 개념을 부모로 설정해야함. 
사각형을 부모로하고 자식은 정사각형 직사각형으로 한다. 이런식으로 구현할것. </p>
<h3 id="2-의존관계-역전-원칙">2. 의존관계 역전 원칙</h3>
<p>객체는 저수준의 모듈보다 고수준의 모듈을 상속받아야한다. </p>
<p>고수준 : 인터페이스와 같은 객체의 형태나 추상적인 개념
저수준 : 구체화된 객체.</p>
<blockquote>
<p>인터페이스 : 클래스를 작성할 때 기본이 되는 틀</p>
</blockquote>
<h1 id="포인터-종류-정리">포인터 종류 정리</h1>
<h3 id="1-unique-point">1. unique point</h3>
<p>독점 포인트라고도 하며, 스마트포인터 라고도한다. 
스마트 포인트는 프로그램 종료시 자기가 가리키고 있는 주소의 delete를 호출하는 개념이다. </p>
<p>고로 똑같은 주소를 가진 스마트 포인터를 두개 생성하면 double delete가 일어나 에러가 발생한다. 그래서 이름이 unique point 이다. </p>
<h3 id="2-shared-point">2. shared point</h3>
<h3 id="3-약한-point">3. 약한 point</h3>
<h1 id="용어-정리">용어 정리</h1>
<p>가비지 컬렉터 (Garbage Collector - GC)</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[2022년 12월 15일]]></title>
            <link>https://velog.io/@hey-chocopie/2022%EB%85%84-12%EC%9B%94-15%EC%9D%BC</link>
            <guid>https://velog.io/@hey-chocopie/2022%EB%85%84-12%EC%9B%94-15%EC%9D%BC</guid>
            <pubDate>Thu, 15 Dec 2022 01:32:08 GMT</pubDate>
            <description><![CDATA[<p>발사믹 BML파일로
PPT로도 메일 보내기 </p>
<h1 id="해야할일">해야할일</h1>
<ol>
<li>업무 정리할 프로세스 설정</li>
<li>깃 게임해보기. </li>
<li>스터디 참여(모닝 독서, 노션, 예원님)</li>
</ol>
<h1 id="요구사항-분석-및-실습">요구사항 분석 및 실습</h1>
<p>고객과 PM사이에 양식을 통해 소통하는 방법은 없는가. </p>
<ul>
<li>중요한 이유 : 개발 도중 기능 추가/ 변경의 최소화.</li>
</ul>
<h3 id="화면-설계필요성">화면 설계필요성</h3>
<ul>
<li>사용 시나리오 구체화.</li>
<li>가시성을 통한 숨은 니즈 도출</li>
<li>개발이후 프로그램 변경 최소화 (개발단가 줄임)</li>
</ul>
<h3 id="대상-설정">대상 설정</h3>
<ul>
<li><strong>실무자</strong></li>
<li>관리자</li>
<li>고객협력사<blockquote>
<p>우리회사는 보통 <strong>실무자</strong>를 위해 화면을 설계하고 공유.
그 외에도 고려해야할건 중국이나 미국 같은 해외에서 사용한다면 언어 같은것도 당연히 고려해야함. </p>
</blockquote>
</li>
</ul>
<h3 id="화면설계-순서">화면설계 순서</h3>
<ol>
<li>손으로 그리기 -&gt; 2. 간략하게 목업(회사에서 발사믹 목업) -&gt; 3. 실제 데이터를 넣어 실제같이 구현.</li>
</ol>
<h3 id="사용-시나리오-정의">사용 시나리오 정의</h3>
<ul>
<li>메뉴 트리작성(버튼눌렀을때 시나리오 정리)</li>
<li>식별된 각 기능 실행 과정 정의</li>
</ul>
<h1 id="팁">팁</h1>
<ul>
<li>일에 대해 궁금증 가지고 호기심있게 하기. </li>
<li>저건 어떻게 하는거지 생각하면 너무 재밌다. </li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[2022년 12월 13일.]]></title>
            <link>https://velog.io/@hey-chocopie/2022%EB%85%84-12%EC%9B%94-13%EC%9D%BC</link>
            <guid>https://velog.io/@hey-chocopie/2022%EB%85%84-12%EC%9B%94-13%EC%9D%BC</guid>
            <pubDate>Tue, 13 Dec 2022 01:37:34 GMT</pubDate>
            <description><![CDATA[<h1 id="해야할일">해야할일.</h1>
<ol>
<li>워치사기. </li>
<li>잘하는 방법 정리하기. </li>
<li>슬랙 cli</li>
<li>학자금 대출해결하기. </li>
<li>슬랙 연동 재밌어보임. ㅋ_ㅋ</li>
<li>회사 점심 봇 만들기. </li>
<li>SaaS 서비스 통합.</li>
</ol>
<h1 id="깃허브-파이프라인">깃허브 파이프라인</h1>
<p>Git 및 GitHub를 사용하여 빌드 파이프라인에서 코드 워크플로 구현
<a href="https://learn.microsoft.com/ko-kr/training/modules/implement-code-workflow/">https://learn.microsoft.com/ko-kr/training/modules/implement-code-workflow/</a></p>
<h1 id="용어정리">용어정리</h1>
<p>가비지 컬렉션: 사용하지 않는 메모리 자동 정리. 
중소기업 대상장로 집빌려주는거 알아보기. 
CI/CD : 지속적인 통합(Continuous Integration)/ 지속적인 배포(Continuous Deployment)</p>
<p>연습 모드에서 쓸 수 있는 다양한 git명령어는 다음과 같습니다</p>
<p>commit
branch
checkout
cherry-pick
reset
revert
rebase
merge</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[할일 없으면 oop나 알아보자!]]></title>
            <link>https://velog.io/@hey-chocopie/%ED%95%A0%EC%9D%BC-%EC%97%86%EC%9C%BC%EB%A9%B4-oop%EB%82%98-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90</link>
            <guid>https://velog.io/@hey-chocopie/%ED%95%A0%EC%9D%BC-%EC%97%86%EC%9C%BC%EB%A9%B4-oop%EB%82%98-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90</guid>
            <pubDate>Mon, 17 Oct 2022 07:36:12 GMT</pubDate>
            <description><![CDATA[<p>OOP OOP 객체지향 객체지향 많이 썼지만 추상적인 부분이 많다. 
객체지향의 특징을 한번 정리해보자!</p>
<h1 id="1-oop란">1. OOP란?</h1>
<p>OOP (Object-Oriented Programming)이란 객체 지향적인 프로그래밍. 즉, C언어같은 절차 지향적인 프로그래밍이 아닌 객체의 관점에서 프로그래밍을 한다는 것이다.</p>
<p>OOP는 객체를 기준으로 코드를 나누어 구현한다. c++의 경우 그 구성 부분 단위가 클래스이다. 자세히 말하자면 클래스는 설계도고 직접일을하는 구현체는 인스턴스다.</p>
<blockquote>
<p>물이 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요시 되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법입니다. </p>
</blockquote>
<h1 id="oop-특징-5가지">OOP 특징 5가지.</h1>
<p>캡슐화, Encapsulation 💊 ...
은닉화, Information hiding 🥷 ...
상속, Inheritance 👪 ...
추상화, Abstraction ⛰️ ...
다형성, Polymorphism 🎭 ...</p>
<p>총 6가지인데 하나씩 가볍게 살펴보자. </p>
<h3 id="1-캡슐화-encapsulation">1. 캡슐화 (Encapsulation)</h3>
<p>하나의 객체에 대해 그 객체가 특정한 목적을 위한 필요한 변수나 메소드를 하나로 묶는 것을 의미한다.</p>
<p>클래스 안에 변수나 함수 묶어서 사용하는데 그게 캡슐화. </p>
<h3 id="2-은닉화">2. 은닉화</h3>
<p>캡슐화를 하는 중요한 목적은 바로 정보은닉이다. </p>
<p>public, private, protected같이 클래스 내부에서 변수나 함수 선언할 때, 데이터의 상태를 정해줄수 있다. </p>
<h3 id="3-추상화">3. 추상화</h3>
<p>추상화는 목적과 관련이 없는 부분을 제거하여 필요한 부분만을 표현하기 위한 개념이다.</p>
<p>추상화가 머냐면, 기억이 안난다. 함수 선언 할때 0을 넣는거 처럼 아무것도 함수에 아무것도 안넣고 비워둔다. 왜냐, 자식클래스에 상속하면 자식클래스마다 다른 내용들을 넣어 주려고 이렇게 상속할 때 자식에서 모두 다르게 쓰는 데이터라면 추상화만 해두고 쓰는게 좀더 효율적이다. </p>
<h3 id="4-다형성polymorphism">4. 다형성(Polymorphism)</h3>
<p>다형성은 상속을 통해 기능을 확장하거나 변경하는 것을 가능하게 해준다. 즉, 다형성은 형태가 같은데 다른 기능을 하는 것을 의미한다(같은 동작이지만 다른 결과물이 나올때 다형이라고 생각하면 된다.).
이를 통해 코드의 재사용, 코드 길이 감소가 되어 유지보수가 용이하도록 도와준다.</p>
<p>오버로딩, 오버라이딩도 이러한 다형성의 특성중 하나다. </p>
<h3 id="5-상속성-재사용inheritance">5. 상속성, 재사용(Inheritance)</h3>
<p>예를 들면 동물의 특성이 있는 객체가 있다면, 고양이 강아지 처럼 모든 동물에 해당하는 객체에 상속시켜주면 쉽게 구현할 수 있다. </p>
<h1 id="oop-원칙-5가지">OOP 원칙 5가지.</h1>
<p>단일 책임 원칙(Single responsibility principle) - 약어: SRP
개방 폐쇄 원칙(Open/closed principle) - 약어: OCP
리스코프 치환 원칙(Liskov substitution principle) - 약어: LSP
인터페이스 분리 원칙(Interface segregation principle) - 약어: ISP
의존관계 역전 원칙(Dependency inversion principle) - 약어: DIP</p>
<p>이런게 있는지 전혀 몰랐다. 그냥 쓴거지. 솔직히 이런거 몰라도 OOP 코드 설계하는데 전혀 문제없었는데, 면접용 또는 학업용으로 알면 좋겠다. 라고 말하면 엄청 혼나겠지;
위 원칙을 맞춰서 코드 작성하는걸 지향해야한다. 이거 안맞추고 코드 작성했다가 깐깐한 사람들 만나면 엄청 까인다. 유의하자. </p>
<p>사실 대규모 환경이 아니라면 굳이 안맞춰도 된다고 생각하지만, 대규모 환경에서 개발한다고 가정하면 원칙을 지키지 않아 사용할때마다 확인해야하고 번거로운 일이 발생할거다. </p>
<p>선임들이 열심히 지켜서 짰는데 안지키는 신입 보면 화날만하다. 후후훗.</p>
<p>혼나기 싫으면 잘 봐두자고!</p>
<h3 id="1-단일-책임-원칙">1. 단일 책임 원칙</h3>
<p>객체를 작성할 때, 하나의 객체가 하나의 특성만 담고 있어야한다. 
예를 들면 자동차라는 객체가 있다면, start나 stop같이 자동차의 특성에 관한건만 넣어주고, carWash같은 내용은 Wash의 객체에 넣어주는 식으로 설계하자. </p>
<h3 id="2-개방폐쇄-원칙">2. 개방폐쇄 원칙</h3>
<p>객체를 확장함에 있어 개방적, 반대로 수정함에 있어 폐쇄적이란다. 
왜~!!? 객체의 기능을 확장하는건 좋은 거니까 긍정적이고, 수정의 경우 만약 객체의 메소드를 하나 수정하면, 해당 메소드를 활용한 다른 부분에서 문제가 발생할 수 있다. 그래서 객체를 활용할 땐 최대한 확장하는 형태로 구현하자!</p>
<h3 id="3-리스코프-치환-원칙">3. 리스코프 치환 원칙</h3>
<p>부모를 인스턴스로 만들어 사용하는 부분은 자식으로 치환해 사용가능하다. </p>
<h3 id="4-인터페이스-분리-원칙">4. 인터페이스 분리 원칙</h3>
<p>객체는 자신이 호출하지 않을 메소드는 가지고 있지 않길 권장한다. 
예를 들어 자식에서 쓰지 않을 메소드를 굳이 자식에게 상속시켜주지말자. </p>
<p>만약 부모가 너무 크다면 쪼개서 관리하자!</p>
<h3 id="5-의존관계-역전-원칙">5. 의존관계 역전 원칙</h3>
<p> 의존관계 역전 원칙(dependency inversion principle)은 &quot;추상화에 의존해야지, 구체화에 의존하면 안된다&quot;</p>
<p> 부모에서 메소드로 값같은거 받도록 정의 해두지말고, 자식에서 정의 할수 있도록 추상화 하는걸 권장한다.  </p>
<h1 id="후기">후기</h1>
<p> 소규모 프로젝트라면 굳이 위 원칙을 지킬 필요는 없다고 생각한다. 솔직히 함수 쪼개는 것도 시간 걸리고 원칙에 맞춰 설계하는것도 꽤나 공을 들여야 하는 작업이다. </p>
<p>하지만 다른사람과 협업해야하는 환경에서는 꼭 지키도록 노력해야한다. 내가 안맞다고 원칙없이 짜버리면 다른사람이 힘들어진다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[http 1.1 프로토콜이란?]]></title>
            <link>https://velog.io/@hey-chocopie/http-1.1-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C%EC%9D%B4%EB%9E%80</link>
            <guid>https://velog.io/@hey-chocopie/http-1.1-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C%EC%9D%B4%EB%9E%80</guid>
            <pubDate>Wed, 12 Oct 2022 08:42:32 GMT</pubDate>
            <description><![CDATA[<p>지난시간에 네트워크 프로토콜을 다뤘다. </p>
<p>이번엔 http프로토콜을 이해해보자.</p>
<h1 id="http-프로토콜이란">HTTP 프로토콜이란?</h1>
<p> HTTP(HTTP는 HyperText Transfer Protocol)는 HTML 문서와 같은 리소스들(HTML문서, 이미지, 동영상, 오디오, 텍스트 문서 등)을 웹상에서 클라이언트와 서버간 통신할때 사용하는 프로토콜입니다. HTTP는 <code>하이퍼텍스트를 전송하는 통신 규약을 의미한다.</code></p>
<blockquote>
<p>하이퍼텍스트는 참조를 통해 독자가 한 문서에서 다른 문서로 즉시 접근할 수 있는 텍스트이다. </p>
</blockquote>
<h1 id="http-11">http 1.1</h1>
<p> http 1.1에 새롭게 생긴 기능들을 알아보자. </p>
<h3 id="1-persistent-connection">1. persistent connection</h3>
<p> <img src="https://velog.velcdn.com/images/hey-chocopie/post/28e41427-8717-4698-9352-a758c54c1e08/image.png" alt=""></p>
<p> http의 경우 udp, tcp모두 사용가능하지만, 기본적으로 tcp를 기본으로 한다. 1.1이전까지, tcp의 요청이 있는경우 클라이언트가 5번의 요청을 한다면 5번의 tcp를 통한 연결 과정이 필요했다. </p>
<p>이 부분에서 많은 지연시간이 발생했고 이를 해결하기위해 tcp 의 재사용을 통해 한번 연결된 tcp는 끊지않고 계속 통신할수 있는 persistent connection가 생겼다.</p>
<p>요청 헤더에 아래 헤더를 추가하면 tcp 연결이 유지된다. </p>
<pre><code>Connection: keep-alive</code></pre><h3 id="pipelining">pipelining</h3>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/e0d2713c-7d07-4a9e-9a08-cef665549240/image.png" alt=""></p>
<p>1.1이전 버전에서는 미리 보낸 요청이 있다면 해당 요청이 완료되어 응답을 받은뒤 새로운 요청을 보냈다. pipelining을 사용하면, 요청을 먼저 연속적으로 보내고 서버로 요청을 넣어 네트워크 가동율을 높이고 성능을 향상시킨다. </p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/b99d5c13-6d26-4129-a5ae-5f350521c899/image.png" alt=""></p>
<p>이론상 좋아보이지만 여전히 첫번쨰 요청이나, 이전 요청이 오래걸리는 요청이라면 늦게들어온 B의 요청이 끝났더라도 A의 요청이 끝날때까지 기다렸다가, A를 보내고 B를 보내기떄문에 지연시간이 발생한다. 
또한 연속된 요청이라 비슷한 중복되는 헤더가 많은데 여전히 헤더를 모두 보낸다는 문제점이 있다. </p>
<h1 id="11의-단점">1.1의 단점</h1>
<p>중복되는 헤더.
순차적인 응답과 요청에 의해,앞서 요청 무거운 작업이라면, 뒤의 요청도 안됨. </p>
<h1 id="http-20프로토콜">HTTP 2.0프로토콜</h1>
<h3 id="1-binary-framing">1. binary framing</h3>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/2dc8dea5-a387-4c0b-b154-88f4bcc0763c/image.png" alt=""></p>
<p>기존 텍스트 형테의 헤더와 데이터들을 바이너리 형태로 변환하여 요청한다. 이때 헤더와 데이터 부분을 프레임단위로 나눈다. </p>
<p>바이너리로 인코딩해서 속도도 빨라졌다. </p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/5e91e2ea-6346-4bda-9251-1af0a964869a/image.png" alt=""></p>
<p>또한 위의 사진처럼 헤더와 데이터들을 쪼개서 보낼수 있음으로 순서가 상관없어 졌고, browser가 하나의 connection 상에서 동시에 여러 개의 request를 보내는 multiplexing이 가능해졌다.</p>
<blockquote>
<p>HTTP/1.1은 단순히 request를 순서대로 보내곤 했다. 웹사이트로 예를들어보자면, HTML, CSS, JS파일이 있을 때, HTML요청하고, HTML받으면 CSS요청하고, CSS받으면 JS요청하고, 이렇게 작동했다는 것이다. 1.1은 synchoronous하게 작동한다는 의미다.</p>
</blockquote>
<h3 id="2-요청우선순위">2. 요청우선순위</h3>
<p>보낸 요청을 헤더에서 우선순위를 앞당겨 먼저 처리하는 기능도 생겼다. </p>
<h3 id="3-헤더압축">3. 헤더압축</h3>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/688585e3-ca9a-4ef2-8be4-e78cb06374f0/image.png" alt=""></p>
<p>중복되는 헤더는 보내지 않고 다른 헤더만 보내는 기능도 생겼다:)</p>
<blockquote>
<p>예를들면, 사진 요청같은 경우 큰 데이터라 여러번 나눠서 요청 할텐데, 그런거면 헤더를 줄여서 요청 넣을수 있으니 엄청 좋을거같다. </p>
</blockquote>
<h1 id="quic">quic!</h1>
<p>2.0도 tcp라는 한계점에서 속도를 당기는데 지연된다. </p>
<p>udp를 통해 속도도 빠르고 정확성 있는 구글이 프로토콜을 만들었다.</p>
<p>quic<del>~</del> 하지만 아직 쓸이이 없으니 나중에 봐야짐!</p>
<h1 id="참고자료">참고자료</h1>
<p><a href="https://dkrnfls.tistory.com/289">https://dkrnfls.tistory.com/289</a>
<a href="https://www.youtube.com/watch?v=xcrjamphIp4&amp;ab_channel=%EC%9A%B0%EC%95%84%ED%95%9CTech">https://www.youtube.com/watch?v=xcrjamphIp4&amp;ab_channel=%EC%9A%B0%EC%95%84%ED%95%9CTech</a>
<a href="https://dkrnfls.tistory.com/289">https://dkrnfls.tistory.com/289</a>
<a href="https://ybdeveloper.tistory.com/116">https://ybdeveloper.tistory.com/116</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로토콜이란? OSI 7계층]]></title>
            <link>https://velog.io/@hey-chocopie/socket.io-%EC%99%80-HTTP-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C</link>
            <guid>https://velog.io/@hey-chocopie/socket.io-%EC%99%80-HTTP-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C</guid>
            <pubDate>Sat, 08 Oct 2022 09:14:52 GMT</pubDate>
            <description><![CDATA[<h1 id="네트워크란">네트워크란?</h1>
<p>네트워크(network)란 컴퓨터들이 통신망을 통해 서로 그물처럼 연결된 체계를 말한다. 간략히 N/W라고도 쓴다. 
네트워크의 종류로는 근거리 통신망인 랜(LAN)과 광역 통신망인 왠(WAN) 등이 있다.</p>
<h3 id="1-lan-local-area-network">1. LAN (Local Area Network)</h3>
<p>학교다닐대 스타를 친구들끼리 LAN 환경에서 접속해본 경험이 있을겁니다.</p>
<p>LAN은 근거리 통신망 이죠.
사무실, 학원, PC 방 등등 여러 로컬 노드들이 스위치, 공유기, 허브 등 연결 장치에 물려 LAN 통신을 하고 있어요.
그렇기에 인터넷에 접속없이, 서로 연결되어 데이터를 주고받고 스타를 즐길 수 있어요.</p>
<h3 id="2-wan-wide-area-network">2. WAN (Wide Area Network)</h3>
<p> 흔히 인터넷에 접속한다 라는건 이 WAN통신을 한다고 해요.</p>
<blockquote>
<p>네트워크인 개인 통신망(Personal Area Network, PAN), 근거리 영역의 네트워크인 근거리 통신망(LAN, Local Area Network), 대도시 영역의 네트워크인 도시권 통신망(Metropolitan Area Network, MAN), 광대역 네트워크인 원거리 통신망(Wide Area Network, WAN) 등이 더 있다. </p>
</blockquote>
<blockquote>
<p>개인 통신망에 블루투스나 직비 같은 통신들이 포함된다. </p>
</blockquote>
<h1 id="프로토콜이란">프로토콜이란?</h1>
<p>인간의 언어에 영어, 한국어, 아랍어 등 이렇게 사용하겠다고 약속한 언어가 있습니다. 
컴퓨터도 마찬가지 입니다. 삼성과 애플 컴퓨터끼리 네트워크 통신이 이루어 지려면 같은 약속이 이루어져야합니다. 이렇게 서로 다른 장비가 통신하기 위해 만든 약속을 프로토콜이라고 합니다.</p>
<blockquote>
<p>프로토콜(Protocol)은 컴퓨터나 네트워크 장비가 서로 통신하기 위해 미리 정해 놓은 약속, 규약입니다</p>
</blockquote>
<p>네트워크 통신은, OSI는 7개의 계층으로 나누어져 있습니다. 각 계층마다, 특징이 있고 사용하는 프로토콜이 다릅니다. </p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/face9e8e-2d1d-4377-9e6c-dc251e846440/image.png" alt=""></p>
<h1 id="2-osi-7-layer-model">2. OSI 7 Layer Model</h1>
<h3 id="7계층-응용-계층application-layer">7계층. 응용 계층(Application Layer)</h3>
<p>파일 전송(FTP) 할 때, 이메일 전송 할 때, 텍스트 파일을 전송할때(HTTP) 등 응용 서비스를 보내기위해 사용하는 프로토콜이다. 사용자가 어떤 데이터를 보내느냐에 따라 적절한 프로토콜을 사용하면 된다. </p>
<p>4~7계층을 묶어서 말하기도 한다.</p>
<h3 id="6계층-presentation-layer">6계층. Presentation Layer</h3>
<p>서로다른 운영체제 혹은 서로다른 환경에서 온 데이터의 표현 차이를 해결하기 위해 송신 측과 수신 측 사이에서 표준화된 데이터 형식을 만드는 계층</p>
<p>예를 들어 시스템 A에서는 ASCII 코드를 사용하고 시스템 B에서는 EBCDIC를 사용한다면, 시스템 A의 표현 계층에서는 OSI 표준 표현 방식으로 변경하여 전송하고 시스템 B에서는 이를 자신의 시스템에 맞게 재구성한다. 이러한 표현 방식을 ASN.1(Abstract Syntax Notation 1)이라 한다.</p>
<h3 id="5계층-세션-계층-session-layer">5계층. 세션 계층 (Session Layer)</h3>
<p>응용프로그램간 대화를 하기위한 공간을 유지. 이를 처리하기 위해 프로세스들을 논리적으로 연결. 
네트워크간 연결을 위해 host간 최초연결. 통신중 연결을 끊기지 않도록 유지. </p>
<h3 id="4계층-전송-계층transport-layer">4계층. 전송 계층(Transport Layer)</h3>
<p>tcp는 데이터를 신뢰성 있게 보내고 udp는 데이터를 신뢰성 없지만 빠르게 보낸다. </p>
<p>양 끝단의 사용자들이 신뢰성 있는 데이터를 주고 받을 수 있도록 함으로써, 상위 계층으로 데이터 전달을 할 때, 유효성이나 효율성을 신경 쓰지 않도록 도와주는 역할을 한다.</p>
<blockquote>
<p>TCP의 경우 연결지향형 프로토콜, UDP의 경우 비연결지향형 프로토콜이다. TCP를 예로들면, 3 way handshake 방식을 사용하며 데이터를 전송하기전에, 테스트용 데이터를 전송하며, 해당 데이터가 전상적으로 전송되면 그 경로로만 데이터를 전송하게 한다. 그래서 해당 경로가 최단경로가 아니면 느리다는 단점이있다. UDP의 경우 애초에 데이터가 정상적으로 들어갔는지 확인을 안한다. 그냥 바로 데이터를 보내기 때문에 상대적으로 빠르다. </p>
</blockquote>
<h3 id="3계층-network-layer">3계층. Network Layer</h3>
<p>네트워크 계층에서 패킷이란걸 만드는데, 이 패킷안에 송신지 수신지의 ip가 들어있다. 이 ip를 가지고 경로를 찾아주는 역할을 수행하는 계층이다.</p>
<blockquote>
<p>라우터 :: 흔히 집에서 이용하는 공유기가 라우터의 일종이다.</p>
</blockquote>
<h3 id="2계층-데이터-링크-계층datalink-layer">2계층. 데이터 링크 계층(DataLink Layer)</h3>
<p>네트워크 계층(Layer 3)에서 받은 데이터를 프레임 단위로 구성하여 물리 계층으로 전송한다. </p>
<p>이때 데이터의 오류 제어 및 흐름 제어를 담당하게 된다.</p>
<blockquote>
<p>오류제어: 데이터를 전송할떄 깨지져서 보내질때가 있다. 이럴때 데이터를 재전송한다.</p>
</blockquote>
<blockquote>
<p>흐름 제어: 전송 데이터의 속도 조절을 의미한다. 송신 호스트는 수신 호스트가 감당할 수 있을 정도의 전송 속도를 유지하면서 데이터 프레임을 전송해준다.</p>
</blockquote>
<h3 id="1계층-물리계층physical-layer">1계층. 물리계층(Physical Layer)</h3>
<p>실질적으로 전송을 담당하는 계층이 되며, 네트워크 통신을 위한 물리적인 표준을 정의하는 계층이다.쉽게 말해 두 컴퓨터 간의 전기적, 기계적, 절차적인 연결의 표준을 정의해준다.(케이블 종류, 데이터 송/수신 속도, 신호의 전기 전압 등등)</p>
<blockquote>
<p>Ethernet은 뭔가요? 이더넷은 유선 네트워크 방식 중 하나이다.일반 유선 LAN 통신이 이더넷 방식이고, 이 이더넷을 이용하기 위해 Ethernet.RS-232C같은 프로토콜을 이용하는 것이다.</p>
</blockquote>
<p>참고 사이트 : 
<a href="https://www.crocus.co.kr/1102">https://www.crocus.co.kr/1102</a>
<a href="https://coding-factory.tistory.com/614">https://coding-factory.tistory.com/614</a>
<a href="https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&amp;blogId=kyg3766&amp;logNo=220694297437">https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&amp;blogId=kyg3766&amp;logNo=220694297437</a></p>
<h3 id="후기">후기.</h3>
<p>네트워크는 컴퓨터 끼리 통신하기 위해 필요한 기술이다. 
네트워크의 대표적 종류로는 LAN과 WAN이 있다. 
LAN의 경우 근거리 통신이고, WAN의 경우 우리가 흔히 말하는 인터넷이다.</p>
<p>A라는 컴퓨터에서 B라는 컴퓨터로 데이터를 전송할 때, 보내기위해 osi 7계층을 거쳐 데이터를 보낸다.</p>
<blockquote>
<p>osi 7계층은 네트워크 프로토콜이 통신하는 구조를 7개의 계층으로 분리하여 각 계층간 상호 작동하는 방식을 정해 놓은 것이다.</p>
</blockquote>
<p> 하지만 데이터를 보낼때 무수한 상황이 발생했다. 파일을 보낼지, 사진을 보낼지, 빠르게 보낼지, 정확하게 보낼지 등<br> 이러한 문제를 해결하기위해, 상황별 효율적인 프로토콜(약속)이 생겼다. 우리는 데이터를 보낼때 가장 효율적인 프로토콜을 찾아 데이터를 전송하면 된다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[웹서버 aws올려보자. ]]></title>
            <link>https://velog.io/@hey-chocopie/%EC%9B%B9%EC%84%9C%EB%B2%84-aws%EC%98%AC%EB%A0%A4%EB%B3%B4%EC%9E%90</link>
            <guid>https://velog.io/@hey-chocopie/%EC%9B%B9%EC%84%9C%EB%B2%84-aws%EC%98%AC%EB%A0%A4%EB%B3%B4%EC%9E%90</guid>
            <pubDate>Thu, 22 Sep 2022 05:30:04 GMT</pubDate>
            <description><![CDATA[<p>aws에 웹서버를 올릴일이 있어 한번 해볼려고하는데, 나처럼 귀찮아 할 사람들을 위해 쉽게 정리해보고자 한다:)</p>
<p>시작해보자!!</p>
<h1 id="목차">목차.</h1>
<ol>
<li>ec2에서 os선택</li>
</ol>
<h1 id="1-ec2에서-os선택">1. ec2에서 os선택</h1>
<ol>
<li>아래 사진과 같이 검색창을 통해 ec2를 선택하자.</li>
</ol>
<blockquote>
<p>ec2(Elastic Compute Cloud)란? aws에서 사용자가 가상 컴퓨터를 임대 받아 그 위에 자신만의 컴퓨터 애플리케이션들을 실행할 수 있게 한다.</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/0160b06f-0fbf-4ab4-91b5-1f6f17606037/image.png" alt=""></p>
<ol start="2">
<li>ec2를 클릭했다면 이제 왼쪽 카테고리중 인스턴스를 클릭.</li>
</ol>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/216bc6fb-69ab-4092-84ac-9a7f704f7bdc/image.png" alt=""></p>
<ol start="3">
<li>그후 오른쪽 위에 인스턴스 시작 버튼 클릭.(서울 적힌 부분은 빌리고자 하는 컴퓨터의 하드웨어의 위치.)</li>
</ol>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/dea6db7f-0f84-4911-81b5-1351a5577ff6/image.png" alt=""></p>
<ol start="4">
<li>이름 작성 및 os선택.</li>
</ol>
<blockquote>
<p>os 선택 팁. ubuntu, red hat, aws linux 모두 리눅스 기반 os다.</p>
</blockquote>
<blockquote>
<p>ubuntu의 경우 사용하기 쉽다. &quot;초보자라면 ubuntu os를 적극 추천.&quot; 개발 목적이 누구나 다 리눅스를 사용하기 위해 만들어진 os다. 그렇기에 데스크탑 사용자에게 특화되어있다. </p>
</blockquote>
<blockquote>
<p>red hat os는 센토스 os라고도 한다. 많은 회사에서 서버로 &quot;centos를 사용하기에 서버 개발자라면 추천한다.&quot; 특징은 서버시장에 용이하다. 한국의 많은 기업들이 서버os로 centos를 사용한다. 요즘은 우분투와 성능적인 측면에서 큰 차이가 없다.</p>
</blockquote>
<blockquote>
<p>aws linux의 경우 보안적인 측면에 장점이 있고 용량도 가볍다는 특성이 있지만, 사용자가 적다. 그말인 즉 사용하려면 상대적으로 정보가 적다. </p>
</blockquote>
<blockquote>
<p>혹시나 해서 적는데, 무료 ec2는 램 1기가 밖에 지원 안된다. window나 macos의 경우 사용자 친화형 os라 GUI에 많은 투자를 해서 os가 사용하는 자원이 많다. 프리티어로 사용할거라면 비<del>~</del>추천한다.</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/05d5f388-210d-4227-be58-fcb236503c1c/image.png" alt=""></p>
<ol start="5">
<li>네트워크 설정. (밑에 설명 읽기 싫으면 보안 그룹 ssh, http, https다 누르기.)</li>
</ol>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/3b0981dc-af80-4fcb-a879-dd21062a4afe/image.png" alt=""></p>
<ul>
<li><ol>
<li>네트워크
vpc(Virtual Private Cloud)란? aws계정 전용 가상 네트워크다. 나의 집에서 사용하는 네트워크 주소와, 인근 카페에서 사용하는 네트워크 주소가 다르다. 이 처럼 aws 에서도 계정마다 네트워크 주소를 다르게 사용하기 위해 사용하는 개념이다. 
<img src="https://velog.velcdn.com/images/hey-chocopie/post/65fe0a84-b103-488a-8c71-808547be3b74/image.png" alt=""></li>
</ol>
</li>
</ul>
<p><a href="https://medium.com/harrythegreat/aws-%EA%B0%80%EC%9E%A5%EC%89%BD%EA%B2%8C-vpc-%EA%B0%9C%EB%85%90%EC%9E%A1%EA%B8%B0-71eef95a7098">https://medium.com/harrythegreat/aws-%EA%B0%80%EC%9E%A5%EC%89%BD%EA%B2%8C-vpc-%EA%B0%9C%EB%85%90%EC%9E%A1%EA%B8%B0-71eef95a7098</a></p>
<ul>
<li><ol start="2">
<li>서브넷
위에서는 단순히 네트워크 영역을 나눈것이고 이다. 하지만, 네트워크를 나눌떄 ipv의 모든 숫자를 다 쓰지 않는다. 이를테면 IP주소의 클래스(A,B,C class)라는 개념으로 0.0.0.0 ~ 255.255.255.255 의 범위중 일부 범위는 네트워크 용으로 사용하고 남은 뒷자리는 서브넷을 나눌떄 사용한다. 
아래 사진을 보면 172.31은  B클래스에 해당한다. 그래서 172.31.0.0 ~ 172.31.255.255 까지 호스트를 자유롭게 지정 가능하다. </li>
</ol>
</li>
<li><ol start="3">
<li>방화벽 (보안그룹)
자 여기서 중요하다. 및에 보면 ssh, HTTPs, HTTP 프로토콜 트래픽 허용이 있다. 당신이 서버 개발자라면 당신이 제작한 웹 서버나 게임서버의 프로토콜형식을 허용해주어야 다른 사용자가 접속해서 사용할수 있게 된다. </li>
</ol>
</li>
</ul>
<p>난 HTTP 프로토콜을 사용햇으니까 HTTP와 ssh만 허용해서 사용하겠다.</p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/f6de35cc-4eab-4d75-9304-5bfeaa627722/image.png" alt=""></p>
<ol start="6">
<li>인스턴스 생성을 누르면, 키생성이 뜬다. 이름 정해서 생성 클릭.</li>
</ol>
<blockquote>
<p>키 페어란? 로컬에서 인스턴스에 연결할때 ssh를 허용했다. ssh를 연결할때 연결할 공개키 비공개키의 개념이다. 아이디랑 비번만 확인하는게 아니라 공개키를 가진 유저만 인스턴스 ssh에 접속할수 있게 보안을 올려준다. </p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/da176fd6-84fc-4820-9972-036a410b8665/image.png" alt=""></p>
<ol start="7">
<li><p>생성버튼을 누르면 아래처럼 키가 로컬에 저장된다. (잘 보관할것)
<img src="https://velog.velcdn.com/images/hey-chocopie/post/c2952c35-67e5-4f85-b2b5-2fed10acd398/image.png" alt=""></p>
</li>
<li><p>다시 인스턴스 시작을 누르면 이렇게 정상적으로 생성된다.</p>
</li>
</ol>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/873db774-e297-48ad-bfb9-93c3220d6f51/image.png" alt=""></p>
<h1 id="2-인스턴스-사용하기">2. 인스턴스 사용하기.</h1>
<ol>
<li>생성한 인스턴스를 클리하고 연결버튼 클릭.</li>
</ol>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/e00dff56-ff2a-42ec-923c-acb7bc696fd0/image.png" alt=""></p>
<ol start="2">
<li>ec2인스턴스에서 연결 또는 ssh클라이언트 연결</li>
</ol>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/401d7bef-ab64-4280-8f9a-8be72545260c/image.png" alt=""></p>
<ol start="3">
<li>나는 ssh로 연결했다. 아까 다운 받은 보안키가 있는곳에서 아래 명령어 입력.</li>
</ol>
<p><code>ssh -i &quot;SpringDayKey.pem&quot; ec2-user@ec2-3-38-169-164.ap-northeast-2.compute.amazonaws.com</code></p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/20c25379-f38e-45c4-bd5e-f7d012f9715b/image.png" alt=""></p>
<ol start="4">
<li>정상적으로 연결
<img src="https://velog.velcdn.com/images/hey-chocopie/post/0f679bce-99dc-4f31-b0f2-c188ca4b8dc9/image.png" alt=""></li>
</ol>
<ol start="5">
<li>os 업데이트
우분투의 경우 apt update를 통해 업데이트 한다. redhat의 경우 yum에 관한 명령을 쓰면 자동 업데이트가 된다.</li>
</ol>
<p><code>sudo apt update</code></p>
<p><a href="https://www.lesstif.com/lpt/ubuntu-apt-apt-get-redhat-centos-yum-89555903.html">redhat의 경우 여기 눌러서 똑같은 명령 입력하면 됨,</a></p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/708f385f-0d3d-4b95-bcda-c13847606b77/image.png" alt=""></p>
<h1 id="3-웹서버-올리기">3. 웹서버 올리기.</h1>
<p>자 이제 기본적인 설정은 끝났다. 이제 웹서버를 올려보자. how!??</p>
<ol>
<li>어떻게 하는거야??</li>
</ol>
<p>좀 고민이 많이 된다. 어떻게 올리는걸까?
우리가 생성한 인스턴스는 아래 사진중 &quot;퍼블릭 IPv4 주소&quot; 를 통해 http 접근이 가능하다. </p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/5ce9842c-51fe-43f7-9b24-3435150e9bdb/image.png" alt=""></p>
<ol start="2">
<li>퍼블릭 IPv4 주소 접근해보기.</li>
</ol>
<blockquote>
<p>하지만 안된다. 아무것도 안뜬다. 후후 </p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/6935fafe-f1cd-4a6c-a27e-78a8ab75ee26/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[ESS가 중요한 이유. ]]></title>
            <link>https://velog.io/@hey-chocopie/ESS%EA%B0%80-%EC%A4%91%EC%9A%94%ED%95%9C-%EC%9D%B4%EC%9C%A0</link>
            <guid>https://velog.io/@hey-chocopie/ESS%EA%B0%80-%EC%A4%91%EC%9A%94%ED%95%9C-%EC%9D%B4%EC%9C%A0</guid>
            <pubDate>Wed, 07 Sep 2022 09:20:01 GMT</pubDate>
            <description><![CDATA[<h1 id="1-ess-란">1. ESS 란?</h1>
<p>ESS는 원하는 시간에 전력을 생산하기 어려운 태양광·풍력 등의 신재생에너지를 미리 저장했다가 필요한 시간대에 사용할 수 있는 저장 장치를 말합니다. 일반 가정에서 사용되는 건전지나 소형 배터리도 전기에너지를 다른 에너지 형태로 변환하여 저장하기는 하지만, 일반적으로 우리가 부르는 ESS는 수백 kWh 이상의 전력을 저장하는 단독 시스템을 뜻합니다.</p>
<p>보통 필요 발전량은 냉난방 수요가 급증하는 최고 수요 시점을 기준으로 설정되어 있습니다. 그와 달리 ESS는 피크 수요 시점의 전력 부하를 조절해주기 때문에 발전 설비에 대한 과잉 투자를 막을 수 있습니다.</p>
<p> ESS는 불규칙한 전기의 수요·공급을 조절해주는 등 전력망에 대한 믿음을 심어줄 수 있습니다.</p>
<h1 id="ess의-구조">ESS의 구조.</h1>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/8ba144b1-d718-4afa-b7ba-51eb26aa13c8/image.png" alt=""></p>
<p>EMS : 수집한 베터리 정보를 바탕으로 베터리를 어떤식으로 제어할지 ESS의 전체 소프트웨어를 담당한다.
BMS : 베터리 전체 상태를 최신화 합니다. ESS에는 여러 베터리 셀로 구성되어있는데, 여러 베터리들의 상태를 업데이트 하고, 데이터화해 PCS나 EMS로 전달해주는 역활을 합니다.
PCS : 파워컨디셔닝 시스템으로, 베터리의 용량에 따라 방전할지, 충전할지 결정해주는 역활을 한다. 직류를 병령로 병렬을 직렬로 바꿔주는 역활을 합니다. </p>
<p><a href="https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&amp;blogId=haezoom&amp;logNo=220906530425">https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&amp;blogId=haezoom&amp;logNo=220906530425</a></p>
<p><a href="https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&amp;blogId=haezoom&amp;logNo=220906530425">https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&amp;blogId=haezoom&amp;logNo=220906530425</a></p>
<p><a href="https://m.blog.naver.com/smartguru0429/221490959211">https://m.blog.naver.com/smartguru0429/221490959211</a></p>
<p><a href="http://www.woorizen.com/ko/Energy/ESS-EMS.aspx">http://www.woorizen.com/ko/Energy/ESS-EMS.aspx</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[회고] 트렌센던스 프로젝트를 마치며.]]></title>
            <link>https://velog.io/@hey-chocopie/%ED%9A%8C%EA%B3%A0-%ED%8A%B8%EB%A0%8C%EC%84%BC%EB%8D%98%EC%8A%A4-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EB%A5%BC-%EB%A7%88%EC%B9%98%EB%A9%B0</link>
            <guid>https://velog.io/@hey-chocopie/%ED%9A%8C%EA%B3%A0-%ED%8A%B8%EB%A0%8C%EC%84%BC%EB%8D%98%EC%8A%A4-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EB%A5%BC-%EB%A7%88%EC%B9%98%EB%A9%B0</guid>
            <pubDate>Thu, 11 Aug 2022 09:21:43 GMT</pubDate>
            <description><![CDATA[<ol>
<li>시간이 많아보여도 최선을 다하자. </li>
<li>무슨일이든 할 수 있다. 자신감을 가지고 시작하자. </li>
<li>시간이 없을땐 아파하거나 좌절하지말자. 아프고 좌절하는건 프로젝트가 끝나고 하자.</li>
<li>같은 말이지만, 프로젝트할땐 어떤 감정적 상처도 받지말자. </li>
<li>프로젝트 도중에는 싸울수도 있다 당연한거다. 열정을 잃지 말자.</li>
<li>긍정적인 스텐스는 항상 유지하자. 번아웃에 빠지더라도 빨리 회복하자.</li>
<li>힘들땐 요령것 빨리 회복하자. (운동은 효과적인 스트레스 해소법이다.)</li>
<li>하루를 마칠때 최대한, 하루를 돌아보라. 그리고 다음날 더 나은 하루를 그리며 발전하자.</li>
<li>개발이 인생에 전부가 아니다, 틈이 날때면 옷도 사고 놀러도 가라. 부지런하고 또 부지런하자.</li>
<li>같은 말이지만, 개발하다가 벽을 느낄때면 산책을 하던, 그림을 그리던 다른 일을 하라. 그러면 자연스레 일이 해결된다. </li>
<li>조급하지마라, 안정적인 호흡을(복식호흡) 유지하고 정보를 받아들이고 활용하라.</li>
<li>모든건 시간이 지나면 해결된다. 프로젝트중 스트레스를 받기 보단, 문제를 해결해나가는 과정에 즐거움을 느끼고 나아가는 과정이다.</li>
<li>말을 하라. 프로젝트팀과 협업하기위해 의사소통은 매우 중요하다. 하지만 잘 말하려다보면 때론 긴장되서 100프로 전달하지 못한다. 여유를 가지고 내가 가진생각을 전달하라.</li>
<li>아무리 어려운것도 쉽게 생각하라. 어려운 거일수록 쉽게 생각하고 쉽게 정리해야한다. 어려운거라고 어렵게 생각하면 답도 안나온다. 정말 쉽게 생각하고, 쉽게 정리를 해서, 어려운 부분을 해결하자. </li>
</ol>
<p>개인적인 생각..</p>
<p>눈떠서 쓸수 있는 시간을 최대한 활용하자. 주변 지인들 개발하는 사람들과 잘 소통하면서 같이 성장해나가고, 같이 역량을 발휘하자. </p>
<p>내가 하고 싶은걸하면서 살려면 꾸준히 하루하루를 아끼며 열심히 살아야한다.! </p>
<p>현실에 안주하거나 머물지 말고 tiny riot를 일으키자. 하루하루 조그마한 폭동을 일으키며 더 나은 삶을 만들어나가자!~</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[socketIO!!]]></title>
            <link>https://velog.io/@hey-chocopie/socketIO</link>
            <guid>https://velog.io/@hey-chocopie/socketIO</guid>
            <pubDate>Tue, 19 Jul 2022 10:25:57 GMT</pubDate>
            <description><![CDATA[<h1 id="simple-request">Simple Request</h1>
<p>단순 요청은 서버에 API를 요청하고, 서버는 Access-Control-Allow-Origin 헤더를 포함한 응답을 브라우저에 보낸다. 브라우저는 Access-Control-Allow-Origin 헤더를 확인해서 CORS 동작을 수행할지 판단한다.</p>
<h1 id="cors-simple-request">cors Simple Request</h1>
<ul>
<li>요청의 메소드는 GET, HEAD, POST 중 하나여야 한다.</li>
<li>Accept, Accept-Language, Content-Language, Content-Type, DPR, Downlink, Save-Data, Viewport-Width, Width를 제외한 헤더를 사용하면 안된다.</li>
<li>만약 Content-Type를 사용하는 경우에는 application/x-www-form-urlencoded, multipart/form-data, text/plain만 허용된다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Socket.IO를 이해해보자!]]></title>
            <link>https://velog.io/@hey-chocopie/Socket.IO%EB%A5%BC-%EC%9D%B4%ED%95%B4%ED%95%B4%EB%B3%B4%EC%9E%90</link>
            <guid>https://velog.io/@hey-chocopie/Socket.IO%EB%A5%BC-%EC%9D%B4%ED%95%B4%ED%95%B4%EB%B3%B4%EC%9E%90</guid>
            <pubDate>Mon, 18 Jul 2022 04:27:38 GMT</pubDate>
            <description><![CDATA[<p>인터넷이 나오고 HTTP를 통해서 서버로부터 데이터를 가져오기 위해서는 오로지 URL을 통한 요청이 유일한 방법이었습니다. </p>
<p>하지만  HTTP의 문제는 단방향 통신이라, 자주 요청이 발생할 경우 불필요한 헤더가 많이 생겨 느려지는 문제점이 있다. 
그래서 이를 해결하기위해 websocket이라는 걸 만들었습니다. websocket은 HTTP처럼 통신을 할때 약속이지만, websocket의 경우 불필요한 헤더가 발생하지 않고 양방향 통신이가능하다. </p>
<h3 id="websocket의-작동원리">WebSocket의 작동원리.</h3>
<ol>
<li>Opening Handshake
웹소켓은 HTTP로 아래와 같이 요청을 보냅니다. 
Upgrade로 지금 통신을 websocket으로 변경하겠다는걸 나타내고 Connection 통해 Upgrade를 명령합니다. </li>
</ol>
<pre><code>GET /chat HTTP/1.1
Host: localhost:8080
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
Origin: http://localhost:9000
출처: https://kellis.tistory.com/65 [Flying Whale:티스토리]</code></pre><ol start="2">
<li><p>Data Transfer
핸드쉐이크를 통해 웹소켓 연결이 수립되면, 데이터 전송 파트가 시작됩니다. 여기에서는 클라이언트와 서버가 &#39;메시지&#39;라는 개념으로 데이터를 주고받는데, 여기서 메시지는 한 개 이상의 &#39;프레임&#39;으로 구성되어 있습니다. (프레임은 텍스트(UTF-8) 데이터, 바이너리 데이터, 컨트롤 프레임(프로토콜 레벨의 신호) 등이 있습니다
핸드 셰이크가 끝난 시점부터 서버와 클라이언트는 서로가 살아 있는지 확인하기 위해 heartbeat 패킷을 보내며, 주기적으로 ping을 보내 체크합니다. 이는 서버와 클라이언트 양측에서 설정 가능합니다.</p>
</li>
<li><p>Close Handshake
클라이언트와 서버 모두 커넥션을 종료하기 위한 컨트롤 프레임을 전송할 수 있습니다. 이 컨트롤 프레임은 Closing Handshake를 시작하라는 특정한 컨트롤 시퀀스를 포함한 데이터를 가지고 있습니다. 
클라이언트가 이에 대한 응답으로 Close 프레임을 전송합니다. 그러면 웹소켓 연결이 종료됩니다. 연결 종료 이후에 수신되는 모든 추가적인 데이터는 버려집니다. </p>
</li>
</ol>
<h3 id="websocket-문제점">websocket 문제점.</h3>
<p>하지만 문제점도 있습니다. </p>
<ol>
<li>프로그램 구현에 보다 많은 복잡성을 초래합니다.</li>
</ol>
<ul>
<li>웹 소켓은 HTTP와 달리 Stateful protocol이기 때문에 서버와 클라이언트 간의 연결을 항상 유지해야 하며 만약 비정상적으로 연결이 끊어졌을때 적절하게 대응해야 한다. 이는 기존의 HTTP 사용시와 비교했을때 코딩의 복잡성을 가중시키는 요인이 될 수 있습니다.</li>
</ul>
<ol start="2">
<li>서버와 클라이언트 간의 Socket 연결을 유지하는 것 자체가 비용이 듭니다.</li>
</ol>
<ul>
<li>특히나 트래픽 양이 많은 서버같은 경우에는 CPU에 큰 부담이 될 수 있습니다.</li>
</ul>
<ol start="3">
<li>오래된 버전의 웹 브라우저에서는 지원하지 않습니다.</li>
<li>WebSocket은 분명히 양방향 통신을 설정하는 가장 좋은 방법이지만 경험에 따르면 회사 프록시, 개인 방화벽, 바이러스 백신 소프트웨어로 인해 WebSocket 연결을 설정하는 것이 항상 가능한 것은 아닙니다.</li>
</ol>
<h1 id="websocketws-vs-socketio-장단점">WebSocket(ws) vs Socket.IO (장단점)</h1>
<p>자 이제 websocket을 사용할수있는 방법 두가지를 살펴 봅시다. 
하나는 그냥 websocket을 사용하는 방법과 socket.io라이브러리를 사용해 다른사람이 만들어둔 websocket 연결을 이용하는 겁니다. </p>
<p>웹소켓은 양방향 소통을 위한 프로토콜입니다
socket.io는 양방햔 통신을 하기위해 웹소켓 기술을 활용하는 라이브러리입니다. </p>
<p>그렇기 때문에 socket.io가 같은 기능을 구현하더라도 약간 느리지만, 많은 편의성을 제공합니다. </p>
<h3 id="websocket">WebSocket</h3>
<ul>
<li>HTML5 웹 표준 기술</li>
<li>매우 빠르게 작동하며 통신할 때 아주 적은 데이터를 이용함</li>
<li>이벤트를 단순히 듣고, 보내는 것만 가능함</li>
</ul>
<h3 id="socketio">Socket.io</h3>
<ul>
<li>WebSocket 프로토콜 위에 구축되었으며 HTTP 롱 폴링 또는 자동 재연결에 대한 폴백과 같은 추가 보장을 제공합니다.</li>
<li>표준 기술이 아니며, 라이브러리임</li>
<li>소켓 연결 실패 시 fallback을 통해 다른 방식으로 알아서 해당 클라이언트와 연결을 시도함</li>
<li>방 개념을 이용해 일부 클라이언트에게만 데이터를 전송하는 브로드캐스팅이 가능함</li>
</ul>
<blockquote>
<p>각각의 이점 : 서버에서 연결된 소켓(사용자)들을 세밀하게 관리해야하는 서비스인 경우에는 Broadcasting 기능이 있는 &quot;socket.io&quot;을 쓰는게 유지보수 측면에서 훨씬 이점이 많습니다.
반면 가상화폐 거래소같이 데이터 전송이 많은 경우에는 빠르고 비용이 적은 표준 &quot;WebSocket&quot;을 이용하는게 바람직하겠죠.</p>
</blockquote>
<h1 id="socketio-사용법">Socket.io 사용법.</h1>
<p>websocket이 빠르다고 했지만, 위의 설명과 같이 가상화폐 거래소의 데이터전송같은 특별한 케이스가 아니라면 Socket을 사용해도 충분하다고 생각합니다. </p>
<p>우리는 좀더 편리하게 사용하기 위해 Socket.io를 알아봅시다. 
아래 예제는 node.js또는 nest.js 환경에서 유용하다. 같이 한번 살펴보자!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[깃강의 정리.]]></title>
            <link>https://velog.io/@hey-chocopie/%EA%B9%83%EA%B0%95%EC%9D%98-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@hey-chocopie/%EA%B9%83%EA%B0%95%EC%9D%98-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Sun, 10 Jul 2022 02:15:40 GMT</pubDate>
            <description><![CDATA[<h1 id="구름-ide">구름 IDE</h1>
<h1 id="commit">commit</h1>
<p>바뀐걸 기록하는것. 
그리고 로그기록과 함께 저장된다. </p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/ff1f9ca0-842b-4bd9-b639-a2a13fa35f35/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/fdc1ebe0-b845-4b73-af02-bb49534db6d6/image.png" alt=""></p>
<h1 id="누가-많이-개발하는지-확인하는-명령어">누가 많이 개발하는지 확인하는 명령어</h1>
<pre><code> git shortlog -sn</code></pre><h1 id="폴더별-누가-기여를-많이-했는지">폴더별 누가 기여를 많이 했는지.</h1>
<p>아래 사진에서 mnist 파일에 누가 많이 기여했는지 확인하고 싶다.</p>
<pre><code>git shortlog -sn -- minst/</code></pre><p><img src="https://velog.velcdn.com/images/hey-chocopie/post/f413055f-28b9-4696-9cea-acff75f0be28/image.png" alt=""></p>
<h1 id="특정기간-이후로-기여많이-한것-확인">특정기간 이후로 기여많이 한것 확인.</h1>
<pre><code>git shortlog -sn --after=2018-01-01 -- mnist/</code></pre><h1 id="특정기간-전후-로그">특정기간 전후 로그</h1>
<pre><code> git log --online --after=2018-01-01 --befor=2019-01-01</code></pre><h1 id="특정기간-전후-로그-개수">특정기간 전후 로그 개수</h1>
<pre><code> git log --online --after=2018-01-01 --befor=2019-01-01 | wc -l</code></pre><h1 id="특정파일-특정기간-로그">특정파일 특정기간 로그</h1>
<h1 id="특정기간-전후-로그-개수-1">특정기간 전후 로그 개수</h1>
<pre><code> git log --online --after=2018-01-01 --befor=2019-01-01 --파일이름. </code></pre><h1 id="log중에서-merge빼고-보는법">log중에서 merge빼고 보는법</h1>
<pre><code>git log --oneline --no-merges</code></pre><h1 id="커밋메세지-규칙">커밋메세지 규칙</h1>
<p>Add : 없는기능 옵션 추가할 때 (파일추가할때 쓰는경우가 많은데, 그것보다 이 파일을 왜 추가했는지 설명달아주는게 더 좋음!)
Fix: 잘못된 것을 고친것
Improve: 원래는 잘되던건데 개선한 것 (예: 10초 → 5초)
Implement: 설계를 구현 (미리 Discussion 된 부분을 구현)
Support: 윈도우 → 리눅스, ARM → x86 에서도 가능하게 고칠시</p>
<h1 id="깃-설정">깃 설정.</h1>
<pre><code>git config --global user.name &quot;Hoyong Lee&quot;
git config --global user.email &quot;ghdyd6372@naver.com&quot;
git config --global core.editer nano
sudo apt install -y nano </code></pre><h1 id="branch에만-작업하기">branch에만 작업하기.</h1>
<p>master에 test파일 없고 test 브랜치에는 test파일이 있음. 
add 랑 commit 해야 test브랜치에 적용이됨. </p>
<pre><code>git checkout -b test
echo &quot;hihihi&quot; &gt; test
git add .
git commit -m &quot;test파일 만들었습니다.&quot;
git checkout master</code></pre><h1 id="rebase">rebase</h1>
<p>공동작업을 하는중. 다른개발자가 먼저 머지함. 
<img src="https://velog.velcdn.com/images/hey-chocopie/post/b007f4f9-f084-47c3-b73a-82024c69a5c3/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/ad365d72-1ff6-4e45-8ad4-97db6d9dddad/image.png" alt=""></p>
<p>내거는 옛날 베이스임으로 리베이스를 하고 난뒤에 푸쉬 가능함. 
<img src="https://velog.velcdn.com/images/hey-chocopie/post/6138b80b-b649-4ee1-a325-f525ae2e2843/image.png" alt=""></p>
<h1 id="stash--파일-수정전후의-차이를-확인하고-싶을때">stash : 파일 수정전후의 차이를 확인하고 싶을때</h1>
<h1 id="checkout">checkout</h1>
<p>히스토리를 가져오는것! 
히스토리는 .git안에 있다. .git에는 여러 브랜치의 내용이 담겨져있고, checkout으로 파일을 가져올수 있다!</p>
<p>그래서 add, commit을 하면 해당 브랜치에 히스토리에 저장해둬 진다. </p>
<h1 id="commit-하나-취소">commit 하나 취소</h1>
<pre><code>git reset --hard HEAD~1</code></pre><p>]
]</p>
<h1 id="commit--sm-옵션">commit -sm 옵션</h1>
<p>-ㄴ</p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/fb906113-3e34-4d08-8a67-52d8ef51c16a/image.png" alt="">
]</p>
<h1 id="커밋하기전에-먼가-배먹었음">커밋하기전에 먼가 배먹었음.</h1>
<p>이전 커밋에서 import requests를 커밋했는데 as req를 까먹고 커밋했다.
그럼 새로운 커밋을 또 올려야하나??( 좋지 않음 )
그래서 import requests를 올렸던 커밋을 수정해주자. 
--amend 옵션을 사용하면 최신 커밋을 수정할수 있다. </p>
<p>amend사용법은 우선 원하는 부분을 수정한다음에 그냥 add 하고 commit 만 아래와 같이 해주면 최신 커밋과 합쳐진다. </p>
<pre><code> git commit --amend</code></pre><p><img src="https://velog.velcdn.com/images/hey-chocopie/post/0cb9f587-2f5a-43e9-b277-2d08f6c4b8c9/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey-chocopie/post/fd831156-e79a-4025-9fd9-9e372cc3f758/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey-chocopie/post/d75b32e4-2c4e-4ecd-8afa-5fa6e5ec96ab/image.png" alt=""></p>
<h1 id="rebase-blame-활용해보기--응용">rebase, blame 활용해보기!! / 응용</h1>
<p>아 까 말대로 rebase를 할려고한다. 
re base 새롭게 base를 정의 
그러기 위해서 원격저장소에서 히스토리로 새로운 base를 가지고온다.</p>
<pre><code>git fetch upstream master </code></pre><p><img src="https://velog.velcdn.com/images/hey-chocopie/post/fcf4cdfe-01d9-4886-a712-3c955a6728af/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/3fab5a86-171a-4372-9063-f656e607dc45/image.png" alt=""></p>
<h3 id="rebase순서-1">rebase순서 1</h3>
<p>내가 작업한거 일단 되감음 .
<img src="https://velog.velcdn.com/images/hey-chocopie/post/c861c7fc-b032-48f0-bbcf-5e09aa2bccab/image.png" alt=""></p>
<h3 id="rebase순서-2">rebase순서 2.</h3>
<p>기존 base에 fetchfh  받아온 최신 base를 올림. 
<img src="https://velog.velcdn.com/images/hey-chocopie/post/3673a021-0374-4d1c-a344-bc36e3ef340d/image.png" alt=""></p>
<h3 id="rebase-순서-3">rebase 순서 3.</h3>
<p>다시 올려! 끝!</p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/349c68f8-74a3-4f72-9a50-a602b366efcb/image.png" alt=""></p>
<h1 id="옛날-커밋에-커밋-올리기">옛날 커밋에 커밋 올리기.</h1>
<p>아래 처럼 커밋이 있는데 f9b87bb 위에 새로운 커밋을 올려보자!</p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/55f8ae19-188c-4627-a37c-710d90937bee/image.png" alt=""></p>
<pre><code>git rebase -i --root</code></pre><p>이러고 아래 처럼 나오면 고치고 싶은 곳에 edit을 하자. 
<img src="https://velog.velcdn.com/images/hey-chocopie/post/dab493b5-6362-4a56-8f05-9c77ab631159/image.png" alt=""></p>
<p>자 그럼 이렇게 이전 커밋으로 돌아가버림.
<img src="https://velog.velcdn.com/images/hey-chocopie/post/4abfa1ee-ca77-4fd2-a8af-d86e928c32a8/image.png" alt=""></p>
<p>그리고 다시 돌리고 싶으면 continue를 쓰면 예전으로 돌아감. </p>
<pre><code> git rebase --continue</code></pre><p><img src="https://velog.velcdn.com/images/hey-chocopie/post/e3b32538-d406-434b-82c2-92e4e347edf1/image.png" alt=""></p>
<h1 id="과거로-돌리고-새로운-커밋을-올리고-다시-돌릴수도-있다">과거로 돌리고 새로운 커밋을 올리고 다시 돌릴수도 있다.!</h1>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/c9074c24-0f74-4890-807c-695f53575912/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/ce5812d5-a9bd-4eff-9903-db336ff65ffb/image.png" alt=""></p>
<h1 id="자-이번엔-hoylee3을-hoylee2-과-합쳐보자">자 이번엔 hoylee3을 hoylee2 과 합쳐보자.</h1>
<pre><code>$ git rebase -i --root
//hoylee3 을 edit으로 바꿔주자. 


$ git reset --soft HEAD~1
$ git status

$ git commit --amend
$ git rebase --continue</code></pre><p><img src="https://velog.velcdn.com/images/hey-chocopie/post/6d95cbcc-1566-4ca5-8288-1f9f08fa6ff2/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/33839f5d-66b3-4089-ae08-937c23ec5ef3/image.png" alt=""><img src="https://velog.velcdn.com/images/hey-chocopie/post/0e28b884-242f-4732-9e9a-3e1e19a71377/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey-chocopie/post/8557bec2-eeff-4017-b073-6d67293841ba/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/4494d8b2-f79d-4e19-bc18-864e28eaee1c/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/334fb205-b730-4574-accb-9bfb6455c55a/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey-chocopie/post/1e1e0908-322a-4e01-bb75-8561241e48f0/image.png" alt="">
]]]</p>
<h1 id="중간에-커밋-없애버리기">중간에 커밋 없애버리기!</h1>
<p>864cf0f 를 없애보자. </p>
<pre><code>git rebase -i --root </code></pre><p>864cf0f 로 이동하자. 그리고 </p>
<pre><code>git reset hard HEAD~1</code></pre><p>커밋을 날려버릴수 있다!!!</p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/1e1e0908-322a-4e01-bb75-8561241e48f0/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/5e65a7be-9af9-4fbc-ac8c-9bef52d27e0e/image.png" alt=""></p>
<h1 id="blame이란">blame이란?</h1>
<pre><code>git blame src/node.cc</code></pre><p>이렇게 파일에 blame을 쓰면 누가 커밋을 했는지, 커밋로그는 무엇인지 확인할수 있고, 해당 커밋을 확인해서 해당 코드를 왜 넣었는지 파악할때 사용한다. </p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/d003cf0f-d802-4e26-bf5c-6157f0570361/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey-chocopie/post/d7718efe-b25d-45dc-a349-9b2ca643f8df/image.png" alt=""></p>
<pre><code>git fetch upstream master
git rebase upstream/master
git status
git diff
nano README.md
git add .
git rebase --continue
git push origin master -f</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[마이크로소프트 에저!!!- 아주 꿀잼이야..]]></title>
            <link>https://velog.io/@hey-chocopie/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%86%8C%ED%94%84%ED%8A%B8-%EC%97%90%EC%A0%80-%EC%95%84%EC%A3%BC-%EA%BF%80%EC%9E%BC%EC%9D%B4%EC%95%BC</link>
            <guid>https://velog.io/@hey-chocopie/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%86%8C%ED%94%84%ED%8A%B8-%EC%97%90%EC%A0%80-%EC%95%84%EC%A3%BC-%EA%BF%80%EC%9E%BC%EC%9D%B4%EC%95%BC</guid>
            <pubDate>Thu, 07 Jul 2022 07:52:46 GMT</pubDate>
            <description><![CDATA[<p>애저에 대해 알아보자 .</p>
<h1 id="0azure란">0.Azure란?!</h1>
<p>Azure란?
Azure 클라우드 플랫폼은 새로운 솔루션을 구현하여 현재의 문제를 해결하고 미래로 나아가는 데 도움이 되도록 설계된 200개가 넘는 제품 및 클라우드 서비스입니다. AWS와 비슷한다고 생각하면 편합니다. </p>
<p>대충아래 내용들을 클라우드에서 진행할수 있게 해준다. <img src="https://velog.velcdn.com/images/hey-chocopie/post/70757bf8-31c2-415a-850f-d2990d996460/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/63f55ad0-84e2-4612-8e91-c8df4e3b53aa/image.png" alt=""></p>
<h1 id="1-워크플로를-구현하는-방법-4가지">1. 워크플로를 구현하는 방법 4가지.</h1>
<p>소프트웨어에서 모델링된 비즈니스 프로세스를 흔히 워크플로라 합니다. Azure는 여러 시스템을 통합하는 워크플로를 만들고 구현하는 데 사용할 수 있는 네 가지 기술을 포함합니다.</p>
<p>Logic Apps
Microsoft Power Automate
WebJobs
Azure Functions</p>
<h3 id="logic-apps란">Logic Apps란?</h3>
<p>배포된 애플리케이션의 이종 구성 요소를 자동화, 오케스트레이션 및 통합하기 위한 Azure 내의 서비스입니다</p>
<h1 id="2-서비스-선택방법">2. 서비스 선택방법</h1>
<p>azure로 자전거 대여 서비스 만들때, 개발하는 사람에 따라 다르게 원하는 기술을 선택해서 사용할수 있다. </p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/901dede5-a94b-4837-b6e4-08837e6b2920/image.png" alt=""></p>
<h1 id="0-azure-functions를-사용하여-서버리스-논리-만들기">0. Azure Functions를 사용하여 서버리스 논리 만들기</h1>
<p><a href="https://docs.microsoft.com/ko-kr/learn/modules/create-serverless-logic-with-azure-functions/">https://docs.microsoft.com/ko-kr/learn/modules/create-serverless-logic-with-azure-functions/</a></p>
<h1 id="1-서버리스-컴퓨팅이란">1. 서버리스 컴퓨팅이란?</h1>
<p>함수형서비스! </p>
<p>FaaS(Function as a Service)이라고도 하는데, 클라우드에 함수형태로 올려두고 요청들어오면 그 함수가 실행될떄만 클라우드에서 실행해주는듯. 따로 가상머신을 만들어두는게 아니라 안사용하면 비용도 안나오고 반대로 많이 사용하면 비용많이 나옴. </p>
<p>가장 일반적인 두 가지 방법은 이 모듈에서 집중적으로 살펴볼 Azure Logic Apps 및 Azure Functions입니다.</p>
<h1 id="2-azure-functions란">2. Azure Functions란?</h1>
<p>Azure Functions는 서버리스 애플리케이션 플랫폼입니다. 이를 통해 개발자는 인프라를 프로비전하지 않고도 실행할 수 있는 비즈니스 논리를 호스트할 수 있습니다. Azure Functions는 기본적으로 확장성을 제공하고 사용된 리소스에 대한 요금만 부과합니다. C#, F#, JavaScript, Python 및 PowerShell Core를 포함하여 선택한 언어로 함수 코드를 작성할 수 있습니다. NuGet 및 NPM과 같은 패키지 관리자에 대한 지원도 포함</p>
<p>#</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[마이크로소프트 애저 ]]></title>
            <link>https://velog.io/@hey-chocopie/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%86%8C%ED%94%84%ED%8A%B8-%EC%95%A0%EC%A0%80</link>
            <guid>https://velog.io/@hey-chocopie/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%86%8C%ED%94%84%ED%8A%B8-%EC%95%A0%EC%A0%80</guid>
            <pubDate>Thu, 07 Jul 2022 07:50:14 GMT</pubDate>
            <description><![CDATA[<p>애저에 대해 알아보자 .</p>
<h1 id="0azure란">0.Azure란?!</h1>
<p>Azure란?
Azure 클라우드 플랫폼은 새로운 솔루션을 구현하여 현재의 문제를 해결하고 미래로 나아가는 데 도움이 되도록 설계된 200개가 넘는 제품 및 클라우드 서비스입니다. AWS와 비슷한다고 생각하면 편합니다. </p>
<p>대충아래 내용들을 클라우드에서 진행할수 있게 해준다. <img src="https://velog.velcdn.com/images/hey-chocopie/post/70757bf8-31c2-415a-850f-d2990d996460/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/63f55ad0-84e2-4612-8e91-c8df4e3b53aa/image.png" alt=""></p>
<h1 id="1-워크플로를-구현하는-방법-4가지">1. 워크플로를 구현하는 방법 4가지.</h1>
<p>소프트웨어에서 모델링된 비즈니스 프로세스를 흔히 워크플로라 합니다. Azure는 여러 시스템을 통합하는 워크플로를 만들고 구현하는 데 사용할 수 있는 네 가지 기술을 포함합니다.</p>
<p>Logic Apps
Microsoft Power Automate
WebJobs
Azure Functions</p>
<h3 id="logic-apps란">Logic Apps란?</h3>
<p>배포된 애플리케이션의 이종 구성 요소를 자동화, 오케스트레이션 및 통합하기 위한 Azure 내의 서비스입니다</p>
<h1 id="2-서비스-선택방법">2. 서비스 선택방법</h1>
<p>azure로 자전거 대여 서비스 만들때, 개발하는 사람에 따라 다르게 원하는 기술을 선택해서 사용할수 있다. </p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/901dede5-a94b-4837-b6e4-08837e6b2920/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[기본개념정리 ]]></title>
            <link>https://velog.io/@hey-chocopie/%EA%B8%B0%EB%B3%B8%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@hey-chocopie/%EA%B8%B0%EB%B3%B8%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Wed, 06 Jul 2022 09:18:29 GMT</pubDate>
            <description><![CDATA[<h1 id="1-injectrepository">1. InjectRepository</h1>
<p>entity나 Repository 를 import 해
서 다른곳에서 불쑥 불러와서 쓸수 없다. 그래서 이런식으로 주입한뒤 사용한다. </p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/37c451b9-5540-45b7-a4e2-3d05d38839de/image.png" alt=""></p>
<h1 id="2-forfeture">2. forFeture</h1>
<p>또한 InjectRepository하기전에, forFeture 을 사용하여 해당 모듈에서 쓰겠다고 의존성을 먼저 설정해주어야한다. 
<img src="https://velog.velcdn.com/images/hey-chocopie/post/7ace586d-435c-48fc-b204-48ffa4eda870/image.png" alt=""></p>
<h1 id="3-db접근방법1---datasource">3. DB접근방법(1) - dataSource</h1>
<p>우리는 말그대로 nestjs에서 DB에 접근해서 데이터를 불러온다. 
그러기 위해서 DataSource라는걸 사용하고 초기 설정만하면 원하는 데이터를 dataSource로 불러오거나 저장할수 있다. 
<img src="https://velog.velcdn.com/images/hey-chocopie/post/a6498ecb-bdd7-4dba-9b56-b63e087fb1ff/image.png" alt=""></p>
<h1 id="4-db접근방법2---repository">4. DB접근방법(2) - Repository</h1>
<p>Nestjs에서 typeorm은 Repository를 허용한다. 그래서 DataSource대신 Repotitory를 사용해서 접근할수도 있다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[ERD설계 DB로 만들어 보기 .]]></title>
            <link>https://velog.io/@hey-chocopie/ERD%EC%84%A4%EA%B3%84-DB%EB%A1%9C-%EB%A7%8C%EB%93%A4%EC%96%B4-%EB%B3%B4%EA%B8%B0-</link>
            <guid>https://velog.io/@hey-chocopie/ERD%EC%84%A4%EA%B3%84-DB%EB%A1%9C-%EB%A7%8C%EB%93%A4%EC%96%B4-%EB%B3%B4%EA%B8%B0-</guid>
            <pubDate>Tue, 05 Jul 2022 07:51:24 GMT</pubDate>
            <description><![CDATA[<p>우선 TypeORM이 Repository Pattern을 지원하기 때문에 Entity와 Repository를 사용할 수 있다.</p>
<h1 id="레파지토리-사용법1---커스텀">레파지토리 사용법(1) - 커스텀</h1>
<p>아래와 같이 Repository를 상속받아 새로운 custom Repository(UserRepository)를 만들수 있다. </p>
<pre><code>import { EntityRepository, Repository } from &#39;typeorm&#39;;
import { User } from &#39;./user.entity&#39;;

@EntityRepository(User)
export class UserRepository extends Repository&lt;User&gt; {}</code></pre><p>이렇게 만든 UserRepository는 services 에서 사용하기 위해 
아래 처럼 모듈 파일에서 UserRepository를 사용하겠다고 imports해주어야한다. </p>
<pre><code>
@Module({
  imports: [TypeOrmModule.forFeature([UserRepository])],
  controllers: [UserController],
  providers: [UserService],
})
export class UserModule {}</code></pre><h1 id="레파지토리-사용법2---기본">레파지토리 사용법(2) - 기본</h1>
<p>레파지토리를 사용안한다면, 아래 처럼 엔티티만 forFeature로 넘겨준다. </p>
<pre><code>@Module({
  imports: [TypeOrmModule.forFeature([User])],
  controllers: [UserController],
  providers: [UserService],
})
export class UserModule {}</code></pre><p>그리고 서비스에서 해당 엔티티를 기본 라이브러리로 제공하는 Repository를 통해 사용한다. </p>
<pre><code>@Injectable()
export class UsersService {
  constructor(
    @InjectRepository(User)
    private usersRepository: Repository&lt;User&gt;,
  ) {}
}</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[관계형데이터베이스 설계]]></title>
            <link>https://velog.io/@hey-chocopie/9jsnil7c</link>
            <guid>https://velog.io/@hey-chocopie/9jsnil7c</guid>
            <pubDate>Fri, 01 Jul 2022 01:10:49 GMT</pubDate>
            <description><![CDATA[<h1 id="1-관계형-데이터-베이스">1. 관계형 데이터 베이스.</h1>
<h3 id="1-구조">1. 구조.</h3>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/06bc72f5-f4bb-48d4-8d09-f9eec00ebe3b/image.png" alt=""></p>
<h3 id="2-특징">2. 특징</h3>
<ul>
<li>관계형 데이터 베이스 테이블로 저장한다. </li>
<li>테이블은 하나의 주제만을 가진 테이블을 만들길 권장한다. </li>
<li>데이터를 CRUD를 통해 쉽게 데이터를 관리할 수 있다. 
<img src="https://velog.velcdn.com/images/hey-chocopie/post/1f5fb85d-98e4-4497-8ae5-840e1ebe1185/image.png" alt=""></li>
</ul>
<h3 id="3-테이블이-하나의-주제만-가지길-권장하는-이유">3. 테이블이 하나의 주제만 가지길 권장하는 이유.</h3>
<ul>
<li>중복 발생 없앨 수 있다. <blockquote>
<p> 모든 표는 하나의 주제만을 가질것!</p>
</blockquote>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/e55596fa-2c43-4cd6-8a24-4c15b476e863/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey-chocopie/post/dc600d59-e28c-45dc-aa86-202921c56948/image.png" alt=""></p>
<h3 id="4-join">4. join</h3>
<ul>
<li>하지만 표를 인간이 이해하기엔 아래 쪼개기 전이 더 가독성이 좋다. </li>
<li>그래서 쪼개어진 표를 볼때 합쳐서 보도록 만들어주는게 join이다. </li>
<li><a href="https://sql-joins.leopard.in.ua/">쉽게 보는예제 </a>
<img src="https://velog.velcdn.com/images/hey-chocopie/post/e55596fa-2c43-4cd6-8a24-4c15b476e863/image.png" alt=""></li>
</ul>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/c35118c9-f3e0-47bf-9d3f-18e0d4877486/image.png" alt=""></p>
<h1 id="1-erd">1. ERD</h1>
<ul>
<li>Entity Relationship Diagram (ERD)는 시스템의 엔티티들이 무엇이 있는지 어떤 관계가 있는지를 나타내는 다이어그램입니다. </li>
<li>ERD는 크게 3가지로 구성됩니다. (정보그룹, 정보그룹관계, 정보)</li>
</ul>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/924653f7-c338-47d5-97bd-2be5f098295b/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/ba756a56-4bee-4556-b4f7-cc1444de2be6/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/0629ed22-4a11-409c-855a-72ec1750d647/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/8fc56279-05e7-44ff-aaa5-20f03bea4dce/image.png" alt=""></p>
<h1 id="erd-설계">ERD 설계</h1>
<ul>
<li>만약 기획하는 사람이랑 DB설계하는 사람이 다르다면, ERD설계 까지는 같이 하는게 좋습니다. </li>
</ul>
<h3 id="설계순서1">설계순서(1).</h3>
<ul>
<li>기획서에서 저장 할 부분 테이블에 저장.
<img src="https://velog.velcdn.com/images/hey-chocopie/post/86428335-15c4-46c8-95a0-8a79ef81a279/image.png" alt=""></li>
</ul>
<h3 id="설계순서2---식별자-정하기">설계순서(2) - 식별자 정하기.</h3>
<ul>
<li>하나의 키로 식별가능한 값이 여러개가 있다면 기본키를 하나정하고 나머지는 대체키로 설정해 둔다. </li>
<li>반대로 하나의 키만으로 식별이 안되지만, 직원번호 + 부서번호로 식별이 가능한 경우도 있다. 이런 경우 중복키로 식별한다. </li>
<li>식별할 방법 키가 없는경우 table에 고유 id를 만들어주면 된다. 
<img src="https://velog.velcdn.com/images/hey-chocopie/post/44af4933-bb1e-485f-864f-7db59a894a51/image.png" alt=""></li>
</ul>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/d68f1fd9-c232-4b2c-a493-6a1c6bf7c7a5/image.png" alt=""></p>
<h3 id="설계순서-3---관계-연결하기">설계순서 (3) - 관계 연결하기.</h3>
<ul>
<li>이제 만들어둔 테이블의 관계를 소속 또는 작성같은 두 테이블 간의 관계를 정해주면 된다. 
<img src="https://velog.velcdn.com/images/hey-chocopie/post/257ba69c-9486-440a-89f3-714132d559d1/image.png" alt=""></li>
</ul>
<h3 id="관계연결-예시">관계연결 예시.</h3>
<ul>
<li><p>예제 1. ERD에서 연결할때 보통 선으로 연결한다. 오른쪽 두번째 줄 네모를 보면 하나의 저자가 여러개의 댓글을 가지고 있기 때문에 삼바리로 연결된걸 볼수 있다. 
<img src="https://velog.velcdn.com/images/hey-chocopie/post/5074f662-9b22-4172-9fda-f3b933e9c1a0/image.png" alt=""></p>
</li>
<li><p>예제 2. 댓글에는 저자가 필수, 저자는 댓글이 없을수 도 있고 있을수도 있다. (4번째 네모와 일치)
<img src="https://velog.velcdn.com/images/hey-chocopie/post/758e19ed-4aa3-40bf-bd7b-e871d4d45156/image.png" alt=""></p>
</li>
</ul>
<h1 id="erd-예시">ERD 예시</h1>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/16c2dd1b-333e-4f4d-9d64-d2fbd323a9e9/image.png" alt=""></p>
<h1 id="쉬어가기">쉬어가기.</h1>
<ul>
<li>여기가지, 개념적 데이터 모델링이다. </li>
<li>이제 논리적 데이터 모델링을 해보자!</li>
<li>논리적 데이터 모델링은 위에서 뽑은 그림을 바탕으로 어떻게 관계형 데이터 베이스에 옮길지 모델링 하는 파트다. </li>
</ul>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/573fe6df-4d5f-447e-aecf-ffa4cf114bfe/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/e8791051-f590-4173-8b68-dba498bdc61e/image.png" alt=""></p>
<h1 id="-일단-여기까지-">====== 일단 여기까지 =====</h1>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/a5313226-0fc6-44a6-a32d-086f6a5b2def/image.png" alt=""></p>
<h1 id="관계형-db를-정의하기-위한-강좌erdcloude">관계형 DB를 정의하기 위한 강좌(ERDcloude)</h1>
<ol>
<li><a href="https://www.youtube.com/watch?v=0pU6_5BQ2Dk&amp;list=PLuYGaZ5qIin8oFMcgTrWItljNzMpGMZy5&amp;index=19">database란? 그리고 간단한 CRUD사용</a></li>
<li><a href="https://www.youtube.com/watch?v=2Xa54XBXbk0&amp;list=PLuHgQVnccGMAG1O1BRZCT3wkD_aPmPylq">join을 한번 사용해보자.</a></li>
</ol>
<p>표를 쪼개면 좋은이유 </p>
<ol>
<li>주제에 따라 그룹핑 가능. </li>
<li>글을 담고있는 표만 가지고 올수 있어서 자원 아낄수 있음. </li>
<li>댓글에 저자의 정보를 합치고 싶으면 join을 통해 쉽게 합칠수있다. </li>
</ol>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/1ae674dd-6c0a-4b46-ac84-b93d3f41b71f/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[docker compose 에서 postgres, pgadmin연결!]]></title>
            <link>https://velog.io/@hey-chocopie/docker-compose-%EC%97%90%EC%84%9C-postgres-pgadmin%EC%97%B0%EA%B2%B0</link>
            <guid>https://velog.io/@hey-chocopie/docker-compose-%EC%97%90%EC%84%9C-postgres-pgadmin%EC%97%B0%EA%B2%B0</guid>
            <pubDate>Sun, 26 Jun 2022 06:11:24 GMT</pubDate>
            <description><![CDATA[<h1 id="pgadmin-사용법">pgadmin 사용법</h1>
<h3 id="1-localhost5050-접속">1. localhost:5050 접속</h3>
<h3 id="2-아래-아이디-비번-입력">2. 아래 아이디 비번 입력</h3>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/fda312f2-31b7-48d2-a1dc-0333f2be061e/image.png" alt=""></p>
<pre><code>    PGADMIN_DEFAULT_EMAIL: SpringDay@42seoul.com #pgadmin id.
    PGADMIN_DEFAULT_PASSWORD: April</code></pre><h3 id="3-postman-요청보내기">3. postman 요청보내기</h3>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/101aad07-7087-4a87-bb98-5f3e8b0c7498/image.png" alt=""></p>
<h3 id="4-서버생성-클릭-서버눌러도-아무것도-없을-때">4. 서버생성 클릭 (서버눌러도 아무것도 없을 때!)</h3>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/840502fb-0103-454f-9fe3-9b0531fbdb23/image.png" alt=""></p>
<h3 id="5-서버항목작성">5. 서버항목작성</h3>
<pre><code>Name : 아무거나 하고싶은거 해도됩니다. </code></pre><p><img src="https://velog.velcdn.com/images/hey-chocopie/post/90c9713d-c677-43f9-b869-d389bb9f5478/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/7a1d34c8-b152-4024-8312-56c33bed41ac/image.png" alt=""></p>
<pre><code>Host name/address : local_pgdb
Password : April</code></pre><blockquote>
<p>Host name/address : local_pgdb 인 이유, pgadmin DB랑 연결해야하는데, DB가 실행중인 컨테이너이름이 local_pgdb로 인데, 이러면 pgadmin이랑 연결됨. </p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/dbc261b4-6e85-4728-9176-aa6ff4d7a1fc/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/73827c7e-d116-459d-bdbb-27043f0ff616/image.png" alt=""></p>
<h3 id="6-테이블-확인">6. 테이블 확인.</h3>
<p>테이블에 저장된거 확인해보자!</p>
<ol>
<li>스키마 클릭</li>
</ol>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/df9ab0ef-c67b-4cda-8b75-52a5a4b502b1/image.png" alt=""></p>
<ol start="2">
<li>스키마에서 원하는 테이블 선택
<img src="https://velog.velcdn.com/images/hey-chocopie/post/bfa2a6c8-6094-4eac-866d-3a528e98783e/image.png" alt=""></li>
</ol>
<ol start="3">
<li>왼쪽위에 달력 모양 클릭
사진에 Object 밑에 달력 모양 누르면 됨</li>
</ol>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/48a0d541-52c0-4e28-b769-07f865018fb5/image.png" alt=""></p>
<h3 id="7-완료">7. 완료</h3>
<p><img src="https://velog.velcdn.com/images/hey-chocopie/post/49558a24-b85d-41e8-8258-54d4580e5905/image.png" alt=""></p>
<p>참고 : <a href="https://belowthemalt.com/2021/06/09/run-postgresql-and-pgadmin-in-docker-for-local-development-using-docker-compose/">https://belowthemalt.com/2021/06/09/run-postgresql-and-pgadmin-in-docker-for-local-development-using-docker-compose/</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[42Seoul api 로그인. ]]></title>
            <link>https://velog.io/@hey-chocopie/42Seoul-api-%EB%A1%9C%EA%B7%B8%EC%9D%B8</link>
            <guid>https://velog.io/@hey-chocopie/42Seoul-api-%EB%A1%9C%EA%B7%B8%EC%9D%B8</guid>
            <pubDate>Thu, 16 Jun 2022 07:30:57 GMT</pubDate>
            <description><![CDATA[<p>42서울 api를 이용해 로그인 확인하도록 만들어보자 .</p>
<p>아래 링크에 튜토리얼이 있다! 
<a href="https://api.intra.42.fr/apidoc/guides">https://api.intra.42.fr/apidoc/guides</a></p>
<ol>
<li><p>api어플리케이션을 만들자!</p>
</li>
<li><p>42api에 대한 인증은 OAuth2 에서 작동합니다 .</p>
<blockquote>
<p>OAuth란? Third-Party 프로그램에게 리소스 소유자를 대신하여 리소스 서버에서 제공하는 자원에 대한 접근 권한을 위임하는 방식을 제공합니다.</p>
</blockquote>
</li>
</ol>
]]></description>
        </item>
    </channel>
</rss>