<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>.log('FE')</title>
    <link>https://code-reading.tistory.com/</link>
    <description>학습과 경험을 정리하는 프론트엔드 기술 블로그 입니다.</description>
    <language>ko</language>
    <pubDate>Tue, 11 Aug 2026 17:28:48 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>.log('FE')</managingEditor>
    <image>
      <title>.log('FE')</title>
      <url>https://tistory1.daumcdn.net/tistory/2944603/attach/920f40cbd49b4b33b13b55df25f4f963</url>
      <link>https://code-reading.tistory.com</link>
    </image>
    <item>
      <title>flowith io</title>
      <link>https://code-reading.tistory.com/144</link>
      <description>&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;- 해당 컨피그정보로 Streaming&amp;nbsp;HTTP&amp;nbsp;(chunked&amp;nbsp;transfer)&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;- 트리노드 구조의 화면은 canvas 가 아니라 React flow 를 사용해서 구현&lt;/p&gt;</description>
      <category>프론트엔드</category>
      <author>.log('FE')</author>
      <guid isPermaLink="true">https://code-reading.tistory.com/144</guid>
      <comments>https://code-reading.tistory.com/144#entry144comment</comments>
      <pubDate>Tue, 29 Jul 2025 12:10:05 +0900</pubDate>
    </item>
    <item>
      <title>Cursor Bugbot</title>
      <link>https://code-reading.tistory.com/143</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;- 팀 플랜 사용중이면 인당 $40&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 사용가능한 버그봇 토큰 갯수를 지정할 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 팀인원이 20명이더라도 버그봇을 사용하는 유저에 대해서만 과금&lt;/p&gt;</description>
      <category>프론트엔드</category>
      <author>.log('FE')</author>
      <guid isPermaLink="true">https://code-reading.tistory.com/143</guid>
      <comments>https://code-reading.tistory.com/143#entry143comment</comments>
      <pubDate>Tue, 29 Jul 2025 12:07:20 +0900</pubDate>
    </item>
    <item>
      <title>개발자 관련 컨퍼런스 모음</title>
      <link>https://code-reading.tistory.com/142</link>
      <description>&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;순전히 제 흥미와 관심사 위주의 내용으로만 모았습니다&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. &lt;/b&gt;&lt;a href=&quot;https://deview.kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;b&gt;NAVER DEVIEW&lt;/b&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;figure id=&quot;og_1674703329002&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;DEVIEW 2023&quot; data-og-description=&quot;DEVIEW는 국내외 개발자들이 서로의 지식을 나누고, 탁월함을 추구하며, 함께 성장하는 컨퍼런스 입니다.&quot; data-og-host=&quot;deview.kr&quot; data-og-source-url=&quot;https://deview.kr/&quot; data-og-url=&quot;https://deview.kr/2023&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bVWGE2/hyRpCZGWIG/kuxgGQjI8d05DHJU7Ya7kk/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://deview.kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://deview.kr/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bVWGE2/hyRpCZGWIG/kuxgGQjI8d05DHJU7Ya7kk/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&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;DEVIEW 2023&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;DEVIEW는 국내외 개발자들이 서로의 지식을 나누고, 탁월함을 추구하며, 함께 성장하는 컨퍼런스 입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;deview.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. &lt;/b&gt;&lt;a href=&quot;https://www.youtube.com/playlist?list=PL1DJtS1Hv1PiGXmgruP1_gM2TSvQiOsFL&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;b&gt;TOSS SLASH&lt;/b&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;figure id=&quot;og_1674703342370&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;SLASHㅣ개발자 컨퍼런스&quot; data-og-description=&quot; &quot; data-og-host=&quot;www.youtube.com&quot; data-og-source-url=&quot;https://www.youtube.com/playlist?list=PL1DJtS1Hv1PiGXmgruP1_gM2TSvQiOsFL&quot; data-og-url=&quot;http://www.youtube.com/playlist?list=PL1DJtS1Hv1PiGXmgruP1_gM2TSvQiOsFL&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bTQexf/hyRoCmE3mD/I5n31Tz6yKq7Gny4DIF8L0/img.jpg?width=168&amp;amp;height=94&amp;amp;face=108_8_147_76,https://scrap.kakaocdn.net/dn/YoBBB/hyRoELzwm7/Nww0v18czgNKv6jQsHJ6X0/img.jpg?width=196&amp;amp;height=110&amp;amp;face=122_10_174_89,https://scrap.kakaocdn.net/dn/vDX7M/hyRpMOLvOU/wZae5AKPnI2vr6r9QNvyr1/img.jpg?width=246&amp;amp;height=138&amp;amp;face=156_12_219_114,https://scrap.kakaocdn.net/dn/emi6A0/hyRoOgxiWk/cyDkwP3cvcnCy0Kb110241/img.jpg?width=336&amp;amp;height=188&amp;amp;face=212_17_297_159&quot;&gt;&lt;a href=&quot;https://www.youtube.com/playlist?list=PL1DJtS1Hv1PiGXmgruP1_gM2TSvQiOsFL&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.youtube.com/playlist?list=PL1DJtS1Hv1PiGXmgruP1_gM2TSvQiOsFL&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bTQexf/hyRoCmE3mD/I5n31Tz6yKq7Gny4DIF8L0/img.jpg?width=168&amp;amp;height=94&amp;amp;face=108_8_147_76,https://scrap.kakaocdn.net/dn/YoBBB/hyRoELzwm7/Nww0v18czgNKv6jQsHJ6X0/img.jpg?width=196&amp;amp;height=110&amp;amp;face=122_10_174_89,https://scrap.kakaocdn.net/dn/vDX7M/hyRpMOLvOU/wZae5AKPnI2vr6r9QNvyr1/img.jpg?width=246&amp;amp;height=138&amp;amp;face=156_12_219_114,https://scrap.kakaocdn.net/dn/emi6A0/hyRoOgxiWk/cyDkwP3cvcnCy0Kb110241/img.jpg?width=336&amp;amp;height=188&amp;amp;face=212_17_297_159');&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;SLASHㅣ개발자 컨퍼런스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.youtube.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. &lt;/b&gt;&lt;a href=&quot;https://www.youtube.com/@feconfkorea&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;b&gt;FEConf KOREA&lt;/b&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;figure id=&quot;og_1674704161434&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;profile&quot; data-og-title=&quot;FEConf Korea&quot; data-og-description=&quot;프론트엔드 개발의 소중한 경험을 공유합니다! 프론트엔드 개발자에 의한! 프론트엔드 개발자를 위한! 프론트엔드를 개발하며 마주했던 치열한 고민과 깊은 인사이트를 공유하며 여러분과 함&quot; data-og-host=&quot;www.youtube.com&quot; data-og-source-url=&quot;https://www.youtube.com/@feconfkorea&quot; data-og-url=&quot;https://www.youtube.com/channel/UCWEzfYIpFBIG5jh6laXC6hA&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ZFEDS/hyRoNaJp0I/OKntnRdUyHZQI0Wd0fuPI1/img.jpg?width=900&amp;amp;height=900&amp;amp;face=0_0_900_900,https://scrap.kakaocdn.net/dn/bpzhEW/hyRpKKch7X/B9xOZ8OQGygn37asQefpm1/img.jpg?width=900&amp;amp;height=900&amp;amp;face=0_0_900_900&quot;&gt;&lt;a href=&quot;https://www.youtube.com/@feconfkorea&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.youtube.com/@feconfkorea&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ZFEDS/hyRoNaJp0I/OKntnRdUyHZQI0Wd0fuPI1/img.jpg?width=900&amp;amp;height=900&amp;amp;face=0_0_900_900,https://scrap.kakaocdn.net/dn/bpzhEW/hyRpKKch7X/B9xOZ8OQGygn37asQefpm1/img.jpg?width=900&amp;amp;height=900&amp;amp;face=0_0_900_900');&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;FEConf Korea&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;www.youtube.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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. &lt;a href=&quot;https://woowacon.com/2022&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;우아콘&lt;/a&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;figure id=&quot;og_1674704418050&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;WOOWACON 2022&quot; data-og-description=&quot;우아한테크콘서트, 함께해요&quot; data-og-host=&quot;woowacon.com&quot; data-og-source-url=&quot;https://woowacon.com/2022&quot; data-og-url=&quot;https://woowacon.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Whwuy/hyRpIr4UIw/tuePHEJgaj0NkPDFBqARU1/img.png?width=705&amp;amp;height=353&amp;amp;face=0_0_705_353,https://scrap.kakaocdn.net/dn/bav2Nd/hyRoySfUrX/hJl9cnvaHDBISqKK3zwv8K/img.png?width=705&amp;amp;height=353&amp;amp;face=0_0_705_353,https://scrap.kakaocdn.net/dn/MwaLG/hyRoN9LZUQ/bN49GKJyyx4WdJIPpChpL0/img.png?width=652&amp;amp;height=1028&amp;amp;face=0_0_652_1028&quot;&gt;&lt;a href=&quot;https://woowacon.com/2022&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://woowacon.com/2022&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Whwuy/hyRpIr4UIw/tuePHEJgaj0NkPDFBqARU1/img.png?width=705&amp;amp;height=353&amp;amp;face=0_0_705_353,https://scrap.kakaocdn.net/dn/bav2Nd/hyRoySfUrX/hJl9cnvaHDBISqKK3zwv8K/img.png?width=705&amp;amp;height=353&amp;amp;face=0_0_705_353,https://scrap.kakaocdn.net/dn/MwaLG/hyRoN9LZUQ/bN49GKJyyx4WdJIPpChpL0/img.png?width=652&amp;amp;height=1028&amp;amp;face=0_0_652_1028');&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;WOOWACON 2022&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;woowacon.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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5. &lt;a href=&quot;https://if.kakao.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;If KAKAO&lt;/a&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;figure id=&quot;og_1674704391037&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;if(kakao)dev2022&quot; data-og-description=&quot;함께 나아가는 더 나은 세상&quot; data-og-host=&quot;if.kakao.com&quot; data-og-source-url=&quot;https://if.kakao.com/&quot; data-og-url=&quot;https://if.kakao.com&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/A7Cwn/hyRoyYZsZr/EEgtR5JRvEhDlcfD4jf8rk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://if.kakao.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://if.kakao.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/A7Cwn/hyRoyYZsZr/EEgtR5JRvEhDlcfD4jf8rk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&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;if(kakao)dev2022&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;if.kakao.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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;6. &lt;a href=&quot;https://2022.jsconf.kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;JSConf KOREA&lt;/a&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;figure id=&quot;og_1674704545833&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;JSConf Korea 2022  &quot; data-og-description=&quot;  9월 16-17일 |   노들섬 다목적 홀 숲&quot; data-og-host=&quot;2022.jsconf.kr&quot; data-og-source-url=&quot;https://2022.jsconf.kr/&quot; data-og-url=&quot;https://2022.jsconf.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/nDZop/hyRoLKHVw8/Mnwekatve1UQJIiBxghkfk/img.png?width=1600&amp;amp;height=800&amp;amp;face=0_0_1600_800,https://scrap.kakaocdn.net/dn/bz6hyL/hyRpK4vgBC/TZ6fFzBqGquqTKylgky0aK/img.png?width=418&amp;amp;height=500&amp;amp;face=196_88_304_206,https://scrap.kakaocdn.net/dn/gVxmJ/hyRpF3bHYZ/gHp3d8jkmuSudVx6io0RIK/img.png?width=418&amp;amp;height=500&amp;amp;face=83_167_312_417&quot;&gt;&lt;a href=&quot;https://2022.jsconf.kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://2022.jsconf.kr/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/nDZop/hyRoLKHVw8/Mnwekatve1UQJIiBxghkfk/img.png?width=1600&amp;amp;height=800&amp;amp;face=0_0_1600_800,https://scrap.kakaocdn.net/dn/bz6hyL/hyRpK4vgBC/TZ6fFzBqGquqTKylgky0aK/img.png?width=418&amp;amp;height=500&amp;amp;face=196_88_304_206,https://scrap.kakaocdn.net/dn/gVxmJ/hyRpF3bHYZ/gHp3d8jkmuSudVx6io0RIK/img.png?width=418&amp;amp;height=500&amp;amp;face=83_167_312_417');&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;JSConf Korea 2022  &lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;  9월 16-17일 |   노들섬 다목적 홀 숲&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;2022.jsconf.kr&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;7. &lt;a href=&quot;https://infcon.day/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;INFCon&lt;/a&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;figure id=&quot;og_1674704597950&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;인프콘 2022 - INFCON 2022&quot; data-og-description=&quot;배우고 나누고 성장하세요.&quot; data-og-host=&quot;infcon.day&quot; data-og-source-url=&quot;https://infcon.day/&quot; data-og-url=&quot;https://infcon.day/index.html&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bl4dFr/hyRoHO1OY9/Jk3Vk286sZoHisujAchoa1/img.png?width=1200&amp;amp;height=628&amp;amp;face=0_0_1200_628&quot;&gt;&lt;a href=&quot;https://infcon.day/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://infcon.day/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bl4dFr/hyRoHO1OY9/Jk3Vk286sZoHisujAchoa1/img.png?width=1200&amp;amp;height=628&amp;amp;face=0_0_1200_628');&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;인프콘 2022 - INFCON 2022&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;infcon.day&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;8. &lt;/b&gt;&lt;a href=&quot;https://tech-verse.me/ko/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;b&gt;TECH VERSE&lt;/b&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;figure id=&quot;og_1674721677498&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Tech-Verse 2022&quot; data-og-description=&quot;Tech-Verse 2022는 LINE과 Yahoo! JAPAN이 11월 17일과 18일, 양일간 공동으로 개최하는 온라인 기술 콘퍼런스입니다. 양사를 포함해 콘퍼런스에 참여하는 각 회사의 다양한 발표자가 자신의 도전과 쌓아온&quot; data-og-host=&quot;tech-verse.me&quot; data-og-source-url=&quot;https://tech-verse.me/ko/&quot; data-og-url=&quot;https://tech-verse.me/ko/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bvpbat/hyRpFI3e5j/qA5JJz1p8qVCuzjsrx5wik/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://tech-verse.me/ko/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://tech-verse.me/ko/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bvpbat/hyRpFI3e5j/qA5JJz1p8qVCuzjsrx5wik/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&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;Tech-Verse 2022&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Tech-Verse 2022는 LINE과 Yahoo! JAPAN이 11월 17일과 18일, 양일간 공동으로 개최하는 온라인 기술 콘퍼런스입니다. 양사를 포함해 콘퍼런스에 참여하는 각 회사의 다양한 발표자가 자신의 도전과 쌓아온&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;tech-verse.me&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>프론트엔드/Assignment</category>
      <category>deview</category>
      <category>ifkakao</category>
      <category>JSConf</category>
      <category>tossslash</category>
      <category>개발자컨퍼런스</category>
      <category>관심컨퍼런스</category>
      <category>우아콘</category>
      <category>인프콘</category>
      <category>컨퍼런스모음</category>
      <category>프론트엔드</category>
      <author>.log('FE')</author>
      <guid isPermaLink="true">https://code-reading.tistory.com/142</guid>
      <comments>https://code-reading.tistory.com/142#entry142comment</comments>
      <pubDate>Thu, 26 Jan 2023 12:47:54 +0900</pubDate>
    </item>
    <item>
      <title>프론트엔드 과제 전형 유형</title>
      <link>https://code-reading.tistory.com/141</link>
      <description>&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;&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;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;1. 순수 자바스크립트 구현&lt;br /&gt;2. 리액트나 뷰를 사용한 구현&lt;br /&gt;3. 자사 서비스의 특정 페이지나 기능에 대한 구현&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 순수 자바스크립트 구현&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;순수 자바스크립트(= VanilaJS) 로 구현하라는 유형입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;과제의 기간은 회사마다 다른데 &lt;b&gt;짧은건 몇시간&lt;/b&gt; 길게는 &lt;b&gt;최대 일주일&lt;/b&gt;정도 받았던것같습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;과제들의 공통사항이기도한데 &lt;b&gt;필수 구현사항&lt;/b&gt;과 &lt;b&gt;선택 구현사항&lt;/b&gt;으로 크게 나눌 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 스크립트 코드와 스타일은 &lt;span style=&quot;color: #ee2323;&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;대략적인 요구사항들은 약간씩의 차이가 있을 수 있습니다. 아래의 리스트들 중에 추가되거나 없는것이 있을수도있습니다.&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;- 외부 라이브러리 사용 금지&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;- ES6 문법 상용&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 일주일이 주어진다면 환경 세팅에 하루~이틀 / 기능 구현에 3일 / 테스트 및 리팩터링 2일&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;/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;h3 data-ke-size=&quot;size23&quot;&gt;2. 라이브러리 또는 프레임워크를 사용한 구현&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리액트나 뷰를 활용한 구현입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;순수 JS 로 구현한 기능은 자스에 대한 기본 개념이나 SPA 등의 원리들에 대해서 얼마나 잘 이해하고 또 직접 구현할 수 있는지 테스트하는거였다면 해당 과제는 실제 현업에서 일하는 스타일 코드 작성 구현 능력들을 확인하는것이라고 볼 수 있습니다.&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;p data-ke-size=&quot;size16&quot;&gt;이 경우에서 또 두가지로 나뉠 수 있는데&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;1. 밑바닥부터 직접 구현&lt;br /&gt;2. 베이스 코드가 주어지고 해당 환경 내에서 구현&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 밑바닥부터 직접 구현&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때도 요구사항이 약간씩 다른데 CRA 를 허용하기도 하지만 한땀한땀 패키지를 직접 설치하며 세팅하기를 요구하기도 합니다.&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;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 베이스코드가 주어지고 해당 환경 내에서 구현&lt;/b&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;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;상세&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이것도 과제마다 다른데 과제용 API 를 주는곳도있고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;목업 API 를 전달해 주는곳도 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또는 데이터만 전달해주고 JSON 파일 형태로 직접 저장해 구현하기도 합니다.&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;&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;설명하다보니 2, 3 을 통합해서 작성했는데 프레임워크를 쓰더라도 자사페이지나 기능이 될수도있고 정말 테스트를 위해 주어진 기능을 구현해보라고 할 수도 있습니다. 이때 한가지 팁이 있다면 요구사항에 있던 없던간에 꼭 리드미는 상세하게 작성하라고 말씀 드리고 싶습니다.&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;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;리뷰 또는 코멘트&lt;/b&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;&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;&lt;/p&gt;</description>
      <category>프론트엔드/Assignment</category>
      <category>fe</category>
      <category>Frontend</category>
      <category>개발자</category>
      <category>과제유형</category>
      <category>과제전형</category>
      <category>이직</category>
      <category>프론트엔드</category>
      <author>.log('FE')</author>
      <guid isPermaLink="true">https://code-reading.tistory.com/141</guid>
      <comments>https://code-reading.tistory.com/141#entry141comment</comments>
      <pubDate>Wed, 27 Apr 2022 17:17:50 +0900</pubDate>
    </item>
    <item>
      <title>개발자 도서 추천</title>
      <link>https://code-reading.tistory.com/140</link>
      <description>&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;개발관련 서적은 완독 보다는 그때그때 필요한 부분만 찾아보는 방식이 좋은것같습니다.&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;더 성장하고 싶은 분들에게 조금이나마 도움이 되는 정보이길 바랍니다.&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;http://www.yes24.com/Product/Goods/11681152&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://www.yes24.com/Product/Goods/11681152&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1648453156659&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;book&quot; data-og-title=&quot;Clean Code 클린 코드 - YES24&quot; data-og-description=&quot;애자일 소프트웨어의 혁명적인 패러다임을 제시하는 책이다. 저자 로버트 마틴은 오브젝트 멘토(Object Mentor)의 동료들과 힘을 모아 &amp;lsquo;개발하며&amp;rsquo; 클린 코드를 만드는 최상의 애자일 기법을 정제&quot; data-og-host=&quot;www.yes24.com&quot; data-og-source-url=&quot;http://www.yes24.com/Product/Goods/11681152&quot; data-og-url=&quot;http://www.yes24.com/Product/Goods/11681152&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bDcQJL/hyNPIqFohv/8Vo93kMjQASK8qwkMlz0C1/img.jpg?width=455&amp;amp;height=600&amp;amp;face=0_0_455_600,https://scrap.kakaocdn.net/dn/cfMg1u/hyNPLVdXLJ/KklEV7zXhZU1k6sDuHtUm1/img.jpg?width=455&amp;amp;height=600&amp;amp;face=0_0_455_600,https://scrap.kakaocdn.net/dn/RBk5x/hyNQ0iVBv5/yt8WteF5Y5gQqREv0zgOL1/img.jpg?width=455&amp;amp;height=600&amp;amp;face=0_0_455_600&quot;&gt;&lt;a href=&quot;http://www.yes24.com/Product/Goods/11681152&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://www.yes24.com/Product/Goods/11681152&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bDcQJL/hyNPIqFohv/8Vo93kMjQASK8qwkMlz0C1/img.jpg?width=455&amp;amp;height=600&amp;amp;face=0_0_455_600,https://scrap.kakaocdn.net/dn/cfMg1u/hyNPLVdXLJ/KklEV7zXhZU1k6sDuHtUm1/img.jpg?width=455&amp;amp;height=600&amp;amp;face=0_0_455_600,https://scrap.kakaocdn.net/dn/RBk5x/hyNQ0iVBv5/yt8WteF5Y5gQqREv0zgOL1/img.jpg?width=455&amp;amp;height=600&amp;amp;face=0_0_455_600');&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;Clean Code 클린 코드 - YES24&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;애자일 소프트웨어의 혁명적인 패러다임을 제시하는 책이다. 저자 로버트 마틴은 오브젝트 멘토(Object Mentor)의 동료들과 힘을 모아 &amp;lsquo;개발하며&amp;rsquo; 클린 코드를 만드는 최상의 애자일 기법을 정제&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.yes24.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;&lt;a href=&quot;http://www.yes24.com/Product/Goods/77283734&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://www.yes24.com/Product/Goods/77283734&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1648453184011&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;book&quot; data-og-title=&quot;클린 아키텍처 - YES24&quot; data-og-description=&quot;살아있는 전설이 들려주는 실용적인 소프트웨어 아키텍처 원칙『클린 코드』와 『클린 코더』의 저자이자 전설적인 소프트웨어 장인인 로버트 C. 마틴은 이 책 『클린 아키텍처』에서 이러한 &quot; data-og-host=&quot;www.yes24.com&quot; data-og-source-url=&quot;http://www.yes24.com/Product/Goods/77283734&quot; data-og-url=&quot;http://www.yes24.com/Product/Goods/77283734&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/fspV1/hyNPORWkIx/P8vkv96ZQzKFpKQyE98guK/img.jpg?width=916&amp;amp;height=1200&amp;amp;face=0_0_916_1200,https://scrap.kakaocdn.net/dn/PSMkr/hyNQ4lj72P/KoMGupKbjx9SkksO4Ctk0k/img.jpg?width=916&amp;amp;height=1200&amp;amp;face=0_0_916_1200,https://scrap.kakaocdn.net/dn/b5Sy50/hyNQ9fSpg8/HCTRLKTTUpMTerI0Z6u5oK/img.jpg?width=916&amp;amp;height=1200&amp;amp;face=0_0_916_1200&quot;&gt;&lt;a href=&quot;http://www.yes24.com/Product/Goods/77283734&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://www.yes24.com/Product/Goods/77283734&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/fspV1/hyNPORWkIx/P8vkv96ZQzKFpKQyE98guK/img.jpg?width=916&amp;amp;height=1200&amp;amp;face=0_0_916_1200,https://scrap.kakaocdn.net/dn/PSMkr/hyNQ4lj72P/KoMGupKbjx9SkksO4Ctk0k/img.jpg?width=916&amp;amp;height=1200&amp;amp;face=0_0_916_1200,https://scrap.kakaocdn.net/dn/b5Sy50/hyNQ9fSpg8/HCTRLKTTUpMTerI0Z6u5oK/img.jpg?width=916&amp;amp;height=1200&amp;amp;face=0_0_916_1200');&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;클린 아키텍처 - YES24&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;살아있는 전설이 들려주는 실용적인 소프트웨어 아키텍처 원칙『클린 코드』와 『클린 코더』의 저자이자 전설적인 소프트웨어 장인인 로버트 C. 마틴은 이 책 『클린 아키텍처』에서 이러한&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.yes24.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;&lt;a href=&quot;http://www.yes24.com/Product/Goods/23161141&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://www.yes24.com/Product/Goods/23161141&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1648453206136&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;book&quot; data-og-title=&quot;소프트 스킬 - YES24&quot; data-og-description=&quot;흔한 개발자, 존 손메즈 그는 어떻게 33세에 은퇴했을까?&amp;ldquo;소프트웨어 개발자로 사는 동안 다양한 여정을 거쳤다. 길을 제대로 찾을 때도 있었고 그렇지 못할 때도 있었다. 이 과정에서 도움이나&quot; data-og-host=&quot;www.yes24.com&quot; data-og-source-url=&quot;http://www.yes24.com/Product/Goods/23161141&quot; data-og-url=&quot;http://www.yes24.com/Product/Goods/23161141&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/RNXDG/hyNQ8abG5c/kS6gKtJQ4Sz4WBN8l7aPx0/img.jpg?width=271&amp;amp;height=400&amp;amp;face=0_0_271_400,https://scrap.kakaocdn.net/dn/VLhV2/hyNQ5kdTwQ/QawX6ewzVxMAxqwO0qaXt1/img.jpg?width=271&amp;amp;height=400&amp;amp;face=0_0_271_400,https://scrap.kakaocdn.net/dn/cK6cOl/hyNRaTmG7x/g1PrFQALtLKUDRvaobWY1k/img.jpg?width=271&amp;amp;height=400&amp;amp;face=0_0_271_400&quot;&gt;&lt;a href=&quot;http://www.yes24.com/Product/Goods/23161141&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://www.yes24.com/Product/Goods/23161141&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/RNXDG/hyNQ8abG5c/kS6gKtJQ4Sz4WBN8l7aPx0/img.jpg?width=271&amp;amp;height=400&amp;amp;face=0_0_271_400,https://scrap.kakaocdn.net/dn/VLhV2/hyNQ5kdTwQ/QawX6ewzVxMAxqwO0qaXt1/img.jpg?width=271&amp;amp;height=400&amp;amp;face=0_0_271_400,https://scrap.kakaocdn.net/dn/cK6cOl/hyNRaTmG7x/g1PrFQALtLKUDRvaobWY1k/img.jpg?width=271&amp;amp;height=400&amp;amp;face=0_0_271_400');&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;소프트 스킬 - YES24&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;흔한 개발자, 존 손메즈 그는 어떻게 33세에 은퇴했을까?&amp;ldquo;소프트웨어 개발자로 사는 동안 다양한 여정을 거쳤다. 길을 제대로 찾을 때도 있었고 그렇지 못할 때도 있었다. 이 과정에서 도움이나&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.yes24.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;&lt;a href=&quot;http://www.yes24.com/Product/Goods/20461940&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://www.yes24.com/Product/Goods/20461940&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1648453222196&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;book&quot; data-og-title=&quot;소프트웨어 장인 - YES24&quot; data-og-description=&quot;더 나은 개발자가 되어, 더 좋은 코드를 전달하고 싶은 당신을 위하여...이 책에서 풀어낸 소프트웨어 장인정신의 프로페셔널리즘, 기술적 탁월함, 고객 만족은 애자일, 린(lean) 원칙들과 시너지&quot; data-og-host=&quot;www.yes24.com&quot; data-og-source-url=&quot;http://www.yes24.com/Product/Goods/20461940&quot; data-og-url=&quot;http://www.yes24.com/Product/Goods/20461940&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/c7rnED/hyNPSGOQql/IP3kcZ63F5PC21DLX2UpBK/img.jpg?width=271&amp;amp;height=400&amp;amp;face=0_0_271_400,https://scrap.kakaocdn.net/dn/o3rci/hyNQ9NIf2c/FKItzhDzrzOnOutejYmuwK/img.jpg?width=271&amp;amp;height=400&amp;amp;face=0_0_271_400,https://scrap.kakaocdn.net/dn/bcg0AY/hyNQ1WrzFi/r6aXhdgA1kXtmDw8f2PgF1/img.jpg?width=271&amp;amp;height=400&amp;amp;face=0_0_271_400&quot;&gt;&lt;a href=&quot;http://www.yes24.com/Product/Goods/20461940&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://www.yes24.com/Product/Goods/20461940&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/c7rnED/hyNPSGOQql/IP3kcZ63F5PC21DLX2UpBK/img.jpg?width=271&amp;amp;height=400&amp;amp;face=0_0_271_400,https://scrap.kakaocdn.net/dn/o3rci/hyNQ9NIf2c/FKItzhDzrzOnOutejYmuwK/img.jpg?width=271&amp;amp;height=400&amp;amp;face=0_0_271_400,https://scrap.kakaocdn.net/dn/bcg0AY/hyNQ1WrzFi/r6aXhdgA1kXtmDw8f2PgF1/img.jpg?width=271&amp;amp;height=400&amp;amp;face=0_0_271_400');&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;소프트웨어 장인 - YES24&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;더 나은 개발자가 되어, 더 좋은 코드를 전달하고 싶은 당신을 위하여...이 책에서 풀어낸 소프트웨어 장인정신의 프로페셔널리즘, 기술적 탁월함, 고객 만족은 애자일, 린(lean) 원칙들과 시너지&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.yes24.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;&lt;a href=&quot;http://www.yes24.com/Product/Goods/80749963&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://www.yes24.com/Product/Goods/80749963&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1648453247612&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;book&quot; data-og-title=&quot;심플 소프트웨어 - YES24&quot; data-og-description=&quot;100년 뒤에도 유용할 소프트웨어 설계 원칙 &amp;amp; 프로그래머의 바른 길!Google의 코드 건강(Code Health), 즉 코드의 가독성, 안정성, 단순성, 유지보수성은 어떻게 개선되어 왔을까? 오픈소스 버그질라(Bug&quot; data-og-host=&quot;www.yes24.com&quot; data-og-source-url=&quot;http://www.yes24.com/Product/Goods/80749963&quot; data-og-url=&quot;http://www.yes24.com/Product/Goods/80749963&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ccA4GE/hyNQWniKiv/9X9yWbIw5zdckx1EmSVZrK/img.jpg?width=810&amp;amp;height=1200&amp;amp;face=0_0_810_1200,https://scrap.kakaocdn.net/dn/cDCrCm/hyNQ1B7VqE/9KhlXi2iBiJvikZZ9BRaNK/img.jpg?width=810&amp;amp;height=1200&amp;amp;face=0_0_810_1200,https://scrap.kakaocdn.net/dn/bfRTY0/hyNQ3GJdha/Z58bXWlyh9F0tx81YNTYmk/img.jpg?width=810&amp;amp;height=1200&amp;amp;face=0_0_810_1200&quot;&gt;&lt;a href=&quot;http://www.yes24.com/Product/Goods/80749963&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://www.yes24.com/Product/Goods/80749963&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ccA4GE/hyNQWniKiv/9X9yWbIw5zdckx1EmSVZrK/img.jpg?width=810&amp;amp;height=1200&amp;amp;face=0_0_810_1200,https://scrap.kakaocdn.net/dn/cDCrCm/hyNQ1B7VqE/9KhlXi2iBiJvikZZ9BRaNK/img.jpg?width=810&amp;amp;height=1200&amp;amp;face=0_0_810_1200,https://scrap.kakaocdn.net/dn/bfRTY0/hyNQ3GJdha/Z58bXWlyh9F0tx81YNTYmk/img.jpg?width=810&amp;amp;height=1200&amp;amp;face=0_0_810_1200');&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;심플 소프트웨어 - YES24&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;100년 뒤에도 유용할 소프트웨어 설계 원칙 &amp;amp; 프로그래머의 바른 길!Google의 코드 건강(Code Health), 즉 코드의 가독성, 안정성, 단순성, 유지보수성은 어떻게 개선되어 왔을까? 오픈소스 버그질라(Bug&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.yes24.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;&lt;a href=&quot;http://www.yes24.com/Product/Goods/107077663&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://www.yes24.com/Product/Goods/107077663&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1648453280791&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;book&quot; data-og-title=&quot;실용주의 프로그래머  - YES24&quot; data-og-description=&quot;『실용주의 프로그래머』는 당신이 읽고, 또 읽고, 수년간 또다시 읽게 될 몇 안 되는 기술 서적이다. 당신이 이 분야에 처음 발을 디딘 사람이건, 경험 많은 전문가이건 매번 새로운 통찰을 얻&quot; data-og-host=&quot;www.yes24.com&quot; data-og-source-url=&quot;http://www.yes24.com/Product/Goods/107077663&quot; data-og-url=&quot;http://www.yes24.com/Product/Goods/107077663&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bbT5wL/hyNQ8ONaDN/xccF4lMfxwN8lHR0u1bYL0/img.jpg?width=916&amp;amp;height=1200&amp;amp;face=0_0_916_1200,https://scrap.kakaocdn.net/dn/coGqO9/hyNQX0N17G/R1i0Z5rYiejTGaeUOrOnU0/img.jpg?width=916&amp;amp;height=1200&amp;amp;face=0_0_916_1200,https://scrap.kakaocdn.net/dn/bbBgO9/hyNPOLbC1z/7kpPVLPOfkETExMrDFDmU1/img.jpg?width=916&amp;amp;height=1200&amp;amp;face=0_0_916_1200&quot;&gt;&lt;a href=&quot;http://www.yes24.com/Product/Goods/107077663&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://www.yes24.com/Product/Goods/107077663&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bbT5wL/hyNQ8ONaDN/xccF4lMfxwN8lHR0u1bYL0/img.jpg?width=916&amp;amp;height=1200&amp;amp;face=0_0_916_1200,https://scrap.kakaocdn.net/dn/coGqO9/hyNQX0N17G/R1i0Z5rYiejTGaeUOrOnU0/img.jpg?width=916&amp;amp;height=1200&amp;amp;face=0_0_916_1200,https://scrap.kakaocdn.net/dn/bbBgO9/hyNPOLbC1z/7kpPVLPOfkETExMrDFDmU1/img.jpg?width=916&amp;amp;height=1200&amp;amp;face=0_0_916_1200');&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;실용주의 프로그래머 - YES24&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;www.yes24.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;&lt;a href=&quot;http://www.yes24.com/Product/Goods/92742567&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://www.yes24.com/Product/Goods/92742567&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1648453299815&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;book&quot; data-og-title=&quot;모던 자바스크립트 Deep Dive - YES24&quot; data-og-description=&quot;『모던 자바스크립트 Deep Dive』에서는 자바스크립트를 둘러싼 기본 개념을 정확하고 구체적으로 설명하고, 자바스크립트 코드의 동작 원리를 집요하게 파헤친다. 따라서 여러분이 작성한 코드&quot; data-og-host=&quot;www.yes24.com&quot; data-og-source-url=&quot;http://www.yes24.com/Product/Goods/92742567&quot; data-og-url=&quot;http://www.yes24.com/Product/Goods/92742567&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/9JmNF/hyNPNld5nr/qAzkqWjuELF1GoUAHaqrb1/img.jpg?width=983&amp;amp;height=1200&amp;amp;face=0_0_983_1200,https://scrap.kakaocdn.net/dn/bDFU1X/hyNQ8uuEwB/NJ2MRLIHedTiO7UakeaehK/img.jpg?width=983&amp;amp;height=1200&amp;amp;face=0_0_983_1200,https://scrap.kakaocdn.net/dn/rQpKu/hyNQ6cm0nX/T9sKyS2vMIzQSUJa8VEkHK/img.jpg?width=983&amp;amp;height=1200&amp;amp;face=0_0_983_1200&quot;&gt;&lt;a href=&quot;http://www.yes24.com/Product/Goods/92742567&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://www.yes24.com/Product/Goods/92742567&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/9JmNF/hyNPNld5nr/qAzkqWjuELF1GoUAHaqrb1/img.jpg?width=983&amp;amp;height=1200&amp;amp;face=0_0_983_1200,https://scrap.kakaocdn.net/dn/bDFU1X/hyNQ8uuEwB/NJ2MRLIHedTiO7UakeaehK/img.jpg?width=983&amp;amp;height=1200&amp;amp;face=0_0_983_1200,https://scrap.kakaocdn.net/dn/rQpKu/hyNQ6cm0nX/T9sKyS2vMIzQSUJa8VEkHK/img.jpg?width=983&amp;amp;height=1200&amp;amp;face=0_0_983_1200');&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;모던 자바스크립트 Deep Dive - YES24&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;『모던 자바스크립트 Deep Dive』에서는 자바스크립트를 둘러싼 기본 개념을 정확하고 구체적으로 설명하고, 자바스크립트 코드의 동작 원리를 집요하게 파헤친다. 따라서 여러분이 작성한 코드&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.yes24.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;&lt;a href=&quot;http://www.yes24.com/Product/Goods/15381085&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://www.yes24.com/Product/Goods/15381085&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1648453313600&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;book&quot; data-og-title=&quot;HTTP 완벽 가이드 - YES24&quot; data-og-description=&quot;웹 세상을 떠받치고 있는 HTTP에 대한 모든 것모든 성공적인 웹 트랜잭션 뒤에는, 웹 클라이언트와 서버가 문서와 정보를 교환하는 언어인 HTTP가 있다. HTTP는, 회사 인트라넷에 접근하거나 절판된&quot; data-og-host=&quot;www.yes24.com&quot; data-og-source-url=&quot;http://www.yes24.com/Product/Goods/15381085&quot; data-og-url=&quot;http://www.yes24.com/Product/Goods/15381085&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/fsTzW/hyNQ7h2YbY/4F5AQ8jCcYjuWlUpxuvk01/img.jpg?width=469&amp;amp;height=600&amp;amp;face=0_0_469_600,https://scrap.kakaocdn.net/dn/jzdi6/hyNQ4FCgO1/ExyzkK8CMo39SbIaWkOc11/img.jpg?width=469&amp;amp;height=600&amp;amp;face=0_0_469_600,https://scrap.kakaocdn.net/dn/hOrcQ/hyNPPwxbdQ/1duFaqBEYNqnlVLtdyofX1/img.jpg?width=469&amp;amp;height=600&amp;amp;face=0_0_469_600&quot;&gt;&lt;a href=&quot;http://www.yes24.com/Product/Goods/15381085&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://www.yes24.com/Product/Goods/15381085&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/fsTzW/hyNQ7h2YbY/4F5AQ8jCcYjuWlUpxuvk01/img.jpg?width=469&amp;amp;height=600&amp;amp;face=0_0_469_600,https://scrap.kakaocdn.net/dn/jzdi6/hyNQ4FCgO1/ExyzkK8CMo39SbIaWkOc11/img.jpg?width=469&amp;amp;height=600&amp;amp;face=0_0_469_600,https://scrap.kakaocdn.net/dn/hOrcQ/hyNPPwxbdQ/1duFaqBEYNqnlVLtdyofX1/img.jpg?width=469&amp;amp;height=600&amp;amp;face=0_0_469_600');&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;HTTP 완벽 가이드 - YES24&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;웹 세상을 떠받치고 있는 HTTP에 대한 모든 것모든 성공적인 웹 트랜잭션 뒤에는, 웹 클라이언트와 서버가 문서와 정보를 교환하는 언어인 HTTP가 있다. HTTP는, 회사 인트라넷에 접근하거나 절판된&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.yes24.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;&lt;a href=&quot;http://www.yes24.com/Product/Goods/89649360&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://www.yes24.com/Product/Goods/89649360&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1648453347843&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;book&quot; data-og-title=&quot;리팩터링 2판 - YES24&quot; data-og-description=&quot;개발자가 선택한 프로그램 가치를 높이는 최고의 코드 관리 기술마틴 파울러의 『리팩터링』이 새롭게 돌아왔다.지난 20년간 전 세계 프로그래머에게 리팩터링의 교본이었던 『리팩토링』은, &quot; data-og-host=&quot;www.yes24.com&quot; data-og-source-url=&quot;http://www.yes24.com/Product/Goods/89649360&quot; data-og-url=&quot;http://www.yes24.com/Product/Goods/89649360&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/rG5Z2/hyNPDJDKCU/AhQKOF7fSuxTN7LiypSnT0/img.jpg?width=975&amp;amp;height=1200&amp;amp;face=0_0_975_1200,https://scrap.kakaocdn.net/dn/cADeX2/hyNPR8ZPWk/wKG6Z8YPmpULwgxTvf48e0/img.jpg?width=975&amp;amp;height=1200&amp;amp;face=0_0_975_1200,https://scrap.kakaocdn.net/dn/7CF3v/hyNPCKJ320/KkBG7wkzdKZKk4K0MJ75xK/img.jpg?width=975&amp;amp;height=1200&amp;amp;face=0_0_975_1200&quot;&gt;&lt;a href=&quot;http://www.yes24.com/Product/Goods/89649360&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://www.yes24.com/Product/Goods/89649360&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/rG5Z2/hyNPDJDKCU/AhQKOF7fSuxTN7LiypSnT0/img.jpg?width=975&amp;amp;height=1200&amp;amp;face=0_0_975_1200,https://scrap.kakaocdn.net/dn/cADeX2/hyNPR8ZPWk/wKG6Z8YPmpULwgxTvf48e0/img.jpg?width=975&amp;amp;height=1200&amp;amp;face=0_0_975_1200,https://scrap.kakaocdn.net/dn/7CF3v/hyNPCKJ320/KkBG7wkzdKZKk4K0MJ75xK/img.jpg?width=975&amp;amp;height=1200&amp;amp;face=0_0_975_1200');&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;리팩터링 2판 - YES24&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;개발자가 선택한 프로그램 가치를 높이는 최고의 코드 관리 기술마틴 파울러의 『리팩터링』이 새롭게 돌아왔다.지난 20년간 전 세계 프로그래머에게 리팩터링의 교본이었던 『리팩토링』은,&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.yes24.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;&lt;a href=&quot;http://www.yes24.com/Product/Goods/67350256&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://www.yes24.com/Product/Goods/67350256&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1648453380508&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;book&quot; data-og-title=&quot;함께 자라기 - YES24&quot; data-og-description=&quot;&amp;lsquo;함께&amp;rsquo;는 협력을 말하고, &amp;lsquo;자라기&amp;rsquo;는 학습을 말한다. 무엇이건 실제 바깥세상(야생)에 임팩트를 남기려면 혼자 힘으로만 되는 게 없다. 함께 해야 한다. 주변 사람들과 함께. 매일 부대끼는 &quot; data-og-host=&quot;www.yes24.com&quot; data-og-source-url=&quot;http://www.yes24.com/Product/Goods/67350256&quot; data-og-url=&quot;http://www.yes24.com/Product/Goods/67350256&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Qao50/hyNPGGmSCK/inAywB6kqUvMolXwLckybK/img.jpg?width=780&amp;amp;height=1200&amp;amp;face=0_0_780_1200,https://scrap.kakaocdn.net/dn/bCBSBw/hyNQ1IUskU/FsnB6LH3vnd3tnRXwKBKB0/img.jpg?width=780&amp;amp;height=1200&amp;amp;face=0_0_780_1200,https://scrap.kakaocdn.net/dn/0SVMr/hyNRbLwMdz/kKiXFek2WmLrYV6rds2cU1/img.jpg?width=780&amp;amp;height=1200&amp;amp;face=0_0_780_1200&quot;&gt;&lt;a href=&quot;http://www.yes24.com/Product/Goods/67350256&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://www.yes24.com/Product/Goods/67350256&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Qao50/hyNPGGmSCK/inAywB6kqUvMolXwLckybK/img.jpg?width=780&amp;amp;height=1200&amp;amp;face=0_0_780_1200,https://scrap.kakaocdn.net/dn/bCBSBw/hyNQ1IUskU/FsnB6LH3vnd3tnRXwKBKB0/img.jpg?width=780&amp;amp;height=1200&amp;amp;face=0_0_780_1200,https://scrap.kakaocdn.net/dn/0SVMr/hyNRbLwMdz/kKiXFek2WmLrYV6rds2cU1/img.jpg?width=780&amp;amp;height=1200&amp;amp;face=0_0_780_1200');&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;함께 자라기 - YES24&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;lsquo;함께&amp;rsquo;는 협력을 말하고, &amp;lsquo;자라기&amp;rsquo;는 학습을 말한다. 무엇이건 실제 바깥세상(야생)에 임팩트를 남기려면 혼자 힘으로만 되는 게 없다. 함께 해야 한다. 주변 사람들과 함께. 매일 부대끼는&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.yes24.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;</description>
      <category>프론트엔드/Book</category>
      <category>개발자</category>
      <category>도서추천</category>
      <category>프론트엔드</category>
      <category>필독서</category>
      <author>.log('FE')</author>
      <guid isPermaLink="true">https://code-reading.tistory.com/140</guid>
      <comments>https://code-reading.tistory.com/140#entry140comment</comments>
      <pubDate>Mon, 28 Mar 2022 18:04:11 +0900</pubDate>
    </item>
    <item>
      <title>언제 리액트를 시작해야할까?</title>
      <link>https://code-reading.tistory.com/139</link>
      <description>&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;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리액트 즉 프론트개발을 공부하려면 기본적으로 html, css, javascript 를 배우라고한다. 근데 여기서 궁금증은 도대체 어디까지 배워야 얼마나 할줄알아야 리액트를 할 수 있는가 이다.&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;b&gt;기준을 정해보자&lt;/b&gt;&lt;/h2&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;b&gt;1. html, css, js 를 사용하여 강의나 블로그 클론 코딩이 아닌 스스로 한땀한땀 만들어본 사이트가 최소 3개는된다.&lt;/b&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;b&gt;2. javascript 코어에 대한 대충 이해는 하고있다.&lt;/b&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;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 브라우저의 렌더링에 대해서 알고있다.&lt;/b&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;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. 비동기 처리에 대한 이해&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프론트는 단순히 마크업코드만 작성하는것이 아니라 HTTP 네트워크를 통해 서버에 요청을하고 응답을 받아온 동적데이터를 처리하여 화면에 보여주는 업무를 주로 진행하게된다. 그리고 이 과정은 순식간에 이루어지지만 엄연히 처리 순서가 존재하기 때문에 비동기가 무엇인지 비동기를 처리하는 방식에 대해서 이해하고 있어야 한다.&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;b&gt;리액트랑 연결해보기&lt;/b&gt;&lt;/h2&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;1. 마크업과 스크립트기본은 리액트에서 jsx 문법을 작성하는것과 연관지을 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 리액트는 결국 자바스크립트 이기때문에 자바스크립트가 갖고있는 언어적 특징과 코어에 대한 이해가 필요하다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 리액트는 가상돔을 사용하여 선언적 프로그래밍 방식으로 돔을 조작한다. 이 부분을 이해하기 위해서는 브라우저의 렌더링을 바탕으로 해야 이해하기 쉽다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 리액트는 각 컴포넌트별로 상태를 가질 수 있는데 이 상태는 state 의 변경과 props의 변경으로 업데이트되고 리렌더링이 진행된다 이때 이 과정들이 비동기적으로 진행되기때문에 비동기처리에 대한 이해 없이는 리액트의 동작을 이해하기 매우 어려워 진다.&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;b&gt;지금당장 시작해라&lt;/b&gt;&lt;/h2&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;&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;npm, 패키지관리, 프로젝트 구조, 모듈, SPA, CSR, SSR ......&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;</description>
      <category>프론트엔드/한줄코딩</category>
      <category>fe</category>
      <category>Frontend</category>
      <category>개발자</category>
      <category>리액트</category>
      <category>언제시작해야할까</category>
      <category>자바스크립트</category>
      <category>프론트엔드</category>
      <author>.log('FE')</author>
      <guid isPermaLink="true">https://code-reading.tistory.com/139</guid>
      <comments>https://code-reading.tistory.com/139#entry139comment</comments>
      <pubDate>Mon, 14 Mar 2022 22:48:02 +0900</pubDate>
    </item>
    <item>
      <title>forwardRef 알아보기</title>
      <link>https://code-reading.tistory.com/138</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;사내에서 사용할 UI 라이브러리를 만들면서 다른 UI 라이브러리들의 내부를 분석하였는데 공통적으로 쓰이고 있는 &lt;s&gt;forwardRef()&lt;/s&gt; 에 대해서 궁금증을 갖고 알아보게 되었습니다.&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;# Ref&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ref 는 참조라는 뜻을 갖고 있습니다. 우선 리액트에서 사용되는 Ref 에 대해서 알아보았습니다.&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;Ref 는 render 메서드에서 생성된 DOM 노드나 React 엘리먼트에 접근하는 방법을 제공합니다.&amp;nbsp;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리액트에서는 props 를 통해서 부모에서 자식으로 단방향으로 데이터를 내려주고 있습니다. 자식 컴포넌트가 수정되기를 원한다면 새로운 props 를 전달하여 리렌더링을 통해 수정을 할 수 있습니다. 그러나 가끔 직접 자식을 수정해야 할 경우가 있을 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리액트 공식문서에서 Ref 를 사용해야하는 바람직한 사례를 세가지를 들고 있습니다.&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;- 애니메이션을 직접적으로 실행시킬때&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 서드파티 DOM 라이브러리를 React 와 같이 사용할때&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;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 선언적으로 해결될 수 있는 문제에 대해서는 ref 사용을 지양&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;React는 선언적 프로그래밍으로 만들어 졌기때문에 돔에 접근하여 돔을 업데이트하는 세부적인 사항에 대해서는 사용자가 신경쓰지 않아도 되도록 구현되어 있습니다. 그런 간혹 돔에 직접 접근이 필요한 경우가 있는데 이때 ref 를 사용하여 접근할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리액트 16.3 이후부터는 &lt;s&gt;React.createRef()&lt;/s&gt; API 를 사용할 수 있고 이전 버전에서는 콜백 ref 를 사용해야 합니다.&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;s&gt;클래스컴포넌트&lt;/s&gt;와 &lt;s&gt;함수컴포넌트&lt;/s&gt; 두가지로 작성할 수 있는데 최근 트랜드는 함수컴포넌트를 쓰고 있습니다. 클래스와 다르게 함수는 인스턴스가 없기 때문에 함수컴포넌트에 직접적으로 ref 속성을 사용할 수 없습니다. 그래서 이때 사용할 수 있는 방법이 &lt;s&gt;forwardRef()&lt;/s&gt; 라는 함수 입니다.&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;# forwardRef()&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리액트 컴포넌트를 forwardRef() 라는 함수로 감싸게되면 해당 컴포넌트는 두번째 매개변수를 갖습니다. 이를 통해 외부에서 ref props 을 전달하여 사용할 수 있습니다.&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;정리하자면 forwardRef() 는 기존 클래스 컴포넌트에서 인스턴스를 활용하여 사용하던 ref 속성을 함수컴포넌트에서는 사용이 불가능하기때문에 외부로 ref 를 전달할 수 있도록 해주는 함수 입니다.&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;s&gt;forwardRef()&lt;/s&gt; 를 사용했을경우 리액트 개발자 도구에서 컴포넌트 이름이 노출되지 않을 수 있기때문에 이를 해결하기위해 아래와 같은 방법을 사용할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;## material-ui 에서 사용중인 방법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;forwardRef()&lt;/s&gt; 로 감쌀때 익명함수가 아닌 이름이 있는 함수를 넘겨주는 방법입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1646965733913&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const Input = React.forwardRef(( function Input(props, ref) {} ))&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;## chakra-ui 에서 사용중인 방법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;displayName&lt;/s&gt; 속성에 이름을 설정합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1646965921160&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;export const Input = forwardRef((props, ref) =&amp;gt; {...})
if (__DEV__) {
	Input.displayName = &quot;Input&quot;
}&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;## ant-design 에서 사용중인 방법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;forwardRef()&lt;/s&gt; 함수의 호출 결과로 기존 컴포넌트 대체하기&lt;/p&gt;
&lt;pre id=&quot;code_1646966344626&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// ==== Input ======//
const Input = forwardRef((props, ref) =&amp;gt; {...})
export default Input

//====== index ========//
import InternalInput from './Input'

const Input = InternalInput
export default Input&lt;/code&gt;&lt;/pre&gt;</description>
      <category>프론트엔드/React</category>
      <category>Component</category>
      <category>fe</category>
      <category>forwardRef</category>
      <category>Frontend</category>
      <category>javascript</category>
      <category>libraryUI</category>
      <category>React</category>
      <category>Ref</category>
      <author>.log('FE')</author>
      <guid isPermaLink="true">https://code-reading.tistory.com/138</guid>
      <comments>https://code-reading.tistory.com/138#entry138comment</comments>
      <pubDate>Fri, 11 Mar 2022 18:41:43 +0900</pubDate>
    </item>
    <item>
      <title>Custom Input Radio</title>
      <link>https://code-reading.tistory.com/137</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;input 의 타입중 &lt;s&gt;radio&lt;/s&gt; 는 브라우저마다 기본 스타일이 다르게 보여집니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 일반적인 css 스타일을 적용해서는 원하는대로 스타일을 바꾸기가 어렵습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;때문에 &lt;s&gt;label&lt;/s&gt; 과 &lt;s&gt;input&lt;/s&gt; 이 가진 특성을 활용하면 커스텀한 라디오를 만들 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1646899996209&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;wrap&quot;&amp;gt;
    &amp;lt;div&amp;gt;
      &amp;lt;input id=&quot;custom1&quot; type=&quot;radio&quot; name=&quot;custom&quot; value=&quot;custom1&quot; /&amp;gt;
      &amp;lt;label class=&quot;circle&quot; for=&quot;custom1&quot;&amp;gt;&amp;lt;/label&amp;gt;
      &amp;lt;label class=&quot;text&quot; for=&quot;custom1&quot;&amp;gt;text&amp;lt;/label&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div&amp;gt;
      &amp;lt;input id=&quot;custom2&quot; type=&quot;radio&quot; name=&quot;custom&quot; value=&quot;custom2&quot; /&amp;gt;
      &amp;lt;label class=&quot;circle&quot; for=&quot;custom2&quot;&amp;gt;&amp;lt;/label&amp;gt;
      &amp;lt;label class=&quot;text&quot;  for=&quot;custom2&quot;&amp;gt;text2&amp;lt;/label&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div&amp;gt;
      &amp;lt;input id=&quot;custom3&quot; type=&quot;radio&quot; name=&quot;custom&quot; value=&quot;custom3&quot; /&amp;gt;
      &amp;lt;label class=&quot;circle&quot; for=&quot;custom3&quot;&amp;gt;&amp;lt;/label&amp;gt;
      &amp;lt;label class=&quot;text&quot;  for=&quot;custom3&quot;&amp;gt;text3&amp;lt;/label&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/div&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;pre id=&quot;code_1646900021743&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;input[type=radio] {
  display: none;
}

div {
  display: flex;
  align-items: center;
  gap: 5px;
}

label {
  cursor: pointer;
}

.circle {
  width: 20px;
  height: 20px;
  border: 2px solid #cccccc;
  display: block;
  border-radius: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.circle::after {
  content: '';
  display: block;
  width: 14px;
  height: 14px;
  border-radius: 14px;
}

input[type=radio]:checked + .circle::after {
  background: red;
}

input[type=radio]:checked ~ .text {
  color: red;
}&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;pre id=&quot;code_1646900051827&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const wrap = document.querySelector('.wrap')
wrap.addEventListener('change', (e) =&amp;gt; {
  console.log(e.target.value)
})&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;p data-ke-size=&quot;size16&quot;&gt;이벤트 바인딩을 부모에만 걸어 코드의 양을 줄이고 메모리도 절약할 수 있습니다.&lt;/p&gt;</description>
      <category>프론트엔드/한줄코딩</category>
      <category>CSS</category>
      <category>CUSTOM</category>
      <category>fe</category>
      <category>Frontend</category>
      <category>html</category>
      <category>input</category>
      <category>RADIO</category>
      <category>버블링</category>
      <category>이벤트위임</category>
      <author>.log('FE')</author>
      <guid isPermaLink="true">https://code-reading.tistory.com/137</guid>
      <comments>https://code-reading.tistory.com/137#entry137comment</comments>
      <pubDate>Thu, 10 Mar 2022 18:25:18 +0900</pubDate>
    </item>
    <item>
      <title>개발자를 시작하려는 선택의 기로에선 사람들에게..</title>
      <link>https://code-reading.tistory.com/136</link>
      <description>&lt;h1&gt;들어가는 말&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IT에서 종사한지는 5년, 그 중 프론트개발자로 일한지는 3년이 되었습니다.&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;우선 저도 비전공자로 국비교육과정을 수료하고 이곳저곳 거쳐서 현재 직장에 자리잡게 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;수료 후 =&amp;gt; 3개월 =&amp;gt; 6개월 =&amp;gt; 2년 =&amp;gt; 현재&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그때 당시엔 퍼블리셔로 교육을 받았습니다. &lt;s&gt;html, css, jQuery, 포토샵, 일러스트, 동영상편집&lt;/s&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;예를들자면 프론트개발자 교육인데 JAVA, Python, jQuery 같은것들이 포함되어있거나&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모바일 과정인데 ReactNative, IOS, Android, Flutter 를 다 알려준다고 하거나&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또는 프론트과정인데 React, Vue, Svelt 모든 프레임워크를 다 다뤄본다던가....&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;결국 그 도구가 교체되면 아무것도 못하게 되는거랑 같다고 생각합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기까지 대략적인 제 이야기와 제 생각을 적어봤습니다.&lt;/p&gt;
&lt;h1&gt;  선택&lt;/h1&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;개발자로서의 커리어를 선택하는 분들의 타입은 다양한것같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;타직종 재직자의 커리어 전환&lt;/li&gt;
&lt;li&gt;비전공자의 신입 취업&lt;/li&gt;
&lt;li&gt;중고신입&lt;/li&gt;
&lt;li&gt;전공자&lt;/li&gt;
&lt;/ul&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;그럼 가장 첫번째로 해야할 선택이 무엇이 있을까요. 바로 학습과정의 선택입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;국비지원 교육&lt;/li&gt;
&lt;li&gt;사교육 부트캠프&lt;/li&gt;
&lt;li&gt;기업 부트캠프&lt;/li&gt;
&lt;li&gt;온라인 강좌 독학&lt;/li&gt;
&lt;/ul&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;h3 data-ke-size=&quot;size23&quot;&gt;국비지원&lt;/h3&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;그리고 여러곳에 존재하기때문에 집에서 가장 가까운곳을 선택할 수도 있겠죠&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;내돈이아니라 국비지원이기때문에 중도 이탈자도 쉽게 발생합니다. - 학습 분위기에 영향을 끼침&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;사교육 부트캠프&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최대단점 비쌉니다. 3개월 6개월에 몇백만원씩 하죠 그래도 요즘엔 사교육 부캠이 국비지원으로 모집하는 케이스도 많이 생긴것같습니다.&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;중도 이탈자가 적고 어쨋든 무조건 결과물은 만들어 집니다. 그리고 국비보다는 해당 직무에 특화된 교육을 받을 수 있습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기업 부트캠프&lt;/h3&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;뒤쳐지는 사람때문에 속썩을일도 없습니다.&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;h3 data-ke-size=&quot;size23&quot;&gt;온라인 강좌 독학&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://code-reading.tistory.com/118&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2021.10.22 - [프론트엔드/Assignment] - 프론트개발 학습 사이트 정리&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1646404755421&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;프론트개발 학습 사이트 정리&quot; data-og-description=&quot;기존에 작성된 개발자 학습사이트 정리 에 대한 유입이 꽤나 지속적으로 이루어지고 있는데 시간이 지나다보니 접근이 안되는 링크도있고 업데이트가 필요할것같아서 재정리하려고 합니다. Ude&quot; data-og-host=&quot;code-reading.tistory.com&quot; data-og-source-url=&quot;https://code-reading.tistory.com/118&quot; data-og-url=&quot;https://code-reading.tistory.com/118&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/eXfPp/hyNB0YwpiN/0eng6szah3sVRNzqkkaoBK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/hAust/hyNBZefp8V/ghtWzwTVAP8m7KloDgsCZ0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://code-reading.tistory.com/118&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://code-reading.tistory.com/118&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/eXfPp/hyNB0YwpiN/0eng6szah3sVRNzqkkaoBK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/hAust/hyNBZefp8V/ghtWzwTVAP8m7KloDgsCZ0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&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;프론트개발 학습 사이트 정리&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;기존에 작성된 개발자 학습사이트 정리 에 대한 유입이 꽤나 지속적으로 이루어지고 있는데 시간이 지나다보니 접근이 안되는 링크도있고 업데이트가 필요할것같아서 재정리하려고 합니다. Ude&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;code-reading.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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;커리큘럼과 가이드만 제대로 잡혀있는 상태라면 그거대로 내 입맛에 맞는 온라인강좌나 책으로 독학해도되는 가성비 제일 갑인 방법이기도 합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;선택의 시간&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;돈이 없다면 국비&lt;/li&gt;
&lt;li&gt;약간의 투자가 가능하고 개인관리가 철저하다면 유무료 인강과 책을 통한 독학&lt;/li&gt;
&lt;li&gt;돈이들어도 난 빨리 취업해야겠다 사교육 부캠&lt;/li&gt;
&lt;li&gt;알고리즘이나 기반 지식이 있어서 제대로된 코스를 밟겠다 기업부캠&lt;/li&gt;
&lt;/ul&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;h1&gt;취업을 위한 학습 방법&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자 그럼 저런 과정을 어쨋든 통하면 다 개발자가 될 수 있나? 라는 질문을 한다면 네니요 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무슨말이냐면 개발자로 취업은 할 수 있습니다. 어쨋든 IT 종사자는 될 수 있어요. 남들이 못하는거 난 할줄 아니까&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;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;요리도 처음엔 모르니까 레시피를 보고 하지만 익숙해지면 부재료를 첨가하기도하고 맵거나 달게 마음대로 조리할 수 있는것처럼&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;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 처음에 HTML, CSS 를 접하게 됩니다.&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;왜 해당 마크업언어가 생기게 되었는지 HTML, CSS 는 어떤 목적으로 생겨난건지 하는 의문이 필요하고 그에 대해 스스로 알아봐야 합니다.&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;b&gt;또 다른 예시&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 마크업언어를 어느정도 학습하고 JavaScript 를 배우게 됩니다. 이때 원시값과 객체에 어떤 종류가 있다 라고 배웠다면&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;왜 라는 의문을 갖는데 있어서 어떤 의문을 가져야 할지 모르겠다 라고 하는분이 있다면 좀더 근본적인 얘기를 해보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;개발자는 뭘 하는 사람이고 뭐하는 직업일까요?&lt;/blockquote&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;여기에 왜라는 의문을 어떻게 가져야 할지 답이 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTML 은 왜 어떤 문제를 해결하기위해 사용될 수 있는지?&lt;/li&gt;
&lt;li&gt;CSS 는 어떤 문제 또는 불편함을 해결하기위해 사용될 수 있는지?&lt;/li&gt;
&lt;li&gt;스타일은 선언하여 사용하는 방법에 여러가지가 있는데 왜 이런 방법들이 있고 어떤 차이점 장단점이 존재하는지?&lt;/li&gt;
&lt;li&gt;JS 는 어떤 문제를 해결하기위해 등장 하였는지?&lt;/li&gt;
&lt;/ul&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;&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;/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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;자주 묻는 질문&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 전공자와 비전공자의 차이가 채용에 얼마나 영향을 끼치는지?&lt;/b&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;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;다만 여기서 누구나 만들 수 있는 웹 페이지는 정말 단순한 정적페이지에 한해서라고 얘기할 수 있을것같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 서비스는 매우 복잡한 내용들이 포함되어있고 이를 아주 잘 구현해야합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 무조건 100% 200% 에러상황 문제가 발생하는 상황에 마주하게됩니다. 개발자는 결국 문제를 해결하는 사람인데 마주하게된 문제를 해결할 수 없다면 개발자라고 할 수 없겠죠. 근데 이 문제를 해결할때 결국 근본적인 해결을 하려면 코어지식이 필요합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한가지 예를 들자면 Maximum call stack 이란 에러를 마주하게 될 수 있습니다. 이때 스택은 자료구조의 하나로 퀵하고 쌍을 이루는 개념입니다. 그리고 자바스크립트는 싱글스레드로 동작한다고 하는데 그게 콜스택과 연관이 있습니다.&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 자격증에 대한 가산점은 얼마나 해당되는지&lt;/b&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;일반 자사 서비스를 운영하는 회사에서는 그냥 아 자격증이 있구나 하고말지 가산점이나 당락여부에 전공과 마찬가지로 큰 영향력은 없습니다. 가산점과 상관없이 그냥 해당 자격증공부를 통해 어떤 기본적인 지식을 쌓거나 자존감을 올리기위한 수단이라면 준비해보는것도 좋을것같습니다.&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;b&gt;3. 신입기준 연봉수준은 어느정도가 적당한지&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이건 사람마다 개인적인 기준이나 생각이 달라서 참고만 하면될것같은데 3000정도면 신입 초봉으로 나쁘지 않은 수준이다 라고 생각할것같습니다. 에이 말도안돼 저렇게 적다고? 라고 생각하신다면 평균보다 더 잘하고 실력 쌓아서 좋은곳 더 많은 연봉을 주는곳으로 가시면 될것같습니다. 바운더리를 얘기를 해보자면 2800~6000 정도로 천차만별이라 ...... 결국 잘하는 사람이 더 많이받고 가겠죠?&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;b&gt;4. 고졸로 취업하려는데 불이익은 없는지&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;음 표면적인 불이익은 없어요 근데 그 회사가 최초 고졸 채용시 그 사람에게서 어떤 느낌을 받았느냐 어떤 경험을 했느냐에 따라서 프레임이 씌워져서 어떤 회사에선 기피할수도 있을것같습니다. 저도 2년이상 있었던 회사가 두군데인데 둘다 고졸채용이 있었습니다. 근데...별로 좋은모습은 본적이 없네요 그런 모습들이 고졸이라서 철이없어서 아직 어려서 경험이 부족해서...이런 프레임들이 사람인지라 은연중에 뇌리에 박혀서 부정적인 경험을 했다면 ....이건 꼭 고졸이기때문이 아니더라도 다른 케이스일때도 마찬가지일것같네요 신입을 채용하는데 고졸 대졸 상관없이 너무 빨리 그만두면 경력직만 뽑으려 하겠죠 신입에 대한 좋은 경험이 없으니까요&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;b&gt;5. 포트폴리오가 꼭 필수 사항인지&lt;/b&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;그래도 무언가 어필을 하려면 면접에서 이야기 보따리를 풀 수 있는 포폴 하나정돈 있으면 좋을것같습니다.&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;즉 누군가의 코드를 따라서 쳐서 클론코딩이 아니라 서비스의 기능을 내가 스스로 똑같이 구현해 보는것이 클론코딩의 목적입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그냥 남의코드 따라만 쳐서 완성한건 이야기할것도없고 아무 의미가 없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;딱 한 페이지를 만들더라도 거기에 들어간 기능들을 내가 손수 고민해가면서 만들어 본거라면 1페이지던 10페이지던 포폴이 한개이던 다섯개이던 별로 중요하지 않다고 생각합니다.&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;위의 내용들은 굴지의 대기업이냐 IT 공룡 기업들이냐 중소기업이냐 스타트업이냐에 따라 조금씩 다를 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제가 작성한 글이 어떤 정답도 아니고 무조건 이렇다 이런것도 아닙니다. 다만 해당 직종을 선택하는데 있어서 조금이나마 도움이 되길바라고 저도 이런 생각을 갖기까지 아무 생각없이 지냈을때 왜 그리고 코어지식을 쌓아야겠다는 생각을 좀더 빨리 했으면 좋았겠다 라는 정도 차원에서 작성하게 되었습니다.&lt;/p&gt;</description>
      <category>프론트엔드</category>
      <category>개린이</category>
      <category>개발자공부</category>
      <category>개발자준비</category>
      <category>신입개발자</category>
      <category>웹프론트엔드개발준비</category>
      <category>처음시작하는</category>
      <category>프론트엔드기초</category>
      <category>프론트엔드시작</category>
      <category>프린이</category>
      <author>.log('FE')</author>
      <guid isPermaLink="true">https://code-reading.tistory.com/136</guid>
      <comments>https://code-reading.tistory.com/136#entry136comment</comments>
      <pubDate>Fri, 4 Mar 2022 23:49:41 +0900</pubDate>
    </item>
    <item>
      <title>크롬 확장 프로그램 알아보기 (2)</title>
      <link>https://code-reading.tistory.com/135</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://code-reading.tistory.com/133&quot;&gt;2021.12.23 - [프론트엔드/Project] - 크롬확장프로그램 알아보기 (1)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1641195787007&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;크롬 확장 프로그램 알아보기 (1)&quot; data-og-description=&quot;최근 사내에서 업무의 효율성을 높이기위해 개인적으로 진행한 크롬 익스텐션을 개발하였는데 그 과정에서 알게된 내용들을 정리하려고 합니다. 크롬 익스텐션 크롬브라우저에서는 다양한 확&quot; data-og-host=&quot;code-reading.tistory.com&quot; data-og-source-url=&quot;https://code-reading.tistory.com/133&quot; data-og-url=&quot;https://code-reading.tistory.com/133&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dIJ5CU/hyMXOp5odI/NuEa9NONBdyJXm4T6aKtL1/img.png?width=344&amp;amp;height=189&amp;amp;face=0_0_344_189,https://scrap.kakaocdn.net/dn/jtTQW/hyMXHqX3eo/AlGkshiP8uXxT6GiCKJcak/img.png?width=344&amp;amp;height=189&amp;amp;face=0_0_344_189,https://scrap.kakaocdn.net/dn/i0WaZ/hyMXLNE7PX/onvNHkKQ4IeNAbSkw5trI1/img.png?width=407&amp;amp;height=214&amp;amp;face=0_0_407_214&quot;&gt;&lt;a href=&quot;https://code-reading.tistory.com/133&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://code-reading.tistory.com/133&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dIJ5CU/hyMXOp5odI/NuEa9NONBdyJXm4T6aKtL1/img.png?width=344&amp;amp;height=189&amp;amp;face=0_0_344_189,https://scrap.kakaocdn.net/dn/jtTQW/hyMXHqX3eo/AlGkshiP8uXxT6GiCKJcak/img.png?width=344&amp;amp;height=189&amp;amp;face=0_0_344_189,https://scrap.kakaocdn.net/dn/i0WaZ/hyMXLNE7PX/onvNHkKQ4IeNAbSkw5trI1/img.png?width=407&amp;amp;height=214&amp;amp;face=0_0_407_214');&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;크롬 확장 프로그램 알아보기 (1)&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;code-reading.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;원래 한번에 작성하려고 했다가 내용이 생각보다 길어질것 같아서 시리즈형태로 나눠서 작성합니다.&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;b&gt;messaging pass&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;466ftDp0EXB4E1XeaGh0.png&quot; data-origin-width=&quot;439&quot; data-origin-height=&quot;358&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/U2eOR/btroWnyAMwp/uIhqdwXXs0h8yO2TMWpvok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/U2eOR/btroWnyAMwp/uIhqdwXXs0h8yO2TMWpvok/img.png&quot; data-alt=&quot;크롬 API 메제징 교환 방식&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/U2eOR/btroWnyAMwp/uIhqdwXXs0h8yO2TMWpvok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FU2eOR%2FbtroWnyAMwp%2FuIhqdwXXs0h8yO2TMWpvok%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;439&quot; height=&quot;358&quot; data-filename=&quot;466ftDp0EXB4E1XeaGh0.png&quot; data-origin-width=&quot;439&quot; data-origin-height=&quot;358&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;크롬 API 메제징 교환 방식&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전에 &lt;s&gt;content.js&lt;/s&gt; 라는 파일을 만든적이 있었습니다. &lt;s&gt;content&lt;/s&gt; 는 확장 프로그램이 아닌 웹 페이지의 컨텍스트에서 실행되기 때문에 나머지 확장 프로그램의 스크립트나 페이지와 통신하기위하 별도의 방법이 필요합니다. content 가 웹 페이지의 컨텍스트에서 동작한다는 증거를 들자면 &lt;s&gt;content&lt;/s&gt; 에서는 웹 페이지의 &lt;s&gt;DOM&lt;/s&gt; 을 조작할 수 있습니다. 그러나 &lt;s&gt;background&lt;/s&gt; 에서는 안되죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또 &lt;s&gt;content&lt;/s&gt; 에서 &lt;s&gt;console.log&lt;/s&gt; 를 찍어보면 해당 탭의 콘솔창에서 로그를 확인할 수 있습니다. &lt;s&gt;background&lt;/s&gt; 내에서 &lt;s&gt;console.log&lt;/s&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;때문에 다시한번 얘기하자면 content 와 나머지 확장 프로그램 스크립트와 데이터를 주고받기 위해서 messaging pass 를 사용하고 있습니다.&amp;nbsp;&lt;/p&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;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;chrome.runtime.sendMessage&lt;/s&gt; - content 스크립트 =&amp;gt; 확장 프로그램 스크립트로 요청 보낼때&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;chrome.tabs.query&lt;/s&gt; - 확장 프로그램 스크립트 =&amp;gt; content 스크립트로 요청 보낼때&lt;/p&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;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;chrome.runtime.onMessage.addListener&lt;/s&gt; - content 스크립트, 확장 스크립트 동일&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;script src=&quot;https://gist.github.com/kangyongseok/56f373d70fa7a55529b097fbc81ef924.js&quot;&gt;&lt;/script&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;s&gt;브라우저의 현재 활성된 탭&lt;/s&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;s&gt;확장프로그램의 개발자 창&lt;/s&gt;이 별도로 띄워지고 해당 콘솔에서 응답받은 결과를 확인할 수 있습니다.&lt;/p&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;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;chrome.runtime.connect&lt;/s&gt; - content 스크립트 =&amp;gt; 확장프로그램 스크립트로 연결 요청할 때&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;chrome.tabs.connect&lt;/s&gt; - 확장 프로그램 스크립트 =&amp;gt; content 스크립트로 연결 요청할 때&lt;/p&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;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;chrome.runtime.onConnect.addListener&lt;/s&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;a href=&quot;https://developer.chrome.com/docs/extensions/mv3/messaging/#connect&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;예제 코드&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1640739170517&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Message passing - Chrome Developers&quot; data-og-description=&quot;How to pass messages between extensions and content scripts.&quot; data-og-host=&quot;developer.chrome.com&quot; data-og-source-url=&quot;https://developer.chrome.com/docs/extensions/mv3/messaging/#connect&quot; data-og-url=&quot;https://developer.chrome.com/docs/extensions/mv3/messaging/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/d6MyuY/hyMSRaAj82/jLtLABeRms2BkHH9wKASdK/img.png?width=1521&amp;amp;height=1521&amp;amp;face=0_0_1521_1521,https://scrap.kakaocdn.net/dn/cbahKd/hyMSYndWc2/kVhjUkI3vUndgevB3I9lQ0/img.png?width=1521&amp;amp;height=1521&amp;amp;face=0_0_1521_1521&quot;&gt;&lt;a href=&quot;https://developer.chrome.com/docs/extensions/mv3/messaging/#connect&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.chrome.com/docs/extensions/mv3/messaging/#connect&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/d6MyuY/hyMSRaAj82/jLtLABeRms2BkHH9wKASdK/img.png?width=1521&amp;amp;height=1521&amp;amp;face=0_0_1521_1521,https://scrap.kakaocdn.net/dn/cbahKd/hyMSYndWc2/kVhjUkI3vUndgevB3I9lQ0/img.png?width=1521&amp;amp;height=1521&amp;amp;face=0_0_1521_1521');&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;Message passing - Chrome Developers&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;How to pass messages between extensions and content scripts.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developer.chrome.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;사실 해당 내용에 대해서는 제대로 아직 이해를 하지 못했습니다. 문서에서는 사용사례로 자동양식 채우기를 예시로 들었는데 혹시 해당 내용에 대해서 정확한 이해를 하신분 댓글로 설명해주시면 감사할것같습니다. 단일요청과의 차이를 비교할 수 있으면 더 좋을것같습니다.&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;b&gt;Content Script&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1부에서는 &lt;s&gt;background.js&lt;/s&gt; 에 스크립팅 형식으로 &lt;s&gt;content.js&lt;/s&gt; 를 추가해 주었습니다. 좀 더 다양하게 활용하려면 &lt;s&gt;매니페스트&lt;/s&gt;에 설정을 추가하여 사용할 수 있습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;// manifest.json&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp;...&lt;br /&gt;&amp;nbsp; &amp;nbsp;&quot;content_scripts&quot;: [&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;matches&quot;: [&quot;http://*&quot;],&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;css&quot;: [&quot;style.css&quot;],&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;js&quot;: [&quot;content.js&quot;],&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp;]&lt;br /&gt;}&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;matches : 해당 url 과 일치할때 스크립트를 활성화 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;css: 일치하는 페이지에 삽입할 css 파일 목록 입니다. 배열에 입력하는 순서대로 삽입됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;js: 일치하는 페이지에 삽입할 스크립트 입니다.&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;s&gt;정적 선언&lt;/s&gt;으로 주입하는 방식입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;컨텐츠 스크립트&lt;/s&gt;는 웹 페이지의 컨텍스트에서 실행됩니다. &lt;s&gt;DOM&lt;/s&gt; 을 활용할 수 있고 방문하는 웹 페이지의 세부정보를 읽어 전달할 수 있습니다. 만약 일치가 아니라 제외하고픈 url 이 있다면 &lt;s&gt;&quot;exclude_matches&quot;: []&lt;/s&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;1부에서 매니페스트가 아닌 background 에서 content 스크립트를 지정하여 사용하는 방식이 &lt;s&gt;프로그래밍 삽입 방식&lt;/s&gt; 입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 접근에 대한 호스트권한이 필요하기때문에 매니페스트에서 &lt;s&gt;&quot;permissions&quot;: [&quot;activetab&quot;]&lt;/s&gt; 을 설정하였습니다.&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;b&gt;chrome.storage&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메세지 패싱으로 데이터를 주고 받을수도 있지만 웹에서 &lt;s&gt;localstorage&lt;/s&gt; 를 활용하는것처럼 크롬 확장 프로그램 API 로 storage 를 제공하고 있어 이를 활용할 수도 있습니다. localstorage 와 동일한 기능을 제공하지만 몇가지 차이점이 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;객체로 저장할 수 있습니다 (localstorage 는 문자열로 저장)&lt;/li&gt;
&lt;li&gt;&lt;s&gt;storage.sync&lt;/s&gt; 를 활용하여 자동으로 동기화 시킬 수 있습니다.&lt;/li&gt;
&lt;li&gt;저장할 수 있는 아이템 개수가 512개 로 제한이 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;storage 를 사용하기위해서는 매니페스트에 설정을 추가해야합니다&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&quot;permissions&quot;: [&quot;storage&quot;]&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용방법은 간단합니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;chrome.storage.sync.set({ key: 'test '})&lt;br /&gt;chrome.storage.sync.get( [ 'key' ] ).then( result =&amp;gt; console.log( result.key ) )&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developer.chrome.com/docs/extensions/reference/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;API 참조&lt;/a&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 확장 프로그램으로 웹 페이지의 폼 데이터를 저장해두었다가 다시 불러와 set 해주는 어플리케이션을 만들었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사내용으로 만든거라 따로 검색이 되거나 링크가 공개되어있지는 않은데 비슷한 예제를 만들어서 올릴 예정입니다.&lt;/p&gt;</description>
      <category>프론트엔드/Project</category>
      <category>contentscript</category>
      <category>fe</category>
      <category>Frontend</category>
      <category>크롬</category>
      <category>확장프로그램</category>
      <author>.log('FE')</author>
      <guid isPermaLink="true">https://code-reading.tistory.com/135</guid>
      <comments>https://code-reading.tistory.com/135#entry135comment</comments>
      <pubDate>Tue, 4 Jan 2022 13:21:05 +0900</pubDate>
    </item>
  </channel>
</rss>