<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>gyeong-jin-kwak.log</title>
        <link>https://velog.io/</link>
        <description>Frontend be Fullstack</description>
        <lastBuildDate>Mon, 15 Mar 2021 13:47:39 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>gyeong-jin-kwak.log</title>
            <url>https://images.velog.io/images/gyeong-jin-kwak/profile/05ed685b-eff1-479c-868c-143b11351ad0/익명이.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. gyeong-jin-kwak.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/gyeong-jin-kwak" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[2021 03 15 월요일 TIL - 31]]></title>
            <link>https://velog.io/@gyeong-jin-kwak/2021-03-15-%EC%9B%94%EC%9A%94%EC%9D%BC-TIL-31-jpo9y5oo</link>
            <guid>https://velog.io/@gyeong-jin-kwak/2021-03-15-%EC%9B%94%EC%9A%94%EC%9D%BC-TIL-31-jpo9y5oo</guid>
            <pubDate>Mon, 15 Mar 2021 13:47:39 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/gyeong-jin-kwak/post/ccd12011-42a0-4009-8e38-1e90719ce439/velog.jpeg" alt=""></p>
<h2 id="today-i-learned">Today I Learned</h2>
<ul>
<li>React</li>
<li>NVM</li>
</ul>
<hr>
<h2 id="today-review">Today Review</h2>
<ul>
<li><p>nvm을 통해 노드 버전관리를 하려고 했다. 왜냐하면 내 프로젝트 외 다른 프로젝트를 봐야할 때가 종종 있는데 이때 node-sass 같은 경우 node의 버전을 다운그레이드 해야한다는 문구를 보았기 때문이다.</p>
</li>
<li><p>터미널을 zsh 에서 bash로 바꾸는 작업을 먼저 했다. 
<a href="https://flamingotiger.github.io/etc/etc/zsh-bash-problem/">zsh에서 bash로 터미널 변경하는 방법</a></p>
</li>
<li><p>후에도 계속 nvm은 설치되었지만 <code>command not found</code> 라는 에러 문구가 떴다. <code>source ~/.nvm/nvm.sh</code> 이 명령어로 해결할 수 있었다.</p>
</li>
<li><p>node-sass 때문에 node를 다운그레이드 하려고 시도한것이지만 허무하게도 node-sass는 <code>npm install</code>이 아닌 <code>yarn install</code>로 하니 잘되었다. 무슨일이지? 그래도 nvm setting 하나 얻어간다..ㅎ</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[2021 03 11 목요일 TIL - 30]]></title>
            <link>https://velog.io/@gyeong-jin-kwak/2021-03-11-%EB%AA%A9%EC%9A%94%EC%9D%BC-TIL-30</link>
            <guid>https://velog.io/@gyeong-jin-kwak/2021-03-11-%EB%AA%A9%EC%9A%94%EC%9D%BC-TIL-30</guid>
            <pubDate>Wed, 10 Mar 2021 18:05:33 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/gyeong-jin-kwak/post/345a2bdc-d544-484b-aaa4-c84f3794a7ec/velog.jpeg" alt=""></p>
<h2 id="today-i-learned">Today I Learned</h2>
<ul>
<li>React</li>
<li>Typescript</li>
<li>eslint/prettier</li>
</ul>
<hr>
<h2 id="today-review">Today Review</h2>
<ul>
<li><p>타입스크립트 + 리액트에 eslint + prettier를 적용했다. 적용하자마자 뽜 .. 에러가 터져나와서 적용하는데까지도 시간이 많이 걸렸는데 에러 하나씩 잡느라 힘들었다. </p>
</li>
<li><p>일단 타입스크립트 + 리액트 + eslint + prettier 세팅 과정에서 <code>yarn run prettier</code> 로 자동화는 <code>.prettierrc</code> 뒤에 확장다 <code>.json</code>을 지우면서 해결할 수 있었다.
<a href="https://flamingotiger.github.io/javascript/eslint-setup/#2-1-eslint-config-airbnb-%EB%A1%9C-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0">설치에 도움이 많이 됐던 글 링크</a></p>
</li>
<li><p>cra는 이미 airbnb 세팅이 되어있어서 <code>yarn add eslint-config-airbnb</code> 만 해주면 된다. 이걸 안하고 <code>npx install-peerdeps --dev eslint-config-airbnb</code> 를 하면서 시간이 참 많이도 갔다. </p>
</li>
<li><p>그 외에도 vscode에서 자동화 옵션들을 적용해주고 자바스크립트 별도 json파일에서 옵션을 설정해주었다. 아래와 같은 옵션이라고 할 수 있겠다. </p>
<pre><code>&quot;[jsonc]&quot;: {
  &quot;editor.defaultFormatter&quot;: &quot;esbenp.prettier-vscode&quot;
},
&quot;editor.formatOnSave&quot;: true,
&quot;eslint.alwaysShowStatus&quot;: true,
&quot;prettier.disableLanguages&quot;: [&quot;js&quot;],
&quot;files.autoSave&quot;: &quot;onFocusChange&quot;,
&quot;editor.codeActionsOnSave&quot;: {
  &quot;source.fixAll.eslint&quot;: true
},
&quot;prettier.useTabs&quot;: false,
&quot;eslint.workingDirectories&quot;: [
  { &quot;directory&quot;: &quot;./client&quot;, &quot;changeProcessCWD&quot;: true }
],
&quot;eslint.format.enable&quot;: true,
&quot;eslint.validate&quot;: [
  &quot;javascript&quot;,
  &quot;javascriptreact&quot;
],
&quot;prettier.requireConfig&quot;: true</code></pre><ul>
<li>그 다음으로 정말 타입스크립트에서 난 오류들을 잡아주었다. 불필요하게 잡아주는 옵션들에 대해서 하나씩 찾아보며 오류 처리를 무시할 수 있도록 해주었다. 예를들면 리액트 선언했을 뿐인데 뜨는 에러같은것들.. <code>&quot;no-use-before-define&quot;: &quot;off&quot;,</code> 로 처리 그 밖에 등등의 처리를 해주었다.</li>
</ul>
</li>
</ul>
<ul>
<li>오늘 오류를 하도 많이 봐서 오류에 면역력이 생길것만 같다.. 오류,, 무섭지 않다 ⭐️</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[2021 03 03 수요일 TIL - 29]]></title>
            <link>https://velog.io/@gyeong-jin-kwak/2021-03-03-%EC%88%98%EC%9A%94%EC%9D%BC-TIL-29</link>
            <guid>https://velog.io/@gyeong-jin-kwak/2021-03-03-%EC%88%98%EC%9A%94%EC%9D%BC-TIL-29</guid>
            <pubDate>Wed, 03 Mar 2021 10:27:50 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/gyeong-jin-kwak/post/1487c984-fc7b-417a-9108-6f9387b2d5a1/velog.jpeg" alt=""></p>
<h2 id="today-i-learned">Today I Learned</h2>
<ul>
<li>React<ul>
<li>node.js + m1 에러 해결기</li>
</ul>
</li>
</ul>
<hr>
<h2 id="today-review">Today Review</h2>
<ul>
<li><p>Javascript 코드리뷰가 마무리 된 뒤 다시 react 로 돌아오는 과정이다. 이전엔 잘되던 <code>yarn start</code> 와 <code>npm start</code> 뭐가 문제인지 잘되지않았다.</p>
</li>
<li><p><a href="https://stackoverflow.com/questions/66042288/nodejs-with-macos-fatal-error-in-line-0-gatsby-develop">https://stackoverflow.com/questions/66042288/nodejs-with-macos-fatal-error-in-line-0-gatsby-develop</a></p>
</li>
<li><p>해결방법은 node를 15.9.0 이상의 버전으로 업데이트 하는것이다. </p>
</li>
<li><p>homebrew를 통해서 업데이트해도 되고 sudo를 통해서 업데이트 해도 된다. 내 문제는 homebrew를 통한 업데이트는 안되고 sudo를 통한 업데이트는 된다는 것이었다. 그와중에 업데이트 된 sudo node는 &#39;installing&#39;으로 표기되지만 &#39;active&#39;는 여전시 15.4로 표기되어있는것.. 정말 갑갑했다. homebrew를 통해서 upgrade 하려고하면 로스타를 설치해야하고 .. </p>
</li>
<li><p>문제 해결 와중 애플이 원망스러워져갈무렵..</p>
</li>
<li><p>homebrew node를 지우기로 결심했다 <code>brew uninstall node</code> 역시나 한번에 되지 않았지만 친절하게 알려준 명령어로 다시 시도하니 homebrew    node가 삭제되었다. </p>
</li>
<li><p>그리고 다시 node-module을 설치하고 실행하니 되었다. 휴.. 시작한번 하기 어렵다 ^^;;</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[2021 02 18 목요일 TIL - 28]]></title>
            <link>https://velog.io/@gyeong-jin-kwak/2021-02-18-%EB%AA%A9%EC%9A%94%EC%9D%BC-TIL-28</link>
            <guid>https://velog.io/@gyeong-jin-kwak/2021-02-18-%EB%AA%A9%EC%9A%94%EC%9D%BC-TIL-28</guid>
            <pubDate>Thu, 18 Feb 2021 16:30:38 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/gyeong-jin-kwak/post/24e05534-da81-4729-8f31-cdd25d9d4603/velog.jpeg" alt=""></p>
<h2 id="today-i-learned">Today I Learned</h2>
<ul>
<li>Javascript<ul>
<li>spread</li>
</ul>
</li>
</ul>
<hr>
<h2 id="🚩where-they-are">🚩Where they are..</h2>
<ul>
<li>in private gitHub</li>
</ul>
<hr>
<h2 id="today-review">Today Review</h2>
<p><strong>수업내용</strong></p>
<ul>
<li>url endpoint 는 상수로 관리해주는 것이 좋음</li>
</ul>
<p><strong>QnA</strong>
Q_ 검색이 완료된 후 this.target.value = &#39;&#39; 처리, 하지만 다음 input 에 텍스트를 입력하면 이전에 입력했던 단어의 마지막 글자가 나와서 수동으로 지워주어야함. 어떤 키워드로 구글링을 해보면 좋을지 난해.</p>
<p>A_ 영어와 달리 한글의 경우 글자를 타이핑할 때 CompositionEvent(compositionstart, compositionupdate, compositionend)를 타는데, event listener의 callback 내부에서 onSearch를 한 뒤 값을 초기화시켜도 한글의 경우 compositionend가 되지 않았기 때문에, 마지막 글자가 남아있는 것.
현재 상태에서 재빠르게 스페이스바나 방향키를 누른 뒤, input에 값을 입력하면 남아있는 글자가 없는 것을 알 수 있음.</p>
<p>한글이 compositionend가 되려면 뒤에 whitespace(space, enter) 혹은 우측 방향키 같은 키들이 필요. 두 가지 방법이 있을 수 있음. (표준이 있거나 다른 좋은 방법이 있을 수도 있음)</p>
<ol>
<li>onSearch 이후 강제로 blur &gt; 초기화 &gt; focus</li>
<li>compositionstart와 compositionend에 flag를 두는 방법
키워드는 IME, CompositionEvent 정도로 찾아봤고, 아래 참고 링크<ul>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent">https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent</a></li>
<li><a href="https://stackoverflow.com/questions/51226598/what-is-javascripts-compositionevent-please-give-examples">https://stackoverflow.com/questions/51226598/what-is-javascripts-compositionevent-please-give-examples</a></li>
<li><a href="https://ntalbs.github.io/2015/editor-ime/">https://ntalbs.github.io/2015/editor-ime/</a></li>
</ul>
</li>
</ol>
<p><strong>Review1</strong></p>
<ul>
<li>문제 <ul>
<li>array의 includes가 기존 배열에 영향을 주지 않으므로 spread를 사용하지 않아도 됨</li>
<li>array의 concat 자체가 새로운 배열을 만들기 때문에 spread로 배열을 복사하지 않아 됨</li>
<li>keyword가 이미 존재한다면 배열을 spread로 복사하지 않아도 됨</li>
</ul>
</li>
<li>해결<ul>
<li><code>[...this.state.searchHistories]</code> -&gt; <code>this.state.searchHistories</code></li>
</ul>
</li>
</ul>
<p><strong>Review2</strong></p>
<ul>
<li>문제 <ul>
<li>굳이 변수에 <code>const searchHistories = [...this.state.searchHistories]</code> 넣을 필요 없음</li>
<li><code>this.setState({ searchResults, searchHistories })</code></li>
</ul>
</li>
<li>해결<ul>
<li><code>const searchHistories = [...this.state.searchHistories]</code> 삭제 </li>
<li><code>this.setState({ searchResults, searchHistories })</code> -&gt; <code>this.setState({ ...this.state, searchResults })</code></li>
</ul>
</li>
</ul>
<p><strong>Review3</strong></p>
<ul>
<li>문제<ul>
<li><code>filter</code> 는 새로운 배열을 생성하기 때문에 스프레드 기법이 필요 없음</li>
</ul>
</li>
<li>해결<ul>
<li><code>const nextHistories = [...this.state.searchHistories].filter((target) =&gt; target !== this.state.searchHistories[itemIndex])</code> -&gt; <code>const nextHistories = this.state.searchHistories.filter((target) =&gt; target !== this.state.searchHistories[itemIndex])</code></li>
</ul>
</li>
</ul>
<p><strong>Review4</strong></p>
<ul>
<li>문제 <ul>
<li><code>this.state</code> 가 빈배열일 경우 체크</li>
</ul>
</li>
<li>해결<ul>
<li><code>Array.isArray(this.state) &amp;&amp; this.state.length !== 0</code> 빈배열 체크하는 조건 <code>if</code>문에 추가</li>
</ul>
</li>
</ul>
<p><strong>Review5</strong></p>
<ul>
<li>문제<ul>
<li>onSearch를 한 뒤 값을 초기화시켜도 한글의 경우 compositionend가 되지 않았기 때문에, 마지막 글자가 남아있는 현상 개선</li>
</ul>
</li>
<li>해결<pre><code>this.target.blur()
this.target.value = &#39;&#39;
this.target.focus()</code></pre></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[2021 02 17 수요일 TIL - 27]]></title>
            <link>https://velog.io/@gyeong-jin-kwak/2021-02-17-%EC%88%98%EC%9A%94%EC%9D%BC-TIL-27</link>
            <guid>https://velog.io/@gyeong-jin-kwak/2021-02-17-%EC%88%98%EC%9A%94%EC%9D%BC-TIL-27</guid>
            <pubDate>Wed, 17 Feb 2021 08:00:55 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/gyeong-jin-kwak/post/54231d91-7d26-4091-8477-c12c6eec0e38/velog.jpeg" alt=""></p>
<h2 id="today-i-learned">Today I Learned</h2>
<ul>
<li>Javascript<ul>
<li>debounce</li>
</ul>
</li>
</ul>
<hr>
<h2 id="🚩where-they-are">🚩Where they are..</h2>
<ul>
<li>in private gitHub</li>
</ul>
<hr>
<h2 id="today-review">Today Review</h2>
<ul>
<li>움짤 검색기<ul>
<li>키워드를 검색하면 키워드의 api를 불러와 검색된 단어의 움짤을 보여준다. </li>
<li>검색한 단어들은 히스토리 내역에 쌓이게 되고 히스토리 내역에 있는 아이템을 검색하면 다시 이동할 수 있다. <br/><br/></li>
</ul>
</li>
</ul>
<h3 id="추가기능-및-개선사항">추가기능 및 개선사항</h3>
<ul>
<li>중복 키워드는 히스토리에 쌓이지 않게함/ <code>if(){}</code>의 <code>{}</code> 블록 스코프 때문에 고민을 많이했다. 검색어가 패치되는 부분과 히스토리 내역이 쌓이는 부분이 함께 있었는데 if문 조건은 히스토리 내역이 쌓이는 부분만 적용하고 싶었기 때문. 그러면 if문 안의 변수 접근이 되지 않기 때문에 애를 먹었지만 결국 함수화해서 <code>return</code> 해서 사용했다.</li>
<li>히스토리 아이템 삭제 기능을 구현/ <code>filter()</code> 을 사용해서 <code>imutable</code> 하게 구현</li>
<li>버그 개선/ <code>input</code>의 이벤트를 <code>keyup</code> 으로 받아서 키워드를 api fetch 해주고 있었는데 영어일 경우 문제는 없지만 한글일 경우에는 문제가 생긴다. 다음 키워드를 쉽게 받기 위해서 <code>e.target.value=&#39;&#39;</code> 처리를 해놓았는데 이 이후에도 한글 버퍼링 때문에 이전 단어의 마지막 글자가 남아있는것 .. 결국 이벤트를 <code>submit</code> 으로 바꿔서 해결했다. 이 경우 <code>debounce()</code> 가 필요없긴 할것 같다. 엔터키로 키워드를 보내주기 때문..!</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[2021 02 03 수요일 TIL - 26]]></title>
            <link>https://velog.io/@gyeong-jin-kwak/2021-02-03-%EC%88%98%EC%9A%94%EC%9D%BC-TIL-26</link>
            <guid>https://velog.io/@gyeong-jin-kwak/2021-02-03-%EC%88%98%EC%9A%94%EC%9D%BC-TIL-26</guid>
            <pubDate>Wed, 03 Feb 2021 13:43:44 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/gyeong-jin-kwak/post/ba46ceb6-0288-4cee-b5ce-42313340d549/velog.jpeg" alt=""></p>
<h2 id="today-i-learned">Today I Learned</h2>
<ul>
<li>Javascript<ul>
<li>mutable, immutable array</li>
<li>event delegate</li>
</ul>
</li>
</ul>
<hr>
<h2 id="🚩where-they-are">🚩Where they are..</h2>
<ul>
<li>in private gitHub</li>
</ul>
<hr>
<h2 id="today-review">Today Review</h2>
<ul>
<li><p>기능구현은 완료해두었는데 코드리뷰를 받고 미쳐 신경쓰지 못한부분을 캐치하게 되었다. <code>mutable</code> array 와 <code>immutable</code> array 부분이다. 기존에 모두 삭제하는 기능을 <code>splice()</code> 함수를 사용해서 만들어두었는데 이 함수는 <code>mutable</code> 함수다. 그리하여 이 부분을 <code>setState([])</code> 빈배열만으로 결과값을 가져오게 되었다. </p>
</li>
<li><p>위와 같은 맥락으로 item별로 삭제하는 기능 또한 <code>splice()</code> 함수를 사용해서 구현했었다. 이를 <code>filter()</code>을 사용해서 새로운 배열을 만들어내어 immutable한 구조로 수정했다. </p>
</li>
<li><p>제일 난감했던 부분은 제일 쉬울것 같은 toggle 기능이었다. array 안에 <code>isCompleted</code>를 어떻게 새로운 배열로 클릭한 객체만 수정해서 배열로 넘길수 있을까.. 고민을 했다. 결과적으로 <code>map()</code>에 조건문을 사용해서 immutable한 배열을 만들어냈다.</p>
</li>
<li><p>event delegate 개념에 대해서 보다 정확하게 이해할수있었다. </p>
</li>
<li><p>잘하는 사람들의 코드를 보면 닮고싶다 ㅎㅎ 비록 그 사람은 .. 아.. 망코드네 라고 생각하더라도 어떻게 생각하는지 코드에 습관이 묻어있기 때문에 나 또한 그런 프로들의 습관을 하나씩 닮아가고싶다.</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[2021 01 31 일 TIL - 25]]></title>
            <link>https://velog.io/@gyeong-jin-kwak/2021-01-31-%EC%9D%BC-TIL-25</link>
            <guid>https://velog.io/@gyeong-jin-kwak/2021-01-31-%EC%9D%BC-TIL-25</guid>
            <pubDate>Mon, 01 Feb 2021 08:01:00 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/gyeong-jin-kwak/post/fd7d9bf5-b620-4ef4-89b6-0ffe91e92fe7/KakaoTalk_Photo_2021-02-01-16-23-17.jpeg" alt=""></p>
<h2 id="today-i-learned">Today I Learned</h2>
<ul>
<li>Javascript<ul>
<li>LocalStorage</li>
</ul>
</li>
</ul>
<hr>
<h2 id="🚩where-they-are">🚩Where they are..</h2>
<ul>
<li>in private gitHub</li>
</ul>
<hr>
<h2 id="today-review">Today Review</h2>
<pre><code>export const getItem = (key, defaultValue) =&gt; {
  try {
    const storedItem = window.localStorage.getItem(key)
    return storedItem ? JSON.parse(storedItem) : defaultValue
  } catch (e) {
    console.log(e.message)
    return defaultValue
  }
}

export const setItem = (key, value) =&gt; {
  try {
    window.localStorage.setItem(key, JSON.stringify(value))
  } catch (e) {
    console.log(e.message)
  }
}</code></pre><ul>
<li><p>혼자 무언가 만들때 아쉬웠던 점은 구현되게 만들었을때 사실상 서버가 없어서 기능을 온전하게 하는 페이지를 만들지 못했다는 것이다. 예전에 친구들과 여행 계획을 세웠을 때 계획차 재미차 웹을 만들었는데 비용관리 프로그램을 만들다가 localStorage를 쓰려고 했던 기억이 있다. 그리고 이렇게 본격적으로 사용해본 경험은 이번이 처음..!!</p>
</li>
<li><p><code>key</code> 값을 사용할 수 있었는지 이번 과제를 진행하며 처음 알게되었다. 앞으로 나의 토이 프로젝트에 유용하게 써먹어보아야겠다.</p>
</li>
<li><p>&#39;custom event&#39;를 만들어보았다. 연습차 과제에 사용하라고 하셨던것 같은데 아직 그 목적과 쓰임에 부합하는 느낌이 딱 오지는 않는다. </p>
</li>
<li><p>스코프에 대해서 공부했다. <code>map(()=&gt;())</code> 과 <code>map(()=&gt;{})</code>의 차이를 정확히 알기위해서였다. 후자는 블록스코프를 생성하며 전자는 값을 바로 반환단다. </p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[2021 01 30 토 TIL - 24]]></title>
            <link>https://velog.io/@gyeong-jin-kwak/2021-01-30-%ED%86%A0-TIL-24</link>
            <guid>https://velog.io/@gyeong-jin-kwak/2021-01-30-%ED%86%A0-TIL-24</guid>
            <pubDate>Mon, 01 Feb 2021 07:47:05 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/gyeong-jin-kwak/post/3f591152-e857-45e6-95ad-b8e643753414/KakaoTalk_Photo_2021-02-01-16-23-17.jpeg" alt=""></p>
<h2 id="today-i-learned">Today I Learned</h2>
<ul>
<li>Javascript</li>
</ul>
<hr>
<h2 id="🚩where-they-are">🚩Where they are..</h2>
<ul>
<li>in private gitHub</li>
</ul>
<hr>
<h2 id="today-review">Today Review</h2>
<ul>
<li>초반에 아래 코드가 이해가 되지 않아 사용하지 않았고 <code>TodoList.setState(nextState)</code>를 사용했다. 이렇게 사용한 후에야 아래 코드가 이해가 되어 다시 수정해두었다.<pre><code>setState = (nextState) =&gt; {
  this.state = nextState
  setItem(TODOLIST_KEY, nextState)
  this.components.forEach((component) =&gt; {
    component.setState &amp;&amp; component.setState(nextState)
  })
}</code></pre></li>
<li><code>TodoList.js</code>에서 <code>toggleTodoItem</code>과 <code>removeTodoItem</code>을 구현할때 클릭 아이템이 클릭의 개수에 따라 같은 오브젝트가 1개 -&gt; 2개 -&gt; 4개 -&gt; 8개로 늘어나는 오류가 있었다. 알고보니 <code>setState()</code> 안에 <code>setState()</code>를 사용하여 생겨난 결과였습니다. 수정후 정상작동했다.</li>
<li><code>TodoInput.js</code>에서 <code>&lt;input type=&#39;text&#39; /&gt;</code>에 엔터키와 클릭 이벤트를 동시에 적용시키기위해 <code>&lt;form&gt;&lt;/form&gt;</code>태그를 생성하여 <code>addEventListener(&#39;submit&#39;, () =&gt; {})</code>을 사용했다. 이 과정에서 실수로 <code>remove all</code> 버튼도 <code>form</code> 태그 안으로 넣어버려 배열을 모두 지워도 <code>remove all</code> 클릭시 <code>submit</code>이벤트가 동작하여 아래 코드가 동작되어 삭제버튼 하나가 보이게 되었다. 마크업 구조를 바로잡고 css로 스타일을 수정했다.<pre><code>e.preventDefault()
let inputValue = this.$addItemInput.value
this.addTodoItem(inputValue)
this.$addItemInput.value = &#39;&#39;</code></pre></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[2021 01 29 금 TIL - 25]]></title>
            <link>https://velog.io/@gyeong-jin-kwak/2021-01-29-%EA%B8%88-TIL-25</link>
            <guid>https://velog.io/@gyeong-jin-kwak/2021-01-29-%EA%B8%88-TIL-25</guid>
            <pubDate>Mon, 01 Feb 2021 07:41:32 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/gyeong-jin-kwak/post/e0f93e37-f80b-41db-a9d2-0a660ba1150f/KakaoTalk_Photo_2021-02-01-16-23-17.jpeg" alt=""></p>
<h2 id="today-i-learned">Today I Learned</h2>
<ul>
<li>Javascript</li>
</ul>
<hr>
<h2 id="🚩where-they-are">🚩Where they are..</h2>
<ul>
<li>in private gitHub</li>
</ul>
<hr>
<h2 id="today-review">Today Review</h2>
<ul>
<li>실무의 구조에 대해서 익히는 기회였다. </li>
<li>파일을 분리하고 파라미터로 셀렉터를 전달하여 각 컴포넌트에서 받도록 해주었다.</li>
<li>과제를 진행하면서 <code>setState()</code> 함수를 설정해준 이유를 더 공감하게되었다.</li>
<li><code>App</code>에서 각 컴포넌트를 관리하도록 하고 또 그 컴포넌트 안에서 <code>setState()</code>, <code>render()</code>를 구조화시켜 과제를 진행했다. </li>
<li>Javascript의 비동기 동작 방식에 대한 공부가 진행되었다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[2021 01 27 수 TIL - 24]]></title>
            <link>https://velog.io/@gyeong-jin-kwak/2021-01-27-%EC%88%98-TIL-24</link>
            <guid>https://velog.io/@gyeong-jin-kwak/2021-01-27-%EC%88%98-TIL-24</guid>
            <pubDate>Mon, 01 Feb 2021 07:35:24 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/gyeong-jin-kwak/post/fe72cad5-8814-4ce5-ba18-de759084f0b6/KakaoTalk_Photo_2021-02-01-16-23-17.jpeg" alt=""></p>
<h2 id="today-i-learned">Today I Learned</h2>
<ul>
<li>Next.js</li>
<li>Redux</li>
</ul>
<hr>
<h2 id="🚩where-they-are">🚩Where they are..</h2>
<ul>
<li><a href="https://github.com/gyeong-jin-kwak/react-node-sns">React SNS in gitHub</a></li>
</ul>
<hr>
<h2 id="today-review">Today Review</h2>
<ul>
<li>redux 내용 계속 진행중</li>
<li>next Redux wrapper</li>
<li>front &gt; store 폴더 생성 &gt; configureStore.js 파일 생성</li>
<li>npm i redux</li>
<li>npm i next-redux-wrapper --legacy-peer-deps</li>
<li>store &gt; app.js 설정 (redux 처럼 provider를 감싸주진 않는다)</li>
<li>front &gt; reducers 폴더 생성 &gt; index.js 파일 생성<pre><code>intialState
action
reducer</code></pre></li>
<li>npm i react-redux</li>
<li>react-redux 의 useSelector (부모) 참고_ AppLayout.js</li>
<li>react-redux 의 useDispatch (자식 - 하위컴포넌트) 참고_ * * UserProfile.js</li>
<li>npm install redux-devtools-extension</li>
<li>store &gt; configureStore.js</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[2021 01 26 화 TIL - 23]]></title>
            <link>https://velog.io/@gyeong-jin-kwak/2021-01-26-%ED%99%94-TIL-23</link>
            <guid>https://velog.io/@gyeong-jin-kwak/2021-01-26-%ED%99%94-TIL-23</guid>
            <pubDate>Tue, 26 Jan 2021 14:11:23 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/gyeong-jin-kwak/post/e846375b-9da1-49e0-b73a-08bab783ca19/KakaoTalk_Photo_2021-02-01-16-23-17.jpeg" alt=""></p>
<h2 id="today-i-learned">Today I Learned</h2>
<ul>
<li>Next</li>
<li>antd</li>
</ul>
<hr>
<h2 id="🚩where-they-are">🚩Where they are..</h2>
<ul>
<li><a href="https://github.com/gyeong-jin-kwak/react-node-sns">react-sns in gitHub</a></li>
</ul>
<hr>
<h2 id="today-review">Today Review</h2>
<ul>
<li><code>next-redux-wrapper</code>를 설치해서 리덕스할 준비중</li>
<li>설치가 제대로 되지 않을땐 <code>--legacy-peer-deps</code> 뒤에 붙이기</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[2021 01 25 월 TIL - 22]]></title>
            <link>https://velog.io/@gyeong-jin-kwak/2021-01-25-%EC%9B%94-TIL-22</link>
            <guid>https://velog.io/@gyeong-jin-kwak/2021-01-25-%EC%9B%94-TIL-22</guid>
            <pubDate>Tue, 26 Jan 2021 14:01:56 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/gyeong-jin-kwak/post/577c123b-55d1-4c8b-9ce4-402fa16bb010/KakaoTalk_Photo_2021-02-01-16-23-17.jpeg" alt=""></p>
<h2 id="today-i-learned">Today I Learned</h2>
<ul>
<li>Javascript</li>
</ul>
<hr>
<h2 id="🚩where-they-are">🚩Where they are..</h2>
<ul>
<li>ToDo List in my private gitHub repo</li>
</ul>
<hr>
<h2 id="today-review">Today Review</h2>
<h4 id="review1">Review1</h4>
<ul>
<li>문제 : head 태그에서 부르게 되면 main.js가 불리고 로드되는 동안 렌더링이 블로킹</li>
<li>해결방법<ol>
<li>script의 위치변경</li>
<li>script 태그에 async 속성 추가</li>
</ol>
</li>
<li>해결 : script에 async 속성 추가</li>
<li>참고문헌 <a href="https://blog.asamaru.net/2017/05/04/script-async-defer/">async와 defer의 차이</a></li>
</ul>
<h4 id="review2">Review2</h4>
<ul>
<li>문제 : EOL이 없으면 문서가 끝나지 않은것으로 간주</li>
<li>모든 파일에 EOL( End of Line ) 추가</li>
<li>해결방법<ul>
<li>비어있는 한줄 생성</li>
</ul>
</li>
<li>해결 : enter</li>
</ul>
<h4 id="review3">Review3</h4>
<ul>
<li>문제 : 반복문 map은 immutable array를 만들때 사용함</li>
<li>해결방법<ul>
<li>forEach를 사용</li>
<li>some을 사용</li>
</ul>
</li>
<li>해결 : map() -&gt; some()</li>
<li>참고문헌 <a href="https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/some">some mdn</a><ul>
<li><code>some()</code>은 배열 안의 어떤 요소라도 주어진 판별 함수를 통과하는지 테스트</li>
</ul>
</li>
</ul>
<h4 id="review4">Review4</h4>
<ul>
<li>문제 : 렌더링, 리렌더링 될때마다 DOM Search가 되는 현상</li>
<li>해결방법 <ul>
<li>변수 <code>querySelector(&#39;#app&#39;)</code>, <code>createElement(&#39;div&#39;)</code>를 <code>render()</code> 밖으로 이동</li>
</ul>
</li>
<li>해결 : 변수들을 <code>constructor{}</code> 안으로 이동</li>
</ul>
<h4 id="review5">Review5</h4>
<ul>
<li>문제 : innerHTML을 여러번 사용해서 실행시 reflow(리렌더링)이 일어나는 현상 </li>
<li>해결방법<ul>
<li>innerHTML은 한번만 사용<ol>
<li>변수를 만들어서 변수에 넣어준 후에 innerHTML() 사용 </li>
<li><code>map()</code> 함수에 <code>.join()</code> 사용</li>
</ol>
</li>
</ul>
</li>
<li>해결 : 제목과 컨텐츠 변수를 선언해서 마지막에 innerHTML을 한번만 사용</li>
</ul>
<h4 id="review6">Review6</h4>
<ul>
<li>문제 : 인스턴스화 할 때에도 setState를 사용</li>
<li>해결방법 <ul>
<li>인스턴스화 할 때 선언하면 <code>render()</code>와 <code>setState()</code> 한번에 실행되도록 변경</li>
</ul>
</li>
<li>해결 : <code>constructor(){}</code> 파라미터에 <code>nextData</code>를 인자로 주어 인스턴스에서 <code>setState()</code>를 생략할 수 있도록 변경</li>
</ul>
<h4 id="추가-변경사항">추가 변경사항</h4>
<ul>
<li>메세지를 상수로 분리</li>
<li>변수명 구체적으로 변경 ( data -&gt; listData, container -&gt; listBox )</li>
<li>prettier 적용</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[2021 01 22 금 TIL - 21]]></title>
            <link>https://velog.io/@gyeong-jin-kwak/2021-01-22-%EA%B8%88-TIL-21</link>
            <guid>https://velog.io/@gyeong-jin-kwak/2021-01-22-%EA%B8%88-TIL-21</guid>
            <pubDate>Sat, 23 Jan 2021 03:43:42 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/gyeong-jin-kwak/post/80281ac3-2da5-4f32-97fc-7b53c6c5cbf3/KakaoTalk_Photo_2021-02-01-16-23-17.jpeg" alt=""></p>
<h2 id="today-i-learned">Today I Learned</h2>
<ul>
<li>React</li>
<li>SVG</li>
<li>CSS flex/grid</li>
</ul>
<hr>
<h2 id="🚩where-they-are">🚩Where they are..</h2>
<ul>
<li><a href="https://github.com/gyeong-jin-kwak/react-movie">React Movie Code in gitHub</a></li>
<li><a href="https://github.com/gyeong-jin-kwak/svg">SVG Code in gitHub</a></li>
<li><a href="https://github.com/gyeong-jin-kwak/flex-grid">flex-grid Code in gitHub</a></li>
</ul>
<hr>
<h2 id="today-review">Today Review</h2>
<ul>
<li><p>리액트에서 또 파일업로드의 문제가 있었다. 다행이도 전에 한번 겪었던 문제라 <code>eject run</code> 은 쉽게 할 수 있었지만 이번에도 결코 쉽게 해결되진 않았어서 따로 나의 티스토리 블로그에 문제 해결방법을 정리해두었다. 
<a href="https://worker-k.tistory.com/entry/React-background-image-%EB%A1%9C%EB%93%9C-%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0-urlobject-Module">react 파일로드 해결방법</a></p>
</li>
<li><p>grid는 아직 container에 적용할수있는 속성들에 대해서 공부중이다. <code>grid-templates-columns</code> 와 <code>grid-templates-rows</code> 그리고 신기하게 순수 css지만 그안에 함수를 사용할 수 있다. <code>repeat()</code> 함수와 <code>auto-fill</code> <code>auto-fit</code> <code>minmax()</code> 함수</p>
</li>
<li><p>svg 파일에 색을 변경하고 싶다면 <code>background-color</code>나 <code>color</code> 가 아닌 <code>fill</code>을 사용한다. </p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[2021 01 21 목 TIL - 20]]></title>
            <link>https://velog.io/@gyeong-jin-kwak/2021-01-21-%EB%AA%A9-TIL-20</link>
            <guid>https://velog.io/@gyeong-jin-kwak/2021-01-21-%EB%AA%A9-TIL-20</guid>
            <pubDate>Sat, 23 Jan 2021 03:34:51 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/gyeong-jin-kwak/post/c0b18144-b185-467e-ac37-751c8ae3eb28/KakaoTalk_Photo_2021-02-01-16-23-17.jpeg" alt="">
<img src="https://images.velog.io/images/gyeong-jin-kwak/post/bc178f9a-b0e0-4364-af80-c56a0bef3ac0/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-01-23%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2012.04.54.png" alt=""></p>
<h2 id="today-i-learned">Today I Learned</h2>
<ul>
<li>Javascript</li>
</ul>
<hr>
<h2 id="🚩where-they-are">🚩Where they are..</h2>
<ul>
<li>Private Git Repository</li>
</ul>
<hr>
<h2 id="today-review">Today Review</h2>
<ul>
<li>class 문법을 접할수 있는 기회였다. </li>
<li>하루종일 고민하면서 스스로 문제해결 해보는 시간이었다. js 파일을 <code>type=module</code> 로 import 해주었던것 <code>constructor</code> 의 유무의 차이 그리고 <code>this.id = id</code> 에서의 <code>this</code> 가 가리키는것 등등 여러 방면으로 생각해보게된 시간이었다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[2021 01 20 수 TIL - 19]]></title>
            <link>https://velog.io/@gyeong-jin-kwak/2021-01-20-%EC%88%98-TIL-19</link>
            <guid>https://velog.io/@gyeong-jin-kwak/2021-01-20-%EC%88%98-TIL-19</guid>
            <pubDate>Wed, 20 Jan 2021 16:25:07 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/gyeong-jin-kwak/post/464ec67b-2942-4131-b56d-c80b8e3ad477/KakaoTalk_Photo_2021-02-01-16-23-17.jpeg" alt="">
<img src="https://images.velog.io/images/gyeong-jin-kwak/post/376352c1-b956-40e2-9c8d-b23a4a136054/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-01-21%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%201.11.57.png" alt=""></p>
<h2 id="today-i-learned">Today I Learned</h2>
<ul>
<li>React</li>
<li>Javascript</li>
</ul>
<hr>
<h2 id="🚩where-they-are">🚩Where they are..</h2>
<p><a href="https://github.com/gyeong-jin-kwak/react-movie">react-movie in gitHub</a></p>
<hr>
<h2 id="today-review">Today Review</h2>
<ul>
<li><p>어제 한참을 헤매던 그 문제를 오늘에서야 해결했다. 기존 문법들을 hook으로 바꾸면서 진행중인데 <code>uesEffect</code> 를 사용함과 동시에 비동기 함수를 처리하기 위해 <code>try{}catch{}finally{}</code> 를 사용했다. 라이프사이클 문제라고 생각해서 검색 또한 그 방향 위주로 했다. 그렇지만 이게 무슨일.. 그저 다른 컴포넌트에 <code>return()</code>을 잘해주지 않아 발생했던 문제였다. <code>{}</code> 여기에 리턴할 컴포넌트를 넣어두었던것... 느낀점은 ... &#39;오류 콘솔을 제대로 읽자!!&#39;</p>
</li>
<li><p>Javascript 테스트 문제중 한문제의 의도를 잘못 파악해서 엉뚱한 답변을 해두었다. 클로저를 사용해서 해결해야 하는 문제를 혼자 함수를 바꾸고 난리가 났다. 한번 더 문제를 확인하고 정확한 의도 및 개념을 파악해두어야겠다. </p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[2021 01 19 화 TIL - 18]]></title>
            <link>https://velog.io/@gyeong-jin-kwak/2021-01-19-%ED%99%94-TIL-18</link>
            <guid>https://velog.io/@gyeong-jin-kwak/2021-01-19-%ED%99%94-TIL-18</guid>
            <pubDate>Wed, 20 Jan 2021 16:16:01 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/gyeong-jin-kwak/post/7168a708-1bd1-405e-b558-ade0ee99e75e/KakaoTalk_Photo_2021-02-01-16-23-17.jpeg" alt="">
<img src="https://images.velog.io/images/gyeong-jin-kwak/post/dee84925-11ec-4434-88e8-ecb9dd5faae4/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-01-21%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%201.11.57.png" alt=""></p>
<h2 id="today-i-learned">Today I Learned</h2>
<ul>
<li>React</li>
</ul>
<hr>
<h2 id="🚩where-they-are">🚩Where they are..</h2>
<p><a href="https://github.com/gyeong-jin-kwak/react-movie">react-movie in gitHub</a></p>
<hr>
<h2 id="today-review">Today Review</h2>
<ul>
<li>오류 때문에 거의 4시간 가까이 잡아먹었다. 전체적인 리액트 문법을 hook으로 바꿔서 진행중인데 비동기 함수에서 막혔다. <code>throw Error()</code> 로 에러 화면을 확인하려 했는데 잘되지 않은것. <code>useEffect</code> 와 비동기 함수를 같이 사용해서 그런건줄 알고 얼마나 검색을 했던지.. 해결은 그 다음날에서야 가능했다... to be continue..</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[2021 01 18 월 TIL - 17]]></title>
            <link>https://velog.io/@gyeong-jin-kwak/2021-01-18-%EC%9B%94-TIL-17</link>
            <guid>https://velog.io/@gyeong-jin-kwak/2021-01-18-%EC%9B%94-TIL-17</guid>
            <pubDate>Mon, 18 Jan 2021 15:41:34 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/gyeong-jin-kwak/post/f986e941-0f40-44af-a948-e2f29bd4c977/KakaoTalk_Photo_2021-02-01-16-23-17.jpeg" alt="">
<img src="https://images.velog.io/images/gyeong-jin-kwak/post/909b5c18-609b-48d6-a19d-5a448c9a973f/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-01-19%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%2012.26.39.jpg" alt=""></p>
<h2 id="today-i-learned">Today I Learned</h2>
<ul>
<li>Node.js</li>
<li>flex/grid</li>
<li>svg</li>
</ul>
<hr>
<h2 id="🚩where-they-are">🚩Where they are..</h2>
<ul>
<li><a href="https://github.com/gyeong-jin-kwak/node">Node in gitHub</a></li>
<li><a href="https://github.com/gyeong-jin-kwak/flex-grid">flex-grid in gitHub</a></li>
<li><a href="https://github.com/gyeong-jin-kwak/svg">svg in gitHub</a></li>
<li><a href="https://github.com/gyeong-jin-kwak/interaction">interaction in gitHub</a></li>
</ul>
<hr>
<h2 id="today-review">Today Review</h2>
<ul>
<li><p>오랜만에 node를 보니 분석하는 시간이 조금 더 걸린듯 하다. </p>
</li>
<li><p>flex는 업무에서 많이 사용했었는데 grid는 아직 한번도 사용해보지 못했다. flex를 사용했다고 해도 내가 필요한것들만 사용했던 터라 이번 기회에 자세히 익혀놓으려 한다.</p>
</li>
<li><p>svg의 스타일의 절대적 크기와 viewBox의 상대적인 크기를 잘기억해두어야 할 것 같다. 앞으로 구현하게 될 것들이 기대된다.</p>
</li>
<li><p>항상 욕심은 많고 시간이 생각보다 많이 들어간다. 효율적으로 움직이는 방법을 생각해보아야겠다.</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[2021 01 15 금 TIL - 16]]></title>
            <link>https://velog.io/@gyeong-jin-kwak/2021-01-15-%EA%B8%88-TIL-16</link>
            <guid>https://velog.io/@gyeong-jin-kwak/2021-01-15-%EA%B8%88-TIL-16</guid>
            <pubDate>Fri, 15 Jan 2021 16:46:42 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/gyeong-jin-kwak/post/7a53057d-7e84-4f59-a303-8297853d1037/KakaoTalk_Photo_2021-02-01-16-23-17.jpeg" alt=""></p>
<h2 id="today-i-learned">Today I Learned</h2>
<ul>
<li>DOM</li>
<li>Javascript</li>
</ul>
<hr>
<h2 id="🚩where-they-are">🚩Where they are..</h2>
<ul>
<li>In My Note &amp; My Privite Notion
<img src="https://images.velog.io/images/gyeong-jin-kwak/post/2601ac01-5107-46b1-a5d4-9be4a425babb/Untitled%202.png" alt=""></li>
</ul>
<hr>
<h2 id="today-review">Today Review</h2>
<ul>
<li>문서가 왜이리 안읽히는지.. 소리내서도 읽어도고 나중엔 정리하면서 읽으니 이해가 가는중이다. DOM 에 대한 이해가 이전보다 명확해졌다. 이전에는 DOM이라 하면 막연하게 마크업, html 이 떠올랐는데 그저 html이 아닌 이유를 알게 되었다. 비동기 처리에 대해서도 보다 더 확연하게 알 수 있었다. 계속 정리해나가야지..</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[2021 01 14 목 TIL - 15]]></title>
            <link>https://velog.io/@gyeong-jin-kwak/2021-01-14-%EB%AA%A9-TIL-15</link>
            <guid>https://velog.io/@gyeong-jin-kwak/2021-01-14-%EB%AA%A9-TIL-15</guid>
            <pubDate>Fri, 15 Jan 2021 16:28:46 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/gyeong-jin-kwak/post/f7672f2f-a4e8-46bf-837a-78bbf647055c/KakaoTalk_Photo_2021-02-01-16-23-17.jpeg" alt="">
<img src="https://images.velog.io/images/gyeong-jin-kwak/post/abc978d1-84d0-476d-a3ba-91bc04889252/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-01-16%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%201.10.50.jpg" alt=""></p>
<h2 id="today-i-learned">Today I Learned</h2>
<ul>
<li>React</li>
<li>Next.js</li>
<li>ANT Design</li>
<li>CSS</li>
</ul>
<hr>
<h2 id="🚩where-they-are">🚩Where they are..</h2>
<ul>
<li>react-movie: gitHub
<a href="https://github.com/gyeong-jin-kwak/react-movie">react-movie in gitHub</a></li>
<li>react-node-sns: gitHub
<a href="https://github.com/gyeong-jin-kwak/react-node-sns">react-node-sns in gitHub</a></li>
<li>interaction: gitHub
<a href="https://github.com/gyeong-jin-kwak/interaction">interaction in gitHub</a></li>
</ul>
<hr>
<h2 id="today-review">Today Review</h2>
<ul>
<li><p>react-movie es6 로 바꾸면서 무리없이 진행중이다. react에 typescript 적용하는 부분에 대해서 알고싶다.</p>
</li>
<li><p>react-node-sns는 ant design로 스타일 입히는 작업을 진행중인데 bootstrap 보다 뭔가 부가적인 기능이 많은 느낌이다. 물론 내가 bootstrap에 대해서 자세히 몰라서 그렇게 느끼는것일 수도 있다. </p>
</li>
<li><p>interaction에 대해서 공부중이다. 알고있다고 생각한 부분에 대해서 모르고 있었음을 깨닳았다. 동시에 flex/grid, svg 에 대해서도 욕심이 났다. 실행력이 좋아야할텐데..ㅎㅎ</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[2021 01 13 수 TIL - 14]]></title>
            <link>https://velog.io/@gyeong-jin-kwak/2021-01-13-%EC%88%98-TIL-14</link>
            <guid>https://velog.io/@gyeong-jin-kwak/2021-01-13-%EC%88%98-TIL-14</guid>
            <pubDate>Wed, 13 Jan 2021 13:25:10 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/gyeong-jin-kwak/post/256117ab-ab64-4d46-adcd-5b1f09e73f4b/KakaoTalk_Photo_2021-02-01-16-23-17.jpeg" alt="">
<img src="https://images.velog.io/images/gyeong-jin-kwak/post/337f64bb-68b5-463e-8f21-b66965c3dfb0/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-01-13%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2010.21.27.png" alt=""></p>
<h2 id="today-i-learned">Today I Learned</h2>
<ul>
<li>React</li>
<li>Javascript</li>
</ul>
<hr>
<h2 id="🚩where-they-are">🚩Where they are..</h2>
<ul>
<li>react-movie : gitHub
<a href="https://github.com/gyeong-jin-kwak/react-movie">react-movie in gitHub</a></li>
</ul>
<hr>
<h2 id="today-review">Today Review</h2>
<ul>
<li>hook으로 바꾸며 여전히 진행중이다. 걱정이 컸는데 생각보다 따라갈만해서 해보는 중이다. 그동안 겁먹었던 데이터바인딩과 api 연결에 점점 친숙해지고 있다. <code>axios</code> <code>create()</code> <code>async()</code> <code>await</code> 일련의 과정이 익숙해졌다. </li>
</ul>
]]></description>
        </item>
    </channel>
</rss>