<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>PersesTitan(페르) 기술블로그</title>
    <link>https://persestitan.tistory.com/</link>
    <description>보다 편한세상을 향해서 &amp;bull; Toward a more comfortable world &amp;bull; もっと楽な世界を目指して</description>
    <language>ko</language>
    <pubDate>Mon, 6 Jul 2026 10:57:34 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>PersesTitan(페르)</managingEditor>
    <image>
      <title>PersesTitan(페르) 기술블로그</title>
      <url>https://tistory1.daumcdn.net/tistory/5797124/attach/553259da4ab64923b155aaf794cd8fd7</url>
      <link>https://persestitan.tistory.com</link>
    </image>
    <item>
      <title>젯브레인 플러그인 - 콤보 (Combo v1.0.0)</title>
      <link>https://persestitan.tistory.com/174</link>
      <description>&lt;script src=&quot;https://plugins.jetbrains.com/assets/scripts/mp-widget.js&quot;&gt;&lt;/script&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;종속 플러그인&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;해당 플러그인은 VaneHub에서 관리하는 플러그인 입니다.&lt;/p&gt;
&lt;div id=&quot;vanehub&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;script&gt;
  MarketplaceWidget.setupMarketplaceWidget('card', 25356, &quot;#vanehub&quot;);
&lt;/script&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;p data-ke-size=&quot;size16&quot;&gt;입력이 발생할때 숫자가 올라가며 입력이 일정시간 이루어지지 않는다면 숫자가 초기화됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빠른 타이핑을 이용하여 높은 숫자를 얻어보세요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;combo&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;script&gt;
  MarketplaceWidget.setupMarketplaceWidget('install', 25380, &quot;#combo&quot;);
&lt;/script&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;설정&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;setting &amp;gt; (다른 VaneHub종속 플러그인이 존재하지 않을 경우 생략됨) Vane &amp;gt; Combo&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;Display&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- id : 디스플레이가 여러개일 경우 콤보 갯수가 출력되는 디스플레이를 선택할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;- color : 현재 버전에서는 미지원 옵션입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Font&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- size : 출력되는 폰트 크기를 지정하는 설정입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1972&quot; data-origin-height=&quot;1434&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bW7yxM/btsJGHiNM0V/zMOAGtxjsSPPLUe8lpElIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bW7yxM/btsJGHiNM0V/zMOAGtxjsSPPLUe8lpElIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bW7yxM/btsJGHiNM0V/zMOAGtxjsSPPLUe8lpElIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbW7yxM%2FbtsJGHiNM0V%2FzMOAGtxjsSPPLUe8lpElIk%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;1972&quot; height=&quot;1434&quot; data-origin-width=&quot;1972&quot; data-origin-height=&quot;1434&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;2710&quot; data-origin-height=&quot;1280&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CeQE0/btsJIgjMiO1/KQMMVGEFfGKdWOjdYu5nPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CeQE0/btsJIgjMiO1/KQMMVGEFfGKdWOjdYu5nPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CeQE0/btsJIgjMiO1/KQMMVGEFfGKdWOjdYu5nPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCeQE0%2FbtsJIgjMiO1%2FKQMMVGEFfGKdWOjdYu5nPk%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;2710&quot; height=&quot;1280&quot; data-origin-width=&quot;2710&quot; data-origin-height=&quot;1280&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>VaneProject/jetbrains</category>
      <category>IntelliJ</category>
      <category>jetbrains</category>
      <category>plugin</category>
      <author>PersesTitan(페르)</author>
      <guid isPermaLink="true">https://persestitan.tistory.com/174</guid>
      <comments>https://persestitan.tistory.com/174#entry174comment</comments>
      <pubDate>Sat, 21 Sep 2024 11:19:38 +0900</pubDate>
    </item>
    <item>
      <title>[Jetbrains] 플러그인 배포하기</title>
      <link>https://persestitan.tistory.com/173</link>
      <description>&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; 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;a title=&quot;[Jetbrains] 플러그인 개인키 생성하기&quot; href=&quot;https://persestitan.tistory.com/172&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[Jetbrains] 플러그인 개인키 생성하기&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;[Jetbrains] 플러그인&amp;nbsp;공개키 생성하기&quot; href=&quot;https://persestitan.tistory.com/171&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[Jetbrains] 플러그인&amp;nbsp;공개키 생성하기&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Gradle 설정&lt;/h2&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;h3 data-ke-size=&quot;size23&quot;&gt;Gradle 설정&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;singPlugin&lt;span&gt;&amp;nbsp;&lt;/span&gt;(&lt;a style=&quot;background-color: #e6f5ff; color: #0070d1; text-align: left;&quot; href=&quot;https://persestitan.tistory.com/172&quot;&gt;[Jetbrains] 플러그인 개인키 생성하기&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;참고)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- certificateChain :&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;chain.crt&lt;/b&gt;파일 값&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- privateKey :&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;private.pem&lt;/b&gt;파일 값&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- password : 개인키를 생성할때 입력한 비밀번호를 입력하면 됩니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;publishPlugin (&lt;a style=&quot;background-color: #e6f5ff; color: #0070d1; text-align: left;&quot; href=&quot;https://persestitan.tistory.com/171&quot;&gt;[Jetbrains] 플러그인&amp;nbsp;공개키 생성하기&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- token : 발급 받은 token(공개키) 입력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;방법1 - 환경변수에 값을 세팅하는 방법&lt;/h4&gt;
&lt;pre id=&quot;code_1726668883709&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;signPlugin {
    certificateChain.set(System.getenv(&quot;CERTIFICATE_CHAIN&quot;))
    privateKey.set(System.getenv(&quot;PRIVATE_KEY&quot;))
    password.set(System.getenv(&quot;PRIVATE_KEY_PASSWORD&quot;))
}

publishPlugin {
    token.set(System.getenv(&quot;PUBLISH_TOKEN&quot;))
}&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;아래와 같이 Environment Variables에 값을 넣은 후 실행하면 Gradle의 &lt;b&gt;System.getenv(키값)&lt;/b&gt;함수를 사용하여 Value를 가져올 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;885&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/21pSz/btsJE8TISJJ/kzA3EMOeprYG0t787Zlt9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/21pSz/btsJE8TISJJ/kzA3EMOeprYG0t787Zlt9K/img.png&quot; data-alt=&quot;출처 : plugin jetbrains doc&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/21pSz/btsJE8TISJJ/kzA3EMOeprYG0t787Zlt9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F21pSz%2FbtsJE8TISJJ%2FkzA3EMOeprYG0t787Zlt9K%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;1280&quot; height=&quot;885&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;885&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처 : plugin jetbrains doc&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;방법2 - 파일에 값을 세팅하는 방법&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같이 변경해주시면 파일 경로로 개인키를 입력할 수 있게 지원해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;password와 공개키는 지원하지 않아 직접 만들어서 사용을 하거나 방법1과 같은 방법으로 값을 전달하여 사용할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;certificateChain -&amp;gt; certificateChainFile&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;privateKey -&amp;gt; privateKeyFile&lt;/p&gt;
&lt;pre id=&quot;code_1726671616048&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Properties

(...)
val properties = Properties()
properties.load(project.file(&quot;../key/password.properties&quot;).inputStream())

signing {
    certificateChainFile.set(file(&quot;../key/chain.crt&quot;))
    privateKeyFile.set(file(&quot;../key/private.pem&quot;))
    password.set(properties.getProperty(&quot;PRIVATE_KEY_PASSWORD&quot;))
}

publishing {
    token.set(properties.getProperty(&quot;PUBLISH_TOKEN&quot;))
}
(...)&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;password.properties&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;(아래 값들은 예시입니다.)&lt;/p&gt;
&lt;pre id=&quot;code_1726671807915&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;PRIVATE_KEY_PASSWORD=8awS22%#3(4wVDDBMlTREX
PUBLISH_TOKEN=perm:a961riC....l17oW8t+Qw==&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;플러그인 업로드&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Gradle에 buildPlugin을 실행해주시면 배포 파일 생성할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;환경변수에 등록해야하는 경우 Gradle실행에 Run을 buildPlugin으로 설정해주시고 환경설정 세팅 후 실행을 해주시면됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;818&quot; data-origin-height=&quot;676&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cJXHK4/btsJEUuFlaW/jmz2eEyJQvIkvbbgW5yle1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cJXHK4/btsJEUuFlaW/jmz2eEyJQvIkvbbgW5yle1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cJXHK4/btsJEUuFlaW/jmz2eEyJQvIkvbbgW5yle1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJXHK4%2FbtsJEUuFlaW%2Fjmz2eEyJQvIkvbbgW5yle1%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;818&quot; height=&quot;676&quot; data-origin-width=&quot;818&quot; data-origin-height=&quot;676&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;환경설정이 필요없는 경우 Gradle탭에 buildPlugin을 더블클릭하여 실행해 진행할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;882&quot; data-origin-height=&quot;984&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/v0nJC/btsJF6gRWDm/5rhXNRBWpkh0xMPkEBHBBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/v0nJC/btsJF6gRWDm/5rhXNRBWpkh0xMPkEBHBBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/v0nJC/btsJF6gRWDm/5rhXNRBWpkh0xMPkEBHBBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fv0nJC%2FbtsJF6gRWDm%2F5rhXNRBWpkh0xMPkEBHBBk%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;882&quot; height=&quot;984&quot; data-origin-width=&quot;882&quot; data-origin-height=&quot;984&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;빌드가 완료되었으면 build/distributions위치에 파일이 생성됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;338&quot; data-origin-height=&quot;299&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1uH9P/btsJFDeSzLg/omKcjT8utEpIPWJs4hbWY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1uH9P/btsJFDeSzLg/omKcjT8utEpIPWJs4hbWY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1uH9P/btsJFDeSzLg/omKcjT8utEpIPWJs4hbWY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1uH9P%2FbtsJFDeSzLg%2FomKcjT8utEpIPWJs4hbWY1%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;338&quot; height=&quot;299&quot; data-origin-width=&quot;338&quot; data-origin-height=&quot;299&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;성공적으로 파일이 생성되었다면 아래에 접속하여 생성한 파일과 프로젝트 정보를 입력 후 플로그인을 업로드 해주시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://plugins.jetbrains.com/plugin/add#intellij&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://plugins.jetbrains.com/plugin/add#intellij&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1726660036143&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;Upload Plugin | JetBrains Marketplace&quot; data-og-description=&quot;Upload plugin to JetBrains Marketplace&quot; data-og-host=&quot;plugins.jetbrains.com&quot; data-og-source-url=&quot;https://plugins.jetbrains.com/plugin/add#intellij&quot; data-og-url=&quot;https://plugins.jetbrains.com/plugin/add&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/WIkYn/hyW21BfOtf/6swsyRKTiZ26sqdyy5oB3K/img.png?width=2000&amp;amp;height=2000&amp;amp;face=0_0_2000_2000,https://scrap.kakaocdn.net/dn/JhrJ3/hyW2XevY3B/8Bl5GKBucHub3ktsx8pVh0/img.png?width=2000&amp;amp;height=2000&amp;amp;face=0_0_2000_2000&quot;&gt;&lt;a href=&quot;https://plugins.jetbrains.com/plugin/add#intellij&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://plugins.jetbrains.com/plugin/add#intellij&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/WIkYn/hyW21BfOtf/6swsyRKTiZ26sqdyy5oB3K/img.png?width=2000&amp;amp;height=2000&amp;amp;face=0_0_2000_2000,https://scrap.kakaocdn.net/dn/JhrJ3/hyW2XevY3B/8Bl5GKBucHub3ktsx8pVh0/img.png?width=2000&amp;amp;height=2000&amp;amp;face=0_0_2000_2000');&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;Upload Plugin | JetBrains Marketplace&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Upload plugin to JetBrains Marketplace&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;plugins.jetbrains.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>VaneProject/jetbrains</category>
      <category> jetbrains</category>
      <category>IntelliJ</category>
      <category>plugin</category>
      <author>PersesTitan(페르)</author>
      <guid isPermaLink="true">https://persestitan.tistory.com/173</guid>
      <comments>https://persestitan.tistory.com/173#entry173comment</comments>
      <pubDate>Thu, 19 Sep 2024 00:25:52 +0900</pubDate>
    </item>
    <item>
      <title>[Jetbrains] 플러그인 개인키 생성하기</title>
      <link>https://persestitan.tistory.com/172</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;해당 글은 공식 사이트를 참고하여  작성되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://plugins.jetbrains.com/docs/intellij/plugin-signing.html#gradle-intellij-plugin&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://plugins.jetbrains.com/docs/intellij/plugin-signing.html#gradle-intellij-plugin&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; 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;a href=&quot;https://persestitan.tistory.com/173&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[Jetbrains] 플러그인 배포하기&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://persestitan.tistory.com/171&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[Jetbrains] 플러그인&amp;nbsp;공개키 생성하기&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;설치 전 준비물&amp;nbsp;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;openssl (&lt;a title=&quot;install&quot; href=&quot;https://openssl-library.org/source/index.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;install&lt;/a&gt; or $brew install openssl)&lt;/li&gt;
&lt;/ul&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;pre id=&quot;code_1726648156594&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;openssl genpkey\
  -aes-256-cbc\
  -algorithm RSA\
  -out private_encrypted.pem\
  -pkeyopt rsa_keygen_bits:4096&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_1726648401831&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Enter PEM pass phrase:&amp;lt;생성할 비밀번호&amp;gt;
Verifying - Enter PEM pass phrase:&amp;lt;비밀번호 확인&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정상적으로 실행되었다면 아래 명령어를 실행해서 &lt;b&gt;private_encrypted.pem&lt;/b&gt;파일이 생성되었는지와 &lt;b&gt;암호화된 텍스트&lt;/b&gt;가 출력되는지 확인을 해줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1726648677037&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cat private_encrypted.pem&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_1726648880056&quot; class=&quot;bash&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;-----BEGIN ENCRYPTED PRIVATE KEY-----
(...)
-----END ENCRYPTED PRIVATE KEY-----&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;RSA 변환&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정상적으로 생성되었다면 아래 명령어를 입력하여 RSA암호화를 진행해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 명령어를 입력했다면 위에서 생성한 비밀번호를 입력해줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1726649016559&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;openssl rsa\
  -in private_encrypted.pem\
  -out private.pem&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성한 비밀번호 입력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1726649176660&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Enter pass phrase for private_encrypted.pem:&amp;lt;생성한 비밀번호&amp;gt;

출력
writing RSA key&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정상적으로 실행되었다면 아래 명령어를 실행해서&lt;b&gt;&lt;span&gt; private.pem&lt;/span&gt;파일&lt;/b&gt;이 생성되었는지와&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt; RSA 변환&lt;/b&gt;이 성공했는지 출력을 확인을 진행해주었습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1726649480621&quot; class=&quot;bash&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;cat private.pem&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;인증서 체인 생성&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음으로는 인증서 체인을 생성이 필요합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 명령어를 입력하면 x509인증서를 생성할 수 있는데 해당하는 정보를 입력하여 생성할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 입력이 끝나게 되면 chain.crt파일이 위와 동일한 규격으로 파일이 생성됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;해당 예제 코드에서는 유효기간이 365일로 되어있지만 원한다면 days값을 변경하여 생성할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1726649893956&quot; class=&quot;bash&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;openssl req\
  -key private.pem\
  -new\
  -x509\
  -days 365\
  -out chain.crt&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력해야하는 정보는 아래와 같은 순서대로 입력이 활성화됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생략하고 싶은 정보는 &quot;.&quot;을 입력하여 스킵을 할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 국가 2자리 ISO약자 (예시: KR)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 주 또는 지방 (예시: 서울특별시)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 시 이름 (예시: 강남구)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 조직 이름 (예시: Vane)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 조직 단위 (예시:  개발)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 도메인 (예시: &lt;a href=&quot;https://github.com/VaneProject&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/VaneProject&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 이메일 주소 (예시: vaneteamproject@gmail.com)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>VaneProject/jetbrains</category>
      <category> jetbrains</category>
      <category>IntelliJ</category>
      <category>plugin</category>
      <author>PersesTitan(페르)</author>
      <guid isPermaLink="true">https://persestitan.tistory.com/172</guid>
      <comments>https://persestitan.tistory.com/172#entry172comment</comments>
      <pubDate>Wed, 18 Sep 2024 19:09:11 +0900</pubDate>
    </item>
    <item>
      <title>[Jetbrains] 플러그인 공개키 생성하기</title>
      <link>https://persestitan.tistory.com/171</link>
      <description>&lt;h2 style=&quot;color: #000000; text-align: start;&quot; 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;a title=&quot;[Jetbrains] 플러그인 배포하기&quot; href=&quot;https://persestitan.tistory.com/173&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[Jetbrains] 플러그인 배포하기&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://persestitan.tistory.com/172&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[Jetbrains] 플러그인 개인키 생성하기&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;젯브레인 계정 생성&lt;/h2&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;a href=&quot;https://plugins.jetbrains.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://plugins.jetbrains.com/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1726652807404&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;JetBrains Marketplace&quot; data-og-description=&quot;Welcome to the JetBrains Marketplace&quot; data-og-host=&quot;plugins.jetbrains.com&quot; data-og-source-url=&quot;https://plugins.jetbrains.com/&quot; data-og-url=&quot;https://plugins.jetbrains.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/vMxQo/hyW21Vue4y/fXcoZd9FKdhHIYVGedny1K/img.png?width=2000&amp;amp;height=2000&amp;amp;face=0_0_2000_2000,https://scrap.kakaocdn.net/dn/clpdWw/hyW6yqBj8a/zZ4IhkKjQ5uHJDPO3DR2ZK/img.png?width=2000&amp;amp;height=2000&amp;amp;face=0_0_2000_2000&quot;&gt;&lt;a href=&quot;https://plugins.jetbrains.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://plugins.jetbrains.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/vMxQo/hyW21Vue4y/fXcoZd9FKdhHIYVGedny1K/img.png?width=2000&amp;amp;height=2000&amp;amp;face=0_0_2000_2000,https://scrap.kakaocdn.net/dn/clpdWw/hyW6yqBj8a/zZ4IhkKjQ5uHJDPO3DR2ZK/img.png?width=2000&amp;amp;height=2000&amp;amp;face=0_0_2000_2000');&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;JetBrains Marketplace&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Welcome to the JetBrains Marketplace&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;plugins.jetbrains.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 계정을 생성하면 합의에 동의하는지 물어보는 창이 뜨게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 동의를 허용해주어야 사용할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;744&quot; data-origin-height=&quot;847&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dJjdWw/btsJDRr1VT1/R9nGDK4rzrKxbAd5yPAIz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dJjdWw/btsJDRr1VT1/R9nGDK4rzrKxbAd5yPAIz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dJjdWw/btsJDRr1VT1/R9nGDK4rzrKxbAd5yPAIz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdJjdWw%2FbtsJDRr1VT1%2FR9nGDK4rzrKxbAd5yPAIz1%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;744&quot; height=&quot;847&quot; data-origin-width=&quot;744&quot; data-origin-height=&quot;847&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;h2 data-ke-size=&quot;size26&quot;&gt;Plugin Upload 활성화&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로그인에 성공하셨다면 마이페이지에 접속이 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 링크로 접속하시거나, My profile로 접속이 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://plugins.jetbrains.com/author/me&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://plugins.jetbrains.com/author/me&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1726653279617&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;My profile | JetBrains Marketplace&quot; data-og-description=&quot;Welcome to the JetBrains Marketplace&quot; data-og-host=&quot;plugins.jetbrains.com&quot; data-og-source-url=&quot;https://plugins.jetbrains.com/author/me&quot; data-og-url=&quot;https://plugins.jetbrains.com/author/me&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/RgmVj/hyW6LpVozt/TnKTUxOPvPo806ekJQKUk1/img.png?width=2000&amp;amp;height=2000&amp;amp;face=0_0_2000_2000,https://scrap.kakaocdn.net/dn/hlU44/hyW2183f4w/2H32nRk8uzdaZ7nVZV1fC1/img.png?width=2000&amp;amp;height=2000&amp;amp;face=0_0_2000_2000&quot;&gt;&lt;a href=&quot;https://plugins.jetbrains.com/author/me&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://plugins.jetbrains.com/author/me&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/RgmVj/hyW6LpVozt/TnKTUxOPvPo806ekJQKUk1/img.png?width=2000&amp;amp;height=2000&amp;amp;face=0_0_2000_2000,https://scrap.kakaocdn.net/dn/hlU44/hyW2183f4w/2H32nRk8uzdaZ7nVZV1fC1/img.png?width=2000&amp;amp;height=2000&amp;amp;face=0_0_2000_2000');&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;My profile | JetBrains Marketplace&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Welcome to the JetBrains Marketplace&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;plugins.jetbrains.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1275&quot; data-origin-height=&quot;562&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FlyxO/btsJFLqnk6h/V8Nnslv4zYTwUgIRVhtbr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FlyxO/btsJFLqnk6h/V8Nnslv4zYTwUgIRVhtbr0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FlyxO/btsJFLqnk6h/V8Nnslv4zYTwUgIRVhtbr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFlyxO%2FbtsJFLqnk6h%2FV8Nnslv4zYTwUgIRVhtbr0%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;1275&quot; height=&quot;562&quot; data-origin-width=&quot;1275&quot; data-origin-height=&quot;562&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나의 페이지로 들어오시면 Upload Plugin to Marketplace로 접속한뒤 정보 입력하여 세부 정보를 입력 할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1288&quot; data-origin-height=&quot;804&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LTsSY/btsJDWzSFSY/U5sq3oksxkRKGMMZ5mbh9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LTsSY/btsJDWzSFSY/U5sq3oksxkRKGMMZ5mbh9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LTsSY/btsJDWzSFSY/U5sq3oksxkRKGMMZ5mbh9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLTsSY%2FbtsJDWzSFSY%2FU5sq3oksxkRKGMMZ5mbh9k%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;1288&quot; height=&quot;804&quot; data-origin-width=&quot;1288&quot; data-origin-height=&quot;804&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;h2 data-ke-size=&quot;size26&quot;&gt;토큰 발급&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계정에 로그인한 상태로 아래 링크에 접속하면 토큰을 생성할 수 있는 페이지에 접속 할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 페이지에서 토큰을 발급하여 공개키로 사용이 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://plugins.jetbrains.com/author/me/tokens&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://plugins.jetbrains.com/author/me/tokens&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1726653621517&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;My profile | JetBrains Marketplace&quot; data-og-description=&quot;Welcome to the JetBrains Marketplace&quot; data-og-host=&quot;plugins.jetbrains.com&quot; data-og-source-url=&quot;https://plugins.jetbrains.com/author/me/tokens&quot; data-og-url=&quot;https://plugins.jetbrains.com/author/me/tokens&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/R2U0k/hyW218269k/KpJzGIe09Dwjg0sNIEiSr0/img.png?width=2000&amp;amp;height=2000&amp;amp;face=0_0_2000_2000,https://scrap.kakaocdn.net/dn/QrxRQ/hyW2WzUecO/7JFRu5ChG5KWdc1BN1igzk/img.png?width=2000&amp;amp;height=2000&amp;amp;face=0_0_2000_2000&quot;&gt;&lt;a href=&quot;https://plugins.jetbrains.com/author/me/tokens&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://plugins.jetbrains.com/author/me/tokens&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/R2U0k/hyW218269k/KpJzGIe09Dwjg0sNIEiSr0/img.png?width=2000&amp;amp;height=2000&amp;amp;face=0_0_2000_2000,https://scrap.kakaocdn.net/dn/QrxRQ/hyW2WzUecO/7JFRu5ChG5KWdc1BN1igzk/img.png?width=2000&amp;amp;height=2000&amp;amp;face=0_0_2000_2000');&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;My profile | JetBrains Marketplace&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Welcome to the JetBrains Marketplace&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;plugins.jetbrains.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>VaneProject/jetbrains</category>
      <category> jetbrains</category>
      <category>IntelliJ</category>
      <category>plugin</category>
      <author>PersesTitan(페르)</author>
      <guid isPermaLink="true">https://persestitan.tistory.com/171</guid>
      <comments>https://persestitan.tistory.com/171#entry171comment</comments>
      <pubDate>Wed, 18 Sep 2024 19:05:45 +0900</pubDate>
    </item>
    <item>
      <title>[PyCharm] 파이참 unknown encoding: x-windows-949 해결 방법</title>
      <link>https://persestitan.tistory.com/170</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;파이참에서 실행을 했는데 아래와 같은 오류가 발생했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해석해보면 Python에서 x-windows-949라는 인코딩을 알 수 없는 듯 보입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1722147466273&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Fatal Python error: init_stdio_encoding: failed to get the Python codec name of the stdio encoding
Python runtime state: core initialized
LookupError: unknown encoding: x-windows-949

Current thread 0x00005bf8 (most recent call first):
&amp;lt;no Python frame&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;814&quot; data-origin-height=&quot;132&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m5Cl2/btsIPyUlzHK/KNkWOTxaXV2KcPRBw8emiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m5Cl2/btsIPyUlzHK/KNkWOTxaXV2KcPRBw8emiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m5Cl2/btsIPyUlzHK/KNkWOTxaXV2KcPRBw8emiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm5Cl2%2FbtsIPyUlzHK%2FKNkWOTxaXV2KcPRBw8emiK%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;814&quot; height=&quot;132&quot; data-origin-width=&quot;814&quot; data-origin-height=&quot;132&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;아래와 같이 windows-31j로 뜨는 경우에는 컴퓨터 인코딩을 일본어로 설정했을때 뜨는 인코딩입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;837&quot; data-origin-height=&quot;139&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPFlhZ/btsIO38efYx/JklZLh7ykSz1qdnPD3hLcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPFlhZ/btsIO38efYx/JklZLh7ykSz1qdnPD3hLcK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPFlhZ/btsIO38efYx/JklZLh7ykSz1qdnPD3hLcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPFlhZ%2FbtsIO38efYx%2FJklZLh7ykSz1qdnPD3hLcK%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;837&quot; height=&quot;139&quot; data-origin-width=&quot;837&quot; data-origin-height=&quot;139&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;h2 data-ke-size=&quot;size26&quot;&gt;인코딩 windows-949&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;windows-949는 윈도우에서 한글을 인코딩 포맷으로 요즘에는 대부분 UTF-8로 통일해서 사용하기 때문에 해당 문제가 많이 발생하지 않는 것으로 알고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;윈도우에서 Beta버전으로 UTF-8을 지원하고 있지만 베타라서 그런지 버그가 있는 듯 싶습니다.&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;437&quot; data-origin-height=&quot;228&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dGG7Vz/btsIQJ8kEH5/cuIORYNA3r0XFUIkTT1rkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dGG7Vz/btsIQJ8kEH5/cuIORYNA3r0XFUIkTT1rkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dGG7Vz/btsIQJ8kEH5/cuIORYNA3r0XFUIkTT1rkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdGG7Vz%2FbtsIQJ8kEH5%2FcuIORYNA3r0XFUIkTT1rkK%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;437&quot; height=&quot;228&quot; data-origin-width=&quot;437&quot; data-origin-height=&quot;228&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;해결 방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Settings &amp;gt; General &amp;gt; Console &amp;gt; Default Encoding을 UTF-8로 변경해주면 해결할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;984&quot; data-origin-height=&quot;730&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwoT2p/btsIQf0Xe6T/dtCQxmVipGqdYhOTx2mh4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwoT2p/btsIQf0Xe6T/dtCQxmVipGqdYhOTx2mh4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwoT2p/btsIQf0Xe6T/dtCQxmVipGqdYhOTx2mh4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwoT2p%2FbtsIQf0Xe6T%2FdtCQxmVipGqdYhOTx2mh4K%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;984&quot; height=&quot;730&quot; data-origin-width=&quot;984&quot; data-origin-height=&quot;730&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;</description>
      <category>IDE/PyCharm</category>
      <category>pycharm</category>
      <author>PersesTitan(페르)</author>
      <guid isPermaLink="true">https://persestitan.tistory.com/170</guid>
      <comments>https://persestitan.tistory.com/170#entry170comment</comments>
      <pubDate>Sun, 28 Jul 2024 16:26:37 +0900</pubDate>
    </item>
    <item>
      <title>[Gradle] Gradle could not start your build. 에러 해결 방법</title>
      <link>https://persestitan.tistory.com/169</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Intellij Plugin 개발하다가  실행 종료가 덜 되었는지 아래와 같이 그래이들 실행에 실패하는 일이 발생했습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1715395628450&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Gradle could not start your build.
&amp;gt; Cannot create service of type BuildSessionActionExecutor using method LauncherServices$ToolingBuildSessionScopeServices.createActionExecutor() as there is a problem with parameter #21 of type FileSystemWatchingInformation.
   &amp;gt; Cannot create service of type BuildLifecycleAwareVirtualFileSystem using method VirtualFileSystemServices$GradleUserHomeServices.createVirtualFileSystem() as there is a problem with parameter #1 of type FileWatchingFilter.
      &amp;gt; Cannot create service of type FileWatchingFilter using method VirtualFileSystemServices$GradleUserHomeServices.createFileWatchingFilter() as there is a problem with parameter #1 of type GlobalCacheLocations.
         &amp;gt; Cannot create service of type GlobalCacheLocations using method GradleUserHomeScopeServices.createGlobalCacheLocations() as there is a problem with parameter #1 of type List&amp;lt;GlobalCache&amp;gt;.
            &amp;gt; Could not create service of type FileAccessTimeJournal using GradleUserHomeScopeServices.createFileAccessTimeJournal().
               &amp;gt; Timeout waiting to lock journal cache (/Users/persestitan/.gradle/caches/journal-1). It is currently in use by another Gradle instance.
                 Owner PID: 2306
                 Our PID: 16658
                 Owner Operation: 
                 Our operation: 
                 Lock file: /Users/persestitan/.gradle/caches/journal-1/journal-1.lock&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;터미널에 아래 명령어를 입력해서 강제로 PID를 종료해주니 다시 잘 실행이 되는 것을 확인했습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Owner PID는 gradle에 친절하게 써져있는 PID값을 적어주시면 됩니다.&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;macos&lt;/p&gt;
&lt;pre id=&quot;code_1715396698217&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;kill -9 [Owner PID]&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;windows&lt;/p&gt;
&lt;pre id=&quot;code_1715396946660&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;taskkill /f /pid [Owner PID]&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Error</category>
      <author>PersesTitan(페르)</author>
      <guid isPermaLink="true">https://persestitan.tistory.com/169</guid>
      <comments>https://persestitan.tistory.com/169#entry169comment</comments>
      <pubDate>Sat, 11 May 2024 12:10:06 +0900</pubDate>
    </item>
    <item>
      <title>[Python] 파이썬 format 기초 1 (포맷 종류)</title>
      <link>https://persestitan.tistory.com/168</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. format 함수&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중괄호를 활용한 방법의 포맷으로 다양한 포맷 기능을 지원합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도입 버전 : Python 2.6&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;단순 형태&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같이 {} (중괄호)를 사용한 위치에 format의 파라미터의 순서대로 들어가게 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1714293181176&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;print(&quot;number: {}, text: {}&quot;.format(1234, 'Text'))

# 출력
number: 1234, text: Text&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;pre id=&quot;code_1714293490856&quot; class=&quot;python&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;print(&quot;number: {1}, text: {0}&quot;.format('Text', 1234))

# 출력
number: 1234, text: Text&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;pre id=&quot;code_1714293755569&quot; class=&quot;routeros&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;print(&quot;number: {n}, text: {t}&quot;.format(n=1234, t='Text'))

# 출력
number: 1234, text: Text&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. 포맷 지정자 (% 포맷)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뒤에 %를 붙여서 포맷 데이터를 넘겨주는 방법입니다. C언어의 포맷 방식과 유사하게 사용됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도입 버전 : Python 2.0&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;span style=&quot;color: #333333; text-align: start;&quot;&gt;아래와 같이 C 포맷 형태와 유사하게&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 사용되며, 전달 값이 여러개 일 경우 튜플 형태로 값을 묶어서 넘겨주게 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1714294863772&quot; class=&quot;http&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;print(&quot;number: %d, text: %s&quot; % (1234, 'Text'))

# 출력
number: 1234, text: Text&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;python에서는 format함수의 이름 형태 처럼 딕셔너리를 넘겨주면 매칭된 이름이 포맷되도록 구현할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1714295279878&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;print(&quot;number: %(n)d, text: %(t)s&quot; % {'n': 1234, 't': 'Text'})

# 형태
number: 1234, text: Text&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 방법을 응용하면 아래와 같은 결과도 구현할 수 있게 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1714295358669&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;number = 1234
text = 'Text'
print(&quot;number: %(number)d, text: %(text)s&quot; % vars())

# 출력
number: 1234, text: Text&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. f키워드 포맷&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열앞에 f 키워드를 붙여서 포맷하는 방식으로 js에 백틱 포맷 처럼 문자열 안에 값을 쓴다는 특징이 있습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;사용법&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같이 문자열 앞에 f를 붙여주고 중괄호에 포맷 값을 넣어주는 방식으로 포맷을 합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1714295678012&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;number = 1234
text = 'Text'
print(f&quot;number: {number}, text: {text}&quot;)

# 출력
number: 1234, text: Text&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;응용&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중괄호 안에는 들어갈 값이기 때문에 아래와 같이 사용하는것도 가능해집니다.&lt;/p&gt;
&lt;pre id=&quot;code_1714295807976&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;number = 1234
text = 'Text'
print(f&quot;number: {number + 6}, text: {text}&quot;)

# 출력
number: 1240, text: Text&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Language/Python</category>
      <category>Python</category>
      <author>PersesTitan(페르)</author>
      <guid isPermaLink="true">https://persestitan.tistory.com/168</guid>
      <comments>https://persestitan.tistory.com/168#entry168comment</comments>
      <pubDate>Sun, 28 Apr 2024 18:17:03 +0900</pubDate>
    </item>
    <item>
      <title>[Ruby] 특정 문자열 변경하기 (sub, gsub)</title>
      <link>https://persestitan.tistory.com/167</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;사용법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 언어와는 다르게 루비에서는 replace가 아닌&amp;nbsp;sub, gsub를 이용해서 특정 문자열을 변경할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용형태는 다음과 같이 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sub(찾을값, 바꿀값)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;gsub(찾을값, 바꿀값)&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;찾을값에는&lt;b&gt; 정규식&lt;/b&gt; 또는 &lt;b&gt;문자열&lt;/b&gt;을 이용할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;sub와 gsub 차이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sub는 검색된 첫번째 값만이 바꿀값으로 변경되고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;gsub는 변경된 모든 검색된 값이 바꿀값으로 변경됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드&lt;/p&gt;
&lt;pre id=&quot;code_1713715301059&quot; class=&quot;ruby&quot; data-ke-language=&quot;ruby&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;puts &quot;ABCABC&quot;.sub(&quot;A&quot;, &quot;*&quot;)
puts &quot;ABCABC&quot;.gsub(&quot;A&quot;, &quot;*&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출력&lt;/p&gt;
&lt;pre id=&quot;code_1713715332028&quot; class=&quot;ruby&quot; data-ke-language=&quot;ruby&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;*BCABC
*BC*BC&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;응용&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 특징을 이용해서 다음과 같은 응용이 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;숫자 제거&lt;/p&gt;
&lt;pre id=&quot;code_1713827478437&quot; class=&quot;ruby&quot; data-ke-language=&quot;ruby&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;puts &quot;1안2녕2하3세4요5&quot;.gsub(/\d/, &quot;&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출력&lt;/p&gt;
&lt;pre id=&quot;code_1713827512361&quot; class=&quot;ruby&quot; data-ke-language=&quot;ruby&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;안녕하세요&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Language/Ruby</category>
      <category>ruby</category>
      <author>PersesTitan(페르)</author>
      <guid isPermaLink="true">https://persestitan.tistory.com/167</guid>
      <comments>https://persestitan.tistory.com/167#entry167comment</comments>
      <pubDate>Wed, 24 Apr 2024 00:41:32 +0900</pubDate>
    </item>
    <item>
      <title>[Vane] Java 엑셀, csv 변환 라이브러리  xrm (ver 1.1.0)</title>
      <link>https://persestitan.tistory.com/166</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Xlsx(Xls) Relational Mapping (xrm)&lt;/b&gt;은 엑셀, CSV 파일을 Java클래스 타입으로 변환해 주는 라이브러리입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/VaneProject/xrm&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/VaneProject/xrm&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1711892288736&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - VaneProject/xrm: Xlsx Relational Mapping (Xlsx to Object)&quot; data-og-description=&quot;Xlsx Relational Mapping (Xlsx to Object). Contribute to VaneProject/xrm development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/VaneProject/xrm&quot; data-og-url=&quot;https://github.com/VaneProject/xrm&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/r5Vi1/hyVJRdQVLP/6FPvPmVwk6LENUk2BTiWl0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/VaneProject/xrm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/VaneProject/xrm&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/r5Vi1/hyVJRdQVLP/6FPvPmVwk6LENUk2BTiWl0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&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;GitHub - VaneProject/xrm: Xlsx Relational Mapping (Xlsx to Object)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Xlsx Relational Mapping (Xlsx to Object). Contribute to VaneProject/xrm development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;maven&lt;/p&gt;
&lt;pre id=&quot;code_1711892224081&quot; class=&quot;java&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;io.github.vaneproject&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;xrm&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;1.1.0&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;gradle&lt;/p&gt;
&lt;pre id=&quot;code_1711892224082&quot; class=&quot;java&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;implementation 'io.github.vaneproject:xrm:1.1.0'&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;gradle.kts&lt;/p&gt;
&lt;pre id=&quot;code_1711892224083&quot; class=&quot;java&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;implementation(&quot;io.github.vaneproject:xrm:1.1.0&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;어노테이션&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;@XrmSheet&lt;/b&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;value (String) : 시트 이름을 지정하는 값으로 기본값으로 클래스명이 지정됩니다.&lt;/li&gt;
&lt;li&gt;header (int) : 머리말의 행을 지정하는 값으로 기본값 으로는 첫번째 행인 1이 지정됩니다.&lt;/li&gt;
&lt;li&gt;data (int) : 데이터의 행을 지정하는 값으로 기본값으로 두번째 행인 2가 지정됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;@Xrm&lt;/b&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;value (String) : 해당 값과 머리말에 일치할 경우 값이 저장되며 기본값으로 변수명이 지정됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용예시&lt;/p&gt;
&lt;pre id=&quot;code_1711970665606&quot; class=&quot;java&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;@XrmSheet(value = &quot;sheet1&quot;, header = 2, data = 3)
public class XrmTest {
    @Xrm(&quot;count&quot;)
    private int number;
    @Xrm
    private String name;
    @Xrm
    private String gender;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;@CsvSheet&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;csv타입의 파일을 상태를 정의할때 사용하는 어노테이션으로 클래스의 최상단에 사용됩니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;seq (String) : csv파일의 구분자를 지정하는 값으로 기본값으로 콤마(,)가 지정됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;@Csv&lt;/b&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;value (String) : 해당 값과 머리말이 일치할 경우 값이 부여되며 기본값으로 변수명이 지정됩니다.&lt;/li&gt;
&lt;li&gt;format (Class) : 지원하지 않는 타입을 사용할 경우 XrmFormat을 상속한 클래스를 등록하여 포맷을 지정할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용예시&lt;/p&gt;
&lt;pre id=&quot;code_1712313824429&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@CsvSheet
public class CsvTest {
    @Csv(&quot;count&quot;)
    private int number;
    @Csv
    private String name;
    @Csv
    private String gender;
    @Csv(format = LocalDateTimeFormat.class)
    private LocalDateTime date;

    public void print() {
        System.out.printf(&quot;count: %d, name: %s, gender: %s, date: %s%n&quot;, number, name, gender, date);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;XrmFormat 사용법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;XrmFormat&amp;lt;변환할 클래스&amp;gt; 형태로 지정됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;셀에 존재하는 String타입의 값의 파라미터를 이용하여 변환할 타입을 return하여 만들 수 있습니다.&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;LocalDateTime으로 변환하는 코드는 다음과 같습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712314103393&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.time.LocalDateTime;

public class LocalDateTimeFormat extends XrmFormat&amp;lt;LocalDateTime&amp;gt; {
    @Override
    public LocalDateTime format(String s) {
        return LocalDateTime.parse(s);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;파일 읽기 예제&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;XlsxRead&lt;/h4&gt;
&lt;pre id=&quot;code_1712314316416&quot; class=&quot;typescript&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;@XrmSheet(value = &quot;sheet1&quot;, header = 2)
public class XlsxExample1 {
    @Xrm
    private int number;
    @Xrm
    private String name;
    @Xrm
    private String gender;

    public void print() {
        System.out.printf(&quot;number: %d, name: %s, gender: %s%n&quot;, number, name, gender);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #2b2b2b; color: #a9b7c6;&quot;&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;XlsxRead&amp;lt;XlsxExample1&amp;gt; read = new XlsxRead&amp;lt;&amp;gt;(XlsxExample1.class, /* 파일 경로 */);

System.out.println(&quot;Print all&quot;);
List&amp;lt;XlsxExample1&amp;gt; all = read.getAll();
for (XlsxExample1 example : all)
    example.print();

System.out.println(&quot;Print one&quot;);
XlsxExample1 example1 = read.get(0);
example1.print();&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;출력&lt;/p&gt;
&lt;pre id=&quot;code_1712314682935&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Print all
number: 1, name: name1, gender: male
number: 2, name: name2, gender: female
number: 3, name: name3, gender: male
Print one
number: 1, name: name1, gender: male&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;CsvRead&lt;/h4&gt;
&lt;pre id=&quot;code_1712314699320&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@CsvSheet
public class CsvExample3 {
    @Csv(&quot;count&quot;)
    private int number;
    @Csv
    private String name;
    @Csv
    private String gender;
    @Csv(format = LocalDateTimeFormat.class)
    private LocalDateTime date;

    public void print() {
        System.out.printf(&quot;count: %d, name: %s, gender: %s, date: %s%n&quot;, number, name, gender, date);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1712314733751&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CsvRead&amp;lt;CsvExample3&amp;gt; read = new CsvRead&amp;lt;&amp;gt;(CsvExample3.class, /* 경로 */);
System.out.println(&quot;Print all&quot;);
List&amp;lt;CsvExample3&amp;gt; all = read.getAll();
for (CsvExample3 example : all)
    example.print();

System.out.println(&quot;Print one&quot;);
CsvExample3 example1 = read.get(0);
example1.print();&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_1712314749518&quot; class=&quot;java&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;Print all
count: 1, name: name1, gender: male, date: 2024-01-01T12:00
count: 2, name: name2, gender: female, date: 2024-01-02T11:00
count: 3, name: name3, gender: male, date: 2024-01-03T10:00
Print one
count: 1, name: name1, gender: male, date: 2024-01-01T12:00&lt;/code&gt;&lt;/pre&gt;</description>
      <category>VaneProject/maven</category>
      <category>Java</category>
      <category>lib</category>
      <category>maven</category>
      <category>Vane</category>
      <author>PersesTitan(페르)</author>
      <guid isPermaLink="true">https://persestitan.tistory.com/166</guid>
      <comments>https://persestitan.tistory.com/166#entry166comment</comments>
      <pubDate>Fri, 5 Apr 2024 20:00:42 +0900</pubDate>
    </item>
    <item>
      <title>[Rider] 라이더 윈도우 폼 프로젝트 생성 (Windows Forms Application)</title>
      <link>https://persestitan.tistory.com/165</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;라이더(Rider) 설치&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;윈도우 폼 개발은 비주얼 스튜디오에서 개발이 가능하지만 저와 같은 잿브레인 노예들에게는 Rider라는 IDE가 존재하기 때문에 Rider에서 윈도우 폼 개발하는 법을 작성하게 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당연하지만 Rider는 유료 IDE입니다. &lt;s&gt;(환율이 미쳤...)&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.jetbrains.com/ko-kr/rider/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.jetbrains.com/ko-kr/rider/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1710053989047&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;Rider: JetBrains의 크로스 플랫폼 .NET IDE&quot; data-og-description=&quot;&quot; data-og-host=&quot;www.jetbrains.com&quot; data-og-source-url=&quot;https://www.jetbrains.com/ko-kr/rider/&quot; data-og-url=&quot;https://www.jetbrains.com/ko-kr/rider/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.jetbrains.com/ko-kr/rider/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.jetbrains.com/ko-kr/rider/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;Rider: JetBrains의 크로스 플랫폼 .NET IDE&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.jetbrains.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;.NET Framework 설치&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당연하겠지만 설치되어 있다면 설치하실 필요는 없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 유무는 아래 프로젝트 설치 부분에서 간단하게 확인하는 법이 있으므로 참고해주세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;영어&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://dotnet.microsoft.com/en-us/download/visual-studio-sdks&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://dotnet.microsoft.com/en-us/download/visual-studio-sdks&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1710056225327&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;.NET SDKs downloads for Visual Studio&quot; data-og-description=&quot;Download .NET SDKs for Visual Studio. Visit our main Downloads page for all .NET downloads, including Linux and macOS.&quot; data-og-host=&quot;dotnet.microsoft.com&quot; data-og-source-url=&quot;https://dotnet.microsoft.com/en-us/download/visual-studio-sdks&quot; data-og-url=&quot;https://dotnet.microsoft.com/en-us/download/visual-studio-sdks&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/nqMKs/hyVxuDYomG/9ZE9FkYVXirwV8wngD76oK/img.png?width=238&amp;amp;height=238&amp;amp;face=0_0_238_238,https://scrap.kakaocdn.net/dn/dvZLNW/hyVxoX3Xqu/toycbHy6vYDpM5aUk0BKk1/img.png?width=459&amp;amp;height=238&amp;amp;face=0_0_459_238&quot;&gt;&lt;a href=&quot;https://dotnet.microsoft.com/en-us/download/visual-studio-sdks&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://dotnet.microsoft.com/en-us/download/visual-studio-sdks&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/nqMKs/hyVxuDYomG/9ZE9FkYVXirwV8wngD76oK/img.png?width=238&amp;amp;height=238&amp;amp;face=0_0_238_238,https://scrap.kakaocdn.net/dn/dvZLNW/hyVxoX3Xqu/toycbHy6vYDpM5aUk0BKk1/img.png?width=459&amp;amp;height=238&amp;amp;face=0_0_459_238');&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;.NET SDKs downloads for Visual Studio&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Download .NET SDKs for Visual Studio. Visit our main Downloads page for all .NET downloads, including Linux and macOS.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;dotnet.microsoft.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;한국어&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://dotnet.microsoft.com/ko-kr/download/visual-studio-sdks&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://dotnet.microsoft.com/ko-kr/download/visual-studio-sdks&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1710056305164&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;Visual Studio용 .NET SDK 다운로드&quot; data-og-description=&quot;Visual Studio용 .NET SDK를 다운로드합니다. Linux 및 macOS를 포함한 모든 .NET 다운로드는 기본 다운로드 페이지를 방문하세요.&quot; data-og-host=&quot;dotnet.microsoft.com&quot; data-og-source-url=&quot;https://dotnet.microsoft.com/ko-kr/download/visual-studio-sdks&quot; data-og-url=&quot;https://dotnet.microsoft.com/ko-kr/download/visual-studio-sdks&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bktsFy/hyVxyGn1Xm/ge7NwRf3hi3O2zevLyG39K/img.png?width=238&amp;amp;height=238&amp;amp;face=0_0_238_238,https://scrap.kakaocdn.net/dn/bdQmcq/hyVxpinTDz/m9gOKc1Q9NkAEtMw5KjjB1/img.png?width=459&amp;amp;height=238&amp;amp;face=0_0_459_238&quot;&gt;&lt;a href=&quot;https://dotnet.microsoft.com/ko-kr/download/visual-studio-sdks&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://dotnet.microsoft.com/ko-kr/download/visual-studio-sdks&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bktsFy/hyVxyGn1Xm/ge7NwRf3hi3O2zevLyG39K/img.png?width=238&amp;amp;height=238&amp;amp;face=0_0_238_238,https://scrap.kakaocdn.net/dn/bdQmcq/hyVxpinTDz/m9gOKc1Q9NkAEtMw5KjjB1/img.png?width=459&amp;amp;height=238&amp;amp;face=0_0_459_238');&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;Visual Studio용 .NET SDK 다운로드&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Visual Studio용 .NET SDK를 다운로드합니다. Linux 및 macOS를 포함한 모든 .NET 다운로드는 기본 다운로드 페이지를 방문하세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;dotnet.microsoft.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 링크에 들어가셔서 원하는 버전의 Developer Pack를 다운받아서 설치해주시면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-03-10 164247.png&quot; data-origin-width=&quot;985&quot; data-origin-height=&quot;538&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZYCD8/btsFGJpXRnO/wlkAtf15RKr7Vn370krj3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZYCD8/btsFGJpXRnO/wlkAtf15RKr7Vn370krj3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZYCD8/btsFGJpXRnO/wlkAtf15RKr7Vn370krj3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZYCD8%2FbtsFGJpXRnO%2FwlkAtf15RKr7Vn370krj3K%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;985&quot; height=&quot;538&quot; data-filename=&quot;스크린샷 2024-03-10 164247.png&quot; data-origin-width=&quot;985&quot; data-origin-height=&quot;538&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;프로젝트 생성&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.NET Framework가 설치되어 있지 않을 경우 아래와 같이 경고문이 나오므로 위에 .NET Framework를 설치해주세요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;798&quot; data-origin-height=&quot;516&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VNjSe/btsFEZN8ppO/Sj9n1cByc3VmOUjyKwmHT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VNjSe/btsFEZN8ppO/Sj9n1cByc3VmOUjyKwmHT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VNjSe/btsFEZN8ppO/Sj9n1cByc3VmOUjyKwmHT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVNjSe%2FbtsFEZN8ppO%2FSj9n1cByc3VmOUjyKwmHT1%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;798&quot; height=&quot;516&quot; data-origin-width=&quot;798&quot; data-origin-height=&quot;516&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;위에 .NET를 설치해주시고 다시 Rider를 실행해보시면 아래 경고문자가 사라진 것을 볼 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 .NET Framework -&amp;gt; Destop Application에 들어간 뒤에 Type를 Windows Forms Application으로 바꾸어주시고 생성을 해주시면 됩니다. (프로젝트명이나 위치는 원하시는 값을 입력해주시면 됩니다.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;794&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brSwjU/btsFDzJppH6/a1xS0SNMxbXAEWuaLPlAzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brSwjU/btsFDzJppH6/a1xS0SNMxbXAEWuaLPlAzK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brSwjU/btsFDzJppH6/a1xS0SNMxbXAEWuaLPlAzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrSwjU%2FbtsFDzJppH6%2Fa1xS0SNMxbXAEWuaLPlAzK%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;794&quot; height=&quot;512&quot; data-origin-width=&quot;794&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;사용법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성되시면 From1을 클릭하시고 하단의 Designer를 클릭하시면 미리보기를 볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-03-10 165416.png&quot; data-origin-width=&quot;1348&quot; data-origin-height=&quot;914&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dhuwGo/btsFE2qygs4/X2EYvfvHGuer7PL0WNn4tk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dhuwGo/btsFE2qygs4/X2EYvfvHGuer7PL0WNn4tk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dhuwGo/btsFE2qygs4/X2EYvfvHGuer7PL0WNn4tk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdhuwGo%2FbtsFE2qygs4%2FX2EYvfvHGuer7PL0WNn4tk%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;1348&quot; height=&quot;914&quot; data-filename=&quot;스크린샷 2024-03-10 165416.png&quot; data-origin-width=&quot;1348&quot; data-origin-height=&quot;914&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;화면이 나오지 않고 로딩이 계속뜬다면 상단의 Rebuild Solution &amp;amp; Reload the Designer를 눌러주시면 해결 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1283&quot; data-origin-height=&quot;834&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blFyNd/btsFELCO3o9/M6n3OZSpB63LrJIJZBgZK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blFyNd/btsFELCO3o9/M6n3OZSpB63LrJIJZBgZK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blFyNd/btsFELCO3o9/M6n3OZSpB63LrJIJZBgZK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblFyNd%2FbtsFELCO3o9%2FM6n3OZSpB63LrJIJZBgZK0%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;1283&quot; height=&quot;834&quot; data-origin-width=&quot;1283&quot; data-origin-height=&quot;834&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;이제 여기서 작업을 하시면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1830&quot; data-origin-height=&quot;915&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nXpUg/btsFF8qfxM5/9EDInqk78BaEPpKE6CB051/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nXpUg/btsFF8qfxM5/9EDInqk78BaEPpKE6CB051/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nXpUg/btsFF8qfxM5/9EDInqk78BaEPpKE6CB051/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnXpUg%2FbtsFF8qfxM5%2F9EDInqk78BaEPpKE6CB051%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;1830&quot; height=&quot;915&quot; data-origin-width=&quot;1830&quot; data-origin-height=&quot;915&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>IDE/Rider</category>
      <category>csharp</category>
      <category>Rider</category>
      <author>PersesTitan(페르)</author>
      <guid isPermaLink="true">https://persestitan.tistory.com/165</guid>
      <comments>https://persestitan.tistory.com/165#entry165comment</comments>
      <pubDate>Sun, 10 Mar 2024 16:58:33 +0900</pubDate>
    </item>
  </channel>
</rss>