<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>siho-ily.log</title>
        <link>https://velog.io/</link>
        <description>Siho-ily</description>
        <lastBuildDate>Sun, 21 Dec 2025 02:28:29 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>siho-ily.log</title>
            <url>https://velog.velcdn.com/images/siho-ily/profile/e940ccb1-e9e3-462c-8513-544d186757bc/image.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. siho-ily.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/siho-ily" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[개발자 로드맵]]></title>
            <link>https://velog.io/@siho-ily/%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%A1%9C%EB%93%9C%EB%A7%B5</link>
            <guid>https://velog.io/@siho-ily/%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%A1%9C%EB%93%9C%EB%A7%B5</guid>
            <pubDate>Sun, 21 Dec 2025 02:28:29 GMT</pubDate>
            <description><![CDATA[<p>공부를 하다보면 내가 공부하고 있는 순서가 맞는지 궁금할 때가 있다.
공부에 순서를 두는 편은 아니지만 앞으로 무엇을 공부해야 하는지 참고하고 싶을 때가 있다.
<a href="https://velog.io/@siho-ily/%EA%B5%AC%EB%A6%84%ED%86%A4-%EB%94%A5%EB%8B%A4%EC%9D%B4%EB%B8%8C-%EB%B0%B1%EC%97%94%EB%93%9C-10%EA%B8%B0-%EB%B0%B1%EC%97%94%EB%93%9C-%ED%95%A9%EA%B2%A9-%ED%9B%84%EA%B8%B0">구름</a>에서 사전 학습로드를 제공해줬는데, 그 중에 개발자 로드맵이 있었다.
<a href="https://roadmap.sh/">개발자 roadmap</a>에 들어가면 여러 형태의 개발자들에 대한 로드맵을 볼 수 있다.
<span style='color: lightgray'>각 요소를 누르면 상세 정보도 나온다!</span></p>
<p>또한 다른 사이트도 있었는데, <a href="https://www.geeksforgeeks.org/websites-apps/backend-developer-roadmap/">여기(백엔드)</a>는 눈에 잘 들어오는 레이아웃이라서 보기에는 편했다.</p>
<p>컴공 + 독학으로 어느정도는 다 이해할 수 있지 않을까 했는데, 중간중간 모르는 게 나오니 내 지식의 공백을 시각적으로 찾을 수 있어서 유용한 것 같다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[퍼셉트론 2]]></title>
            <link>https://velog.io/@siho-ily/%ED%8D%BC%EC%85%89%ED%8A%B8%EB%A1%A0-2</link>
            <guid>https://velog.io/@siho-ily/%ED%8D%BC%EC%85%89%ED%8A%B8%EB%A1%A0-2</guid>
            <pubDate>Thu, 18 Dec 2025 08:49:25 GMT</pubDate>
            <description><![CDATA[<p>지난번엔 and,nand,or 게이트를 예시로 퍼셉트론의 개념에 대해 알아보았다.
하지만 기존 개념으로는 xor 게이트를 표현할 수 없다. 어째설까?</p>
<p>그것을 알아보기 전에, 먼저 이해를 돕기 위해서 and,or 게이트를 퍼셉으론으로 표현한 그래프를 보자.</p>
<h2 id="퍼셉트론-그래프-표현">퍼셉트론 그래프 표현</h2>
<h3 id="and-or-gate">AND, OR Gate</h3>
<table>
<thead>
<tr>
<th align="center">AND</th>
<th align="center">OR</th>
</tr>
</thead>
<tbody><tr>
<td align="center"><img src="https://velog.velcdn.com/images/siho-ily/post/ea602e03-ad33-49b6-91d2-5dd3a240cba9/image.png" alt="and gate"></td>
<td align="center"><img src="https://velog.velcdn.com/images/siho-ily/post/d0d4a97c-48bb-4c6a-b4e9-04f4006ccbb4/image.png" alt="or gate"></td>
</tr>
</tbody></table>
<p>그래프로 표현해보면 직선을 입력들([0,0], [0,1], [1,0], [1,1])을 나눈 영역을 출력으로 볼 수 있다.
(출력을 반대로하면 nand, nor 게이트가 된다.)</p>
<h3 id="xor-gate">XOR Gate</h3>
<p>그러면 xor은 어떻게 표현할 수 있을까?</p>
<table>
<thead>
<tr>
<th align="center">$x_1$</th>
<th align="center">$x_2$</th>
<th align="center">$y$</th>
</tr>
</thead>
<tbody><tr>
<td align="center">0</td>
<td align="center">0</td>
<td align="center">0</td>
</tr>
<tr>
<td align="center">0</td>
<td align="center">1</td>
<td align="center">1</td>
</tr>
<tr>
<td align="center">1</td>
<td align="center">0</td>
<td align="center">1</td>
</tr>
<tr>
<td align="center">1</td>
<td align="center">1</td>
<td align="center">0</td>
</tr>
</tbody></table>
<p>and,or과는 달리 단일 직선으로는 xor을 표현할 수 없다.
<img src="https://velog.velcdn.com/images/siho-ily/post/c6c66f8c-bffd-4136-8487-3b5fcd9731f8/image.png" alt="xor gate"></p>
<p>그럼 XOR은 어떻게 표현할 수 있을까?
아래의 두 게이트를 봐보자.</p>
<table>
<thead>
<tr>
<th align="center">NAND</th>
<th align="center">OR</th>
</tr>
</thead>
<tbody><tr>
<td align="center"><img src="https://velog.velcdn.com/images/siho-ily/post/e413dc3b-342c-4700-8730-b43308c518e4/image.png" alt="nand gate"></td>
<td align="center"><img src="https://velog.velcdn.com/images/siho-ily/post/d0d4a97c-48bb-4c6a-b4e9-04f4006ccbb4/image.png" alt="or gate"></td>
</tr>
<tr>
<td align="center">두 게이트를 잘 보면 (1,0),(0,1)에서 출력이 1로 곂친다.</td>
<td align="center"></td>
</tr>
<tr>
<td align="center">그럼 두 게이트의 출력에 대해서 다시 AND연산을 하면 XOR가 되지 않을까?</td>
<td align="center"></td>
</tr>
<tr>
<td align="center">실제로도 그렇다.</td>
<td align="center"></td>
</tr>
</tbody></table>
<table>
<thead>
<tr>
<th align="center">A</th>
<th align="center">B</th>
<th align="center">A NAND B</th>
<th align="center">A OR B</th>
<th align="center">(A NAND B) AND (A OR B) = A XOR B</th>
</tr>
</thead>
<tbody><tr>
<td align="center">0</td>
<td align="center">0</td>
<td align="center">1</td>
<td align="center">0</td>
<td align="center">0</td>
</tr>
<tr>
<td align="center">0</td>
<td align="center">1</td>
<td align="center">1</td>
<td align="center">1</td>
<td align="center">1</td>
</tr>
<tr>
<td align="center">1</td>
<td align="center">0</td>
<td align="center">1</td>
<td align="center">1</td>
<td align="center">1</td>
</tr>
<tr>
<td align="center">1</td>
<td align="center">1</td>
<td align="center">0</td>
<td align="center">1</td>
<td align="center">0</td>
</tr>
<tr>
<td align="center"><img src="blob:https://velog.io/10aa91c2-7185-4f93-b660-ec239e7ce7a7" alt="xor gate"></td>
<td align="center"></td>
<td align="center"></td>
<td align="center"></td>
<td align="center"></td>
</tr>
</tbody></table>
<p>NAND게이트와 OR게이트에 각각 A,B입력을 주고 나온 출력들을 AND게이트에 입력으로 넣어주면 XOR 게이트가 된다.
<img src="https://velog.velcdn.com/images/siho-ily/post/fa045d8b-b421-4b6e-8430-d3aad150d1ac/image.png" alt="xor gate graph"></p>
<h2 id="xor-게이트를-퍼셉트론으로-구현">XOR 게이트를 퍼셉트론으로 구현</h2>
<p>진리표와 그래프로 XOR를 표현하는 법을 알았으니 이번엔 퍼셉트론을 통해 XOR을 표현해보자.</p>
<p>우선 NAND와 OR의 연산 결과를 각각 $h_1$,$h_2$라고 해보자.
그리고 $h_1$,$h_2$의 AND연산 결과를 $y$라고 하면, 퍼셉트론은 아래와 같은 모양이 될 것이다.</p>
<p><img src="https://velog.velcdn.com/images/siho-ily/post/c2a7c8da-11a6-4196-bae2-b5bb7c655064/image.png" alt=""> | <img src="https://velog.velcdn.com/images/siho-ily/post/3927f0e5-e6b5-4df2-983f-41694ca956c7/image.png" alt="">
|-|-|
<span style='color:lightgray;'>(왼쪽과 오른쪽은 똑같다.)</span>
X는 입력, W는 가중치, h는 1단계 출력, y는 최종 출력값이다.</p>
<p>이제 이걸 바탕으로 코드로 만들어보자.</p>
<pre><code class="language-python">def AND(x1, x2):
    w, b = np.array([0.5, 0.5]), -0.7
    return 1 if np.sum(w * np.array([x1, x2])) + b &gt; 0 else 0

def NAND(x1, x2):
    w, b = np.array([-0.5, -0.5]), 0.7
    return 1 if np.sum(w * np.array([x1, x2])) + b &gt; 0 else 0

def OR(x1, x2):
    w, b = np.array([0.5, 0.5]), -0.2
    return 1 if np.sum(w * np.array([x1, x2])) + b &gt; 0 else 0

def XOR(x1, x2):
    s1 = NAND(x1, x2)
    s2 = OR(x1, x2)
    return AND(s1, s2)</code></pre>
<p><img src="https://velog.velcdn.com/images/siho-ily/post/f763a1f9-0b1a-4249-a72b-096be41489cf/image.png" alt="output">
퍼셉트론을 2단계에 걸처 사용하여, XOR 게이트까지 성공적으로 구현할 수 있게 되었다!</p>
<p>여기까지 잘 이해했다면 흔히 보이는 이런 이미지에 대한 부담감도 적어질 것이다.
<img src="https://velog.velcdn.com/images/siho-ily/post/756c29b5-26bf-491b-b3c5-53a3e781cab5/image.png" alt="MLP Example Image">
위 이미지는 입력이 5개이고 4개의 단계를 더 거쳐 4개의 출력이 나온다는 의미로 해석할 수 있다.
이렇게 여러 단계(층)로 중첩된 퍼셉트론을 다층 퍼셉트론(MLP: Multi Layer Perceptron)라고 부른다.</p>
<p>우리는 XOR 예제를 통해 MLP를 익혔다!
다음엔 이를 바탕으로 신경망에 대해서 익혀보자.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[퍼셉트론 1]]></title>
            <link>https://velog.io/@siho-ily/%ED%8D%BC%EC%85%89%ED%8A%B8%EB%A1%A0</link>
            <guid>https://velog.io/@siho-ily/%ED%8D%BC%EC%85%89%ED%8A%B8%EB%A1%A0</guid>
            <pubDate>Wed, 17 Dec 2025 20:01:16 GMT</pubDate>
            <description><![CDATA[<h2 id="퍼셉트론이란">#퍼셉트론이란</h2>
<p>프랭크 로젠블렛$^{Frank Rosenblatt}$이 1957년에 고안한 알고리즘이다.
다수의 신호를 입력으로 받아 하나의 신호를 출력한다.
출력 신호는 0 또는 1의 값을 가진다.</p>
<p>아래는 2개의 입력을 받는 퍼셉트론 예시이다.</p>
<p><img src="https://velog.velcdn.com/images/siho-ily/post/370f84f2-2f93-4e5c-8b59-2dc411c421a2/image.png" alt="2개 입력의 퍼셉트론"></p>
<p>x는 입력신호, y는 출력신호, w는 가중치이다.
그림의 원을 뉴런 혹은 노드라고 부른다.
입력 노드가 출력 노드로 보내질 때는 각각 고유한 가중치가 곱해져 합산된다.
이때 정해진 한계점을 넘어 설 때만 1을 출력한다.
이 지점(임곗값)을 $\theta$ 기호로 표현하면 다음 수식으로 나타낼 수 있다.</p>
<p>$$
y=
\begin{cases}
0, if (w_1x_1 + w_2x_2 \leq \theta)\
1, if (w_1x_1 + w_2x_2 \gt \theta)
\end{cases}
$$</p>
<p>퍼셉트론은 복수의 입력 신호 각각에 고유한 가중치를 부여하며, 각 신호가 결과에 주는 영향력을 조절하는 요소로 작용한다.</p>
<h2 id="기본적인-논리-게이트">#기본적인 논리 게이트</h2>
<h3 id="and-게이트">AND 게이트</h3>
<table>
<thead>
<tr>
<th align="center">$x_1$</th>
<th align="center">$x_2$</th>
<th align="center">$y$</th>
</tr>
</thead>
<tbody><tr>
<td align="center">0</td>
<td align="center">0</td>
<td align="center">0</td>
</tr>
<tr>
<td align="center">0</td>
<td align="center">1</td>
<td align="center">0</td>
</tr>
<tr>
<td align="center">1</td>
<td align="center">0</td>
<td align="center">0</td>
</tr>
<tr>
<td align="center">1</td>
<td align="center">1</td>
<td align="center">1</td>
</tr>
</tbody></table>
<p>$w_1x_1+w_2x_2\gt\theta$
모든 입력이 1일 때, $\theta$를 초과하도록 가중치를 설정한다.</p>
<p>ex.($w_1 = 1.0$, $w_2 = 1.0$, $\theta = 1.5$)</p>
<table>
<thead>
<tr>
<th align="center">$x_1$</th>
<th align="center">$x_2$</th>
<th align="center">$w_1x_1+w_2x_2$</th>
<th align="center">$w_1x_1+w_2x_2\gt\theta$</th>
<th align="center">$y$</th>
</tr>
</thead>
<tbody><tr>
<td align="center">0</td>
<td align="center">0</td>
<td align="center">0</td>
<td align="center">false</td>
<td align="center">0</td>
</tr>
<tr>
<td align="center">0</td>
<td align="center">1</td>
<td align="center">1</td>
<td align="center">false</td>
<td align="center">0</td>
</tr>
<tr>
<td align="center">1</td>
<td align="center">0</td>
<td align="center">1</td>
<td align="center">false</td>
<td align="center">0</td>
</tr>
<tr>
<td align="center">1</td>
<td align="center">1</td>
<td align="center">2</td>
<td align="center">true</td>
<td align="center">1</td>
</tr>
</tbody></table>
<h3 id="nand-게이트">NAND 게이트</h3>
<table>
<thead>
<tr>
<th align="center">$x_1$</th>
<th align="center">$x_2$</th>
<th align="center">$y$</th>
</tr>
</thead>
<tbody><tr>
<td align="center">0</td>
<td align="center">0</td>
<td align="center">1</td>
</tr>
<tr>
<td align="center">0</td>
<td align="center">1</td>
<td align="center">1</td>
</tr>
<tr>
<td align="center">1</td>
<td align="center">0</td>
<td align="center">1</td>
</tr>
<tr>
<td align="center">1</td>
<td align="center">1</td>
<td align="center">0</td>
</tr>
</tbody></table>
<p>모든 입력이 1일 때, $\theta$를 초과하지 않도록 가중치를 설정한다.
사실상 AND 게이트를 구현하는 모든 매개변수의 부호를 반전하면 NAND 게이트가 된다.</p>
<p>ex.($w_1 = -1.0$, $w_2 = -1.0$, $\theta = -1.5$)</p>
<table>
<thead>
<tr>
<th align="center">$x_1$</th>
<th align="center">$x_2$</th>
<th align="center">$w_1x_1+w_2x_2$</th>
<th align="center">$w_1x_1+w_2x_2\gt\theta$</th>
<th align="center">$y$</th>
</tr>
</thead>
<tbody><tr>
<td align="center">0</td>
<td align="center">0</td>
<td align="center">0</td>
<td align="center">true</td>
<td align="center">1</td>
</tr>
<tr>
<td align="center">0</td>
<td align="center">1</td>
<td align="center">-1</td>
<td align="center">true</td>
<td align="center">1</td>
</tr>
<tr>
<td align="center">1</td>
<td align="center">0</td>
<td align="center">-1</td>
<td align="center">true</td>
<td align="center">1</td>
</tr>
<tr>
<td align="center">1</td>
<td align="center">1</td>
<td align="center">-2</td>
<td align="center">false</td>
<td align="center">0</td>
</tr>
</tbody></table>
<h3 id="or-게이트">OR 게이트</h3>
<table>
<thead>
<tr>
<th align="center">$x_1$</th>
<th align="center">$x_2$</th>
<th align="center">$y$</th>
</tr>
</thead>
<tbody><tr>
<td align="center">0</td>
<td align="center">0</td>
<td align="center">0</td>
</tr>
<tr>
<td align="center">0</td>
<td align="center">1</td>
<td align="center">1</td>
</tr>
<tr>
<td align="center">1</td>
<td align="center">0</td>
<td align="center">1</td>
</tr>
<tr>
<td align="center">1</td>
<td align="center">1</td>
<td align="center">1</td>
</tr>
</tbody></table>
<p>입력 신호 중 하나 이상이 1일 때, $\theta$를 초과하도록 가중치를 설정한다.</p>
<p>ex.($w_1 = 1.0$, $w_2 = 1.0$, $\theta = 0.5$)</p>
<table>
<thead>
<tr>
<th align="center">$x_1$</th>
<th align="center">$x_2$</th>
<th align="center">$w_1x_1+w_2x_2$</th>
<th align="center">$w_1x_1+w_2x_2\gt\theta$</th>
<th align="center">$y$</th>
</tr>
</thead>
<tbody><tr>
<td align="center">0</td>
<td align="center">0</td>
<td align="center">0</td>
<td align="center">false</td>
<td align="center">0</td>
</tr>
<tr>
<td align="center">0</td>
<td align="center">1</td>
<td align="center">1</td>
<td align="center">true</td>
<td align="center">1</td>
</tr>
<tr>
<td align="center">1</td>
<td align="center">0</td>
<td align="center">1</td>
<td align="center">true</td>
<td align="center">1</td>
</tr>
<tr>
<td align="center">1</td>
<td align="center">1</td>
<td align="center">2</td>
<td align="center">true</td>
<td align="center">1</td>
</tr>
</tbody></table>
<h2 id="퍼셉트론-구현">#퍼셉트론 구현</h2>
<h3 id="and-게이트-구현">AND 게이트 구현</h3>
<pre><code class="language-python">def AND(x1, x2):
  w1, w2, theta = 0.5, 0.5, 0.7
  tmp = x1 * w1 + x2 * w2
  if tmp &lt;= theta:
    return 0
  elif tmp &gt; theta:
    return 1</code></pre>
<p><img src="https://velog.velcdn.com/images/siho-ily/post/abc2671c-32d2-41eb-bff9-7ea9c5012d61/image.png" alt="AND 게이트 퍼셉트론 구현"></p>
<h3 id="가중치와-편향-도입">가중치와 편향 도입</h3>
<p>앞서 구현한 AND게이트는 직관적이고 알기 쉬우나, 이후를 생각하여 다른 방식으로 수정해보자.
$\theta$를 좌변으로 이항하고, 기호 표기를 바꾸면 아래의 식으로 바뀐다.</p>
<p>$$
\begin{aligned}
y_1&amp;=
\begin{cases}
0, if (w_1x_1 + w_2x_2 \leq \theta)\
1, if (w_1x_1 + w_2x_2 \gt \theta)
\end{cases}\
y_2&amp;=
\begin{cases}
0, if (b + w_1x_1 + w_2x_2 \leq 0)\
1, if (b + w_1x_1 + w_2x_2 \gt 0)
\end{cases}
\end{aligned}
$$
원래는 신호와 가중치를 곱해서 모두 더한 값을 임곗값과 비교했다면, 지금은 편향으로 바꾸어 더한 다음 0과 비교하고 있다.
즉, 비교 기준점을 $\theta$에서 0으로 바꾸겠다는 의미다.</p>
<p>한번 코드를 만들어보자</p>
<pre><code class="language-python">import numpy as np
def AND(x1, x2):
  x = np.array([x1, x2])    # 입력
  w = np.array([0.5, 0.5])  # 가중치
  b = -0.7                  # 편향

  tmp = np.sum(x * w) + b    # 가중치 * 입력 + 편향
  if tmp &lt;= 0:
    return 0
  else:
    return 1</code></pre>
<p><img src="https://velog.velcdn.com/images/siho-ily/post/b9546e3e-3948-43a8-8d6e-1a0accb7e06d/image.png" alt="AND 게이트 퍼셉트론 편향 구현"></p>
<p>입력과 가중치를 곱해서 모두 합한 것에 편향을 더한 다음 0과 비교를 하는 식으로 수정되었다.</p>
<h2 id="한계">#한계</h2>
<p>그러나 지금까지의 퍼셉트론으로는 XOR 게이트를 구현하기에는 문제가 있다.</p>
<p>XOR 게이트는 배타적 논리합이라는 특징을 가지고 있다.
두 입력이 같다면 0, 다르다면 1을 출력한다.
이를 구현하기 위해서는 어떻게 가중치를 설정하면 될까?</p>
<table>
<thead>
<tr>
<th align="center">$x_1$</th>
<th align="center">$x_2$</th>
<th align="center">$y$</th>
</tr>
</thead>
<tbody><tr>
<td align="center">0</td>
<td align="center">0</td>
<td align="center">0</td>
</tr>
<tr>
<td align="center">0</td>
<td align="center">1</td>
<td align="center">1</td>
</tr>
<tr>
<td align="center">1</td>
<td align="center">0</td>
<td align="center">1</td>
</tr>
<tr>
<td align="center">1</td>
<td align="center">1</td>
<td align="center">0</td>
</tr>
</tbody></table>
<p>사실 지금까지 본 퍼셉트론으로는 XOR을 구현할 수 없다. 어째설까?</p>
<p>집중력을 위해 여기서 한번 쉬고 다음 글에서 이어서 학습해보자</p>
<h2 id="참고자료">참고자료</h2>
<p>저서: 밑바닥부터 시작하는 딥러닝 1
<a href="https://velog.io/@d2h10s/LaTex-Markdown-%EC%88%98%EC%8B%9D-%EC%9E%91%EC%84%B1%EB%B2%95">LaTeX Markdown</a>
<a href="https://velog.io/@sjinu/Latex-%EA%B8%B0%ED%98%B8-%EB%AA%A8%EC%9D%8C">LaTeX 기호 모음</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[npm, npx, yarn의 차이]]></title>
            <link>https://velog.io/@siho-ily/npm-npx-yarn%EC%9D%98-%EC%B0%A8%EC%9D%B4</link>
            <guid>https://velog.io/@siho-ily/npm-npx-yarn%EC%9D%98-%EC%B0%A8%EC%9D%B4</guid>
            <pubDate>Tue, 16 Dec 2025 14:25:40 GMT</pubDate>
            <description><![CDATA[<p>나는 패키지관리자로 npm을 사용하고 있었는데, npx는 무엇인지, yarn과는 무슨 차이가 있는지 궁금해져서 조사해보기로 했다.</p>
<h2 id="package-manager">Package Manager</h2>
<p>프로젝트에 필요한 외부 라이브러리(패키지)를 설치, 업데이트, 관리하는 도구이다.</p>
<h3 id="주요-역할">주요 역할</h3>
<ul>
<li>metadata 작성 및 관리</li>
<li>모든 dependencies 일괄 설치 또는 업데이트</li>
<li>dependencies 추가, 업데이트, 삭제</li>
<li>스크립트 실행</li>
<li>패키지 publish</li>
<li>보안 검사</li>
</ul>
<h2 id="npm">npm</h2>
<p>node.js의 패키기 관리자. <a href="https://www.npmjs.com/">npm 온라인 DB</a>에 패키지를 등록하면 npm명령어로 패키지를 설치할 수 있다.</p>
<h2 id="npx">npx</h2>
<p>패키지를 설치하지 않고도 실행할 수 있는 npm의 명령어다.
1회성으로 간편하게 실행하는 만큼 node_modules나 package.json에는 아무런 변화가 일어나지 않는다.
보일러 플레이트같은 변경사항이 잦은 패키지(ex. CRA)에 효과적이다.</p>
<h2 id="yarn">yarn</h2>
<p>2016년 페이스북에서 개발한 패키지 관리자로 npm의 성능, 보안적인 문제점을 개선하여 등장했다.
npm과 같은 javascript 패키지 매니저이지만 
yarn은 yarn.lock이나 package.json으로 부터 설치만 하며, yarn.lock은 모든 디바이스에 같은 패키지를 설치하는 것을 보장하기 때문에 버전의 차이로 인해 생기는 버그를 방지해줄 수 있다.</p>
<h2 id="무엇을-쓸까">무엇을 쓸까?</h2>
<p>지금까지는 npm을 많이 써왔고 익숙하기도 하다. 
최근에는 npm도 성능적인 부분은 yarn과 큰 차이가 안날 정도로 많이 개선되었다고 하니, 팀 상황에 맞추어 사용할 것 같다.
개인적으로는 yarn도 한번 사용해봐야겠다는 생각이 들었다. (무엇보다 로고가 귀엽다)</p>
<h2 id="출처">출처</h2>
<p><a href="https://youngmin.hashnode.dev/npm-yarn">https://youngmin.hashnode.dev/npm-yarn</a>
<a href="https://devocean.sk.com/blog/techBoardDetail.do?ID=166592&amp;boardType=techBlog">https://devocean.sk.com/blog/techBoardDetail.do?ID=166592&amp;boardType=techBlog</a>
<a href="https://blog.naver.com/kimbooshop/223467781306">https://blog.naver.com/kimbooshop/223467781306</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[구름톤 딥다이브 백엔드 10기] 백엔드 합격 후기]]></title>
            <link>https://velog.io/@siho-ily/%EA%B5%AC%EB%A6%84%ED%86%A4-%EB%94%A5%EB%8B%A4%EC%9D%B4%EB%B8%8C-%EB%B0%B1%EC%97%94%EB%93%9C-10%EA%B8%B0-%EB%B0%B1%EC%97%94%EB%93%9C-%ED%95%A9%EA%B2%A9-%ED%9B%84%EA%B8%B0</link>
            <guid>https://velog.io/@siho-ily/%EA%B5%AC%EB%A6%84%ED%86%A4-%EB%94%A5%EB%8B%A4%EC%9D%B4%EB%B8%8C-%EB%B0%B1%EC%97%94%EB%93%9C-10%EA%B8%B0-%EB%B0%B1%EC%97%94%EB%93%9C-%ED%95%A9%EA%B2%A9-%ED%9B%84%EA%B8%B0</guid>
            <pubDate>Thu, 11 Dec 2025 20:22:32 GMT</pubDate>
            <description><![CDATA[<p>한 곳에 블로그 정착을 못 하다보니 벨로그에서는 첫 글로 합격 후기부터 적게 됐다.</p>
<p>SW중심대학사업의 SW아카데미 프론트엔드 과정을 이수하고, 캡스톤과 개인 프로젝트를 진행하며 프론트엔드 개발자로써 실력을 키우고 있었다.
그러나 프론트엔드 기술만으로는 현재 취업 시장에서는 꽤 불리하다는 것을 알게되며 백엔드도 학습하여 다양한 분야에 대해 전문성있는 지식을 보유한 풀스택 개발자가 되어야겠다는 목표를 갖게 되었다.
이후 관련 자료를 찾아보다가 <a href="https://deepdive.goorm.io/">goorm DEEP DIVE</a>를 알게 되었고, 대학 과정과 병행할 수 있을 것이라는 생각이 들어 신청하였다.</p>
<p>풀스택이 아니라 백엔드과정을 신청하게 된 이유는, 이미 SW아카데미에서 프론트과정을 익히기도 했고, 각 페이지를 통해서 확인했을 때는 백엔드 과정이 보다 상세할 것으로 생각이 되어 백엔드 과정을 신청하게 되었다.
<span style="color:lightgray">(그래도 둘 다 해보고 싶다는 아쉬움은 남았다.)</span></p>
<p>그리고 운이 좋게도 합격 안내를 받았다.
<img src="https://velog.velcdn.com/images/siho-ily/post/f3954e7a-5268-44b4-ae3e-60975adbadd0/image.png" alt="합격 이메일 캡처"></p>
<hr>
<p>학교에서 배우는 교육과정은 이론 중심이고, 사실 현업에서는 프로젝트를 어떻게 진행하는가를 배울 기회는 거의 없다고 생각한다.
대학 캡스톤에서 리더 역할을 하며 팀 프로젝트를 경험하긴 했으나, 실무에 대한 부분은 많이 부족하다고 느꼈다.</p>
<p>딥다이브는 기업에서 주관하고 있으며 현업자의 조언을 받을 수 있고, 다양한 실전 프로젝트를 통해서 경험을 쌓을 수 있을거라 생각하였다.
특히 다른 과정의 다양한 수강생과 해커톤을 한다는 점이 끌렸던 것 같다.</p>
<p>11개월 야간 과정이지만 조금 피로하더라도 대학을 다니면서 수강하기에 좋을 것 같다는 점도 한 몫 했다.
(이미 SW아카데미로 늦은 시간까지 학습했던 경험이 있으니까... 어떻게든 버틸 수 있지 않을까 했다.)</p>
<hr>
<p>사실 합격이 안될 것을 염두하고 다른 계획도 세우고 있었으나, 생각보다 합격 메일이 빨리 나왔다.
합격을 했으니 이번에도 열심히 수강해보자.</p>
]]></description>
        </item>
    </channel>
</rss>