<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>구티</title>
    <link>https://goateedev.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Fri, 10 Apr 2026 16:18:44 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>구티맨</managingEditor>
    <item>
      <title>Slack Block Kit 사용하기( 메시지 UI 구현 )</title>
      <link>https://goateedev.tistory.com/368</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;서버와 인프라를 운영하면 Chatops로 슬랙의 웹훅을 이용하여 슬랙으로 각종 메시지를 보내고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 때 단순한 텍스트 뿐만 아니라 UI가 필요한 경우도 있습니다.&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;그런 경우, Slack의 UI 프레임워크인 Block Kit를 사용하면 됩니다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;824&quot; data-origin-height=&quot;246&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dzl3jL/btr3aLlgmLz/0SYP00VGaSlAcrnvDFtj1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dzl3jL/btr3aLlgmLz/0SYP00VGaSlAcrnvDFtj1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dzl3jL/btr3aLlgmLz/0SYP00VGaSlAcrnvDFtj1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdzl3jL%2Fbtr3aLlgmLz%2F0SYP00VGaSlAcrnvDFtj1K%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;400&quot; height=&quot;119&quot; data-origin-width=&quot;824&quot; data-origin-height=&quot;246&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;890&quot; data-origin-height=&quot;276&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p1E5F/btr3bdV7dGH/wK4KglmecWyJgjQoPCN3Bk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p1E5F/btr3bdV7dGH/wK4KglmecWyJgjQoPCN3Bk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p1E5F/btr3bdV7dGH/wK4KglmecWyJgjQoPCN3Bk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp1E5F%2Fbtr3bdV7dGH%2FwK4KglmecWyJgjQoPCN3Bk%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;400&quot; height=&quot;276&quot; data-origin-width=&quot;890&quot; data-origin-height=&quot;276&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;876&quot; data-origin-height=&quot;160&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ceLwYl/btr21DJfHNr/jtfuj6AO0omZBr0ZgYKo61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ceLwYl/btr21DJfHNr/jtfuj6AO0omZBr0ZgYKo61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ceLwYl/btr21DJfHNr/jtfuj6AO0omZBr0ZgYKo61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FceLwYl%2Fbtr21DJfHNr%2Fjtfuj6AO0omZBr0ZgYKo61%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;400&quot; height=&quot;73&quot; data-origin-width=&quot;876&quot; data-origin-height=&quot;160&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UI 컴포넌트 구성은 &lt;a href=&quot;https://app.slack.com/block-kit-builder/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Block Kit Builder&lt;/a&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;그리고 Payload값을 슬랙의 웹훅 API 호출시 body에 넣어주면 슬랙으로 Builder에서 본 메시지가 슬랙으로 전달되는 것을 확인할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;참조 링크 열기&quot; data-text-less=&quot;참조 링크 닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #fafafa;&quot;&gt;Block Kit 사이트 -&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://api.slack.com/block-kit&quot;&gt;https://api.slack.com/block-kit&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Block Kit Builder - &lt;a href=&quot;https://app.slack.com/block-kit-builder/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://app.slack.com/block-kit-builder/&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Backend</category>
      <author>구티맨</author>
      <guid isPermaLink="true">https://goateedev.tistory.com/368</guid>
      <comments>https://goateedev.tistory.com/368#entry368comment</comments>
      <pubDate>Fri, 10 Mar 2023 15:18:14 +0900</pubDate>
    </item>
    <item>
      <title>AWS S3 Multiple Objects 삭제( SDK )</title>
      <link>https://goateedev.tistory.com/367</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;AWS S3 문서를 보면, 버킷의 키 값을 이용하여 여러 오브젝트를 한번에 삭제하는 예제가 있습니다.( &lt;a href=&quot;https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-multiple-objects.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;예제 링크&lt;/a&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;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1678398738218&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;private final S3Client s3Client;

public void deleteObjects(String bucketName, String prefix){
    ListObjectsV2Request request = ListObjectsV2Request.builder().bucket(bucketName).prefix(prefix).build();
    ListObjectsV2Iterable list = s3Client.listObjectsV2Paginator(request);
    for (ListObjectsV2Response response : list) {
        List&amp;lt;S3Object&amp;gt; objects = response.contents();
        List&amp;lt;ObjectIdentifier&amp;gt; objectIdentifiers = objects.stream().map(o -&amp;gt; ObjectIdentifier.builder().key(o.key()).build()).collect(Collectors.toList());
        DeleteObjectsRequest deleteObjectsRequest = DeleteObjectsRequest.builder().bucket(bucketName).delete(Delete.builder().objects(objectIdentifiers).build()).build();
        DeleteObjectsResponse deleteObjectsResponse = s3Client.deleteObjects(deleteObjectsRequest);
        log.info(&quot;deleteObjectsResponse : &quot; + deleteObjectsResponse);
    }
}&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;deleteObjects 함수에 삭제할 버킷과 prefix( 경로 )를 넣어주면, 해당 경로 이하의 모든 오브젝트를 삭제합니다.&lt;/p&gt;</description>
      <category>Cloud Platform/AWS</category>
      <category>AWS</category>
      <category>delete</category>
      <category>s3</category>
      <author>구티맨</author>
      <guid isPermaLink="true">https://goateedev.tistory.com/367</guid>
      <comments>https://goateedev.tistory.com/367#entry367comment</comments>
      <pubDate>Fri, 10 Mar 2023 06:53:57 +0900</pubDate>
    </item>
    <item>
      <title>IntelliJ Plugin : POJO to JSON</title>
      <link>https://goateedev.tistory.com/365</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;DTO로 JSON을 만들어주는 플러그인을 소개합니다.&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;먼저 &quot;POJO to JSON&quot; 플러그인을 설치합니다.&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;JSON을 생성하고자 하는 클래스에 마우스 오른쪽을 클릭하여 &quot;Copy / Paste Special&quot;에 있는 Copy JSON 메뉴를 눌러줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;978&quot; data-origin-height=&quot;816&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfgTHS/btrRTFcYOfr/aYNw8bvETrVNFK25Y3WdB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfgTHS/btrRTFcYOfr/aYNw8bvETrVNFK25Y3WdB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfgTHS/btrRTFcYOfr/aYNw8bvETrVNFK25Y3WdB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfgTHS%2FbtrRTFcYOfr%2FaYNw8bvETrVNFK25Y3WdB1%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;978&quot; height=&quot;816&quot; data-origin-width=&quot;978&quot; data-origin-height=&quot;816&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 IntelliJ 우측 하단에 클립보드에 JSON이 복사되었다고 팝업이 뜹니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;746&quot; data-origin-height=&quot;122&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9twVu/btrRXEXTFNC/nAIsD7tVO8N0Kt7N375nKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9twVu/btrRXEXTFNC/nAIsD7tVO8N0Kt7N375nKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9twVu/btrRXEXTFNC/nAIsD7tVO8N0Kt7N375nKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9twVu%2FbtrRXEXTFNC%2FnAIsD7tVO8N0Kt7N375nKK%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;746&quot; height=&quot;122&quot; data-origin-width=&quot;746&quot; data-origin-height=&quot;122&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필요한 곳에 붙여넣기를 하면, JSON을 확인할 수 있습니다.&lt;/p&gt;</description>
      <category>Tools</category>
      <category>Converter</category>
      <category>dto</category>
      <category>intellij</category>
      <category>JSON</category>
      <category>plugin</category>
      <author>구티맨</author>
      <guid isPermaLink="true">https://goateedev.tistory.com/365</guid>
      <comments>https://goateedev.tistory.com/365#entry365comment</comments>
      <pubDate>Wed, 23 Nov 2022 14:33:08 +0900</pubDate>
    </item>
    <item>
      <title>IntelliJ Plugin : yaml converter</title>
      <link>https://goateedev.tistory.com/364</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;Properties to YAML Converter&quot; 플러그인을 설치하고 IntelliJ를 재시작 합니다.&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;properties 파일에 마우스 오른쪽을 클릭하면 &quot;Convert Properties to YAML&quot; 메뉴가 나오는데 이걸 선택합니다.&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;선택하면 파일의 확장자가 properties에서 yml로 변경되고 파일의 내용도 yaml 형태로 변경이 됩니다.&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;472&quot; data-origin-height=&quot;342&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqAsnu/btrRSiuFThX/YA5KURUVt8KCUDcMnuPFvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqAsnu/btrRSiuFThX/YA5KURUVt8KCUDcMnuPFvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqAsnu/btrRSiuFThX/YA5KURUVt8KCUDcMnuPFvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqAsnu%2FbtrRSiuFThX%2FYA5KURUVt8KCUDcMnuPFvK%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;472&quot; height=&quot;342&quot; data-origin-width=&quot;472&quot; data-origin-height=&quot;342&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>Tools</category>
      <category>Converter</category>
      <category>intellij</category>
      <category>plugin</category>
      <category>Properties</category>
      <category>YAML</category>
      <author>구티맨</author>
      <guid isPermaLink="true">https://goateedev.tistory.com/364</guid>
      <comments>https://goateedev.tistory.com/364#entry364comment</comments>
      <pubDate>Tue, 22 Nov 2022 22:47:49 +0900</pubDate>
    </item>
    <item>
      <title>gradle 에러 : Could not find method compile() for arguments</title>
      <link>https://goateedev.tistory.com/363</link>
      <description>&lt;pre id=&quot;code_1669121557062&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Caused by: org.gradle.internal.metaobject.AbstractDynamicObject$CustomMessageMissingMethodException: Could not find method compile() for arguments [com.amazonaws:aws-xray-recorder-sdk-core] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
	at org.gradle.internal.metaobject.AbstractDynamicObject$CustomMissingMethodExecutionFailed.&amp;lt;init&amp;gt;(AbstractDynamicObject.java:190)
	at org.gradle.internal.metaobject.AbstractDynamicObject.methodMissingException(AbstractDynamicObject.java:184)
	at org.gradle.internal.metaobject.ConfigureDelegate.invokeMethod(ConfigureDelegate.java:86)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Could not find method compile() for arguments 라는 에러가 발생하였습니다.&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에서 compile() 을 호출하는 라인에서 에러가 발생한 것인데,&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;compile, testCompile, runtime, testRuntime 이 Gradle 7.0에서 삭제가 되어 발생한 오류 입니다.( Gradle 4.10부터 Deprecated )&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;implementation, testImplementation, runtimeOnly, testRuntimeOnly 로 대체되었으니 이 4가지 메서드를 사용하도록 합니다.&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;버전을 확인해보면, 7.5.1을 사용하는 것을 확인할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1669121739053&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;./gradlew --version                                 

Welcome to Gradle 7.5.1!

Here are the highlights of this release:
 - Support for Java 18
 - Support for building with Groovy 4
 - Much more responsive continuous builds
 - Improved diagnostics for dependency resolution

For more details see https://docs.gradle.org/7.5.1/release-notes.html


------------------------------------------------------------
Gradle 7.5.1
------------------------------------------------------------

Build time:   2022-08-05 21:17:56 UTC
Revision:     d1daa0cbf1a0103000b71484e1dbfe096e095918

Kotlin:       1.6.21
Groovy:       3.0.10
Ant:          Apache Ant(TM) version 1.10.11 compiled on July 10 2021
JVM:          17.0.5 (Azul Systems, Inc. 17.0.5+8-LTS)
OS:           Mac OS X 12.6.1 aarch64&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Gradle</category>
      <author>구티맨</author>
      <guid isPermaLink="true">https://goateedev.tistory.com/363</guid>
      <comments>https://goateedev.tistory.com/363#entry363comment</comments>
      <pubDate>Tue, 22 Nov 2022 21:56:02 +0900</pubDate>
    </item>
    <item>
      <title>Spring Boot - java 버전 설정하기( IntelliJ )</title>
      <link>https://goateedev.tistory.com/361</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;build.gradle 설정&lt;/h2&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;sourceCompatibility = '1.8'
targetCompatibility = '1.8'&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1666616304009&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;plugins {
    id 'java'
}

java {
    sourceCompatibility = '1.8'
    targetCompatibility = '1.8'    
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sourceCompatibility 는 개발할 때 작성하는 자바 소스 코드의 버전이고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;targetCompatibility 는 소스를 컴파일해서 생성되는 class 파일의 버전으로 프로그램이 수행될 수 있는 최소 자바 버전이 됩니다.&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;자바 11로 개발하지만 자바 8에 호환가능 하도록 배포를 하려면 source는 11, targert은 1.8로 설정을 하면 됩니다.&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;IntelliJ 설정&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;File &amp;gt; Project Structure 팝업에서 Project &amp;gt; SDK에서 원하는 SDK를 설정하고, Language level에 8 설정&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1992&quot; data-origin-height=&quot;1344&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c8C9KR/btrPtf8rjdj/E1wxMujK1Yg4YuImSO5gM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c8C9KR/btrPtf8rjdj/E1wxMujK1Yg4YuImSO5gM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c8C9KR/btrPtf8rjdj/E1wxMujK1Yg4YuImSO5gM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc8C9KR%2FbtrPtf8rjdj%2FE1wxMujK1Yg4YuImSO5gM0%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;1992&quot; height=&quot;1344&quot; data-origin-width=&quot;1992&quot; data-origin-height=&quot;1344&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Modules &amp;gt; Dependencies 탭에 Module SDK에서 원하는 SDK를 설정을 하면, External Libraries 에 1.8 JDK가 설정되어 있는것을 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1992&quot; data-origin-height=&quot;1344&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JkUQl/btrPujWHVdT/6e149O9fX2HrMrSuNQafH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JkUQl/btrPujWHVdT/6e149O9fX2HrMrSuNQafH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JkUQl/btrPujWHVdT/6e149O9fX2HrMrSuNQafH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJkUQl%2FbtrPujWHVdT%2F6e149O9fX2HrMrSuNQafH0%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;1992&quot; height=&quot;1344&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1992&quot; data-origin-height=&quot;1344&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;507&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kSEd8/btrPs0cA1c2/EV9ohJITpfimKKgo2kjBi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kSEd8/btrPs0cA1c2/EV9ohJITpfimKKgo2kjBi1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kSEd8/btrPs0cA1c2/EV9ohJITpfimKKgo2kjBi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkSEd8%2FbtrPs0cA1c2%2FEV9ohJITpfimKKgo2kjBi1%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;600&quot; height=&quot;507&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;507&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Preferences에 Build &amp;gt; Compiler &amp;gt; Java Compiler에 Project bytecode version을 1.8 로 설정해줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2024&quot; data-origin-height=&quot;1624&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cuWSt6/btrPuPHQmVK/JSTKL1hBJYwxNrpIGzOxF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cuWSt6/btrPuPHQmVK/JSTKL1hBJYwxNrpIGzOxF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cuWSt6/btrPuPHQmVK/JSTKL1hBJYwxNrpIGzOxF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcuWSt6%2FbtrPuPHQmVK%2FJSTKL1hBJYwxNrpIGzOxF0%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;2024&quot; height=&quot;1624&quot; data-origin-width=&quot;2024&quot; data-origin-height=&quot;1624&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Spring</category>
      <category>intellij</category>
      <category>jdk</category>
      <category>spring boot</category>
      <author>구티맨</author>
      <guid isPermaLink="true">https://goateedev.tistory.com/361</guid>
      <comments>https://goateedev.tistory.com/361#entry361comment</comments>
      <pubDate>Mon, 24 Oct 2022 22:04:21 +0900</pubDate>
    </item>
    <item>
      <title>iterm2 테마 설치하기</title>
      <link>https://goateedev.tistory.com/359</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;터미널에서 아래 명령어로 curl 설치 및 테마 파일을 다운 받을 폴더를 생성하고 curl로 Dracula+ 테마를 다운받습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1666587429796&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;brew install curl

mkdir theme &amp;amp;&amp;amp; cd theme

curl -LO https://raw.githubusercontent.com/mbadolato/iTerm2-Color-Schemes/master/schemes/Dracula%2B.itermcolors&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;( &lt;a href=&quot;https://iterm2colorschemes.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://iterm2colorschemes.com/&lt;/a&gt; 사이트에 가서, 원하는 테마를 선택하면 위의 url을 확인할 수 있습니다. )&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;Preferences &amp;gt; Profiles &amp;gt; Colors에 Color Presets을 눌러 Import를 선택해서, 이전에 다운받은 theme에 있는 테마 파일을 선택하면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1854&quot; data-origin-height=&quot;1462&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KGJH4/btrPoy8a7ni/cjzziOFADIIxiZMu8w2Cr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KGJH4/btrPoy8a7ni/cjzziOFADIIxiZMu8w2Cr0/img.png&quot; data-alt=&quot;ㄹ&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KGJH4/btrPoy8a7ni/cjzziOFADIIxiZMu8w2Cr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKGJH4%2FbtrPoy8a7ni%2FcjzziOFADIIxiZMu8w2Cr0%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;1854&quot; height=&quot;1462&quot; data-origin-width=&quot;1854&quot; data-origin-height=&quot;1462&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ㄹ&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>MacOS</category>
      <category>iTerm2</category>
      <category>Theme</category>
      <author>구티맨</author>
      <guid isPermaLink="true">https://goateedev.tistory.com/359</guid>
      <comments>https://goateedev.tistory.com/359#entry359comment</comments>
      <pubDate>Mon, 24 Oct 2022 14:03:37 +0900</pubDate>
    </item>
    <item>
      <title>mac m1에 homebrew 설치</title>
      <link>https://goateedev.tistory.com/358</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;아래 명령어로 설치를 합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1666586361372&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/bin/bash -c &quot;$(curl -fsSL https://gist.githubusercontent.com/nrubin29/bea5aa83e8dfa91370fe83b62dad6dfa/raw/48f48f7fef21abb308e129a80b3214c2538fc611/homebrew_m1.sh)&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;zshrc 파일의 제일 마지막에 eval ~ 명령어를 입력해주면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;( 새로운 터미널을 켜면 brew 명령어가 정상적으로 동작합니다. )&lt;/p&gt;
&lt;pre id=&quot;code_1666586805840&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vi ~/.zshrc

eval $(/opt/homebrew/bin/brew shellenv)&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;터미널에 eval~ 명령어를 직접 입력하면 해당 터미널에서 brew 명령어가 동작합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1666586965089&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;➜  ~ brew help
Example usage:
  brew search TEXT|/REGEX/
  brew info [FORMULA|CASK...]
  brew install FORMULA|CASK...
  brew update
  brew upgrade [FORMULA|CASK...]
  brew uninstall FORMULA|CASK...
  brew list [FORMULA|CASK...]&lt;/code&gt;&lt;/pre&gt;</description>
      <category>MacOS</category>
      <category>BREW</category>
      <category>homebrew</category>
      <category>M1</category>
      <category>mac</category>
      <author>구티맨</author>
      <guid isPermaLink="true">https://goateedev.tistory.com/358</guid>
      <comments>https://goateedev.tistory.com/358#entry358comment</comments>
      <pubDate>Mon, 24 Oct 2022 13:49:32 +0900</pubDate>
    </item>
    <item>
      <title>애플 Mac( M1 )에서 linux/amd64 도커 이미지 빌드</title>
      <link>https://goateedev.tistory.com/357</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;M1( ARM ) 아키텍처 pc에서 도커 이미지를 받거나 빌드하면, 아래와 같이 arm64 아키텍처 이미지를 받거나 생성합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1665625664340&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;➜  aws-xray-daemon-macos-3.x docker image inspect xray-daemon-ecr| grep Architecture
        &quot;Architecture&quot;: &quot;arm64&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;M1 pc에서 linux/arm64 이미지를 빌드는 아래와 같이 하면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1665634344519&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;➜  xray docker build --platform linux/amd64 -t xray-daemon .

➜  xray docker image inspect xray-daemon | grep Architecture
        &quot;Architecture&quot;: &quot;amd64&quot;,&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Docker</category>
      <author>구티맨</author>
      <guid isPermaLink="true">https://goateedev.tistory.com/357</guid>
      <comments>https://goateedev.tistory.com/357#entry357comment</comments>
      <pubDate>Thu, 13 Oct 2022 13:13:04 +0900</pubDate>
    </item>
    <item>
      <title>테라폼( Terraform ) 설치 및 버전 변경</title>
      <link>https://goateedev.tistory.com/355</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;tfenv를 설치합니다. tfenv는 테라폼의 버전을 관리해주는 소프트웨어 입니다.&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;tfenv 의 list-remote 명령어로 설치 가능한 테라폼 버전 목록을 확인할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1664432608037&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;➜  ~ brew install tfenv

➜  ~ tfenv list-remote
1.3.1
1.3.0
1.3.0-rc1
1.3.0-beta1&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;아래와 같이 install 명령어로 원하는 버전을 설치합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;( 1.0.0의 경우에는 arm64 아키텍처를 지원하는 바이너리가 없어 amd64로 아키텍처를 변경하여 설치를 해줍니다. )&lt;/p&gt;
&lt;pre id=&quot;code_1664432663388&quot; class=&quot;angelscript&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;➜  ~ tfenv install 1.0.0

➜  ~ TFENV_ARCH=amd64 tfenv install 1.0.0

➜  ~ TFENV_ARCH=amd64 tfenv install 0.14.6​&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;list명령으로 현재 설치되어 있는 테라폼 버전 목록을 확인할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1664944288954&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;➜  ~ tfenv list
* 1.0.0 (set by /usr/local/Cellar/tfenv/3.0.0/version)
  0.14.6&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;tfenv로 사용할 테라폼 버전을 명시해주지 않으면 아래와 같이 테라폼 사용이 불가합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1664944236363&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;➜  ~ terraform
cat: /usr/local/Cellar/tfenv/3.0.0/version: No such file or directory
Version could not be resolved (set by /usr/local/Cellar/tfenv/3.0.0/version or tfenv use &amp;lt;version&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;테라폼의 어떤 버전을 사용할지 tfenv use 로 설정을 해주고, terraform version 으로 버전을 확인합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1664432735928&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;➜  ~ tfenv use 1.0.0
Switching default version to v1.0.0
Default version (when not overridden by .terraform-version or TFENV_TERRAFORM_VERSION) is now: 1.0.0
➜  ~ terraform version
Terraform v1.0.0
on darwin_amd64

Your version of Terraform is out of date! The latest version
is 1.3.1. You can update by downloading from https://www.terraform.io/downloads.html&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>Backend</category>
      <category>install</category>
      <category>terraform</category>
      <category>tfenv</category>
      <category>설치</category>
      <category>테라폼</category>
      <author>구티맨</author>
      <guid isPermaLink="true">https://goateedev.tistory.com/355</guid>
      <comments>https://goateedev.tistory.com/355#entry355comment</comments>
      <pubDate>Thu, 29 Sep 2022 16:34:42 +0900</pubDate>
    </item>
  </channel>
</rss>