<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>뉴히의 개발 로그</title>
    <link>https://newheee.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sun, 28 Jun 2026 19:50:40 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>뉴히</managingEditor>
    <image>
      <title>뉴히의 개발 로그</title>
      <url>https://tistory1.daumcdn.net/tistory/6339470/attach/e1f3429b251a4d0db4ca2f9b3b5b0d5a</url>
      <link>https://newheee.tistory.com</link>
    </image>
    <item>
      <title>React에서 Lottie 사용하기</title>
      <link>https://newheee.tistory.com/153</link>
      <description>&lt;div style=&quot;background-color: #121212; color: #ececec; text-align: start;&quot;&gt;
&lt;div style=&quot;background-color: #121212; color: #ececec; text-align: start;&quot;&gt;
&lt;div style=&quot;color: #ececec;&quot;&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹서비스를 만들때 종종 gif와 같은 움직이는 애니메이션을 넣고싶을때가 많다! 이때 간단한 애니메이션인데 전부 gif로 넣게되면 용량도 크고 퍼포먼스도 저하시키는 문제들이 생긴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;lottie는 이러한문제를 해결하면서 웹서비스를 예쁘게 꾸며줄수 있는 애니메이션을 사용할수있게 해준다!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;Lottie란?&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Lottie는 After Effects 애니메이션을 JSON 파일로 변환해 웹/앱에서 가볍게 사용할 수 있도록 해주는 라이브러리이다.&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;React에서도 쉽게 사용할 수 있다!!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Lottie의 장점&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;  고퀄리티 애니메이션을 가벼운 JSON 파일로 제공해서 퍼포먼스에 부담이 적음&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; ️ 코드로 세밀한 제어가 가능 (루프, 속도 조절, 특정 타이밍 이벤트 등)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;  반응형, 모바일 최적화도 편리하게 적용 가능&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;  After Effects로 제작한 애니메이션을 개발자가 쉽게 사용할 수 있음&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;  파일 하나로 다양한 플랫폼(Web, iOS, Android 등)에서 재사용 가능&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;설치&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1765516074909&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm install lottie-react&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;위 명령어를 통해 간단히 설치가능하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;사용 방법&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;(1) 애니메이션 파일 준비&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;애니메이션 파일(JSON)은 LottieFiles 사이트에서 무료로 다운로드할 수 있다.&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;다운받은 파일을 프로젝트 폴더에 저장해주자. (예: src/assets/lottie/animation.json)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;(2) 기본 예제&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1765516092360&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// src/components/LottieAnimation.tsx
import Lottie from &quot;lottie-react&quot;;
import animationData from &quot;../assets/lottie/animation.json&quot;;

const LottieAnimation = () =&amp;gt; {
  return (
    &amp;lt;div style={{ width: 300, height: 300 }}&amp;gt;
      &amp;lt;Lottie
        animationData={animationData}
        loop
        autoplay
        style={{ width: &quot;100%&quot;, height: &quot;100%&quot; }}
      /&amp;gt;
    &amp;lt;/div&amp;gt;
  );
};

export default LottieAnimation;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;✅ 설정:&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;animationData: 사용할 애니메이션 JSON 파일&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;autoplay: 컴포넌트 렌더링 시 자동 재생&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;loop: 애니메이션 반복 재생 여부&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;추가로 lottie-react에서는&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;speed (속도 조절)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;onComplete (애니메이션 완료 이벤트)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;onLoopComplete (루프 완료 이벤트)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;onEnterFrame (프레임마다 이벤트)&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;같은 옵션도 쉽게 제어할 수 있다!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;(3) App.tsx에서 사용하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1765516156318&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// src/App.tsx

import LottieAnimation from &quot;./components/LottieAnimation&quot;;



function App() {

  return (

    &amp;lt;div&amp;gt;

      &amp;lt;h1&amp;gt;Hello Lottie!&amp;lt;/h1&amp;gt;

      &amp;lt;LottieAnimation /&amp;gt;

    &amp;lt;/div&amp;gt;

  );

}


export default App;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;사용예시&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;아래는 이번 MT용 보물찾기 사이트를 제작하면서 직접 사용해본 예시화면과 코드이다. 간단한 효과여서 별다른 애니메이션 설정은 하지않고 json그대로 적용하였다!&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1765516176439&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import styled from &quot;styled-components&quot;;
import twingkle from &quot;@assets/lottie/Twingkle.json&quot;;
import Lottie from &quot;lottie-react&quot;;

const Logo = () =&amp;gt; {
  return (
    &amp;lt;Wrapper&amp;gt;
      {/* 왼쪽 반짝이 */}
      &amp;lt;Twingkle top={-20} left={-75} /&amp;gt;
      {/* 오른쪽 위 반짝이 */}
      &amp;lt;Twingkle top={-65} right={-65} /&amp;gt;
      {/* 오른쪽 반짝이 */}
      &amp;lt;Twingkle bottom={-55} right={-75} /&amp;gt;
      MT사이트
    &amp;lt;/Wrapper&amp;gt;
  );
};

export default Logo;

// Wrapper 스타일
const Wrapper = styled.div`
  display: flex;
  position: relative; /* 자식 absolute 기준 */
  ${({ theme }) =&amp;gt; theme.fonts.logo50}
  color: ${({ theme }) =&amp;gt; theme.colors.font.white};
`;

// Twingkle Props 타입 정의
interface TwingkleProps {
  top?: number;
  left?: number;
  right?: number;
  bottom?: number;
}

// Twingkle 컴포넌트
const Twingkle = ({ top, left, right, bottom }: TwingkleProps) =&amp;gt; {
  const style: React.CSSProperties = {
    position: &quot;absolute&quot;,
    width: 130,
    height: 130,
    pointerEvents: &quot;none&quot;, // 클릭 방지
  };

  // 위치 props 적용
  if (top !== undefined) style.top = `${top}px`;
  if (left !== undefined) style.left = `${left}px`;
  if (right !== undefined) style.right = `${right}px`;
  if (bottom !== undefined) style.bottom = `${bottom}px`;

  return &amp;lt;Lottie animationData={twingkle} loop autoplay style={style} /&amp;gt;;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://velog.io/@movingun/React%EC%97%90%EC%84%9C-Lottie-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://velog.io/@movingun/React%EC%97%90%EC%84%9C-Lottie-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0&lt;/a&gt;&lt;/p&gt;</description>
      <category>React</category>
      <category>리액트</category>
      <category>리액트라이브러리</category>
      <author>뉴히</author>
      <guid isPermaLink="true">https://newheee.tistory.com/153</guid>
      <comments>https://newheee.tistory.com/153#entry153comment</comments>
      <pubDate>Fri, 12 Dec 2025 14:37:55 +0900</pubDate>
    </item>
    <item>
      <title>React  프로젝트 생성 및 초기 세팅 - 폴더 구조, 패키지 설치, 초기값</title>
      <link>https://newheee.tistory.com/152</link>
      <description>&lt;h3 id=&quot;1-cra&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;1. CRA&lt;/h3&gt;
&lt;pre class=&quot;dsconfig&quot; style=&quot;background-color: #fbfcfd; color: #24292e; text-align: left;&quot;&gt;&lt;code&gt;npx create-reat-app [프로젝트명]
npx create-react-app [프로젝트명] --template typescript&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;2-vite&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;2. Vite&lt;/h3&gt;
&lt;pre class=&quot;coffeescript&quot; style=&quot;background-color: #fbfcfd; color: #24292e; text-align: left;&quot;&gt;&lt;code&gt;npm create vite@latest [프로젝트 명] 
npm create vite@latest [프로젝트 명] --template react-ts&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;432&quot; data-origin-height=&quot;921&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k6LFw/dJMcafkLJWG/huL62ns6ue9L3ZlW9k3hRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k6LFw/dJMcafkLJWG/huL62ns6ue9L3ZlW9k3hRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k6LFw/dJMcafkLJWG/huL62ns6ue9L3ZlW9k3hRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk6LFw%2FdJMcafkLJWG%2FhuL62ns6ue9L3ZlW9k3hRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;432&quot; height=&quot;921&quot; data-origin-width=&quot;432&quot; data-origin-height=&quot;921&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #a6bc00;&quot;&gt;프로젝트 주요 파일과 폴더 구조&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;public/: 정적 파일(HTML, 이미지 등)을 저장하는 폴더.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;src/: React 컴포넌트와 JavaScript 파일을 저장하는 폴더.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;package.json: 프로젝트의 메타데이터와 의존성을 관리하는 파일.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1764640048398&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;
├── public
├── src
│   ├── @types	      			 # 전역타입 정의
│   ├── assets                   # 정적 자원
│   ├── components               # 재사용 가능한 컴포넌트
│   ├── constants                # 상수         
│   ├── hooks                    # 커스텀 훅
│   ├── pages                    # 페이지 컴포넌트
│   ├── routes                   # 라우팅         
│   ├── services				 # 비즈니스 로직, API 호출
│   ├── stores                   # 전역 상태 스토어
│   ├── utils                    # 유틸리티 함수
│   ├── styles                   # 스타일
│   ├── App.css 
│   ├── App.tsx
│   ├── index.css
│   └── main.tsx
├── .gitignore
├── .eslintrc.cjs                # ESLint 설정 파일
├── .prettierrc                  # Prettier 설정 파일
├── index.html                   # 애플리케이션의 진입점 HTML 파일 (Vite 설정 관련)
├── pnpm-lock.yaml(또는 package-lock.json, yarn.lock) # 의존성 트리 고정 파일
├── package.json                 # 프로젝트 메타데이터 및 의존성 정의
├── README.md
└── vite.config.js               # Vite 설정 파일&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;public/&lt;/b&gt;: 정적 파일들을 보관하는 폴더&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;src/&lt;/b&gt;: 소스 코드가 위치하는 폴더&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;b&gt;assets/&lt;/b&gt;: 이미지 파일과 같은 정적 자원들을 보관합니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;b&gt;constant/&lt;/b&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;: 상수를 모아둡니다.&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;b&gt;components/&lt;/b&gt;: 재사용 가능한 React 컴포넌트들이 위치하며, 공통 컴포넌트와 페이지별(도메인별) 컴포넌트로 구분됩니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;b&gt;pages/&lt;/b&gt;: 각각의 페이지 컴포넌트들이 위치하며, 홈, 클래스, 게시판 등 여러 페이지로 나뉩니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;b&gt;routes/&lt;/b&gt;: 애플리케이션의 라우팅 설정 파일들이 위치합니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;b&gt;app/&lt;/b&gt;: 리덕스 스토어 설정 파일이 위치합니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;b&gt;utils/&lt;/b&gt;: 유틸리티 함수들이 위치합니다. 프로젝트 전역에서 사용되는 특정 기능 및 작업을 수행하는데 도움을 주는 함수들이 위치합니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;b&gt;hooks/&lt;/b&gt;: 커스텀 훅들이 위치합니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;b&gt;styles/&lt;/b&gt;: 스타일 파일들이 위치합니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;b&gt;App.tsx&lt;/b&gt;: 주요 React 컴포넌트로, 애플리케이션의 구조를 정의합니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;b&gt;main.tsx&lt;/b&gt;: ReactDOM을 사용해 React 애플리케이션을 HTML DOM에 렌더링하는 파일입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #a6bc00;&quot;&gt;router, 전역상태 store, queryclient provider 등 패키지 설치&lt;/span&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1764641617447&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm add react-router-dom @tanstack/react-query axios zustand&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 깃 협업 배포 순서&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. fetch 및 pull&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;코드 수정 전 최신 코드를 로컬로 받기&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. commit :&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;작업 완료 후 코드를 수정하고 commit&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. fetch 및 pull :&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;다시 원격 저장소에서 최신 변경 사항을 가져온다.&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. 충돌 해결 :&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;git pull 중에 충돌이 발생하면, 충돌을 해결하고 commit 한다.&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;5. Push :&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;로컬 변경 사항을 원격 저장소(git)에 푸시한다.&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;6. Pull Request :&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;팀장에게 merge 요청&lt;/p&gt;
&lt;blockquote style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot; data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot;&gt; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;이 순서를 권장하는 이유&lt;br /&gt;&lt;/b&gt;1. 충돌 최소화 : 작업 후 먼저 'pull'을 하여 최신 변경 사항을 가져오면, git에 있는 변경사항과 로컬 변경사항을 병합할 수 있다. 이때 충돌이 발생하면 로컬 환경에서 해결할 수 있어 푸시할 때 다른 팀원의 작업에 영향을 주지 않는다.&lt;br /&gt;2. 코드 일관성 유지 : 최신 코드를 로컬에 반영한 후 푸시하면, git과의 일관성을 유지할 수 있다. 이는 다른 팀원이 'pull'할 때 예상치 못한 충돌을 피하는데 도움이 된다.&lt;/blockquote&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. .gitignore 파일&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;깃이나 외부에 배포할 때 보안상의 이유로 배포에서 제외시킬 파일 기재&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;협업할 때 필요한 파일이 공유가 안될 수 있어 절대 파일 수정 금지&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;또 node_module같은 폴더는 각자 다운받는게 다를 수 있어서 각자의 node를 사용한다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 파일 절대 경로&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;프로젝트 루트가 아닌 URL에서도 유연하게 절대경로를 사용할 수 있도록 한다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;html에서는&amp;nbsp;&amp;rarr;&amp;nbsp;%PUBLIC_URL%&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1764641483466&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;link rel=&quot;stylesheet&quot; href=&quot;%PUBLIC_URL%/css/main.css&quot;&amp;gt;
&amp;lt;img src=&quot;%PUBLIC_URL%/images/logo.png&quot; alt=&quot;Logo&quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;javascript&amp;nbsp;&amp;rarr;&amp;nbsp;process.env.PUBLIC_URL&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1764641494642&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;Link to={`/${it.menu}/${it.id}`} props={props}&amp;gt;        
     &amp;lt;div style={{backgroundImage:`url(` + process.env.PUBLIC_URL + `/contentsboard/assets/img_${it.id}.jpg)`  }}&amp;gt;&amp;lt;/div&amp;gt;
     &amp;lt;h3&amp;gt;{it.title} &amp;lt;/h3&amp;gt;
     &amp;lt;p&amp;gt;{it.subTitle}&amp;lt;/p&amp;gt;
&amp;lt;/Link&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 협업 툴&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;GitHub Desktop&lt;/b&gt;을 이용해서 각자 레포지토리를 복사한 후 작업을 진행한다.&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;fork 대신 간편하게 GitHub Desktop을 사용할건데, 간편한 대신에 관리 기능이 몇가지 없다  &lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;작업한 후에는 Pull Request를 하고 리뷰어에 마스터를 기본으로 추가한다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5. 코드 컨벤션 설정하기&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;코드를 일관되고 효율적으로 작성하기 위한&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;네이밍 컨벤션&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;변수, 함수는 카멜 케이스 ex) fetchData, setData&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;클래스명은 스네이크 케이스 ex) login_wrap&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;컴포넌트명은 파스칼 케이스 ex)ItemList&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;스타일 파일은 컴포넌트명과 동일하게 ex) Home.js / Home.css&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;컴포넌트가 아닌 파일은 카멜 케이스 ex) useFetch&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;6. Reset CSS&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1764641466097&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed, 
figure, figcaption, footer, header, hgroup, 
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 100%;
	font: inherit;
	vertical-align: baseline;
}
article, aside, details, figcaption, figure, 
footer, header, hgroup, menu, nav, section {
	display: block;
}
body {
	min-height: 100vh;
	font-family: '';
	line-height: 1;

}
ol, ul, li {
	list-style: none;
}
blockquote, q {
	quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
	content: '';
	content: 	none;
}
table {
	border-collapse: collapse;
	border-spacing: 0;
}
a {
    text-decoration: none;
    color: inherit;
}  
input, button, textarea{
    border: none;
    background: inherit;
    font-family: '', sans-serif;
	outline: none;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;7. 커밋 규칙&lt;/b&gt;&lt;/h3&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Commit&amp;nbsp;message&amp;nbsp;7가지&amp;nbsp;규칙&lt;/b&gt;&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;list-style-type: decimal; color: #000000;&quot;&gt;제목과 본문을 한 줄 띄어 구분&lt;/li&gt;
&lt;li style=&quot;list-style-type: decimal; color: #000000;&quot;&gt;제목은 50자 이내&lt;/li&gt;
&lt;li style=&quot;list-style-type: decimal; color: #000000;&quot;&gt;제목 첫 글자는 대문자&lt;/li&gt;
&lt;li style=&quot;list-style-type: decimal; color: #000000;&quot;&gt;제목 끝에 마침표 X&lt;/li&gt;
&lt;li style=&quot;list-style-type: decimal; color: #000000;&quot;&gt;제목은 명령문으로, 과거형 X&lt;/li&gt;
&lt;li style=&quot;list-style-type: decimal; color: #000000;&quot;&gt;본문의 각 행은 72자 이내 (줄바꿈 사용)&lt;/li&gt;
&lt;li style=&quot;list-style-type: decimal; color: #000000;&quot;&gt;본문은 어떻게 보다 무엇을, 왜에 대하여 설명&lt;/li&gt;
&lt;/ol&gt;
&lt;pre id=&quot;code_1764641449285&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//헤더는 필수이며 범위와 Footer는 생략 가능하다.

타입(범위) : 주제 // Header(헤더)

본문 // Body(바디)

바닥글 // Footer&lt;/code&gt;&lt;/pre&gt;
&lt;table style=&quot;background-color: #121212; color: #ececec; text-align: start; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;타입&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;feat&lt;/td&gt;
&lt;td&gt;새로운 기능에 대한 커밋&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;fix&lt;/td&gt;
&lt;td&gt;버그 수정에 대한 커밋&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;build&lt;/td&gt;
&lt;td&gt;빌드 관련 파일 수정 / 모듈 설치 또는 삭제에 대한 커밋&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;chore&lt;/td&gt;
&lt;td&gt;그 외 자잘한 수정에 대한 커밋&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;ci&lt;/td&gt;
&lt;td&gt;ci 관련 설정 수정에 대한 커밋&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;docs&lt;/td&gt;
&lt;td&gt;문서 수정에 대한 커밋&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;style&lt;/td&gt;
&lt;td&gt;코드 스타일 혹은 포맷 등에 관한 커밋&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;refactor&lt;/td&gt;
&lt;td&gt;코드 리팩토링에 대한 커밋&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;test&lt;/td&gt;
&lt;td&gt;테스트 코드 수정에 대한 커밋&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;perf&lt;/td&gt;
&lt;td&gt;성능 개선에 대한 커밋&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Footer와 Body는 생략 가능하다.&lt;br /&gt;Footer는&amp;nbsp;바닥글로&amp;nbsp;어떤&amp;nbsp;이슈에서&amp;nbsp;왔는지&amp;nbsp;같은&amp;nbsp;참조&amp;nbsp;정보들을&amp;nbsp;추가하는&amp;nbsp;용도로&amp;nbsp;사용한다.&lt;br /&gt;&lt;br /&gt;예를&amp;nbsp;들어&amp;nbsp;특정&amp;nbsp;이슈를&amp;nbsp;참조하려면&amp;nbsp;Issues&amp;nbsp;#1234&amp;nbsp;와&amp;nbsp;같이&amp;nbsp;작성하면&amp;nbsp;된다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;예시)&lt;/p&gt;
&lt;pre id=&quot;code_1764641426818&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;feat(router): React Router 연결

초기 컴포넌트 세팅 및 페이지 라우팅&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;&lt;a style=&quot;color: #dddddd;&quot; href=&quot;https://velog.io/@yongyong_21/React-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%B4%88%EA%B8%B0%EC%84%B8%ED%8C%85-%EA%B0%9C%EC%9D%B8%EC%A0%81-%EC%A0%80%EC%9E%A5%EC%9A%A9&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://velog.io/@yongyong_21/React-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%B4%88%EA%B8%B0%EC%84%B8%ED%8C%85-%EA%B0%9C%EC%9D%B8%EC%A0%81-%EC%A0%80%EC%9E%A5%EC%9A%A9&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;&lt;a style=&quot;color: #dddddd;&quot; href=&quot;https://gamza1013.tistory.com/114&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://gamza1013.tistory.com/114&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>React</category>
      <author>뉴히</author>
      <guid isPermaLink="true">https://newheee.tistory.com/152</guid>
      <comments>https://newheee.tistory.com/152#entry152comment</comments>
      <pubDate>Tue, 2 Dec 2025 11:15:02 +0900</pubDate>
    </item>
    <item>
      <title>React Router v7</title>
      <link>https://newheee.tistory.com/151</link>
      <description>&lt;h2 id=&quot; -그냥-react-router-dom-쓰면-되지-않나&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;React-router-dom -&amp;gt; React Router v7&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;React 프로젝트에서 라우팅을 쓸 때, react-router-dom을 당연하게 깔고 시작했었다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;lt;BrowserRouter&amp;gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;lt;Link&amp;gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;lt;NavLink&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등 DOM 전용 라우팅 컴포넌트가 이미 준비되어 있다.&lt;/li&gt;
&lt;li&gt;뒤로가기 버튼이나 페이지 전환 시 전체 리프레시가 없으니 SPA스럽게 딱 좋다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;위 두개의 이유만으로도 리액트로 SPA 웹사이트를 만드려면 React-Router-Dom 을 냅다 설치해왔던 것이다.&lt;/p&gt;
&lt;h2 id=&quot;-강해진-코어-의존성&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;  강해진 코어 의존성&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;기존에는 아래와 같이 Link 태그를 불러와서 SPA 라우팅을 시켜주려면 당연히 너무나도 당연히 react-router-dom 에서 불러왔을 것이다.&lt;br /&gt;하지만 이제는 세상이 바뀌었다. 이제는 Link 태그를 포함 그동안 react-router-dom 에서 제공해주던 태그 및 기능들을 react-router에서 불러오면 되는 것이다.&lt;/p&gt;
&lt;pre class=&quot;clean&quot; style=&quot;background-color: #fbfcfd; color: #212529; text-align: start;&quot;&gt;&lt;code&gt;import { Link } from &quot;react-router-dom&quot;; // 기존의 v6 방식
import { Link } from &quot;react-router&quot;; // 최근 v7 방식&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이제는 react-router만 사용해서 SPA를 구현할 수 있게 되었단 것이다.&lt;/p&gt;
&lt;h2 id=&quot;️-ssr까지-제공하는-프레임워크라고-&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;⁉️ SSR까지 제공하는 프레임워크라고 ??&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이번 v7 업데이트 이후로 React-Router는 리액트 라우팅 라이브러리를 넘어서 앞으로 프레임워크로도 가능성을 열었다.&lt;/p&gt;
&lt;blockquote style=&quot;background-color: #f8f9fa; color: #212529; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요즘 CRA는 더 이상 React 애플리케이션을 만드는 추천 방법이 아니며, 한동안 추천되지도 않았습니다. 마지막 커밋이 이루어진 지 거의 1년이 되었고, 그 이전에도 커밋 속도가 상당히 느려졌습니다. 현재 CRA는 유지보수되지 않는 것으로 간주되며, React 공식 문서에서도 사용을 추천하지 않습니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;es모듈 기반으로 훨씬 빠른 번들링을 제공해주는 vite를 기반으로 사용가능한 프레임워크로 이루어졌기 때문에 사용성을 더욱 높일 수 있을 것 같다&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;앞으로 React-Router v7을 프레임워크로 사용한다면 우리가 경험 할 수 있는 기능을 리스트업 해보자면 다음과 같다.&lt;/p&gt;
&lt;blockquote style=&quot;background-color: #f8f9fa; color: #212529; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Vite 번들러 및 개발 서버와 통합&lt;/li&gt;
&lt;li&gt;핫 모듈 교체(HMR) 지원&lt;/li&gt;
&lt;li&gt;파일 기반 또는 설정 기반 라우팅&lt;/li&gt;
&lt;li&gt;타입 안전한 데이터 로딩(loaders) 및 액션(actions) 지원&lt;/li&gt;
&lt;li&gt;자동 페이지 데이터 리로드&lt;/li&gt;
&lt;li&gt;서버 사이드 렌더링(SSR), SPA, 정적 렌더링 지원&lt;/li&gt;
&lt;li&gt;SEO, 에러 경계, 자산(asset) 로딩 관리 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;개인적으로 느꼈을때 최근 프론트는 React vs NEXT 의 구도가 되었다고 생각했었는데, 위에서 설명한 여러가지 이유만으로도 정말 앞으로가 기대가 되는 버전업이었다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;도움받은 자료들&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #12b886;&quot; href=&quot;https://reactrouter.com/start/framework/routing&quot;&gt;공식문서&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://velog.io/@feels_bot_man/React-Router-v7-%EC%86%8C%EA%B0%9C&quot;&gt;https://velog.io/@feels_bot_man/React-Router-v7-%EC%86%8C%EA%B0%9C&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://remix.run/blog/react-router-v7&quot;&gt;https://remix.run/blog/react-router-v7&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>React</category>
      <category>react</category>
      <category>reactrouterv7</category>
      <category>Router</category>
      <author>뉴히</author>
      <guid isPermaLink="true">https://newheee.tistory.com/151</guid>
      <comments>https://newheee.tistory.com/151#entry151comment</comments>
      <pubDate>Mon, 1 Dec 2025 11:21:15 +0900</pubDate>
    </item>
    <item>
      <title>Windows용 패키지 매니저 chocolatey 설치 하기 / chocolatey로 윈도우 패키지 한번에 설치</title>
      <link>https://newheee.tistory.com/150</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #212529; text-align: start;&quot;&gt;공식 문서 :&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://chocolatey.org/install&quot;&gt;https://chocolatey.org/install&lt;/a&gt; &lt;/p&gt;
&lt;figure id=&quot;og_1750291622653&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;product&quot; data-og-title=&quot;Installing Chocolatey&quot; data-og-description=&quot;Chocolatey is software management automation for Windows that wraps installers, executables, zips, and scripts into compiled packages. Chocolatey integrates w/SCCM, Puppet, Chef, etc. Chocolatey is trusted by businesses to manage software deployments.&quot; data-og-host=&quot;chocolatey.org&quot; data-og-source-url=&quot;https://chocolatey.org/install&quot; data-og-url=&quot;https://chocolatey.org/install&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/burJqs/hyY8KKPaO8/O7WKwUflg0e6WzIK51piN0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/mePAq/hyY77TGzGG/FfbHjBAQxckgewrnZUHroK/img.png?width=150&amp;amp;height=150&amp;amp;face=0_0_150_150,https://scrap.kakaocdn.net/dn/nkgI6/hyZbul9jpe/AwL1XfPTSAURkcdnXxaVBK/img.png?width=1200&amp;amp;height=630&amp;amp;face=133_435_1049_488&quot;&gt;&lt;a href=&quot;https://chocolatey.org/install&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://chocolatey.org/install&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/burJqs/hyY8KKPaO8/O7WKwUflg0e6WzIK51piN0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/mePAq/hyY77TGzGG/FfbHjBAQxckgewrnZUHroK/img.png?width=150&amp;amp;height=150&amp;amp;face=0_0_150_150,https://scrap.kakaocdn.net/dn/nkgI6/hyZbul9jpe/AwL1XfPTSAURkcdnXxaVBK/img.png?width=1200&amp;amp;height=630&amp;amp;face=133_435_1049_488');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Installing Chocolatey&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Chocolatey is software management automation for Windows that wraps installers, executables, zips, and scripts into compiled packages. Chocolatey integrates w/SCCM, Puppet, Chef, etc. Chocolatey is trusted by businesses to manage software deployments.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;chocolatey.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;0-chocolatey란&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;0. Chocolatey란?&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Chocolatey (약칭 Choco) : 윈도우에서 사용할 수 있는 커맨드 라인 패키지 매니저
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Linux의 apt(apt-get), yum, Mac의 Homebrew 처럼&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;패키지 설치 / 업데이트 / 삭제&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등 에 사용하는 Windows용 패키지 매니저&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;MS 에서 공식으로 제공하는 도구는 아님&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;1-chocolatey-설치-방법&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;1. Chocolatey 설치 방법&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;0. 설치 기본 요구사항 체크&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Windows 7+ / Windows Server 2003+&lt;/li&gt;
&lt;li&gt;PowerShell v2+ (TLS 1.2 요구 사항 으로 인해 이 웹 사이트의 최소 지원 버전은 v3 이상이다.)&lt;/li&gt;
&lt;li&gt;.NET Framework 4+ (설치하지 않은 경우 .NET 4.0 설치를 시도함)( TLS 1.2 요구 사항 으로 인해 이 웹 사이트의 최소 지원 버전은 최소 4.5)&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. Window Powershell 관리자 권환으로 실행&lt;/b&gt;&lt;br /&gt;&lt;b&gt;2.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Get-ExecutionPolicy&lt;span&gt;&amp;nbsp;&lt;/span&gt;실행&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Restricted가 아닐 경우&lt;span&gt;&amp;nbsp;&lt;/span&gt;Set-ExecutionPolicy AllSigned&lt;span&gt;&amp;nbsp;&lt;/span&gt;실행 후 Y 입력&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 다음 코드 입력&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;gams&quot; style=&quot;background-color: #fbfcfd; color: #24292e; text-align: left;&quot;&gt;&lt;code&gt;Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. 설치 확인&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;choco를 입력해 버전이 나온다면 설치 완료!&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;2-활용&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;2. 활용&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #12b886;&quot; href=&quot;https://chocolatey.org/packages&quot;&gt;choco로 설치 가능한 패키지 목록&lt;/a&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치한 패키지 검색 및 목록 조회&lt;/li&gt;
&lt;li style=&quot;background-color: #fbfcfd; color: #24292e; text-align: left;&quot;&gt;&lt;span style=&quot;color: #969896;&quot;&gt;#목록&lt;/span&gt; choco search -l choco list -l &lt;span style=&quot;color: #969896;&quot;&gt;#패키지 원격 검색&lt;/span&gt; choco list 패키지명 &lt;span style=&quot;color: #969896;&quot;&gt;#패키지 모든 버전 원격 검색&lt;/span&gt; choco list -a 패키지명&lt;/li&gt;
&lt;li&gt;패키지 설치, 업그레이드, 삭제하기&lt;/li&gt;
&lt;li style=&quot;background-color: #fbfcfd; color: #24292e; text-align: left;&quot;&gt;choco &lt;span style=&quot;color: #005cc5;&quot;&gt;install&lt;/span&gt; 패키지이름 &lt;span style=&quot;color: #969896;&quot;&gt;#무조건 수락&lt;/span&gt; choco &lt;span style=&quot;color: #005cc5;&quot;&gt;install&lt;/span&gt; -y &lt;span style=&quot;color: #969896;&quot;&gt;#특정 버전 선택 설치&lt;/span&gt; choco &lt;span style=&quot;color: #005cc5;&quot;&gt;install&lt;/span&gt; firefox --version &lt;span style=&quot;color: #63a35c;&quot;&gt;90.0&lt;/span&gt;.2 &lt;span style=&quot;color: #969896;&quot;&gt;#패키지 삭제하기&lt;/span&gt; choco uninstall 패키지명 &lt;span style=&quot;color: #969896;&quot;&gt;#패키지 업그레이드&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;출처&lt;a href=&quot;https://velog.io/@shinyejin0212/chocolatey-Windows%EC%9A%A9-%ED%8C%A8%ED%82%A4%EC%A7%80-%EB%A7%A4%EB%8B%88%EC%A0%80-chocolatey-%EC%84%A4%EC%B9%98-%ED%95%98%EA%B8%B0&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://velog.io/@shinyejin0212/chocolatey-Windows%EC%9A%A9-%ED%8C%A8%ED%82%A4%EC%A7%80-%EB%A7%A4%EB%8B%88%EC%A0%80-chocolatey-%EC%84%A4%EC%B9%98-%ED%95%98%EA%B8%B0&lt;/a&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;command&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1750291498597&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;패키지 검색 choco search 패키지명

패키지 설치 choco install 패키지명

패키지 설치 (프롬프트/버전 포함) choco install -y 패키지명 --version 버전

설치된 패키지 버전 업그레이드 choco upgrade 패키지명

패키지 상세 정보 choco info 패키지명

설치된 패키지 확인 choco list -l

설치된 패키지 삭제 choco uninstall 패키지명

chocolatey 버전 업그레이드 choco upgrade chocolatey&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;chocolatey로 윈도우 패키지 여러개 한번에 설치&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;powershell관리자 권한 실행&lt;/p&gt;
&lt;pre id=&quot;code_1750291536624&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 파일 경로 설정 // 설치할 프로그램 목록 작성 후 저장
$packageFile = &quot;C:\install\packages.txt&quot;

# 각 줄을 읽고 설치
Get-Content $packageFile | ForEach-Object {
    if ($_ -match &quot;--params&quot;) {
        # 따옴표 문제 방지: 직접 전달
        choco install $_ -y
    } else {
        choco install $_ -y
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>TIP</category>
      <category>chocolatey</category>
      <author>뉴히</author>
      <guid isPermaLink="true">https://newheee.tistory.com/150</guid>
      <comments>https://newheee.tistory.com/150#entry150comment</comments>
      <pubDate>Thu, 19 Jun 2025 09:09:28 +0900</pubDate>
    </item>
    <item>
      <title>[Windows] 파일 경로 길이 제한 풀기, 260자 이상 경로 만들기</title>
      <link>https://newheee.tistory.com/149</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://wednesday1304.tistory.com/entry/Windows-%ED%8C%8C%EC%9D%BC-%EA%B2%BD%EB%A1%9C-%EA%B8%B8%EC%9D%B4-%EC%A0%9C%ED%95%9C-%ED%92%80%EA%B8%B0-260%EC%9E%90-%EC%9D%B4%EC%83%81-%EA%B2%BD%EB%A1%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://wednesday1304.tistory.com/entry/Windows-%ED%8C%8C%EC%9D%BC-%EA%B2%BD%EB%A1%9C-%EA%B8%B8%EC%9D%B4-%EC%A0%9C%ED%95%9C-%ED%92%80%EA%B8%B0-260%EC%9E%90-%EC%9D%B4%EC%83%81-%EA%B2%BD%EB%A1%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1749604579887&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Windows] 파일 경로 길이 제한 풀기, 260자 이상 경로 만들기&quot; data-og-description=&quot;1. 경로 길이 제한을 푸는 이유 2. 경로 길이 제한 푸는 방법 2-1. 그룹 정책으로 경로 길이 제한 푸는 방법 2-2. 레지스트리 변경으로 경로 길이 제한 푸는 방법 2-3. PowerShell로 경로 길이 제한 푸는 &quot; data-og-host=&quot;wednesday1304.tistory.com&quot; data-og-source-url=&quot;https://wednesday1304.tistory.com/entry/Windows-%ED%8C%8C%EC%9D%BC-%EA%B2%BD%EB%A1%9C-%EA%B8%B8%EC%9D%B4-%EC%A0%9C%ED%95%9C-%ED%92%80%EA%B8%B0-260%EC%9E%90-%EC%9D%B4%EC%83%81-%EA%B2%BD%EB%A1%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0&quot; data-og-url=&quot;https://wednesday1304.tistory.com/entry/Windows-%ED%8C%8C%EC%9D%BC-%EA%B2%BD%EB%A1%9C-%EA%B8%B8%EC%9D%B4-%EC%A0%9C%ED%95%9C-%ED%92%80%EA%B8%B0-260%EC%9E%90-%EC%9D%B4%EC%83%81-%EA%B2%BD%EB%A1%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/2Dz61/hyY8SHjm2h/wcR1vgLsHkPnhGokZK8BxK/img.png?width=724&amp;amp;height=165&amp;amp;face=0_0_724_165,https://scrap.kakaocdn.net/dn/nMfmC/hyY7Ynp0Bq/ElMQ8DfaitKeTsm55y9BEK/img.png?width=724&amp;amp;height=165&amp;amp;face=0_0_724_165,https://scrap.kakaocdn.net/dn/bc5j8E/hyY8LuEaJy/ypXbQU3XzyHz8jwAHmiAO1/img.png?width=1784&amp;amp;height=1125&amp;amp;face=0_0_1784_1125&quot;&gt;&lt;a href=&quot;https://wednesday1304.tistory.com/entry/Windows-%ED%8C%8C%EC%9D%BC-%EA%B2%BD%EB%A1%9C-%EA%B8%B8%EC%9D%B4-%EC%A0%9C%ED%95%9C-%ED%92%80%EA%B8%B0-260%EC%9E%90-%EC%9D%B4%EC%83%81-%EA%B2%BD%EB%A1%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://wednesday1304.tistory.com/entry/Windows-%ED%8C%8C%EC%9D%BC-%EA%B2%BD%EB%A1%9C-%EA%B8%B8%EC%9D%B4-%EC%A0%9C%ED%95%9C-%ED%92%80%EA%B8%B0-260%EC%9E%90-%EC%9D%B4%EC%83%81-%EA%B2%BD%EB%A1%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/2Dz61/hyY8SHjm2h/wcR1vgLsHkPnhGokZK8BxK/img.png?width=724&amp;amp;height=165&amp;amp;face=0_0_724_165,https://scrap.kakaocdn.net/dn/nMfmC/hyY7Ynp0Bq/ElMQ8DfaitKeTsm55y9BEK/img.png?width=724&amp;amp;height=165&amp;amp;face=0_0_724_165,https://scrap.kakaocdn.net/dn/bc5j8E/hyY8LuEaJy/ypXbQU3XzyHz8jwAHmiAO1/img.png?width=1784&amp;amp;height=1125&amp;amp;face=0_0_1784_1125');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[Windows] 파일 경로 길이 제한 풀기, 260자 이상 경로 만들기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. 경로 길이 제한을 푸는 이유 2. 경로 길이 제한 푸는 방법 2-1. 그룹 정책으로 경로 길이 제한 푸는 방법 2-2. 레지스트리 변경으로 경로 길이 제한 푸는 방법 2-3. PowerShell로 경로 길이 제한 푸는&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;wednesday1304.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출처:&amp;nbsp;&lt;a href=&quot;https://wednesday1304.tistory.com/entry/Windows-파일-경로-길이-제한-풀기-260자-이상-경로-만들기&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://wednesday1304.tistory.com/entry/Windows-파일-경로-길이-제한-풀기-260자-이상-경로-만들기&lt;/a&gt;&amp;nbsp;[만들어가는&amp;nbsp;아스가르드:티스토리]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;완료후 재부팅해도 안됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;git&amp;nbsp;config&amp;nbsp;--global&amp;nbsp;core.longpaths&amp;nbsp;true&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;명령어 실행 후 다시 clone하니 잘됨!&lt;/p&gt;</description>
      <category>TIP</category>
      <author>뉴히</author>
      <guid isPermaLink="true">https://newheee.tistory.com/149</guid>
      <comments>https://newheee.tistory.com/149#entry149comment</comments>
      <pubDate>Wed, 11 Jun 2025 10:16:27 +0900</pubDate>
    </item>
    <item>
      <title>[Git] 이미 푸시된 커밋 메시지 수정하는 방법 (amend, rebase)</title>
      <link>https://newheee.tistory.com/148</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;amend&lt;/p&gt;
&lt;pre id=&quot;code_1731543576423&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git commit --amend
최근의 커밋메세지가 뜨면 수정 후
esc &amp;gt; :wq 하고 종료 하면 수정완료

또는

git commit --amend -m &quot;바꿀 커밋 메시지 내용&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;rebase&lt;/p&gt;
&lt;pre id=&quot;code_1731543660473&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git rebase -i HEAD~1
최근 한개의 커밋볼땐 HEAD~1
두개는 HEAD~2
이런식&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한개의 커밋 수정시&lt;/p&gt;
&lt;pre id=&quot;code_1731543691935&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;1. i 를 눌러 입력모드로 전환
2. 수정할 커밋에 있는 pick -&amp;gt; reword 로 변경
3. esc 눌러 입력모드에 빠져나옴
4. :wq 입력하여 엔터를 눌러 저장하고 종료&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;수정해야 할 커밋 내용이 나오며 똑같이&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;i -&amp;gt; 커밋메시지 수정 -&amp;gt; esc -&amp;gt; :wq -&amp;gt; enter&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;순으로 진행하면 정상적으로 커밋 메시지가 수정된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1731543741391&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git push --force origin [브랜치 이름]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하면 끝&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두개이전의 커밋 수정시&lt;/p&gt;
&lt;pre id=&quot;code_1731543808416&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git rebase -i HEAD~2

하면 

pick | 커밋 번호 | 커밋 메시지
pick | 커밋 번호 | 커밋 메시지

이렇게 뜸


=&amp;gt;

reword | 커밋 번호 | 커밋 메시지 수정
pick | 커밋 번호 | 커밋 메시지

i를 눌러서 편집모드로 들어간다음&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수정 후 esc &amp;gt; :wq해서 종료&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런다음 원격에 push&lt;/p&gt;
&lt;pre id=&quot;code_1731543936951&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git push --force 브랜치 이름&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 하면 완료라고 했는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 브랜치 확인하니&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;(no branch, rebasing [브랜치명]) 뜸&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아직 rebase가 제대로 종료가 안된것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1731544027811&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git rebase --continue
git rebase --abort
git rebase -i &amp;lt;커밋 해시&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하면 종료된당&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고&lt;br /&gt;&lt;a href=&quot;https://jjang-j.tistory.com/104&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://jjang-j.tistory.com/104&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1731544230741&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Git] 이미 푸시된 커밋 메시지 수정하는 방법 (amend, rebase)&quot; data-og-description=&quot;시작하기 앞서...아무 생각 없이 이전 커밋 메시지를 복붙하고 조금 수정한 뒤, 푸시를 했는데 커밋 메시지를 잘 못 쓴 것을 발견했다.  사실 이런 경우가 생기면 외면했었는데(ㅋㅋㅋㅋㅋㅋㅋ&quot; data-og-host=&quot;jjang-j.tistory.com&quot; data-og-source-url=&quot;https://jjang-j.tistory.com/104&quot; data-og-url=&quot;https://jjang-j.tistory.com/104&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/puce1/hyXwovHOWe/LgmICFnGGhK7blaZ1FWOV1/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/baypVc/hyXwnctJzD/wtj7Aeu2pVljew4j6ocMh1/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/cwWL5b/hyXwuiBu09/wsRKRzYuTXejQs4AxCGNU0/img.png?width=1228&amp;amp;height=1132&amp;amp;face=0_0_1228_1132&quot;&gt;&lt;a href=&quot;https://jjang-j.tistory.com/104&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://jjang-j.tistory.com/104&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/puce1/hyXwovHOWe/LgmICFnGGhK7blaZ1FWOV1/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/baypVc/hyXwnctJzD/wtj7Aeu2pVljew4j6ocMh1/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/cwWL5b/hyXwuiBu09/wsRKRzYuTXejQs4AxCGNU0/img.png?width=1228&amp;amp;height=1132&amp;amp;face=0_0_1228_1132');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[Git] 이미 푸시된 커밋 메시지 수정하는 방법 (amend, rebase)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;시작하기 앞서...아무 생각 없이 이전 커밋 메시지를 복붙하고 조금 수정한 뒤, 푸시를 했는데 커밋 메시지를 잘 못 쓴 것을 발견했다.  사실 이런 경우가 생기면 외면했었는데(ㅋㅋㅋㅋㅋㅋㅋ&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;jjang-j.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://so-kyte.tistory.com/161&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://so-kyte.tistory.com/161&lt;/a&gt;&lt;/p&gt;</description>
      <category>Git</category>
      <author>뉴히</author>
      <guid isPermaLink="true">https://newheee.tistory.com/148</guid>
      <comments>https://newheee.tistory.com/148#entry148comment</comments>
      <pubDate>Thu, 14 Nov 2024 09:29:08 +0900</pubDate>
    </item>
    <item>
      <title>[Jest] 자바스크립트 테스트 프레임워크 : test 코드로 JS 의 기능 및 로직 점검하기 - React 테스트 코드</title>
      <link>https://newheee.tistory.com/142</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;347&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bK65nd/btsHS0wyMGi/BpkY5kpQJYtDuARGKdSGFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bK65nd/btsHS0wyMGi/BpkY5kpQJYtDuARGKdSGFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bK65nd/btsHS0wyMGi/BpkY5kpQJYtDuARGKdSGFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbK65nd%2FbtsHS0wyMGi%2FBpkY5kpQJYtDuARGKdSGFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;860&quot; height=&quot;347&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;347&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1 id=&quot;2-jest란&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;Jest란?&lt;/h1&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;Jest는 페이스북에서 만든 JavaScript testing framework이다. config를 따로 설정하지 않아도 빠르게 테스팅 환경을 만들 수 있다는 것이 큰 장점이다. 2 장에서의 기본 개념과 코드는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; href=&quot;https://youtu.be/g4MdUjxA-S4&quot;&gt;코딩앙마님의 Jest 강의&lt;/a&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;와&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; href=&quot;https://www.udemy.com/course/javascript-zw/&quot;&gt;유데미의 JS 강의&lt;/a&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;중 테스팅 모듈 파트를 참고하여 작성하였다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #1c1e21; text-align: start;&quot;&gt;1. Install Jest&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1717907184531&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm install --save-dev jest&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: left;&quot;&gt;개발자 도구이므로&lt;span&gt; 개발환경에서만 사용할거기 때문에 -&lt;/span&gt;&lt;/span&gt;-save-dev&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: left;&quot;&gt;를 붙여 설치한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1 id=&quot;2-jest란&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;2. Test 실행&lt;/h1&gt;
&lt;pre id=&quot;code_1717907464120&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package.json
  &quot;scripts&quot;: {
    &quot;test&quot;: &quot;jest&quot;
  },&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스크립트 test 부분을 'jest'로 변경해준다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 테스트 코드 작성 (파일 생성)&lt;/p&gt;
&lt;pre id=&quot;code_1717908322673&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;파일명.test.js

또는 __tests__&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;test 파일을 생성하면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;npm test시에 모든 .test.js 파일들을 다 불러와 실행한다.&lt;br /&gt;직접 원하는 파일만 테스트 하고싶을 경우 파일명이나 경로 입력&lt;/p&gt;
&lt;pre id=&quot;code_1717908260982&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//fn.test.js 파일 작성

const 함수명 = require('./파일명')

test('함수 설명 적어줌', ()=&amp;gt;{
	expect(검증할 대상 작성).toBe(원하는 결과값)
})

// fn.js
const fn = () =&amp;gt; {
	add: (num1, num2) =&amp;gt; num1 + num2,
    makeUser: (name, age) =&amp;gt; ({name, age, gender: undefined}),
    throwErr: () =&amp;gt; {
    	throw new Error('xx');
    },    
}

module.exports = fn;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;npm test 실행시&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Tests:에 test 결과값이 나옴, 1failed, 2passed, 3 total&amp;nbsp; 이런식으로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; &lt;b&gt;toBe 함수를 Matcher라고 한다:문자나 숫자등 기본 타입값을 비교할때 사용한다&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;-&amp;gt; 객체나 배열은 &lt;span style=&quot;color: #212529; text-align: left;&quot;&gt;toEqual 을 사용해 줘야한다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;21-유용한-matchers&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;2.1 유용한 matchers&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Matcher는 테스트 대상 함수에서 반환된 값을 예측하기 위해 사용한다.&lt;/p&gt;
&lt;h3 id=&quot;211-primitive-value&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;2.1.1 Primitive value&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;예측하는 값이 원시값(number, string, boolean 등)일 때는 다음의 macher를 자주 사용한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;toBe()&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 해당 값과 일치하면 통과&lt;/li&gt;
&lt;li&gt;toBeNull()&lt;span&gt;&amp;nbsp;&lt;/span&gt;toBeUndefined()&lt;span&gt;&amp;nbsp;&lt;/span&gt;toBeDefined()&lt;span&gt;&amp;nbsp;&lt;/span&gt;: &lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: left;&quot;&gt;Null&lt;/span&gt;, Undefined, Defined인 경우 통과&lt;/li&gt;
&lt;li&gt;toBeTruthy()&lt;span&gt;&amp;nbsp;&lt;/span&gt;toBeFasly()&lt;span&gt;&amp;nbsp;&lt;/span&gt;: boolean 값 판별&lt;/li&gt;
&lt;li&gt;toBeGreaterThan()크다, &lt;span&gt; &lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: left;&quot;&gt;toBeGreaterThanOrEqual() 크거나 같다, &lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: left;&quot;&gt;toBeLessTan() 작다, toBeLessThanOrEqual()작거나 같다&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;: 이상, 이하, 초과, 미만&lt;/li&gt;
&lt;li&gt;toBeCloseTo() : 소수점 계산 시 사용&lt;/li&gt;
&lt;li&gt;toMatch(/H/)&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 정규 표현식으로 문자열 판단(포함되어 있는지 - 대소문자 구별 | 구별 없애려면 toMatch(/H/i)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;212-reference-value&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;2.1.2 Reference value&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;toEqual()&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 참조값(객체, 배열)을 비교할 때. 해당 값 포함하면 true&lt;/li&gt;
&lt;li&gt;toStrictEqual()&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 더 엄격한 비교. 완전히 똑같아야 true&lt;/li&gt;
&lt;li&gt;toContain()&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 배열에서 아이템 포함되어 있는지
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;ex)&lt;span&gt;&amp;nbsp;&lt;/span&gt;expect([&quot;a&quot;, &quot;b&quot;, &quot;c&quot;]).toContain(&quot;a&quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;213-error-발생-여부&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;2.1.3 Error 발생 여부&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;테스트에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;throw new Error(&quot;Error msg&quot;)&lt;span&gt;&amp;nbsp;&lt;/span&gt;등의 에러 발생 여부를 체크하기 위해서는 아래와 같은 코드를 작성한다. 에러 메시지를 특정하여 잡아내는 것도 가능하다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;color: #000000; text-align: left;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;// fn.test.js // 테스트 코드
const fn = require(&quot;./fn&quot;);

test(&quot;에러가 발생하나요?&quot;, () =&amp;gt; {
  expect(()=&amp;gt; fn.throwErr()).toThrow() // 어떤 내용이던 상관없이 예외가 발생하면 passed가 된다: 결과 true
});
// 특정 error인지 확인하기 위해서는 .toThrow(원하는error)
test(&quot;에러가 발생하나요?&quot;, () =&amp;gt; {
  expect(()=&amp;gt; fn.throwErr()).toThrow(&quot;oo&quot;) // 결과는 false, 같은 에러메시지어야 true
});


// fn.js
const fn = () =&amp;gt; {
	add: (num1, num2) =&amp;gt; num1 + num2,
    makeUser: (name, age) =&amp;gt; ({name, age, gender: undefined}),
    throwErr: () =&amp;gt; {
    	throw new Error('xx');
    },    
}

module.exports = fn;&lt;/code&gt;&lt;/pre&gt;</description>
      <category>React</category>
      <category>jest</category>
      <category>react테스트코드</category>
      <author>뉴히</author>
      <guid isPermaLink="true">https://newheee.tistory.com/142</guid>
      <comments>https://newheee.tistory.com/142#entry142comment</comments>
      <pubDate>Sun, 9 Jun 2024 17:59:00 +0900</pubDate>
    </item>
    <item>
      <title>하나의 Repository에 여러 프로젝트 올리기</title>
      <link>https://newheee.tistory.com/141</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. Github에 리포지토리를 만들고 레포지토리에 넣을 여러 프로젝트중 하나의 프로젝트를 하나 올린다.&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부모 리포지토리에 들어갈 자식 리포지토리이다.&lt;/p&gt;
&lt;pre id=&quot;code_1716569205134&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git init
git add .
git commit -m &quot;커밋 메시지&quot;
git remote add origin &quot;리포지토리 주소&quot;
git branch -M main
git push origin main&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 깃허브 새로운 레포지토리 생성&amp;lt;부모 레포지토리&amp;gt;&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여러 프로젝트를 담을&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;부모 리포지토리&lt;/span&gt;의 역할을 함.&lt;/li&gt;
&lt;li&gt;처음 한 번만 해주면 됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 부모 레포지토리 clone&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1716568042969&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git clone [부모 리포지토리 주소]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 빈 리포지토리 를 clone 했기때문에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빈 저장소를 복제한 것 처럼 보입니다 라고 경고가 뜰 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무시 또는&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;color: #000000; text-align: left;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;git commit --allow-empty -n -m &quot;커밋메시지&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나중에 자식 리포지토리 생성시에도 경고가 뜨기때문에 미리 커밋한번 해주기를 추천&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;3-부모-리포지토리의-디렉토리로-이동한다&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 부모 리포지토리의 디렉토리로 이동한다.&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1716568247947&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cd [clone한 부모 리포지토리 이름]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5. subtree를 이용해 부모 리포지토리에 자식 리포지토리를 더해준다.&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1716568477419&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git subtree add --prefix=[폴더 이름] [1번에서 만든 자식 리포지토리 주소] [branch 이름]&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여기서 폴더 이름은 깃허브에서 보여질 여러개 프로젝트중 한개의 폴더의 이름을 설정하는 것이다.&lt;/li&gt;
&lt;li&gt;클론한 로컬 폴더 안에 처음만든 자식 프로젝트가 들어와 있다.&lt;/li&gt;
&lt;li&gt;빈 리포지토리 클론했다는 경고를 무시했다면 여기서 또 경고가 뜬다(그럼 git commit --allow-empty -n -m &quot;커밋메시지&quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;6.마지막으로 깃허브에 push하기&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1716569449178&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git push origin main&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 부모 리포지토리에 프로젝트가 폴더로 잘 들어가있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잘 올라갔으면 1번에서 만들었던 자식 레포지토리는 지워도 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;️-이후에-프로젝트를-올릴-때는-아래처럼만-해주면-된다&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;이후에 프로젝트를 올릴 때&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1716569541220&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git clone 부모 리포지토리 주소
cd 부모 리포지토리 이름
git subtree add --prefix-폴더 이름 자식 리포지토리 주소 branch 이름
git commit -m &quot;커밋 메시지&quot;
git push origin main&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Git</category>
      <author>뉴히</author>
      <guid isPermaLink="true">https://newheee.tistory.com/141</guid>
      <comments>https://newheee.tistory.com/141#entry141comment</comments>
      <pubDate>Sat, 25 May 2024 01:56:13 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 - 약수의 개수와 덧셈 javascript</title>
      <link>https://newheee.tistory.com/140</link>
      <description>&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;문제설명&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;739&quot; data-origin-height=&quot;291&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBA85e/btsHl2V5XvY/ZCQR6ZR18B76PgN1u2EGnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBA85e/btsHl2V5XvY/ZCQR6ZR18B76PgN1u2EGnk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBA85e/btsHl2V5XvY/ZCQR6ZR18B76PgN1u2EGnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBA85e%2FbtsHl2V5XvY%2FZCQR6ZR18B76PgN1u2EGnk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;739&quot; height=&quot;291&quot; data-origin-width=&quot;739&quot; data-origin-height=&quot;291&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;738&quot; data-origin-height=&quot;695&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kP7R2/btsHmE7516o/Pu5UQxurGv8bV2xHMs4PL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kP7R2/btsHmE7516o/Pu5UQxurGv8bV2xHMs4PL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kP7R2/btsHmE7516o/Pu5UQxurGv8bV2xHMs4PL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkP7R2%2FbtsHmE7516o%2FPu5UQxurGv8bV2xHMs4PL1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;738&quot; height=&quot;695&quot; data-origin-width=&quot;738&quot; data-origin-height=&quot;695&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;풀이&lt;/p&gt;
&lt;pre id=&quot;code_1715318458498&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(left, right) {
    var answer = 0;
    for(let i=left; i&amp;lt;=right; i++ ){
        let count = 0;
        for(let j=1; j&amp;lt;=i; j++ ){
            if(i%j === 0) count+=1;
        }
        if(count % 2 === 0) answer+=i
        else answer-=i
    } 
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 사람 풀이&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1715318493629&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(left, right) {
    var answer = 0;
    for (let i = left; i &amp;lt;= right; i++){
        if(Number.isInteger(Math.sqrt(i)) === true){
            answer -= i
        }else{
            answer += i
        }
    }
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;제곱근이 정수면, 약수의 갯수가 홀수&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;니 빼주고 이외의 상황은 모두 약수가 짝수니까 더해주는 방법&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;실행 속도도 훨씬 빠르다&lt;/span&gt;&lt;/p&gt;</description>
      <category>Algorithm</category>
      <category>math</category>
      <category>math.sqrt()</category>
      <category>알고리즘</category>
      <category>약수</category>
      <category>제곱근</category>
      <category>프로그래머스</category>
      <author>뉴히</author>
      <guid isPermaLink="true">https://newheee.tistory.com/140</guid>
      <comments>https://newheee.tistory.com/140#entry140comment</comments>
      <pubDate>Fri, 10 May 2024 14:24:26 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 - 리스트 자르기 javascript</title>
      <link>https://newheee.tistory.com/139</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;문제&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;정수&amp;nbsp;&lt;/span&gt;n&lt;span style=&quot;text-align: left;&quot;&gt;과 정수 3개가 담긴 리스트&amp;nbsp;&lt;/span&gt;slicer&lt;span style=&quot;text-align: left;&quot;&gt;&amp;nbsp;그리고 정수 여러 개가 담긴 리스트&amp;nbsp;&lt;/span&gt;num_list&lt;span style=&quot;text-align: left;&quot;&gt;가 주어집니다.&amp;nbsp;&lt;/span&gt;slicer&lt;span style=&quot;text-align: left;&quot;&gt;에 담긴 정수를 차례대로 a, b, c라고 할 때,&amp;nbsp;&lt;/span&gt;n&lt;span style=&quot;text-align: left;&quot;&gt;에 따라 다음과 같이&amp;nbsp;&lt;/span&gt;num_list&lt;span style=&quot;text-align: left;&quot;&gt;를 슬라이싱 하려고 합니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;n&amp;nbsp;=&amp;nbsp;1&amp;nbsp;:&amp;nbsp;num_list의&amp;nbsp;0번&amp;nbsp;인덱스부터&amp;nbsp;b번&amp;nbsp;인덱스까지&lt;/li&gt;
&lt;li&gt;n = 2 : num_list의 a번 인덱스부터 마지막 인덱스까지&lt;/li&gt;
&lt;li&gt;n = 3 : num_list의 a번 인덱스부터 b번 인덱스까지&lt;/li&gt;
&lt;li&gt;n = 4 : num_list의 a번 인덱스부터 b번 인덱스까지 c 간격으로&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;올바르게&amp;nbsp;슬라이싱한&amp;nbsp;리스트를&amp;nbsp;return하도록&amp;nbsp;solution&amp;nbsp;함수를&amp;nbsp;완성해주세요.&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1316&quot; data-origin-height=&quot;666&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjDxiE/btsHlEmPm4s/TEFlpqdOyoiYtl1mhzkAj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjDxiE/btsHlEmPm4s/TEFlpqdOyoiYtl1mhzkAj1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjDxiE/btsHlEmPm4s/TEFlpqdOyoiYtl1mhzkAj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjDxiE%2FbtsHlEmPm4s%2FTEFlpqdOyoiYtl1mhzkAj1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1316&quot; height=&quot;666&quot; data-origin-width=&quot;1316&quot; data-origin-height=&quot;666&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1296&quot; data-origin-height=&quot;612&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ecIJjL/btsHiIEvV3p/yDwsHSLa1C6Pb4qeALefr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ecIJjL/btsHiIEvV3p/yDwsHSLa1C6Pb4qeALefr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ecIJjL/btsHiIEvV3p/yDwsHSLa1C6Pb4qeALefr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FecIJjL%2FbtsHiIEvV3p%2FyDwsHSLa1C6Pb4qeALefr1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1296&quot; height=&quot;612&quot; data-origin-width=&quot;1296&quot; data-origin-height=&quot;612&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1316&quot; data-origin-height=&quot;896&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhEbMD/btsHjvEFmAW/0R1hUIgTKOIiWdl8LTUzDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhEbMD/btsHjvEFmAW/0R1hUIgTKOIiWdl8LTUzDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhEbMD/btsHjvEFmAW/0R1hUIgTKOIiWdl8LTUzDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhEbMD%2FbtsHjvEFmAW%2F0R1hUIgTKOIiWdl8LTUzDk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1316&quot; height=&quot;896&quot; data-origin-width=&quot;1316&quot; data-origin-height=&quot;896&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 풀이&lt;/p&gt;
&lt;pre id=&quot;code_1715260992665&quot; class=&quot;lsl&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;function solution(n, slicer, num_list) {
   if(n===1) {
        return num_list.slice(0,slicer[1]+1)
    }
    if(n===2) {
        return num_list.slice(slicer[0])
    }
    if(n===3) {
        return num_list.slice(slicer[0],slicer[1]+1)
    }
    if(n===4) {
        return num_list.slice(slicer[0],slicer[1]+1).filter((_,i)=&amp;gt;i%slicer[2]===0)
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고할 다른 사람 풀이&lt;/p&gt;
&lt;pre id=&quot;code_1715261040607&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(n, slicer, num_list) {
    let [a, b, c] = [...slicer];

    switch(n) {
        case 1:
            return num_list.slice(0, b + 1);
        case 2:
            return num_list.slice(a);
        case 3:
            return num_list.slice(a, b + 1);
        case 4:
            return num_list.slice(a, b + 1).filter((_, idx) =&amp;gt; !(idx % c));
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>javascript</category>
      <category>리스트자르기</category>
      <category>알고리즘</category>
      <category>프로그래머스</category>
      <author>뉴히</author>
      <guid isPermaLink="true">https://newheee.tistory.com/139</guid>
      <comments>https://newheee.tistory.com/139#entry139comment</comments>
      <pubDate>Thu, 9 May 2024 22:25:28 +0900</pubDate>
    </item>
  </channel>
</rss>