<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>jong_hyun.log</title>
        <link>https://velog.io/</link>
        <description>주니어 개발자가 되어보자</description>
        <lastBuildDate>Tue, 10 May 2022 12:55:07 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>jong_hyun.log</title>
            <url>https://images.velog.io/images/jong_hyun/profile/1301cc50-02b6-4b12-871b-399f2bd4976d/social.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. jong_hyun.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/jong_hyun" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[teamproject-02]]></title>
            <link>https://velog.io/@jong_hyun/teamproject-02</link>
            <guid>https://velog.io/@jong_hyun/teamproject-02</guid>
            <pubDate>Tue, 10 May 2022 12:55:07 GMT</pubDate>
            <description><![CDATA[<p>오늘은 시작하자 마자 문제가 생겼다. Teamproject git을 이용하기 위해 보일러 플레이트를 만드려고 했는데 entity를 Db에서 찾지 못한다는 에러가 떳다. 에러를 찾아 보다 이유는 모르지만 brew가 지워져 있었고 그로 인해 mysql이 잘 못 되었던 것 같았다. 우선 home brew를 다시 설치하고 mysql을 설치 했더니 에러가 해결 되었다. 어제 까지만 해도 작동하던 Mysql이 안 된 이유를 찾아보았지만 마땅한 해결책은 찾지 못하였다. 아쉽지만 그래도 이제는 된다는 사실을 위안 삼고 넘어가야 겠다..</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[teamproject-01]]></title>
            <link>https://velog.io/@jong_hyun/teamproject-01</link>
            <guid>https://velog.io/@jong_hyun/teamproject-01</guid>
            <pubDate>Mon, 09 May 2022 13:32:01 GMT</pubDate>
            <description><![CDATA[<h3 id="teamproject-때-git-hub-하는-법">teamproject 때 git hub 하는 법</h3>
<p>1.회사 계정으로 repository 만든다
2. 내 깃허브 계정의 repository에서 회사 repository 를 fork 한다
3. 내 vscode 에서 내 git hub 를 clone 한다
4. api 들 만든후에 내 repository에 push를 한다
5. 그 후 회사 repository 에 pull request 요청한다!
6. 내 repository =&gt; origin // 회사 repository =&gt; upstream</p>
<h3 id="주의"><strong>주의</strong></h3>
<p>1.서로 겹치는 기능은 같이 만들지 않기
2. 잘하는 사람이 공통 모듈 만들기
3. merge 가 완료 되지도 않았는데 그걸 활용해서 만들지 않기</p>
<h3 id="실습"><strong>실습</strong></h3>
<p>1.회사 repository 에 들어가서 내 repository에 fork 한다 
2.내 repository 에 git clone 을 한다
3.issue 에 무슨 일을 할지 규칙에 따라 적어 놓기
4.git branch 로 어느 브랜치인지 확인 하기
5.git checkout -b &#39;만들 브랜치 이름&#39; =&gt; 브랜치 만들기 =&gt; 꼭 메인에서 새로운 브랜치 따야한다
6.내용 수정하기
7.git remote -v =&gt; 내 repository에 저장 되어 있는지 확인
8.git push origin ‘push할 branch 이름’
9.git add.
10.git commit -m”이름”
11.git push origin ‘push할 branch이름’
12.1.git remote add upstream ‘회사 repository 주소’
13.pull request 요청(develop branch에다가)</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[DAY12(DTO)]]></title>
            <link>https://velog.io/@jong_hyun/DAY12DTO</link>
            <guid>https://velog.io/@jong_hyun/DAY12DTO</guid>
            <pubDate>Mon, 04 Apr 2022 00:55:08 GMT</pubDate>
            <description><![CDATA[<p>spring을 사용하다 보면 DTO, DAO, VO 에 대한 용어에 대해 많이 접하게 됩니다.</p>
<h3 id="dao">DAO</h3>
<p>데이터베이스의 data에 접근하기 위한 객체입니다. MVC 패턴의 MODEL에서 이와 같은 일을 수행합니다.</p>
<h3 id="dto">DTO</h3>
<p>계층 간 데이터 교환을 하기 위해 사용하는 객체로, 로직을 가지지 않는 순수한 데이터 객체 입니다.</p>
<h3 id="vo">VO</h3>
<p>값 오브젝트 로서 값을 위해 쓰입니다. read-only(오직 읽기만 가능) 특징을 가집니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[DAY11(ERD)]]></title>
            <link>https://velog.io/@jong_hyun/DAY11ERD</link>
            <guid>https://velog.io/@jong_hyun/DAY11ERD</guid>
            <pubDate>Mon, 04 Apr 2022 00:25:59 GMT</pubDate>
            <description><![CDATA[<h3 id="erd란">ERD란,</h3>
<p>시스템의 엔티티들이 무엇이 있는지 어떤 관계가 있는지를 나타내는 다이어그램입니다. </p>
<h3 id="erd-사용법">ERD 사용법</h3>
<ol>
<li>관계형 DB에서 주로 사용됩니다. 엔티티와 속성들을 테이블과 컬럼들로 변환할 수 있습니다. 테이블들과 관계들을 시각화할 수 있기 때문에 설계 문제점을 파악할 수 있습니다.</li>
<li>소프트웨어 계획 단계에서 사용됩니다. 서로 다른 시스템 요소와 서로 간의 관계를 식별하는게 도움 됩니다.</li>
</ol>
<h3 id="erd-작성법">ERD 작성법</h3>
<ol>
<li>모든 엔티티들을 정의합니다.</li>
<li>엔티티 간 관계들을 정의합니다.</li>
<li>속성들을 추가합니다.</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[DAY10(ESLINT & PRETTIER)]]></title>
            <link>https://velog.io/@jong_hyun/DAY10ESLINT-PRETTIER</link>
            <guid>https://velog.io/@jong_hyun/DAY10ESLINT-PRETTIER</guid>
            <pubDate>Mon, 28 Mar 2022 05:32:09 GMT</pubDate>
            <description><![CDATA[<h3 id="eslint-란">Eslint 란</h3>
<p>자바스크립트는 동적 분석을 하기 때문에 에러를 찾기 위해서는 직접 코드를 실행해서 확인 해봐야 합니다. 이를 도와주는 것이 정적으로 분석 해주는 eslint입니다. 프로그램을 실행하지 않아도 코딩 컨벤션에 위배되는 코드나 안티 패턴을 자동으로 검출 해줍니다.</p>
<h3 id="prettier-란">Prettier 란</h3>
<p>eslint처럼 &#39;코드 구현 방식&#39;이 아닌, 줄 바꿈, 공백, 들여 쓰기 등 에디터에서 &#39;텍스트&#39;를 일관되게 작성되도록 도와주는 것입니다. </p>
<h3 id="차이">차이</h3>
<p>esling는 주로 코드 에러를 잡아내고 코드 문법을 강제하는 등 코드 품질을 개선에 중점을 두었습니다.
prettier은 코드의 최대 길이, 함수에서, 작은따옴표(&#39;)를 사용할 것인지 아니면 큰 따옴표(&quot;)를 사용할 것인지 등 코드가 예쁘게 보이도록 하는지에 중점을 두었습니다. 하지만 코드의 에러를 잡아내진 못합니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[DAY09(SCRAPING & CRAWLING)]]></title>
            <link>https://velog.io/@jong_hyun/DAY09SCRAPING-CRAWLING</link>
            <guid>https://velog.io/@jong_hyun/DAY09SCRAPING-CRAWLING</guid>
            <pubDate>Fri, 25 Mar 2022 05:40:19 GMT</pubDate>
            <description><![CDATA[<h3 id="웹-크롤러">웹 크롤러</h3>
<p>조직적, 자동화된 방법으로 웹을 탐색 및 수집하는 프로그램입니다. 크롤러는 여러 사이트를 돌아다니면서 필요한 데이터를 가지고 옵니다. </p>
<h3 id="스크래퍼">스크래퍼</h3>
<p>웹사이트 상에서 원하는 정보를 추출하는 기술입니다. 스크래핑을 수행하기 위해서는 먼저 필요한 정보를 찾기 위해 크롤링 작업을 수행해야 합니다. </p>
<h3 id="차이점">차이점</h3>
<ol>
<li>웹의 다양한 소스에서 특정 데이터를 추출하는게 <strong>스크래핑</strong>이고 웹페이지에 있는 데이터를 단순하게 긁어 와서 분류기를 통해 유효데이터를 분류하는 것은 <strong>크롤링</strong>입니다. </li>
<li>지속적으로 혼자 동작할 수 있으면 <strong>크롤링</strong>, 멈추면 <strong>스크래핑</strong>입니다.</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[DAY08(TYPEORM)]]></title>
            <link>https://velog.io/@jong_hyun/DAY08TYPEORM</link>
            <guid>https://velog.io/@jong_hyun/DAY08TYPEORM</guid>
            <pubDate>Thu, 24 Mar 2022 05:30:10 GMT</pubDate>
            <description><![CDATA[<h3 id="orm이란">orm이란,</h3>
<p>객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용하기레 객체 모델과 관계형 모델 단에 불일치가 존재합니다. ORM은 객체 관의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결 해줍니다. 
즉, 코드에 있는 &quot;객체&quot;와 DB에 있는 &quot;데이터&quot;를 편하게 일치시켜주는 도구입니다.</p>
<h3 id="장점">장점</h3>
<ol>
<li>재사용성 및 유지보수의 편리성이 증가합니다. ORM은 독립적으로 작성되어있고, 해당 객체들을 재활용할 수 있습니다.</li>
<li>객체 지향적인 코드로 인해 더 직관적입니다. 선언문, 할당, 종료 같은 부수적인 코드가 없거나 급격히 줄고 각종 객체에 대한 코드를 별도록 작성하기 때문에 코드의 가독성을 올려줍니다.</li>
</ol>
<h3 id="단점">단점</h3>
<p>완벽한 ORM으로만 서비스를 구현하기가 어렵습니다. ORM이 사용하기는 편하지만 프로젝트의 복장성이 커질 경우 난이도 또한 올라가고 만약 잘못 구현된 경우에 속도 저하 및 심각할 경우 일관성이 무너지는 문제점이 생길수 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Day06]]></title>
            <link>https://velog.io/@jong_hyun/Day06</link>
            <guid>https://velog.io/@jong_hyun/Day06</guid>
            <pubDate>Wed, 23 Mar 2022 05:57:13 GMT</pubDate>
            <description><![CDATA[<p>오늘은 엄마가 코로나에 확진이 되어버려서 
집에서 원격으로 수업을 듣게 되었다. 
매일 새벽 같이 일어나 학원에 갔지만 
오늘은 집에 있으니 뭔지 모르게 어색하고 오히려 학원에 나가서 공부를 하고 싶었다. 
무언가 옛날에 알바 했었을 때의 기분과 비슷했다. 
하루 하루는 알바 가기 싫어 죽겠지만 
알바를 그만 두고 쉬게 되었을 때에는 3일만 지나도 몸이 근지러웠고 
다시 일하고 싶은 기분이었던 것처럼 오늘도 그랬다.
내일 pcr결과가 나오는데 제발 음성이었으면 좋겠다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Day05]]></title>
            <link>https://velog.io/@jong_hyun/Day05</link>
            <guid>https://velog.io/@jong_hyun/Day05</guid>
            <pubDate>Tue, 22 Mar 2022 05:42:21 GMT</pubDate>
            <description><![CDATA[<p>오늘은 백엔드에서 핸드폰이나 메일로 문자를 보내는 방법을 배웠다.
내용이나 양식도 내 마음 대로 보낼 수 있었는데 
핸드폰으로 내가 보낸 문자 메세지가 왔을 때 
처음 노캔을 접했을 때 만큼 감격스러웠다. 
이제 내 마음대로 메세지도 보낼 수 있으니까 
오늘 밤에 엄마 핸드폰으로 보이스 피싱처럼 메세지를 보내고 
반응을 봐야겠다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[DAY07(PACKAGE.JSON)]]></title>
            <link>https://velog.io/@jong_hyun/DAY08PACKAGE.JSON</link>
            <guid>https://velog.io/@jong_hyun/DAY08PACKAGE.JSON</guid>
            <pubDate>Tue, 22 Mar 2022 05:29:59 GMT</pubDate>
            <description><![CDATA[<h3 id="packagejson-이란">package.json 이란,</h3>
<p>프로젝트의 정보를 정의하고, 의존하는 패키지 정보를 명시하는 파일 입니다.
크게 프로젝트 정보 , 패키지 정보로 이루어져 있습니다. </p>
<h3 id="프로젝트-정보name-version-영역">프로젝트 정보(name, version 영역)</h3>
<ol>
<li>name : 소문자 한 단어로 이루어져야합니다. 그리고 하이픈( - )과 언더스코어( _ )가 포함될 수 있습니다.</li>
<li>version : &#39;시맨틱 버저닝&#39; 의 작성 규칙에 따라 형식을 구성합니다.</li>
</ol>
<h3 id="패키지-정보dependencies-devdependencies-영역">패키지 정보(dependencies, devDependencies 영역)</h3>
<ol>
<li>dependencies : 프로덕션 환경에서 응용 프로그램에 필요한 패키지 입니다.</li>
<li>devDependencies : 로컬 개발 및 테스트에만 필요한 패키지 입니다.<h3 id="패키지와-모듈">패키지와 모듈</h3>
</li>
<li>패키지는 package.json 으로 설명되는 파일 또는 디렉토리 입니다. npm 레지스트리에 공개되기 위해 반드시 package.json 파일을 가지고 있어야합니다.</li>
<li>모듈은 node.js의 require() 함수로 로드될 수 있는 node_modules 디렉토리안의 파일 또는 디렉토리입니다</li>
</ol>
<p>*(모듈은 package.json 파일을 가질 필요가 없습니다. 모든 모듈들이 패키지는 아닙니다. package.json을 가진 모듈만이 패키지입니다.)</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[DAY 06(TYPE SCRIPT)]]></title>
            <link>https://velog.io/@jong_hyun/DAY-06TYPE-SCRIPT</link>
            <guid>https://velog.io/@jong_hyun/DAY-06TYPE-SCRIPT</guid>
            <pubDate>Mon, 21 Mar 2022 05:37:15 GMT</pubDate>
            <description><![CDATA[<h3 id="type-script란">TYPE SCRIPT란,</h3>
<p>마이크로 소프트에서 개발한 오픈소스 프로그래밍 언어이며, 
자바스크립트의 단점을 보완하기 위해 만들어 졌습니다. </p>
<h3 id="type-script-특징">TYPE SCRIPT 특징</h3>
<h4 id="1-정적-타입-언어">1. 정적 타입 언어</h4>
<p>코드 작성 단계에서 타입을 체크해 오류를 확인할 수 있고 미리 타입을 결정하기
때문에 실행 속도가 매우 빠릅니다. 하지만 코드 작성 시 매번 타입을 결정해야 하기 때문에 번거롭고 코드량이 증가하며 컴파일 시간이 오래 걸릴 수 있습니다.</p>
<h4 id="2-자바스크립트-슈퍼셋">2. 자바스크립트 슈퍼셋</h4>
<p>타입스크립트는 자바스크립트의 슈퍼셋, 즉 자바스크립트 기본 문법에 타입스크립트의 문법을 추가한 언어입니다. 따라서 유효한 자바스크립트로 작성한 코드는 확장자를 .js에서 .ts로 변경하고 타입스크립트로 컴파일해 변환할 수 있습니다.</p>
<h4 id="3객체-지향-프로그래밍-지원">3.객체 지향 프로그래밍 지원</h4>
<p>타입스크립트는 ES6(ECMAScript 6)에서 새롭게 사용된 문법을 포함하고 있으며 클래스, 인터페이스, 상속, 모듈 등과 같은 객체 지향 프로그래밍 패턴을 제공합니다.</p>
<h3 id="type-script를-쓰는-이유">TYPE SCRIPT를 쓰는 이유</h3>
<h4 id="1에러의-사전-방지">1.에러의 사전 방지</h4>
<pre><code class="language-javascript">// math.js
function sum( a, b ){
  return a + b;
}

sum(10,&quot;20&quot;) //&quot;1020&quot;

///math.ts
function sum( a : number, b : number ){
  return a + b;

 sum(&quot;10&quot;,&quot;20&quot;)//error &quot;10&quot;은 number에 할당될 수 없습니다.</code></pre>
<p>위처럼 타입스크립트는 자바스크립트에서 처럼 의도하지 않은 코드의 동작을 
예방할 수 있습니다.</p>
<h4 id="2코드-자동-완성과-가이드">2.코드 자동 완성과 가이드</h4>
<p>타입스크립트의 또 다른 장점은 코드를 작성할 때 개발 툴의 기능을 최대로 활용할 수 있다는 것입니다. 요즘에 프런트엔드 개발을 할 때 가장 많이 사용되는 Visual Studio Code는 툴의 내부가 타입스크립트로 작성되어 있어 타입스크립트 개발에 최적화 되어 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Day05(CALL BACK)]]></title>
            <link>https://velog.io/@jong_hyun/Day05CALL-BACK</link>
            <guid>https://velog.io/@jong_hyun/Day05CALL-BACK</guid>
            <pubDate>Fri, 18 Mar 2022 05:44:04 GMT</pubDate>
            <description><![CDATA[<h3 id="콜백함수란"><strong>콜백함수란,</strong></h3>
<p>자바스크립트 에서 함수의 특징 중
매개 변수로 전달 할 수 있다는 점을
활용한 함수입니다.</p>
<p>간단하게 다른 함수에 매개변수로 넘겨준 함수를 말합니다.
매개 변수로 넘겨 받은 함수는 일단 넘겨 받고, 때가 되면
나중에 호출(CALL BACK)한다는 것이 콜백 함수의
개념입니다.</p>
<h3 id="비동기적-프로그래밍"><strong>비동기적 프로그래밍</strong></h3>
<p>콜백함수를 사용하는 이유에는 비동기적 프로그래밍을 사용함으로써
소중한 싱글 스레드의 멈춤을 방지합니다. 즉, 블로킹을 방지하여
싱글 스레드가 논 블록킹으로 동작하게 합니다.</p>
<h3 id="비동기적-프로그래밍이-필요한-이유"><strong>비동기적 프로그래밍이 필요한 이유</strong></h3>
<h4 id="1사용자-이벤트-처리">1.사용자 이벤트 처리</h4>
<p>브라우저 화면에서 발생하는 사용자의 이벤트는 예측이 불가능합니다.
따라서 이런 화면이벤트를 관리담당하는 녀석에게 우리는 특정이벤트가 발생할 때 호출을 원하는 내용을 callback 함수에 전달하게 됩니다.</p>
<p><strong>2.네트워크 응답 처리</strong></p>
<p>화면단에서 서버에게 요청을 보냈을 때, 그 응답이 언제 올지 알 수 없습니다.
따라서 이런 서버에 대한 응답처리 등도 비동기적으로 처리해야 합니다.</p>
<p><strong>3.파일을 읽고 쓰는 등의 파일 시스템 작업</strong></p>
<p><strong>4.의도적으로 시간 지연을 사용하는 기능(알람 등)</strong></p>
<p>위와 같이 이벤트 등을 기다리는데 하나뿐인 소중한 스레드를 사용한다면, 또 서버의 응답을 기다리기 위해 하나뿐인 소중한 스레드를 사용한다면 사용자는 멈춰져 있는 화면을 보게되는 것입니다. 위와 같이 스레드의 블록킹을 야기하는 작업은 필수적으로 비동기적 프로그래밍을 해야 한다.</p>
<h3 id="예시"><strong>예시</strong></h3>
<h4 id="1settimeout">1.SETTIMEOUT</h4>
<pre><code class="language-javascript">function fn_newCallBack(){
  console.log(&quot;비동기적으로 호출되고 싶다.&quot;); 
}

console.log(&quot;-------  호출 직전 -------&quot;);

setTimeout(fn_newCallBack, 3 * 1000); // 3초 뒤 콜백 호출

console.log(&quot;-------  호출 이후 -------&quot;)

//-----  호출 직전  -----
//----- 호출이후 -----
//비동기적으로 호출되고 싶다</code></pre>
<h4 id="2-setinterval">2. SETINTERVAL</h4>
<pre><code class="language-javascript">let i = 0;
const intervalId = setInterval(function(){

  if(i === 3) return clearInterval(interbalId);

  console.log(`${i++}: 인터벌로 호출 되는 콜백입니다.`);

}
, 5 * 1000);

//0: 인터벌로 호출되는 콜백입니다.
//1: 인터벌로 호출되는 콜백입니다.
//3: 인터벌로 호출되는 콜백입니다.
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[Day04]]></title>
            <link>https://velog.io/@jong_hyun/Day04</link>
            <guid>https://velog.io/@jong_hyun/Day04</guid>
            <pubDate>Thu, 17 Mar 2022 05:53:05 GMT</pubDate>
            <description><![CDATA[<p>학원 끝나고 집에서 코딩 과제를 하는데 3시간 쯤 지나고
엄마가 사과를 한 접시 가져다 주면서 
열심히 하는 모습 보기 좋다고 해주고 나갔다. 
따뜻한 말에 몸둘 바를 몰라 과제가 끝났는 데도 
그 자리에서 30분을 더 앉아 있었다. 
따뜻한 말 한마디가 삶에 힘이 된다는 말이 맞는 것 같다. 
그리고 내일은 배도 좀 섞어서 갖다 주면 좋겠다...</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Day04(REST.API VS GRAPHQL.API)]]></title>
            <link>https://velog.io/@jong_hyun/Day04REST.API-VS-GRAPHQL.API</link>
            <guid>https://velog.io/@jong_hyun/Day04REST.API-VS-GRAPHQL.API</guid>
            <pubDate>Thu, 17 Mar 2022 05:41:34 GMT</pubDate>
            <description><![CDATA[<p>둘의 차이점을 알려면 우선 sever.api가 무엇인지 부터 알아야 합니다.</p>
<h3 id="serverapi란"><strong>server.api란,</strong></h3>
<p>적절한 요청을 하였을 때 그에 맞는 응답을 되돌려 주는 창구를 
웹을 통에 노출한 것 입니다.</p>
<p>이러한 server.api를 만드는 방법론 중 하나로 REST 라는
것이 있는 것 입니다.</p>
<h3 id="restapi란"><strong>rest.api란,</strong></h3>
<p>모든 Resource (자료, User, …) 들을 하나의 Endpoint 에 연결해놓고,
각 Endpoint 는 그 Resource 와 관련된 내용만 관리하게 하자는 방법론 입니다.</p>
<h3 id="장점"><strong>장점</strong></h3>
<ol>
<li><p>기본적으로 웹의 기존 기술과 HTTP 프로토콜을 
그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있습니다.</p>
</li>
<li><p>rest.api 메세지가 의도하는 바를 명확하게 나타내므로 의도하는 바를
 쉽게 파악할 수 있습니다.</p>
</li>
</ol>
<h3 id="단점"><strong>단점</strong></h3>
<ol>
<li><p>표준이 존재하지 않습니다.</p>
</li>
<li><p>사용할 수 있는 메소드가 4가지 밖에 없습니다.</p>
</li>
<li><p>구형의 브라우저가 아직 지원하지 못하는 부분이 존재 합니다.</p>
</li>
</ol>
<h4 id="이러한-restapi를-두고-새로운-graphqlapi-가-등장하게-된-이유는">이러한 rest.api를 두고 새로운 graphql.api 가 등장하게 된 이유는,</h4>
<p>graphql은 요청할 때 사용한 query 문에 따라 응답의 구조가 달라지기에 
필요한 것만 꺼내 쓸 수 있기 때문입니다.</p>
<p><strong>하지만 이러한 graphql에도 단점이 있는데,</strong></p>
<p>1) File 전송 등 Text 만으로 하기 힘든 내용들을 처리하기 복잡합니다.</p>
<p>2) 고정된 요청과 응답만 필요할 경우에는 Query 로 인해 요청의 크기가 RESTful API 의 경우보다 더 커집니다.</p>
<p>그렇다면 GraphQL 과 RESTful 중 어떤 것을 선택해서 사용해야하는가는
다음과 같은 기준으로 선택하면 될 것입니다.</p>
<p><strong>GraphQL</strong></p>
<ol>
<li>서로 다른 모양의 다양한 요청들에 대해 응답할 수 있어야 할 때
대부분의 요청이 CRUD(Create-Read-Update-Delete) 에 해당할 때</li>
</ol>
<p><strong>RESTful</strong></p>
<ol>
<li>HTTP 와 HTTPs 에 의한 Caching 을 잘 사용하고 싶을 때</li>
<li>File 전송 등 단순한 Text 로 처리되지 않는 요청들이 있을 때
요청의 구조가 정해져 있을 때</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[Day03]]></title>
            <link>https://velog.io/@jong_hyun/Day03</link>
            <guid>https://velog.io/@jong_hyun/Day03</guid>
            <pubDate>Wed, 16 Mar 2022 05:50:08 GMT</pubDate>
            <description><![CDATA[<p>오늘은 깃허브 문제를 해결했다.
그간 깃허브에 저장이 막힐 때마다
눈물 나오기 직전이었는데
이제 그럴 일 없다고 생각하니
웃음이 절로 나온다.</p>
<p>문제를 하나 해결하고 나니 
개발자로서 한걸음 더 다가간 것 같다...</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Day 03(DESTRUCTURING ASSIGNMENT)]]></title>
            <link>https://velog.io/@jong_hyun/Day-03DESTRUCTURING-ASSIGNMENT</link>
            <guid>https://velog.io/@jong_hyun/Day-03DESTRUCTURING-ASSIGNMENT</guid>
            <pubDate>Wed, 16 Mar 2022 05:39:18 GMT</pubDate>
            <description><![CDATA[<h3 id="구조-분해-할당이란">구조 분해 할당이란,</h3>
<p>객체 데이터의 내용을 구조 분해해서 내가 원하는 속성들만 꺼내서 
사용 할 수 있는 개념입니다.</p>
<p>필요한 부분만 꺼내서 이용할 수 있다는 점에서 변수.(키값)을 사용하는 것보다 효율적 입니다.</p>
<h3 id="예시">예시</h3>
<pre><code class="language-javascript">const id = {
    name: &quot;선종현&quot;,
    age: 25,
    email: &quot;lynx8@naver.com&quot;
}

const = { name, age, email } = id

//만약 여기서 없는 데이터를 넣고 싶다면
const = { name, age, email, address = &quot;korea&quot;} = id

//그럼 id 는
const id = {
    name: &quot;선종현&quot;,
    age: 25,
    email: &quot;lynx8@naver.com&quot;
    address: &quot;korea&quot;
}</code></pre>
<h3 id="배열데이터">배열데이터</h3>
<p>배열데이터 역시 구조분해할당을 이용할 수 있습니다.
객체 데이터의 경우 {}을 사용했다면 배열 데이터의 경우 꺼내올 때 []를 사용하고,
이름이 아닌 인덱스를 이용해 구조분해할당을 합니다.</p>
<h3 id="예시-1">예시</h3>
<pre><code class="language-javascript">const fruits = [&quot;apple&quot;, &quot;banana&quot;, &quot;cherry&quot;]
const [ a, b, c ] = fruits
console.log( a, b, c ) //apple banana cherry

/*_*(만약 구조분해를 통해 banana만 꺼내오고 싶다면,
a 없이 ,만 적어서 순서를 명확하게 해 출력하면 됩니다)_*/

const [ ,b ] = fruits
console.log(b) //banana</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[Day02]]></title>
            <link>https://velog.io/@jong_hyun/%EB%B0%B1%EC%97%94%EB%93%9Cday02-yuqigjyz</link>
            <guid>https://velog.io/@jong_hyun/%EB%B0%B1%EC%97%94%EB%93%9Cday02-yuqigjyz</guid>
            <pubDate>Tue, 15 Mar 2022 06:04:35 GMT</pubDate>
            <description><![CDATA[<p>아침에는 오자마자 알고리즘을 풀었다.
저번주에 한번 한 거지만
막힘없이 내 생각대로 컴퓨터가 움직이니
컴퓨터가 내 발아래 있는 기분이 들어 너무 좋았다.</p>
<p>하지만 그후에
어제의 과제를 선생님과 함께 리뷰하고
다른 분들은 발표도 했는데 
초라한 나의 코드와 비교해보니 
기분이 다운됬다.</p>
<p>생각도 할 겸 민트차를 
한잔 마셨는데 
숨 쉴때마다 입이 시원해지는데
기분이 다시 좋아졌다.</p>
<p>이 기분이라면 하루종일
코딩도 할 수 있을 것 같다..</p>
<p>오늘은 기분이 오르락 내리락이 심했는데
내일은 멘탈 관리에 더 힘 써 봐야 겠다...</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Day01]]></title>
            <link>https://velog.io/@jong_hyun/%EB%B0%B1%EC%97%94%EB%93%9C-day01</link>
            <guid>https://velog.io/@jong_hyun/%EB%B0%B1%EC%97%94%EB%93%9C-day01</guid>
            <pubDate>Tue, 15 Mar 2022 06:03:46 GMT</pubDate>
            <description><![CDATA[<p>오늘은 백엔드 첫 수업으로 오리엔테이션을 들었다.
그 후 점심을 먹으면서 동료 분들과 함께 
많은 이야기를 나누었다.
개발자 진로에 대해 고민이 많았는데 동료분들이 
형님으로서 많은 조언을 해주셔서 도움이 많이 되었다. </p>
<p>하지만 다들 존댓말을 써주셨는데 
그러다보니 마음 한켠에
무언가 어색한 기분이 들었다.
더욱 가까워지기 위해서 
내일 밥먹을 때는 말 편하게 하셔도
된다는 말을 슬쩍 해봐야겠다...</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Day02(TEMPLATE LITERALS)]]></title>
            <link>https://velog.io/@jong_hyun/Day02template-literals</link>
            <guid>https://velog.io/@jong_hyun/Day02template-literals</guid>
            <pubDate>Tue, 15 Mar 2022 05:40:05 GMT</pubDate>
            <description><![CDATA[<p>오늘은 template literal에 대해
써보려고 합니다.</p>
<h3 id="template-lieteral이란">TEMPLATE LIETERAL이란,</h3>
<p>우선 템플릿 리터럴은 변수를 이용해 동적으로 
문자를 생성할 수 있는 문법입니다.</p>
<p>이것이 왜 필요하냐면, 이전에는 아래와 같은 코드를 썼습니다.</p>
<pre><code class="language-javascript">var name = &quot;선종현&quot;
var age = &quot;25&quot;
var intro =&quot;이름: &quot; + name + &quot; ,&quot; + &quot;age: &quot; + age;</code></pre>
<p>이 방식은 코드를 작성하는데 시간도 오래 걸릴 뿐만 아니라
코드를 읽는 입장에서 가독성이 떨어집니다.</p>
<p>위의 코드를 template lierals로 변경한다면</p>
<pre><code class="language-javascript">let name = &quot;var name = &quot;선종현&quot;
let age = &quot;25&quot;
let intro = `이름: ${name}, age: ${age}`
_(템플릿 리터럴은 백틱 문자(` `)를 이용합니다.
  표현식을 사용할 때는 ${expreesion} 형식으로 입력합니다.)_</code></pre>
<p>뿐만 아니라 여러 줄의 문자열을 생성하기도 쉽습니다.</p>
<p>그전에는 개행하려는 줄의 끝에 \n 기호를 입력해야만 줄 바꿈이 되었습니다.</p>
<p>하지만 리터럴을 이용하면 줄 바꿈을 하고 싶은 곳에
엔터를 치면 됩니다.</p>
<p>이전의 코드와 비교해 보면 코드 입력 속도와 가독성 면에서
template literal이 우수하다는 것을 알 수 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[DAY 01(GIT)]]></title>
            <link>https://velog.io/@jong_hyun/%EB%B0%B1%EC%97%94%EB%93%9C-%EC%B2%AB-%EC%88%98%EC%97%85</link>
            <guid>https://velog.io/@jong_hyun/%EB%B0%B1%EC%97%94%EB%93%9C-%EC%B2%AB-%EC%88%98%EC%97%85</guid>
            <pubDate>Mon, 14 Mar 2022 05:21:56 GMT</pubDate>
            <description><![CDATA[<p>반갑습니다^^
백엔드에 대해 공부하고 있는 선종현 이라고 합니다.</p>
<p>오늘 블로깅 해볼 내용은 터미널을 이용하여
깃허브와 연동하는 방법에 대해 써보려고 합니다.</p>
<p>아직 터미널과 깃허브에 대해 미숙해서 깊이 있게 쓰지는 못하겠지만 
제가 아는 선에서 적어 내려가 보겠습니다.</p>
<h3 id="초기설정"><strong>&lt;초기설정&gt;</strong></h3>
<p>우선 
git config --list 를 터미널에 입력하여
기존에 설정한 초기설정의 여부를 확인합니다</p>
<p>만약 없다면,
git config --global user.name &quot;본인 id&quot; 와</p>
<p>git config --global user.email &quot;본인 email&quot;  을 입력하니다</p>
<p>그 후
git config --gloval color.ui &quot;auto&quot; 를 입력합니다.</p>
<p>여기까지 완료했다면
초기설정은 끝났습니다.
이제 깃허브에 저장해 보겠습니다.</p>
<h3 id="깃허브에-push"><strong>&lt;깃허브에 PUSH&gt;</strong></h3>
<p>순서대로</p>
<ol>
<li><p>터미널의 원하는 디렉토리에 가서 git init 입력합니다.</p>
</li>
<li><p>git add . 로 커밋할 변경사항 업데이트 합니다.</p>
</li>
<li><p>git status 로 현재 커밋할 변경사항이 제대로 유지되고있는지 확인합니다.</p>
</li>
<li><p>git commit -m &quot;원하는 제목&quot; 입력합니다</p>
</li>
<li><p>git log를 통해 commit history가 정상적으로 남았는지를 확인할 수 있습니다.</p>
</li>
<li><p>git remote add origin &#39;repsitory url&#39;을 입력합니다. </p>
</li>
<li><p>git push origin master</p>
</li>
</ol>
<p>지금까지 터미널을 이용하여 깃허브에 저장하는 법을 써봤습니다.
깃허브를 난생 처음 써봐서 아직은 많이 어색하지만 
잔디를 키위기 위해서라도 계속 반복해 봐야겠습니다.</p>
]]></description>
        </item>
    </channel>
</rss>