<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>코딩의숲</title>
    <link>https://kimforest.tistory.com/</link>
    <description>.</description>
    <language>ko</language>
    <pubDate>Thu, 16 Jul 2026 10:58:19 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>김포레스트</managingEditor>
    <image>
      <title>코딩의숲</title>
      <url>https://tistory1.daumcdn.net/tistory/5045801/attach/c818d22f5de74d8d89d8da507c16ef6e</url>
      <link>https://kimforest.tistory.com</link>
    </image>
    <item>
      <title>[AI] continue cli 버전 설치하기</title>
      <link>https://kimforest.tistory.com/61</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;npm 인스톨 명령어는&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1780626581192&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm i -g @continuedev/cli&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cn 명령어를 사용해서 실행하면&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 AI를 사용할지 설정하라고 함&lt;/p&gt;
&lt;pre id=&quot;code_1780626625678&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ cn 

How do you want to get started? 
1. ⏩ Log in with Continue 2. 
  Enter your Anthropic API key&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. Log in with Continue -&amp;gt; continue 서버에 로그인&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Continue&amp;nbsp;계정 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;darr; &lt;br /&gt;Continue&amp;nbsp;Hub &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;darr; &lt;br /&gt;Claude&amp;nbsp;/&amp;nbsp;GPT&amp;nbsp;/&amp;nbsp;Gemini&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;2. 직접 Claude API를 연결&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Continue&amp;nbsp;CLI &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;darr; &lt;br /&gt;Anthropic&amp;nbsp;API &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;darr; &lt;br /&gt;Claude&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;==&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금은 내부망 서버에 연결을 해서 쓸 것이고&lt;br /&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;b&gt;3. config 로 진입&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;vscode extension으로 continue를 설치했을 때,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;config.yaml 파일이 윈도우에 생성되었을 것이다.&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;pre id=&quot;code_1780626875163&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;cn --config /c/Users/UserK/.continue/config.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;579&quot; data-origin-height=&quot;263&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pvHy8/dJMcahLqTfw/HX6pjkQ2grcruRzpGKNhG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pvHy8/dJMcahLqTfw/HX6pjkQ2grcruRzpGKNhG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pvHy8/dJMcahLqTfw/HX6pjkQ2grcruRzpGKNhG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpvHy8%2FdJMcahLqTfw%2FHX6pjkQ2grcruRzpGKNhG0%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;579&quot; height=&quot;263&quot; data-origin-width=&quot;579&quot; data-origin-height=&quot;263&quot;/&gt;&lt;/span&gt;&lt;/figure&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt; Error: 400 &quot;auto&quot; tool choice requires --enable-auto-tool-choice and --tool-call-parser to be set&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&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;span style=&quot;color: #000000;&quot;&gt;- 설치도 정상이고, 모델을 불러오는 것도 정상인데&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 호출 파라미터관련된 옵션이 설정이 안된 상태라고 함.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;서버 실행 옵션에 다음과같은 옵션을 추가해야 한다고 지피티한테 답변받음&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1780627153899&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vllm serve Qwen/Qwen2.5-Coder-14B-Instruct \
  --enable-auto-tool-choice \
  --tool-call-parser hermes&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이제 서버담당자한테 얘기하러가야지!!!&lt;/span&gt;&lt;/p&gt;</description>
      <category>tool (git, vscode, IntelliJ)</category>
      <category>continue</category>
      <category>continuecli</category>
      <category>localQwen</category>
      <category>qwen</category>
      <category>내부망AI</category>
      <category>로컬ai</category>
      <category>폐쇄망ai</category>
      <author>김포레스트</author>
      <guid isPermaLink="true">https://kimforest.tistory.com/61</guid>
      <comments>https://kimforest.tistory.com/61#entry61comment</comments>
      <pubDate>Fri, 5 Jun 2026 11:39:50 +0900</pubDate>
    </item>
    <item>
      <title>월드 IT 쇼 후기 - AI에 대한 기대와 현실에서의 거리감</title>
      <link>https://kimforest.tistory.com/60</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20260424_155145.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1ft4W/dJMcabRwHqo/MZx31cpyo8U2YIWufBoT7K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1ft4W/dJMcabRwHqo/MZx31cpyo8U2YIWufBoT7K/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1ft4W/dJMcabRwHqo/MZx31cpyo8U2YIWufBoT7K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1ft4W%2FdJMcabRwHqo%2FMZx31cpyo8U2YIWufBoT7K%2Fimg.jpg&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;411&quot; height=&quot;548&quot; data-filename=&quot;20260424_155145.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;얼마전에 2026 월드 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;나는 금융권 SI 에서 개발 하고 있고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2025년 1분기 부터 2026년 1분기 까지를 은행의 폐쇄망 환경에 수감(?) 되어있었다보니&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI가 실제로 어떻게 활용되고 있는지 감각이 점점 흐려지고 있었다.&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;물론 나도 한달에 얼마씩 gpt에게 친구비를 지불하고 있고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;외부망 pc로 귀한 코드를 받아다가 내부망 pc에 받아쳐서라도 ai를 사용했었지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미디어나 각종 sns 에서 사람들이 말하는 ai는 그 수준이 아닌 것만 같았다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI가 실제로 어디까지 와 있는지를 직접&amp;nbsp; 보고싶다는 생각으로 돌아다녔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;AI를 어떻게 활용해야 AI 제품이 되는걸까&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 부스에서는 제품의 디자인 뼈대를 AI에 주면 겉면 디자인을 완성해주는 솔루션을 소개하고 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그냥 일반적인 ai가 입혀주는 디자인과 어떤 차이가 있는지 궁금해서 여쭤 보았는데,&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;br /&gt;단순 디자입만 입힌다고 하니 조금 아쉬웠다.&amp;nbsp;&lt;br /&gt;&lt;br /&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;다른 부스에서는 ERP 에 AI를 얹은 솔루션을 소개하고 있었다.&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;br /&gt;그 과정이 AI로 대체되기만 한 느낌이었다.&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;이 솔루션을 도입하려면 고객사의 업무를 분석하고, ai에 규격화 된 데이터를 줄 수 있도록 데이터를 받아와야 한다고 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'맞춤형'이라고 표현 했는데, 어쩌면 사람이 해주는 부분이 '맞춤형'이고 ai가 해주는 부분은 일반적인 업무가 아닐까 라는 생각이 들었다.&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;아무래도, 외부 api를 가져다 쓰기 쉽지 않을 것이고.. 데이터를 외부로 내보낼 수도 없을 것이기 때문이다.&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;환경때문에 사용이 어렵다는 것은 아깝다는 생각이 들었다. ai는 강력한 기술이지만, 인터넷이 있어야 용이하게 동작하는 기술일 뿐이었다.&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;보안문제 때문에 인터넷을 막아버리면 보안 프로그램 버전 문제가.... 보안문제가 보안문제의 원흉이 되기도 하는 이상한 현상이 발생하는 것이다.&lt;br /&gt;&lt;br /&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;그리고 ai 제품의 활용 목적이 '시간'과 '비용(특히 인건비)' 절약에 있었기 때문에&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;개발자가 ai에 대체될 위협을 느끼면서도&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인건비를 줄이기 위한 ai 제품을 만들어야 하는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;컨퍼런스를 듣고...&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20260417_095649311.png&quot; data-origin-width=&quot;909&quot; data-origin-height=&quot;562&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ca4M6N/dJMcabRwH1t/P93a1EyKICHd6kzikTBr80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ca4M6N/dJMcabRwH1t/P93a1EyKICHd6kzikTBr80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ca4M6N/dJMcabRwH1t/P93a1EyKICHd6kzikTBr80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fca4M6N%2FdJMcabRwH1t%2FP93a1EyKICHd6kzikTBr80%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;690&quot; height=&quot;427&quot; data-filename=&quot;KakaoTalk_20260417_095649311.png&quot; data-origin-width=&quot;909&quot; data-origin-height=&quot;562&quot;/&gt;&lt;/span&gt;&lt;/figure&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;세션 3에서는 .AI를 단순기능이 아니라, 데이터와 인프라까지 포함한 풀스택 관점에서 접근해야 한다고 했다.&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;AI 모델이 고품질의 성능을 내려면, 데이터 센터가 많아져야 한다는 이야기도 했다.&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;다분히 현실적인 이야기였다.&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;현실은 아직 잘나가는 외국 AI 모델을 가져다가 제품에 가져다 붙이는,&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;세션1을 들으면서는 '개인정보'의 범위를 어디까지 봐야 할까에 대한 고민이 들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아직은 cctv가 수집하는 영상정보, 딥페이크, 주소 같은 정보들에 대해 논의 하는 것 같았는데&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;내가 궁금한 것은 ai가 수집하는 크고작은 단위의 개인 정보들이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 이미 gpt에게는 가족, 친구에게 보다도 더 많은 이야기를 털어놓았고&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;코파일럴CLI로 리서치를 했을 때에는&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;우리는 이미 AI에 의미있는 정보를 잔뜩 넘기고 있는데.&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;특히, AI 기반 제품들이 늘어날 수록, 단순 입력값이 아니라 사용자의 행동이타 패턴 까지도 수집될 수 있을텐데&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에서 말했던 '관' 의 역할과 역량이 궁금해지는 시점이었다.(물론 다른의미로 말씀 하셨을거다.... 규제나 뭐 이런걸 풀어달라는 뜻이었을지도..)&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;또 세션2는 그냥 개인적으로 신기했는데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유희준교수님은 카이스트 신입생을 1000명 뽑을건데 전부다 로봇으로 뽑아서 학생들하고 생활하게 해보고 싶다고 했다.&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;우리가 AI 를 효율, 비용절감의 측면에서 대하고 있는데 휴머노이드가 별안간에 인문학적 관점으로 세상을 바라볼리는 없을 것이고.....&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;대기업 부스 구경&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20260424_113609.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPElN8/dJMcaiC6Wcv/h2kWNobfKQ72dEKeEmckP0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPElN8/dJMcaiC6Wcv/h2kWNobfKQ72dEKeEmckP0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPElN8/dJMcaiC6Wcv/h2kWNobfKQ72dEKeEmckP0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPElN8%2FdJMcaiC6Wcv%2Fh2kWNobfKQ72dEKeEmckP0%2Fimg.jpg&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;485&quot; height=&quot;647&quot; data-filename=&quot;20260424_113609.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20260424_114050.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UYleb/dJMcaib5hMp/kTMIMkfht25VNz5UevBKsK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UYleb/dJMcaib5hMp/kTMIMkfht25VNz5UevBKsK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UYleb/dJMcaib5hMp/kTMIMkfht25VNz5UevBKsK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUYleb%2FdJMcaib5hMp%2FkTMIMkfht25VNz5UevBKsK%2Fimg.jpg&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;468&quot; height=&quot;624&quot; data-filename=&quot;20260424_114050.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭐 아무래도 world &amp;lt;&amp;lt; it show 니까&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;세션2에서 들었던 physical AI의 실체를 볼 수 있었고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;농업을 위해 필요한 AI 농기구나 스마트 팜 등을 구경 할 수 있었다.&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;전체적으로, 대기업과 스타트업의 AI 활용 방향이 꽤 다르게 느껴졌는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대기업은 아무래도 AI를 인프라 단위에서 활용하고 있기에&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;기능 단위에서 AI를 붙이는 경우가 많았던 것 같다.&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;특히 AI를 제품에 붙이는 목적이&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정말로 AI가 필요해서. 없으면 안되어서. 창의적이어서 라기 보다는&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;붙일 수 있어서, 붙여야 하니까? AI를 활용해야만 하니까 붙이는 단계에 가까워 보여 조금 아쉽기도 했다.&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&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;우리는 민관협동에 성공해서 AI 선도국가로 거듭날 수 있을것인가.&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;</description>
      <category>독서,강의,시험 등</category>
      <category>Ai</category>
      <category>AI박람회</category>
      <category>wit</category>
      <category>WorldITShow</category>
      <category>개발자</category>
      <category>월드아이티쇼</category>
      <author>김포레스트</author>
      <guid isPermaLink="true">https://kimforest.tistory.com/60</guid>
      <comments>https://kimforest.tistory.com/60#entry60comment</comments>
      <pubDate>Tue, 28 Apr 2026 00:09:49 +0900</pubDate>
    </item>
    <item>
      <title>[2024 / 회고] 개발자로서의 2024년을 회고하기</title>
      <link>https://kimforest.tistory.com/59</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2024년은 개발자로서의 신입딱지를 떼고,&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;&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;1.&amp;nbsp;상반기(1~6월)&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;상황&amp;nbsp;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;js 와 vue.js의 문법 등을 겨우 익혀놓은 상태 였다. 설계를 보고 자유롭게 코드를 짤 수 있는 실력까지는 안되었다. 그런데도, 운이 좋았던건지 외환 주문 컴포넌트를 작업을 업무로 맡게 되었다. (나름 핵심기능임!)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;문제 &lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설계가 이해 가지 않았다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;js 문법은 익혔으나 class문법, 디자인패턴과 같은 심화 공부가 덜 된 상태였다.&lt;/li&gt;
&lt;li&gt;컴포넌트 자체가 워낙 복잡해 어떻게 분기처리를 해야 할지에 대해 막막 했다.&lt;/li&gt;
&lt;li&gt;설계가 추가되고, 수정되고, 보완되는 작업이 끊임없이 이루어졌기 때문에 옳게 작업을 했어도 재작업하고, 수정해야 하는 일들이 많았다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;원인&lt;/b&gt;&lt;/h4&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;첫번째는 디자인팀 조차 주문 컴포넌트의 성격을 제대로 파악하지 못해 많은 부분이 생략 되었다는 것이다. 기존의 AsIs 버전을 그대로 따다가 붙였고, 나머지 기본적인 업무 흐름을 각 개발자가 직접 현업과 이야기해서 파악해야 했기 때문에 작업이 더뎠다.&lt;/li&gt;
&lt;li&gt;두번째는 금융권 업무가 처음이다보니 주문 시스템 자체에 대한 &lt;span style=&quot;background-color: #f3c000;&quot;&gt;업무 이해도가 너무 낮았다&lt;/span&gt;는 것이다. 그러다 보니 코드의 재사용성이나, 확장성 등을 고려하기보다는 눈앞에있는 마감기한을 맞추기 급급했다. 어떤 기능들은 혼자 해결 할 수 없어서 상사분들의 도움을 받아야 할 때도 있었다. 설계의 추가에 대한 부분은 내 문제는 아니었지만 아직 직장생활에 대한 융통성이 없어 그때그때 제대로 대응하지 못했고, 계속해서 일이 늘어나는 결과만 초래 하게 되었다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;개발환경에 대한 이해도 부족했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특성상, 서버를 두개로 나누어 써야 했는데 서버의 성격에 따라서 특정 데이터를 받아올 수 있고 없고의 여부가 달랐다. 어떤 페이지는 A서버를 통해 정보를 받아와서 적용하고, 어떤 페이지는 B서버를 통해 정보를 받아와야 했는데 서버가 달라지면 사용하는 IDE 선택부터 vue.js를 쓰는지, jsp위에서 작업을 하는지... 빌드를 어떻게 해서 반영하는지까지 달랐다. 이런 일련의 과정들에 대해서 큰 그림을 그리지 못했고, 적응도도 떨어질 수밖에 없었다.&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;작업의 속도가 느려지고, 질이 떨어진다고 느끼는 것에는 아무래도 js 문법을 깔끔하게 복잡한 기능에 맞게 적용하는 것이 어렵다는 것에 원인이 있었다. 결국, &lt;span style=&quot;background-color: #f3c000;&quot;&gt;공부가 더 되고 덜되고의 문제&lt;/span&gt;였던 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;해결 방법&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주변에 많은 지인들에게 해법을 물어봤던 것같다. 코드를 짜는 능력이 부족한 것인지, 대인관계 스킬이 부족한 것인지, 업무에 대한 이해도가 낮은 것이 문제인지....&lt;span style=&quot;background-color: #f3c000;&quot;&gt;&lt;b&gt;결론적으로는 세가지 모두 문제였기 때문에 이 부분을 보완 했어야 했다.&lt;/b&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 2~3월 무렵부터는 내가 하고 있는 업무와 전반적인 프로세스 자체가 정리되지 않아서 일부러 &lt;span style=&quot;background-color: #f3c000;&quot;&gt;작업일지를 쓰기 시작&lt;/span&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;span style=&quot;background-color: #f3c000;&quot;&gt;공유를 했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함께 일하는 사람들이 급작스럽게 늘어나니 처음에는 숨기에 바빴던 것 같다. 하지만 저년차의 장점이 무엇인가..!!!!&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잘 몰라도, 못해도 이해받을 수 있다는 것이었다. 많이 혼나기도 했고, 스스로 주눅도 들었지만 지금이 아니면 잘못된 것을 고칠 수가 없을 것만 같았다. 영원히.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 많은 것을 공유했다.&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;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;2. 하반기(7~12월)&amp;nbsp;&lt;/h3&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;상황&amp;nbsp;&lt;/b&gt;&lt;/h4&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;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;문제&lt;/b&gt;&lt;/h4&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;/ul&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;원인&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;내 페이지는 결재라인 서비스의 중간단계에 있는 페이지였기 때문에, 겉으로 보이는 것처럼 단순한 데이터 출력 페이지가 아니었다. 앞뒤 단계로 데이터를 올바르게 주고 받을 수 있어야 했는데 &lt;span style=&quot;background-color: #f3c000;&quot;&gt;작업자들간에 이러한 소통이 부족&lt;/span&gt;했다.&lt;/li&gt;
&lt;li&gt;신기하게도, 상반기에 작업했던 주문 컴포넌트와도 연결된 서비스였는데.. 그럼에도 &lt;span style=&quot;background-color: #f3c000;&quot;&gt;서비스의 전체 흐름&lt;/span&gt; 자체를 생각하지 않고 단순 데이터 출력에만 치중하다보니, 작업을 마쳤다고 생각하고 나서도 부가작업을 해야하는 경우들이 생겼다.&lt;/li&gt;
&lt;li&gt;어떤 분께 무엇을 어떤방식으로 &lt;span style=&quot;background-color: #f3c000;&quot;&gt;요청&lt;/span&gt; 드려야 하는지에 대한 공부가 덜 되었던 것 같다.&lt;/li&gt;
&lt;li&gt;나의 연차와 직급을 잘 활용 하지 못했다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;해결 방법&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;또 무작정 &lt;span style=&quot;background-color: #f3c000;&quot;&gt;공유&lt;/span&gt;를 했던 것 같다. 상황이 안좋을 때에는 공유를 해야 한다. 이런 상황이고, 이런 부분이 작업이 안되고 있고, 이런 해결 방법이 필요하다. 도와달라는 요청을 기꺼이 해야한다고 생각했다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;서비스 전체의 흐름&lt;/span&gt;에 대해 공부했다.(대표님의 도움을 받았다)&lt;/li&gt;
&lt;li&gt;상사분들 께 &lt;span style=&quot;background-color: #f3c000;&quot;&gt;진행상황을 틈틈히 알린다&lt;/span&gt;. 그래야 해결의 실마리를 찾을 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 느낀점 및 얻은 것&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공부는 개인적으로 하는 것이지만, 업무는 다같이 하는 것이다. 따라서 상황에 대한 &lt;span style=&quot;background-color: #f3c000;&quot;&gt;공유와 보고를 시시때때로&lt;/span&gt; 해야한다고 느꼈다. 그래야 리스크에 대한 대비를 각자 하 수 있다. 순간 창피한게 일이 안되는 것보다 훨씬 낫기 때문이다.&lt;/li&gt;
&lt;li&gt;도움을 요청드려도 된다. 직급과 연차가 낮다는 것은 그만큼 권한이 적고, 독립적이지 못하다는 것을 뜻한다. 충분한 &lt;span style=&quot;background-color: #f3c000;&quot;&gt;권한을 가진 분들께 도움을 요청드리자.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;인간에 대한 포기를 하자. 상대에게 화가 나는 이유는 내가 아직도 그에게 작게나마 기대를 하고 있기 때문이다.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;원하는 것&lt;/span&gt;이 무엇인지 알아야 요청도 확실하게 드릴 수 있다.&lt;/li&gt;
&lt;li&gt;책임은 모두가 지는 것이다. &lt;span style=&quot;background-color: #f3c000;&quot;&gt;회피하지 말자.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;거절을 하자&lt;/span&gt;. 모두에게 잘 보일 수는 없다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 2025년 목표&lt;/h3&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;java, spring boot의 숙련도를 높여서 이제 진짜 풀스택을 향해 나아가는 중니어가 되어야겠다.&lt;/li&gt;
&lt;li&gt;리더십을 길러서 관리자를 향해 나아갈 준비를 하자.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>회고, 개발문화 등</category>
      <category>2024년</category>
      <category>2025년</category>
      <category>js</category>
      <category>개발자</category>
      <category>마무리</category>
      <category>프론트엔드</category>
      <category>회고</category>
      <author>김포레스트</author>
      <guid isPermaLink="true">https://kimforest.tistory.com/59</guid>
      <comments>https://kimforest.tistory.com/59#entry59comment</comments>
      <pubDate>Wed, 1 Jan 2025 13:29:39 +0900</pubDate>
    </item>
    <item>
      <title>[항해99 / WIL] 1주차 회고</title>
      <link>https://kimforest.tistory.com/58</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. 문제&lt;b&gt; (과제, 프로젝트를 진행하면서 부딪혔던 기술적인 문제)&lt;/b&gt; 이번 주차를 지나며 겪었던 문제가 무엇이었나요?&lt;/h4&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;h4 data-ke-size=&quot;size20&quot;&gt;2. 시도 &lt;b&gt;문제를 해결하기 위해 어떤 시도를 하셨나요?&lt;/b&gt;&lt;/h4&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;h4 data-ke-size=&quot;size20&quot;&gt;3. &lt;b&gt;해결&lt;/b&gt; 문제를 어떻게 해결하셨나요?&lt;/h4&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;h4 data-ke-size=&quot;size20&quot;&gt;4. &lt;b&gt;알게된 것&lt;/b&gt; 문제를 해결하기 위해 시도하며 새롭게 알게된 것은 무엇인가요?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- fetch로 html을 랜더링하는 방식은 서버사이드 랜더링에 가깝다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Keep&lt;/b&gt; : &lt;b&gt;현재 만족하고 계속 유지할 부분&lt;/b&gt; 이번 주를 마무리 하며 나에게 만족했던 부분은 무엇인가요?&lt;/h4&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;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Problem&lt;/b&gt; : &lt;b&gt;개선이 필요하다고 생각하는 문제점&lt;/b&gt; 이번 주를 마무리 하며 개선이 필요하다고 생각했던 문제점은 무엇인가요?&lt;/h4&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;P1. Try :&lt;/b&gt; &lt;b&gt;문제점을 해결하기 위해 시도해야 할 것&lt;/b&gt; 이 문제점을 해결하기 위해 다음 한 주간 시도 할 것은 무엇인가요?&lt;/h4&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;</description>
      <category>회고, 개발문화 등</category>
      <category>항해99</category>
      <category>항해플러스</category>
      <author>김포레스트</author>
      <guid isPermaLink="true">https://kimforest.tistory.com/58</guid>
      <comments>https://kimforest.tistory.com/58#entry58comment</comments>
      <pubDate>Sat, 28 Sep 2024 15:55:42 +0900</pubDate>
    </item>
    <item>
      <title>[js / 알고리즘연습] 이어 붙인 수</title>
      <link>https://kimforest.tistory.com/57</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;span style=&quot;color: #222222; text-align: start;&quot;&gt;문제설명&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정수가&amp;nbsp;담긴&amp;nbsp;리스트&amp;nbsp;num_list가&amp;nbsp;주어집니다.&amp;nbsp;num_list의&amp;nbsp;홀수만&amp;nbsp;순서대로&amp;nbsp;이어&amp;nbsp;붙인&amp;nbsp;수와&amp;nbsp;짝수만&amp;nbsp;순서대로&amp;nbsp;이어&amp;nbsp;붙인&amp;nbsp;수의&amp;nbsp;합을&amp;nbsp;return하도록&amp;nbsp;solution&amp;nbsp;함수를&amp;nbsp;완성해주세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;나의 풀이&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1720747297944&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(num_list) {
    let string1 = '';
    let string2 = '';

    num_list.forEach((el, idx) =&amp;gt; {
        if(el % 2 == 0) {
            string1 += String(el);
        } else {
            string2 += String(el);
        }
    });


    return Number(string1) + Number(string2);
}&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;span style=&quot;color: #222222; text-align: start;&quot;&gt;best 풀이&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1720747321536&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(num_list) {
    const { odds, evens } = num_list.reduce(({ odds, evens }, num) =&amp;gt; {
        if (num % 2 === 0) {
            evens.push(num)
        } else {
            odds.push(num)
        }
        return { odds, evens }
    }, { odds: [], evens: [] })
    return Number(odds.join('')) + Number(evens.join(''))
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>frontend/javaScript</category>
      <author>김포레스트</author>
      <guid isPermaLink="true">https://kimforest.tistory.com/57</guid>
      <comments>https://kimforest.tistory.com/57#entry57comment</comments>
      <pubDate>Thu, 12 Sep 2024 13:08:27 +0900</pubDate>
    </item>
    <item>
      <title>[js / 알고리즘연습] 원소들의 곱과 합</title>
      <link>https://kimforest.tistory.com/56</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;span style=&quot;color: #222222; text-align: start;&quot;&gt;문제설명&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정수가&amp;nbsp;담긴&amp;nbsp;리스트&amp;nbsp;num_list가&amp;nbsp;주어질&amp;nbsp;때,&amp;nbsp;모든&amp;nbsp;원소들의&amp;nbsp;곱이&amp;nbsp;모든&amp;nbsp;원소들의&amp;nbsp;합의&amp;nbsp;제곱보다&amp;nbsp;작으면&amp;nbsp;1을&amp;nbsp;크면&amp;nbsp;0을&amp;nbsp;return하도록&amp;nbsp;solution&amp;nbsp;함수를&amp;nbsp;완성해주세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;풀이 과정&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;reduce를 쓰&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;나의 풀이&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1720747297944&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(num_list) {
    let square = num_list.reduce((acc, num) =&amp;gt; {
        return acc * num;
    });
    
    let sumAndSquare = num_list.reduce((acc, crr) =&amp;gt; {
        return acc + crr;
    });
    
    sumAndSquare = sumAndSquare**2;
    
    return square &amp;lt; sumAndSquare ? 1 : 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;best 풀이&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1720747321536&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(num_list) {
    let accMul = 1
    let accSum = 0
    for (const num of num_list) {
        accMul *= num
        accSum += num
    }
    return accMul &amp;lt; accSum ** 2 ? 1 : 0
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;reduce 대신 for문과 지수연산자를 썼다&lt;/p&gt;</description>
      <category>frontend/javaScript</category>
      <category>js</category>
      <category>reduce</category>
      <category>지수연산자</category>
      <category>코딩테스트</category>
      <category>프로그래머스</category>
      <author>김포레스트</author>
      <guid isPermaLink="true">https://kimforest.tistory.com/56</guid>
      <comments>https://kimforest.tistory.com/56#entry56comment</comments>
      <pubDate>Thu, 12 Sep 2024 11:03:53 +0900</pubDate>
    </item>
    <item>
      <title>[js / 알고리즘연습] 주사위게임2</title>
      <link>https://kimforest.tistory.com/55</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;span style=&quot;color: #222222; text-align: start;&quot;&gt;문제설명&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1부터&amp;nbsp;6까지&amp;nbsp;숫자가&amp;nbsp;적힌&amp;nbsp;주사위가&amp;nbsp;세&amp;nbsp;개&amp;nbsp;있습니다.&amp;nbsp;세&amp;nbsp;주사위를&amp;nbsp;굴렸을&amp;nbsp;때&amp;nbsp;나온&amp;nbsp;숫자를&amp;nbsp;각각&amp;nbsp;a,&amp;nbsp;b,&amp;nbsp;c라고&amp;nbsp;했을&amp;nbsp;때&amp;nbsp;얻는&amp;nbsp;점수는&amp;nbsp;다음과&amp;nbsp;같습니다. &lt;br /&gt;&lt;br /&gt;세&amp;nbsp;숫자가&amp;nbsp;모두&amp;nbsp;다르다면&amp;nbsp;a&amp;nbsp;+&amp;nbsp;b&amp;nbsp;+&amp;nbsp;c&amp;nbsp;점을&amp;nbsp;얻습니다. &lt;br /&gt;세&amp;nbsp;숫자&amp;nbsp;중&amp;nbsp;어느&amp;nbsp;두&amp;nbsp;숫자는&amp;nbsp;같고&amp;nbsp;나머지&amp;nbsp;다른&amp;nbsp;숫자는&amp;nbsp;다르다면&amp;nbsp;(a&amp;nbsp;+&amp;nbsp;b&amp;nbsp;+&amp;nbsp;c)&amp;nbsp;&amp;times;&amp;nbsp;(a2&amp;nbsp;+&amp;nbsp;b2&amp;nbsp;+&amp;nbsp;c2&amp;nbsp;)점을&amp;nbsp;얻습니다. &lt;br /&gt;세&amp;nbsp;숫자가&amp;nbsp;모두&amp;nbsp;같다면&amp;nbsp;(a&amp;nbsp;+&amp;nbsp;b&amp;nbsp;+&amp;nbsp;c)&amp;nbsp;&amp;times;&amp;nbsp;(a2&amp;nbsp;+&amp;nbsp;b2&amp;nbsp;+&amp;nbsp;c2&amp;nbsp;)&amp;nbsp;&amp;times;&amp;nbsp;(a3&amp;nbsp;+&amp;nbsp;b3&amp;nbsp;+&amp;nbsp;c3&amp;nbsp;)점을&amp;nbsp;얻습니다. &lt;br /&gt;세&amp;nbsp;정수&amp;nbsp;a,&amp;nbsp;b,&amp;nbsp;c가&amp;nbsp;매개변수로&amp;nbsp;주어질&amp;nbsp;때,&amp;nbsp;얻는&amp;nbsp;점수를&amp;nbsp;return&amp;nbsp;하는&amp;nbsp;solution&amp;nbsp;함수를&amp;nbsp;작성해&amp;nbsp;주세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;풀이 과정&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭔가 깔쌈하게 풀고싶었는데 잘 안됐다.....&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;span style=&quot;color: #222222; text-align: start;&quot;&gt;나의 풀이&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1720747297944&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(a, b, c) {
    const sum = a + b + c;
    const squarSum = a ** 2 + b ** 2 + c ** 2;
    const cubeSum = a ** 3 + b ** 3 + c ** 3;
    
    const allSame = (a==b) &amp;amp;&amp;amp; (b==c);
    const oneSame = (a==b) || (b==c) || (a==c);

    if(allSame) {
        return sum * squarSum * cubeSum;
    } else if(oneSame)  {
        return sum * squarSum;
    } else { 
        return sum;
    }
}&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;span style=&quot;color: #222222; text-align: start;&quot;&gt;best 풀이&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1720747321536&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const solution = (a, b, c) =&amp;gt; {
    const set = new Set([a, b, c]);
    switch ([...set].length) {
        case 1: return calculate([a, b, c], 3);
        case 2: return calculate([a, b, c], 2);
        case 3: return calculate([a, b, c]);
    }
};

const calculate = (inc, n=1) =&amp;gt; {
    const [a, b, c] = inc;
    let result = 1;
    for (let i = 1; i &amp;lt;= n; i++) {
        result *= Math.pow(a, i) + Math.pow(b, i) + Math.pow(c, i)
    }

    return result;
};&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;solution과 calculate로 나눈 것,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;calculate 함수를 사용한 것이 특이점.&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>frontend/javaScript</category>
      <category>calculate</category>
      <category>주사위게임2</category>
      <category>코딩테스트</category>
      <category>프로그래머스</category>
      <author>김포레스트</author>
      <guid isPermaLink="true">https://kimforest.tistory.com/55</guid>
      <comments>https://kimforest.tistory.com/55#entry55comment</comments>
      <pubDate>Thu, 12 Sep 2024 10:32:41 +0900</pubDate>
    </item>
    <item>
      <title>[js / 알고리즘연습] 등차수열의 특정한 항만 더하기,</title>
      <link>https://kimforest.tistory.com/54</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;span style=&quot;color: #222222; text-align: start;&quot;&gt;문제설명&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;text-align: left;&quot;&gt;두 정수&amp;nbsp;&lt;/span&gt;a&lt;span style=&quot;text-align: left;&quot;&gt;,&amp;nbsp;&lt;/span&gt;d&lt;span style=&quot;text-align: left;&quot;&gt;와 길이가 n인 boolean 배열&amp;nbsp;&lt;/span&gt;included&lt;span style=&quot;text-align: left;&quot;&gt;가 주어집니다. 첫째항이&amp;nbsp;&lt;/span&gt;a&lt;span style=&quot;text-align: left;&quot;&gt;, 공차가&amp;nbsp;&lt;/span&gt;d&lt;span style=&quot;text-align: left;&quot;&gt;인 등차수열에서&amp;nbsp;&lt;/span&gt;included[i]&lt;span style=&quot;text-align: left;&quot;&gt;가 i + 1항을 의미할 때, 이 등차수열의 1항부터 n항까지&amp;nbsp;&lt;/span&gt;included&lt;span style=&quot;text-align: left;&quot;&gt;가 true인 항들만 더한 값을 return 하는 solution 함수를 작성해 주세요.&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;풀이 과정&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;included 가 배열의 형태로 들어오니까 이 배열을 기준으로 forEach를 돌리면 되겠다....&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;span style=&quot;color: #222222; text-align: start;&quot;&gt;나의 풀이&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1720747297944&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(a, d, included) {
    var answer = 0;

    included.forEach((el, idx) =&amp;gt; {
       if(el == true) answer += a + d*idx;
    });
    
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;best 풀이&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1720747321536&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(a, d, included) {
    return included.reduce((acc, flag, i) =&amp;gt; {
        return flag ? acc + a + d * i : acc
    }, 0)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아... 역시 reduce를 사용할 수 있는 방법이 있었군....&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;** reduce함수 살펴보기&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1726099645670&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;array.reduce((accumulator, currentValue, currentIndex, array) =&amp;gt; {
    // 콜백 함수 내용
}, initialValue);&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;reduce는 총 네개의 파라미터를 사용할 수 있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;accumulator (누산기)&lt;/b&gt;: 이전 함수 호출의 반환값을 누적하는 변수입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;currentValue (현재 값)&lt;/b&gt;: 현재 처리 중인 배열 요소입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;currentIndex (현재 인덱스)&lt;/b&gt;: 현재 요소의 인덱스입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;array (배열 자체)&lt;/b&gt;: reduce를 호출한 배열입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;initialValue (초기값)&lt;/b&gt;: (선택적) 누산기의 초기값으로, 설정하지 않으면 배열의 첫 번째 요소가 사용됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>frontend/javaScript</category>
      <category>recduce</category>
      <category>프로그래머스</category>
      <author>김포레스트</author>
      <guid isPermaLink="true">https://kimforest.tistory.com/54</guid>
      <comments>https://kimforest.tistory.com/54#entry54comment</comments>
      <pubDate>Thu, 12 Sep 2024 09:08:56 +0900</pubDate>
    </item>
    <item>
      <title>[js 기본기] arguments, Promise.all(), Promise.race()</title>
      <link>https://kimforest.tistory.com/53</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. arguments&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;arguments 는 유사배열 객체이다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;함수 정의 할 때에 파라미터를 정의 하지 않아도&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; 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;isArray로 감별해보면 false가 나온다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 map, filter 같은 고차배열 함수를 적용하려면&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;array로 한번 바꾼 뒤에 적용해야 한다.&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;h3 data-ke-size=&quot;size23&quot;&gt;2. Promise.all()&lt;/h3&gt;
&lt;pre id=&quot;code_1724286984653&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Promise.all([promise1, promise2, promise3])
    .then((results) =&amp;gt; {
        console.log(results); // 모든 Promise가 성공했을 때 결과가 배열로 반환됨
    })
    .catch((error) =&amp;gt; {
        console.error(error); // 하나의 Promise라도 실패하면 이곳에서 에러 처리
    });&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;여러개의 promise를 병렬로 처리하고,&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;h3 data-ke-size=&quot;size23&quot;&gt;3. Promise.race()&lt;/h3&gt;
&lt;pre id=&quot;code_1724287066691&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Promise.race([promise1, promise2, promise3])
    .then((result) =&amp;gt; {
        console.log(result); // 가장 빨리 완료된 Promise의 결과
    })
    .catch((error) =&amp;gt; {
        console.error(error); // 가장 빨리 실패한 Promise의 에러
    });&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;가장 빨리 처리된 Promise 를 반환.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫번째 처리된 Promise가 성공인지 실패인지 결과를 반환함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 Promise가 실패이면 Promise 전체가 실패인 것으로 간주.&lt;br /&gt;&lt;br /&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;setTimeout과 곁들여 쓰면 요청 자체가 너무 오래걸리는 경우를 방지할 수 있음.&lt;/p&gt;
&lt;pre id=&quot;code_1724287337004&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let timeout = new Promise((resolve, reject) =&amp;gt; {
    setTimeout(reject, 5000, 'Request timed out');
});

let request = fetch('https://api.example.com/data');

Promise.race([timeout, request])
    .then(response =&amp;gt; console.log(response))
    .catch(error =&amp;gt; console.log(error));&lt;/code&gt;&lt;/pre&gt;</description>
      <category>frontend/javaScript</category>
      <category>arguments</category>
      <category>Promise.all()</category>
      <category>promise.race()</category>
      <author>김포레스트</author>
      <guid isPermaLink="true">https://kimforest.tistory.com/53</guid>
      <comments>https://kimforest.tistory.com/53#entry53comment</comments>
      <pubDate>Thu, 22 Aug 2024 09:39:46 +0900</pubDate>
    </item>
    <item>
      <title>[js 기본기] Nullish coalescing operator, prototype 메소드</title>
      <link>https://kimforest.tistory.com/52</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. Nullish&amp;nbsp;coalescing&amp;nbsp;operator&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;|| 연산자는 0을 false로 인식한다.&lt;br /&gt;그래서 0을 불린값이 아닌 숫자로 인식하고 싶을 때,&amp;nbsp;&lt;br /&gt;null 체크를 null과 undefined로만 거르고 싶을 때&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;|| 대신 ?? 를 사용하면 됨.&lt;br /&gt;&lt;br /&gt;0 || '10'&amp;nbsp; &amp;nbsp;은 무조건 10 이지만&amp;nbsp;&lt;br /&gt;0 ?? '10' 은 0 이 된다.&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. 배열은 객체다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;const arr = [1, 2, 3];&amp;nbsp;&lt;br /&gt;으로 정의 한 뒤에&amp;nbsp;&lt;br /&gt;arr[' name'] = 4;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;하면 그대로 생성이 된다.&lt;br /&gt;원래 배열은&amp;nbsp; key 값이 없으니까 생성되면 안될 것 같은데..&lt;br /&gt;뭐 그렇다고 한다.&lt;br /&gt;&lt;br /&gt;그래서 이렇게 객체처럼 할당된 배열인지 아닌지 여부를 판별해야 할 때가 있는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그때 instanceof(&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;arr)&lt;/span&gt;메소드를 쓴다고 한다.&lt;br /&gt;이것은 최신 문법이므로 만약 js 버전이 낮으면&amp;nbsp;&lt;br /&gt;Array.isArray( &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;arr&lt;/span&gt;) 를 쓰자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. prototype 메소드&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Array.prototype.clear = function() { ... }&lt;/b&gt;: &lt;br /&gt;&amp;nbsp;형식의 코드는&amp;nbsp;&lt;br /&gt;clear라는 함수를 생성해서 모든 배열에 적용될 수 있도록 선언하는 형태임.&lt;br /&gt;&lt;br /&gt;const arr = [1, 2, 3];&lt;br /&gt;Array.prototype.clear = function() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; this.length = 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;으로 정의되어있다면&amp;nbsp;&lt;br /&gt;arr.clear(); 을 실행할 때&amp;nbsp;&lt;br /&gt;arr이 초기화 된다.&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;br /&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;arr.clear().map() 이런식의 사용이 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;공통함수 짤 때 아주 유용하겠다는 생각이 든다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;추가 사항은 arr.length 는 배열 자체의 요소 갯수를 세어준다기보다&amp;nbsp;&lt;br /&gt;마지막 요소의 index값을 반환해준다는 것.&lt;br /&gt;[1, 2, 3, , , , , , , ,10] 일 때&amp;nbsp;&lt;br /&gt;빈 요소를 제외하고 4를 반환해주는게 아니라&lt;br /&gt;10이 위치한 요소의 index값을 반환해준다.&amp;nbsp;&lt;/p&gt;</description>
      <category>frontend/javaScript</category>
      <category>length</category>
      <category>nullish</category>
      <category>prototype</category>
      <author>김포레스트</author>
      <guid isPermaLink="true">https://kimforest.tistory.com/52</guid>
      <comments>https://kimforest.tistory.com/52#entry52comment</comments>
      <pubDate>Wed, 21 Aug 2024 10:49:04 +0900</pubDate>
    </item>
  </channel>
</rss>