<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>금붕어의 일기장</title>
    <link>https://goldfishdiary.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Thu, 23 Jul 2026 04:22:34 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>금붕어 송인호</managingEditor>
    <image>
      <title>금붕어의 일기장</title>
      <url>https://tistory1.daumcdn.net/tistory/4382300/attach/ebd9ab0759544294940c6a0c95ee74ff</url>
      <link>https://goldfishdiary.tistory.com</link>
    </image>
    <item>
      <title>입사 뭐시기</title>
      <link>https://goldfishdiary.tistory.com/284</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://imminent-actor-8cf.notion.site/156242a0fce3804cad3dda5656110cd4?pvs=4&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://imminent-actor-8cf.notion.site/156242a0fce3804cad3dda5656110cd4?pvs=4&lt;/a&gt;&lt;/p&gt;</description>
      <author>금붕어 송인호</author>
      <guid isPermaLink="true">https://goldfishdiary.tistory.com/284</guid>
      <comments>https://goldfishdiary.tistory.com/284#entry284comment</comments>
      <pubDate>Sun, 8 Dec 2024 20:17:34 +0900</pubDate>
    </item>
    <item>
      <title>EP0. 골디학개론</title>
      <link>https://goldfishdiary.tistory.com/283</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;참고로 내이름은 골디다.&lt;br /&gt;회사에서 쓰는 닉네임인데, 그 이유가 뭔지 아는가.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;금붕어의 일기장이라는 블로그를 운영하기 때문이다.&lt;br /&gt;그렇다 이 블로그의 이름은 금붕어의 일기장이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;신년을 맞이해서 이런 저런걸 하다가 생각을 했다.&lt;br /&gt;뭐라도 남기자.&lt;br /&gt;내 몇 안되는 인생에서도 깨달은 내용은 뭐라도 남아야 개이득이라는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 이때에만 남길수 있는 것이 있다.&lt;br /&gt;나의 생각, 가치관, 지식, 경험 등등.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그래서 적어보려 한다.&lt;br /&gt;나는 어떤 사람이며, 어떤 마음가짐을 가지고 있으며,&lt;br /&gt;어떤 생각을 하며, 어떤 로직을 거쳐 그런 생각을 가지고 있는지.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;어차피 이 블로그는&lt;br /&gt;HTML 이스케이프와&lt;br /&gt;Tailwind CSS 설치법이 최고 조회수인&lt;br /&gt;사실상 그냥 일기장이기 때문에 편한 마음으로 적어본다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그래서 노가리 까듯 말해볼 생각이다.&lt;br /&gt;지나가다 놀라시는 분 없길 바란다.&lt;/p&gt;</description>
      <category>골디학개론</category>
      <author>금붕어 송인호</author>
      <guid isPermaLink="true">https://goldfishdiary.tistory.com/283</guid>
      <comments>https://goldfishdiary.tistory.com/283#entry283comment</comments>
      <pubDate>Mon, 5 Feb 2024 23:02:25 +0900</pubDate>
    </item>
    <item>
      <title>Vue 배우기 (1) - 속성 바인딩, 디렉티브, 단축어</title>
      <link>https://goldfishdiary.tistory.com/280</link>
      <description>&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Vue 객체로 속성에 바인딩하기&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;기본적으로 HTML 코드가 브라우저에서 DOM으로 파싱이 되고 나면,&lt;br /&gt;기존에는 값을 바꾸거나 이벤트를 추가하는 등의 동작을 하려면&lt;br /&gt;DOM 객체에 직접 접근해서 변경해줘야 했다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Vue에서는 엘리먼트에 이벤트, 변수등을 바인딩하여&lt;br /&gt;스크립트에서 더 쉽게접근할 수 있도록 하였다.&lt;/p&gt;
&lt;pre id=&quot;code_1692426421250&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// html
&amp;lt;button :disabled=&quot;disabled&quot; @click=&quot;handleClick&quot;&amp;gt; 버튼 &amp;lt;/button&amp;gt;

// js
&amp;lt;script&amp;gt;
export default {
  data() {
    // disabled 바인딩
    return {
      disabled: false,
    }
  },
  methods: {
    // handleClick 바인딩
    handleClick() {
      this.disabled = !this.disabled;
    }
  },
}
&amp;lt;/script&amp;gt;&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;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;디렉티브 (directive)&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;엘리먼트에 기본적으로 넘겨줄 수 있는 Prop들 외에도,&lt;br /&gt;Vue에서 제공하는 Prop들이 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;앞에 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;v-&lt;/b&gt;&lt;/span&gt;가 붙는 prop들이 Vue에서 제공해주는 것들인데,&lt;br /&gt;이 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;v-&lt;/b&gt;&lt;/span&gt;를 디렉티브라고 한다&lt;/p&gt;
&lt;pre id=&quot;code_1692426706654&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;button
  v-bind:disabled=&quot;disabled&quot;
  v-on:click=&quot;handleClick&quot;
  v-if=&quot;visible&quot;
&amp;gt;
  &amp;lt;p v-for=&quot;item in lists&quot;&amp;gt;
    {{ item }}
  &amp;lt;/p&amp;gt;
&amp;lt;/button&amp;gt;&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;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;단축어&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;위에서 사용한 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;v-bind&lt;/b&gt;&lt;/span&gt;와 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;v-on&lt;/b&gt;&lt;/span&gt;은 간단하게 축약해서 사용할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1692426957495&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// v-bind:prop -&amp;gt; :prop
&amp;lt;button v-bind:disabled=&quot;disabled&quot; /&amp;gt;
&amp;lt;button :disabled=&quot;disabled&quot; /&amp;gt;

// v-on:click -&amp;gt; @click
&amp;lt;button v-on:click=&quot;handleClick&quot; /&amp;gt;
&amp;lt;button @click=&quot;handleClick&quot; /&amp;gt;&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;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;익스프레션 사용하기&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;리액트와 달리 Vue에서는 문자열에 Expression을 쓰는 괴이한 형태다.&lt;br /&gt;나는 리액트를 써와서 그런지 굉장히 당황했다.&lt;/p&gt;
&lt;pre id=&quot;code_1692427368273&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;button
  @click=&quot;handleClick(disabled)&quot;
/&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;리액트는 string과 변수를 명확히 구분하는 편이라&lt;br /&gt;개인적으로는 리액트가 더 취향&lt;/p&gt;</description>
      <category>프론트엔드/Vue.js</category>
      <author>금붕어 송인호</author>
      <guid isPermaLink="true">https://goldfishdiary.tistory.com/280</guid>
      <comments>https://goldfishdiary.tistory.com/280#entry280comment</comments>
      <pubDate>Sat, 19 Aug 2023 15:44:49 +0900</pubDate>
    </item>
    <item>
      <title>Next.js 13 - App Router</title>
      <link>https://goldfishdiary.tistory.com/279</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;오랜만에 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;create-next-app&lt;/b&gt;&lt;/span&gt;으로 프로젝트를 생성했더니 &lt;br /&gt;폴더 구조가 달라졌길래 공식 문서를 확인해봤다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;the app Router&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;13버전에서부터 새로운 App Router라는게 도입되었다고 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이전에 사용하던 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;pages&lt;/b&gt;&lt;/span&gt;도 여전히 동작하며,&lt;br /&gt;혼용이 가능하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;두 라우터 (pages와 app router)가 충돌할 경우,&lt;br /&gt;app router가 더 우선적으로 적용된다고 한다.&lt;br /&gt;경로가 충돌하면 빌드 과정에서 에러가 발생한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;또한 서버 컴포넌트와 클라이언트 컴포넌트를 사용할 수 있다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;폴더와 파일의 역할&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;폴더는 라우트를 뜻한다.&lt;br /&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;src/app/page.tsx&lt;/b&gt;&lt;/span&gt;는 기존의 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;src/pages/index.tsx&lt;/b&gt;&lt;/span&gt;와 동일하다.&lt;br /&gt;다른 예로, &lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;src/app/foo/bar/page.tsx&lt;/b&gt;&lt;/span&gt;는 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;src/pages/foo/bar.tsx&lt;/b&gt;&lt;/span&gt;와 동일하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;파일은 해당 라우트에 적용될 UI 요소들이다.&lt;br /&gt;특정 파일명에 대해서 특수한 동작들을 한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;자신의 세그먼트와 자식에게 적용되는 것들&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;layout&lt;/b&gt;&lt;/span&gt; - 레이아웃 적용. children으로 page의 내용을 삽입한다.&lt;br /&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;loading&lt;/b&gt;&lt;/span&gt; - 로딩시에 적용되는 UI. (React suspense boundary에 잡힘)&lt;br /&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;not-found&lt;/b&gt;&lt;/span&gt; - 404시에 표시되는 UI. (React error boundary에 잡힘)&lt;br /&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;error&lt;/b&gt;&lt;/span&gt; - 에러시에 표시되는 UI. (React error boundary에 잡힘)&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;해당 세그먼트에만 적용되는 것들&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;page&lt;/b&gt;&lt;/span&gt; - 해당 경로에 접근할 수 있게 하는 UI&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;기타&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;global-error&lt;/b&gt;&lt;/span&gt; - 글로벌 에러 UI&lt;br /&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;route&lt;/b&gt;&lt;/span&gt; - 서버사이드 API 엔드포인트&lt;br /&gt;template - ???&lt;br /&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;default&lt;/b&gt;&lt;/span&gt; - Parallel Routes에 사용되는 Fallback UI&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;마무리&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;언제 나왔나했더니 작년 10월에 나왔다.&lt;br /&gt;너무 뒷북인거 같기도 하고.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그래도 이제 알면 그만이지~&lt;/p&gt;</description>
      <category>프론트엔드/React.js</category>
      <author>금붕어 송인호</author>
      <guid isPermaLink="true">https://goldfishdiary.tistory.com/279</guid>
      <comments>https://goldfishdiary.tistory.com/279#entry279comment</comments>
      <pubDate>Thu, 10 Aug 2023 23:52:28 +0900</pubDate>
    </item>
    <item>
      <title>컴포넌트 기능 관리에 대한 고찰</title>
      <link>https://goldfishdiary.tistory.com/278</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;제목을 뭘로 지어야 할지 모르겠어서 대충 써봤다.&lt;br /&gt;갑자기 생각났는데, 기존의 고민을 해결할 수 있을 것 같아 급하게 써본다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;다양한 기능을 가지는 최하위 UI 컴포넌트&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;기능 개발을 하다보면 UI 컴포넌트를 관리하게 된다.&lt;br /&gt;제일 복잡한 데이터테이블 컴포넌트를 가져와보자&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1977&quot; data-origin-height=&quot;2023&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o3Qt9/btsp64jzBZ1/B7TNZl0N4ZIcrhWljLGb10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o3Qt9/btsp64jzBZ1/B7TNZl0N4ZIcrhWljLGb10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o3Qt9/btsp64jzBZ1/B7TNZl0N4ZIcrhWljLGb10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo3Qt9%2Fbtsp64jzBZ1%2FB7TNZl0N4ZIcrhWljLGb10%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;542&quot; height=&quot;555&quot; data-origin-width=&quot;1977&quot; data-origin-height=&quot;2023&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이해를 돕기 위해 props의 설명을 써두겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;columns&lt;/b&gt;&lt;/span&gt;: 컬럼 정보. 타이틀, 색상, 정렬가능등의 옵션이 포함됨&lt;br /&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;rows&lt;/b&gt;&lt;/span&gt;: 데이터 배열&lt;br /&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;header&lt;/b&gt;&lt;/span&gt;: 데이터테이블 상단에 표시되는 제목&lt;br /&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;cellStyleOption&lt;/b&gt;&lt;/span&gt;: 셀에 적용되는 스타일관련 옵션들&lt;br /&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;emptyRender&lt;/b&gt;&lt;/span&gt;: 조회 전이거나, rows가 빈 값일 때 표시되는 내용 (React Component 타입)&lt;br /&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;paginationOption&lt;/b&gt;&lt;/span&gt;: 페이지네이션 관련 옵션들&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;만약 이 컴포넌트를 호출한다면 아마 이런 모양일 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-08-06 오전 1.29.35.png&quot; data-origin-width=&quot;479&quot; data-origin-height=&quot;386&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CmsTD/btsqh0T4omk/KzcNnAkoRwkXaRDN5RH93K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CmsTD/btsqh0T4omk/KzcNnAkoRwkXaRDN5RH93K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CmsTD/btsqh0T4omk/KzcNnAkoRwkXaRDN5RH93K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCmsTD%2Fbtsqh0T4omk%2FKzcNnAkoRwkXaRDN5RH93K%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;479&quot; height=&quot;386&quot; data-filename=&quot;스크린샷 2023-08-06 오전 1.29.35.png&quot; data-origin-width=&quot;479&quot; data-origin-height=&quot;386&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;너무 추잡하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;기능이 늘어날수록 외부에서 넣어줘야하는 값들이 늘어날 것이다.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;기본값을 활용하면 줄일 수는 있겠지만, &lt;br /&gt;그것만으로 다양한 바리에이션의 요구사항을 만족하기는 역부족이다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;개선 방법 1: 바리에이션 명시하기&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아예 명시적으로 다양한 바리에이션에 대한 옵션을 지정하는 방법이 있다.&lt;br /&gt;(나중에 나오지만 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;추천하지 않는다&lt;/b&gt;&lt;/span&gt;)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-08-06 오전 1.29.21.png&quot; data-origin-width=&quot;608&quot; data-origin-height=&quot;362&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tzgiL/btsp7UOizQT/65I2a6N2OozUbpATfSx3qK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tzgiL/btsp7UOizQT/65I2a6N2OozUbpATfSx3qK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tzgiL/btsp7UOizQT/65I2a6N2OozUbpATfSx3qK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtzgiL%2Fbtsp7UOizQT%2F65I2a6N2OozUbpATfSx3qK%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;608&quot; height=&quot;362&quot; data-filename=&quot;스크린샷 2023-08-06 오전 1.29.21.png&quot; data-origin-width=&quot;608&quot; data-origin-height=&quot;362&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;장점&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;전달해야하는 여러가지 prop을 생략할 수 있다.&lt;br /&gt;종류가 몇가지 안된다면 편할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;단점&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;종류가 많아지면 복잡해진다.&lt;br /&gt;커버 가능한 경우의 수에 한계가 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;propA&lt;/b&gt;&lt;/span&gt;, &lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;propB&lt;/b&gt;&lt;/span&gt;, &lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;propC&lt;/b&gt;&lt;/span&gt;에 각각 5가지 입력의 경우의 수가 있다면,&lt;br /&gt;총 5 x 5 x 5 = 125의 경우의 수가 나오지만,&lt;br /&gt;개발자가 타입을 명시하게 되면 특정 경우만 지정이 가능하고,&lt;br /&gt;새로운 요구조건이 들어올 때마다 컴포넌트에 지정해줘야한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;눈앞의 요구사항을 쳐내는데에 급급해서 하게되면&lt;br /&gt;나중에 피눈물을 흘리는 케이스다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;왜 피눈물을 흘리는지는 나도 알고 싶지 않았다 ㅠㅠ&lt;/span&gt;&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;개선 방법2: 자주 사용하는 옵션을 상수로 빼기&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;코드의 직관성과 옵션의 재활용을 고려하기 시작하면,&lt;br /&gt;자주 사용하는 옵션들을 상수로 관리할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-08-06 오전 1.29.07.png&quot; data-origin-width=&quot;587&quot; data-origin-height=&quot;537&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c20xnd/btsqd3DySGh/GIEYtkchIiTzsKKzrrdpK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c20xnd/btsqd3DySGh/GIEYtkchIiTzsKKzrrdpK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c20xnd/btsqd3DySGh/GIEYtkchIiTzsKKzrrdpK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc20xnd%2Fbtsqd3DySGh%2FGIEYtkchIiTzsKKzrrdpK0%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;587&quot; height=&quot;537&quot; data-filename=&quot;스크린샷 2023-08-06 오전 1.29.07.png&quot; data-origin-width=&quot;587&quot; data-origin-height=&quot;537&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;장점&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;특정한 옵션을 재활용할 수 있다.&lt;br /&gt;옵션과 컴포넌트를 파일을 분리하여 관리할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;단점&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;일괄적인 변경요청에 취약할 수 있다.&lt;br /&gt;묶여서 사용하는 옵션들이 있을 때, 변경에 대한 관리가 어렵다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;일괄적인 변경요청의 예시를 들어보자.&lt;br /&gt;A, B, C 페이지 모두 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;paginationA&lt;/b&gt;&lt;/span&gt; 옵션을 사용한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 A, B는 같은 구성의 페이지이고, &lt;br /&gt;C는 전혀 다른 페이지의 구성이지만 옵션은 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;paginationA&lt;/b&gt;&lt;/span&gt;를 쓰고 있다.&lt;br /&gt;(겹칠수는 있으니까)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 A, B와 같은 레이아웃에 일괄적으로 다른 페이지네이션을 적용하게 되었다.&lt;br /&gt;그렇다면 개발자 입장에서의 해결방법은 &lt;br /&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;paginationA&lt;/b&gt;&lt;/span&gt;를 전체검색을 해서 변경된 페이지만 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;paginationB&lt;/b&gt;&lt;/span&gt;로 변경하거나,&lt;br /&gt;각 페이지 코드에 찾아 들어가서 수정을 해줘야 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;예시라서 2개만 바꾸면 되지만, &lt;br /&gt;프로젝트의 규모가 있다면 수십개 변경을 각오해야 한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;묶여서 사용하는 옵션의 예시를 들어보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 위의 경우와 같이 A, B, C가 있다고 생각해보자.&lt;br /&gt;A와 B는 페이지 맥락상 비슷한 구성이다.&lt;br /&gt;예를 들면 메일함의 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;받은 메일함&lt;/b&gt;&lt;/span&gt;과 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;즐겨찾기&lt;/b&gt;&lt;/span&gt;같이.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 이 둘이 같은 구성이라는 것을 코드만 보고서는 파악이 어렵다.&lt;br /&gt;또한 같은 구성의 일괄 변경이 있을 때,&amp;nbsp;&lt;br /&gt;특정 구성만 검색하기가 어렵다.&amp;nbsp;&lt;br /&gt;단순히 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;paginationA&lt;/b&gt;&lt;/span&gt;로만 검색하면 C도 검색이 될 테니까.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;개선 방안 3: 옵션 그룹의 관리&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이게 생각한 방식이다.&lt;br /&gt;기존에 이미 있는 방식인지는 모르겠다. 있다면 댓글로 용어를 알려주셨으면.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;옵션을 그룹으로 묶어서 관리하는 방식이다.&lt;br /&gt;백문이 불여일견. 코드로 보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-08-06 오전 1.28.46.png&quot; data-origin-width=&quot;492&quot; data-origin-height=&quot;666&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dd3d7L/btsqh3wtS6Q/POMKnWziFtBPBLXhOeh081/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dd3d7L/btsqh3wtS6Q/POMKnWziFtBPBLXhOeh081/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dd3d7L/btsqh3wtS6Q/POMKnWziFtBPBLXhOeh081/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdd3d7L%2Fbtsqh3wtS6Q%2FPOMKnWziFtBPBLXhOeh081%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;492&quot; height=&quot;666&quot; data-filename=&quot;스크린샷 2023-08-06 오전 1.28.46.png&quot; data-origin-width=&quot;492&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-filename=&quot;스크린샷 2023-08-06 오전 1.28.41.png&quot; data-origin-width=&quot;588&quot; data-origin-height=&quot;550&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cOMPs7/btsqaQj5H8B/NJJxKKkD4ppumaVJIxuet0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cOMPs7/btsqaQj5H8B/NJJxKKkD4ppumaVJIxuet0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cOMPs7/btsqaQj5H8B/NJJxKKkD4ppumaVJIxuet0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOMPs7%2FbtsqaQj5H8B%2FNJJxKKkD4ppumaVJIxuet0%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;588&quot; height=&quot;550&quot; data-filename=&quot;스크린샷 2023-08-06 오전 1.28.41.png&quot; data-origin-width=&quot;588&quot; data-origin-height=&quot;550&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;주요한 값들 (&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;rows&lt;/b&gt;&lt;/span&gt;, &lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;columns&lt;/b&gt;&lt;/span&gt;, &lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;header&lt;/b&gt;&lt;/span&gt;)을 제외하고는&amp;nbsp;&lt;br /&gt;대부분을 세트로 묶어서 관리했다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;일괄적인 변경 요청에도 세트를 수정하면 된다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;한계&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;자 일단 생각은 해봤는데...&lt;br /&gt;한계가 일단 여럿있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 일을 위한 일이 생긴다.&lt;/b&gt; &lt;br /&gt;(호출부는 가벼워지지만, &lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;constants&lt;/b&gt;&lt;/span&gt;가 verbose해진다)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 일괄적인 변경을 예측하기 어렵다.&lt;/b&gt;&lt;br /&gt;예를들어 A, B, C 페이지 모두에 변경이 있다고 한다면...&lt;br /&gt;또는 C와 같은 구성의 D도 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;DATA_TABLE_TYPE_B&lt;/b&gt;&lt;/span&gt;를 공유하고 있었는데,&lt;br /&gt;C만 바뀌고 D는 그대로라면...&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;마무리&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;오 나 개천재인데 생각해보고 써보니&lt;br /&gt;역시 안 쓰는데에는 이유가 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;한층 겸손해진 하루였다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그래도 딱 맞는 상황에 쓰면 괜찮을듯?&lt;/p&gt;</description>
      <category>프론트엔드/React.js</category>
      <category>Component</category>
      <category>REACT</category>
      <category>객체지향</category>
      <author>금붕어 송인호</author>
      <guid isPermaLink="true">https://goldfishdiary.tistory.com/278</guid>
      <comments>https://goldfishdiary.tistory.com/278#entry278comment</comments>
      <pubDate>Sun, 6 Aug 2023 01:37:48 +0900</pubDate>
    </item>
    <item>
      <title>주관적인 소프트웨어 엔지니어의 역량</title>
      <link>https://goldfishdiary.tistory.com/277</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2857&quot; data-origin-height=&quot;1399&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bU33DR/btspolkXzOL/7W39udAYKWwauFlxAK2SMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bU33DR/btspolkXzOL/7W39udAYKWwauFlxAK2SMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bU33DR/btspolkXzOL/7W39udAYKWwauFlxAK2SMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbU33DR%2FbtspolkXzOL%2F7W39udAYKWwauFlxAK2SMk%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;2857&quot; height=&quot;1399&quot; data-origin-width=&quot;2857&quot; data-origin-height=&quot;1399&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>개발 잡부</category>
      <author>금붕어 송인호</author>
      <guid isPermaLink="true">https://goldfishdiary.tistory.com/277</guid>
      <comments>https://goldfishdiary.tistory.com/277#entry277comment</comments>
      <pubDate>Sun, 30 Jul 2023 14:13:55 +0900</pubDate>
    </item>
    <item>
      <title>스로틀링 (Throttling)</title>
      <link>https://goldfishdiary.tistory.com/276</link>
      <description>&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;스로틀링이란 사용자의 디바이스의 부담을 줄이기 위해&lt;br /&gt;&lt;/span&gt;성능을 저하시키는 것을 말합니다.&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;성능을 저하시킨다고하니 뭔가 쓰레기 같은 느낌이지만&lt;br /&gt;모든 것은 하기 나름이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 인간은 60fps보다 빠른 영상은 크게 체감을 못 한다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;근데 300fps짜리 영상을 재생한다면?&lt;br /&gt;인간의 인지로 따라가지도 못하는 속도로 재생하느라 CPU를 혹사하고 있다.&lt;br /&gt;(CPU와 GPU의 인권을 보장하라)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;웹에서는 다음과 같은 케이스가 있을 수 있겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;스크롤 이벤트나 mouse in / out 이벤트의 경우 굉장히 빈번히 발생한다.&lt;br /&gt;하지만 부드럽게 표현이 되지 않아도 되는 경우에는 &lt;br /&gt;딜레이나 호출 횟수로 실행 횟수를 제한하는 경우가 있겠다&amp;nbsp;&lt;/p&gt;</description>
      <category>개발 잡부/도서관</category>
      <author>금붕어 송인호</author>
      <guid isPermaLink="true">https://goldfishdiary.tistory.com/276</guid>
      <comments>https://goldfishdiary.tistory.com/276#entry276comment</comments>
      <pubDate>Sun, 30 Jul 2023 13:55:24 +0900</pubDate>
    </item>
    <item>
      <title>API 해체 응답기 개발 내용</title>
      <link>https://goldfishdiary.tistory.com/275</link>
      <description>&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;프로젝트 소개&lt;/b&gt;&lt;/h3&gt;
&lt;figure id=&quot;og_1681027632250&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;API 해체분석기 소개&quot; data-og-description=&quot;소개 API 해체분석기는 API 응답을 기록하고 분석하는 도구입니다. 인기 게임 리그 오브 레전드 (LOL)의 미니언 해체 분석기에서 따왔습니다. TODO: 링크 연결 제작 배경 회사 팀원분과 얘기를 하다&quot; data-og-host=&quot;goldfishdiary.tistory.com&quot; data-og-source-url=&quot;https://goldfishdiary.tistory.com/274&quot; data-og-url=&quot;https://goldfishdiary.tistory.com/274&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bwJnmL/hySdn2l81T/Fkj3MJhLpMViZQwf2QQEdK/img.png?width=800&amp;amp;height=500&amp;amp;face=0_0_800_500,https://scrap.kakaocdn.net/dn/Y3sqk/hySdmWHg7E/IL99D1P1hBqJ7cTuqZoKTK/img.png?width=800&amp;amp;height=500&amp;amp;face=0_0_800_500,https://scrap.kakaocdn.net/dn/qwnsA/hySdjr9sTD/hqsEwltMy9tjJSs295Rhv0/img.png?width=2560&amp;amp;height=1600&amp;amp;face=0_0_2560_1600&quot;&gt;&lt;a href=&quot;https://goldfishdiary.tistory.com/274&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://goldfishdiary.tistory.com/274&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bwJnmL/hySdn2l81T/Fkj3MJhLpMViZQwf2QQEdK/img.png?width=800&amp;amp;height=500&amp;amp;face=0_0_800_500,https://scrap.kakaocdn.net/dn/Y3sqk/hySdmWHg7E/IL99D1P1hBqJ7cTuqZoKTK/img.png?width=800&amp;amp;height=500&amp;amp;face=0_0_800_500,https://scrap.kakaocdn.net/dn/qwnsA/hySdjr9sTD/hqsEwltMy9tjJSs295Rhv0/img.png?width=2560&amp;amp;height=1600&amp;amp;face=0_0_2560_1600');&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;API 해체분석기 소개&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;소개 API 해체분석기는 API 응답을 기록하고 분석하는 도구입니다. 인기 게임 리그 오브 레전드 (LOL)의 미니언 해체 분석기에서 따왔습니다. TODO: 링크 연결 제작 배경 회사 팀원분과 얘기를 하다&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;goldfishdiary.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;개발 스택&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Typescript:&lt;/b&gt; 정적 타입 언어 사용 (JS 답답해서 못 씀)&lt;br /&gt;&lt;b&gt;React:&lt;/b&gt; 컴포넌트 기반 구현 (JQuery 답답해서 못 씀)&lt;br /&gt;&lt;b&gt;Webpack:&lt;/b&gt; TS 트랜스파일 및 React 컴파일&lt;br /&gt;&lt;b&gt;Chrome API:&lt;/b&gt; Chrome 내부 기능 사용&lt;br /&gt;&lt;b&gt;Jotai:&lt;/b&gt; Atomic 컨셉의 상태 관리 라이브러리&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Eslint&lt;/b&gt;: 문법 및 오타 체크&lt;br /&gt;&lt;b&gt;Prettier&lt;/b&gt;: 컨벤션 자동 수정&lt;br /&gt;&lt;b&gt;Watch&lt;/b&gt;: 파일 변화 감지하여 자동 빌드에 사용&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;구조&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-04-09 오후 5.29.58.png&quot; data-origin-width=&quot;2666&quot; data-origin-height=&quot;1618&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bo3HhY/btr8Mqi86Y0/1urbv94YjZ2lEKHTNseWS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bo3HhY/btr8Mqi86Y0/1urbv94YjZ2lEKHTNseWS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bo3HhY/btr8Mqi86Y0/1urbv94YjZ2lEKHTNseWS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbo3HhY%2Fbtr8Mqi86Y0%2F1urbv94YjZ2lEKHTNseWS0%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;2666&quot; height=&quot;1618&quot; data-filename=&quot;스크린샷 2023-04-09 오후 5.29.58.png&quot; data-origin-width=&quot;2666&quot; data-origin-height=&quot;1618&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Service Worker&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;사용자가 등록한 API에 따라 API 호출을 감지하여&lt;br /&gt;Inbox에 데이터를 삽입하거나,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;사용자 페이지에서 API 설정 변경이 있을 때&lt;br /&gt;이벤트를 받아 처리하는 로직이 포함되어있다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Chrome Extension Storage&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;크롬 익스텐션에서 제공하는 storage 서비스이며,&lt;br /&gt;localStorage와 달리 모든 페이지에서 접근 가능하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;inbox&lt;/b&gt;: 응답 목록&lt;br /&gt;&lt;b&gt;apis&lt;/b&gt;: 저장할 API에 대한 설정 목록&lt;br /&gt;&lt;b&gt;apiIndex&lt;/b&gt;: api에 고유 index를 부여하기 위한 카운터&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Jotai Store&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Atomic 컨셉의 상태관리 라이브러리 Jotai의 관리 단위.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;inbox&lt;/b&gt;: 응답 목록. Chrome Storage의 내용과 싱크&lt;br /&gt;&lt;b&gt;apis&lt;/b&gt;: API 설정 목록. Chrome Storage의 내용과 싱크&lt;br /&gt;&lt;b&gt;apiIndex&lt;/b&gt;: API id 부여를 위한 카운터. Chrome Storage의 내용과 싱크&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;bodyMode&lt;/b&gt;: body의 모드. 현재 모드를 파악하여 Body를 렌더&lt;br /&gt;&lt;b&gt;bodyContent&lt;/b&gt;: Body에서 표시할 내용을 관리&lt;br /&gt;&lt;b&gt;currentTab&lt;/b&gt;: 현재 탭. API 목록 / Inbox 목록&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Hooks&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;React Hook을 모아놓은 폴더&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;useStorage&lt;/b&gt;: 프로젝트 구조 상, chorme Extension과 사용자 페이지, Service worker 간의 싱크가 맞아야 함.&lt;br /&gt;관련 로직을 처리하는 훅.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;useBody&lt;/b&gt;: bodyMode와 bodyContent를 관리.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;useTab&lt;/b&gt;: currentTab을 관리&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Components&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;컴포넌트 단위로 페이지를 구현&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Sidebar&lt;/b&gt;: 사이드바&lt;br /&gt;&lt;b&gt;Body&lt;/b&gt;: 본문 영역. bodyMode에 따라 다른 컴포넌트를 render&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;회고&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Jotai를 적극적으로 사용해본 프로젝트.&lt;br /&gt;하지만 너무 Atomic하게 사용한건지 사용이 복잡했다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;특히 value를 관리하는 것이지, 로직이 관리되는 것이 아니기 때문에&lt;br /&gt;useContext의 부재가 뼈져리게 느껴졌다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;결국 Hook을 이용해서 로직을 정리하였으나,&lt;br /&gt;이럴거면 그냥 Context를 쓰는게 낫지 않나 생각이 들었다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;프로젝트를 설정하면서 Chrome Extension을 매번 설정하는게 복잡해서,&lt;br /&gt;템플릿을 만들어버렸다. 껄껄.&lt;/p&gt;
&lt;figure id=&quot;og_1681030383932&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - ImInnocent/chrome-extension-template: 크롬 익스텐션 + Typescript + React + Webpack 템플릿&quot; data-og-description=&quot;크롬 익스텐션 + Typescript + React + Webpack 템플릿. Contribute to ImInnocent/chrome-extension-template development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/ImInnocent/chrome-extension-template&quot; data-og-url=&quot;https://github.com/ImInnocent/chrome-extension-template&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/fN1Ow/hySdtn0bQ9/KoksURKzO2hLeIdItkIc51/img.png?width=1200&amp;amp;height=600&amp;amp;face=988_146_1031_194&quot;&gt;&lt;a href=&quot;https://github.com/ImInnocent/chrome-extension-template&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/ImInnocent/chrome-extension-template&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/fN1Ow/hySdtn0bQ9/KoksURKzO2hLeIdItkIc51/img.png?width=1200&amp;amp;height=600&amp;amp;face=988_146_1031_194');&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;GitHub - ImInnocent/chrome-extension-template: 크롬 익스텐션 + Typescript + React + Webpack 템플릿&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;크롬 익스텐션 + Typescript + React + Webpack 템플릿. Contribute to ImInnocent/chrome-extension-template development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;추가로 eslint나 prettier, watch 설정도 해야하는데&lt;br /&gt;이건 브랜치로 따서 분리하는게 나을 것 같다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;개발 과정에서 chat GPT를 적극 활용했다.&lt;br /&gt;특히 자료가 많지 않은 Chrome Extension을 개발할 때 도움이 되었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 한계도 명확했다.&lt;br /&gt;chat GPT가 항상 정확한 답변을 내는 것은 아니므로,&lt;br /&gt;내가 로직을 보고 문제점을 스스로 파악할 수 있어야 했다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;결국 로직을 이해하고 파라미터를 파악하는 용도로 주로 이용한 것 같다.&lt;/p&gt;</description>
      <category>프로젝트</category>
      <author>금붕어 송인호</author>
      <guid isPermaLink="true">https://goldfishdiary.tistory.com/275</guid>
      <comments>https://goldfishdiary.tistory.com/275#entry275comment</comments>
      <pubDate>Sun, 9 Apr 2023 17:58:00 +0900</pubDate>
    </item>
    <item>
      <title>API 해체분석기 소개</title>
      <link>https://goldfishdiary.tistory.com/274</link>
      <description>&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;소개&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;API 해체분석기&lt;/b&gt;는 API 응답을 기록하고 분석하는 도구입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;인기 게임 리그 오브 레전드 (LOL)의 &lt;b&gt;미니언 해체 분석기&lt;/b&gt;에서 따왔습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;TODO: 링크 연결&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;제작 배경&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;회사 팀원분과 얘기를 하다가 개발자 도구를 보면서 뭔가를 하고 있었는데,&lt;br /&gt;굉장히 많은 양의 데이터 중에서 특정한 key의 값을 모아서 봐야했습니다.&lt;br /&gt;그리고 다시 잘못된 값을 수정해서 다시 API를 쏴야하는 상황이었죠.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 할 수 있는거라고는 개발자도구에서 복사해서 IDE로 옮긴 다음, &lt;br /&gt;검색기능으로 하나하나 살펴보는 것 뿐이었습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그러고보니 저도 개발자도구를 사용하면서 불편한 점이 있었습니다.&lt;br /&gt;&lt;b&gt;조건에 맞는 API를 찾아서, 열어서, 뜯어서, 값을 찾아서&lt;/b&gt; 확인을 해야 했죠.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이러한 문제점을 해결하기위해 API 해체 분석기를 만들었습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;주요 기능 및 사용 방법&lt;/b&gt;&lt;/h3&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;응답을 기록할 API 등록하기&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;새 API 추가 버튼을 누르면 추가 화면으로 넘어가며,&lt;br /&gt;화면에 표시될 이름과 URL 패턴을 입력합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-04-09 오전 11.56.35.png&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEGWcM/btr8LhtutSo/5hQjnUkJ3rgLXi7lwFRyLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEGWcM/btr8LhtutSo/5hQjnUkJ3rgLXi7lwFRyLk/img.png&quot; data-alt=&quot;새 API 추가 화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEGWcM/btr8LhtutSo/5hQjnUkJ3rgLXi7lwFRyLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEGWcM%2Fbtr8LhtutSo%2F5hQjnUkJ3rgLXi7lwFRyLk%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;695&quot; height=&quot;434&quot; data-filename=&quot;스크린샷 2023-04-09 오전 11.56.35.png&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1600&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;새 API 추가 화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;URL 패턴은 Regex가 아닌 문자열이며,&lt;br /&gt;전체 경로가 아닌 일부만 충족해도 API를 잡아냅니다.&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;예시: &lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;목표 API:&lt;/b&gt; &lt;a href=&quot;https://www.naver.com/search?keyword=abcd&quot;&gt;https://www.naver.com/search?keyword=abcd&lt;/a&gt;&lt;br /&gt;&lt;b&gt;URL 패턴1:&lt;/b&gt; naver.com (O)&lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: center;&quot;&gt;&lt;b&gt;URL 패턴3:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;r.com/search (O)&lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: center;&quot;&gt;&lt;b&gt;URL 패턴3:&lt;/b&gt;&lt;span&gt; *naver.com/search* (X)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;응답 Inbox 열어보기&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;등록해둔 API 패턴에 일치하는 API가 호출되면&lt;br /&gt;API Response가 Inbox에 등록됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-04-09 오전 11.58.07.png&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cL5a1t/btr8KH0fF5t/hOF1Ww6nDfKjDZNGoRwooK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cL5a1t/btr8KH0fF5t/hOF1Ww6nDfKjDZNGoRwooK/img.png&quot; data-alt=&quot;사이드바의 Inbox 목록들&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cL5a1t/btr8KH0fF5t/hOF1Ww6nDfKjDZNGoRwooK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcL5a1t%2Fbtr8KH0fF5t%2FhOF1Ww6nDfKjDZNGoRwooK%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;743&quot; height=&quot;464&quot; data-filename=&quot;스크린샷 2023-04-09 오전 11.58.07.png&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1600&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;사이드바의 Inbox 목록들&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우측 상단에서 Inbox 탭을 눌러 목록을 조회하세요.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;응답 내용 살펴보기&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Inbox 목록에서 내용을 보고 싶은 항목을 클릭하면&lt;br /&gt;API의 응답값을 볼 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;JSON 에디터에서 수정 버튼으로 값을 수정할 수 있습니다.&lt;br /&gt;단, 다른 API 응답 화면으로 이동하거나, 새 API 추가 화면 등&lt;br /&gt;다른 화면으로 이동하면 변경사항을 초기화됩니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;모아보기&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;API 응답을 보는 화면에서 검색창에 키워드를 입력하고 검색하면&lt;br /&gt;모아보기 화면으로 이동하며, 접혀있는 검색 결과를 클릭하여 상세 내용을 볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-04-09 오전 11.58.38.png&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btY3vm/btr8T4T2R9q/Q4LkcsCYTkW2b5tCh1Z7Gk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btY3vm/btr8T4T2R9q/Q4LkcsCYTkW2b5tCh1Z7Gk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btY3vm/btr8T4T2R9q/Q4LkcsCYTkW2b5tCh1Z7Gk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtY3vm%2Fbtr8T4T2R9q%2FQ4LkcsCYTkW2b5tCh1Z7Gk%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;742&quot; height=&quot;464&quot; data-filename=&quot;스크린샷 2023-04-09 오전 11.58.38.png&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;API 응답 화면과 마찬가지로 값을 수정할 수 있습니다.&amp;nbsp;&lt;br /&gt;뒤로가기 아이콘을 눌러 이전 화면으로 돌아가도, &lt;br /&gt;수정한 JSON 변경사항은 여전히 적용됩니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;클립보드로 복사&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;API 응답 화면에서 모아보기 버튼 옆의 클립보드 아이콘을 누르면&lt;br /&gt;API 응답이 클립보드로 복사됩니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;API 응답 화면이나 모아보기 화면에서 수정한 값도&lt;br /&gt;적용되어 클립보드로 복사됩니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;개발 내용&lt;/b&gt;&lt;/h3&gt;
&lt;figure id=&quot;og_1681030723926&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;API 해체 응답기 개발 내용&quot; data-og-description=&quot;프로젝트 소개 API 해체분석기 소개 소개 API 해체분석기는 API 응답을 기록하고 분석하는 도구입니다. 인기 게임 리그 오브 레전드 (LOL)의 미니언 해체 분석기에서 따왔습니다. TODO: 링크 연결 제&quot; data-og-host=&quot;goldfishdiary.tistory.com&quot; data-og-source-url=&quot;https://goldfishdiary.tistory.com/275&quot; data-og-url=&quot;https://goldfishdiary.tistory.com/275&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/R3Jfw/hySdlDwM3W/PKFkAAAO8nDvYEnXFk5fHK/img.png?width=800&amp;amp;height=485&amp;amp;face=313_70_414_126,https://scrap.kakaocdn.net/dn/whd7O/hySdjeGe7k/uo7pVm2zfmRzpM4TZzBIkK/img.png?width=800&amp;amp;height=485&amp;amp;face=313_70_414_126,https://scrap.kakaocdn.net/dn/kSYSO/hySdsWWnDi/ktNnIhoItEe9Ba5Gkbg4nk/img.png?width=2666&amp;amp;height=1618&amp;amp;face=770_241_907_395&quot;&gt;&lt;a href=&quot;https://goldfishdiary.tistory.com/275&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://goldfishdiary.tistory.com/275&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/R3Jfw/hySdlDwM3W/PKFkAAAO8nDvYEnXFk5fHK/img.png?width=800&amp;amp;height=485&amp;amp;face=313_70_414_126,https://scrap.kakaocdn.net/dn/whd7O/hySdjeGe7k/uo7pVm2zfmRzpM4TZzBIkK/img.png?width=800&amp;amp;height=485&amp;amp;face=313_70_414_126,https://scrap.kakaocdn.net/dn/kSYSO/hySdsWWnDi/ktNnIhoItEe9Ba5Gkbg4nk/img.png?width=2666&amp;amp;height=1618&amp;amp;face=770_241_907_395');&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;API 해체 응답기 개발 내용&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;프로젝트 소개 API 해체분석기 소개 소개 API 해체분석기는 API 응답을 기록하고 분석하는 도구입니다. 인기 게임 리그 오브 레전드 (LOL)의 미니언 해체 분석기에서 따왔습니다. TODO: 링크 연결 제&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;goldfishdiary.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;</description>
      <category>프로젝트</category>
      <category>API</category>
      <category>크롬익스텐션</category>
      <category>토이프로젝트</category>
      <author>금붕어 송인호</author>
      <guid isPermaLink="true">https://goldfishdiary.tistory.com/274</guid>
      <comments>https://goldfishdiary.tistory.com/274#entry274comment</comments>
      <pubDate>Sun, 9 Apr 2023 17:05:34 +0900</pubDate>
    </item>
    <item>
      <title>2023 오사카 여행기 2일차</title>
      <link>https://goldfishdiary.tistory.com/268</link>
      <description>&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;교토 여행기&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;둘째날에는 교토로 갔다.&lt;br /&gt;이 날은 진짜 ㅋㅋㅋㅋㅋ&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아침에 간단히 스키야에서 덮밥을 먹었다.&lt;br /&gt;20살때 누나랑 오사카 왔을 때 그냥 먹었는데 너무 맛있었다.&lt;br /&gt;근데 다시 와서 먹어보니 메뉴가 달라서그런지 평범하더라.&lt;br /&gt;이래서 추억 미화가 무섭다. &lt;br /&gt;경험이 한번이면 데이터가 1/1이니까.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;교토로 가는 길&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;지하철로 가니까 인명사고로 인해(다른 역)&lt;br /&gt;지하철이 연착되었다.&lt;br /&gt;출근 시간이었는데 다들 발을 동동 구르더라.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;전에 나고야 여행중 교토 당일치기할 때에는&lt;br /&gt;신칸센을 타고 다녀와서 걱정이 없었는데,&lt;br /&gt;이번에는 전철을 타게 되어 다소 헤맸다.&lt;br /&gt;일본 전철은 아직도 난 와카라나이&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;가면서 느낀건데 거리에 사람이 너무 없었다.&lt;br /&gt;아무리 시내가 아니라고해도 그냥 길에 사람이 없었다.&lt;br /&gt;동화같이 예쁜 그림이었지만 묘한 기분도 들었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;또 느낀 다른 점은 페인트칠을 진짜 오지게 했다는 거다.&lt;br /&gt;어떻게 그렇게 다들 페인트칠을 자주 하지?&lt;br /&gt;그림으로 그린듯 깔끔하게 칠해놨다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;또 건물들이 좁은 땅 위에 높게 짓는다는 점이 있었다.&lt;br /&gt;이게 일본의 협소주택?&lt;br /&gt;근데 뭔가 하나의 집을 케이크 자르듯&lt;br /&gt;여러개로 나눠놓은 듯한 이미지가 인상적이었다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;아라시야마&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아라시야마는 교토 동쪽에 있는 지역인데,&lt;br /&gt;죽림과 텐류지가 유명하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;역에서 내리는데 한국인은 거의 안 보이고&lt;br /&gt;서양계 외국인과 기모노를 입은 일본인들이 많았다.&lt;br /&gt;뭐랄까 경주에 외국인들이 많이 온 느낌?&lt;br /&gt;(경주에서도 옷 입고 다니니까)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;말차 라떼와 아이스크림을 챱챱하면서 걷는데,&lt;br /&gt;죽림까지는 들어가서 대충 열심히 돌았는데&lt;br /&gt;갑자기 이상한 길로 들어서버렸다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;계획밖의 보물같은 거리&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;어떤 동네에 들어섰는데, 거리가 너무 예뻐서 30분동안 사진찍고 난리였다.&lt;br /&gt;나무도 없어서 가로거치는게 없고 날씨도 너무 좋아서 그대로 누워있고 싶었다.&lt;br /&gt;실제로 좀 누워있었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;평소에는 도심, 예쁜 제품에 관심이 많았는데&lt;br /&gt;어제 호수도 그렇고 너무 마음이 편안했다.&lt;br /&gt;심지어 사람한명 지나가지 않는 조용한 거리였다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 P들과 여행을 가면 이런 일이 생기는구나 싶었다.&lt;br /&gt;아무도 알려주지 않는 신기하고도 소중한 경험이었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그래놓고 ㅋㅋㅋㅋㅋ&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;정작 아라시야마의 히트 텐류지는 &lt;br /&gt;입장료가 있다는 이유로 안 갔다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ&lt;br /&gt;이미 사진을 많이 찍어서 만족했었다는...&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;교토 시내로&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;전철을 타고 교토 시내로 가서 점심을 먹으러 갔다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;전에는 새벽에 와서 밤에 가서 교토역을 볼 일이 없었는데,&lt;br /&gt;낮에 본 교토역도 나름 멋있었다.&lt;br /&gt;물론 밤에 불 들어온 교토역이 더 멋있긴했지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그렇게 규카츠를 먹으러 갔는데&lt;br /&gt;하필이면 온천라멘이 AI (조류독감)때문에 &lt;br /&gt;공급이 중단이랜다 아이고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이상하게 억까를 당하는 날이었다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;교토 탐방&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;절과 니죠 성을 돌고,&lt;br /&gt;교토 번화가로 갔다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;번화가에서는 중간부터 친구들과 따로 다녔다.&lt;br /&gt;나는 기념품 사러 여행가는 거기 때문에&lt;br /&gt;돌아다니는거 좋아하는 친구들과 달리 가게들을 보면서 지나갈 생각이었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그렇게 기모노 가게에 들어갔는데&lt;br /&gt;점원이 말을 걸어오길래 어버버했더니&lt;br /&gt;&quot;일본어 할 줄 모르시나요?&quot;라고 말하는 듯한 내용이길래&lt;br /&gt;&quot;저는 한국인입니다 (와타시와 한고쿠진 데스)&quot;라고 했더니&lt;br /&gt;&quot;아 한국인이세요?&quot; 이랬다 ㅋㅋㅋㅋㅋㅋㅋㅋ&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다국어 능력자라는 그 분...&lt;br /&gt;참고로 니죠성 앞 카페에서도 한국어를 할 줄 아시는 분이 계셨다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아무튼 기모노도 사고 가챠도 돌리고&lt;br /&gt;일본도 모양의 우산과 칼 모형도 샀다.&lt;br /&gt;소개팅 해주신 분들께 드릴 선물도 샀다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;먼저 보낸 친구들보고 가서 커피 먹으라고 위치를 알려줬는데,&lt;br /&gt;이상한데에서 돌고 있다가 정작 카페는 못 갔다고 한다 (ㅋㅋㅋㅋ)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;결국 카페거리 앞에서 예쁜 사진 많이 찍고&lt;br /&gt;장어 덮밥 먹고 집으로 갔다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;장어 덮밥&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;장어덮밥은 진짜 맛있었다.&lt;br /&gt;나고야식처럼 4가지 방법으로 먹는건 아니었지만,&lt;br /&gt;장어의 간이 정말 딱 좋아서 밥이 쑥쑥 들어갔다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;진짜 뭐라고 설명을 해야할지는 모르겠는데&lt;br /&gt;느끼하게 부담스럽지 않은데 깊고 풍부한 맛이었다.&lt;br /&gt;3일차에 먹은 라면도 그렇지만 깊은 맛이라고해서 무거운 맛인건 아닌 것 같다.&lt;br /&gt;한국에서는 느끼기 힘든 맛이었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;나는 흰밥을 잘 못 먹어서&lt;br /&gt;비벼먹거나 말아먹거나하는데,&lt;br /&gt;이 장어 덮밥은 밥을 다 먹었다. 최고다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;주변 가게가 모두 문을 닫아서 찾다찾다 간 곳인데,&lt;br /&gt;너무 맛있어서 안 갔으면 후회했을 것 같다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;집으로 가는 길&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;집으로 가는 길에 편의점에 들러서 술과 안주,&lt;br /&gt;다음날 아침에 먹을 간단한 식사를 샀다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;근데 편의점 가보니까 다 한국인이더라 ㅋㅋㅋ&lt;br /&gt;(도톤보리 근처라 그런듯)&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;기타 주저리&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;일본 MZ 세대는 왜이리 예쁜걸까&lt;br /&gt;나는 한국보다는 일본상이나 화장법이 더 좋은 것 같다.&lt;br /&gt;특히 리본 머리띠는 히트다 증말...&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;난방이 안되는 문제는 호스트한테 연락해서&lt;br /&gt;에어콘으로 난방하라는 설명을 들었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이리저리 조작해서 난방을 켜는데 성공했으나,&lt;br /&gt;바람이 너무 쎄서 찬바람도 같이 나왔다.&lt;br /&gt;결국 아침이 되니까 약간 추웠다&lt;br /&gt;(첫날보단 낫지만)&lt;/p&gt;</description>
      <category>일상다반사</category>
      <category>교토</category>
      <category>오사카</category>
      <category>일본</category>
      <category>일본여행</category>
      <author>금붕어 송인호</author>
      <guid isPermaLink="true">https://goldfishdiary.tistory.com/268</guid>
      <comments>https://goldfishdiary.tistory.com/268#entry268comment</comments>
      <pubDate>Tue, 7 Mar 2023 00:43:15 +0900</pubDate>
    </item>
  </channel>
</rss>