<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>art-it.log</title>
        <link>https://velog.io/</link>
        <description>좌충우돌 개발 일기</description>
        <lastBuildDate>Sun, 23 Jan 2022 14:06:50 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>art-it.log</title>
            <url>https://images.velog.io/images/art-it/profile/e96b165a-5f5f-42a3-9f26-8a79bd3b8ed3/png-transparent-snoopy-illustration-snoopy-joe-cool-charlie-brown-wood-drawing-cartoon-wearing-sunglasses-snoop-puppy-cartoon-character-animals-hand.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. art-it.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/art-it" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[2022.01.23]]></title>
            <link>https://velog.io/@art-it/2022.01.23</link>
            <guid>https://velog.io/@art-it/2022.01.23</guid>
            <pubDate>Sun, 23 Jan 2022 14:06:50 GMT</pubDate>
            <description><![CDATA[<h2 id="fact">fact</h2>
<ul>
<li>늦잠을 잤다.</li>
<li>식물들 물을 갈아주었다.</li>
<li>빨래를 돌렸다</li>
<li>산책을 다녀왔다.</li>
<li>반응형 포트폴리오 사이트를 일부 개발했다.</li>
</ul>
<h2 id="feeling">feeling</h2>
<ul>
<li>몸살기운이 남아있어서 하루종일 처진 기분이였다.</li>
<li>그래도 해야할일들을 몇가지 끝내서 기분이 나아졌다.</li>
</ul>
<h2 id="findings">Findings</h2>
<ul>
<li>깃허브 페이지 배포하는 방법을 알아보고, 진행된 결과를 배포했다.</li>
<li>postcss 설정하는 방법을 찾아 적용했다.</li>
<li>postcss에서 변수사용하는 방법을 알아보고 사용했다.</li>
<li>useRef를 이용하여 페이지 스크롤링을 구현했다. </li>
<li>반응형 웹페이지를 만들기 위해 태크닉들을 찾아 공부하고 적용했다. </li>
</ul>
<h2 id="affirmation">Affirmation</h2>
<ul>
<li>포트폴리오 웹사이트를 만들겠다. (반응형으로)</li>
</ul>
<h3 id="오늘-목표-했던-것">오늘 목표 했던 것</h3>
<p><del>포트폴리오 웹사이트를 만들겠다.
TIL 작성</del></p>
<h3 id="내일의-목표">내일의 목표</h3>
<p>TIL작성
포트폴리오 웹사이트 만들기
운동다녀오기.
건강검진 잘 받고 오기</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[2022.01.22]]></title>
            <link>https://velog.io/@art-it/2022.01.22</link>
            <guid>https://velog.io/@art-it/2022.01.22</guid>
            <pubDate>Sat, 22 Jan 2022 10:17:33 GMT</pubDate>
            <description><![CDATA[<p>fact</p>
<ul>
<li>몸살기운이 있었다. </li>
</ul>
<p>feeling</p>
<ul>
<li>축 처진기분이이였다.</li>
<li>포트폴리오 웹사이트를 가볍게 만들어보고 싶어졌다.</li>
</ul>
<p>Findings</p>
<ul>
<li>.classList.toggle(&#39;active&#39;); 활용법을 배웠다.</li>
<li>미디어쿼리와 css변수사용을 익혔다. </li>
</ul>
<p>Affirmation
포트폴리오 웹사이트를 만들겠다. (반응형으로)</p>
<p>오늘 목표 했던 것
<del>완성한 유투브 클론에서 css 변수를 적용하겠다.
또한 js를 추가하여 동적인 요소를 추가하겠다.
TIL 작성
드림코딩 유튜브 강의 하나 따라하기.</del></p>
<p>내일의 목표
TIL작성
포트폴리오 웹사이트 만들기</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[2022.02.21]]></title>
            <link>https://velog.io/@art-it/2022.02.21</link>
            <guid>https://velog.io/@art-it/2022.02.21</guid>
            <pubDate>Fri, 21 Jan 2022 10:20:16 GMT</pubDate>
            <description><![CDATA[<p>fact</p>
<ul>
<li>운동을 두번 다녀옴.</li>
<li>추가로 8000보 이상 걸었다. </li>
<li>html &amp; css 유투브 클론 미션을 끝냈다. </li>
</ul>
<p>feeling</p>
<ul>
<li>오늘은 기분이 안정적이고 평안했다. </li>
</ul>
<p>Findings </p>
<ul>
<li><p>유튜브에 반응형 쿼리를 추가했다. 
아래 링크를 시간날때 천천히 읽어보면 좋을 것 같다. 
<a href="https://developer.mozilla.org/ko/docs/Learn/CSS/CSS_layout/Media_queries">https://developer.mozilla.org/ko/docs/Learn/CSS/CSS_layout/Media_queries</a></p>
</li>
<li><p>trangition roteate를 쓸땐 각도숫자값 + deg (예: 90deg)라고 써야함</p>
</li>
<li><p>문단 자르기 :  span의 줄 수를 제한하고 말줄임표를 할 수 있는 방법을 알게됨. <a href="https://developer.mozilla.org/ko/docs/Web/CSS/-webkit-line-clamp">https://developer.mozilla.org/ko/docs/Web/CSS/-webkit-line-clamp</a></p>
</li>
<li><p>css에서 변수를 사용할 수 있다는 것을 알게 됨. 
<a href="https://developer.mozilla.org/ko/docs/Web/CSS/Using_CSS_custom_properties">https://developer.mozilla.org/ko/docs/Web/CSS/Using_CSS_custom_properties</a></p>
</li>
</ul>
<p>Affirmation</p>
<ul>
<li>완성한 유투브 클론에서 css 변수를 적용하겠다. </li>
<li>또한 js를 추가하여 동적인 요소를 추가하겠다. </li>
</ul>
<p>오늘 목표 했던 것</p>
<ul>
<li>유튜브 클론 완성</li>
<li>TIL작성</li>
</ul>
<p>내일의 목표 </p>
<ul>
<li>유튜브 클론 업그레이드</li>
<li>TIL 작성 </li>
<li>드림코딩 유튜브 강의 하나 따라하기.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL + 일일 회고 양식]]></title>
            <link>https://velog.io/@art-it/TIL-%EC%9D%BC%EC%9D%BC-%ED%9A%8C%EA%B3%A0-%EC%96%91%EC%8B%9D</link>
            <guid>https://velog.io/@art-it/TIL-%EC%9D%BC%EC%9D%BC-%ED%9A%8C%EA%B3%A0-%EC%96%91%EC%8B%9D</guid>
            <pubDate>Thu, 20 Jan 2022 07:46:06 GMT</pubDate>
            <description><![CDATA[<p>회고의 목적 :  하루를 어떻게 썼는지 기록하고, 하고자 했던 것들을 성취하기 위해 쓴다.</p>
<p>fact
// 하루의 사건사고, 나의 행동등을  간략하게 적는다.
// 의미있어 기록이 필요한 경우 몇줄 더 쓴다. </p>
<p>feeling
// 오늘 하루 든 생각, 기분 중 기억하고 싶은 중요한 것만 서술한다.
 
Findings 
//공부한것 위주로 정리한다.
// 길게 정리할경우 새로운 포스트를 작성하고 링크 처리한다.
 </p>
<p>Affirmation
// 오늘의 경험으로 앞으로 방향을 업데이트 하기 위함이다.
// 하고자 하는 일을 선언한다. 
 </p>
<p>오늘 목표 했던 것
 
내일의 목표 </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[2022.01.20]]></title>
            <link>https://velog.io/@art-it/2022.01.20</link>
            <guid>https://velog.io/@art-it/2022.01.20</guid>
            <pubDate>Thu, 20 Jan 2022 07:43:18 GMT</pubDate>
            <description><![CDATA[<p>fact</p>
<ul>
<li>건강검진 예약을 했다. 별일 없기를...</li>
<li>온라인 강의를 들었다. 꾸준히 무언가를 한다는 것에서 안도감이 든다.</li>
<li>오늘부터 다시 TIL을 작성하기로 했다. 남기지 않으면 뭘 공부했는지 잘 기억이 안나는 것 같다.</li>
</ul>
<p>feeling</p>
<ul>
<li>무기력함을 이겨내고 있다는 느낌이 든다.</li>
<li>어제보다 긍정적인 생각으로 살고 있어 다행이다.
 
Findings </li>
</ul>
<p>드림코딩 타입스크립트 + 객체지향 프로그래밍 마스터 강의 듣는중이다.</p>
<ol>
<li><p>throw error는 언제쓰는 것인가? 
예치 못한 오류가 발생할 수 있을 때 쓴다. 
예상할 수 있는 오류는 ? 
오류상태값을 부여해서 더 명확하게 관리하면 좋다.</p>
</li>
<li><p>에러 핸들링에 대해서 배웠다. 
try, catch, finally 사용법을 익혔다. 
언제 에러를 잡아야 하는가? 
에러발생시 의미있는 액션(다이얼로그 팝업같은..)을 하는 곳인지 고민하자.</p>
</li>
<li><p>에러 이유를 상태값으로 관리하는 것.
네트워크 통신 라이브러리들에서 제공해주는 state값을 살펴보았다. 
타입스크립트에서 통신 성공/실패 타입을 나누고, 실패시 어떤 이유로 실패 했는지 이유를 정의하자. 그리고 스위치케이스로 해당 오류를 관리해보자.
잘 이해가 안된다면 노트 8-3-state를 볼 것.</p>
</li>
</ol>
<p> </p>
<p>Affirmation</p>
<ul>
<li>개인프로젝트를 진행한다. 컨셉과 구현계획을 상세하게 적었다.</li>
<li>온라인 강의를 꾸준히 듣는다. 그리고 복습한다.</li>
</ul>
<p>오늘 목표 했던 것</p>
<ul>
<li>8강 완강.</li>
<li>개인프로젝트 계획 세우기.
 
내일의 목표 </li>
<li>개인 프로젝트 계획 완료하기</li>
<li>9강 일부 듣기</li>
<li>TIL 남기기</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[웹프로젝트 기본 설정 (2) index.html과 웹서버 실행]]></title>
            <link>https://velog.io/@art-it/%EC%9B%B9%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EA%B8%B0%EB%B3%B8-%EC%84%A4%EC%A0%95-2-index.html%EA%B3%BC-%EC%9B%B9%EC%84%9C%EB%B2%84-%EC%8B%A4%ED%96%89</link>
            <guid>https://velog.io/@art-it/%EC%9B%B9%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EA%B8%B0%EB%B3%B8-%EC%84%A4%EC%A0%95-2-index.html%EA%B3%BC-%EC%9B%B9%EC%84%9C%EB%B2%84-%EC%8B%A4%ED%96%89</guid>
            <pubDate>Sun, 03 Oct 2021 08:30:39 GMT</pubDate>
            <description><![CDATA[<p>웹프로젝트 기본 설정 (1)에 이어서..</p>
<p>이제 기본적인 웹페이지를 띄워보자.</p>
<ol>
<li>index.html, main.js 파일 추가 
<img src="https://images.velog.io/images/art-it/post/e35655c7-ad2f-4e96-85f6-818e22d0dba9/%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-10-03%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%205.16.11.png" alt=""></li>
</ol>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;UTF-8&quot;&gt;
  &lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=edge&quot;&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
  &lt;title&gt;Document&lt;/title&gt;
  &lt;script src=&quot;./main.js&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;/body&gt;
&lt;/html&gt;</code></pre><p>index.html에서 main.js를 불러오는 script 태그를 작성해준다.</p>
<p>main.js는 간단한 console.log(&#39;test&#39;); 와 같은 내용만 입력했다.</p>
<ol start="2">
<li>package.json에 스크립트 추가.</li>
</ol>
<pre><code>  &quot;scripts&quot;: {
    &quot;dev&quot; : &quot;parcel index.html&quot;,
  },</code></pre><p>아래 스크립트 명령어는 parcel-bundler를 통해서 로컬서버에서 index.html을 보여줄수 있게 만든다.</p>
<ol start="3">
<li>터미널에서 서버 실행<pre><code>npm run dev</code></pre></li>
</ol>
<p><img src="https://images.velog.io/images/art-it/post/b53a6bcb-8a8a-41d5-aa2e-579d5a04ba56/%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-10-03%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%205.27.12.png" alt="">
내가 작성한 스크립트를 npm run &quot;이름&quot;으로 실행시킨다.</p>
<blockquote>
<p>parcel-bundler는 현재 폴더내 프로젝트에서만 설치 되어있기 때문에, 스크립트를 통해 실행 시킬 수 있다. </p>
</blockquote>
<p>출력된 주소(<a href="http://localhost:1234)%EB%A1%9C">http://localhost:1234)로</a>, 브라우저에서 접속해보면 
index.html 페이지를 볼 수 있다.</p>
<p><img src="https://images.velog.io/images/art-it/post/1d389dfb-4e87-4c8c-8b45-a05d4ffcbac4/%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-10-03%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%205.29.20.png" alt="">
현재는 작성한 내용이 없어서 흰화면만 나올 것이다.
대신, 크롬브라우저&gt;검사&gt; 콘솔 탭에서 
이전에 작성한 main.js에 console.log가 실행 되었는지 확인 할 수 있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[웹프로젝트 기본 설정 (1) Npm init & 모듈 설치]]></title>
            <link>https://velog.io/@art-it/Npm-init-%EB%AA%A8%EB%93%88-%EC%84%A4%EC%B9%98</link>
            <guid>https://velog.io/@art-it/Npm-init-%EB%AA%A8%EB%93%88-%EC%84%A4%EC%B9%98</guid>
            <pubDate>Sun, 03 Oct 2021 08:13:41 GMT</pubDate>
            <description><![CDATA[<p>이전에 설치한 node.js와 npm을 통해 웹 프로젝트 기본 환경 설정을 해야한다.</p>
<blockquote>
<p>보통은 첫 리액트 프로젝트를 시작할 때,
<a href="https://github.com/facebook/create-react-app">create-react-app</a>을 통해서 이미 셋팅된 환경을 이용하기도 한다.</p>
</blockquote>
<ol>
<li>프로젝트 정보를 default로 설정할 때<pre><code>npm init -y </code></pre></li>
<li>생성된 package.json 확인</li>
</ol>
<pre><code>// -y를 할 경우 기본값으로 셋팅됨
기본값은 아래와 같다.
{
  &quot;name&quot;: &quot;nodetest&quot;, //프로젝트의 이름(폴더명이 기본값)
  &quot;version&quot;: &quot;1.0.0&quot;, //버전
  &quot;description&quot;: &quot;&quot;, // 프로젝트 설명
  &quot;main&quot;: &quot;index.js&quot;, //모듈제작시 필요한 옵션 (web프로젝트에서는 삭제해도 무방)
  &quot;scripts&quot;: {
    &quot;test&quot;: &quot;echo \&quot;Error: no test specified\&quot; &amp;&amp; exit 1&quot;
  }, // 현재 프로젝트에서 사용할 수 있는 스크립트 명령들 작성하기
  &quot;keywords&quot;: [],
  &quot;author&quot;: &quot;&quot;, // 제작자명
  &quot;license&quot;: &quot;ISC&quot; // 라이센스
}</code></pre><blockquote>
<p>가장 기본적인 프로젝트 설정이 끝났다. 
이제부터는 필요한 모듈러들을 설치하면 된다.</p>
</blockquote>
<ul>
<li><p><a href="https://parceljs.org/getting_started.html">parcel</a> : 웹 애플리케이션 번들러 설치</p>
<pre><code>npm i parcel-bundler -D
//개발용 의존성 패키지로 설치 (개발할 때만 사용하는 모듈)</code></pre></li>
<li><p><a href="https://github.com/lodash/lodash">lodash</a> 설치</p>
<pre><code>npm i lodash -D
//일반 의존성 설치 (웹브라우저에서 동작시 필요한 모듈이란 의미)</code></pre></li>
</ul>
<p><img src="https://images.velog.io/images/art-it/post/5802886f-47ea-4297-8522-d5a69093ac69/%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-10-03%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%204.50.16.png" alt="">
node_modules폴더가 생기고 여러 모듈들이 추가 된 것을 확인할 수 있다. (parcel과 lodash의 의존성 모듈러들이 함께 설치가 되었다.)</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[node.js 설치하기]]></title>
            <link>https://velog.io/@art-it/node.js-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@art-it/node.js-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0</guid>
            <pubDate>Sun, 03 Oct 2021 07:15:55 GMT</pubDate>
            <description><![CDATA[<p>javascript언어는 브라우저와 node.js가 설치된 컴퓨터에서 스크립트를 실행할 수 있다.</p>
<p>react로 웹 개발을 시작할 때, 여러 라이브러리와 babel과 같은 웹모듈러를 설치하기 위해 node.js가 필요하다. </p>
<p>node.js를 설치할 때, 공식홈페이지에서 바로 다운받아 설치하기 보다는 NVM을 통해 설치하면 버전 관리에 용이하다.</p>
<p>설치 순서</p>
<p>1) NVM 설치 (노드 버전 관리 프로그램)
<a href="https://github.com/nvm-sh/nvm">https://github.com/nvm-sh/nvm</a></p>
<p>2) NVM을 통해 원하는 node 버전 설치하기</p>
<blockquote>
<p>명령어 정리</p>
</blockquote>
<pre><code>nvm install 14 //14정식릴리즈 버전 설치
nvm uninstall 12.21.0 // 특정버전 삭제
nvm use 12 // 12버전을 사용하려 할 때 
nvm ls //현재 설치된 node버전 확인
nvm --help // 도움말</code></pre><p>3) 설치된 노드버전 확인</p>
<pre><code>node --version</code></pre><p>4) 함께 설치된 npm (노드 패키지 관리 프로그램)을 통해서 필요한 모듈, 패키지 이용하기!</p>
<p><a href="https://www.npmjs.com/">https://www.npmjs.com/</a>
npm 공홈에서 필요한 모듈을 검색해서 사용해 보자.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[React - 타이틀 & 탭 아이콘 (favicon) 변경 + 즐겨찾기]]></title>
            <link>https://velog.io/@art-it/React-%ED%83%80%EC%9D%B4%ED%8B%80-%ED%83%AD-%EC%95%84%EC%9D%B4%EC%BD%98-favicon-%EB%B3%80%EA%B2%BD-%EC%A6%90%EA%B2%A8%EC%B0%BE%EA%B8%B0</link>
            <guid>https://velog.io/@art-it/React-%ED%83%80%EC%9D%B4%ED%8B%80-%ED%83%AD-%EC%95%84%EC%9D%B4%EC%BD%98-favicon-%EB%B3%80%EA%B2%BD-%EC%A6%90%EA%B2%A8%EC%B0%BE%EA%B8%B0</guid>
            <pubDate>Fri, 01 Oct 2021 04:12:38 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/art-it/post/20fafc5f-b081-4ff3-bd53-6b532c42c763/%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-10-01%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2012.46.06.png" alt=""></p>
<p>이미지의 오른쪽 (아마존)웹 사이트를 보면,
주황색 정육면체 아이콘이 보이는데,
이렇게 브라우저 탭에서 보이는 아이콘을 favicon이라고 한다. </p>
<h2 id="웹사이트의-제목과-아이콘favicon-설정하는-법">웹사이트의 제목과 아이콘(favicon) 설정하는 법</h2>
<h3 id="1-아이콘-만들기">1. 아이콘 만들기</h3>
<p><a href="https://www.favicon-generator.org/">https://www.favicon-generator.org/</a></p>
<p>1) 위 웹사이트로 접속
<img src="https://images.velog.io/images/art-it/post/40c9bbf1-8b04-4a60-85e0-940c32f0ca5d/%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-10-01%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%201.07.38.png" alt="">
2) 아이콘으로 만들 이미지파일 업로드 및 기타 설정 체크</p>
<p>3) create favicon 버튼 클릭</p>
<p><img src="https://images.velog.io/images/art-it/post/719d369e-2328-4d8e-8259-5fa4712222a8/%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-10-01%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%201.07.52.png" alt="">
4) 만들어진 아이콘 다운로드 </p>
<h3 id="2-indexhtml-수정하기">2. index.html 수정하기</h3>
<p><img src="https://images.velog.io/images/art-it/post/62b68674-5528-43ac-b6e2-797fdee97674/%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-10-01%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2012.55.17.png" alt=""></p>
<p>index.html에서 두곳만 수정해주면 된다. </p>
<p>1) title 태그에 웹사이트 제목 수정하기.
2) link 태그를 이용해서 rel=&quot;icon&quot; href=&quot;이미지 경로&quot; 작성하기.</p>
<ul>
<li>rel에 icon뿐만아니라 한칸띄고 &quot;shortcut&quot;을 써주면 
즐겨찾기 추가시 보이는 아이콘도 동일한 이미지로 변경된다.<pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=edge&quot;&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
&lt;!--1) 제목--&gt;
&lt;title&gt;Demo : 여기에 제목쓰기&lt;/title&gt;
&lt;!--2) 탭 아이콘 &amp; 즐겨찾기 아이콘 설정--&gt;
&lt;link rel=&quot;shortcut icon&quot; href=&quot;./src/imgs/favicon.ico&quot; /&gt;  
&lt;/head&gt;
&lt;body&gt;
</code></pre></li>
</ul>
</body>
</html>
```

<p>적용후 -&gt;
<img src="https://images.velog.io/images/art-it/post/94f8b96b-411c-464f-aeb0-5df5c5c600eb/%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-10-01%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%201.02.47.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[React Testing Library로 List 요소 찾기]]></title>
            <link>https://velog.io/@art-it/get-by-role</link>
            <guid>https://velog.io/@art-it/get-by-role</guid>
            <pubDate>Tue, 28 Sep 2021 09:09:37 GMT</pubDate>
            <description><![CDATA[<p>리액트로 웹사이트를 개발하던중, map()함수를 이용해서 동적인 <strong>목록</strong>을 만들게 되었는데요.</p>
<pre><code>&lt;img url=&quot;큰 이미지로 보이는 화면&quot;/&gt;
&lt;ul&gt;
    &lt;li&gt;미리보기 이미지1&lt;/li&gt;
    &lt;li&gt;미리보기 이미지2&lt;/li&gt;
    &lt;li&gt;미리보기 이미지3&lt;/li&gt;
&lt;/ul&gt;    </code></pre><p>li 요소를 클릭하는 테스트 코드를 작성하고 싶은데,
<strong>li 요소는 react-test-library로 어떻게 찾아야 될까요?</strong></p>
<h2 id="예제-1-동적인-목록요소를-포함한-컴포넌트">예제 1: 동적인 목록요소를 포함한 컴포넌트</h2>
<pre><code>const fruits = [&quot;Bananas&quot;, &quot;Apples&quot;, &quot;Strawberries&quot;, &quot;Grapes&quot;, &quot;Oranges&quot;]

function FruitList() {
  return (
    &lt;section&gt;
      &lt;h1 id=&quot;fruits-heading&quot;&gt;Fruits&lt;/h1&gt;
      &lt;ul aria-labelledby=&quot;fruits-heading&quot;&gt;
        {fruits.map(fruit =&gt; (
          &lt;li key={fruit}&gt;{fruit}&lt;/li&gt;
        ))}
      &lt;/ul&gt;
    &lt;/section&gt;
  )
}</code></pre><p>fruits라는 과일이름이 들어있는 array가 있고,
FruitList()함수는 과일목록을 포함한 컴포넌트를 리턴해주고 있어요.</p>
<h2 id="예제-2-목록의-아이템-갯수를-확인하는-테스트-코드">예제 2: 목록의 아이템 갯수를 확인하는 테스트 코드</h2>
<pre><code>import React from &quot;react&quot;
import { render, screen, within } from &quot;@testing-library/react&quot;

it(&quot;should render list of 5 fruits&quot;, () =&gt; {
  render(&lt;FruitList /&gt;)
  const list = screen.getByRole(&quot;list&quot;, {
    name: /fruits/i,
  })
  const { getAllByRole } = within(list)
  const items = getAllByRole(&quot;listitem&quot;)
  expect(items.length).toBe(5)
})</code></pre><p>이름이 fruits인 list를 찾고, 그 안에서 listitem을 getAllByRole로 찾을 수 있었습니다.</p>
<p>이미 부여된 role을 갖고있는 요소목록은 <a href="https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques#roles">list of roles</a>을 참고하세요.</p>
<h4 id="더-볼거리">더 볼거리</h4>
<blockquote>
<p>아래 포스트를 통해 방법을 알게 되었는데, 일부를 옮겨왔습니다.
Role에 대해서 더 깊이 있는 내용은 아래 포스트를 참고해 주세요.
[<a href="https://balavishnuvj.com/blog/testing-lists-items-with-react-testing-library/">Testing Lists Items With React Testing Library</a>]</p>
</blockquote>
<blockquote>
<p>testing library 공식 홈페이지 <a href="https://testing-library.com/docs/queries/about/#priority">about queries</a></p>
</blockquote>
<ul>
<li>더 공부할 것 <blockquote>
<pre><code>const list = screen.getByRole(&quot;list&quot;, {
  name: /fruits/i,
})</code></pre></blockquote>
```
  list를 찾을 때, 매개변수로 넘기는 오브젝트{} 속 name option 사용법 이해하기. 
  (혹시 잘 알고 계신분 있다면 알려주세요!)</li>
</ul>
]]></description>
        </item>
    </channel>
</rss>