<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>kimjumpsun_code.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Fri, 19 Aug 2022 06:28:26 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>kimjumpsun_code.log</title>
            <url>https://images.velog.io/images/kimjumpsun_code/profile/b480710b-b07c-4f83-86ea-920af8383e1b/KakaoTalk_Photo_2021-10-28-22-56-37 001.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. kimjumpsun_code.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/kimjumpsun_code" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[React] useCallback, 함수형 업데이트 ]]></title>
            <link>https://velog.io/@kimjumpsun_code/React-useCallback-%ED%95%A8%EC%88%98%ED%98%95-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8</link>
            <guid>https://velog.io/@kimjumpsun_code/React-useCallback-%ED%95%A8%EC%88%98%ED%98%95-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8</guid>
            <pubDate>Fri, 19 Aug 2022 06:28:26 GMT</pubDate>
            <description><![CDATA[<h2 id="💡-usecallback-은">💡 useCallback() 은?</h2>
<p><em><strong>리액트 Hook 중 하나로 렌데링 최적화를 위함</strong></em> 이다. 
useEffect 나 useMemo처럼 의존성 배열을 받는다. </p>
<h3 id="사용방법">사용방법</h3>
<pre><code>import React, { useCallback } from &quot;react&quot;;

useCallback(() =&gt; 
{ callback 함수 }, [] );
</code></pre><p>두번 째 인자인 deps(의존성 배열, dependency array) 에 변화가 일어나면 
메모이제이션(memoization) 된 콜백함수가 반환된다. </p>
<p>useMemo() 와 memoization 된 것을 반환한다는 점은 동일하지만, </p>
<h4 id="🕹-usememo-는-함수의-값을-반환하고">🕹 useMemo() 는 함수의 &#39;값&#39;을 반환하고</h4>
<p>(=&gt; <em>이전의 결과값을 재사용 하는데 용이</em>)</p>
<h4 id="🕹-usecallback-은-함수를-반환한다">🕹 useCallback() 은 함수를 반환한다.</h4>
<p>(=&gt; <em>함수가 재생성되어 렌더링 되는 것을 방지하기 위해 사용</em>)</p>
<h2 id="그런데-두-가지-문제가-발생">그런데 두 가지 문제가 발생!</h2>
<p><strong>[] 값을 비워두면, 
데이터를 날려버리고 새로운 데이터만 저장하게 되거나</strong></p>
<pre><code class="language-React">const onCreate = useCallback(
(author, content) =&gt; {
const newItem = {
author, 
content,
id: dataId.current,
};
dataId.current += 1;
setData([newItem, ...data});
}, []); // 기존의 데이터가 날아가고 새로운 데이터만 저장 
</code></pre>
<p>**[data] 로 두면, 
최신 데이터 값을 참고할 수 없기 때문에 새로고침을 할 때마다 렌더가 된다. **</p>
<pre><code class="language-React">const onCreate = useCallback(
(author, content) =&gt; {
const newItem = {
author, 
content,
id: dataId.current,
};
dataId.current += 1;
setData([newItem, ...data});
}, [data]); // 새로고침을 할 때마다 리-렌더
</code></pre>
<p>데이터의 값이 최신으로 변경되고 변경되었을 때만 렌더링 되도록 구현하고 싶다면, 
이럴 때 사용하는 것이 바로 <code>함수형 업데이트</code> 이다. </p>
<h2 id="💡-함수형-업데이트의-사용">💡 함수형 업데이트의 사용</h2>
<p><strong>setState에 값 대신 함수를 전달</strong>하는 것을
함수형 업데이트라고 한다. </p>
<p>setState의 최신 정보를 인자를 통해 확인이 가능하므로 
deps를 비워두게 되더라도([  ])<br>setState를 동기적으로 사용 할 수 있다. </p>
<pre><code class="language-React">const onCreate = useCallback(
(author, content) =&gt; {
const newItem = {
author, 
content,
id: dataId.current,
};
dataId.current += 1;
setData((data) =&gt; [newItem, ...data});
}, []); // setState (여기서 setData) 를 동기적으로 사용가</code></pre>
<h4 id="-데이터의-값이-최신으로-변경-될-때만-렌더링이-일어남">=&gt; 데이터의 값이 최신으로 변경 될 때만 렌더링이 일어남</h4>
<h3 id="-📌-최적화-성공">==&gt; 📌 최적화 성공!</h3>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Book]프로그래머의 뇌_인지과학의 모든 것]]></title>
            <link>https://velog.io/@kimjumpsun_code/Book%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EB%87%8C%EC%9D%B8%EC%A7%80%EA%B3%BC%ED%95%99%EC%9D%98-%EB%AA%A8%EB%93%A0-%EA%B2%83</link>
            <guid>https://velog.io/@kimjumpsun_code/Book%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EB%87%8C%EC%9D%B8%EC%A7%80%EA%B3%BC%ED%95%99%EC%9D%98-%EB%AA%A8%EB%93%A0-%EA%B2%83</guid>
            <pubDate>Thu, 02 Jun 2022 00:31:02 GMT</pubDate>
            <description><![CDATA[<p><strong>프로그래머의 뇌</strong>는 네덜란드 레이던 대학교의 부교수인 펠리너 헤르만스가 집필한 책으로 그는 프로그래밍 교육과 프로그래밍 언어에 대해 연구한다.</p>
<p>이 책은 프로그래머가 프로그래밍을 할 때 일어나는 뇌의 인지활동을 이해해 보다 효율적인 코딩생활(?)을 할 수 있도록 돕는다.</p>
<p>책은 크게 아래의 네 파트로 분류된다.</p>
<p><strong>1. 코드 더 잘 읽기</strong>
<strong>2. 코드에 대해 생각하기</strong>
<strong>3. 좋은 코드 작성하기</strong>
<strong>4. 협업하기</strong></p>
<p>향후 내가 어떠한 그룹에 속하게 된다면, 다른 이들의 코드를 많이 보게 될 텐데 그 때 좀 더 수월하기 위함이고 스스로의 코드가 타인에게 잘 읽히길 연습하는 좋은 과정이 될 것 같아 정리를 남긴다. </p>
<hr>
<h1 id="chapter-1-코딩-중-겪는-혼란에-대해">Chapter 1. 코딩 중 겪는 혼란에 대해</h1>
<h2 id="1-1-혼란의-유형-세-가지">1-1. 혼란의 유형 세 가지</h2>
<h3 id="1-지식의-부족-knowledge으로-처음-보는-언어를-접했을-때가-되겠다">1. 지식의 부족 (knowledge)으로 처음 보는 언어를 접했을 때가 되겠다.</h3>
<p>→ 지식이 없다는 것은 뇌의 장기기억 공간(long-term memory, LTM)에 해당 내용의 지식의 부재를 의미</p>
<h3 id="2-정보의-부족-information-상태로-언어는-알지만-메소드의-동작-원리를-알지-못할-때가-되겠다">2. 정보의 부족 (information) 상태로 언어는 알지만 메소드의 동작 원리를 알지 못할 때가 되겠다.</h3>
<p>→ 정보가 부족하단 것은 단기기억 공간(short-term memory, STM)에 해당 내용의 부재를 의미</p>
<h3 id="3-처리-능력의-부족processing-power-상태는-코드가-복잡하여-코드를-따라가다-길을-잃어버리는-상태가-되겠다">3. 처리 능력의 부족(processing power) 상태는 코드가 복잡하여 코드를 따라가다 길을 잃어버리는 상태가 되겠다.</h3>
<p>→ 많은 정보를 처리할 때 작업 기억 공간(working memory)가 영향을 받음을 의미 (잊어버린다)</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Github에 API Key 숨기기]]></title>
            <link>https://velog.io/@kimjumpsun_code/Github%EC%97%90-API-Key-%EC%88%A8%EA%B8%B0%EA%B8%B0</link>
            <guid>https://velog.io/@kimjumpsun_code/Github%EC%97%90-API-Key-%EC%88%A8%EA%B8%B0%EA%B8%B0</guid>
            <pubDate>Thu, 26 May 2022 06:47:24 GMT</pubDate>
            <description><![CDATA[<p>이번 5월 노마드 챌린지를 하기 이전에 나는 이미 api key를 그대로 push 했었다. 
그나마 다행인건 private으로 올렸다는 것인데.. 
이번 기회에 환경변수를 사용하지 않는 간단한 방법을 알게되어 기록한다.</p>
<p>개인 레포이길 망정이지 😖 
프로젝트 하며 github에 push할 때에는 <strong>API Key</strong> 를 조심 또 조심하자! </p>
<ul>
<li>노마드 챌린지 중 사용자의 위치를 받아와서 <a href="https://openweathermap.org/current">날씨 정보를 뿌려주는</a> 작업이 있었고</li>
<li>github에 api code가 그대로 노출되어 위험성 감지했다.</li>
<li>숨기려는 code는 한 줄로 매우 간단하기 때문에 <code>.env</code> <code>node.js</code> 를 사용하지 않고 API key를 숨기고 싶다. </li>
</ul>
<hr>
<h1 id="api-key--숨기는-방법초간단">API key  숨기는 방법(초간단)</h1>
<h3 id="1-apikeyjs-file-만들고-key를-넣는다">1) <code>apikey.js</code> file 만들고 key를 넣는다.</h3>
<pre><code class="language-jsx">const config = {
    apikey: &quot;APIkey 입력&quot;
}</code></pre>
<h3 id="2-indexhtml-내에-apikey-file-연결">2) index.html 내에 apikey file 연결</h3>
<pre><code class="language-jsx">&lt;script type =&quot;text/javascript&quot; src=&quot;apikey.js&quot;&gt;&lt;/scirpt&gt;</code></pre>
<h3 id="3-weatherjs-위치를-불러오고자-하는-파일에-상수로-할당">3) <code>weather.js</code> (위치를 불러오고자 하는 파일)에 상수로 할당</h3>
<pre><code class="language-jsx">const WEATHER_API = config.apikey;</code></pre>
<h3 id="4-gitignore를-생성하고-apikeyjs-file-제외">4) .gitignore를 생성하고 apikey.js file 제외</h3>
<hr>
<p><a href="https://zenn.dev/lesserpanda/articles/2baa2f6eed690b">참고한 사이트</a></p>
<p><a href="https://panython.tistory.com/24">push를 취소하고 싶다면</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Monthly Issue]]></title>
            <link>https://velog.io/@kimjumpsun_code/Monthly-Issue%EA%B0%80-%EB%90%98%EB%B2%84%EB%A6%BC</link>
            <guid>https://velog.io/@kimjumpsun_code/Monthly-Issue%EA%B0%80-%EB%90%98%EB%B2%84%EB%A6%BC</guid>
            <pubDate>Sun, 01 May 2022 11:01:55 GMT</pubDate>
            <description><![CDATA[<h1 id="apr-2-4week-수정예정">Apr. 2-4week (수정예정)</h1>
<h2 id="apr-9">Apr 9.</h2>
<p><strong>IN BRIEF:</strong></p>
<ul>
<li>The British government has removed jQuery as a dependency from its <strong><a href="https://javascriptweekly.com/link/122108/web">gov.uk</a></strong> frontend apps – Matt Hobbs <strong><a href="https://javascriptweekly.com/link/122109/web">shows off how this improves performance</a></strong> significantly.</li>
<li>If you use AWS Lambda for running serverless functions, you can now get <strong><a href="https://javascriptweekly.com/link/122110/web">direct HTTPS URLs</a></strong> for triggering functions, rather than having to use API Gateway. <em>Serverless Framework</em> <strong><a href="https://javascriptweekly.com/link/122111/web">already supports them</a></strong> too. (<em>→ *</em><a href="https://javascriptweekly.com/link/122156/web">via Serverless Status</a>***)</li>
</ul>
<p>Articles &amp; Tutorials</p>
<ul>
<li><strong><a href="https://javascriptweekly.com/link/122129/web">The Problems with JavaScript Begin with JavaScript</a></strong>
— We love JS because of its flexibility and ease of use, but we ignore 
its security vulnerabilities. Get the guide on how to start with 
JavaScript security.</li>
</ul>
<p>Feroot sponsor</p>
<ul>
<li><strong>▶  <a href="https://javascriptweekly.com/link/122133/web">Postlight Podcast: For Technology Leaders Solving Tough Problems</a></strong></li>
</ul>
<p>Postlight sponsor</p>
<h1 id="🛠-code--tools">🛠 Code &amp; Tools</h1>
<ul>
<li><strong>⭐️ <a href="https://javascriptweekly.com/link/122138/web">React Libraries to Use in 2022</a></strong> — The React ecosystem is so extensive that we even have <a href="https://javascriptweekly.com/link/122139/web">a separate newsletter for React stuff</a>
and when it comes to libraries, the problem is one of too much choice, 
not too little, so an opinionated list like this can come in handy.</li>
</ul>
<p>Robin Wieruch</p>
<ul>
<li><strong><a href="https://javascriptweekly.com/link/122143/web">Keep Up with the Latest in Startups, Tech, &amp; Programming in Just 5 Min</a></strong> — TLDR is a daily newsletter with links and TLDRs of the most interesting stories in startups 🚀, tech 📱, and coding 💻</li>
</ul>
<p>TLDR Newsletter sponsor</p>
<h1 id="reader-submissions">Reader Submissions</h1>
<ul>
<li>Cory Brown is happy to stir up a little controversy when he explains <strong><a href="https://javascriptweekly.com/link/122151/web">why he avoids <code>async</code>/<code>await</code></a></strong> – it certainly provoked a lot of comments .</li>
</ul>
<hr>
<h2 id="apr-16">Apr 16.</h2>
<ul>
<li><strong><a href="https://javascriptweekly.com/link/122403/7a9eb67c33">JS Function Composition: What’s The Big Deal?</a></strong> — James’ articles on JavaScript fundamentals have been very popular over the years, so it’s great to see a new one focusing on a common activity: function composition — <em>“Why, then, do functional programmers get all worked up about it? What’s the big deal?”</em></li>
</ul>
<p>JAMES SINCLAIR</p>
<ul>
<li><strong><a href="https://javascriptweekly.com/link/122404/7a9eb67c33">A &#39;Search Engine&#39; for JavaScript Operators</a></strong> — Quick: name as many operators as you can! Got to about ten or so? This site covers about <em>fifty</em> with a quick explanation of each.</li>
</ul>
<p>JOSH W COMEAU</p>
<hr>
<h2 id="apr-23">Apr 23.</h2>
<ul>
<li><strong><a href="https://javascriptweekly.com/link/122666/7a9eb67c33">Lexical: An Extensible Text Editor Library (That Does Things Differently)</a></strong> — Fresh from Meta (or Facebook, as my brain still calls it) comes a new text editor framework with accessibility, performance, and reliability at its heart. 22KB gzipped, supports React 18 (but can be used in a vanilla fashion), and a (native) iOS version is to follow. Remind you of <a href="https://javascriptweekly.com/link/122667/7a9eb67c33">Draft.js</a>? Think of this as the next generation: Meta is – they’re replacing Draft with Lexical in their apps.</li>
</ul>
<p>META / FACEBOOK</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[IT Monthly issue! ]]></title>
            <link>https://velog.io/@kimjumpsun_code/IT-Monthly-issue</link>
            <guid>https://velog.io/@kimjumpsun_code/IT-Monthly-issue</guid>
            <pubDate>Thu, 07 Apr 2022 10:17:55 GMT</pubDate>
            <description><![CDATA[<p>IT 전반에 관심이 많아서 SNS를 여기저기 구경하다보면 흥미를 자극하는 post들이 많다. 
SNS (Twitter, Facebook, Linked-in, dev.to, kakao채팅방 등)에서 Bookmark한 내용을  남겨본다! </p>
<h1 id="💻-april">💻 APRIL!</h1>
<h1 id="1-twitter">1. Twitter</h1>
<p>not yet</p>
<h1 id="2-linked-in">2. Linked-In</h1>
<h3 id="1-html6와-css4가-릴리즈-된다고-한다-뭐가-바뀔까">1) HTML6와 CSS4가 릴리즈 된다고 한다! 뭐가 바뀔까?</h3>
<p>우린 또 뭘 준비해야 할까? <a href="https://morioh.com/p/6d422fc49bd2">&lt;Big news HTML6 &amp; CSS4 Released?&gt;</a></p>
<h3 id="2-아래의-사진처럼-scrollbar를-커스텀-할-수-있는-css-tips를-기억해두자">2) 아래의 사진처럼 scrollbar를 커스텀 할 수 있는 <a href="https://www.linkedin.com/posts/slobodan-gajic_css-frontend-activity-6915551652703805440-YPki?utm_source=linkedin_share&amp;utm_medium=member_desktop_web">CSS Tips</a>를 기억해두자!</h3>
<p><img src="https://velog.velcdn.com/cloudflare/kimjumpsun_code/4aa510a4-eb50-4ff3-b02c-2f39d5b56d16/css%20tip.jpeg" alt=""></p>
<h3 id="3-google-docs-에서-markdown-사용이-가능하다">3) Google docs 에서 markdown 사용이 가능하다!</h3>
<p><strong>🧐What’s changing?</strong></p>
<p>✅ In Google Docs, you can now select “Automatically detect Markdown” from Tools &gt; Preferences to enable auto correcting for <a href="https://www.markdownguide.org/getting-started/">Markdown</a> syntax, a lightweight markup language for applying formatting using plain text. Currently, Google Docs supports some Markdown syntax, such 
as:</p>
<ul>
<li><code>*</code> or <code>-</code> followed by a space autocorrects to bullet points</li>
<li>Various ways to start a numbered list similar to Markdown</li>
<li><code>[]</code> followed by a space autocorrects to checkboxes</li>
</ul>
<p>자세한 내용은 <a href="https://workspaceupdates.googleblog.com/2022/03/compose-with-markdown-in-google-docs-on.html?m=1">여기</a>서 확인!</p>
<h3 id="4-코엑스의-무인-서비스-리테일-플랫폼인-완전무인매장-개발을-주도한-신세계-ic-한수웅-조상현-팀장의-인터뷰">4) 코엑스의 무인 서비스 리테일 플랫폼인 ‘완전무인매장’ 개발을 주도한 신세계 I&amp;C <a href="https://news.naver.com/main/read.naver?mode=LSD&amp;mid=sec&amp;sid1=101&amp;oid=025&amp;aid=0003175968">한수웅. 조상현 팀장의 인터뷰</a>!</h3>
<p>’완전무인매장&#39;은 21년 9월에 오픈해 2만명이 다녀갔다고 한다. 인터뷰를 통해 8개월간의 성장과정을 조금이나마 엿볼 수 있다. 또 리테일 테크가 어디까지 성장했고 AI 라이다 센서가 현장에서 어떤 시행착오에 부딪혔으며, 남은 과제는 어떤 것인지 살펴 볼 수 있다.! 
🧐<em>한국형 Amazon Go가 될 수 있을까?</em></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[JavaScript Weekly Apr. 2nd]]></title>
            <link>https://velog.io/@kimjumpsun_code/JavaScript-Weekly-Apr.-2nd</link>
            <guid>https://velog.io/@kimjumpsun_code/JavaScript-Weekly-Apr.-2nd</guid>
            <pubDate>Tue, 05 Apr 2022 13:27:02 GMT</pubDate>
            <description><![CDATA[<h2 id="😎-main-issue-😎">😎 Main Issue 😎</h2>
<h3 id="1-decorators-가-stage-3에-도달했다-곧-정식-기능으로-추가되지-않을까">1) Decorators 가 Stage 3에 도달했다! (곧 정식 기능으로 추가되지 않을까?)</h3>
<p><a href="https://javascriptweekly.com/link/121739/web">Decorators for ES6 Classes Proposal (Mostly) Reaches Stage 3 at TC39</a>
 — We first linked to this proposal three years ago but it’s now <a href="https://javascriptweekly.com/link/121740/web">conditionally made it to stage 3</a> (with some tweaks required) and people are <a href="https://javascriptweekly.com/link/121741/web">very excited</a>. Despite dating from 2019, <a href="https://javascriptweekly.com/link/121742/web">Mike Green’s explanation of the idea</a> remains a good accessible overview of the basic idea, if the proposal feels too technical. </p>
<p>⇒ ☝🏻** <a href="https://ahnheejong.name/articles/ecmascript-tc39/">TC39</a>는 ECMA script를 관리하는 표준 위원회다. **
stage 2.단계는 초고 단계인데 decorators가 stage 3에 도달했음은 곧 초고가 끝나고 완성에 가까워졌기 때문에 ES 버전에 도입되어 정식 기능이 된다는 말이겠지! 이전까지는 Babel을 거쳐서 사용했는데, 정식 기능이 된다면 이미 사용해버린 데코레이터를 수정하거나 babel의 데코레이터 플러그인을 레거시 모드로 계속 사용해야 하기 때문에 비용이 발생 할 수 있겠다. </p>
<p>☝🏻 *<em>TC39 구성원은 Mozilla, Google, Apple, MS, Facebook, Twitter등 메이저 그룹 등 다양하게 이루어져 있다. *</em>
엄청난 대기업들이 구성원이라니.. 먼나라 이야기 같다. 하지만 모든 회의록과 진행상황이 전부 <a href="https://github.com/tc39">GitHub</a>를 통해 공유되고 있고 조회가 가능하다. 때문에 누구든지 챔피언(제안하고자 하는 proposal을 끌고 나갈 TC39구성원)을 구해서 proposal를 제출하거나 의견을 낼 수 있다! </p>
<p>☝🏻 <strong>Proposal-Decorators 에 대해서 <a href="https://github.com/tc39/proposal-decorators">자세한 내용</a>을 확인해보라.</strong> (한글 설명은 <a href="https://ui.toast.com/weekly-pick/ko_20200102">여기</a> 또는 <a href="https://wonism.github.io/what-is-decorator/">여기</a>) 
데코레이터는 클래스에서 호출되는 함수이고 단어 그대로 ‘장식&#39;해준다는 기능이다. 서로 관련 없는 클래스 사이의 동작 공유를 단순화 시킬 수 있기 때문에(랩핑) 상당히 도움이 되는 도구 중 하나이다. </p>
<p><code>@+decorator 함수</code> 식으로 사용한다.</p>
<pre><code class="language-jsx">@defineElement(&quot;my-class&quot;)
class C extends HTMLElement {
  @reactive accessor clicked = false;
}</code></pre>
<p><strong>☝🏻 Decorators 주요한 세 가지 기능</strong> :</p>
<ol>
<li>They can <strong>replace</strong> the value that is being decorated with a <em>matching</em> value that has the same semantics. (e.g. a decorator can replace a method with another method, a field with another field, a class with another class, and so on).</li>
<li>They can provide <strong>access</strong> to the value that is being decorated via accessor functions which they can then choose to share.</li>
<li>They can <strong>initialize</strong> the value that is being decorated, running additional code after the value has been fully defined. In cases where the value is a member of class, then initialization occurs once per instance.</li>
</ol>
<h3 id="2-react-18-버전이-release-되었다-알파버전-">2) React 18 버전이 Release 되었다 (알파버전) !</h3>
<p> — <a href="https://reactjs.org/blog/2021/06/08/the-plan-for-react-18.html">The plan</a> was for v18 to be an easy upgrade even if there were many changes under the hood.. and despite the introduction of a new concurrent renderer, Suspense, new hooks, automatic batching, and more, they’ve done a great job keeping the ship steady. 
 <a href="https://reactjs.org/blog/2022/03/08/react-18-upgrade-guide.html">The React 18 upgrade guide</a> covers some things you need to consider, and if you’re a completist, <a href="https://github.com/facebook/react/blob/main/CHANGELOG.md#1800-march-29-2022">the change log</a> digs deep. 
<strong><a href="https://medium.com/naver-place-dev/react-18%EC%9D%84-%EC%A4%80%EB%B9%84%ED%95%98%EC%84%B8%EC%9A%94-8603c36ddb25">한글버전으로 아주 요약이 잘 되어있는 포스트 공유!</a></strong></p>
<hr>
<h2 id="😎-code--tools-😎">😎 Code &amp; Tools 😎</h2>
<ul>
<li><strong>[Visual Studio Code March 2022 Released] (<a href="https://javascriptweekly.com/link/121772/web">https://javascriptweekly.com/link/121772/web</a>)!!</strong>
— VS Code는 매 달 업데이트를 하지만 이번 업데이트는 특히 자바스크립트 개발들에게 더 크게 느껴지는 업데이트다! </li>
<li><em>1) Native *local history</em> support is the headline feature but the JS debugger now lets you collect and visualize heap profiles to keep an eye on memory allocation.
2) also now get JS highlighting when within HTML files.**</li>
</ul>
<hr>
<h4 id="in-brief">IN BRIEF:</h4>
<ul>
<li>👾 <a href="https://github.com/getify/dwordly-game/blob/main/README.md">Kyle Simpson</a> of You Don&#39;t Know JS Yet fame, has been keeping me updated on progress with <strong><a href="https://javascriptweekly.com/link/121853/web">his Dwordly game</a>
:</strong> Dwordly (Dwindling <strong>Wordle</strong>) is a flip-twist of the famous viral game. In Dwordly, there&#39;s no guessing or luck. Just use your expansive vocabulary to dwindle given words down to the shortest possible!
– it&#39;s quite fun, and an interesting change to Wordle. ✅ 
– 알파벳 줄여가면서 단어를 만드는 게임인데 꽤나 흥미롭다 ! </li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[CSS variables with JS]]></title>
            <link>https://velog.io/@kimjumpsun_code/CSS-variables-with-JS</link>
            <guid>https://velog.io/@kimjumpsun_code/CSS-variables-with-JS</guid>
            <pubDate>Sat, 02 Apr 2022 05:41:02 GMT</pubDate>
            <description><![CDATA[<p><img src="https://media.vlpt.us/images/kimjumpsun_code/post/c663e901-cf78-4b9b-a1ad-f1fe88945ee5/JS%2030day_CSS%20variables.gif" alt=""></p>
<h1 id="👩🏻💻-자바스크립트로-css-변수-조절하기">👩🏻‍💻 자바스크립트로 CSS 변수 조절하기!</h1>
<h3 id="css-변수를-사용해서-간격이나-블러처리-폰트-크기-컬러-등을-실시간으로-변경-가능하다">css 변수를 사용해서 간격이나, 블러처리, 폰트 크기, 컬러 등을 실시간으로 변경 가능하다.</h3>
<p>오늘 기억할 <em><strong>두 가지 point code</strong></em> :  <code>data-attribute</code> 그리고 <code>document.documentElement.style.setProperty</code> </p>
<h2 id="1-data--attribute">1. data- attribute</h2>
<blockquote>
<p> data-* 속성은 표준이 아닌 추가적인 DOM 속성으로 
Node.setUserData()과 같은 다른 조작을 하지 않고도 표준 HTML 요소에 추가 정보를 저장할 수 있도록 해준다. 
출처: MDN</p>
</blockquote>
<ul>
<li><code>data-</code> 로 시작하는 속성은 무엇이든지 사용이 가능하다. 
<code>data-name: hey!, data-sizin: px</code> 과 같이 화면에 보이지 않지만 추가 정보를 엘리멘트에 담아 놓을 수 있다.</li>
<li>데이터 값은 <strong>문자열이다</strong>! 스타일을 적용하기위해 숫자 값은 선택자의 따옴표 안에 써주어야 한다.</li>
<li><strong>자바스크립트에서 접근할 때에는</strong> <code>dataset.</code> 속성으로 읽을 수 있으며, <code>dataset.name=&#39;bambie</code> 로 변경도 가능하다.</li>
<li><strong>CSS 에서 접근할 때에는</strong> <code>attr</code> 함수의 생성된 content를 사용해서 변경 가능하다.<pre><code class="language-html">      article::before {
            content: attr(data-parent);
      }</code></pre>
</li>
<li>CSS의 속성 선택자도 데이터에 따라 스타일 변경 가능하다. <pre><code>      article[data-columns=&#39;3&#39;] {
            width: 400px;
      }
      article[data-columns=&#39;4&#39;] {
            width: 600px;
      }</code></pre><h2 id="데이터-속성-언제-쓸까">데이터 속성 언제 쓸까?</h2>
데이터 속성들은 <strong>게임 점수</strong> 처럼 계속 변하는 정보도 저장할 수 있어서 유용하고 외에도 다방면에서 많이 사용된다고 한다. 
<a href="https://www.youtube.com/watch?v=On_WyUB1gOk">👻 게임 캐릭터의 점수 값 변경시키는 재밌는 코드 구경</a></li>
</ul>
<h2 id="2-documentdocumentelementstylesetproperty">2. <code>document.documentElement.style.setProperty</code></h2>
<ul>
<li><p>CSS style에 새로운 값을 넣어주기 위해 method interface를 활용한다. </p>
</li>
<li><p><code>style.setProperty(propertyName, value, priority);</code> 형태로 스타일 이름, 스타일 내용을 작성해서 사용</p>
</li>
<li><p><a href="https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration/setProperty">클릭할 때마다 속성 값을 변경시켜주는 코드</a> 를 만들 수 도 있고 아래의 코드처럼     <code>mouseover</code> 할 때마다 값이 변경되도록 할 때 사용한다. </p>
</li>
</ul>
<p><a href="https://codepen.io/unimaeng/pen/RwxjRyq">코드펜에서 보기</a></p>
<p>!codepen[unimaeng/embed/RwxjRyq?default-tab=html%2Cresult]</p>
<h3 id="🍓-참고-codepen을-velog로-옮겨오는-방법">🍓 [참고] codepen을 velog로 옮겨오는 방법.</h3>
<ol>
<li>codepen 하단에 <code>embed</code> 버튼 클릭</li>
<li>iframe code 복사하기</li>
<li><code>!codepen[iframe copy code 붙여넣기]</code> 형태로 삽입!</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[JavaScript Weekly]]></title>
            <link>https://velog.io/@kimjumpsun_code/JavaScript-Weekly</link>
            <guid>https://velog.io/@kimjumpsun_code/JavaScript-Weekly</guid>
            <pubDate>Wed, 30 Mar 2022 13:02:06 GMT</pubDate>
            <description><![CDATA[<p><strong>JavaScript Weekly</strong> 는 newsletter로 news, jobs, releases version 정보, articles &amp; tutorials, code &amp; tools를 전한다. 
매주 토요일에 한 주간의 주요한 소식을 메일로 받는데, 그 중에 기억하고 싶은 또는 인상깊었던 소식들을 블로그에 남길 예정. 
자세한 내용은 <strong><a href="https://javascriptweekly.com/issues/582">subscribe here!</a></strong></p>
<h2 id="js-weekly-march26">JS Weekly March.26</h2>
<p><strong>1. (오늘 나의 관심을 사로잡은) RELEASES:</strong></p>
<p><strong><a href="https://javascriptweekly.com/link/121506/web">Node 17.8.0</a></strong> – <code>perf_hooks</code> adds <code>http</code> tracing.</p>
<p><strong>2. (오늘 나의 관심을 사로잡은) IN BRIEF:</strong></p>
<ul>
<li>Ever thought MDN was valuable enough that you&#39;d want to pay for it? With <strong><a href="https://javascriptweekly.com/link/121505/web">MDN Plus</a></strong>, now you can do just that <em>and</em> unlock extra features into the bargain.</li>
</ul>
<h3 id="⇒-mdn이-mdn-plus를-런칭했다-20220324">⇒ MDN이 MDN Plus를 런칭했다! (2022.03.24)</h3>
<ul>
<li>2020 <a href="https://developer.mozilla.org/en-US/docs/Learn/Front-end_web_developer">front-end developer learning pathway</a> 를 사용하는 유저는 전체 트래픽의 10%를 차지할 정도로 많았기 때문에 보다 powerful한 맞춤형 학습을 지원하기 위해 MDN Plus를 런칭 한 것 같다. </li>
<li>주요 기능은 Notifications / Collections / MDN offline (premium 구독 서비스)</li>
</ul>
<h3 id="주요-기능-세-가지는-뭘까">주요 기능 세 가지는 뭘까?</h3>
<ol>
<li><strong>Notifications</strong>
: MDN 최신 개발 알림 받기 (css 기능 launch, APIs ship) </li>
<li><strong>Collections</strong>
: 저장하고 싶은 MDN 아티클을 저장하고 자주 방문한 페이지를 자동 저장해줌</li>
<li><strong>MDN offline
: 말그대로 오프라인으로 MDN 이용 가능</strong></li>
</ol>
<ul>
<li>MDN plus는 현재 <del><em>미국과 캐나다</em></del> 에서만 이용 가능하다. 다음 달 부터는 점차적으로 확장한다고 하는데, 한국은 아직 런칭 예정 목록에 없다^^; 
한국도 이용자가 많으니 올해 안에는 이용할 수 있지 않을까 싶다가도 이렇게까지 이용하는 사람이 많을까? 싶네</li>
<li>자세한 내용은 <a href="https://hacks.mozilla.org/2022/03/introducing-mdn-plus-make-mdn-your-own/">여기</a> 에서 <strong>구경</strong>만 해보시라 ^^</li>
</ul>
<p>*<em>출처: JavaScript Weekly Issue  *</em></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[알잘딱깔센] 시리즈 책 출간]]></title>
            <link>https://velog.io/@kimjumpsun_code/%EC%95%8C%EC%9E%98%EB%94%B1%EA%B9%94%EC%84%BC-%EC%8B%9C%EB%A6%AC%EC%A6%88-%EC%B1%85-%EC%B6%9C%EA%B0%84</link>
            <guid>https://velog.io/@kimjumpsun_code/%EC%95%8C%EC%9E%98%EB%94%B1%EA%B9%94%EC%84%BC-%EC%8B%9C%EB%A6%AC%EC%A6%88-%EC%B1%85-%EC%B6%9C%EA%B0%84</guid>
            <pubDate>Thu, 24 Mar 2022 14:04:17 GMT</pubDate>
            <description><![CDATA[<p><img src="https://img.ridicdn.net/cover/2773000054/xxlarge?dpi=xxhdpi#1" alt=""></p>
<h1 id="두-권의-저자가-되었다">두 권의 저자가 되었다.</h1>
<p>개발 공부를 시작하기 이전에도 
언제고 반드시 책 집필을 해보고자 했는데, 예상보다 빨리 집필 작업에 참여하게 되었다.<br>그것도 두 권의 공동 저자가 되었다. 
개인적으로 어떤 분야이건 &#39;이론&#39;을 참 좋아해서 대단히 즐거운 시간이었다.</p>
<h3 id="나의-발목을-잡던-것들을-정면으로-마주하는-일은-쉽지-않다">나의 발목을 잡던 것들을 정면으로 마주하는 일은 쉽지 않다.</h3>
<p>많은 시간을 들였고 그 어떤 스터디보다 많은 것을 얻었다. 
물론 텅 빈 잔디가 날 슬프게 했지만.. 아주 의미있는 시간이었던 것으로..</p>
<p>텍스트의 무게가 어찌나 무거운지.. 
행여 잘못 작성한 부분이 없는지 오타는 없는지, 독자를 불편하게 하는 요소는 없을지 여러번 돌아보며 작성했다. 
그 과정이 엄청난 수련의 시간이었지만, 시간이 흘러도 잊혀지지 않을 공부였다. </p>
<p>개발을 하며, 추후에는 더 쉽고 깔끔하게 인쇄해보고자 한다. </p>
<p>무료 책으로 공개되어 있으니<br>입문자들에게 도움이 되었으면 한다. ^^</p>
<h3 id="도서-링크">도서 링크</h3>
<p><a href="https://ridibooks.com/books/2773000055">⭐️ 알잘딱깔센 JavaScript 핵심개념</a>
<a href="https://ridibooks.com/books/2773000054?_s=search&amp;_q=%EC%B6%9C%ED%8C%90%EC%82%AC%3A%EC%82%AC%EB%8F%84%EC%B6%9C%ED%8C%90&amp;_rdt_sid=search&amp;_rdt_idx=0">⭐️ 알잘딱깔센 GitHub 핵심개념</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[초심자의 JavaScript 연습!]]></title>
            <link>https://velog.io/@kimjumpsun_code/%EC%B4%88%EC%8B%AC%EC%9E%90%EC%9D%98-JavaScript-%EC%97%B0%EC%8A%B5</link>
            <guid>https://velog.io/@kimjumpsun_code/%EC%B4%88%EC%8B%AC%EC%9E%90%EC%9D%98-JavaScript-%EC%97%B0%EC%8A%B5</guid>
            <pubDate>Wed, 09 Feb 2022 15:12:16 GMT</pubDate>
            <description><![CDATA[<h3 id="초심자로-돌아가서-기초부터-천천히-다시-연습해보자">초심자로 돌아가서 기초부터 천천히 다시 연습해보자.</h3>
<p>수료를 앞두고 마지막 팀 프로젝트 (이하 &#39;오이마켓&#39;)를 진행하면서 진이 다 빠졌다. 
맡은 바에 비해 쏟은 에너지가 너무나 넘쳤다. 
왜그럴꼬... 생각해보니 
역시나 기본을 뛰어넘어서 기능구현을 급급하게 진행한 것이 화근이었다. </p>
<p>일주일여의 시간 동안 그간의 일들을 재정비하고 react로 todo-list
를 만들어보고 다시 돌아왔다.</p>
<p>지금부터는 초간단 기본 기능부터 천천히 만들어 갈 예정이다! </p>
<hr>
<h1 id="첫-번째-과제">첫 번째 과제.</h1>
<h1 id="초간단-메모장-만들기-✏️">초간단 메모장 만들기 ✏️</h1>
<h2 id="✨-til-key-code">✨ TIL: KEY CODE</h2>
<ol>
<li><code>setItem(key, value)</code> : 키와 값을 보관</li>
<li><code>getItem(key, value)</code> : 
키에 해당하는 값을 받아옴</li>
<li><code>removeItem(key)</code> : 키와 해당하는 값을 삭제함</li>
</ol>
<ul>
<li><code>localStorage</code>는 origin(domain, port, protocol)이 같은 경우 data가 모든 tab과 창에서 공유되고 새로고침을 할 경우에도 data 유지됨!</li>
</ul>
<hr>
<h2 id="👩🏻💻-full-code">👩🏻‍💻 FULL CODE</h2>
<h3 id="click-event"><code>click event</code></h3>
<ol>
<li><p>clear button click 시 localStorage에 저장되어있던 memo 내용이 삭제됨 :
<code>button onclick=&quot;localStorage.removeItem(&#39;memo&#39;);</code> </p>
<br>
</li>
<li><p>memo 화면에 보여지는 내용도 삭제(비워주는) 코드 추가 :
<code>memo.value=&#39;&#39;</code></p>
</li>
</ol>
<p>=&gt; <code>button onclick=&quot;localStorage.removeItem(&#39;memo&#39;);memo.value=&#39;&#39;&quot;</code> </p>
<h3 id="localstorage"><code>localStorage</code></h3>
<ol>
<li>memo에 입력되는 값을 localStorage에 보관된 값을 받아와서 보여줌 :
<code>memo.value = localStorage.getItem(&#39;memo&#39;);</code><br></li>
<li>memo에 텍스트를 입력하는 이벤트 발생 시 localStorage에 값을 보관 :
<code>memo.oninput = () =&gt; {
 localStorage.setItem(&#39;memo&#39;, memo.value)
};</code></li>
</ol>
<p><img src="https://images.velog.io/images/kimjumpsun_code/post/2136b103-a0cd-4bec-804c-c26811379135/761A7AF1-2A0E-4F8A-8527-02717A273727.jpeg" alt=""></p>
<p>참고: <a href="https://blog.logrocket.com/localstorage-javascript-complete-guide/#whatislocalstorage">https://blog.logrocket.com/localstorage-javascript-complete-guide/#whatislocalstorage</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[초심자를 위한 JavaScript 핵심정리]]></title>
            <link>https://velog.io/@kimjumpsun_code/%EC%B4%88%EC%8B%AC%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-JavaScript-%ED%95%B5%EC%8B%AC%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@kimjumpsun_code/%EC%B4%88%EC%8B%AC%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-JavaScript-%ED%95%B5%EC%8B%AC%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Wed, 09 Feb 2022 15:05:39 GMT</pubDate>
            <description><![CDATA[<p>프론트엔드 스쿨을 수료하고 새롭게 자바스크립트 스터디가 열렸다. </p>
<p>이 스터디를 진행하며, 
<em><strong>&#39;초심자를 위한 JavaScript 핵심 정리</strong></em>&#39; 라는 무료책을 출판하기로 한다. </p>
<p>총 17개 chapter로 내가 맡은 part는 총 3개로 아래와 같다. </p>
<ol>
<li>초심자가 알면 좋은 JS 생태계</li>
<li>비동기 </li>
<li>예외처리 </li>
</ol>
<hr>
<p>첫 번째 파트의 초고(?)를 완성했다. </p>
<p>다른 스터디에 참여했을 때는 아무래도 습득한 내용을 공유하는 데에 치중이 되어 있으니 이해의 비중 80%, 발표내용 정리 20% 였는데, 
이번 스터디는 출간으로 남는 자료라고 생각하니 한줄 한줄 작성하는게 어려워졌다. 
이해의 비중 120%, 내용 정리 100% 정도로 향상된 듯 하다. </p>
<p>행여나 잘못 작성할까 한 문장에 해당 내용을 다룬 5-6 페이지의 사이트를 들여다 보고 책이며 위키피디아를 찾아가며 cross-check 한다. </p>
<p>논문을 다시 쓰는 기분이고 너무나 좋다. </p>
<p>스터디가 끝나기 전까지 계속 수정하고 추가해야 겠다.</p>
<p>오늘은 간단히 첫 번째 파트를 공유해 본다! </p>
<hr>
<p>팀원 : 유현세, 맹하령</p>
<h1 id="초심자라면-알아두어야-할-js-생태계">초심자라면 알아두어야 할 JS 생태계</h1>
<p> 자바스크립트를 공부하다보면 ES6, v8, node.js, npm, jquery 등등 자주 접하는 개념들이 있다. 문법을 배우기 전에 초심자가 꼭 알아두어야할 주요 개념들을 ‘ECMA Script, JavaScript Runtime, Frameworks, Library, CSS in JavaScript, Module Bundlers’ 여섯 개의 자바스크립트 생태계로 분류하고 소개한다. 이 자바스크립트 생태계에 대한 큰 개념을 이해하고 나면 이후 소개하는 문법을 습득하거나 향후 다른 프레임워크를 공부할 때에 도움이 될 것이다.</p>
<h1 id="1-ecma-script-의-등장">1. ECMA Script 의 등장</h1>
<h2 id="1-1-ecma-script의-탄생-배경">1-1. ECMA Script의 탄생 배경</h2>
<p>  1996년 3월, 당시의 웹브라우저 시장 점유율 90%를 차지하던 넷스케이프 커뮤니케이션즈 (이하 넷스케이프 사) 는 네비게이터 2.0을 출시하면서 자바스크립트를 지원하기 시작했다. 이후 웹 페이지 동작을 향상시키는 경량의 프로그래밍 언어가 인기를 끌자 Microsoft사 에서 IE 3.0에서 동작하는 ‘JScript’라는 매우 비슷한 언어를 만들어 냈고 IE 이외에도 다양한 브라우저들이 자바스크립트 문법을 만들어 내게 된다.</p>
<p> 이로인해 브라우저에 따라 웹페이지가 정상적으로 동작하지 않는 크로스 브라우징 이슈가 빈번하게 발생하면서 표준화된 자바스크립트의 필요성이 대두되기 시작했다. 이를 위해 1996년 11월, 넷스케이프 사는 ECMA 인터네셔널에 자바스크립트의 표준화를 요청한다. 그 결과 1997년 7월, 자바스크립트의 표준화 초판이 완성되었고 2015년도 부터는 매 해 새로운 문법이 추가되어 배포되고 있다. </p>
<p> 한마디로 ECMA Script는 ECMA 인터내셔널에서 정의한 ECMA-262 기술 규격을 토대로 만든 표준 스크립트 프로그래밍 언어이며, 자바스크립트의 뼈대를 구성하는 언어이다.</p>
<ul>
<li><em>ECMA 인터네셔널 (Ecma International) : 정보와 통신 시스템의 표준을 관리하는 비영리 표준화 기구</em></li>
</ul>
<h2 id="1-2-ecma-script-version">1-2. ECMA Script version</h2>
<p> 개발을 공부하다보면 ‘ES6부터 도입된 문법입니다~’ 라는 말을 많이 듣게 되는데, 왜 유독 ES6에 대한 언급이 많은 것일까?</p>
<p> 사실 ES6 (ECMA Script6의 줄임말) 이전 버전의 문법에는 크고작은 불편함이 많았다. 하지만, ES6 부터 ES5이하 명세에서 문제가 되던 부분들을 속 시원히 해결하는 <code>let</code>, <code>const</code> ,<code>Promise</code> , <code>Class</code> , <code>Arrow function</code> 등의 문법들이 대거 추가되면서 가독성이나 유지보수성이 크게 향상되었다. 이러한 변화를 가져온 덕에 ES6에 대한 언급이 많다는 점을 알아두자.</p>
<p> ECMA Script는 현재까지 ES2022/ES13 버전이 배포 되었고 계속 업데이트 되고 있다. 2022년에는 <code>class</code> 속성과 관련된 내용이 주를 이루고 있다. 따라서 우리는 공식 페이지에서 매해 업데이트 되는 문법을 확인하고 반영해가며 개발해야한다는 점을 잊지말자.</p>
<ul>
<li><em>ES 버전의 update를 확인할 수 있는 ECMA-인터네셔널 공식 사이트:</em> <a href="https://www.ecma-international.org/">https://www.ecma-international.org/</a></li>
</ul>
<h1 id="2-javascript-runtime">2. JavaScript Runtime</h1>
<p> 런타임(runtime)이란 프로그래밍 언어가 동작할 수 있는 환경을 말하는데, 자바스크립트는 브라우저와 node.js 두 환경에서 실행이 가능하다.</p>
<p>자바스크립트의 두 가지 런타임 환경에 대해 알아보자.</p>
<h2 id="2-1-browser">2-1. Browser</h2>
<p> 자바스크립트 런타임에는 자바스크립트 엔진이 필수적으로 필요한데, 자바스크립트 엔진이란 개발자가 작성한 자바스크립트 코드를 해석하고 실행시켜주는 프로그램 혹은 인터프리터를 말한다.</p>
<p> 각 브라우저 마다 각기 다른 자바스크립트 엔진이 존재하는데, 그 종류는 다음과 같다.</p>
<p><strong>a) 브라우저 별 JavaScript Engine의 종류</strong></p>
<ul>
<li>V8 (Google Chrome, Opera, Edge)
: 2008년 등장한 구글의 v8 엔진은 가장 빠른 성능을 자랑하고 node.js, Chrome 브라우저 등에서 사용된다.</li>
<li>spidermonkey (Firefox)
: 최초의 자바스크립트 엔진으로 넷스케이프 사에 의해 개발이 되었고 Mozilla Firefox에서 사용된다.</li>
<li>chakra (Internent Explorer)
: chakara의 Jscript9은 Internet Explorer용이고 JavaScript는 Microsoft edge용이다.</li>
<li>JavaScript Core (IOS, Safari)
: Nitro 라는 이름으로도 알려져 있는 애플이 사파리를 위해 개발한 엔진이다.</li>
</ul>
<p>b) <strong>각 브라우저의 ES6 지원현황</strong></p>
<p><img src="https://images.velog.io/images/kimjumpsun_code/post/f44aac56-0da2-4833-bef0-eb056d621e4d/ACA3B15E-3615-4A74-BAE0-5A5F4494759F.jpeg" alt="">
 출처: <a href="https://kangax.github.io/compat-table/es6/">https://kangax.github.io/compat-table/es6/</a></p>
<p> 2022년 현재 모던 브러우저의 ES6 지원 비율은 98%~99% 이고 Internet Explorer11는 ES6를 대부분 지원하지 않지만, 2022년 6월 15일 지원이 중지되므로 대부분의 브라우저에서 지원한다고 볼 수 있다.</p>
<p> 행여 브라우저에서 아직 지원하지 않는 최신 기능을 사용해야 하는 상황이 발생한다면 바벨과 같은 트랜스파일러를 사용하여 코드를 변환해주면 된다.</p>
<p><strong>c) Transpiler, ‘바벨(Babel)’</strong> </p>
<p>  트랜스파일러로는 바벨이 코드를 최적화 하는 많은 플러그인을 보유하고 있어 가장 유명하고 많이 사용된다. </p>
<p>바벨은 최신 자바스크립트 코드를 구 버전 자바스크립트 코드로 호환 가능하도록 변환해주는 것이 주된 기능이지만, 현재는 바벨을 이용해서 리액트의 JSX문법, 타입스크립트 같은 정적 타입언어, 코드압축, 정식 문법이 아닌 Proposal 까지 처리해주어 확장성이 매우 뛰어나다.</p>
<h2 id="2-2-nodejs">2-2. node.js</h2>
<p> 자바스크립트의 또다른 런타임 환경인 node.js는 라이언 라인하트 달(Ryan Lienhart Dahl)의 ‘언어 하나로 서버 쪽 어플리케이션까지 한번에 만들면 어떨까?’ 라는 발상에서부터 개발되어 2009년 세상에 공개되었다.</p>
<p>구글이 v8 자바스크립트 엔진을 오픈소스로 공개하면서 node.js는 v8 엔진으로 빌드되었으며, 자바스크립트가 브라우저 이외의 환경에서도 동작할 수 있도록 자바스크립트 엔진을 브라우저로부터 독립시켜 서버측에서 실행된다. node.js의 등장 이후로 자바스크립트의 단점이었던 ‘속도&#39; 부분을 향상 시킬 수 있게 되었다.</p>
<p> node.js는 서버 사이드 에플리케이션 개발에 필요한 모듈이나 HTTP, 파일 시스템과 같은 내장 API를 제공하는데, 이 모든 모듈의 설치나 업데이트, 제거, 수정 등의 작업을 자동화하여 관리해 주는 기능을 가진 툴을 <strong>Package Manager</strong>라고 한다. node.js의 package manager로는 npm, yarn이 있다.</p>
<ul>
<li>npm 은 전세계적으로 가장 많이 사용되는 패키지 관리 툴로 node.js를 설치하기만 하면 기본적으로 내장되어 있어 사용이 매우 편리하다. 하지만, 다른 package를 바로 포함할 수 있는 코드를 자동으로 실행하므로 보안에 취약하다는 단점이 있다.</li>
<li>Yarn 은 2016년 페이스북(현 메타)에서 새롭게 발표한 패키지 관리 툴로 npm 저장소를 그대로 사용하지만 처리성능 속도가 npm보다 더 향상되었다. yarn이 안정성과 보안성 면에서 더 뛰어나지만 디스크 공간을 많이 차지한다는 단점이 있다.</li>
</ul>
<p>참고자료 : <a href="https://www.freecodecamp.org/news/whats-the-difference-between-javascript-and-ecmascript-cba48c73a2b5">‘what is the difference between JavaScript and ECMA Script?’</a></p>
<p>참고자료: 런타임 이해 <a href="https://beomy.github.io/tech/javascript/javascript-runtime/">https://beomy.github.io/tech/javascript/javascript-runtime/</a></p>
<p>참고자료: 인터프리터 <a href="https://velog.io/@gusdnr814/Javascript%EB%8A%94-%EC%9D%B8%ED%84%B0%ED%94%84%EB%A6%AC%ED%84%B0-%EC%96%B8%EC%96%B4%EC%9D%B8%EA%B0%80">https://velog.io/@gusdnr814/Javascript는-인터프리터-언어인가</a></p>
<p>참고자료: <a href="https://babeljs.io/docs/en/">https://babeljs.io/docs/en/</a></p>
<p>참고자료: ‘The Birth of Node: Where Did it Come From? Creator Ryan Dahl Shares the History’ (<a href="https://web.archive.org/web/20141018133031/http://devopsangle.com/2013/04/01/the-birth-of-node-where-did-it-come-from-creator-ryan-dahl-shares-the-history/">https://web.archive.org/web/20141018133031/http://devopsangle.com/2013/04/01/the-birth-of-node-where-did-it-come-from-creator-ryan-dahl-shares-the-history/</a>)</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[S3로 간단 배포해보기!]]></title>
            <link>https://velog.io/@kimjumpsun_code/S3%EB%A1%9C-%EA%B0%84%EB%8B%A8-%EB%B0%B0%ED%8F%AC%ED%95%B4%EB%B3%B4%EA%B8%B0</link>
            <guid>https://velog.io/@kimjumpsun_code/S3%EB%A1%9C-%EA%B0%84%EB%8B%A8-%EB%B0%B0%ED%8F%AC%ED%95%B4%EB%B3%B4%EA%B8%B0</guid>
            <pubDate>Tue, 01 Feb 2022 13:58:00 GMT</pubDate>
            <description><![CDATA[<h3 id="짱돌팀의-왕대장이-알려준-s3로-초간단-배포">짱돌팀의 왕대장이 알려준 S3로 초간단 배포!</h3>
<hr>
<p><img src="https://images.velog.io/images/kimjumpsun_code/post/bca5b466-42b7-4c76-b391-4565928d0649/%E1%84%87%E1%85%A2%E1%84%91%E1%85%A9%E1%84%80%E1%85%AA%E1%86%AB%E1%84%85%E1%85%A7%E1%86%AB.png" alt=""></p>
<p><strong>1) 버킷 만들기
  : 위 사진과 같이 엑세스 차단 해제, 현재 설정은 체크
**
**2) 배포할 파일 올리기</strong></p>
<p>*<em>3) 권한 → 버킷 정책에 아래 코드로 변경 *</em></p>
<pre><code class="language-jsx">{
    &quot;Version&quot;: &quot;2012-10-17&quot;,
    &quot;Statement&quot;: [
        {
            &quot;Sid&quot;: &quot;PublicReadGetObject&quot;,
            &quot;Effect&quot;: &quot;Allow&quot;,
            &quot;Principal&quot;: &quot;*&quot;,
            &quot;Action&quot;: &quot;s3:GetObject&quot;,
            &quot;Resource&quot;: &quot;arn:aws:s3:::mygradient/*&quot;   //bucket 네임
        }
    ]
}</code></pre>
<p>*<em>4) 정적 웹 사이트 호스팅 tab에서 변경 *</em></p>
<p>a. 비활성화 → 활성화로 변경</p>
<p>b. 인텍스 문서 </p>
<p><code>index.html</code> 파일 업로드</p>
<p>오류문서가 있다면 오류문서 선택 (선택사항)</p>
<p>*<em>5) 속성 하단에 생성된 링크 확인 → 배포 완료 *</em></p>
<ul>
<li><p>이렇게 배포는 손쉽게 끝나지만, <code>http</code> 로 배포되었기 때문에 보안상 문제가 발생할 가능성이 있음. </p>
</li>
<li><p><code>cloud front</code> 를 통해  CDN을 연결해서 배포 하면 https 로 통신이 가능하다. </p>
</li>
<li><p>주소의 이름 변경이 가능하다. </p>
</li>
</ul>
<h2 id="cloud-front로-배포하기">cloud front로 배포하기</h2>
<ol>
<li><p>cloudfront 검색해서 서비스 클릭</p>
</li>
<li><p>배포생성 → 원본 도메인에서 선택 (s3로 배포한 도메인 선택) </p>
</li>
<li><p>s3 버킷 엑세스 정보 → 예, 
OAI 선택 → 새 OAI 생성 </p>
</li>
<li><p>예, 버킷 정책 업데이트 </p>
</li>
<li><p>뷰어 프로토콜 정책 → Redirect HTTP to HTTPS </p>
</li>
<li><p>배포생성 </p>
</li>
</ol>
<p>(배포되는데에는 시간이 소요됨.) </p>
<hr>
<h3 id="access-denied-문제-발생되면-해결법">access denied 문제 발생되면 해결법</h3>
<p>1) 버킷에서 
→ 권한 → 버킷 정책 편집 → 아래 사진의 principal을 기존 principal에 붙여넣고 아래의 정책은 삭제 → 변경사항 저장 </p>
<p><img src="https://images.velog.io/images/kimjumpsun_code/post/933f46f1-bb70-4980-a962-7f8ef94f8a6f/%E1%84%87%E1%85%A2%E1%84%91%E1%85%A9%20denied%E1%84%80%E1%85%AA%E1%86%AB%E1%84%85%E1%85%A7%E1%86%AB.png" alt=""></p>
<p>2) 일반 tab (cloudfront 배포 설정) → 기본값 루트객체 → index.html </p>
<p>⇒ https로 연결 가능 </p>
<p>참고 : <a href="https://techblog.woowahan.com/6217/">우아한형제들 기술블로그</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Hey, Dev! 페이지를 구현하다]]></title>
            <link>https://velog.io/@kimjumpsun_code/Hey-Dev-%ED%8E%98%EC%9D%B4%EC%A7%80%EB%A5%BC-%EA%B5%AC%ED%98%84%ED%95%98%EB%8B%A4</link>
            <guid>https://velog.io/@kimjumpsun_code/Hey-Dev-%ED%8E%98%EC%9D%B4%EC%A7%80%EB%A5%BC-%EA%B5%AC%ED%98%84%ED%95%98%EB%8B%A4</guid>
            <pubDate>Sat, 01 Jan 2022 04:55:33 GMT</pubDate>
            <description><![CDATA[<p>구현한 페이지는 개발자들에게 동기부여를 할 수 있는 영화를 추천하는 페이지이다. </p>
<p>JavaScript가 29줄 뿐이지만, 반응형으로 계산하는 방법을 익히느라 시간이 좀 걸렸다. </p>
<p>2가지 기능에 중점을 두고 구현해낸 결과물이다. </p>
<p><img src="https://images.velog.io/images/kimjumpsun_code/post/a479fb1a-fb29-4d47-94f8-ddec448a8a7e/hey,dev_arrow-min.gif" alt=""></p>
<p><img src="https://images.velog.io/images/kimjumpsun_code/post/8997623f-421a-430c-83bd-9e23be93b20e/hey,dev_page.gif" alt=""></p>
<h2 id="javascript-전체-코드">Javascript 전체 코드</h2>
<pre><code class="language-jsx">//arrow-button click 시 이동 기능

const arrows = document.querySelectorAll(&quot;.next-arrow&quot;);
const movieLists = document.querySelectorAll(&quot;.main-list&quot;);

arrows.forEach((arrow,i)=&gt;{
    const itemNumber = movieLists[i].querySelectorAll(&quot;img&quot;).length;
    let clickCounter = 0;
    arrow.addEventListener(&quot;click&quot;, ()=&gt; {
        const ratio = Math.floor(window.innerWidth / 270);
        clickCounter++;
        if(itemNumber - (3 + clickCounter) + (4 - ratio) &gt;= 0) {
            movieLists[i].style.transform = `translateX(${movieLists[i].computedStyleMap().get(&quot;transform&quot;)[0].x.value - 300}px)`;
        } else {
            movieLists[i].style.transform = &quot;translateX(0)&quot;;
            clickCounter = 0;
        }
    });

  // toggle click 시 Dark/Day mode로 변경 기능
const ball = document.querySelector(&quot;.toggle-ball&quot;);
const items = document.querySelectorAll(&quot;.container, .movie-list-title, .navbar-container,.profile-text-container,.menu-list-item,.sidebar,.left-menu-icon,.movie-list-title,.toggle&quot;);

ball.addEventListener(&quot;click&quot;, () =&gt; {
    items.forEach(item=&gt; {
        item.classList.toggle(&quot;active&quot;)
    })
    ball.classList.toggle(&quot;active&quot;)
})</code></pre>
<h2 id="주요-기능">주요 기능</h2>
<h2 id="1-화살표-click해서-movie-list를-왼쪽으로-넘기기-slide">1. 화살표 click해서 movie-list를 왼쪽으로 넘기기 (slide)</h2>
<ul>
<li>반응형으로 구현한 방법</li>
</ul>
<p><em><strong>1) img의 width 값인 270px 이므로 전체 너비를 나눈 값 중 가장 큰 값 반환하도록 선언</strong></em></p>
<pre><code class="language-jsx"> const ratio = Math.floor(window.innerWidth / 270); 
// 이미지가 1개만 나오는 size의 경우에는 ratio가 0이 되고 , 2개가 보여지는 size이면 값이 2가 되겠져. </code></pre>
<p><em>*<em>2) click counter가 증가할 때마다 남은 img 갯수가 줄어들도록 if 문 사용 
*</em></em>
_2-1. click을 할 때마다 남은 클릭 횟수가 줄어들고 X축으로 <code>-300px</code>만큼 (이미지 값인 270 + margin 30값) 이동한다. (ratio에 따라 클릭해야 하는 수가 변화됨) _</p>
<p><em>2-2. main-list 의 css transform 값이 0 으로 지정되어 있기 때문에, 0값에서 X축으로 -300px만큼 이동해준다.</em></p>
<pre><code class="language-jsx">// 총 7개의 intemNumber - (3 + 1click) + ( 4 - 0(width:270)) = 7
// 총 7개의 intemNumber - (3 + 2click) + ( 4 - 0(width:270)) = 6
// 총 7개의 intemNumber - (3 + 3click) + ( 4 - 0(width:270)) = 5 
. 
.
// 총 7개의 intemNumber - (3 + 1click) + ( 4 - 3(width:810)) = 4
// 총 7개의 intemNumber - (3 + 2click) + ( 4 - 3(width:810)) = 3
// 총 7개의 intemNumber - (3 + 3click) + ( 4 - 3(width:270)) = 2
// 총 7개의 intemNumber - (3 + 4click) + ( 4 - 3(width:270)) = 1 
// 총 7개의 intemNumber - (3 + 5click) + ( 4 - 3(width:270)) = 0
// 총 7개의 intemNumber - (3 + 6click) + ( 4 - 3(width:270)) = -1 
//  =&gt; else 로 이동

 if(itemNumber - (3 + clickCounter) + (4 - ratio) &gt;= 0) {
            movieLists[i].style.transform = `translateX(${movieLists[i].computedStyleMap().get(&quot;transform&quot;)[0].x.value - 300}px)`;
} //main-list 의 css transform 값이 0 으로 지정되어 있기 때문에, 0값에서 X축으로 -300px만큼 이동해준다.         </code></pre>
<h3 id="잠깐---computedstylemap-은-">잠깐. - <code>*computedStyleMap()</code> 은 ?*</h3>
<blockquote>
<p>The <strong><code>computedStyleMap()</code></strong> method of the <code>[Element](https://developer.mozilla.org/en-US/docs/Web/API/Element)</code> interface returns a <code>[StylePropertyMapReadOnly](https://developer.mozilla.org/en-US/docs/Web/API/StylePropertyMapReadOnly)</code> interface which provides a read-only representation of a CSS declaration block that is an alternative to <code>[CSSStyleDeclaration](https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration)</code></p>
</blockquote>
<p> <del>BUT. browser compatibility가 좋지는 않다 ~</del>
<img src="https://images.velog.io/images/kimjumpsun_code/post/f70e567c-e3c3-43ca-b4f6-66cb9568b995/Screen%20Shot%202022-01-01%20at%201.13.54%20PM.png" alt=""></p>
<p><img src="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/ccdf360c-78d4-4921-9d39-fff13d583a14/Screen_Shot_2022-01-01_at_1.13.54_PM.png" alt="Screen Shot 2022-01-01 at 1.13.54 PM.png"></p>
<p><strong>3) 이동할 값이 0보다 작은 값이 되면 init 위치로 돌아오고 <code>clickCounter</code> 값도 초기화를 해준다.</strong></p>
<pre><code class="language-jsx">else {
            movieLists[i].style.transform = &quot;translateX(0)&quot;;
            clickCounter = 0;
        }</code></pre>
<h2 id="2-toggle로-daynight-mode-변경-하는-방법--기본-dark-mode">2. toggle로 Day/Night mode 변경 하는 방법  (기본 Dark mode)</h2>
<p><strong>1) Day version으로 toggle 되었을 때, 변경하려는 속성을 CSS에 작성하고 <code>.active</code>를 준다</strong></p>
<pre><code class="language-css">.container.active {
    background-color: white;
}

.navbar-container.active {
    background-color: white; 
}

.menu-list-item.active {
    color: black;
}

.profile-text-container.active {
    color: black;
}
.sidebar.active {
    background-color: white;
}
.left-menu-icon.active {
    color: black;
}
.movie-list-title.active {
    color: black;
}

.toggle.active {
    background-color: black;
}
.toggle-ball.active {
    background-color: white;
    transform: translateX(-22px);
}</code></pre>
<p>*<em>2) toggle안의 ball을 click하면 <code>active</code> 속성을 불러온다. *</em></p>
<pre><code class="language-jsx">const ball = document.querySelector(&quot;.toggle-ball&quot;);
const items = document.querySelectorAll(&quot;.container, .movie-list-title, .navbar-container,.profile-text-container,.menu-list-item,.sidebar,.left-menu-icon,.movie-list-title,.toggle&quot;);

ball.addEventListener(&quot;click&quot;, () =&gt; {
    items.forEach(item=&gt; {
        item.classList.toggle(&quot;active&quot;)
    })
    ball.classList.toggle(&quot;active&quot;)
})</code></pre>
<h2 id="끝으로">끝으로.</h2>
<p>혼자서 영상을 보며 여차저차 따라 만든 첫번째 구현 페이지다. </p>
<p>자바스크립트를 문법으로만 보다가 실제 사용해보니 훨씬 이해가 잘 된다. 
중간 중간 console.log로 반환값이 무엇인지를 다 체크해봐야 에러가 났을 때 빠르게 수정할 수 있다. </p>
<p>갈길이 멀지만, 
또 새로운 페이지를 구현해보러 드디어 넘어간다! </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[2021년의 회고]]></title>
            <link>https://velog.io/@kimjumpsun_code/2021%EB%85%84%EC%9D%98-%ED%9A%8C%EA%B3%A0</link>
            <guid>https://velog.io/@kimjumpsun_code/2021%EB%85%84%EC%9D%98-%ED%9A%8C%EA%B3%A0</guid>
            <pubDate>Fri, 31 Dec 2021 16:46:13 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/kimjumpsun_code/post/db4ab141-cf0c-415e-b1d6-03194330883b/KakaoTalk_Photo_2021-12-31-21-02-28%20001.jpeg" alt=""> </p>
<p> 멋쟁이 사자처럼의 프론트엔드 스쿨에 합류한지 두 달.
 그리고 졸업을 한 달 남긴 이 시점에 
 공교롭게도 한 해가 넘어간다. </p>
<h4 id="한-해의-회고를-쓰지-아니할-수-없겠지">한 해의 회고를 쓰지 아니할 수 없겠지?</h4>
<p><br> </br></p>
<h2 id="어쩌다가-개발을-배우려는지">어쩌다가 개발을 배우려는지..?</h2>
<h3 id="우여곡절-끝에-선택한-일입니다">우여곡절 끝에 선택한 일입니다.</h3>
<p>지난 5년을 무려 한 회사를 다니며, 교육운영팀에서 근무했고 한 해를 HRD 전공으로 석사생활을 했고 동시에 한 해 동안 매장을 오픈해 운영했다. </p>
<p>이런 나의 발자취는 Human Resource Development 분야로의 전문성을 높이고 life-long learning 을 이끄는 tutor..? (쯤이 되고싶었나..)가 되기 위해 벌인 일들이었는데. </p>
<h4 id="졸지에-찾아온-covid-라는-천재지변의-직격탄을-맞았다">졸지에 찾아온 covid 라는 천재지변(?)의 직격탄을 맞았다.</h4>
<p>&#39;아. 내가 하는 일이 기업의 중요도에서 밀려나고 언젠가는 사라질 수 있겠구나.&#39; 
라는 위기의식을 느꼈지. 
(<del><em>물론 이런 위기의식에는 약간의 오바가 들어갔지만</em></del>) </p>
<p>앞으로 살아갈 날들을 걱정하던 끝에 들려온 마음 속 소리..
<img src="https://images.velog.io/images/kimjumpsun_code/post/a076328c-d6d0-48a1-8c63-6143b77e2edc/%E1%84%80%E1%85%B5%E1%84%89%E1%85%AE%E1%86%AF%E1%84%87%E1%85%A2%E1%84%8B%E1%85%AE%E1%86%AF%E1%84%80%E1%85%A5%E1%86%AF.png" alt=""><code>&lt;출처&gt; 대학내일</code></p>
<h4 id="배움에-끝이없는-기술을-배워야해">배움에 끝이없는 기술을 배워야해.</h4>
<h2 id="우아하게-나이들고-싶으니까">우아하게 나이들고 싶으니까.</h2>
<p>life-long learning 에 관심있던 내가 생각하는 <strong>&#39;우아하게 나이듦&#39;</strong>이란  </p>
<h4 id="_끊임없이-무언가를-배우고-습득하며-성장하는-인생을-사는-것이다-_">_끊임없이 무언가를 배우고 습득하며 성장하는 인생을 사는 것이다. _</h4>
<p>내가 구축한 스택들로 누군가를 변화시킬 수 있다면 더 없이 좋고. </p>
<p>*<em>하지만, 적지않은 나이. *</em></p>
<h3 id="그동안-다져온-이력의-판을-갈아-엎어야-하는-도전은-쉽지-않다">그동안 다져온 이력의 판을 갈아 엎어야 하는 도전은 쉽지 않다.</h3>
<p>IT의 &#39;I&#39; 도 몰랐으니까 .</p>
<p>처음 <code>Hello world</code>를 쳐보던 날, 
희열 보다는 경외심이 들었다. 복잡 미묘한...</p>
<blockquote>
<p>어 ? 이거 뭐지...? 이 글자 뒤에 어떤 세상이 펼쳐지는 거지..? 
앞으로 내가 갈 길은 굉장히.. 굉장히... 심오복잡하겠구나....</p>
</blockquote>
<p>직감했고. </p>
<p>상반기는 그렇게 본격적인 Front-end 공부를 하기 위해 기반을 다지는 시간으로 보냈다. </p>
<h4 id="혼자하는-개발공부는-분명히-벽에-부딪히게-된다">혼자하는 개발공부는 분명히 벽에 부딪히게 된다.</h4>
<h3 id="고독한-싸움-끝에-멋사를-만났다-운이-좋았다">고독한 싸움 끝에 멋사를 만났다. 운이 좋았다.</h3>
<p>끊임없이 블로그에 언급하고 있지만,
멋쟁이 사자처럼에 들어온 것은
좋은 개발자가 되기 위한 훌륭한 발판이 될 것 같다. </p>
<p>정말 많이 push해주고 다양한 platform을 끊임없이 지원해주며 낙오자가 없도록 이끌어준다. 
같이 배우는 동료들도 정말 좋은 사람들만 모아두었다.. </p>
<p><img src="https://images.velog.io/images/kimjumpsun_code/post/6f32c3a0-dfc0-4338-ba1f-f64bd2bded8a/KakaoTalk_Photo_2021-12-31-21-02-28%20007.jpeg" alt=""> <code>크리스마스 선물도 준다....</code></p>
<p>지금까지 HTML, CSS, JavaScript, node.js 까지 진도가 나갔고
이제겨우 마지막 한달만 남겨두었다.</p>
<p>배움에는 끝이 없고. 
이 과정이 끝나고도 해야할 일이 산더미. 
교육 종료일은 다가오고 
취업 걱정에 다들 잠 못 이루는 중이다. </p>
<h3 id="느리지만-정확하게-걷는-중입니다">느리지만 정확하게 걷는 중입니다.</h3>
<p>알아갈수록 &#39;경외심&#39;을 느끼는 분야가 얼마나 있을까?
알아갈수록 &#39;호기심&#39;으로 가득 채우게 만드는 분야가 얼마나 있을까? </p>
<p>천하태평 소리일지 모르겠지만,  </p>
<p>빨리 취업하고 싶다기 보다. 
*<em>사실, 올바른 방향으로 잘 가고 싶다. *</em></p>
<p>엄청난 코드를 짜는 사람이 되겠다는 다짐보다는
*<em>문제를 발견하고 해결할 수 있는 사람이 되려고 다짐한다. 
*</em>
<img src="https://images.velog.io/images/kimjumpsun_code/post/237d3060-fe0b-4e28-813e-4d9fffe185e5/KakaoTalk_Photo_2021-12-31-21-02-28%20004.jpeg" alt=""><img src="https://images.velog.io/images/kimjumpsun_code/post/f0c23172-69bc-4dc3-9010-5422bdf9be8c/KakaoTalk_Photo_2021-12-31-21-02-28%20005.jpeg" alt=""><img src="https://images.velog.io/images/kimjumpsun_code/post/c298ddc1-8e09-4399-a344-d0a342fa9e25/KakaoTalk_Photo_2021-12-31-21-02-28%20006.jpeg" alt=""></p>
<p>비지니스의 가치를 알고 그 가치를 창출해내는 문제해결자가 되기 위한 도구가 &#39;개발언어&#39;이지 않은가. </p>
<p>이 위대한 스택들을 이용해서</p>
<p><em><strong>&#39;어떻게 하면 문제를 해결해서 가치를 창출해 낼 수 있을까</strong></em>&#39; 에 대해 요리조리 다방면으로 살펴보는 중이다. </p>
<p>여튼. 그래서</p>
<h3 id="그냥-개발-분야가-좋은데요">그냥 개발 분야가 좋은데요.</h3>
<p>말그대로 개발이라는 분야가 좋다. 
open source 
평생 교육 
why에 대한 물음의 연속 
건설적인 팀 문화 
협업  </p>
<p>현업에서 함께 일할 생각을 하면 심장이 쿵쾅쿵쾅 뛴다.</p>
<p>*<em>10년 뒤가 기대되는 일을 만난다는 것은 행운이다.  *</em> </p>
<p>매일 신기해하고 두려워하면서 복잡미묘하게 keep going~한다. </p>
<h2 id="그래서-어떤-개발자가-되고-싶나-라고-묻는다면">그래서 어떤 개발자가 되고 싶나? 라고 묻는다면.</h2>
<h3 id="선한-영향력을-주는-개발자가-될-겁니다">선한 영향력을 주는 개발자가 될 겁니다.</h3>
<p>동료에게는 성장의 동력을 불어넣으며 함께 일하고 싶은 영향력을, 
회사에는 비즈니스의 가치를 알고 가치 실현을 위해 성장을 이끌어내는 영향력을,
사회에는 세상을 1도라도 바꾸는 영향력을 기필코 주고 싶다. </p>
<h3 id="2021년-격동의-한해를-기억하고">2021년 격동의 한해를 기억하고</h3>
<h2 id="2022년-더-많이-배우고-성장하자">2022년 더 많이 배우고 성장하자.</h2>
<h3 id="새로운-시작을-하는-모든-분들을-응원하며">새로운 시작을 하는 모든 분들을 응원하며..</h3>
<h3 id="이-글을-읽어버린-사람들은-새해-복-다-가져가십쇼">이 글을 읽어버린 사람들은 새해 복 다 가져가십쇼!</h3>
]]></description>
        </item>
        <item>
            <title><![CDATA[던지다! 나의 첫 번째 PR! (feat. Merry Christmas🎄)]]></title>
            <link>https://velog.io/@kimjumpsun_code/%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EB%A5%BC-%EC%A7%84%ED%96%89%ED%95%98%EB%A9%B0</link>
            <guid>https://velog.io/@kimjumpsun_code/%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EB%A5%BC-%EC%A7%84%ED%96%89%ED%95%98%EB%A9%B0</guid>
            <pubDate>Sat, 25 Dec 2021 13:47:23 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/kimjumpsun_code/post/5efb17ed-ebca-436f-b284-3092788b369e/prpr.png" alt=""></p>
<h1 id="my-first--pull-request-🙆">MY FIRST  <strong>P</strong>ull <strong>R</strong>equest! 🙆</h1>
<hr>
<h2 id="금주-진행한-사항">&lt;금주 진행한 사항&gt;</h2>
<ol>
<li><strong>협업을 위한 convention으로 추가된 파일</strong>(<code>.prettierrc</code>)을 <strong>pull</strong> 하고 </li>
<li>기능 구현을 완료한 파일을** Push** 했으나 </li>
<li>잘못 올라간 파일(jason파일이 포함되어버림)을 제거 하기위해 log를 열어 commit이전으로 돌아간다. <pre><code>% git log --oneline
% git reset --soft fc043a9[돌아가고자하는 단계의 log번호]
% git status</code></pre></li>
<li><strong>필요없는 file은 제거하고 source control을 통해 변경사항을 확인한다.</strong></li>
</ol>
<p><img src="https://images.velog.io/images/kimjumpsun_code/post/7599e83f-edb1-44fd-b3fd-c80a16b45ba9/72A90B13-BA24-4038-9E43-AC6F564C4C0D.jpeg" alt=""></p>
<ol start="5">
<li>다시 Push 하여 <strong>PR</strong>을 던진다. 
(** 이 때, branch 꼭 꼭 확인!) 
<img src="https://images.velog.io/images/kimjumpsun_code/post/08b6f645-d04e-453d-a64d-74cedaf173b3/EF359666-D2D6-4DA3-91C9-0C392A2BC023.jpeg" alt=""></li>
</ol>
<ol start="6">
<li><strong>merge 된 파일을 다시 pull 받는다.</strong> <pre><code>% git branch develop
% git checkout develop
Switched to branch &#39;develop&#39;
// 2 commits를 pull하라고 알려줌.//
Your branch is behind &#39;upstream/develop&#39; by 2 commits, and can be fast-forwarded.
(use &quot;git pull&quot; to update your local branch)
% git pull upstream develop</code></pre></li>
</ol>
<hr>
<h2 id="마주한-여러가지-문제들">마주한 여러가지 문제들..</h2>
<p>_1. git 사용이 익숙치 않다보니 main branch에 잘못 올리게 되면,  삭제했다가 다시 push를 하고 git graph가 지저분 해진다. _</p>
<p>_2. pull-push 과정에서 conflict문제가 발생한다. _</p>
<p>_3. 의도치 않게 (건드리지 않음) 자꾸만 file이 수정된다. 
때문에, commit되지 않은 변경사항을 두고 branch를 당겨오려고 하면 파일이 덮어쓰기 될 수 있다는 <del>에러</del>가 나온다. _</p>
<h2 id="문제들을-통해-알게-된-점">문제들을 통해 알게 된 점</h2>
<ol>
<li>git graph가 지저분해지지 않도록 <strong>push 전 체크할 사항 확인 후 push해야 한다.</strong> </li>
</ol>
<p><strong><em>a) 협업 convention 최종 확인</em> **
 : prettier 적용(<code>option + shift + f</code>) 과 공백없애기 / camel-case통일 / css 선언순서
*<em><em>b) 기능 구현 전에 new branch 생성하고 꼭 branch 확인!</em> *</em>
**<em>c) 사용하지 않는 file이 있는지 점검</em></strong></p>
<p><strong>2. **conflict가 발생했을 경우</strong> fork된 repo가 아닌 origin repo에서 command-line 수정을 통해서 해결할 수 있다. **</p>
<p><strong>3. prettier가 자동저장 되어 있어서 덮어쓰기 에러가 발생하였기 때문에 prettier 자동저장을 해제했다.</strong> </p>
<p>*<em>4. merge를 하며 발생하는 자잘한 수정 사항도 논리적 흐름에 따라 작업해야 함을 기억하자. *</em></p>
<hr>
<h2 id="이거-그러니까-결국에">이거.. 그러니까 결국에..</h2>
<h3 id="팀장이-힘든일이다">팀장이 힘든일이다.</h3>
<p>팀장을 제외하고 세 명이서 세 페이지를 하는데에도 이래저래 문제가 많이 발생한다. </p>
<p>후. 코드가 복잡해지고 길어졌을 때는 어떨까.. 잠시 생각에 잠기게 된다. 여간 복잡시럽겠다. </p>
<p>무튼, 이래저래 여러모로 힘들텐데... 
(똑같은 말을 3번씩 반복 🤣🤣🤣🤣 그건 우리가 미안 🍎)<br>잘 이끌어주는 사람이 있어서 든든하고 감사하고. </p>
<p>굉장히 열심히 이래저래 코드를 짜보고 질문하고 공부하는 팀원들이 있어서 감사하다.  </p>
<p>모두가 상냥하지만 개구지고 장난끼가 넘치지만 아주 진지하다. 아주 좋아..</p>
<h3 id="여튼">여튼.</h3>
<p> <strong>이 프로젝트가 끝나기 전에 팀에 도움이 되는 일을 하자! 도움이 되는 일!</strong></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[첫 번째 프로젝트를 들어가며.]]></title>
            <link>https://velog.io/@kimjumpsun_code/%EC%B2%AB-%EB%B2%88%EC%A7%B8-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EB%A5%BC-%EB%93%A4%EC%96%B4%EA%B0%80%EB%A9%B0</link>
            <guid>https://velog.io/@kimjumpsun_code/%EC%B2%AB-%EB%B2%88%EC%A7%B8-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EB%A5%BC-%EB%93%A4%EC%96%B4%EA%B0%80%EB%A9%B0</guid>
            <pubDate>Sat, 18 Dec 2021 14:26:42 GMT</pubDate>
            <description><![CDATA[<p>플젝 팀(<strong><em>팀명: 멋쟁이짱돌</em></strong>) 에서 color gradient <a href="https://uigradients.com/#PiggyPink">page</a>를 살짝 수정하며 clone하기로 결정. </p>
<h3 id="내가-맡은-part-⬇️">내가 맡은 part ⬇️</h3>
<p><img src="https://images.velog.io/images/kimjumpsun_code/post/71d9ec88-c410-4c2a-a8b2-ce2bfe581a27/2B07EF76-473D-4C9A-8134-428922DF152F.jpeg" alt=""></p>
<p>본격적인 협업에 들어가기에 앞서 git flow를 따라가기로 한다. </p>
<h3 id="대장님이-보내준-자료-미리-읽어보기-"><em>*<em>대장님이 보내준 자료 미리 읽어보기!! *</em></em></h3>
<hr>
<ul>
<li><a href="https://git-scm.com/book/ko/v2/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-%EB%8F%84%EC%9B%80%EB%A7%90-%EB%B3%B4%EA%B8%B0">Git 기초</a>에서 기본적인 git 에 대해 배우고</li>
</ul>
<ul>
<li><p><a href="https://hyeon9mak.github.io/git-branch-strategy/">깃 브랜치전략</a> 을 보면 왜 branch를 생성해야 하고 어떻게 운영해야하는지 알 수있다. </p>
</li>
<li><p>깃 커밋 <a href="https://velog.io/@shin6403/Git-git-%EC%BB%A4%EB%B0%8B-%EC%BB%A8%EB%B2%A4%EC%85%98-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0">컨벤션</a> (<a href="https://treasurebear.tistory.com/70">여기도참고</a>)을 미리 정해두면 좋다.</p>
</li>
<li><p>깃 브랜치 진행 [가이드]
(<a href="https://github.com/woowacourse/woowacourse-docs/tree/master/precourse">https://github.com/woowacourse/woowacourse-docs/tree/master/precourse</a>)</p>
</li>
</ul>
<p>➡️ <em>우테코 과제 진행 가이드인데 여기에 몇가지만 추가하여 프로젝트를 진행예정(중간에 IntelliJ내용은 스킵!)</em></p>
<ul>
<li>전체적인 <a href="https://gmlwjd9405.github.io/2017/10/28/how-to-collaborate-on-GitHub-2.html">순서도</a>를 확인하면 정리가 된다. </li>
</ul>
<h2 id="comfort-zone을-벗어나라">comfort zone을 벗어나라!</h2>
<p>GUI만 썼지, CLI는 처음이라....
광란의 파티였는데.. 
막상 사용하니 아주 편하고 멋진 기분이 든다! 
낯설지만 계속 사용해서 익숙해지면 엄청나게 편할 듯하다. </p>
<hr>
<h2 id="이제-pull-request를-먼저-던져보자">이제, Pull request를 먼저 던져보자!</h2>
<blockquote>
<ul>
<li><code>mac iterm 사용!</code> , <code>{}</code>안은 복사된 주소를 넣음!
_( 넷상에는 메시지 앞에 다 <code>$</code>를 사용하라고 되어있었는데, 필자의 경우 <code>$</code>를 작성하지 않아야 했다! ) _</li>
</ul>
</blockquote>
<p>*<em>1. 우선, iterm에서 나의 저장소를 clone한다. *</em>
<code>git clone {나의 저장소주소를 삽인}</code>
**
2. vs code를 open! **
<code>cd tabkey</code>를 누르면, 저장할 directory 선택
<code>code .</code></p>
<p>*<em>3. vs code에서 <code>ctrl</code> + ` 키를 눌러 terminal을 연다. *</em></p>
<p>*<em>4. 저장소가 잘 연결이 되었는지 확인 *</em>
<code>git remote -v</code></p>
<p>*<em>5. Base repository url 을 upstream에 추가한다. *</em>
<code>git remote add upstream {fork한 주소삽입}</code></p>
<p><strong>6. 연결이 잘 되었는지 확인</strong>
<code>git remote -v</code></p>
<p>*<em>7. <code>branch</code> 를 생성한다. *</em>
<code>git checkout -b [branch name]</code></p>
<p>*<em>8. 내가 작업한 파일은 추가하고 커밋 메시지를 작성한다. *</em></p>
<pre><code> git add [file name] 
 git commit -m &quot;[feat]: header 생성&quot; </code></pre><p><strong>9. <code>push</code> 진행</strong>
<code>git push -u origin [branch name]</code></p>
<p>*<em>10. git-hub에서 PR 요청을 보내고 merge가 완료되면, 
main으로 이동한 뒤에 branch를 삭제해주는 편이 프로젝트 관리하에 편하다고 한다! *</em></p>
<p>*<em>11. <code>main</code> branch에 여러 멤버들이 수정해서 올린 내용들을 내 local에 가져온다. *</em></p>
<p><code>git pull upstream main</code></p>
<ol start="12">
<li>** <code>main</code> branch 에서 새로운 branch를 따온다. **</li>
</ol>
<p>💡 새 기능을 개발하고 위의 <strong>7번~ 10번 과정</strong> 을 다시 반복한다. </p>
<hr>
<h2 id="git-널-정복하겠어">git 널 정복하겠어.</h2>
<p>CLI을 사용하다보면, 띄어쓰기 하나.dash 하나 때문에 이상한 곳으로 넘어가지거나 이상한 경로로 가버린다거나 해서 
통째로 다 지워버리고 싶은 강한 충동을 느낀다. 하하! </p>
<p>그 욕구를 누르고 차근차근 해나가다 보면 <code>우와!</code>하는 순간이 온다. </p>
<p>정말 재밌다. </p>
<h3 id="너무-친절하게-알려주는-왕대장님-짱-👍🏻">너무 친절하게 알려주는 왕대장님 짱! 👍🏻</h3>
<p>다음에 스터디를 진행하게 된다면 정말 본받고 싶은 팀장이다!! 최고최고 </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[👩🏻‍💻프론트엔드스쿨 모의고사]]></title>
            <link>https://velog.io/@kimjumpsun_code/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-%EB%AA%A8%EC%9D%98%EA%B3%A0%EC%82%AC</link>
            <guid>https://velog.io/@kimjumpsun_code/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8-%EB%AA%A8%EC%9D%98%EA%B3%A0%EC%82%AC</guid>
            <pubDate>Tue, 14 Dec 2021 00:10:11 GMT</pubDate>
            <description><![CDATA[<p>12월의 두 번째 월요일. </p>
<p>프로젝트 팀 편성을 위해 간단 모의고사를 진행했다. </p>
<p>20문항 중 꼭 기억해 두어야 할 8문항만 가져왔다! </p>
<p><img src="https://images.velog.io/images/kimjumpsun_code/post/c19de2e6-cc66-4ebe-9a61-ed9018f5d055/Screen%20Shot%202021-12-14%20at%208.43.34%20AM.png" alt=""></p>
<p><img src="https://images.velog.io/images/kimjumpsun_code/post/6ab19b05-5346-456c-8a10-27659e217f91/Screen%20Shot%202021-12-14%20at%208.43.45%20AM.png" alt=""></p>
<p><img src="https://images.velog.io/images/kimjumpsun_code/post/5377b34f-b9b9-4f2f-889b-4a67a06eae6f/Screen%20Shot%202021-12-14%20at%208.44.35%20AM.png" alt=""></p>
<p><img src="https://images.velog.io/images/kimjumpsun_code/post/bf82ef2f-b6dd-4464-bfbd-e51bf136bf90/Screen%20Shot%202021-12-14%20at%208.46.12%20AM.png" alt=""></p>
<p><img src="https://images.velog.io/images/kimjumpsun_code/post/204305c9-5a42-4c82-ae78-592d6d3c5502/Screen%20Shot%202021-12-14%20at%208.46.39%20AM.png" alt=""></p>
<p><img src="https://images.velog.io/images/kimjumpsun_code/post/6d4c3df9-ab42-421a-bf29-90aadce21485/Screen%20Shot%202021-12-14%20at%208.46.51%20AM.png" alt=""></p>
<hr>
<p>☑️ <code>forEach</code>는 순회만 한다. 배열을 만들고 싶으면 새로운 배열을 선언해야 함 
☑️ <code>find</code> 는 값을 하나라도 찾으면 멈추고 반환함 (ID찾을 때 사용하는 게 효율적)
☑️ <code>filter</code> <code>map</code>은 기존의 배열을 만지지 않고 요소를 순회한 후 새로운 배열을 return (❕<code>filter</code>는 조건문을 만족한 요소반환, <code>map</code>은 콜백함수 적용된 새 요소를 반환) </p>
<h2 id=""><img src="https://images.velog.io/images/kimjumpsun_code/post/61d45726-32ea-4ca2-9792-2de762acd2b2/Screen%20Shot%202021-12-14%20at%209.04.04%20AM.png" alt=""></h2>
<p><img src="https://images.velog.io/images/kimjumpsun_code/post/5fd56e26-4078-4281-8cc9-1ad5bade3879/Screen%20Shot%202021-12-14%20at%208.47.00%20AM.png" alt=""></p>
<p><img src="https://images.velog.io/images/kimjumpsun_code/post/58c62e2c-82b5-4cf1-8f0f-05379fe25e58/Screen%20Shot%202021-12-14%20at%208.47.16%20AM.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[언제더라.. 당차게 시작했던 그 날.]]></title>
            <link>https://velog.io/@kimjumpsun_code/%EC%96%B8%EC%A0%9C%EB%8D%94%EB%9D%BC..-%EB%8B%B9%EC%B0%A8%EA%B2%8C-%EC%8B%9C%EC%9E%91%ED%96%88%EB%8D%98-%EA%B7%B8-%EB%82%A0</link>
            <guid>https://velog.io/@kimjumpsun_code/%EC%96%B8%EC%A0%9C%EB%8D%94%EB%9D%BC..-%EB%8B%B9%EC%B0%A8%EA%B2%8C-%EC%8B%9C%EC%9E%91%ED%96%88%EB%8D%98-%EA%B7%B8-%EB%82%A0</guid>
            <pubDate>Mon, 13 Dec 2021 13:57:47 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/kimjumpsun_code/post/73100d4c-9ec6-476e-9ee9-63e444d92c5e/30:60:90%20plan.jpeg" alt=""></p>
<h2 id="프론트엔드-스쿨에-들어와-수학을-시작한지-두-달이-되어간다">프론트엔드 스쿨에 들어와 수학을 시작한지 두 달이 되어간다.</h2>
<p>우연히 데스크탑에서 발견한 30/60/90 plan을 보고 만감이 교차했다.
개강 첫 날 오리엔테이션에서 계획했던 계획표인데... 
지금 나는 무엇을 이루었나. </p>
<p>생각보다 나의 체력은 저질이었지만 생각보다 나의 엉덩이는 무거웠으며, 
생각보다 Learning curve 변곡점이 더디지만 생각보다 제법 잘 버티고 있다. </p>
<h2 id="남은-한달">남은 한달.</h2>
<h3 id="어떻게-보내야-할까">어떻게 보내야 할까?</h3>
<p>다음달 부터 팀 프로젝트가 이루어지는 데, 
그것과 별개로 프로젝트 팀을 새로 꾸린 곳에 합류하게 되었다. 
행여나 팀원에게 피해를 주게 될까봐 누차 미루고 미뤘다.  </p>
<p>삐까뻔쩍 세차만 하면서 </p>
<h3 id="날-좋은-날-나가야지-더-화창한-날-더더-화창한-날">&#39;날 좋은 날 나가야지.. 더 화창한 날.. 더더 화창한 날&#39;</h3>
<p>생각만 하고 고민만 했다. </p>
<p>이러다간
엑셀 한번 못 밟아 보고 중고시장에 나가게 될까봐 굳은 결심을 했다. </p>
<h3 id="나는-늘-이렇게">나는 늘 이렇게</h3>
<h3 id="결심-하는데에-오랜-시간이-걸린다">결심 하는데에 오랜 시간이 걸린다.</h3>
<p>뭐 대단한 일을 한다고 
다양한 경우의 수를 생각하고 
실패했을 때를 대비하고 
성공 했을 때의 방향을 정하고 
아주 세심하게 고려한다. </p>
<p>무언가를 배우는 일에도 
시작점에 훨씬 오래 서 있는다. 
목차를 이리보고 저리보고 한참을 들여다 본다. 
저자의 글도 어찌나 오래보는지.. </p>
<p>전하고자 하는 의도와 목표가 분명해지고 나서야 본론이 이해가 된다. </p>
<p>본론에 들어가서부터는 
누구보다 앞서 나간다는 나를 믿는다.</p>
<p>결심을 하느라
과정의 반이나 지나버렸지만, 
과정의 반이나 남았다! </p>
<p>이제, 
결심은 끝난 것 같다. </p>
<h2 id="나의-개발-세상의-본론으로-들어가자">나의 개발 세상의 본론으로 들어가자!</h2>
<p>며칠 전,
누군가의 GitHub에서 
멋진 글을 보았다. </p>
<p>.
.
이 글을 가슴에 묻고 
프로젝트를 시작하려 한다.  </p>
<blockquote>
<h2 id="나에게-나무를-자를-여섯-시간을-준다면-나는-먼저-네-시간을-도끼를-날카롭게-하는-데에-쓰겠다">나에게 나무를 자를 여섯 시간을 준다면, 나는 먼저 네 시간을 도끼를 날카롭게 하는 데에 쓰겠다.</h2>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[멋사_프론트엔드스쿨_TIL_6주차 2Day]]></title>
            <link>https://velog.io/@kimjumpsun_code/%EB%A9%8B%EC%82%AC%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8TIL6%EC%A3%BC%EC%B0%A8-2Day</link>
            <guid>https://velog.io/@kimjumpsun_code/%EB%A9%8B%EC%82%AC%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%8A%A4%EC%BF%A8TIL6%EC%A3%BC%EC%B0%A8-2Day</guid>
            <pubDate>Tue, 07 Dec 2021 07:27:00 GMT</pubDate>
            <description><![CDATA[<h1 id="결국-나는-손코딩을-하게-되었다">결국 나는 손코딩을 하게 되었다.</h1>
<p><img src="https://images.velog.io/images/kimjumpsun_code/post/967c3508-c61c-47de-b7e1-cb29cc3868cf/%E1%84%81%E1%85%A1%E1%86%B7%E1%84%8C%E1%85%B5....jpeg" alt="">
역시 깜지가 최고야! 손코딩의 날</p>
<hr>
<h2 id="이모저모-자주-사용한-함수">이모저모 자주 사용한 함수</h2>
<ul>
<li>_반복 _</li>
</ul>
<pre><code class="language-javascript">let len = &#39;hi&#39;

len.repeat(2)
&#39;hihi&#39;

Array.from(&#39;a&#39;.repeat(10))
(10) [&#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;]

Array.from(len.repeat(10))
(20) [&#39;h&#39;, &#39;i&#39;, &#39;h&#39;, &#39;i&#39;, &#39;h&#39;, &#39;i&#39;, &#39;h&#39;, &#39;i&#39;, &#39;h&#39;, &#39;i&#39;, &#39;h&#39;, &#39;i&#39;, &#39;h&#39;, &#39;i&#39;, &#39;h&#39;, &#39;i&#39;, &#39;h&#39;, &#39;i&#39;, &#39;h&#39;, &#39;i&#39;]</code></pre>
<ul>
<li><em>Array를 생성하고 채워넣기</em> 
⚠️ 여기서 fill은 단지 array가 비어 있어서 아무 값으로 채워주기 위해서 쓴 것! </li>
</ul>
<pre><code class="language-javascript">let a = Array(10)

//Array 100개 생성하기
Array(100).fill(0)
(100) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

//10개 배열에 &#39;abc&#39;값 채우기 
Array(10).fill(&#39;abc&#39;)
(10) [&#39;abc&#39;, &#39;abc&#39;, &#39;abc&#39;, &#39;abc&#39;, &#39;abc&#39;, &#39;abc&#39;, &#39;abc&#39;, &#39;abc&#39;, &#39;abc&#39;, &#39;abc&#39;]

// 0부터 순서대로
Array(100).fill(0).map((value,index)=&gt;value + index)
(100) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

// 1부터 제곱값 넣어주기
Array(100).fill(0).map((value,index)=&gt; (index+1)**2)
&lt; (100) [1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961, 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600, 1681, 1764, 1849, 1936, 2025, 2116, 2209, 2304, 2401, 2500, 2601, 2704, 2809, 2916, 3025, 3136, 3249, 3364, 3481, 3600, 3721, 3844, 3969, 4096, 4225, 4356, 4489, 4624, 4761, 4900, 5041, 5184, 5329, 5476, 5625, 5776, 5929, 6084, 6241, 6400, 6561, 6724, 6889, 7056, 7225, 7396, 7569, 7744, 7921, 8100, 8281, 8464, 8649, 8836, 9025, 9216, 9409, 9604, 9801, 10000]

</code></pre>
<ul>
<li><em>문자열 분리하기</em></li>
</ul>
<pre><code class="language-javascript">//split을 이용해서 문자 추출

let b = &#39;weniv FE HR.Maeng&#39;

b.split(&#39;&#39;)
(17) [&#39;w&#39;, &#39;e&#39;, &#39;n&#39;, &#39;i&#39;, &#39;v&#39;, &#39; &#39;, &#39;F&#39;, &#39;E&#39;, &#39; &#39;, &#39;H&#39;, &#39;R&#39;, &#39;.&#39;, &#39;M&#39;, &#39;a&#39;, &#39;e&#39;, &#39;n&#39;, &#39;g&#39;]

//공백 =&gt; 공백 기준
b.split(&#39; &#39;) 
(3) [&#39;weniv&#39;, &#39;FE&#39;, &#39;HR.Maeng&#39;]

//.을 기준으로 분리
b.split(&#39;.&#39;) 
(2) [&#39;weniv FE HR&#39;, &#39;Maeng&#39;]

//&#39;12367&#39; 문자열을 split으로 쪼갠 뒤 각 값을 합산하는 방법
let sum = 0
&#39;12367&#39;.split(&#39;&#39;).map(value =&gt; parseInt(value)).forEach(value =&gt; sum += value)

//map은 value에 값을 넣어서 반영하지만, forEach는 원본에 반영도 안하고 반환도 안함 
//map: 콜백함수의 반환값으로 이루어진 배열을 반환 (원본 배열은 유지)
//forEach: 아무것도 반환하지 않고 콜백함수만 실행
&#39;12367&#39;.split(&#39;&#39;).map(value=&gt;value+value) 
&lt; [&#39;11&#39;, &#39;22&#39;, &#39;33&#39;, &#39;66&#39;, &#39;77&#39;]
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[지지위지지, 부지위부지, 시지야 (知之爲知之, 不知爲不知, 是知也)]]></title>
            <link>https://velog.io/@kimjumpsun_code/%EC%A7%80%EC%A7%80%EC%9C%84%EC%A7%80%EC%A7%80-%EB%B6%80%EC%A7%80%EC%9C%84%EB%B6%80%EC%A7%80-%EC%8B%9C%EC%A7%80%EC%95%BC-%E7%9F%A5%E4%B9%8B%E7%88%B2%E7%9F%A5%E4%B9%8B-%E7%9F%A5%E7%88%B2%E7%9F%A5-%E6%98%AF%E7%9F%A5%E4%B9%9F</link>
            <guid>https://velog.io/@kimjumpsun_code/%EC%A7%80%EC%A7%80%EC%9C%84%EC%A7%80%EC%A7%80-%EB%B6%80%EC%A7%80%EC%9C%84%EB%B6%80%EC%A7%80-%EC%8B%9C%EC%A7%80%EC%95%BC-%E7%9F%A5%E4%B9%8B%E7%88%B2%E7%9F%A5%E4%B9%8B-%E7%9F%A5%E7%88%B2%E7%9F%A5-%E6%98%AF%E7%9F%A5%E4%B9%9F</guid>
            <pubDate>Sat, 04 Dec 2021 14:44:02 GMT</pubDate>
            <description><![CDATA[<hr>
<h2 id="아는-것을-안다고-하고">아는 것을 안다고 하고</h2>
<h2 id="모르는-것을-모른다고-하는-것">모르는 것을 모른다고 하는 것.</h2>
<h1 id="이것이-아는것이요">이것이 아는것이요.</h1>
<blockquote>
<p>&quot;Metacognition&quot; </p>
</blockquote>
<pre><code>초인지</code></pre><hr>
<p>누구나 이번 코딩 생은 처음이고
자바스크립트는 내 발길이 닿은 적 없는 오지이지요.</p>
<p><del><em>⚠️아. 미쳐가는 것은 아니구요..</em></del>⚠️</p>
<p>무엇을 모르는 지를 아는것이 중요하다는 깨달음을 얻고
선로를 우회하게 된 5주차 였다. </p>
<p>중요한 개념을 건너뛰고 쫓아가다 보니 
궁금증은 늘어가고 
코드는 제자리 걸음을 하게된다. </p>
<p>본디 10일만에 만들어진 언어라고 하니 
혼란스럽기 짝이 없고 
찍먹했던 파이썬과 뒤죽박죽이 되며, 
머릿속은 비빔밥 짬뽕죽이 되었다. </p>
<p>이번 한주간 나만큼 브랜던 아이크를 미워한 사람이 있을까 싶다. 하하;</p>
<p>하여!</p>
<h3 id="무엇을-아는지">무엇을 아는지</h3>
<h3 id="무엇을-모르는지">무엇을 모르는지</h3>
<h3 id="무엇을-더-알아야-하는지">무엇을 더 알아야 하는지</h3>
<p>분류를 해 보았다. </p>
<pre><code>_넌 아는게 대체 뭐니?_</code></pre><table>
<thead>
<tr>
<th>무엇을 아는지</th>
<th>아는 것만 같은 기분이 드는 것은 무엇인지</th>
<th>무엇을 모르는지</th>
<th>무엇을 더 알아야 하는지</th>
</tr>
</thead>
<tbody><tr>
<td>없다.</td>
<td>(의외로) closer / scope 개념</td>
<td>반복문</td>
<td>Function</td>
</tr>
<tr>
<td>정말 없다.</td>
<td>math.</td>
<td>(유독) for</td>
<td>조건문</td>
</tr>
<tr>
<td>슬프게도 진짜 없다.</td>
<td>DOM</td>
<td>forEach</td>
<td>반복문</td>
</tr>
</tbody></table>
<p>분류하고 보니... </p>
<p>보다시피 아는 게 없네.
알았으니 그래도 최소한 &#39;인지&#39; 상태는 되었다. 기쁘다!. 👾 하하하! </p>
<p>그나저나....</p>
<h2 id="나에게-반복문-울렁증이-있다는-것을-알고야-말았다">나에게 <del><em>반복문 울렁증</em></del>이 있다는 것을 알고야 말았다.</h2>
<p>반복문만 보면 &#39;<strong><em>하얀것은 종이요 까만 것은 코드다</em></strong>&#39;라고 멍-하고 있습디다..</p>
<p>PTSD를 극복해 나가는 것이 -
다음주의 새로운 목표인데,
어떻게 극복하는 게 좋을까? </p>
<p>해답을 찾아서 돌아와야지.</p>
]]></description>
        </item>
    </channel>
</rss>