<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>exhibitlove</title>
    <link>https://exhibitlove.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sun, 31 May 2026 00:27:54 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>진열사랑</managingEditor>
    <item>
      <title>ANY 안에 실제 값 넣기</title>
      <link>https://exhibitlove.tistory.com/721</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;아래 mybatis xml에 값을 넘기기 위한 java 소스는 다음과 같다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1f22; color: #bcbec4;&quot;&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;List&amp;lt;String&amp;gt; pnuList = msMapper.getPnu(param); 
result += snMapper.insertRcptrSwtrmt(fcltCd, levyYm, pnuList.toArray(new String[0]));&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pnuList.toArray(new String[0]) 에 대해 자세히 보자..&lt;/p&gt;
&lt;p data-end=&quot;407&quot; data-start=&quot;364&quot; data-ke-size=&quot;size16&quot;&gt;List의 메서드 toArray(T[] a)는 다음 규칙으로 동작해요.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;567&quot; data-start=&quot;409&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;488&quot; data-start=&quot;409&quot;&gt;전달한 배열 a의 길이가 &lt;b&gt;리스트 크기보다 작으면&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;488&quot; data-start=&quot;446&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;488&quot; data-start=&quot;446&quot;&gt;&lt;b&gt;리스트 크기에 맞는 새 배열을 내부에서 만들어서&lt;/b&gt; 거기에 담아 반환&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;567&quot; data-start=&quot;489&quot;&gt;전달한 배열 길이가 &lt;b&gt;리스트 크기보다 크거나 같으면&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;567&quot; data-start=&quot;525&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;567&quot; data-start=&quot;525&quot;&gt;그 배열 a를 그대로 사용해서 채우고 반환 (남는 칸은 null)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;644&quot; data-start=&quot;569&quot; data-ke-size=&quot;size16&quot;&gt;즉, new String[0]은 길이가 0이라서 항상 &amp;ldquo;작음&amp;rdquo; &amp;rarr; &lt;b&gt;필요한 크기의 새 String[]을 만들어 반환&lt;/b&gt;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;------&lt;br /&gt;and (ctpv_cd || sgg_cd || dng_cd) = ANY(#{codeList}::text[]) &lt;br /&gt;위 문장은 mybatis 안의 문장이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제로 값을 넣어보기 위한 Dbeaver에서 넣는 문장은 다음과 같다.&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;AND (ctpv_cd || sgg_cd || dng_cd) = ANY( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ARRAY['11010101',&amp;nbsp;'11010102',&amp;nbsp;'26020103'] &lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;AND&amp;nbsp;(ctpv_cd&amp;nbsp;||&amp;nbsp;sgg_cd&amp;nbsp;||&amp;nbsp;dng_cd)&amp;nbsp;=&amp;nbsp;&lt;b&gt;ANY&lt;/b&gt;( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&amp;nbsp;ARRAY&lt;/b&gt;['11010101',&amp;nbsp;'11010102']&lt;b&gt;::text[]&lt;/b&gt; &lt;br /&gt;)&lt;/p&gt;</description>
      <category>Skill/postgreSQL</category>
      <author>진열사랑</author>
      <guid isPermaLink="true">https://exhibitlove.tistory.com/721</guid>
      <comments>https://exhibitlove.tistory.com/721#entry721comment</comments>
      <pubDate>Wed, 28 Jan 2026 15:22:29 +0900</pubDate>
    </item>
    <item>
      <title>몇번째이며, 진행 % query로 구하기</title>
      <link>https://exhibitlove.tistory.com/720</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;SELECT &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;swtrmt_fclt_cd, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ROW_NUMBER()&amp;nbsp;OVER&amp;nbsp;(ORDER&amp;nbsp;BY&amp;nbsp;swtrmt_fclt_cd)&amp;nbsp;AS&amp;nbsp;seq_no,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--&amp;nbsp;몇&amp;nbsp;번째 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;COUNT(*)&amp;nbsp;OVER&amp;nbsp;()&amp;nbsp;AS&amp;nbsp;total_cnt,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--&amp;nbsp;전체&amp;nbsp;건수 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ROUND( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ROW_NUMBER()&amp;nbsp;OVER&amp;nbsp;(ORDER&amp;nbsp;BY&amp;nbsp;swtrmt_fclt_cd) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;100.0 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/&amp;nbsp;COUNT(*)&amp;nbsp;OVER&amp;nbsp;(), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&amp;nbsp;AS&amp;nbsp;pct&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--&amp;nbsp;몇&amp;nbsp;% &lt;br /&gt;FROM&amp;nbsp;sm_bs_ms.tb_ms_swage_prcs_zone &lt;br /&gt;WHERE&amp;nbsp;swtrmt_fclt_cd&amp;nbsp;IS&amp;nbsp;NOT&amp;nbsp;NULL &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;swtrmt_fclt_cd;&lt;/p&gt;</description>
      <category>Skill/postgreSQL</category>
      <author>진열사랑</author>
      <guid isPermaLink="true">https://exhibitlove.tistory.com/720</guid>
      <comments>https://exhibitlove.tistory.com/720#entry720comment</comments>
      <pubDate>Wed, 28 Jan 2026 14:09:33 +0900</pubDate>
    </item>
    <item>
      <title>오케스트로(Orkestra)</title>
      <link>https://exhibitlove.tistory.com/719</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오케스트로(Orkestra)는 &lt;b&gt;쿠버네티스(Kubernetes) 환경에서 애플리케이션과 인프라를 쉽게 관리할 수 있도록 도와주는 시각적 오케스트레이션 툴&lt;/b&gt;입니다. 사용자가 직접 터미널 명령어를 입력하지 않고도, UI 기반으로 배포&amp;middot;모니터링&amp;middot;운영을 할 수 있게 해주죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주요 기능들을 정리하면 다음과 같습니다:&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  배포 및 관리&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;애플리케이션 배포&lt;/b&gt;: YAML 매니페스트 파일 없이도 클릭 몇 번으로 Deployment, Service, ConfigMap, Secret 등을 생성&amp;middot;수정 가능.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Helm 차트 지원&lt;/b&gt;: 미리 정의된 차트를 불러와 손쉽게 설치하거나 설정 변경 가능.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;네임스페이스 관리&lt;/b&gt;: 프로젝트별/서비스별 리소스를 구분해 손쉽게 관리.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  모니터링 및 운영&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;리소스 모니터링&lt;/b&gt;: Pod, Node, Service 상태를 실시간으로 시각화.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;로그 조회&lt;/b&gt;: 특정 Pod의 로그를 UI에서 바로 확인 가능.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;이벤트 추적&lt;/b&gt;: 오류 발생 시 관련 이벤트 로그를 한눈에 볼 수 있음.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;알림 및 대시보드&lt;/b&gt;: CPU, 메모리, 네트워크 트래픽 등 리소스 사용량을 한눈에 확인.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  보안 및 접근 제어&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;RBAC(Role-Based Access Control)&lt;/b&gt; 지원: 팀별 권한을 세분화해 안전한 운영 가능.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Secret 관리&lt;/b&gt;: 민감 정보(비밀번호, API Key 등)를 안전하게 보관하고 애플리케이션과 연동.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  자동화 및 편의 기능&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;자동 스케일링(HPA)&lt;/b&gt;: 부하에 따라 Pod 수 자동 조정.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;롤링 업데이트 / 롤백&lt;/b&gt;: UI에서 간단히 새 버전 배포 또는 이전 버전 복구.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;CI/CD 연동&lt;/b&gt;: GitOps 방식 배포 지원 &amp;rarr; Git 저장소와 연결해 코드 변경 시 자동 배포 가능.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Skill/cloud docker k8s</category>
      <author>진열사랑</author>
      <guid isPermaLink="true">https://exhibitlove.tistory.com/719</guid>
      <comments>https://exhibitlove.tistory.com/719#entry719comment</comments>
      <pubDate>Mon, 8 Sep 2025 21:11:18 +0900</pubDate>
    </item>
    <item>
      <title>Nginx</title>
      <link>https://exhibitlove.tistory.com/718</link>
      <description>&lt;h1&gt;  1. Nginx란?&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;**고성능 웹 서버(Web Server)**이자 &lt;b&gt;리버스 프록시 서버(Reverse Proxy Server)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;처음엔 아파치(Apache) 웹 서버의 한계를 극복하려고 만들어짐 (특히 동시 접속 처리 성능 문제).&lt;/li&gt;
&lt;li&gt;현재는 &lt;b&gt;웹 서버 + 로드밸런서 + 리버스 프록시&lt;/b&gt; 역할까지 수행하는 만능 서버 소프트웨어.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;  2. 주요 역할&lt;/h1&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅ (1) 정적 파일 서버&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTML, CSS, JS, 이미지 같은 정적 리소스를 빠르게 서비스&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅ (2) 리버스 프록시&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트 요청을 받아서 **백엔드 서버(Node.js, Spring, Python 등)**로 전달&lt;/li&gt;
&lt;li&gt;백엔드 서버는 내부망에서 돌고, Nginx가 앞단에서 요청을 분산 처리&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅ (3) 로드밸런서&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여러 대의 서버에 트래픽을 분산시켜서 부하 분산&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅ (4) SSL/TLS 종료&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTPS(SSL 인증서) 처리&lt;/li&gt;
&lt;li&gt;백엔드 서버는 HTTP로 동작하고, Nginx가 SSL 암호화를 담당&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅ (5) 캐싱&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;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;  3. Nginx vs Apache&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구분 Apache Nginx&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;구조&lt;/td&gt;
&lt;td&gt;프로세스/스레드 기반&lt;/td&gt;
&lt;td&gt;이벤트 기반 (비동기 처리)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;동시 연결 처리&lt;/td&gt;
&lt;td&gt;많아질수록 무겁고 느려짐&lt;/td&gt;
&lt;td&gt;수십만 연결도 효율적&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;장점&lt;/td&gt;
&lt;td&gt;모듈 많고 오래된 생태계&lt;/td&gt;
&lt;td&gt;가볍고 빠르고 최신 트래픽 환경에 강함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;사용 예시&lt;/td&gt;
&lt;td&gt;전통적 웹사이트, PHP 기반 서비스&lt;/td&gt;
&lt;td&gt;최신 웹서비스, API 서버 앞단 프록시&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;  4. 예시: 리버스 프록시 설정&lt;/h1&gt;
&lt;pre class=&quot;nginx&quot;&gt;&lt;code&gt;server {
    listen 80;
    server_name mysite.com;

    location / {
        proxy_pass http://localhost:3000;   # 백엔드(Node.js)로 요청 전달
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
&lt;/code&gt;&lt;/pre&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;mysite.com으로 들어온 요청을&lt;/li&gt;
&lt;li&gt;내부의 localhost:3000(예: Next.js, Spring 서버)으로 전달&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;  5. 정리&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Nginx(엔진엑스)&lt;/b&gt; = 가볍고 빠른 웹 서버 &amp;amp; 리버스 프록시&lt;/li&gt;
&lt;li&gt;보통 이렇게 씁니다:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정적 파일: Nginx가 바로 응답&lt;/li&gt;
&lt;li&gt;동적 API: Nginx &amp;rarr; 백엔드 서버 전달&lt;/li&gt;
&lt;li&gt;여러 서버 있으면 로드밸런싱&lt;/li&gt;
&lt;li&gt;HTTPS 인증서 관리&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  혹시 원하시는 게 &amp;ldquo;Nginx 개념 설명&amp;rdquo;일까요, 아니면 &amp;ldquo;Next.js나 Spring을 배포할 때 Nginx 설정 예시&amp;rdquo;를 보시는 게 더 도움이 될까요?&lt;/p&gt;</description>
      <category>Skill/기반기술</category>
      <author>진열사랑</author>
      <guid isPermaLink="true">https://exhibitlove.tistory.com/718</guid>
      <comments>https://exhibitlove.tistory.com/718#entry718comment</comments>
      <pubDate>Sat, 23 Aug 2025 14:16:26 +0900</pubDate>
    </item>
    <item>
      <title>PYCHARM 설정</title>
      <link>https://exhibitlove.tistory.com/717</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;SE-5ffd836a-efbc-4f8e-8145-e29e7f7546aa&quot; data-a11y-title=&quot;사진&quot; data-compid=&quot;SE-5ffd836a-efbc-4f8e-8145-e29e7f7546aa&quot;&gt;
&lt;div&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;SE-5ffd836a-efbc-4f8e-8145-e29e7f7546aa&quot; data-unitid=&quot;&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-5ffd836a-efbc-4f8e-8145-e29e7f7546aa&quot;&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;&quot; data-unitid=&quot;SE-5ffd836a-efbc-4f8e-8145-e29e7f7546aa&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;936&quot; data-origin-height=&quot;660&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VYeXg/btsP0xOXhDq/OCbN0Z67u5gV8If3YoU020/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VYeXg/btsP0xOXhDq/OCbN0Z67u5gV8If3YoU020/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VYeXg/btsP0xOXhDq/OCbN0Z67u5gV8If3YoU020/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVYeXg%2FbtsP0xOXhDq%2FOCbN0Z67u5gV8If3YoU020%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;693&quot; height=&quot;660&quot; data-origin-width=&quot;936&quot; data-origin-height=&quot;660&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;대표&lt;/span&gt;&lt;span&gt;사진 삭제&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI 활용 설정&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-50797a35-53ec-41b7-a9f8-0d358ef1b381&quot;&gt;
&lt;p id=&quot;SE-5441e9c9-091a-40bc-8fb8-f73e81c1b10e&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;사진 설명을 입력하세요.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-c97288e0-f6be-4658-9374-06b79130002c&quot; data-a11y-title=&quot;본문&quot; data-compid=&quot;SE-c97288e0-f6be-4658-9374-06b79130002c&quot;&gt;
&lt;div&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;SE-c97288e0-f6be-4658-9374-06b79130002c&quot; data-unitid=&quot;&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-a4f7c47f-5e7b-4ad2-a054-84bc48bc8f40&quot;&gt;
&lt;p id=&quot;SE-26617f43-30ab-11f0-837e-6b97d7af3c28&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;PyCharm에서 **외부(cmd 등)에서 생성한 가상환경**을 사용하려면, 다음 절차를 따르면 됩니다:&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-26617f44-30ab-11f0-837e-b7f81da038e7&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;---&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-26617f46-30ab-11f0-837e-0d2c847226c3&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;### 1. 외부에서 가상환경 생성&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-26617f48-30ab-11f0-837e-a1f332df321c&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예: cmd나 터미널에서 아래와 같이 생성했다고 가정&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-26617f4a-30ab-11f0-837e-0f84dea84756&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-26617f4b-30ab-11f0-837e-43353fe78315&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;python -m venv C:\venvs\myenv&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-26617f4f-30ab-11f0-837e-1101944324ac&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-26617f50-30ab-11f0-837e-bb096a59c241&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;### 2. PyCharm에서 해당 가상환경을 등록&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-26617f52-30ab-11f0-837e-2b1766841fd7&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1. **PyCharm 열기**&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-26617f54-30ab-11f0-837e-4913383f2516&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2. 메뉴에서 `File &amp;gt; Settings` (Mac은 `PyCharm &amp;gt; Preferences`)&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-26617f56-30ab-11f0-837e-5be766a711d3&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3. `Project: &amp;lt;프로젝트 이름&amp;gt; &amp;gt; Python Interpreter` 선택&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-26617f58-30ab-11f0-837e-b773adcd915e&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4. 우측 톱니바퀴 아이콘 클릭 &amp;rarr; `Add...`&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-26617f5a-30ab-11f0-837e-791bf995f0b3&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;5. 좌측에서 **&quot;Existing environment&quot;** 선택&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-26617f5c-30ab-11f0-837e-e3bb2c230c78&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;6. `...` 버튼 클릭해서 다음 경로의 **Python 실행 파일** 선택:&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-26617f5e-30ab-11f0-837e-812885d7f61f&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-26617f5f-30ab-11f0-837e-d1f56c3e656f&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; C:\venvs\myenv\Scripts\python.exe&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-26617f60-30ab-11f0-837e-6ff5f6f06d82&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-26617f62-30ab-11f0-837e-f5b2d7410361&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;7. 확인 클릭 &amp;rarr; 가상환경이 인터프리터 목록에 추가됨&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-26617f64-30ab-11f0-837e-8d9cb2b44430&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;---&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-26617f66-30ab-11f0-837e-ef66db19398d&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;### 3. 적용 확인&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-26617f67-30ab-11f0-837e-27ca39a04fab&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-26617f68-30ab-11f0-837e-ff8b00469382&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;* 해당 인터프리터가 프로젝트에 설정되어 있는지 확인&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-26617f69-30ab-11f0-837e-514ed1d7ff27&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;* 하단의 터미널에서도 가상환경이 자동 활성화됨&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-26617f6b-30ab-11f0-837e-99498c4aa4b0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;---&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-26617f6c-30ab-11f0-837e-2b542105641b&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-26617f6d-30ab-11f0-837e-a970e95809ea&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;필요 시 `requirements.txt` 등을 사용해 패키지 동기화도 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-26617f6e-30ab-11f0-837e-35aa5ae4afdf&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;혹시 가상환경을 WSL, Conda, Poetry 등으로 만들었다면 방식이 약간 달라지니 알려 주세요.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-26617f6f-30ab-11f0-837e-8114b22b861b&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Skill/기반기술</category>
      <author>진열사랑</author>
      <guid isPermaLink="true">https://exhibitlove.tistory.com/717</guid>
      <comments>https://exhibitlove.tistory.com/717#entry717comment</comments>
      <pubDate>Fri, 22 Aug 2025 13:34:56 +0900</pubDate>
    </item>
    <item>
      <title>thymeleaf</title>
      <link>https://exhibitlove.tistory.com/716</link>
      <description>&lt;h1&gt;  Thymeleaf (타임리프)&lt;/h1&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 개요&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Thymeleaf&lt;/b&gt;는 &lt;b&gt;서버 사이드 자바 템플릿 엔진&lt;/b&gt;으로, HTML, XML, JavaScript, CSS, 텍스트 등을 템플릿으로 사용할 수 있습니다.&lt;/li&gt;
&lt;li&gt;주로 &lt;b&gt;Spring MVC / Spring Boot&lt;/b&gt;와 함께 사용되며, JSP를 대체하는 목적으로 많이 선택됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. 핵심 철학&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;  Natural Template&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;순수 HTML 파일&lt;/b&gt;이 브라우저에서 열려도 정상적으로 보입니다.&lt;/li&gt;
&lt;li&gt;예를 들어, JSP는 &amp;lt;%= %&amp;gt; 같은 코드 때문에 디자이너가 HTML을 직접 열어보면 깨지지만, Thymeleaf는 th:text, th:if 같은 속성만 추가되므로 여전히 HTML로 렌더링이 가능합니다.&lt;br /&gt;&amp;rarr; 즉, &lt;b&gt;개발자 + 디자이너 협업에 적합&lt;/b&gt;합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 주요 기능&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;(1) &lt;b&gt;표현식(Expressions)&lt;/b&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;li&gt;선택 표현: *{...} (현재 객체를 기준으로 접근)&lt;/li&gt;
&lt;li&gt;URL 링크 표현: @{...}&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예:&lt;/p&gt;
&lt;pre class=&quot;dust&quot;&gt;&lt;code&gt;&amp;lt;p th:text=&quot;${user.name}&quot;&amp;gt;홍길동&amp;lt;/p&amp;gt;
&amp;lt;a th:href=&quot;@{/user/{id}(id=${user.id})}&quot;&amp;gt;상세보기&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;(2) &lt;b&gt;조건 처리&lt;/b&gt;&lt;/h3&gt;
&lt;pre class=&quot;dust&quot;&gt;&lt;code&gt;&amp;lt;p th:if=&quot;${user.active}&quot;&amp;gt;활성 사용자입니다.&amp;lt;/p&amp;gt;
&amp;lt;p th:unless=&quot;${user.active}&quot;&amp;gt;비활성 사용자입니다.&amp;lt;/p&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;(3) &lt;b&gt;반복 처리&lt;/b&gt;&lt;/h3&gt;
&lt;pre class=&quot;dust&quot;&gt;&lt;code&gt;&amp;lt;ul&amp;gt;
  &amp;lt;li th:each=&quot;item : ${items}&quot; th:text=&quot;${item}&quot;&amp;gt;아이템&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;(4) &lt;b&gt;속성 치환&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTML 태그 속성도 동적으로 바꿀 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;&amp;lt;img th:src=&quot;@{${user.profileImage}}&quot; alt=&quot;프로필&quot;/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;(5) &lt;b&gt;Fragment (공통 레이아웃 관리)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;헤더/푸터 같은 공통 UI를 따로 정의하고 재사용할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;&amp;lt;!-- header.html --&amp;gt;
&amp;lt;div th:fragment=&quot;header&quot;&amp;gt;
  &amp;lt;h1&amp;gt;사이트 헤더&amp;lt;/h1&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;!-- main.html --&amp;gt;
&amp;lt;html xmlns:th=&quot;http://www.thymeleaf.org&quot;&amp;gt;
  &amp;lt;body&amp;gt;
    &amp;lt;div th:replace=&quot;header :: header&quot;&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;p&amp;gt;메인 페이지 내용&amp;lt;/p&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;h1&gt;사이트 헤더&lt;/h1&gt;
&lt;/div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메인 페이지 내용&lt;/p&gt;
&lt;pre class=&quot;http&quot;&gt;&lt;code&gt;  

&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. Spring Boot와의 통합&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;spring-boot-starter-thymeleaf 의존성 추가:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;spring-boot-starter-thymeleaf&amp;lt;/artifactId&amp;gt;
&amp;lt;/dependency&amp;gt;
&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;기본적으로 src/main/resources/templates 폴더에 있는 .html 파일을 View로 사용합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Controller 예시:&lt;/p&gt;
&lt;pre class=&quot;kotlin&quot;&gt;&lt;code&gt;@Controller
public class HelloController {
    @GetMapping(&quot;/hello&quot;)
    public String hello(Model model) {
        model.addAttribute(&quot;name&quot;, &quot;홍길동&quot;);
        return &quot;hello&quot;; // &amp;rarr; templates/hello.html 렌더링
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. 장점과 단점&lt;/h2&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;자연스러운 HTML &amp;rarr; 협업 효율성 &amp;uarr;&lt;/li&gt;
&lt;li&gt;Spring과 강력한 통합 &amp;rarr; Model 데이터 바로 렌더링&lt;/li&gt;
&lt;li&gt;JSP 대비 러닝커브 낮음&lt;/li&gt;
&lt;li&gt;다양한 템플릿 기능 (반복, 조건, 레이아웃 등)&lt;/li&gt;
&lt;/ul&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;서버 사이드 렌더링(SSR)이므로, &lt;b&gt;SPA(React/Vue)와 같은 동적인 클라이언트 렌더링에 비해 유연성은 떨어짐&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;화면이 많은 대형 서비스에서는 &lt;b&gt;템플릿 관리가 복잡&lt;/b&gt;해질 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;6. 요약&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Thymeleaf는 서버에서 HTML을 만들어 보내는 SSR 템플릿 엔진&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;JSP보다 자연스럽고 협업에 좋음&lt;/li&gt;
&lt;li&gt;Spring Boot와 결합 시 Model &amp;rarr; HTML 템플릿 렌더링 구조로 동작&lt;/li&gt;
&lt;li&gt;중소 규모의 &lt;b&gt;관리자 페이지, 기업 내부 시스템, 전통적인 웹 서비스&lt;/b&gt;에서 많이 사용됨&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Skill/html js css</category>
      <author>진열사랑</author>
      <guid isPermaLink="true">https://exhibitlove.tistory.com/716</guid>
      <comments>https://exhibitlove.tistory.com/716#entry716comment</comments>
      <pubDate>Tue, 19 Aug 2025 21:48:13 +0900</pubDate>
    </item>
    <item>
      <title>Hikari booting 로그 보기</title>
      <link>https://exhibitlove.tistory.com/715</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;해결 - logback-spring.xml보다 application.yml 이 우선순위가 높아 logback-spring.xml에 설정된 값은 무시됨.&lt;br /&gt;application.yml&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;logging: &lt;br /&gt;&amp;nbsp;&amp;nbsp;level: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p6spy:&amp;nbsp;DEBUG &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;com.zaxxer.hikari: &lt;b&gt;debug # debug로 설정해야 Hikari의 자세한 설정값 나옴.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;보팅 로그가 &amp;ldquo;안 나오는&amp;rdquo; 가장 흔한 이유 3가지부터 체크해봅시다. 결론부터: &lt;b&gt;logback-spring.xml 문법/프로필, 루트 레벨, 디버그 플래그&lt;/b&gt;입니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1) logback-spring.xml 최상위 태그가 잘못됨&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;logback은 &lt;b&gt;&amp;lt;configuration&amp;gt;&lt;/b&gt; (소문자)여야 합니다. 올려주신 파일은 &amp;lt;!DOCTYPE xml&amp;gt;과 &lt;b&gt;&amp;lt;Configuration&amp;gt;(대문자)&lt;/b&gt; 로 시작해서 &lt;b&gt;Logback이 아예 무시&lt;/b&gt;하고 기본 설정으로 뜰 수 있어요.&lt;br /&gt;아래처럼 바꾸세요(맨 위 2줄만 교정):&lt;/p&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;configuration&amp;gt;
    &amp;lt;!-- 나머지 기존 내용 유지 --&amp;gt;
&amp;lt;/configuration&amp;gt;
&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;&amp;lt;!DOCTYPE xml&amp;gt; 라인은 제거&lt;/li&gt;
&lt;li&gt;&amp;lt;Configuration&amp;gt; &amp;rarr; &amp;lt;configuration&amp;gt; 로 변경&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;springProfile 태그는 logback-spring.xml에서만 동작합니다. 파일명이 정확히 logback-spring.xml이고 classpath(root)에 있는지도 확인하세요.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2) 활성 프로필에서 root 레벨이 너무 높음&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;prod 프로필에서는 root가 WARN이라 &lt;b&gt;INFO 로그(부팅 로그, Hikari &amp;ldquo;Starting&amp;hellip;&amp;rdquo;)가 안 보입니다.&lt;/b&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;application.yml의 spring.profiles.active&lt;/li&gt;
&lt;li&gt;실행 옵션 --spring.profiles.active=dev 등&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;prod를 써야 한다면, &lt;b&gt;원하는 로거만 별도로 INFO/DEBUG&lt;/b&gt; 로 올려주면 됩니다:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;!-- logback-spring.xml 안에 추가 --&amp;gt;
&amp;lt;logger name=&quot;com.zaxxer.hikari&quot; level=&quot;INFO&quot;/&amp;gt;
&amp;lt;logger name=&quot;org.springframework.boot&quot; level=&quot;INFO&quot;/&amp;gt;
&amp;lt;logger name=&quot;org.springframework&quot; level=&quot;INFO&quot;/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 하면 root가 WARN이어도 위 패키지 로그는 INFO로 나옵니다.&lt;br /&gt;이제 부팅 시 HikariPool-1 - Starting 이 보여야 합니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3) Spring Boot 디버그 모드 켜기 (자동구성 보고서 등)&lt;/h2&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;application.yml&lt;/li&gt;
&lt;li&gt;debug: true # 추가로 원하는 패키지 레벨 logging: level: org.springframework.boot: DEBUG com.zaxxer.hikari: INFO&lt;/li&gt;
&lt;li&gt;또는 실행 옵션&lt;/li&gt;
&lt;li&gt;java -jar app.jar --debug # 또는 java -Ddebug -jar app.jar&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디버그 모드에서는 Auto-Configuration 조건 평가 리포트가 DEBUG로 출력됩니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;빠른 체크리스트&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;logback-spring.xml 최상위 태그를 &amp;lt;configuration&amp;gt; 로 수정, DOCTYPE 제거&lt;/li&gt;
&lt;li&gt;파일명이 정확히 logback-spring.xml(springProfile 쓰려면 필수)&lt;/li&gt;
&lt;li&gt;활성 프로필 확인 (dev/prod)&lt;/li&gt;
&lt;li&gt;prod라면 필요한 로거(com.zaxxer.hikari, org.springframework.boot)를 INFO/DEBUG로 명시&lt;/li&gt;
&lt;li&gt;debug: true 또는 --debug로 부팅 로그 강화&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 적용하면 부팅 콘솔에서 바로&lt;br /&gt;HikariPool-1 - Starting... / HikariPool-1 - Added connection ... 같은 로그가 보일 거예요.&lt;/p&gt;</description>
      <category>Skill/spring</category>
      <author>진열사랑</author>
      <guid isPermaLink="true">https://exhibitlove.tistory.com/715</guid>
      <comments>https://exhibitlove.tistory.com/715#entry715comment</comments>
      <pubDate>Tue, 12 Aug 2025 16:01:01 +0900</pubDate>
    </item>
    <item>
      <title>Dbeaver에서 dbf 파일 열기</title>
      <link>https://exhibitlove.tistory.com/714</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;DBeaver version : 25.1.2&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;884&quot; data-origin-height=&quot;608&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OeTFd/btsPOJUkFQx/HsAE8IoMFahsyawMf2lNc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OeTFd/btsPOJUkFQx/HsAE8IoMFahsyawMf2lNc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OeTFd/btsPOJUkFQx/HsAE8IoMFahsyawMf2lNc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOeTFd%2FbtsPOJUkFQx%2FHsAE8IoMFahsyawMf2lNc1%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;884&quot; height=&quot;608&quot; data-origin-width=&quot;884&quot; data-origin-height=&quot;608&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1030&quot; data-origin-height=&quot;774&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bo3bSw/btsPMSSaadu/Ml62kabcKsuYASKUQKlinK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bo3bSw/btsPMSSaadu/Ml62kabcKsuYASKUQKlinK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bo3bSw/btsPMSSaadu/Ml62kabcKsuYASKUQKlinK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbo3bSw%2FbtsPMSSaadu%2FMl62kabcKsuYASKUQKlinK%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;1030&quot; height=&quot;774&quot; data-origin-width=&quot;1030&quot; data-origin-height=&quot;774&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;668&quot; data-origin-height=&quot;654&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YMHqu/btsPLlHLSmC/gjxHakkm7C4GLOGrQwdtvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YMHqu/btsPLlHLSmC/gjxHakkm7C4GLOGrQwdtvk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YMHqu/btsPLlHLSmC/gjxHakkm7C4GLOGrQwdtvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYMHqu%2FbtsPLlHLSmC%2FgjxHakkm7C4GLOGrQwdtvk%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;668&quot; height=&quot;654&quot; data-origin-width=&quot;668&quot; data-origin-height=&quot;654&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 작업은 소용없었음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ㅇDRIVER의 한글설정이 필요함.&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-origin-width=&quot;724&quot; data-origin-height=&quot;656&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dezy7j/btsPK13RNaF/NKqS8gJorQiiVHsAiKMyF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dezy7j/btsPK13RNaF/NKqS8gJorQiiVHsAiKMyF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dezy7j/btsPK13RNaF/NKqS8gJorQiiVHsAiKMyF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdezy7j%2FbtsPK13RNaF%2FNKqS8gJorQiiVHsAiKMyF0%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;724&quot; height=&quot;656&quot; data-origin-width=&quot;724&quot; data-origin-height=&quot;656&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적 QUERY가 작동한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;select&amp;nbsp;*&amp;nbsp;from&amp;nbsp;&quot;하수관로+자산ID+처리구역_필드삭제&quot;&amp;nbsp; &lt;br /&gt;where&amp;nbsp;length(swtrmt_zon)&amp;nbsp;&amp;gt;&amp;nbsp;0&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;836&quot; data-origin-height=&quot;101&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/v31Qk/btsPOrTJwHs/iM4fgPfgat5NtPx8BiHlX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/v31Qk/btsPOrTJwHs/iM4fgPfgat5NtPx8BiHlX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/v31Qk/btsPOrTJwHs/iM4fgPfgat5NtPx8BiHlX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fv31Qk%2FbtsPOrTJwHs%2FiM4fgPfgat5NtPx8BiHlX0%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;836&quot; height=&quot;101&quot; data-origin-width=&quot;836&quot; data-origin-height=&quot;101&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터추출 옆 전체 조회 후 데이터 추출 CSV로 내보내기 Encoding은 UTF-8 선택&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체조회 10여분 걸림.. CSV는 더 걸리겠지..&lt;/p&gt;</description>
      <author>진열사랑</author>
      <guid isPermaLink="true">https://exhibitlove.tistory.com/714</guid>
      <comments>https://exhibitlove.tistory.com/714#entry714comment</comments>
      <pubDate>Sat, 9 Aug 2025 22:18:32 +0900</pubDate>
    </item>
    <item>
      <title>VMware 삭제</title>
      <link>https://exhibitlove.tistory.com/713</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;VMware를 Windows에서 완전히 삭제하려면 단순히 프로그램 제거만으로는 충분하지 않을 수 있습니다. 레지스트리, 숨겨진 폴더, 네트워크 설정 등이 남아 있을 수 있기 때문입니다. 아래는 &lt;b&gt;VMware Workstation 또는 VMware Player&lt;/b&gt;를 완전히 삭제하는 방법입니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  1. 프로그램 제거 (기본)&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;제어판 &amp;gt; 프로그램 및 기능&lt;/b&gt;으로 이동&lt;/li&gt;
&lt;li&gt;VMware Workstation 또는 VMware Player를 찾아 제거&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  2. 남은 폴더 삭제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 경로에서 VMware 관련 폴더를 수동으로 삭제합니다 (존재하는 경우만):&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;C:\Program Files (x86)\VMware&lt;/li&gt;
&lt;li&gt;C:\Program Files\VMware&lt;/li&gt;
&lt;li&gt;C:\ProgramData\VMware&lt;/li&gt;
&lt;li&gt;C:\Users\사용자이름\AppData\Roaming\VMware&lt;/li&gt;
&lt;li&gt;C:\Users\사용자이름\AppData\Local\VMware&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;⚠️ &lt;b&gt;숨김 파일/폴더 보기 설정 필요&lt;/b&gt;: 파일 탐색기 &amp;gt; 보기 &amp;gt; 옵션 &amp;gt; 보기 탭 &amp;gt; 숨김 파일, 폴더 및 드라이브 표시&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  3. 네트워크 어댑터 제거 (VMnet)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VMware는 VMnet1, VMnet8 등의 가상 네트워크 어댑터를 생성합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;방법:&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;제어판 &amp;gt; 네트워크 및 공유 센터 &amp;gt; 어댑터 설정 변경&lt;/li&gt;
&lt;li&gt;VMware Network Adapter VMnet1, VMnet8 등 삭제&lt;/li&gt;
&lt;/ol&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;devmgmt.msc (장치 관리자) 실행&lt;/li&gt;
&lt;li&gt;&lt;b&gt;네트워크 어댑터&lt;/b&gt; 아래의 VMware 어댑터 제거&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  4. 레지스트리 정리 (주의!)&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;⚠️ 레지스트리 편집은 시스템에 영향을 줄 수 있으니 꼭 백업 후 진행하세요.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;regedit 실행&lt;/li&gt;
&lt;li&gt;다음 키들을 찾아 수동 삭제:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;taggerscript&quot;&gt;&lt;code&gt;HKEY_LOCAL_MACHINE\SOFTWARE\VMware, Inc.
HKEY_CURRENT_USER\Software\VMware, Inc.
HKEY_CLASSES_ROOT\Installer\Products (VMware 관련 이름)
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;검색(ctrl + F) 기능을 이용해 &quot;VMware&quot; 키워드로 검색하며 수동 삭제&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  5. 기타 도구 활용 (선택 사항)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보다 확실하게 삭제하고 싶다면 전문 &lt;b&gt;언인스톨러&lt;/b&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;b&gt;Revo Uninstaller&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;IObit Uninstaller&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이들 도구는 프로그램 삭제 후 레지스트리와 남은 파일까지 자동으로 찾아 제거해줍니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필요하다면 해당 과정 자동화 스크립트를 도와드릴 수도 있습니다. 운영체제 버전(예: Windows 10, 11 등)을 알려주시면 좀 더 구체적으로 안내할 수 있어요.&lt;/p&gt;</description>
      <author>진열사랑</author>
      <guid isPermaLink="true">https://exhibitlove.tistory.com/713</guid>
      <comments>https://exhibitlove.tistory.com/713#entry713comment</comments>
      <pubDate>Thu, 31 Jul 2025 18:25:12 +0900</pubDate>
    </item>
    <item>
      <title>폐쇄망 python을 위한 rpm 설치2</title>
      <link>https://exhibitlove.tistory.com/712</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;좋은 스크린샷입니다  &lt;br /&gt;libXft-devel-2.3.3-1.el8.x86_64.rpm 설치 시 필요한 의존성이 충족되지 않아서 실패한 상태네요.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  에러 메시지 분석&lt;/h2&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;libXft = 2.3.3-1.el8 is needed by libXft-devel-2.3.3-1.el8.x86_64
libXft.so.2()(64bit) is needed by libXft-devel-2.3.3-1.el8.x86_64
pkgconfig(fontconfig) is needed by libXft-devel-2.3.3-1.el8.x86_64
pkgconfig(freetype2) is needed by libXft-devel-2.3.3-1.el8.x86_64
pkgconfig(xrender) is needed by libXft-devel-2.3.3-1.el8.x86_64
&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  필요한 패키지와 제공자&lt;/h2&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;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;libXft = 2.3.3-1.el8&lt;/td&gt;
&lt;td&gt;&lt;b&gt;libXft-2.3.3-1.el8.x86_64&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;libXft.so.2()(64bit)&lt;/td&gt;
&lt;td&gt;&lt;b&gt;libXft&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pkgconfig(fontconfig)&lt;/td&gt;
&lt;td&gt;&lt;b&gt;fontconfig-devel&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pkgconfig(freetype2)&lt;/td&gt;
&lt;td&gt;&lt;b&gt;freetype-devel&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pkgconfig(xrender)&lt;/td&gt;
&lt;td&gt;&lt;b&gt;libXrender-devel&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 따라서 추가로 설치해야 할 RPM&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;libXft-2.3.3-1.el8.x86_64.rpm&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;fontconfig-devel&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;freetype-devel&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;libXrender-devel&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  Rocky 8.10 인터넷망에서 다운로드&lt;/h2&gt;
&lt;pre class=&quot;elm&quot;&gt;&lt;code&gt;sudo dnf install --downloadonly --downloaddir=./rpms \
    libXft fontconfig-devel freetype-devel libXrender-devel
&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  폐쇄망에서 설치&lt;/h2&gt;
&lt;pre class=&quot;stylus&quot;&gt;&lt;code&gt;cd ./rpms
sudo rpm -ivh libXft-2.3.3-1.el8.x86_64.rpm
sudo rpm -ivh fontconfig-devel-*.rpm freetype-devel-*.rpm libXrender-devel-*.rpm
sudo rpm -ivh libXft-devel-2.3.3-1.el8.x86_64.rpm
&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 결론&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;libXft-devel 설치를 위해서는&lt;br /&gt;&lt;b&gt;libXft, fontconfig-devel, freetype-devel, libXrender-devel&lt;/b&gt;&lt;br /&gt;이 필요합니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  원하시면 지금까지 나온 X11 관련 devel 패키지들 (libX11-devel, libXau-devel, libXrender-devel, libXft-devel 등) 의 &lt;b&gt;완전한 설치 순서도&lt;/b&gt;를 만들어 드릴까요?&lt;/p&gt;</description>
      <author>진열사랑</author>
      <guid isPermaLink="true">https://exhibitlove.tistory.com/712</guid>
      <comments>https://exhibitlove.tistory.com/712#entry712comment</comments>
      <pubDate>Wed, 30 Jul 2025 15:59:25 +0900</pubDate>
    </item>
  </channel>
</rss>