<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>민스씨의 일취일장</title>
    <link>https://ydmins.tistory.com/</link>
    <description>하루하루 민스씨가 성장합니다</description>
    <language>ko</language>
    <pubDate>Tue, 7 Apr 2026 13:45:03 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>읻민스</managingEditor>
    <image>
      <title>민스씨의 일취일장</title>
      <url>https://tistory1.daumcdn.net/tistory/5904013/attach/d93263ce313a47858d7a69bf7673b3cf</url>
      <link>https://ydmins.tistory.com</link>
    </image>
    <item>
      <title>Algorithm | 문제 풀이 복기</title>
      <link>https://ydmins.tistory.com/173</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;알고리즘 문제 풀이 후 복기하며 기록하는 페이지이다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;알고리즘 문제 풀이 복기&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9VCHz/dJMcabKlT2b/gcMFcw0MFfGzeGu1Ns3jkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9VCHz/dJMcabKlT2b/gcMFcw0MFfGzeGu1Ns3jkK/img.png&quot; data-alt=&quot;알고리즘 문제 풀이 복기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9VCHz/dJMcabKlT2b/gcMFcw0MFfGzeGu1Ns3jkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9VCHz%2FdJMcabKlT2b%2FgcMFcw0MFfGzeGu1Ns3jkK%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; alt=&quot;알고리즘 문제 풀이 복기 썸네일 이미지이다.&quot; loading=&quot;lazy&quot; width=&quot;900&quot; height=&quot;600&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;알고리즘 문제 풀이 복기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2026.03.23 - 백준 1065 | 한수&lt;/h4&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;주어진 수의 모든 자리수들간의 차이값이 일정한 수를 &quot;한수&quot;라고 한다고 한다. 문제의 핵심은 주어진 한 수의 모든 자리수들의 차이가 일정한지 묻는 문제이다.&lt;br /&gt;수를 문자열(String)으로 변환 후, 반복문을 이용해서 해결하였다.&amp;nbsp;수가 아무리 크더라도 자릿수가 크지 않기 때문에 String 혹은 Character 배열로 다루는 것이 메모리를 적게 사용한다고 판단하였다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;각 자릿수간의 관계를 판단할 때, String 또는 Character 배열로 다룰 수 있다.&lt;/blockquote&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2026.03.24 - 백준 14425 | 문자열 조합&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열 집합이 주어지고, 추가로 주어지는 문자들 중 문자열 집합에 포함되는 것들의 수를 계산하는 문제이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;핵심은 문자열 포함 여부를 판단할 때, 얼마나 빠르게 결정하는 것이다. 탐색의 시간복잡도를 O(1)로 줄이는 방법은 Hash를 이용하는 것이다. 그럼 사용할 수 있는 선택지는 HashMap 혹은 HashSet이 있는데. 이 경우에는 key, value로 관리할 2개의 값이 존재하는 게 아니므로, HashSet을 사용하는게 적절하다고 판단하였다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;HashMap vs. HashSet&lt;/blockquote&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2026.03.25 - 백준 1269 | 대칭 차집합&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공집합이 아닌 두 집합이 주어지고, 서로에 대한 차집합들의 원소의 개수의 합을 구하는 문제이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;집합이기 때문에 당연히 Set을 사용하려했고, 탐색을 해야 하기 때문에 HashSet을 사용했다. 원소의 개수는 20만개를 넘지 앟고, 원소의 값은 1억을 넘지 않는다. Hash를 사용했기 때문에 한 집합의 원소의 개수의 수는 의미가 없었고, 원소의 최대값이 1억이라는 점인데. Integer는 양수 21억까지는 문제없이 표현하니까 큰수로 다룰 필요는 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 문제에서 한 가지 고민했던것은, Set의 순회여부인데, 순서만 보장되지 않을 뿐 순회는 문제없이 사용할 수 있어 Set 사용에 문제가 없을 것이란걸 확인하였다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Set - 순회 가능하다.&lt;/blockquote&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2026.03.26 - 백준 11478 | 서로 다른 부분 문자열 계산 &amp;amp; 집합과 맵 Clear&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주어진 문자열에 대해서 부분 문자열 집합의 원소의 개수를 구하는 문제이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부분 문자열은 부르트포스 방식을 사용하였다. 이중 for문을 사용하였고, 첫번째는 부분 문자열의 사이즈, 두번재는 앞에서부터 끝까지 해당 사이즈로 substring 하였다. 특징은 두번째 for문에서 전체 문자열의 길이까지 포함해 줘야 했다. (0번째 인덱스 부터 시작한다면 보통은 문자열 길이보다 작은 경우까지 for문을 돌리는데, 이 경우 0번째 인덱스부터 시작했음에도 문자열 길이까지 연산을 해주어야 했다.) 문자열 집합은 HashSet으로 관리하였는데, Set은 추가할 요소가 포함되어있는지 판단하지 않아도 알아서 중복 추가하지 않는 장점이 있고, Hash를 사용해서 해당 조회의 시간 복잡도도 O(1)로 낮출 수 있다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Set을 이용하면 contains() 메서드 호출을 생략할 수 있는 경우가 있다.&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;집합과 맵 Clear&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;백준 사이트의 단계별 풀어보기를 따라가면서 문제를 풀고 있는데, 오늘 백준 11478 문제까지 해서 14단계인 &quot;집합과 맵&quot; 항목을 clear 했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1563&quot; data-origin-height=&quot;1069&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bf5IDc/dJMcagrmSZY/qR8CpYtChkwKkKDrL2pCnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bf5IDc/dJMcagrmSZY/qR8CpYtChkwKkKDrL2pCnk/img.png&quot; data-alt=&quot;백준 14단계 - 집합과 맵&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bf5IDc/dJMcagrmSZY/qR8CpYtChkwKkKDrL2pCnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbf5IDc%2FdJMcagrmSZY%2FqR8CpYtChkwKkKDrL2pCnk%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; alt=&quot;백준 14단계 집합과 맵 페이지 모습이다. 8개의 문제를 모두 완료했다고 표시되어 있다.&quot; loading=&quot;lazy&quot; width=&quot;1563&quot; height=&quot;1069&quot; data-origin-width=&quot;1563&quot; data-origin-height=&quot;1069&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;백준 14단계 - 집합과 맵&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 15단계 &quot;약수, 배수와 소수2&quot;이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1523&quot; data-origin-height=&quot;122&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/R7R1X/dJMcahcJ3KJ/bXksxmOXo3TxJZYCJUdVe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/R7R1X/dJMcahcJ3KJ/bXksxmOXo3TxJZYCJUdVe0/img.png&quot; data-alt=&quot;14단계와 15단계&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/R7R1X/dJMcahcJ3KJ/bXksxmOXo3TxJZYCJUdVe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FR7R1X%2FdJMcahcJ3KJ%2FbXksxmOXo3TxJZYCJUdVe0%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; alt=&quot;14단계와 15단계 이미지이다.&quot; loading=&quot;lazy&quot; width=&quot;1523&quot; height=&quot;122&quot; data-origin-width=&quot;1523&quot; data-origin-height=&quot;122&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;14단계와 15단계&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2026.03.27 - 백준 13241 | 최소공배수&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 수의 최소공배수를 구하는 단순한 문제였다. 문제가 친절하게 사용해야 할 데이터 타입까지 명시해주었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식이라고 볼 수 있는, GCD, LCM 로직을 활용해서 간단하게 해결하였다.&lt;/p&gt;
&lt;pre id=&quot;code_1774578648695&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int N, M

// GCD  
int a = N;
int b = M;

while (b != 0) {
    int temp = a % b;
    a = b;
    b = temp;
}

int GCD = a;

// LCM

int LCM = N / GCD * M;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2026.03.30 - 백준 1735 | 분수 합&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;h4 data-ke-size=&quot;size20&quot;&gt;2026.03.31 - 백준 2485 | 가로수&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;h4 data-ke-size=&quot;size20&quot;&gt;2026.04.01 - 백준 4134 | 다음소수&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주어진 각 수에 대해서, 같거나 큰 소수들 중 최소값을 출력하는 문제이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제에서의 핵심은 소수를 빠르게 찾는 것이다. 일단 유일한 짝수 소수인 2는 별도의 로직 없이 취한 뒤 이후 모든 짝수는 탐색대상에서 제외해준다. 이제 홀수들만 고려해 주면 되는데, 그 다음의 핵심은 반복문의 i*I 를 사용한 부분이다.&lt;/p&gt;
&lt;pre id=&quot;code_1775011857010&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;static boolean isPrime(long num) {
    if (num % 2 == 0) return false;

    for (long i=3; i*i &amp;lt;= num; i+=2) {
        if (num % i == 0) return false;
    }
    return true;
}&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;이렇게 사용한 이유는 num이 만약 합성수라면 &amp;radic;num 보다 작은 수를 반드시 약수로 갖게 되어 있다. 그런데 찾고 있는 소수는 가지고 있으면 안되기 때문에 root(num)까지로 탐색 범위를 좁힐 수 있고, 결과적으로 시간 복잡도를 O(&amp;radic;N)으로 낮출 수 있다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;소수는 2를 뺀 나머지 짝수는 제외한 홀수, 그중에서도 &amp;radic;num 까지의 수중에서 탐색해서 찾으면 된다.&lt;/blockquote&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2026.04.02 - 백준4948 | 베랑트랑 공준&amp;nbsp;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주어진 수 n에 대해서, n보다 크고 2n보다 작거나 같은 수 중에 존재하는 소수의 수를 출력하는 문제이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제는 각 케이스별로 소수를 구해야 할 경우에만 소수를 구하도록 하여 연산의 수를 최적화 하였고, 소수의 수는 구해놓은 소수 리스트를 한 번 순회하며 계싼하도록 구현하였다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2026.04.03 - 백준 17103 | 골드바흐 파티션&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;임의의 짝수는 두 개의 소수의 합으로 표현될 수 있다는 것이 골드바흐 파티션의 개념이다. 이 문제는 골드바흐 파티션을 이용해서, 주어진 짝수를 만드는 두 소수의 합의 조합의 수를 구하는 문제이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제는 이전의 두 문제를 응용해 소수를 구하는 것을 이용하면 간단하게 풀 수 있는 문제이다. 다만 제출시 시간 초과 문제가 있어 구한 소수를 조회할 때 순회를 하면 안되었다. 따라서 HashSet을 이용해서 조회를 O(N^2에서 O(1)의 시간복잡도로 낮추어 해결하였다.&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2026.04.06 - 백준13090 |&amp;nbsp; 창문닫기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1부터 주어진 수까지 순회하면서 각 배수의 창문이 열려있으면 닫고, 닫혀있으면 열어서 결국 몇 개의 창문이 열려 있는지 계산하는 문제이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에은 에라토스테네스의 체 방식의 순회를 생각했다. 그리고 추가로 발견한 단서는 열려있는 창문은 약수가 홀수인 점을 발견했다. 그래서 Brute Force로 순회하면서 약수가 홀수인 수들의 수를 세어 출력했다. 그런데 시간초과가 되었다. 그래서 한 단계 발전시킨 전략이 약수 중에 제곱수가 있는지를 판단해서 수를 세어 보았다. 그런데도 시간초과가 되었다. 그래서 좀 더 살펴보니, 제곱수가 없는 수들은 모두 닫히게 되기 때문에 제곱수가 있는 수들을 기점으로 가우스 정수방식을 적용해 보았다. 그렇게 했더니 수를 셀 필요 없이 단 한 번의 연산으로 열린 창문의 수를 찾을 수 있었다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;제곱수를 갖는 수의 약수는 홀수이다.&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;약수, 배수와 소수 2&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;15단계인 약수, 배수와 소수 2도 완료하였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1291&quot; data-origin-height=&quot;1165&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w3Jjb/dJMcaibODYh/qoO5ZDB0MM37cKbLuqfakk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w3Jjb/dJMcaibODYh/qoO5ZDB0MM37cKbLuqfakk/img.png&quot; data-alt=&quot;백준 15단계 - 약수, 배수와 소수 2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w3Jjb/dJMcaibODYh/qoO5ZDB0MM37cKbLuqfakk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw3Jjb%2FdJMcaibODYh%2FqoO5ZDB0MM37cKbLuqfakk%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; alt=&quot;백준 15단계 - 약수, 배수와 소수 2 문제를 모두 픈 모습이다.&quot; loading=&quot;lazy&quot; width=&quot;1291&quot; height=&quot;1165&quot; data-origin-width=&quot;1291&quot; data-origin-height=&quot;1165&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;백준 15단계 - 약수, 배수와 소수 2&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 16단계인 스택, 큐, 덱 1이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1255&quot; data-origin-height=&quot;122&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bg9o7w/dJMcagE4FaO/ER7pcJbkWpvgBQU7IsPw51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bg9o7w/dJMcagE4FaO/ER7pcJbkWpvgBQU7IsPw51/img.png&quot; data-alt=&quot;15단계와 16단계&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bg9o7w/dJMcagE4FaO/ER7pcJbkWpvgBQU7IsPw51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbg9o7w%2FdJMcagE4FaO%2FER7pcJbkWpvgBQU7IsPw51%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; alt=&quot;15단계와 16단계 리스트 모습이다.&quot; loading=&quot;lazy&quot; width=&quot;1255&quot; height=&quot;122&quot; data-origin-width=&quot;1255&quot; data-origin-height=&quot;122&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;15단계와 16단계&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2026.04.07 - 백준 28278 | 스택 2&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스택의 동작을 묻는 문제였다. 간단하게 스택을 사용해서 풀었고, 5개의 요청을 처리한 후 출력이 필요할 땐, System.out.println() 메서드를 사용했다. 하지만 이렇게 했을 때 시간초과가 발생했고, 출력을 BufferedWriter를 이용해서 마지막에 일괄출력하는 방식으로 변경해 주어야 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Data Structure &amp;amp; Algorithm</category>
      <category>문페풀이</category>
      <category>복기</category>
      <category>알고리즘</category>
      <author>읻민스</author>
      <guid isPermaLink="true">https://ydmins.tistory.com/173</guid>
      <comments>https://ydmins.tistory.com/173#entry173comment</comments>
      <pubDate>Mon, 23 Mar 2026 10:58:19 +0900</pubDate>
    </item>
    <item>
      <title>Claude Cheat Sheet | 클로드 명령어 모음</title>
      <link>https://ydmins.tistory.com/172</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;필요할 때 보기 위해 작성한는 클로드 명령어 모음글입니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Claude Cheat Sheet - 명령어 모음&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Claude-template-commands-Thumbnail.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;900&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSAIsw/dJMcahcd06U/IS1iktEcLKMokx00mRS3Q0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSAIsw/dJMcahcd06U/IS1iktEcLKMokx00mRS3Q0/img.png&quot; data-alt=&quot;Claude Cheat Sheet - 명령어&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSAIsw/dJMcahcd06U/IS1iktEcLKMokx00mRS3Q0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSAIsw%2FdJMcahcd06U%2FIS1iktEcLKMokx00mRS3Q0%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; alt=&quot;Claude Cheat Sheet - 명령어 썸네일 이미지이다.&quot; loading=&quot;lazy&quot; width=&quot;900&quot; height=&quot;900&quot; data-filename=&quot;Claude-template-commands-Thumbnail.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;900&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Claude Cheat Sheet - 명령어&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클로드 실행&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;$ claude&lt;/blockquote&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;/ul&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;$ /usage&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;작동 중인 Prompt 종료&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;esc 버튼&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;yes 누르지 않아도 수정하도록 세팅&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;claude --dangerously-skip-confirmation&lt;/blockquote&gt;</description>
      <author>읻민스</author>
      <guid isPermaLink="true">https://ydmins.tistory.com/172</guid>
      <comments>https://ydmins.tistory.com/172#entry172comment</comments>
      <pubDate>Sat, 7 Feb 2026 13:23:55 +0900</pubDate>
    </item>
    <item>
      <title>Raspberry Pi | 다른 WIFI 연결정보 추가하기</title>
      <link>https://ydmins.tistory.com/171</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Raspberry Pi 다른 WIFI 연결정보 추가하는 과정에 대한 글이다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Raspberry Pi 다른 WIFI 연결정보 추가하기&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;server-build-project-add-wifi-thumbnail.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biR6qM/dJMcajHigD6/JoHxfDCv1xkLS8SKFuBBZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biR6qM/dJMcajHigD6/JoHxfDCv1xkLS8SKFuBBZ1/img.png&quot; data-alt=&quot;Raspberry Pi - WIFI 추가하기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biR6qM/dJMcajHigD6/JoHxfDCv1xkLS8SKFuBBZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiR6qM%2FdJMcajHigD6%2FJoHxfDCv1xkLS8SKFuBBZ1%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; alt=&quot;Raspberry Pi - WIFI 추가하기 썸네일 이미지이다.&quot; loading=&quot;lazy&quot; width=&quot;900&quot; height=&quot;600&quot; data-filename=&quot;server-build-project-add-wifi-thumbnail.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Raspberry Pi - WIFI 추가하기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추석 연휴기간 Raspberry Pi 세팅을 처음으로 해았다. 그 당시 집에서 시도했기 때문에 WIFI 정보를 집 WIFI로 등록하였다. 그래서 현재 라즈베리파이에 전원을 연결하면 자동으로 집 WIFI는 연결이 된다. 하지만 다른 곳에선 WIFI 연결이 안되어서 원격작업이 되지 않는다. 뭐 다른 방법이 있을 수 있었겠지만, 나중에 WIFI 정보 입력시킨 다음에 해야 겠다하고 일상이 바뻐서 이제 그 작업을 하게 되었다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;WIFI 연결 정보 추가 방법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 방법을 알아보니 생각보다 간단하였다. 지난 번 성공한 SSH 연결로 Raspbery Pi에 접속한 뒤, wpa_suupllicant.config 파일에 등록하려는 와이파이 정보를 추가하며 된다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1 - SSH 접속&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라즈베리파이에 SSH 접속한다. 해당 방법은 이전 글을 참고하면 된다.&lt;/p&gt;
&lt;figure id=&quot;og_1762083217438&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Raspberry Pi | 첫부팅 &amp;amp; SSH 접속&quot; data-og-description=&quot;라즈베리파이 디바이스 초기 세팅 완료 후 첫부팅하는 과정에 대한 글이다.Raspberry Pi - 첫부팅 &amp;amp; SSH 접속첫 부팅이제 사용 준비는 마무리 했으니, 부팅을 해보려 한다. 라즈베리파이는 별도의 전&quot; data-og-host=&quot;ydmins.com&quot; data-og-source-url=&quot;https://ydmins.com/166&quot; data-og-url=&quot;https://ydmins.com/166&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dgnog0/hyZMxQzIT4/B1HM35kNSHAiwhGUbiw8b0/img.png?width=800&amp;amp;height=533&amp;amp;face=0_0_800_533,https://scrap.kakaocdn.net/dn/Sq26G/hyZMN7YaN3/X6ofO8fMbpouNBYcknVMJk/img.png?width=800&amp;amp;height=533&amp;amp;face=0_0_800_533,https://scrap.kakaocdn.net/dn/cHUY8v/hyZM23wOlr/Um3pVqVx9watvOeZKNkIcK/img.jpg?width=2992&amp;amp;height=2992&amp;amp;face=0_0_2992_2992&quot;&gt;&lt;a href=&quot;https://ydmins.com/166&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ydmins.com/166&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dgnog0/hyZMxQzIT4/B1HM35kNSHAiwhGUbiw8b0/img.png?width=800&amp;amp;height=533&amp;amp;face=0_0_800_533,https://scrap.kakaocdn.net/dn/Sq26G/hyZMN7YaN3/X6ofO8fMbpouNBYcknVMJk/img.png?width=800&amp;amp;height=533&amp;amp;face=0_0_800_533,https://scrap.kakaocdn.net/dn/cHUY8v/hyZM23wOlr/Um3pVqVx9watvOeZKNkIcK/img.jpg?width=2992&amp;amp;height=2992&amp;amp;face=0_0_2992_2992');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Raspberry Pi | 첫부팅 &amp;amp; SSH 접속&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;라즈베리파이 디바이스 초기 세팅 완료 후 첫부팅하는 과정에 대한 글이다.Raspberry Pi - 첫부팅 &amp;amp; SSH 접속첫 부팅이제 사용 준비는 마무리 했으니, 부팅을 해보려 한다. 라즈베리파이는 별도의 전&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ydmins.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;wpa_suppliant.conf 정보 수정하기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 명령어를 입력해 wpa_supplicnat.conf를 열어준다.&lt;/p&gt;
&lt;pre id=&quot;code_1762083360454&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo nano /etc/wpa_supplicnat/wpa_supplicant.conf&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 열어준 것 같지만, 실제로 해당 파일을 생성한 것이다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;WIFI 정보 추가하기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존에 등록했었던 WIFI 정보까지 포함해서 wpa_supplicant.conf 내용을 작성해준다.&lt;/p&gt;
&lt;pre id=&quot;code_1762084341522&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;network={
        ssid=&quot;기존에등록했던WIFI&quot;
        psk=&quot;비밀번호&quot;
        priority=1
}

network={
        ssid=&quot;추가할WIFI1&quot;
        psk=&quot;비밀번호&quot;
        priority=2
}

network={
        ssid=&quot;추가할WIFI2&quot;
        psk=&quot;0000001caa&quot;
        priority=3
}&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;정보를 입력한 후에는 저장후 종료해주면된다. Nano를 이용한 저장은 아래와 같이 입력해주면된다.&lt;/p&gt;
&lt;pre id=&quot;code_1762084465073&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Ctrl + O (저장)
Enter
Ctrl + X (종료)&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&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;라즈베리파이 재부팅&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1762084776541&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo reboot&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;새로운 WIFI 연결 확인&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로운 WIFI 환경에 가서 아래 명령어를 입력해 보자.&lt;/p&gt;
&lt;pre id=&quot;code_1762085387009&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;iw dev wlan0 link&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;연결된 네트워크 정보를 확인할 수 있는데, 이 때 추가한 WIFI 정보가 뜬다면 성공한 것이다.&lt;/p&gt;</description>
      <category>Projects/Personal Server Build</category>
      <category>라즈베리파이</category>
      <category>서버구축</category>
      <author>읻민스</author>
      <guid isPermaLink="true">https://ydmins.tistory.com/171</guid>
      <comments>https://ydmins.tistory.com/171#entry171comment</comments>
      <pubDate>Sun, 2 Nov 2025 21:18:42 +0900</pubDate>
    </item>
    <item>
      <title>Flutter | Android | 몸무게 기록 앱 - 구현 1 - Dashboard Page</title>
      <link>https://ydmins.tistory.com/170</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Newton Project로 Flutter를 이용해 몸무게 기록 안드로이드 앱을 구축하고 있다. 해당 글은 Dashboard Page 구현에 대한 글이다.&lt;/p&gt;&lt;h2 data-ke-size=&quot;size26&quot;&gt;구현 1 - Dashboard Page&lt;/h2&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1qQdH/dJMb9XYE0PK/SBrYSZjDqkty4jesazCAX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1qQdH/dJMb9XYE0PK/SBrYSZjDqkty4jesazCAX0/img.png&quot; data-alt=&quot;Newton Project - 몸무게 기록 앱 - 구현 Dashboard Page&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1qQdH/dJMb9XYE0PK/SBrYSZjDqkty4jesazCAX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1qQdH%2FdJMb9XYE0PK%2FSBrYSZjDqkty4jesazCAX0%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; alt=&quot;Newton Project - 몸무게 기록 앱 - 구현 Dashboard Page 썸네일 이미지이다.&quot; loading=&quot;lazy&quot; width=&quot;900&quot; height=&quot;600&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Newton Project - 몸무게 기록 앱 - 구현 Dashboard Page&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Project Initial Setting&lt;/h3&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;구현 과정에서 가장 먼저 프로젝트를 생성하고 main.dart에서 한 페이지이지만 route 설정을 해주었다. 그런 다음 지난 기획편에서 AI를 활용해 만든 UI를 기반으로 앱 개발을 시작하였다.&lt;/p&gt;&lt;figure data-ke-type=&quot;opengraph&quot; data-og-title=&quot;Flutter | Android | 몸무게 기록 앱 - 기획&quot; data-ke-align=&quot;alignCenter&quot; data-og-description=&quot;Flutter로 Android용 몸무게 기록 앱을 개발하는 과정 중 기획과정에 대한 글이다.Flutter 몸무게 기록 앱 - 기획동기공식적 동기오랜 시간 가족들이 가지고 있는 습관이 있다. 바로 아침마다 몸무게를&quot; data-og-host=&quot;ydmins.com&quot; data-og-source-url=&quot;https://ydmins.com/167&quot; data-og-image=&quot;https://blog.kakaocdn.net/dna/b140tf/hyZMgO3OCC/AAAAAAAAAAAAAAAAAAAAAGicQ6wpuSZcDPDOdOKpkpVxjuwlKUkEXsREVmrGJg6K/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1761922799&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=XPkn79vZLUInx8Lu8ivhJrcjOZo%3D&quot; data-og-url=&quot;https://ydmins.com/167&quot;&gt;&lt;a href=&quot;https://ydmins.com/167&quot; target=&quot;_blank&quot; data-source-url=&quot;https://ydmins.com/167&quot;&gt;&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://blog.kakaocdn.net/dna/b140tf/hyZMgO3OCC/AAAAAAAAAAAAAAAAAAAAAGicQ6wpuSZcDPDOdOKpkpVxjuwlKUkEXsREVmrGJg6K/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1761922799&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=XPkn79vZLUInx8Lu8ivhJrcjOZo%3D')&quot;&gt; &lt;/div&gt;&lt;div class=&quot;og-text&quot;&gt;&lt;p class=&quot;og-title&quot;&gt;Flutter | Android | 몸무게 기록 앱 - 기획&lt;/p&gt;&lt;p class=&quot;og-desc&quot;&gt;Flutter로 Android용 몸무게 기록 앱을 개발하는 과정 중 기획과정에 대한 글이다.Flutter 몸무게 기록 앱 - 기획동기공식적 동기오랜 시간 가족들이 가지고 있는 습관이 있다. 바로 아침마다 몸무게를&lt;/p&gt;&lt;p class=&quot;og-host&quot;&gt;ydmins.com&lt;/p&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;대시보드 페이지&lt;/h3&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;몸무게 기록앱의 메인 페이지가 될 Dashboard 페이지를 먼저 구현하였다. UI를 미리 기획하긴 하였지만, 대략적인 계획이었기 때문에 디자인을 조금씩 다듬어 가면서 진행해야 했다. 이 과정에서 light모드와 dark모드에 대응하기 위해 ThemeData를 적용해 보았다. Flutter를 사용한지 이제 1년이 거의 다 되어 가지만, ThemeData를 제대로 사용해본 적이 없어서 공부를 좀 하느라 한 페이지를 만드는데 예상보다 긴 시간이 소요됐다.&lt;/p&gt;&lt;figure data-ke-type=&quot;opengraph&quot; data-og-title=&quot;Flutter | 알아두면 정말 편한 ThemeData를 이용한 색관리&quot; data-ke-align=&quot;alignCenter&quot; data-og-description=&quot;Flutter 개발하면서 공부한 ThemeData를 정리한 글이다.Flutter - ThemeDataThemeData를 알아보게 된 동기Flutter로 급한 마음에 앱을 만들게 되면, themeData 설정은 최소화로 하고 만드는 위젯에서 하나하나 빠&quot; data-og-host=&quot;ydmins.com&quot; data-og-source-url=&quot;https://ydmins.com/169&quot; data-og-image=&quot;https://blog.kakaocdn.net/dna/qj0ek/hyZMAF0DNA/AAAAAAAAAAAAAAAAAAAAAN63SGx5t8jWvYy5UqVnc6l3t-7RJFVUyoKRjWqAHnAc/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1761922799&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=LpoaBUj3%2Bjqu0xhYG78HMeD%2FLM0%3D&quot; data-og-url=&quot;https://ydmins.com/169&quot;&gt;&lt;a href=&quot;https://ydmins.com/169&quot; target=&quot;_blank&quot; data-source-url=&quot;https://ydmins.com/169&quot;&gt;&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://blog.kakaocdn.net/dna/qj0ek/hyZMAF0DNA/AAAAAAAAAAAAAAAAAAAAAN63SGx5t8jWvYy5UqVnc6l3t-7RJFVUyoKRjWqAHnAc/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1761922799&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=LpoaBUj3%2Bjqu0xhYG78HMeD%2FLM0%3D')&quot;&gt; &lt;/div&gt;&lt;div class=&quot;og-text&quot;&gt;&lt;p class=&quot;og-title&quot;&gt;Flutter | 알아두면 정말 편한 ThemeData를 이용한 색관리&lt;/p&gt;&lt;p class=&quot;og-desc&quot;&gt;Flutter 개발하면서 공부한 ThemeData를 정리한 글이다.Flutter - ThemeDataThemeData를 알아보게 된 동기Flutter로 급한 마음에 앱을 만들게 되면, themeData 설정은 최소화로 하고 만드는 위젯에서 하나하나 빠&lt;/p&gt;&lt;p class=&quot;og-host&quot;&gt;ydmins.com&lt;/p&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;그렇게 해서 만든 첫번째 페이지인 &quot;Dashboard Page&quot;는 다음과 같다.&lt;/p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q0MND/dJMb9NPmrRE/r5Xv7pOo7KBlIdUp8QI6oK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q0MND/dJMb9NPmrRE/r5Xv7pOo7KBlIdUp8QI6oK/img.png&quot; data-origin-width=&quot;1408&quot; data-origin-height=&quot;2974&quot; style=&quot;width: 49.4186%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q0MND/dJMb9NPmrRE/r5Xv7pOo7KBlIdUp8QI6oK/img.png&quot; alt=&quot;Newton Project - 몸무게 기록 앱 - Dashboard page light mode 모습이다.&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq0MND%2FdJMb9NPmrRE%2Fr5Xv7pOo7KBlIdUp8QI6oK%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;1408&quot; height=&quot;2974&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/doUQgh/dJMb9PTWDzs/LluKLOmnVMVAJCntxRSEB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/doUQgh/dJMb9PTWDzs/LluKLOmnVMVAJCntxRSEB1/img.png&quot; data-origin-width=&quot;1408&quot; data-origin-height=&quot;2974&quot; style=&quot;width: 49.4186%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/doUQgh/dJMb9PTWDzs/LluKLOmnVMVAJCntxRSEB1/img.png&quot; alt=&quot;Newton Project - 몸무게 기록 앱 - Dashboard page dark mode 모습이다.&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdoUQgh%2FdJMb9PTWDzs%2FLluKLOmnVMVAJCntxRSEB1%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;1408&quot; height=&quot;2974&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;Newton Project - 몸무게 기록 앱 - Dashboard page light and dark mode&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;어려웠던 점&lt;/h4&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;ThemeData&lt;/li&gt;&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;이번 페이지 구현에서 가장 큰 난관(?), 시간이 많이 걸렸던 작업은 ThemeData에 대해서 알아보는 것이었다. 그냥 알아보고 빠르게 적용만 했다면 이정도까진 아니었겠지만, 다음에도 찾아볼 마음에 글까지 쓰느라 시간이 좀 걸렸다.&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;색상 팔레트 구성&lt;/li&gt;&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;Light 모드와 Dark 모드에서 어느정도 보기 좋은 색상들을 고르는게 생각보다 쉽지 않았다. 이런 색상들을 추천해 주는 서비스도 있을 테지만, ThemeData가 어떻게 작동하는지 확인하는데 집중하느라 색상을 ColorPicker에서 수작업으로 뽑아내었다. 다음번에 추가적인 색상을 뽑아야 한다면 Color 추천 서비스를 이용해 보아야 겠다.&lt;/p&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;다음 과제&lt;/h3&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;다음번에는 Statistics page를 구현해 보려고 한다. 일단 서버 연동 없이 UI를 구축하는데 집중할 것이다.&lt;br&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Projects/Newton Project</category>
      <category>포트폴리오</category>
      <author>읻민스</author>
      <guid isPermaLink="true">https://ydmins.tistory.com/170</guid>
      <comments>https://ydmins.tistory.com/170#entry170comment</comments>
      <pubDate>Mon, 27 Oct 2025 09:00:43 +0900</pubDate>
    </item>
    <item>
      <title>Flutter | 알아두면 정말 편한 ThemeData를 이용한 색관리</title>
      <link>https://ydmins.tistory.com/169</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Flutter 개발하면서 공부한 ThemeData를 정리한 글이다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Flutter - ThemeData&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Flutter-ThemeDAta-Thumbnail.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;900&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oWiYA/dJMb9XdhCwS/KRxBkg7O9qr97YWsXQ57D1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oWiYA/dJMb9XdhCwS/KRxBkg7O9qr97YWsXQ57D1/img.png&quot; data-alt=&quot;Flutter - 알아두면 정말 편리한 ThemeData&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oWiYA/dJMb9XdhCwS/KRxBkg7O9qr97YWsXQ57D1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoWiYA%2FdJMb9XdhCwS%2FKRxBkg7O9qr97YWsXQ57D1%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; alt=&quot;Flutter - 알아두면 정말 편리한 ThemeData 썸네일 이미지이다.&quot; loading=&quot;lazy&quot; width=&quot;900&quot; height=&quot;900&quot; data-filename=&quot;Flutter-ThemeDAta-Thumbnail.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;900&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Flutter - 알아두면 정말 편리한 ThemeData&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;ThemeData를 알아보게 된 동기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Flutter로 급한 마음에 앱을 만들게 되면, themeData 설정은 최소화로 하고 만드는 위젯에서 하나하나 빠르게 세팅하게 된다. 이렇게 하면 일단 당장 원하는 스타일의 위젯을 만들 수 있어 '급하게' 만들땐 속이 편하다. 그런데 조금만 더 디테일한 설정을 하겠다고 하면 이런 작업이 얼마나 많은 일을 만드는지 알 수 있다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Light &amp;amp; Dart 모드 변환&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 직관적인 상황은 Light, Dark 모드 전환이다. 요즘은 안드로이드와 iOS 모두 다크모드를 제공한다. 따라서 앱을 만들면 이 기능을 제공하고 싶은 욕심이 난다. 하지만 단순히 지원했다간 기존의 엘레멘트들 간에 색조합이 이상해져서 UI와 UX 모두를 저해시킬 수 있다. 이 문제를 또 '빠르게' 해결하고자 한다면, 결국 Dark모드 지원을 포기하는 결정을 하기 쉽다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;ThemeData&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 Dark 모드를 완벽하게 제공하기 위해선 어떻게 해야 할까? 유일한 정답이라곤 할 수 없지만, 최적의 답으로 보이는 방법은 'ThemeData'를 활용하는 것이다. ydmins는 이번에 간단한 '몸무게 기록 앱'을 만드는 과정 중, 그 동안 배우기를 미뤄 밀린 숙제처럼 여겨진 ThemeData를 사용할 수 있는 수준으로 알아보기로 하였다.&lt;/p&gt;
&lt;figure id=&quot;og_1761385207414&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Flutter | Android | 몸무게 기록 앱 - 기획&quot; data-og-description=&quot;Flutter로 Android용 몸무게 기록 앱을 개발하는 과정 중 기획과정에 대한 글이다.Flutter 몸무게 기록 앱 - 기획동기공식적 동기오랜 시간 가족들이 가지고 있는 습관이 있다. 바로 아침마다 몸무게를&quot; data-og-host=&quot;ydmins.com&quot; data-og-source-url=&quot;https://ydmins.tistory.com/167&quot; data-og-url=&quot;https://ydmins.com/167&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/gX5h1/hyZMDQcr1j/NTyNt8qIO92kUIfak5xph0/img.png?width=800&amp;amp;height=533&amp;amp;face=0_0_800_533,https://scrap.kakaocdn.net/dn/cqugF3/hyZMnNUfzB/oeQyKB4rZCSFF7Eep7oT9k/img.png?width=800&amp;amp;height=533&amp;amp;face=0_0_800_533,https://scrap.kakaocdn.net/dn/bURRVL/hyZMgnJd42/MgT3YJjVmvAs8xVKnFOwBK/img.png?width=1400&amp;amp;height=1400&amp;amp;face=0_0_1400_1400&quot;&gt;&lt;a href=&quot;https://ydmins.tistory.com/167&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ydmins.tistory.com/167&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/gX5h1/hyZMDQcr1j/NTyNt8qIO92kUIfak5xph0/img.png?width=800&amp;amp;height=533&amp;amp;face=0_0_800_533,https://scrap.kakaocdn.net/dn/cqugF3/hyZMnNUfzB/oeQyKB4rZCSFF7Eep7oT9k/img.png?width=800&amp;amp;height=533&amp;amp;face=0_0_800_533,https://scrap.kakaocdn.net/dn/bURRVL/hyZMgnJd42/MgT3YJjVmvAs8xVKnFOwBK/img.png?width=1400&amp;amp;height=1400&amp;amp;face=0_0_1400_1400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Flutter | Android | 몸무게 기록 앱 - 기획&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Flutter로 Android용 몸무게 기록 앱을 개발하는 과정 중 기획과정에 대한 글이다.Flutter 몸무게 기록 앱 - 기획동기공식적 동기오랜 시간 가족들이 가지고 있는 습관이 있다. 바로 아침마다 몸무게를&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ydmins.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;ThemeData란?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ThemeData를 어떻게 사용하는지 자세히 알아보기 전에, ThemeData가 무엇인지 먼저 살펴보려고 한다. ThemeData는 Flutter 앱의 Material Deisgn의 디자인과 동작을 정의하는 클래스이다. ThemeData를 이용해 앱 전반에 걸친 색상, 타이포그래피, 위젯의 모양, 스타일 등을 일관성 있게 지정하고 관리할 수 있도록 한다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;주요 요소&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Color Scheme&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앱의 기본 색상 팔레트를 정의한다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 269px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;Property&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;Description&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;primary&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;앱의 주요 요소의 색상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;onPrimary&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;primary 색상 위에 올라가는 텍스트 및 아이콘 등의 색상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;surface&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;앱 화면의 전체 기본 배경색&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;onSurface&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;surface 색상 위에 올라가는 텍스트 및 아이콘 등의 색상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;secondary&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;보조 요소에서 사용되는 강조 색상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;onSecondary&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;secondary 색상 위에 올라가는 텍스트나 아이콘의 색상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;error&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;경고나 에러 메시지에 사용되는 색상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;onError&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;error 색상 위에 올라가는 텍스트나 아이콘의 색상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;primaryContainer&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;Material 3 (M3)에서 primay와 연관된 밝은 컨테이너 배경색&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;onPrimaryContainer&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;primaryContainer 위에 올라가는 텍스트 및 아이콘 등의 색상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;outline&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;입력 필드, 카드 등의 구성 요소 테두리 색상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;shadow&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;위젯의 그림자 색상을 정의&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;tertiary&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;primary, secondary 다음으로 세번째 강조 색상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;onTertiary&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;tertiary 색상 위에 올라가는 텍스트 및 아이콘의 색상&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Typography&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앱 전반에 사용되는 텍스트의 기본 스타일을 정의한다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;Property&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;Description&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;displayLarge / displayMedium / displaySmall&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;display 텍스트 스타일 정의&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;headlineLarge / headlineMedium / headlineSmall&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;headline 텍스트 스타일 정의&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;titleLarge / titleMedium / titleSmall&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;title 텍스트 스타일 정의&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;bodyLarge / bodyMedium / bodySmall&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;body 텍스트 스타일 정의&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;labelLarge / lableMedium / labelSmall&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;label 텍스트 스타일 정의&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Typography 속성은 정의 해 둔 뒤, html의 h1, h2... 를 사용하듯이 사용하는 Text 위젯에서 해당 스타일 사용을 설정해 줘야 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1761462460481&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Text(
  'Display Text', 
  style: Theme.of(context).textTheme.titleLarge,
)&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Widget Theme&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 위젯의 기본 스타일을 정의한다. 따라서 위젯마다 설정을 해줘야 한다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;ElevatedButton&lt;/blockquote&gt;
&lt;pre id=&quot;code_1761462697435&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;elevatedButtonTheme: ElevatedButtonThemeData(
	style: ElevatedButton.styleFrom(
	backgroundColor: Colors.black,
	foregroundColor: Colors.white,
	),
)&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;AppBar&lt;/blockquote&gt;
&lt;pre id=&quot;code_1761462653386&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;appBarTheme: const AppBarTheme(
	backgroundColor: Colors.white,
	foregroundColor: Colors.black,
	elevation: 0,
)&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Brightness&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테마가 Light 모드인지 Dark 모드인지를 명시한다. MaterialApp에서 라이트와 다크 모드 모두를 정의한다면, theme과 darkTheme 속성을 모두 사용해 설정해 주면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1761462901861&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MaterialApp(
	theme: ThemeData(brightness : Brightness.light, ...),
	darkTheme: Themedata(brightness : Brightness.dart, ...),
	...
)&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;ThemeData 사용 추천 로드맵&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ColorTheme&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 먼저, ColorTheme 사용해 보는 것으로 ThemeData를 사용하는 것을 추천한다. 앱 전반에서 사용할 색상 몇가지를 추가한 뒤, 여러 구현을 해보다가 특정 부분에서 원하는 색상이 나오지 않을 때 추가로 필요한 속성을 찾아 추가해주면 된다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Typography&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 다음, 혹은 동시에 시도하면 좋을 것이 Typography이다. 앱 전반에서 사용할 폰트와 사이즈, 색상 등을 설정해 두면 일관성 있는 UI 구현에 도움이 된다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Widget Theme&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 다음으로 Widget Theme을 설정해 보는 것이다. 모달창, 카드 등 자주 사용하는 요소들이 있을 것이다. 이런 것을 한 곳에서 설정해 두면 수정할 때, ThemeData를 이용해 일괄적으로 수정할 수 있어 편리해진다.&lt;/p&gt;</description>
      <category>Mobile/Flutter &amp;amp; Dart</category>
      <category>Flutter</category>
      <category>themedata</category>
      <author>읻민스</author>
      <guid isPermaLink="true">https://ydmins.tistory.com/169</guid>
      <comments>https://ydmins.tistory.com/169#entry169comment</comments>
      <pubDate>Sun, 26 Oct 2025 16:19:10 +0900</pubDate>
    </item>
    <item>
      <title>Dart | Flutter | VoidCallback vs. Function</title>
      <link>https://ydmins.tistory.com/168</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;VoidCallback과 Function에 대해 비교하는 글이다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;VoidCallback vs. Function&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Dart-Flutter-VoidCallback-Function-Thumbnail.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;900&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZjrRg/dJMb9VT4eaQ/ARhkxrCbwKY8m3SBBwxkWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZjrRg/dJMb9VT4eaQ/ARhkxrCbwKY8m3SBBwxkWK/img.png&quot; data-alt=&quot;Dart &amp;amp;amp; Flutter - VoidCallback vs. Fuction 비교하기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZjrRg/dJMb9VT4eaQ/ARhkxrCbwKY8m3SBBwxkWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZjrRg%2FdJMb9VT4eaQ%2FARhkxrCbwKY8m3SBBwxkWK%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; alt=&quot;Dart &amp;amp;amp; Flutter - VoidCallback vs. Fuction 비교하기 썸네일 이미지이다.&quot; loading=&quot;lazy&quot; width=&quot;900&quot; height=&quot;900&quot; data-filename=&quot;Dart-Flutter-VoidCallback-Function-Thumbnail.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;900&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Dart &amp;amp; Flutter - VoidCallback vs. Fuction 비교하기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;VoidCallBack vs. Function&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위젯을 만들 때, 상위 위젯에서 메서드를 전달해 주는 경우가 있다. 그런데 어떤 경우에는 VoidCallback 타입의 메서드를, 또 어떤 경우에는 Function 타입의 메서드를 전달하는 경우가 있다. 이 둘이 어떤 차이가 있는지 한 번 알아보았다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;VoidCallback&lt;/h4&gt;
&lt;pre id=&quot;code_1761224185209&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;typedef VoidCallback = void Funcation();&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;VoidCallback은 아무 인자도 받지 않고, 아무것도 반환하지 않는 함수 타입이다. 주로 Flutter 프레임워크에서 onPressed, onTap등에 사용된다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;장점&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;타입이 명확하기 때문에 IDE와 컴파일러가 Syntax 에러를 쉽게 찾아 줄 수 있다. 또한 명확성(어떤 동작을 하고 어떤 데이터가 필요한지 명확)과 일관성(클릭, 탭등 같은 종류의 동작에 대해 항상 같은 형태의 콜백 메서드를 제공)을 중요하게 생각하는 Flutter 위젯 설계 철학에 부합한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;단점&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인자를 전달해야 하거나, 반환값이 필요한 경우에는 사용할 수 없다는 단점이 있다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Function&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;장점&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 상황에서도 사용할 수 있다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;단점&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;타입이 명확하지 않아서, IDE의 도움을 받는데 제한이 있다. 또한 잘못된 형태의 함수가 전달되어도 컴파일 단계에서 알 수 없다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Flutter 이벤트 핸들러는 무저건 VoidCallback?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 둘을 알아 보니 자연스럽게, 'Flutter 이벤트 핸들링(Callback Property)을 할 때는 무조건 VoidCallback을 쓰면 될까?'하는 의문이 들었다. 정답은 아니다. 왜냐하면 위의 2가지 외에 3가지 타입의 메서드가 더 있기 때문이다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;AsyncCallback&lt;/h4&gt;
&lt;pre id=&quot;code_1761226077012&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;typedef AsyncCallback = Function&amp;lt;void&amp;gt; Function();&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;AysncCallback은 VoidCallback에 비동기성이 추가된 메서드 타입이다. 응답 대기 즉, await가 필요한 곳에서 사용할 수 있다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;ValueChanged&amp;lt;T&amp;gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1761226167983&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;typedef ValueChanged&amp;lt;T&amp;gt; = void Function(T value);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ValueChanged&amp;lt;T&amp;gt;는 인자를 하나 받아서 처리하는 콜백메서드 타입이다. 주로 onChanged의 콜백 프로퍼티에 사용되며, 값이 변경된 것을 &quot;전달&quot;할 의도로 사용한다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;ValueSetter&amp;lt;T&amp;gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1761226270524&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;typedef ValueSetter&amp;lt;T&amp;gt; = void Function(T value);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ValueSetter&amp;lt;T&amp;gt;는 ValueChanged&amp;lt;T&amp;gt;와 마찬가지로 인자를 하나 받아서 처리하는 콜백메서드 타입니다. 하지만 차이점은 변경된 값을 &quot;반영&quot;할 의도로 사용한다는 점이다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;ValueChanged&amp;lt;T&amp;gt; vs. ValueSetter&amp;lt;T&amp;gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;타입은 다르지만, 본질적으로 void Function(T)로 같은 형태를 가지고 있다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;정리&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Flutter 위젯의 이벤트를 핸들링 할 때는 위의 5가지 타입 중, Function을 제외한 4가지 (VoidCallback, AsyncCallback, ValueChanged&amp;lt;T&amp;gt;, ValueSetter&amp;lt;T&amp;gt;)를 상황에 맞게 사용하는 것이 권장된다. 반대로 Function은 너무 범용적이기 때문에 권장되지 않는다. (하지만 불가능 하지는 않다.)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;어차피 다 Function 아닌가?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 여기까지 공부하고 보니, 뭔가 찝찝하다. 어차피 다 Fucntion 아닌가?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 점에 대해서도 알아보았더니, 먼저 위에서 살펴본 Function 외 4가지 타입은 &quot;함수 타입 Alias&quot;일 뿐이다. 즉, 특수한 케이스(typedef)를 명시적으로 구분하기 위해서 이름을 붙여준 것이다.&lt;/p&gt;
&lt;pre id=&quot;code_1761226964105&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;typedef VoidCallback = void Function();
typedef AsyncCallback = Future&amp;lt;void&amp;gt; Function();
typedef ValueChanged&amp;lt;T&amp;gt; = void Function(T value);
typedef ValueSetter&amp;lt;T&amp;gt; = void Function(T value);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 아래의 두 문장은 완벽히 동일하다.&lt;/p&gt;
&lt;pre id=&quot;code_1761227041831&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;final void Function() onPressed;
final VoidCallback onPressed;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;그럼 왜 굳이 별도의 타입을 만들어 놓은 것일까?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이유는 &quot;의도를 코드에 담기 위해&quot;서이다. 타입만 보아도 어떤 역할을 하는지 알수 있도록 말이다. 따라서 typedef는 단순한 syntax가 아니고 'context'를 담기 위한 언어적 장치라고도 할 수 있다. 이 때문에 코드의 직관적 가독성이 높아지기 때문이다. 단지 그 높아진 가독성을 느끼기 위해선, 해당 개념을 알고 있어야만 한다는 맹점(?)이 있긴 하다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;이런 개념은 Dart에만 있는 것인가?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 함수타입을 이번에 처음 알게되었다. 본적은 있었겠지만, 그냥 메서드 이고 이름을 보면 대충 이해는 할 수 있었기 때문에 진지하게 알아볼 기회가 많지 않았다. 그래서 이런 개념이 Dart에만 있는 것인지 알아보았더니, 다른 언어에도 많이 존재한다는 것을 알게되었다. 그리고 또하나는 ydmins는 Java를 주로 공부했었는데, Java는 때마침 이런 기능을 제공하지 않는다. (대신 functional interface라는 개념을 구현한다고 한다.) 그래서 더욱더 이런 개념이 낯설었던 것이었다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;마무리&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Function Alias&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;총 4가지 VoidCallback / AsyncCallBack / ValueChanged / ValueSetter의 함수 특수 타입이 존재한다.&lt;/li&gt;
&lt;li&gt;이는 코드의 명확성을 높이며, Context를 담아 가독성을 높이는데 도움을 준다.&lt;/li&gt;
&lt;li&gt;하지만 본질적으로 Function과 같다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Mobile/Flutter &amp;amp; Dart</category>
      <category>DART</category>
      <category>Elias</category>
      <category>Flutter</category>
      <category>function</category>
      <category>typedef</category>
      <author>읻민스</author>
      <guid isPermaLink="true">https://ydmins.tistory.com/168</guid>
      <comments>https://ydmins.tistory.com/168#entry168comment</comments>
      <pubDate>Thu, 23 Oct 2025 22:56:31 +0900</pubDate>
    </item>
    <item>
      <title>Flutter | Android | 몸무게 기록 앱 - 기획</title>
      <link>https://ydmins.tistory.com/167</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Flutter로 Android용 몸무게 기록 앱을 개발하는 과정 중 기획과정에 대한 글이다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Flutter 몸무게 기록 앱 - 기획&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;newton-project-plan-thumbnail.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhIT7z/dJMb89dH3p1/MzlHLRQ6YT3g5IgPwGiHKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhIT7z/dJMb89dH3p1/MzlHLRQ6YT3g5IgPwGiHKK/img.png&quot; data-alt=&quot;Newton Project - 몸무게 기록 앱 - 기획&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhIT7z/dJMb89dH3p1/MzlHLRQ6YT3g5IgPwGiHKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhIT7z%2FdJMb89dH3p1%2FMzlHLRQ6YT3g5IgPwGiHKK%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; alt=&quot;Newton Project - 몸무게 기록 앱 - 기획 썸네일 이미지이다.&quot; loading=&quot;lazy&quot; width=&quot;900&quot; height=&quot;600&quot; data-filename=&quot;newton-project-plan-thumbnail.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Newton Project - 몸무게 기록 앱 - 기획&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;동기&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;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오랜 시간 가족들이 가지고 있는 습관이 있다. 바로 아침마다 몸무게를 측정하고 기록하는 것이다. ydmins는 카카오 개인톡방에, 다른 가족들은 달력이나, 별도로 만든 1년짜리 A4 용지에 기록을 한다. 이 습관은 다이어트 습관을 유지하는데 큰 도움을 주었다. 하지만 현재의 방식은 다이어트 습관을 유지하는 데 도움을 준 것 외에, 큰 효용가치가 없다. 왜냐하면 일단 기록은 했지만 데이터를 되돌아 보는 경우가 거의 없어, 기록으로써의 가치를 크게 느끼지 못하고 있다. 또 이전에 기록해 둔 노트 혹은 종이가 어디있는지 기억도 잘 안난다. (버리진 않았지만) 좋은 습관을 가지고 있고, 기록을 꾸준히 하고 있으므로 이 습관과 기록의 가치를 높이기 위해 앱이 있으면 좋겠다는 생각이 들었다. (아주 오래전부터)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;계획 부체&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 습관을 유지한지도 어느덧 10년이 다되어 가는데, '몸무게 기록 앱 하나 만들어야 겠다'고 생각한게 이 습관을 유지한 것만큼 오래되었다. 하지만 머릿속 계획은 무한정 그저 머물 뿐이었다. 하지만 더 이상 이런 막연한 아이디어를 머릿속에 두지 않고, 만들어 내서 쓸만한지 아닌지 결판을 내고 싶어졌다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;UI&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앱을 만들 때, UI를 계획해 두고 하면 개발을 좀 더 수월하게 할 수 있다. 하지만 이번 프로젝트를 위해서 Figma 사용법을 배우는데 시간을 쓰고 싶지 않아, chatGPT와 Gemini를 이용해서 만든 UI 대충의 이미지를 약간의 포토샵 작업을 해서 UI를 만들어 보았다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;ui edited by ydmins.png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cn9fQn/dJMb9NPkoyB/tQXg5aLmRgk1xFcYKFZwQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cn9fQn/dJMb9NPkoyB/tQXg5aLmRgk1xFcYKFZwQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cn9fQn/dJMb9NPkoyB/tQXg5aLmRgk1xFcYKFZwQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcn9fQn%2FdJMb9NPkoyB%2FtQXg5aLmRgk1xFcYKFZwQk%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;1536&quot; height=&quot;1024&quot; data-filename=&quot;ui edited by ydmins.png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ebook 느낌&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 eink 기반의 디스플레이 느낌을 주고 싶었다. 체중계에서 측정한 데이터를 비슷한 느낌의 프로그램에 옮겨적는 느낌을 살리고 싶었기 때문이다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MVP에 집중&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;큰 그림보다, 일단 핵심 기능을 갖춘 MVP를 빠르게 만드는 것에 집중하려고 한다. 핵심 기능은 1) 몸무게를 간단하게 입력하고 2) 달력으로 기록을 확인할 수 있고 3) 간단한 통계를 보여주도록 하는 것이다. Settings 페이지에서 Export Data가 그려져 있는데, 이 기능은 첫 MVP에는 포함시키지 않을 것이다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Technical Design&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;nbsp;Flutter&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주력으로 사용중인 Flutter를 이용할 것이다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Android&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 MVP 앱은 안드로이드 배포를 목표를 할 것이다.&lt;/p&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;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;Firebase vs. Superbase&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;서버리스 서비스로 구축할 계획이고, 데이터베이스는 Firebase를 사용할 가능성이 높다. 이유는 어느정도의 트래픽까지는 무료로 사용할 수 있고, NoSQL DB로는 Firebase가 친숙하기 때문이다. 추가로 요즘 인기가 많은 Superbase도 구현 중에 추가적인 자료를 알아 보면서 고려해 본 뒤, 사용 여부를 다시 판단할 수도 있다. 하지만 Firebase로 갈 확률이 90% 이상으로 높아 보인다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;etc&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 외 특별히 필요하다면 달력 관련 기능과 통계 관련 일 것 같은데. 일단 구현해보면서 적절한 것을 찾는 방식을 취해 빠르게 개발 착수 및 속도감을 가지려고 한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;대략적 계획 완료&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단한 앱이니 만큼, 이정도면 작업을 시작하는데 문제 없을 정도의 계획인 것 같다. 이제 구현을 시작해 보려고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;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;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;</description>
      <category>Projects/Newton Project</category>
      <category>포트폴리오</category>
      <author>읻민스</author>
      <guid isPermaLink="true">https://ydmins.tistory.com/167</guid>
      <comments>https://ydmins.tistory.com/167#entry167comment</comments>
      <pubDate>Sun, 19 Oct 2025 22:11:19 +0900</pubDate>
    </item>
    <item>
      <title>Raspberry Pi | 첫부팅 &amp;amp; SSH 접속</title>
      <link>https://ydmins.tistory.com/166</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;라즈베리파이 디바이스 초기 세팅 완료 후 첫부팅하는 과정에 대한 글이다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Raspberry Pi - 첫부팅 &amp;amp; SSH 접속&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;server-build-project-initial-booting-ssh-thumbnail.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Fdcf3/btsQ6VzLUU1/dbpNPI1txA4m2QiGomE0Ik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Fdcf3/btsQ6VzLUU1/dbpNPI1txA4m2QiGomE0Ik/img.png&quot; data-alt=&quot;Personal Server Build - Raspberry Pi Initial Booting &amp;amp;amp; SSH&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Fdcf3/btsQ6VzLUU1/dbpNPI1txA4m2QiGomE0Ik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFdcf3%2FbtsQ6VzLUU1%2FdbpNPI1txA4m2QiGomE0Ik%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; alt=&quot;Personal Server Build - Raspberry Pi Initial Booting &amp;amp;amp; SSH 썸네일 이미지이다.&quot; loading=&quot;lazy&quot; width=&quot;900&quot; height=&quot;600&quot; data-filename=&quot;server-build-project-initial-booting-ssh-thumbnail.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Personal Server Build - Raspberry Pi Initial Booting &amp;amp; SSH&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;첫 부팅&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 사용 준비는 마무리 했으니, 부팅을 해보려 한다. 라즈베리파이는 별도의 전원 버튼이 존재하지 않고, 케이블을 연결하면 바로 부팅이 되는 구조이다. 아래 사진을 보면 라즈베리파이 한 켠에 C타입 케이블 연결부가 있는데, 이부분에 케이블을 연결하면 부팅된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20251012_1331451.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cIQmFk/btsQ67fJbSa/GXdoX7Zqd955YIx2fkXvTK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cIQmFk/btsQ67fJbSa/GXdoX7Zqd955YIx2fkXvTK/img.jpg&quot; data-alt=&quot;Personal Server Build - Raspberry Pi Initial Booting - C Type 연결부&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cIQmFk/btsQ67fJbSa/GXdoX7Zqd955YIx2fkXvTK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcIQmFk%2FbtsQ67fJbSa%2FGXdoX7Zqd955YIx2fkXvTK%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; alt=&quot;Personal Server Build - Raspberry Pi Initial Booting - C Type 연결부 모습이다.&quot; loading=&quot;lazy&quot; width=&quot;2992&quot; height=&quot;2992&quot; data-filename=&quot;20251012_1331451.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Personal Server Build - Raspberry Pi Initial Booting - C Type 연결부&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;케이블을 연결하면 LED 인디케이터에 전원이 들어 오는 것을 확인할 수 있다. 초록불이 들어오면 성공적으로 부팅이 되었다고 보면 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XDYT6/btsQ7MWv6LI/UKm2xT8IHWU2qkhCTCoq7k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XDYT6/btsQ7MWv6LI/UKm2xT8IHWU2qkhCTCoq7k/img.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot; data-is-animation=&quot;false&quot; data-filename=&quot;20251012_1331541.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XDYT6/btsQ7MWv6LI/UKm2xT8IHWU2qkhCTCoq7k/img.jpg&quot; alt=&quot;Personal Server Build - Raspberry Pi Initial Booting - 라즈베리파이 앞에 C 타입 케이블이 놓여있다.&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXDYT6%2FbtsQ7MWv6LI%2FUKm2xT8IHWU2qkhCTCoq7k%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;2992&quot; height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/543Fc/btsQ61flxzP/M8fsOtywCDr32SQG0S4qoK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/543Fc/btsQ61flxzP/M8fsOtywCDr32SQG0S4qoK/img.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot; data-is-animation=&quot;false&quot; data-filename=&quot;20251012_1332101.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/543Fc/btsQ61flxzP/M8fsOtywCDr32SQG0S4qoK/img.jpg&quot; alt=&quot;Personal Server Build - Raspberry Pi Initial Booting - 라즈베리파과 C 타입 케이블이 연결된 모습이다.&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F543Fc%2FbtsQ61flxzP%2FM8fsOtywCDr32SQG0S4qoK%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;2992&quot; height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;Personal Server Build - Raspberry Pi Initial Booting - 전원 케이블 연결&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;SSH 접속&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라즈베리파이를 직접 모니터에 연결해서 조작할 수도 있지만, ydmins는 노트북에서 SSH로 접속하려고 한다.&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;✅ 해당 작업을 위해선 노트북과 라즈베리파이가 동일한 WIFI에 연결되어 있어야 한다.&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;⚠️ 라즈베리파이가 부팅후 바로 WIFI에 연결가능한 이유는, OS 세팅 과정에서 WIFI 정보를 입력해 두었기 때문이다.&lt;/blockquote&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;IP 주소 확인하기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SSH 접속을 위해서 라즈베리파이가 어떤 IP로 네트워크에 연결되어 있는지 확인해야 한다. 해당 정보는 공유기에 접속하면 확인이 가능하다. 웹 브라우저에서 192.168.0.1로 접속한다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;192.168.0.1&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-10-12 13.33.221.png&quot; data-origin-width=&quot;2198&quot; data-origin-height=&quot;1732&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7pOU2/btsQ7Qq5HEY/Ts9tK5f07W3RTIhmveOaO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7pOU2/btsQ7Qq5HEY/Ts9tK5f07W3RTIhmveOaO1/img.png&quot; data-alt=&quot;Personal Server Build - Raspberry Pi SSH Connection - 공유기 접속&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7pOU2/btsQ7Qq5HEY/Ts9tK5f07W3RTIhmveOaO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7pOU2%2FbtsQ7Qq5HEY%2FTs9tK5f07W3RTIhmveOaO1%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; alt=&quot;Personal Server Build - Raspberry Pi SSH Connection - 공유기 접속 로그인 페이지 모습이다.&quot; loading=&quot;lazy&quot; width=&quot;2198&quot; height=&quot;1732&quot; data-filename=&quot;스크린샷 2025-10-12 13.33.221.png&quot; data-origin-width=&quot;2198&quot; data-origin-height=&quot;1732&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Personal Server Build - Raspberry Pi SSH Connection - 공유기 접속&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;⚠️ 공유기 공급사에 따라서 해당 페이지 모습은 다를 수 있다. 하지만 기본 내용들은 거의 동일하다.&amp;nbsp;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네트워크 설정에서 연결한 라즈베리파이가 어떤 IP에 연결되어 있는지 확인한다. 아래 사진을 보면, ydmins의 라즈베리파이 RbPi는 192.168.0.16에 연결되어 있다. 이 IP 주소를 복하해둔다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-10-12 14.09.111.png&quot; data-origin-width=&quot;2198&quot; data-origin-height=&quot;1732&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bE5148/btsQ6XYlwdE/MNURgwhSsqwwwQZKokuf80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bE5148/btsQ6XYlwdE/MNURgwhSsqwwwQZKokuf80/img.png&quot; data-alt=&quot;Personal Server Build - Raspberry Pi SSH Connection - 라즈베리파이 IP 확인&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bE5148/btsQ6XYlwdE/MNURgwhSsqwwwQZKokuf80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbE5148%2FbtsQ6XYlwdE%2FMNURgwhSsqwwwQZKokuf80%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; alt=&quot;Personal Server Build - Raspberry Pi SSH Connection - 라즈베리파이 IP 확인 모습이다.&quot; loading=&quot;lazy&quot; width=&quot;2198&quot; height=&quot;1732&quot; data-filename=&quot;스크린샷 2025-10-12 14.09.111.png&quot; data-origin-width=&quot;2198&quot; data-origin-height=&quot;1732&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Personal Server Build - Raspberry Pi SSH Connection - 라즈베리파이 IP 확인&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;터미널에서 SSH 접속하기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;터미널을 실행한 뒤 아래와 같은 형식으로 ssh 연결을 한다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;ssh &amp;lt;사용자 id&amp;gt;@&amp;lt;라즈베리파이 ip&amp;gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-10-12 14.12.371.png&quot; data-origin-width=&quot;1394&quot; data-origin-height=&quot;966&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnfTJk/btsQ4ipys4G/uHtwtkEv0eugY6UNy9Dfh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnfTJk/btsQ4ipys4G/uHtwtkEv0eugY6UNy9Dfh0/img.png&quot; data-alt=&quot;Personal Server Build - Raspberry Pi SSH Connection - 터미널&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnfTJk/btsQ4ipys4G/uHtwtkEv0eugY6UNy9Dfh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnfTJk%2FbtsQ4ipys4G%2FuHtwtkEv0eugY6UNy9Dfh0%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; alt=&quot;Personal Server Build - Raspberry Pi SSH Connection - 터미널창에 ssh 명령어 작성한 모습이다.&quot; loading=&quot;lazy&quot; width=&quot;1394&quot; height=&quot;966&quot; data-filename=&quot;스크린샷 2025-10-12 14.12.371.png&quot; data-origin-width=&quot;1394&quot; data-origin-height=&quot;966&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Personal Server Build - Raspberry Pi SSH Connection - 터미널&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 정말 연결할 것인지 한 번 묻는 절차가 있다. 여기서 'yes'를 입력한다. 그럼 이제 password를 입력하라고 한다. OS 세팅시 설정한 비밀번호를 입력해준다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;ydmins는 비밀번호를 까먹어서, OS를 다시 설치했어야 했다.&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-10-12 14.37.471.png&quot; data-origin-width=&quot;1394&quot; data-origin-height=&quot;966&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpGnTY/btsQ4qgMT72/6WkK5dSXKLuovVyl0lnlIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpGnTY/btsQ4qgMT72/6WkK5dSXKLuovVyl0lnlIK/img.png&quot; data-alt=&quot;Personal Server Build - Raspberry Pi SSH Connection Confirmation&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpGnTY/btsQ4qgMT72/6WkK5dSXKLuovVyl0lnlIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpGnTY%2FbtsQ4qgMT72%2F6WkK5dSXKLuovVyl0lnlIK%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; alt=&quot;Personal Server Build - Raspberry Pi SSH Connection - 연결 확인을 묻는 것에 yes를 입력한 모습이다.&quot; loading=&quot;lazy&quot; width=&quot;1394&quot; height=&quot;966&quot; data-filename=&quot;스크린샷 2025-10-12 14.37.471.png&quot; data-origin-width=&quot;1394&quot; data-origin-height=&quot;966&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Personal Server Build - Raspberry Pi SSH Connection Confirmation&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비밀번호를 올바르게 입력하면 SSH 연결이 이뤄지는데. 성공하면 아래와 같은 모습을 볼 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-10-12 14.37.591.png&quot; data-origin-width=&quot;1394&quot; data-origin-height=&quot;966&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmgqCu/btsQ5hD16hG/Ea5S9sLPMnLjpGqN9A8KUk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmgqCu/btsQ5hD16hG/Ea5S9sLPMnLjpGqN9A8KUk/img.png&quot; data-alt=&quot;Personal Server Build - Raspberry Pi SSH Connection Complete&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmgqCu/btsQ5hD16hG/Ea5S9sLPMnLjpGqN9A8KUk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmgqCu%2FbtsQ5hD16hG%2FEa5S9sLPMnLjpGqN9A8KUk%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; alt=&quot;Personal Server Build - Raspberry Pi SSH Connection이 완료된 모습이다.&quot; loading=&quot;lazy&quot; width=&quot;1394&quot; height=&quot;966&quot; data-filename=&quot;스크린샷 2025-10-12 14.37.591.png&quot; data-origin-width=&quot;1394&quot; data-origin-height=&quot;966&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Personal Server Build - Raspberry Pi SSH Connection Complete&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기본 세팅&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라즈베리파이와 노트북간 SSH 연결이 이뤄진 뒤 해두면 좋은 업데이트이다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;소프트웨어 업데이트&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같은 명령어로 소프트웨어를 최신 상태로 업데이트한다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;sudo apt update&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-10-12 14.44.041.png&quot; data-origin-width=&quot;1586&quot; data-origin-height=&quot;1046&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lmEhb/btsQ4phU9ws/vWdqjkiZXkjBQsnbKPqmfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lmEhb/btsQ4phU9ws/vWdqjkiZXkjBQsnbKPqmfk/img.png&quot; data-alt=&quot;Personal Server Build - Raspberry Pi SSH Connection - 업데이트&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lmEhb/btsQ4phU9ws/vWdqjkiZXkjBQsnbKPqmfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlmEhb%2FbtsQ4phU9ws%2FvWdqjkiZXkjBQsnbKPqmfk%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; alt=&quot;Personal Server Build - Raspberry Pi SSH Connection - 소프트웨어 업데이트 모습이다.&quot; loading=&quot;lazy&quot; width=&quot;1586&quot; height=&quot;1046&quot; data-filename=&quot;스크린샷 2025-10-12 14.44.041.png&quot; data-origin-width=&quot;1586&quot; data-origin-height=&quot;1046&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Personal Server Build - Raspberry Pi SSH Connection - 업데이트&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;라즈베리파이 시스템 설정&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혹시 라즈베리파이 OS 시스템 설정을 하고 싶다면 아래 명령어로 수행할 수 있다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;sudo raspi-config&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-10-12 14.47.181.png&quot; data-origin-width=&quot;1674&quot; data-origin-height=&quot;1134&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lFuB1/btsQ7dtrnOU/2N4tzbs2xGpeUOr2NhByC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lFuB1/btsQ7dtrnOU/2N4tzbs2xGpeUOr2NhByC0/img.png&quot; data-alt=&quot;Personal Server Build - Raspberry Pi SSH Connection - 시스템 설정 명령어&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lFuB1/btsQ7dtrnOU/2N4tzbs2xGpeUOr2NhByC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlFuB1%2FbtsQ7dtrnOU%2F2N4tzbs2xGpeUOr2NhByC0%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; alt=&quot;Personal Server Build - Raspberry Pi SSH Connection - 시스템 설정 명령어를 입력한 모습이다.&quot; loading=&quot;lazy&quot; width=&quot;1674&quot; height=&quot;1134&quot; data-filename=&quot;스크린샷 2025-10-12 14.47.181.png&quot; data-origin-width=&quot;1674&quot; data-origin-height=&quot;1134&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Personal Server Build - Raspberry Pi SSH Connection - 시스템 설정 명령어&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 아래와 같은 설정 페이지에 접근해 여러가지 항목들을 조작할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-10-12 14.47.211.png&quot; data-origin-width=&quot;1674&quot; data-origin-height=&quot;1134&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dloZmU/btsQ6iolrrs/1j7Z8al2KQSrSzJwbKYPMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dloZmU/btsQ6iolrrs/1j7Z8al2KQSrSzJwbKYPMk/img.png&quot; data-alt=&quot;Personal Server Build - Raspberry Pi SSH Connection - 시스템 설정 페이지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dloZmU/btsQ6iolrrs/1j7Z8al2KQSrSzJwbKYPMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdloZmU%2FbtsQ6iolrrs%2F1j7Z8al2KQSrSzJwbKYPMk%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; alt=&quot;Personal Server Build - Raspberry Pi SSH Connection - 시스템 설정 페이지 모습이다.&quot; loading=&quot;lazy&quot; width=&quot;1674&quot; height=&quot;1134&quot; data-filename=&quot;스크린샷 2025-10-12 14.47.211.png&quot; data-origin-width=&quot;1674&quot; data-origin-height=&quot;1134&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Personal Server Build - Raspberry Pi SSH Connection - 시스템 설정 페이지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;기기 종료하기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 실행까지 했으니, 마지막으로 종료는 어떻게 하는지 알아보려고 한다. 버튼이 없어서 케이블을 연결을 통해 부팅했던 것 처럼, 케이블을 빼면 기기가 종료되게 된다. 하지만 이보다 좀 더 안전한 방법을 사용하는 것이 좋다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;sudo shutdoen -h now&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-10-12 14.47.431.png&quot; data-origin-width=&quot;1674&quot; data-origin-height=&quot;1134&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dOAxMO/btsQ6fLVZqk/eLHQsp7ASfH7nIoL1UXZs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dOAxMO/btsQ6fLVZqk/eLHQsp7ASfH7nIoL1UXZs1/img.png&quot; data-alt=&quot;Personal Server Build - Raspberry Pi SSH Connection - 종료 명령어&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dOAxMO/btsQ6fLVZqk/eLHQsp7ASfH7nIoL1UXZs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdOAxMO%2FbtsQ6fLVZqk%2FeLHQsp7ASfH7nIoL1UXZs1%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; alt=&quot;Personal Server Build - Raspberry Pi SSH Connection - 종료 명령어를 입력한 모습이다.&quot; loading=&quot;lazy&quot; width=&quot;1674&quot; height=&quot;1134&quot; data-filename=&quot;스크린샷 2025-10-12 14.47.431.png&quot; data-origin-width=&quot;1674&quot; data-origin-height=&quot;1134&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Personal Server Build - Raspberry Pi SSH Connection - 종료 명령어&lt;/figcaption&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;성공적으로 기기가 종료되면, 라즈베리파이 LED 인디케이터가 빨간불로 바뀐다. 이 때는 케이블을 안전하게 제거할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20251012_1447541.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjlyCO/btsQ5bQ6yCe/AYWB96FvSuXcmKY767SquK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjlyCO/btsQ5bQ6yCe/AYWB96FvSuXcmKY767SquK/img.jpg&quot; data-alt=&quot;Personal Server Build - Raspberry Pi SSH Connection - 종료 후 LED 인디케이터&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjlyCO/btsQ5bQ6yCe/AYWB96FvSuXcmKY767SquK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjlyCO%2FbtsQ5bQ6yCe%2FAYWB96FvSuXcmKY767SquK%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; alt=&quot;Personal Server Build - Raspberry Pi SSH Connection - 종료 후 LED 인디케이터가 빨간불을 보이는 모습이다.&quot; loading=&quot;lazy&quot; width=&quot;2992&quot; height=&quot;2992&quot; data-filename=&quot;20251012_1447541.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Personal Server Build - Raspberry Pi SSH Connection - 종료 후 LED 인디케이터&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;⚠️ 다시 재부팅을 위해선, 케이블을 반드시 제거후 다시 연결해야만 한다.&lt;/blockquote&gt;</description>
      <category>Projects/Personal Server Build</category>
      <category>라즈베리파이</category>
      <category>서버구축</category>
      <author>읻민스</author>
      <guid isPermaLink="true">https://ydmins.tistory.com/166</guid>
      <comments>https://ydmins.tistory.com/166#entry166comment</comments>
      <pubDate>Sun, 12 Oct 2025 16:40:55 +0900</pubDate>
    </item>
    <item>
      <title>Raspberry Pi | 디바이스 초기 세팅 - Active Cooler 장착 및 SD 카드 삽입하기</title>
      <link>https://ydmins.tistory.com/165</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;라즈베리파이 디바이스 초기 세팅 과정의 일환으로 Active Cooler를 장착하고 SD 카드를 삽입하는 과정에 대한 글이다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Raspberry Pi - 디바이스 초기 세팅&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;server-build-project-device-initial-setting-thumbnail.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xaonJ/btsQ2qVvyn3/ZbKJ30LpRDyhkYWyXKXJ01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xaonJ/btsQ2qVvyn3/ZbKJ30LpRDyhkYWyXKXJ01/img.png&quot; data-alt=&quot;Personal Server Build - Raspberry PI - Device Initial Settings&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xaonJ/btsQ2qVvyn3/ZbKJ30LpRDyhkYWyXKXJ01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxaonJ%2FbtsQ2qVvyn3%2FZbKJ30LpRDyhkYWyXKXJ01%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; alt=&quot;Personal Server Build - Raspberry PI - Device Initial Settings 썸네일 이미지이다.&quot; loading=&quot;lazy&quot; width=&quot;900&quot; height=&quot;600&quot; data-filename=&quot;server-build-project-device-initial-setting-thumbnail.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Personal Server Build - Raspberry PI - Device Initial Settings&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Active Cooler 장착&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;일단 라즈베리파이를 실행하기 앞서, 구성품으로 받은 액티브 쿨러를 장착해 보려고 한다. 쿨러를 장착하는건 필수 작업은 아닌데, 있으니까 장착하는 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20251011_2145381.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTev2a/btsQ7bI3rCL/6RpFO1pgBJGf4FThqkkMDK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTev2a/btsQ7bI3rCL/6RpFO1pgBJGf4FThqkkMDK/img.jpg&quot; data-alt=&quot;Personla Server Build - Raspberry Pi 초기 세팅&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTev2a/btsQ7bI3rCL/6RpFO1pgBJGf4FThqkkMDK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTev2a%2FbtsQ7bI3rCL%2F6RpFO1pgBJGf4FThqkkMDK%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; alt=&quot;Personla Server Build - Raspberry Pi 초기 세팅 - 쿨러와 라즈베리파이가 나란히 놓여있다.&quot; loading=&quot;lazy&quot; width=&quot;2992&quot; height=&quot;2992&quot; data-filename=&quot;20251011_2145381.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Personla Server Build - Raspberry Pi 초기 세팅&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;장착 방법&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;장착 방법은 상자에 보기 쉽게 표현돼 있었다. 상자에 표시된 부분에 쿨러를 끼면 되는 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Xjc3p/btsQ5FR5XQ4/UHDTxV7lAf49srk9gAmUW0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Xjc3p/btsQ5FR5XQ4/UHDTxV7lAf49srk9gAmUW0/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot; data-filename=&quot;20251011_2145581.jpg&quot; data-widthpercent=&quot;50&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Xjc3p/btsQ5FR5XQ4/UHDTxV7lAf49srk9gAmUW0/img.jpg&quot; alt=&quot;Personla Server Build - Raspberry Pi 초기 세팅 - Active Cooler를 들고 있는 모습이다.&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXjc3p%2FbtsQ5FR5XQ4%2FUHDTxV7lAf49srk9gAmUW0%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;2992&quot; height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bavCwl/btsQ6fLQqxL/Zp4XeL3RykHTsEyuXGKk7k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bavCwl/btsQ6fLQqxL/Zp4XeL3RykHTsEyuXGKk7k/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot; data-filename=&quot;20251011_2146441.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bavCwl/btsQ6fLQqxL/Zp4XeL3RykHTsEyuXGKk7k/img.jpg&quot; alt=&quot;Personla Server Build - Raspberry Pi 초기 세팅 - 라즈베리 파이에 쿨러를 장착할 부위가 표시되어 있다.&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbavCwl%2FbtsQ6fLQqxL%2FZp4XeL3RykHTsEyuXGKk7k%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;2992&quot; height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;Personla Server Build - Raspberry Pi 초기 세팅 - 1) Activce Cooler 2) Raspberry Pi&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿨러를 좀 더 자세히 살펴보면, 꽂는 곳이 플라스틱 갈고리(?) 형식으로 되어 있었다. 밀어넣으면 플라스틱이 좁아졌다가 다시 펴져 고정되는 형식이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BSo6T/btsQ7xE5vqA/FJJfpQwkDAqO4e4zgbAHs0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BSo6T/btsQ7xE5vqA/FJJfpQwkDAqO4e4zgbAHs0/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot; data-filename=&quot;20251011_2146171.jpg&quot; data-widthpercent=&quot;50&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BSo6T/btsQ7xE5vqA/FJJfpQwkDAqO4e4zgbAHs0/img.jpg&quot; alt=&quot;Personla Server Build - Raspberry Pi 초기 세팅 - Active Cooler가 놓여있다.&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBSo6T%2FbtsQ7xE5vqA%2FFJJfpQwkDAqO4e4zgbAHs0%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;2992&quot; height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5p4cM/btsQ7z30blm/ZSv7ny6KxeAs5lzDjBjwbK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5p4cM/btsQ7z30blm/ZSv7ny6KxeAs5lzDjBjwbK/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot; data-filename=&quot;20251011_2147241.jpg&quot; data-widthpercent=&quot;50&quot; style=&quot;width: 49.4186%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5p4cM/btsQ7z30blm/ZSv7ny6KxeAs5lzDjBjwbK/img.jpg&quot; alt=&quot;Personla Server Build - Raspberry Pi 초기 세팅 - Active Cooler 장착핀 모습이다.&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5p4cM%2FbtsQ7z30blm%2FZSv7ny6KxeAs5lzDjBjwbK%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;2992&quot; height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;Personla Server Build - Raspberry Pi 초기 세팅 - 1) Active Cooler 2) Activce Cooler 장착핀&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;플라스틱 고정핀으로 쿨러를 고정한 모습이다. 뒷면을 살펴보면 플라스틱 갈고리 부분이 뽈록 튀어나와 있는 것을 볼 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btbugI/btsQ6VzFM8y/mI0m7hyiMosAArPtXJON40/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btbugI/btsQ6VzFM8y/mI0m7hyiMosAArPtXJON40/img.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot; data-is-animation=&quot;false&quot; data-filename=&quot;20251011_2149051.jpg&quot; data-widthpercent=&quot;50&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btbugI/btsQ6VzFM8y/mI0m7hyiMosAArPtXJON40/img.jpg&quot; alt=&quot;Personla Server Build - Raspberry Pi 초기 세팅 - Active Cooler를 장착한 윗면 모습이다.&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtbugI%2FbtsQ6VzFM8y%2FmI0m7hyiMosAArPtXJON40%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;2992&quot; height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z1MWl/btsQ6g4400P/hf0BKsBwvNSPnzkY7sw6FK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z1MWl/btsQ6g4400P/hf0BKsBwvNSPnzkY7sw6FK/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot; data-filename=&quot;20251011_2149241.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z1MWl/btsQ6g4400P/hf0BKsBwvNSPnzkY7sw6FK/img.jpg&quot; alt=&quot;Personla Server Build - Raspberry Pi 초기 세팅 - Active Cooler를 장착한 아랫면 모습이다.&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz1MWl%2FbtsQ6g4400P%2Fhf0BKsBwvNSPnzkY7sw6FK%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;2992&quot; height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;Personla Server Build - Raspberry Pi 초기 세팅 - 1) 쿨러 장착한 윗면 2) 쿨러 장착한 아랫면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;회선 연결&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 마지막으로 쿨러를 동작키기 위한 회선 연결이다. 회선 연결도 상자 그림을 자세히 보면, 빨간색 선이 오른쪽을 향하도록 되어 있는 것을 볼 수 있다. 실제 장착도 이와 마찬가지로 해주면된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UZWRY/btsQ7LJZURL/Y4wqydriea2MhWHhKnu4O1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UZWRY/btsQ7LJZURL/Y4wqydriea2MhWHhKnu4O1/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot; data-filename=&quot;20251011_2150171.jpg&quot; data-widthpercent=&quot;50&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UZWRY/btsQ7LJZURL/Y4wqydriea2MhWHhKnu4O1/img.jpg&quot; alt=&quot;Personla Server Build - Raspberry Pi 초기 세팅 - Active Cooler 상자에 표현된 회선 연결 방법 모습이다.&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUZWRY%2FbtsQ7LJZURL%2FY4wqydriea2MhWHhKnu4O1%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;2992&quot; height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxzNQw/btsQ7d1akyE/0aVTZjb8oFXbvh95KtMmX0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxzNQw/btsQ7d1akyE/0aVTZjb8oFXbvh95KtMmX0/img.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot; data-is-animation=&quot;false&quot; data-filename=&quot;20251011_2150071.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxzNQw/btsQ7d1akyE/0aVTZjb8oFXbvh95KtMmX0/img.jpg&quot; alt=&quot;Personla Server Build - Raspberry Pi 초기 세팅 - Active Cooler의 회선 모습이다. 노란색&amp;amp;amp;#44; 검은색&amp;amp;amp;#44; 파란색&amp;amp;amp;#44; 빨간색 선이 나란히 있는 모습이다.&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxzNQw%2FbtsQ7d1akyE%2F0aVTZjb8oFXbvh95KtMmX0%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;2992&quot; height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;Personla Server Build - Raspberry Pi 초기 세팅 - Active Cooler 회선 연결&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;장착 완료&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;장착 완료한 모습이다. 선을 좀 더 깔끔하게 정리하고 싶지만, 현재는 여기까지가 최선으로 보인다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20251011_2152151.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bA2dpS/btsQ7Ri93zu/lYKbymtOVrATARH9Hmuqx0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bA2dpS/btsQ7Ri93zu/lYKbymtOVrATARH9Hmuqx0/img.jpg&quot; data-alt=&quot;Personla Server Build - Raspberry Pi 초기 세팅 - Active Cooler 장착 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bA2dpS/btsQ7Ri93zu/lYKbymtOVrATARH9Hmuqx0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbA2dpS%2FbtsQ7Ri93zu%2FlYKbymtOVrATARH9Hmuqx0%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; alt=&quot;Personla Server Build - Raspberry Pi 초기 세팅 - Active Cooler 장착을 완료한 모습이다.&quot; loading=&quot;lazy&quot; width=&quot;2992&quot; height=&quot;2992&quot; data-filename=&quot;20251011_2152151.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Personla Server Build - Raspberry Pi 초기 세팅 - Active Cooler 장착 완료&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;SD 카드 장착&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 정말 중요한 SD카드를 장착할 것이다. 지난 POST에서 OS를 이 SD카드에 넣어둔것으로 알 수 있듯이, 라즈베리파이에 OS를 제공하면서 동시에 저장소 역할도 수행한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20251011_2153041.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLVyGZ/btsQ6YQnDFx/85krIucxHZjybdq2sDlRq0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLVyGZ/btsQ6YQnDFx/85krIucxHZjybdq2sDlRq0/img.jpg&quot; data-alt=&quot;Personla Server Build - Raspberry Pi 초기 세팅 - SD 카드와 라즈베리파이&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLVyGZ/btsQ6YQnDFx/85krIucxHZjybdq2sDlRq0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLVyGZ%2FbtsQ6YQnDFx%2F85krIucxHZjybdq2sDlRq0%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; alt=&quot;Personla Server Build - Raspberry Pi 초기 세팅 - SD 카드와 라즈베리 파이가 나란히 놓여있는 모습이다.&quot; loading=&quot;lazy&quot; width=&quot;2992&quot; height=&quot;2992&quot; data-filename=&quot;20251011_2153041.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Personla Server Build - Raspberry Pi 초기 세팅 - SD 카드와 라즈베리파이&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SD카드는 라즈베리파이의 아랫부분에 장착한다. 밑면을 보면 장착부가 보인다. 이 곳에 아래 사진과 같은 모습으로 넣어주면 된다. 참고로 마지막 사진이 모두 들어간 것이니, 더 넣기 위해 무리하게 밀어넣지 않도록 주의해야 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cGtTGm/btsQ7t3MUeG/l9nFLM98CkKAKoD4gFZu8K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cGtTGm/btsQ7t3MUeG/l9nFLM98CkKAKoD4gFZu8K/img.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot; data-is-animation=&quot;false&quot; data-filename=&quot;20251011_2153161.jpg&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cGtTGm/btsQ7t3MUeG/l9nFLM98CkKAKoD4gFZu8K/img.jpg&quot; alt=&quot;Personla Server Build - Raspberry Pi 초기 세팅 - 라즈베리파이 아랫면 SD 카드 장착부 표시가 되어 있는 모습이다.&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGtTGm%2FbtsQ7t3MUeG%2Fl9nFLM98CkKAKoD4gFZu8K%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;2992&quot; height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgH65R/btsQ49lh7O5/yRrNjYRilbNOBaJQrcrau1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgH65R/btsQ49lh7O5/yRrNjYRilbNOBaJQrcrau1/img.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot; data-is-animation=&quot;false&quot; data-filename=&quot;20251011_2153291.jpg&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgH65R/btsQ49lh7O5/yRrNjYRilbNOBaJQrcrau1/img.jpg&quot; alt=&quot;Personla Server Build - Raspberry Pi 초기 세팅 - 라즈베리파이에 SD 카드를 장착하고 있는 모습이다.&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgH65R%2FbtsQ49lh7O5%2FyRrNjYRilbNOBaJQrcrau1%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;2992&quot; height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwR1t6/btsQ6ItQRF6/vhvHnkHH0leYKkhVOfatek/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwR1t6/btsQ6ItQRF6/vhvHnkHH0leYKkhVOfatek/img.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot; data-is-animation=&quot;false&quot; data-filename=&quot;20251011_2153401.jpg&quot; style=&quot;width: 32.5581%;&quot; data-widthpercent=&quot;33.34&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwR1t6/btsQ6ItQRF6/vhvHnkHH0leYKkhVOfatek/img.jpg&quot; alt=&quot;Personla Server Build - Raspberry Pi 초기 세팅 - 라즈베리파이에 SD카드가 장착 완료된 모습이다.&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwR1t6%2FbtsQ6ItQRF6%2FvhvHnkHH0leYKkhVOfatek%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;2992&quot; height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;Personla Server Build - Raspberry Pi 초기 세팅 - SD 카드 장착&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;초기 세팅 완료&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Active Cooler와 SD 카드를 장착하므로서 초기 세팅이 완료 되었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20251011_2154001.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cIjsDL/btsQ7aJ9LNB/Wq0G6jhKThjyKoFIckqjw0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cIjsDL/btsQ7aJ9LNB/Wq0G6jhKThjyKoFIckqjw0/img.jpg&quot; data-alt=&quot;Personla Server Build - Raspberry Pi 초기 세팅 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cIjsDL/btsQ7aJ9LNB/Wq0G6jhKThjyKoFIckqjw0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcIjsDL%2FbtsQ7aJ9LNB%2FWq0G6jhKThjyKoFIckqjw0%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; alt=&quot;Personla Server Build - Raspberry Pi 초기 세팅을 완료한 모습이다.&quot; loading=&quot;lazy&quot; width=&quot;2992&quot; height=&quot;2992&quot; data-filename=&quot;20251011_2154001.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Personla Server Build - Raspberry Pi 초기 세팅 완료&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Projects/Personal Server Build</category>
      <category>라즈베리파이</category>
      <category>서버구축</category>
      <author>읻민스</author>
      <guid isPermaLink="true">https://ydmins.tistory.com/165</guid>
      <comments>https://ydmins.tistory.com/165#entry165comment</comments>
      <pubDate>Sat, 11 Oct 2025 22:43:08 +0900</pubDate>
    </item>
    <item>
      <title>Raspberry Pi | 초기 세팅 - OS 설치하기 A to Z</title>
      <link>https://ydmins.tistory.com/164</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Raspberry Pi 초기 세팅 과정 중 OS 설치 과정에 대한 글이다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Raspberry PI 초기 세팅 - OS 설치하기&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;server-build-project-initial-setting-os-install-thumbnail.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bodJy7/btsQ3ktsm8K/RTkz2ma65PKZyECEiB9Lw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bodJy7/btsQ3ktsm8K/RTkz2ma65PKZyECEiB9Lw1/img.png&quot; data-alt=&quot;Personal Server Build - Raspberry Pi - Initial Setting : OS Install&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bodJy7/btsQ3ktsm8K/RTkz2ma65PKZyECEiB9Lw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbodJy7%2FbtsQ3ktsm8K%2FRTkz2ma65PKZyECEiB9Lw1%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; alt=&quot;Personal Server Build - Raspberry Pi - Initial Setting : OS Install 썸네일 이미지이다.&quot; loading=&quot;lazy&quot; width=&quot;900&quot; height=&quot;600&quot; data-filename=&quot;server-build-project-initial-setting-os-install-thumbnail.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Personal Server Build - Raspberry Pi - Initial Setting : OS Install&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;Raspberry Pi 부팅 과정 이해하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OS를 설치하기 전에, 라즈베리파이의 부팅 과정을 이해하면 좋다. 부팅(booting)이라 하면, 컴퓨터가 작동을 시작하면 저장장치에 있던 운영체제를 메모리에 올려 실행시키는 일련의 과정을 말한다. 이 과정을 일반 PC와 비교하면서 살표보도록 하자.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;일반 PC 부팅 과정&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반 PC(x86 기반 CPU)에 전원이 연결되면 Firmware(BIOS/UEFI)가 가장 실행된다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;by Firmware(BIOS/UEFI)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하드웨어 점검 및 초기화(POST) 과정을 수행한다. 이후 웅영체제 프로그램이 담겨 있는 부트 디바이스를 탐색한 뒤, 부트로더를 실행(load)한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;by Bootloader&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 부트로더는 저장장치에서 OS 커널을 찾아 메모리에 로드한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;by Kernel&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 하드웨어 제어권은 커널이 갖고, 나머지 OS파일, 드라이버, 서비스 등을 로드하고 사용자 인터페이스를 띄워주며 부팅을 완료한다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;TURNON &amp;gt;&amp;gt; Firmware -&amp;gt; Bootloader -&amp;gt; Kernel &amp;gt;&amp;gt; Booted&lt;/blockquote&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;라즈베리파이 부팅 과정&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라즈베리파이(ARM 기반 CPU)에 전원이 연결되면 SoC(System on Chip) 내부 ROM에 내장된 부트코드가 실행된다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;by Bootcode (1차 부트로더 - First-stage Bootloader라고도 부름)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부트코드는 연결된 저장소에서 부팅 파티션을 탐색해, bootcode.bin 파일을 실행한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;by bootcode.bin - GPU 설정 초기화&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 코드는 GPU와 SDRAM 초기화를 한뒤 메인칩셋을 구동 상태로 만든느 초기화 작업을 진행한다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;최신 라즈베리파이 모델 (Pi 4 이후)에선 부트코드의 기능이 칩 내부 SPI EEPROM이란 곳으로 옮겨져, bootcode.bin은 비필수이거나 역할이 축소되었다고 한다.&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;start.elf (Firmware of GPU) - 하드웨어 설정 초기화&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;boodcode.bin 실행이 완료된 후, GPU Firmware 파일인 start.elf가 제어권을 가져와 부팅 과정을 이어나간다. 이 파일은 커널을 메모리에 로드하기 위해 GPU와 CPU 연결하고, 메모리 설정, 장치 초기화등의 작업을 진행한다. 일련의 초기화 작업이 마무리되면, 저장소에서 kernel.img를 찾아 CPU의 메인 메모리인 RAM에 로드하고 실행한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;kernel.img&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 파일은 리눅스 운영체제의 핵심으로, 장치 드라이버를 로드하고, 파일시스템(rootfs)을 마운트하고 OS가 실행된다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;파일시스템을 마운트하기 까지의 또 하나의 일련의 과정이 존재하지만 여기까지만 살펴보려고 한다.&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;TURNON &amp;gt;&amp;gt; Bootcode (Soc) -&amp;gt; bootcode.bin -&amp;gt; start.elf -&amp;gt; kernel.img -&amp;gt; rootfs mount &amp;gt;&amp;gt; Booted&lt;/blockquote&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;라즈베리파이 Lite OS를 설치하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 과정을 살펴보면, 칩에 내장되어 있는 Bootcode외 bootcode.bin부터 kernel.img까지의 파일들, 즉 저장소에 부팅환경을 만든다. 즉 넣어줘야 한다. 이 작업은 아무것도 없는 라즈베리파이 칩에서 하는 것이 아니라, 이미 구동중이 PC를 이용해서 라즈베리파이에서 사용할 저장소에 파일들을 넣어줘야 한다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;어떻게?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제로 이 파일들을 하나하나 넣어줄 필요는 없고, Raspberry Pi Imager라는 공식 프로그램을 사용하면 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-10-07 00.23.12.png&quot; data-origin-width=&quot;2220&quot; data-origin-height=&quot;904&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vKEZ0/btsQ1YreRk4/5kbrQsRhMUZI4E1xs5CXTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vKEZ0/btsQ1YreRk4/5kbrQsRhMUZI4E1xs5CXTk/img.png&quot; data-alt=&quot;Raspberry Pi Imager 갈무리&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vKEZ0/btsQ1YreRk4/5kbrQsRhMUZI4E1xs5CXTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvKEZ0%2FbtsQ1YreRk4%2F5kbrQsRhMUZI4E1xs5CXTk%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; alt=&quot;Raspberry Pi Imager 웹 페이지 모습이다.&quot; loading=&quot;lazy&quot; width=&quot;2220&quot; height=&quot;904&quot; data-filename=&quot;스크린샷 2025-10-07 00.23.12.png&quot; data-origin-width=&quot;2220&quot; data-origin-height=&quot;904&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Raspberry Pi Imager 갈무리&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 링크에가면 Raspberry Pi Imager를 찾을 수 있다.&lt;/p&gt;
&lt;figure id=&quot;og_1759764241758&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Raspberry Pi software &amp;ndash; Raspberry Pi&quot; data-og-description=&quot;From our operating system to our GitHub repos, explore the software that powers our technology&quot; data-og-host=&quot;www.raspberrypi.com&quot; data-og-source-url=&quot;https://www.raspberrypi.com/software/&quot; data-og-url=&quot;https://www.raspberrypi.com/software/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bK1dfo/hyZKzhJWEo/SixkVGHho30OXX9eGQ68hk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/b8rIeg/hyZKHFf5d3/qqARvqUIL6ZexsWVdFkUl1/img.png?width=1500&amp;amp;height=1690&amp;amp;face=0_0_1500_1690,https://scrap.kakaocdn.net/dn/puLlf/hyZKPpKx0X/LoYaUUt7uCKvnztkhmuBmk/img.png?width=1500&amp;amp;height=1690&amp;amp;face=0_0_1500_1690&quot;&gt;&lt;a href=&quot;https://www.raspberrypi.com/software/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.raspberrypi.com/software/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bK1dfo/hyZKzhJWEo/SixkVGHho30OXX9eGQ68hk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/b8rIeg/hyZKHFf5d3/qqARvqUIL6ZexsWVdFkUl1/img.png?width=1500&amp;amp;height=1690&amp;amp;face=0_0_1500_1690,https://scrap.kakaocdn.net/dn/puLlf/hyZKPpKx0X/LoYaUUt7uCKvnztkhmuBmk/img.png?width=1500&amp;amp;height=1690&amp;amp;face=0_0_1500_1690');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Raspberry Pi software &amp;ndash; Raspberry Pi&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;From our operating system to our GitHub repos, explore the software that powers our technology&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.raspberrypi.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자신의 운영체제에 맞는 프로그램을 다운로드 하면된다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Raspberry Pi Imager 실행&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라즈베리파이 이매저를 실행하면 아래와 같은 화면이 뜬다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-10-07 21.33.471.png&quot; data-origin-width=&quot;1584&quot; data-origin-height=&quot;1180&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uChg4/btsQ30akUFg/QINrkiRNGQoKZ1PkN9bZK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uChg4/btsQ30akUFg/QINrkiRNGQoKZ1PkN9bZK0/img.png&quot; data-alt=&quot;Personal Server Build - Raspberry Pi Imager&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uChg4/btsQ30akUFg/QINrkiRNGQoKZ1PkN9bZK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuChg4%2FbtsQ30akUFg%2FQINrkiRNGQoKZ1PkN9bZK0%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; alt=&quot;Personal Server Build - Raspberry Pi Imager 프로그램 모습이다.&quot; loading=&quot;lazy&quot; width=&quot;1584&quot; height=&quot;1180&quot; data-filename=&quot;스크린샷 2025-10-07 21.33.471.png&quot; data-origin-width=&quot;1584&quot; data-origin-height=&quot;1180&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Personal Server Build - Raspberry Pi Imager&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;장치 선택&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용할 Raspberry Pi 기기를 선택한다. ydmins는 구매한 Raspberry Pi 5를 선택했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-10-07 22.04.181.png&quot; data-origin-width=&quot;1584&quot; data-origin-height=&quot;1180&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cnIexP/btsQ2ocghg5/9LeHMBhR2Z17aoI88Jwwkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cnIexP/btsQ2ocghg5/9LeHMBhR2Z17aoI88Jwwkk/img.png&quot; data-alt=&quot;Personal Server Build - Raspberry Pi Imager : 디바이스 선택&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cnIexP/btsQ2ocghg5/9LeHMBhR2Z17aoI88Jwwkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcnIexP%2FbtsQ2ocghg5%2F9LeHMBhR2Z17aoI88Jwwkk%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; alt=&quot;Personal Server Build - Raspberry Pi Imager 디바이스 선택 창 모습이다.&quot; loading=&quot;lazy&quot; width=&quot;1584&quot; height=&quot;1180&quot; data-filename=&quot;스크린샷 2025-10-07 22.04.181.png&quot; data-origin-width=&quot;1584&quot; data-origin-height=&quot;1180&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Personal Server Build - Raspberry Pi Imager : 디바이스 선택&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;OS 선택하기&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번엔 Lite OS를 선택할 것이다. Raspberry Pi OS (other)를 선택후, Raspberry Pi OS Lite (64-bit)를 선택한다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Raspberry Pi OS (other) &amp;gt; Raspberry Pi OS Lite (640bit)&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bE174c/btsQ4hXdWkm/7u9aOcvHLZhTOLqOBo8Xx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bE174c/btsQ4hXdWkm/7u9aOcvHLZhTOLqOBo8Xx1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1584&quot; data-origin-height=&quot;1180&quot; data-filename=&quot;스크린샷 2025-10-07 22.04.221.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bE174c/btsQ4hXdWkm/7u9aOcvHLZhTOLqOBo8Xx1/img.png&quot; alt=&quot;Personal Server Build - Raspberry Pi Imager OS 선택창 모습이다.&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbE174c%2FbtsQ4hXdWkm%2F7u9aOcvHLZhTOLqOBo8Xx1%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;1584&quot; height=&quot;1180&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lXFH6/btsQ3lF3o5h/h8OWLI4L4Kkn9hyMt3z031/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lXFH6/btsQ3lF3o5h/h8OWLI4L4Kkn9hyMt3z031/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1584&quot; data-origin-height=&quot;1180&quot; data-filename=&quot;스크린샷 2025-10-07 22.04.261.png&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lXFH6/btsQ3lF3o5h/h8OWLI4L4Kkn9hyMt3z031/img.png&quot; alt=&quot;Personal Server Build - Raspberry Pi Imager OS 선택창 모습이다.&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlXFH6%2FbtsQ3lF3o5h%2Fh8OWLI4L4Kkn9hyMt3z031%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;1584&quot; height=&quot;1180&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;Personal Server Build - Raspberry Pi Imager : OS 선택&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;저장소 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용할 저장소를 컴퓨터에 연결한 후 선택한다. ydmins는 Micro SD 카드를 사용할 것이다. 이 세 설정을 완료한 다음에는 '다음' 버튼을 눌러준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-10-07 22.13.211.png&quot; data-origin-width=&quot;1584&quot; data-origin-height=&quot;1180&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nGCbN/btsQ3EZEDRF/sRqhGCzTKbufir7P7gti61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nGCbN/btsQ3EZEDRF/sRqhGCzTKbufir7P7gti61/img.png&quot; data-alt=&quot;Personal Server Build - Raspberry Pi Imager 설정 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nGCbN/btsQ3EZEDRF/sRqhGCzTKbufir7P7gti61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnGCbN%2FbtsQ3EZEDRF%2FsRqhGCzTKbufir7P7gti61%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; alt=&quot;Personal Server Build - Raspberry Pi Imager 설정이 완료된 모습이다.&quot; loading=&quot;lazy&quot; width=&quot;1584&quot; height=&quot;1180&quot; data-filename=&quot;스크린샷 2025-10-07 22.13.211.png&quot; data-origin-width=&quot;1584&quot; data-origin-height=&quot;1180&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Personal Server Build - Raspberry Pi Imager 설정 완료&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설정 편집하기&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 새로운 팝업이 뜬다. 여기서 '설정을 편집하기' 버튼을 눌러 몇가치 추가 설정을 해주면 좋다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-10-07 22.13.261.png&quot; data-origin-width=&quot;1584&quot; data-origin-height=&quot;1180&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pyCG6/btsQ2TiMU2U/1oimRAXMjNuvXwgccQbKFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pyCG6/btsQ2TiMU2U/1oimRAXMjNuvXwgccQbKFK/img.png&quot; data-alt=&quot;Personal Server Build - Raspberry Pi Imager 팝업&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pyCG6/btsQ2TiMU2U/1oimRAXMjNuvXwgccQbKFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpyCG6%2FbtsQ2TiMU2U%2F1oimRAXMjNuvXwgccQbKFK%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; alt=&quot;Personal Server Build - Raspberry Pi Imager 팝업창 모습이다.&quot; loading=&quot;lazy&quot; width=&quot;1584&quot; height=&quot;1180&quot; data-filename=&quot;스크린샷 2025-10-07 22.13.261.png&quot; data-origin-width=&quot;1584&quot; data-origin-height=&quot;1180&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Personal Server Build - Raspberry Pi Imager 팝업&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;일반 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;hostname은 id 같은 것으로, 필수는 아니지만 식별용으로 해줘도 좋다.&lt;br /&gt;이름 및 비밀번호 : 이 설정을 해 주었다.&amp;nbsp;&lt;br /&gt;무선 LAN 설정 : 접속할 기기가 사용중인 Wifi 이름과 비밀번호를 입력해 주면 라즈베리파이 부팅시 자동으로 Wifi 연결이 된다.&lt;/blockquote&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-filename=&quot;스크린샷 2025-10-07 22.14.461.png&quot; data-origin-width=&quot;1584&quot; data-origin-height=&quot;1180&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dnBIwI/btsQ3phlEq1/SbCzoLuTzqxRrgqTojBfY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dnBIwI/btsQ3phlEq1/SbCzoLuTzqxRrgqTojBfY1/img.png&quot; data-alt=&quot;Personal Server Build - Raspberry Pi Imager 일반 설정&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dnBIwI/btsQ3phlEq1/SbCzoLuTzqxRrgqTojBfY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdnBIwI%2FbtsQ3phlEq1%2FSbCzoLuTzqxRrgqTojBfY1%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; alt=&quot;Personal Server Build - Raspberry Pi Imager 일반 설정 창 모습이다.&quot; loading=&quot;lazy&quot; width=&quot;1584&quot; height=&quot;1180&quot; data-filename=&quot;스크린샷 2025-10-07 22.14.461.png&quot; data-origin-width=&quot;1584&quot; data-origin-height=&quot;1180&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Personal Server Build - Raspberry Pi Imager 일반 설정&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서비스&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서비스 설정에서 SSH 사용을 설정해 준다. SSH KEY를 사용할 수도 있겠지만, 이번엔 비밀번호를 사용한 인증 사용을 선택하였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-10-07 22.16.031.png&quot; data-origin-width=&quot;1584&quot; data-origin-height=&quot;1180&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rNX2o/btsQ2vvDOgY/dTLGOikh9t9RvgtnsCzAkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rNX2o/btsQ2vvDOgY/dTLGOikh9t9RvgtnsCzAkk/img.png&quot; data-alt=&quot;Personal Server Build - Raspberry Pi Imager 서비스 설정&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rNX2o/btsQ2vvDOgY/dTLGOikh9t9RvgtnsCzAkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrNX2o%2FbtsQ2vvDOgY%2FdTLGOikh9t9RvgtnsCzAkk%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; alt=&quot;Personal Server Build - Raspberry Pi Imager 서비스 설정 창 모습이다.&quot; loading=&quot;lazy&quot; width=&quot;1584&quot; height=&quot;1180&quot; data-filename=&quot;스크린샷 2025-10-07 22.16.031.png&quot; data-origin-width=&quot;1584&quot; data-origin-height=&quot;1180&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Personal Server Build - Raspberry Pi Imager 서비스 설정&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이정도의 설정을 한 다음에 '저장' 버튼을 눌러 준다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설정 완료&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 '예'를 눌러주면 메모리카드에 OS 작성이 시작된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-10-07 22.18.091.png&quot; data-origin-width=&quot;1584&quot; data-origin-height=&quot;1180&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YpfrU/btsQ2etXjVY/86wiuW4vZqnaP8vrLtTcsK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YpfrU/btsQ2etXjVY/86wiuW4vZqnaP8vrLtTcsK/img.png&quot; data-alt=&quot;Personal Server Build - Raspberry Pi Imager 추가 설정 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YpfrU/btsQ2etXjVY/86wiuW4vZqnaP8vrLtTcsK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYpfrU%2FbtsQ2etXjVY%2F86wiuW4vZqnaP8vrLtTcsK%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; alt=&quot;Personal Server Build - Raspberry Pi Imager 추가 설정 완료 후 팝업 모습이다.&quot; loading=&quot;lazy&quot; width=&quot;1584&quot; height=&quot;1180&quot; data-filename=&quot;스크린샷 2025-10-07 22.18.091.png&quot; data-origin-width=&quot;1584&quot; data-origin-height=&quot;1180&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Personal Server Build - Raspberry Pi Imager 추가 설정 완료&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c96yOA/btsQ34RmGdM/kA5INwv9Z9UAhHIZJcSvP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c96yOA/btsQ34RmGdM/kA5INwv9Z9UAhHIZJcSvP0/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1584&quot; data-origin-height=&quot;1180&quot; data-filename=&quot;스크린샷 2025-10-07 22.18.421.png&quot; style=&quot;width: 32.3366%; margin-right: 10px;&quot; data-widthpercent=&quot;33.11&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c96yOA/btsQ34RmGdM/kA5INwv9Z9UAhHIZJcSvP0/img.png&quot; alt=&quot;Personal Server Build - Raspberry Pi Imager 쓰기 작업이 시작된 모습이다.&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc96yOA%2FbtsQ34RmGdM%2FkA5INwv9Z9UAhHIZJcSvP0%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;1584&quot; height=&quot;1180&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FG7Yz/btsQ4P0tCbR/6NVg2ChzcyNKGKETcMsHjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FG7Yz/btsQ4P0tCbR/6NVg2ChzcyNKGKETcMsHjK/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1584&quot; data-origin-height=&quot;1180&quot; data-filename=&quot;스크린샷 2025-10-07 22.24.251.png&quot; style=&quot;width: 32.3366%; margin-right: 10px;&quot; data-widthpercent=&quot;33.11&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FG7Yz/btsQ4P0tCbR/6NVg2ChzcyNKGKETcMsHjK/img.png&quot; alt=&quot;Personal Server Build - Raspberry Pi Imager 쓰기 작업이 거의 완료된 모습이다.&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFG7Yz%2FbtsQ4P0tCbR%2F6NVg2ChzcyNKGKETcMsHjK%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;1584&quot; height=&quot;1180&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wcv7d/btsQ4mjXnol/f0sOH3MRC2ugkeZh1Jw2wk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wcv7d/btsQ4mjXnol/f0sOH3MRC2ugkeZh1Jw2wk/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1496&quot; data-origin-height=&quot;1092&quot; data-filename=&quot;스크린샷 2025-10-07 22.24.461.png&quot; style=&quot;width: 33.0012%;&quot; data-widthpercent=&quot;33.78&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wcv7d/btsQ4mjXnol/f0sOH3MRC2ugkeZh1Jw2wk/img.png&quot; alt=&quot;Personal Server Build - Raspberry Pi Imager 확인작업이 시작된 모습이다.&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwcv7d%2FbtsQ4mjXnol%2Ff0sOH3MRC2ugkeZh1Jw2wk%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;1496&quot; height=&quot;1092&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;Personal Server Build - Raspberry Pi Imager 쓰기 및 확인 작업중&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;완료&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다운로드와 확인이 완료되면 아래와 같이 '쓰기 완료' 팝업을 확인할 수 있다. 계속을 누른 뒤 메모리를 컴퓨터에서 제거하면된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-10-07 22.33.021.png&quot; data-origin-width=&quot;1496&quot; data-origin-height=&quot;1092&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUbNwF/btsQ3feO8yr/aOjmFxm547EaOkJbBiNWY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUbNwF/btsQ3feO8yr/aOjmFxm547EaOkJbBiNWY0/img.png&quot; data-alt=&quot;Personal Server Build - Raspberry Pi Imager OS 쓰기 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUbNwF/btsQ3feO8yr/aOjmFxm547EaOkJbBiNWY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUbNwF%2FbtsQ3feO8yr%2FaOjmFxm547EaOkJbBiNWY0%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; alt=&quot;Personal Server Build - Raspberry Pi Imager OS 쓰기 작업이 완료된 모습이다.&quot; loading=&quot;lazy&quot; width=&quot;1496&quot; height=&quot;1092&quot; data-filename=&quot;스크린샷 2025-10-07 22.33.021.png&quot; data-origin-width=&quot;1496&quot; data-origin-height=&quot;1092&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Personal Server Build - Raspberry Pi Imager OS 쓰기 완료&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;마무리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라즈베리파이에서 사용할 OS 준비가 완료되었다. OS 준비하는 과정을 통해서 컴퓨터 부팅 과정을 살펴보고 CPU 아키텍처별 차이점을 살펴볼 수 있어서 좋은 경험이었다. OS를 설치하는 것이, 라즈베리파이 Imager를 이용해 디바이스에서 사용할 저장소에 OS를 쓰는 간단한 작업이었다는 점에서, 그동안 너무 겁만 먹고 있었던건 아닌가 하는 생각도 들었다. 다음엔 x86 기반 PC에 운영체제를 설치하는 것도 해보면 좋을 것 가단 생각이 든다.&lt;/p&gt;</description>
      <category>Projects/Personal Server Build</category>
      <category>라즈베리파이</category>
      <category>서버구축</category>
      <author>읻민스</author>
      <guid isPermaLink="true">https://ydmins.tistory.com/164</guid>
      <comments>https://ydmins.tistory.com/164#entry164comment</comments>
      <pubDate>Wed, 8 Oct 2025 09:00:20 +0900</pubDate>
    </item>
  </channel>
</rss>