<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>싹튼</title>
    <link>https://ssackteun.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sun, 9 Aug 2026 11:26:22 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>싹튼</managingEditor>
    <image>
      <title>싹튼</title>
      <url>https://tistory1.daumcdn.net/tistory/3113065/attach/ca6ea936161449939c05bf8ab50e6af9</url>
      <link>https://ssackteun.tistory.com</link>
    </image>
    <item>
      <title>[워드프레스] - 아이피에서 도메인으로 바꾸었을 때, 일부 리소스가 아이피를 가지고 있는 경우</title>
      <link>https://ssackteun.tistory.com/254</link>
      <description>&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;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;추천하는 플러그인은 -&amp;gt; Velvet Blues Update URLs&lt;/b&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;설치하면, update URLs 가 있다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;779&quot; data-origin-height=&quot;200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/prhc5/btsFuLuFF8T/g55r4XE6RZWsbzFdkniMqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/prhc5/btsFuLuFF8T/g55r4XE6RZWsbzFdkniMqK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/prhc5/btsFuLuFF8T/g55r4XE6RZWsbzFdkniMqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fprhc5%2FbtsFuLuFF8T%2Fg55r4XE6RZWsbzFdkniMqK%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;779&quot; height=&quot;200&quot; data-origin-width=&quot;779&quot; data-origin-height=&quot;200&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. Old URL 에 지금 도메인으로 바꿨는데도 남아있는 그 아이피를 http://ip:포트 형식으로 적어주고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. New URL 에 지금 바꾼 도메인으로 적어준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. URLs in page content 이 외에 Update ALL GUIDs 를 제외하고, 다 체크 후 업데이트 해준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;701&quot; data-origin-height=&quot;560&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dWripS/btsFqKwy5aB/PK2jpilajAaGKsfyqMauP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dWripS/btsFqKwy5aB/PK2jpilajAaGKsfyqMauP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dWripS/btsFqKwy5aB/PK2jpilajAaGKsfyqMauP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdWripS%2FbtsFqKwy5aB%2FPK2jpilajAaGKsfyqMauP1%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;701&quot; height=&quot;560&quot; data-origin-width=&quot;701&quot; data-origin-height=&quot;560&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>ARCHIVE(완료, 보류, 관심x)/WordPress</category>
      <author>싹튼</author>
      <guid isPermaLink="true">https://ssackteun.tistory.com/254</guid>
      <comments>https://ssackteun.tistory.com/254#entry254comment</comments>
      <pubDate>Sun, 3 Mar 2024 22:38:16 +0900</pubDate>
    </item>
    <item>
      <title>[메이플스토리] - 이미지인식기반 설치기 타이머</title>
      <link>https://ssackteun.tistory.com/253</link>
      <description>&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-sourcepos=&quot;1:1-1:16&quot; data-ke-size=&quot;size23&quot;&gt;구동화면&lt;/h3&gt;
&lt;a id=&quot;user-content-구동화면&quot; style=&quot;color: #000000;&quot; href=&quot;https://github.com/SsackTeun/MapleStory_InstallSkill_Timer/edit/main/README.md#%EA%B5%AC%EB%8F%99%ED%99%94%EB%A9%B4&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;552&quot; data-origin-height=&quot;432&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lpt2G/btsFodsoU98/ERThkY8ZmZJRdK5zwsk9o1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lpt2G/btsFodsoU98/ERThkY8ZmZJRdK5zwsk9o1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lpt2G/btsFodsoU98/ERThkY8ZmZJRdK5zwsk9o1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flpt2G%2FbtsFodsoU98%2FERThkY8ZmZJRdK5zwsk9o1%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;552&quot; height=&quot;432&quot; data-origin-width=&quot;552&quot; data-origin-height=&quot;432&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-sourcepos=&quot;5:1-5:21&quot; data-ke-size=&quot;size23&quot;&gt;업데이트 1.2V&lt;/h3&gt;
&lt;a id=&quot;user-content-업데이트-12v&quot; style=&quot;color: #000000;&quot; href=&quot;https://github.com/SsackTeun/MapleStory_InstallSkill_Timer/edit/main/README.md#%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-12v&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-sourcepos=&quot;7:1-9:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;7:1-7:55&quot;&gt;알람 기능 추가 F11, F12 누를시 알람 작동&lt;/li&gt;
&lt;li data-sourcepos=&quot;8:1-9:0&quot;&gt;알람 종료시 탁상시계 알림 소리&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-sourcepos=&quot;10:1-10:21&quot; data-ke-size=&quot;size23&quot;&gt;업데이트 v1.1&lt;/h3&gt;
&lt;a id=&quot;user-content-업데이트-v11&quot; style=&quot;color: #000000;&quot; href=&quot;https://github.com/SsackTeun/MapleStory_InstallSkill_Timer/edit/main/README.md#%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-v11&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-sourcepos=&quot;12:1-21:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;12:1-12:54&quot;&gt;기능추가 : 솔 야누스 20초 때 감지 추가&lt;/li&gt;
&lt;li data-sourcepos=&quot;13:1-13:39&quot;&gt;문구수정 : 신뢰도 -&amp;gt; 유사도&lt;/li&gt;
&lt;li data-sourcepos=&quot;14:1-14:43&quot;&gt;유사도 기본값 수정 : 0.92 -&amp;gt; 0.96&lt;/li&gt;
&lt;li data-sourcepos=&quot;15:1-15:122&quot;&gt;유사도 조절 범위 수정 : 0.92 이하는 의미 없는 값으로 보고, 0.92 ~ 1.0 사이로 조절범위 변경&lt;/li&gt;
&lt;li data-sourcepos=&quot;16:1-17:0&quot;&gt;문구수정 : 딜레이 -&amp;gt; 감지 후 소리 지연 딜레이 (초) 로 변경&lt;/li&gt;
&lt;li data-sourcepos=&quot;18:1-18:123&quot;&gt;라디오 버튼이 더 늘어날 경우, 스킬 + 레벨 구간 + 감지 시점 (10초단위) 이렇게 변경할 예정&lt;/li&gt;
&lt;li data-sourcepos=&quot;19:1-19:40&quot;&gt;현재 정상작동하는 해상도는&lt;/li&gt;
&lt;li data-sourcepos=&quot;20:1-21:0&quot;&gt;1920x1200, 1920x1080, 1366x768, 1280x720, 1024x768&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-sourcepos=&quot;22:1-22:13&quot; data-ke-size=&quot;size23&quot;&gt;사용법&lt;/h3&gt;
&lt;a id=&quot;user-content-사용법&quot; style=&quot;color: #000000;&quot; href=&quot;https://github.com/SsackTeun/MapleStory_InstallSkill_Timer/edit/main/README.md#%EC%82%AC%EC%9A%A9%EB%B2%95&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-sourcepos=&quot;24:1-26:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;24:1-24:86&quot;&gt;기본 값으로 두신 다음 실행버튼을 누르고, 사용하시면 됩니다.&lt;/li&gt;
&lt;li data-sourcepos=&quot;25:1-26:0&quot;&gt;솔 야누스는 레벨별로 쿨타임이 다르다고 하여, 오작동이 있다고 하여 나누어서 만들었습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h4 data-sourcepos=&quot;27:1-27:97&quot; data-ke-size=&quot;size20&quot;&gt;[주의] 아래 내용 변경시 중지 버튼을 누르고 수행하여야 반영됩니다.&lt;/h4&gt;
&lt;a id=&quot;user-content-주의-아래-내용-변경시-중지-버튼을-누르고-수행하여야-반영됩니다&quot; style=&quot;color: #000000;&quot; href=&quot;https://github.com/SsackTeun/MapleStory_InstallSkill_Timer/edit/main/README.md#%EC%A3%BC%EC%9D%98-%EC%95%84%EB%9E%98-%EB%82%B4%EC%9A%A9-%EB%B3%80%EA%B2%BD%EC%8B%9C-%EC%A4%91%EC%A7%80-%EB%B2%84%ED%8A%BC%EC%9D%84-%EB%88%84%EB%A5%B4%EA%B3%A0-%EC%88%98%ED%96%89%ED%95%98%EC%97%AC%EC%95%BC-%EB%B0%98%EC%98%81%EB%90%A9%EB%8B%88%EB%8B%A4&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-sourcepos=&quot;28:1-33:2&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;28:1-28:41&quot;&gt;사운드 파일 변경(.wav 확장자)&lt;/li&gt;
&lt;li data-sourcepos=&quot;29:1-29:18&quot;&gt;신뢰도 변경&lt;/li&gt;
&lt;li data-sourcepos=&quot;30:1-31:0&quot;&gt;딜레이 변경&lt;/li&gt;
&lt;li data-sourcepos=&quot;32:1-33:2&quot;&gt;제가 야누스 8레벨 밖에 안되고, 친구는 30레벨이라 20레벨 표본이 없어 테스트는 아직 못해본 상태입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-sourcepos=&quot;34:1-34:13&quot; data-ke-size=&quot;size23&quot;&gt;UI 설명&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;&lt;a id=&quot;user-content-ui-설명&quot; style=&quot;color: #000000;&quot; href=&quot;https://github.com/SsackTeun/MapleStory_InstallSkill_Timer/edit/main/README.md#ui-%EC%84%A4%EB%AA%85&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-sourcepos=&quot;36:1-42:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;36:1-37:0&quot;&gt;신뢰도 : 0.92 = 92% 유사도를 만족하는 스킬을 찾습니다.&lt;/li&gt;
&lt;li data-sourcepos=&quot;38:1-39:0&quot;&gt;딜레이 : 찾는 이미지가 &quot;10초&quot; 라는 숫자를 포함합니다. 최소한 9초쯤에는 소리가나야하나, 사운드파일이 2초중 1초가 앞에 비어있습니다.&lt;/li&gt;
&lt;li data-sourcepos=&quot;40:1-42:0&quot;&gt;ex) 딜레이값을 0 -&amp;gt; 8초 로 향할 수록 &quot;늦게 알림&quot;을 의미합니다. 사냥 스타일에 따라 편하게 조절하시면 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-sourcepos=&quot;43:1-43:22&quot; data-ke-size=&quot;size23&quot;&gt;[NOTICE] Exe build&lt;/h3&gt;
&lt;a id=&quot;user-content-notice-exe-build&quot; style=&quot;color: #000000;&quot; href=&quot;https://github.com/SsackTeun/MapleStory_InstallSkill_Timer/edit/main/README.md#notice-exe-build&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-sourcepos=&quot;45:1-46:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;45:1-46:0&quot;&gt;EXE 파일 생성에 사용된 모듈은 &quot;pyinstaller&quot; 입니다&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-sourcepos=&quot;47:1-47:23&quot; data-ke-size=&quot;size23&quot;&gt;[NOTICE] dependency&lt;/h3&gt;
&lt;a id=&quot;user-content-notice-dependency&quot; style=&quot;color: #000000;&quot; href=&quot;https://github.com/SsackTeun/MapleStory_InstallSkill_Timer/edit/main/README.md#notice-dependency&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-sourcepos=&quot;49:1-50:2&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;49:1-50:2&quot;&gt;requirements.txt&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-sourcepos=&quot;51:1-51:23&quot; data-ke-size=&quot;size23&quot;&gt;다운로드 : 1.2v&lt;/h3&gt;
&lt;a id=&quot;user-content-다운로드--12v&quot; style=&quot;color: #000000;&quot; href=&quot;https://github.com/SsackTeun/MapleStory_InstallSkill_Timer/edit/main/README.md#%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C--12v&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-sourcepos=&quot;52:1-52:85&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://drive.google.com/file/d/1Dj3GwKtRQuT9sCy3ctKLzaCrStVFrioO/view?usp=drive_link&quot;&gt;https://drive.google.com/file/d/1Dj3GwKtRQuT9sCy3ctKLzaCrStVFrioO/view?usp=drive_link&lt;/a&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-sourcepos=&quot;54:1-54:23&quot; data-ke-size=&quot;size23&quot;&gt;다운로드 : 1.1v&lt;/h3&gt;
&lt;a id=&quot;user-content-다운로드--11v&quot; style=&quot;color: #000000;&quot; href=&quot;https://github.com/SsackTeun/MapleStory_InstallSkill_Timer/edit/main/README.md#%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C--11v&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-sourcepos=&quot;55:1-55:83&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://drive.google.com/file/d/1dWrQlEmBLspYscLMpQJlCahwtf2AMfW3/view?usp=drivesdk&quot;&gt;https://drive.google.com/file/d/1dWrQlEmBLspYscLMpQJlCahwtf2AMfW3/view?usp=drivesdk&lt;/a&gt;&lt;/p&gt;</description>
      <category>PROJECT(단기적인 목표)/01_MapleStory 설치기타이머</category>
      <author>싹튼</author>
      <guid isPermaLink="true">https://ssackteun.tistory.com/253</guid>
      <comments>https://ssackteun.tistory.com/253#entry253comment</comments>
      <pubDate>Sun, 3 Mar 2024 01:22:16 +0900</pubDate>
    </item>
    <item>
      <title>[Terraform] - 테라폼 - vsphere provider 로 vm 생성해보기 2</title>
      <link>https://ssackteun.tistory.com/252</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;DOCS : &lt;a href=&quot;https://registry.terraform.io/providers/hashicorp/vsphere/latest/docs&quot;&gt;Docs overview | hashicorp/vsphere | Terraform | Terraform Registry&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1699853096014&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;Terraform Registry&quot; data-og-description=&quot;&quot; data-og-host=&quot;registry.terraform.io&quot; data-og-source-url=&quot;https://registry.terraform.io/providers/hashicorp/vsphere/latest/docs&quot; data-og-url=&quot;https://registry.terraform.io/providers/hashicorp/vsphere/latest/docs&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://registry.terraform.io/providers/hashicorp/vsphere/latest/docs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://registry.terraform.io/providers/hashicorp/vsphere/latest/docs&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;Terraform Registry&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;registry.terraform.io&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;h4 data-ke-size=&quot;size20&quot;&gt;1. 프로젝트 폴더 생성 하기 - 원하는곳에 폴더 만들어서 선택&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;223&quot; data-origin-height=&quot;330&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bivKLy/btsAfDaXe3A/nKsKZ8ehGh5uk5mKeUvmi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bivKLy/btsAfDaXe3A/nKsKZ8ehGh5uk5mKeUvmi1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bivKLy/btsAfDaXe3A/nKsKZ8ehGh5uk5mKeUvmi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbivKLy%2FbtsAfDaXe3A%2FnKsKZ8ehGh5uk5mKeUvmi1%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;223&quot; height=&quot;330&quot; data-origin-width=&quot;223&quot; data-origin-height=&quot;330&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;h4 data-ke-size=&quot;size20&quot;&gt;STEP 1.&amp;nbsp; 폴더에 파일 만들기. provider.tf&amp;nbsp; &amp;amp; 내용 채우기&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;210&quot; data-origin-height=&quot;240&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dZtT4q/btsAi2BvBFd/HejypiJIVJgg4mZ0Mojsnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dZtT4q/btsAi2BvBFd/HejypiJIVJgg4mZ0Mojsnk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dZtT4q/btsAi2BvBFd/HejypiJIVJgg4mZ0Mojsnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdZtT4q%2FbtsAi2BvBFd%2FHejypiJIVJgg4mZ0Mojsnk%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;210&quot; height=&quot;240&quot; data-origin-width=&quot;210&quot; data-origin-height=&quot;240&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;프로바이더는 인프라 제공자를 말하며, 그 중 vsphere 를 택했다.&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;/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;provider.tf 에 들어갈 내용이다.&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1699852058490&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;terraform {
    required_providers {
        vsphere = {
            source = &quot;hashicorp/vsphere&quot;
            version = &quot;2.4.1&quot;
        }
    }
}

provider &quot;vsphere&quot; {
  user                 = &quot;{vsphere.username}&quot;
  password             = &quot;{vsphere.password}&quot;
  vsphere_server       = &quot;{vsphere.address}&quot;
  allow_unverified_ssl = true
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 위의 블럭은 프로바이더 제공자의 required 요소인데, 당연히 제공자 이름이 들어가야하고, 어떤 SDK 기반으로 컴파일 할 것인지 정보가 들어간다.&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;프로바이더이름&quot;, vsphere 로그인정보와 주소가 들어간다.&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;829&quot; data-origin-height=&quot;310&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l2wuJ/btsAiBKK3gK/exySSnifTmP8AsmwNfSMgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l2wuJ/btsAiBKK3gK/exySSnifTmP8AsmwNfSMgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l2wuJ/btsAiBKK3gK/exySSnifTmP8AsmwNfSMgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl2wuJ%2FbtsAiBKK3gK%2FexySSnifTmP8AsmwNfSMgK%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;829&quot; height=&quot;310&quot; data-origin-width=&quot;829&quot; data-origin-height=&quot;310&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;여기서 terraform init 명령을 입력해보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;684&quot; data-origin-height=&quot;454&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ebAyhA/btsz94OhhjY/rhfr1IV44Fcz75tKFyV7wK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ebAyhA/btsz94OhhjY/rhfr1IV44Fcz75tKFyV7wK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ebAyhA/btsz94OhhjY/rhfr1IV44Fcz75tKFyV7wK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FebAyhA%2Fbtsz94OhhjY%2Frhfr1IV44Fcz75tKFyV7wK%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;684&quot; height=&quot;454&quot; data-origin-width=&quot;684&quot; data-origin-height=&quot;454&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Initializing provider plugins.... 프로바이더와 버전에 맞는 SDK 를 다운받는 것이다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;247&quot; data-origin-height=&quot;237&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ryUNl/btsAjl1WtQ1/ReNdTw2v0yTwUu354LDDE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ryUNl/btsAjl1WtQ1/ReNdTw2v0yTwUu354LDDE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ryUNl/btsAjl1WtQ1/ReNdTw2v0yTwUu354LDDE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FryUNl%2FbtsAjl1WtQ1%2FReNdTw2v0yTwUu354LDDE0%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;247&quot; height=&quot;237&quot; data-origin-width=&quot;247&quot; data-origin-height=&quot;237&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기까지하면, 나는 테라폼으로 vsphere 를 제어할껀데, 필요한 sdk 를 받을꺼라는 것을 provider.tf 에 적어준것이고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;terraform init 명령으로 다운받기 까지 완료한 상태이다.&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;h4 data-ke-size=&quot;size20&quot;&gt;STEP 2. main.tf 파일 생성후 내용 채우기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;data 명령줄에는 vsphere 의 리소스 위치를 선택할 수 있다.&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;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;resource 는 서버에서 할당할 수 있는 리소스를 의미한다.&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;VM 을 만든다면, 여기에 할당할 리소스들 &quot;cpu, disk, ram, network&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;name = &quot;실제 이름&quot; 이 들어간다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1699851448605&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;data &quot;vsphere_datacenter&quot; &quot;datacenter&quot; {
    name = &quot;Datacenter&quot;
}

data &quot;vsphere_compute_cluster&quot; &quot;cluster&quot; {
  name          = &quot;Arista&quot;
  datacenter_id = data.vsphere_datacenter.datacenter.id
}

data &quot;vsphere_datastore&quot; &quot;datastore&quot; {
  name          = &quot;Fujitsu03&quot;
  datacenter_id = data.vsphere_datacenter.datacenter.id
}


data &quot;vsphere_network&quot; &quot;network&quot; {
  name          = &quot;VM Network&quot;
  datacenter_id = data.vsphere_datacenter.datacenter.id
}

data &quot;vsphere_virtual_machine&quot; &quot;template&quot; {
  name          = &quot;win2019&quot;
  datacenter_id = data.vsphere_datacenter.datacenter.id
}

resource &quot;vsphere_virtual_machine&quot; &quot;vm&quot; {
  name             = &quot;win2019-terraform1&quot;
  resource_pool_id = data.vsphere_compute_cluster.cluster.resource_pool_id
  datastore_id     = data.vsphere_datastore.datastore.id
  num_cpus         = 4
  memory           = 8196
  guest_id         = data.vsphere_virtual_machine.template.guest_id
  scsi_type        = data.vsphere_virtual_machine.template.scsi_type
 
  network_interface {
    network_id   = data.vsphere_network.network.id
    adapter_type = data.vsphere_virtual_machine.template.network_interface_types[0]
  }
 
  disk {
    label            = &quot;disk0&quot;
    size             = data.vsphere_virtual_machine.template.disks.0.size
    thin_provisioned = data.vsphere_virtual_machine.template.disks.0.thin_provisioned
  }

  firmware = &quot;efi&quot;
 
  clone {
    template_uuid = data.vsphere_virtual_machine.template.id
    linked_clone = &quot;true&quot;
    customize {
      windows_options {
        computer_name = &quot;ssssss&quot;
      }
      network_interface {
        ipv4_address = &quot;192.168.123.239&quot;
        ipv4_netmask = 24
      }
      ipv4_gateway = &quot;192.168.123.1&quot;
    }
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;436&quot; data-origin-height=&quot;153&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEo56t/btsz9ahgE3P/67FOX4NzahAiZ1ccrk3ic0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEo56t/btsz9ahgE3P/67FOX4NzahAiZ1ccrk3ic0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEo56t/btsz9ahgE3P/67FOX4NzahAiZ1ccrk3ic0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEo56t%2Fbtsz9ahgE3P%2F67FOX4NzahAiZ1ccrk3ic0%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;436&quot; height=&quot;153&quot; data-origin-width=&quot;436&quot; data-origin-height=&quot;153&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;firmware = &quot;efi&quot; 를 명시해주지 않으면, bios 로 선택되면서 깡통 vm 으로 배포시도하다가 실패하게 된다.&lt;/div&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;그리고, 네트워크가 통신이 되지않아도 세그먼트를 붙이고 배포가 가능했는데 이경우에는 네트워크가 유효하지 않으면 배포실패한다. 그럼에도 &quot;네트워크&quot;에러다 이렇게 알려주질 않으니 찾기 어렵다.&lt;/div&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;STEP 3. terraform apply&lt;/span&gt;&lt;/h4&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;terraform apply 명령을 터미널에 입력하면, 아래 처럼 나온다.&lt;/div&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;git cli 처럼 + - 같이 추가 삭제 이런 변경사항을 다 표시해준다.&lt;/div&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;
&lt;pre id=&quot;code_1699854769548&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;PS C:\Users\jaeyo\Desktop\terraform&amp;gt; terraform apply
data.vsphere_datacenter.datacenter: Reading...
data.vsphere_datacenter.datacenter: Read complete after 0s [id=datacenter-1001]
data.vsphere_compute_cluster.cluster: Reading...
data.vsphere_network.network: Reading...
data.vsphere_virtual_machine.template: Reading...
data.vsphere_datastore.datastore: Reading...
data.vsphere_network.network: Read complete after 0s [id=network-1016]
data.vsphere_datastore.datastore: Read complete after 0s [id=datastore-1014]
data.vsphere_compute_cluster.cluster: Read complete after 0s [id=domain-c1050]
data.vsphere_virtual_machine.template: Read complete after 0s [id=423e0473-2b46-603b-852b-c97d2d48fa85]

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # vsphere_virtual_machine.vm will be created
  + resource &quot;vsphere_virtual_machine&quot; &quot;vm&quot; {
      + annotation                              = (known after apply)
      + boot_retry_delay                        = 10000
      + change_version                          = (known after apply)
      + cpu_limit                               = -1
      + cpu_share_count                         = (known after apply)
      + cpu_share_level                         = &quot;normal&quot;
      + datastore_id                            = &quot;datastore-1014&quot;
      + default_ip_address                      = (known after apply)
      + ept_rvi_mode                            = &quot;automatic&quot;
      + extra_config_reboot_required            = true
      + firmware                                = &quot;efi&quot;
      + force_power_off                         = true
      + guest_id                                = &quot;windows2019srv_64Guest&quot;
      + guest_ip_addresses                      = (known after apply)
      + hardware_version                        = (known after apply)
      + host_system_id                          = (known after apply)
      + hv_mode                                 = &quot;hvAuto&quot;
      + id                                      = (known after apply)
      + ide_controller_count                    = 2
      + imported                                = (known after apply)
      + latency_sensitivity                     = &quot;normal&quot;
      + memory                                  = 8196
      + memory_limit                            = -1
      + memory_share_count                      = (known after apply)
      + memory_share_level                      = &quot;normal&quot;
      + migrate_wait_timeout                    = 30
      + moid                                    = (known after apply)
      + name                                    = &quot;win2019-terraform-20231113&quot;
      + num_cores_per_socket                    = 1
      + num_cpus                                = 4
      + power_state                             = (known after apply)
      + poweron_timeout                         = 300
      + reboot_required                         = (known after apply)
      + resource_pool_id                        = &quot;resgroup-1051&quot;
      + run_tools_scripts_after_power_on        = true
      + run_tools_scripts_after_resume          = true
      + run_tools_scripts_before_guest_shutdown = true
      + run_tools_scripts_before_guest_standby  = true
      + sata_controller_count                   = 0
      + scsi_bus_sharing                        = &quot;noSharing&quot;
      + scsi_controller_count                   = 1
      + scsi_type                               = &quot;lsilogic-sas&quot;
      + shutdown_wait_timeout                   = 3
      + storage_policy_id                       = (known after apply)
      + swap_placement_policy                   = &quot;inherit&quot;
      + tools_upgrade_policy                    = &quot;manual&quot;
      + uuid                                    = (known after apply)
      + vapp_transport                          = (known after apply)
      + vmware_tools_status                     = (known after apply)
      + vmx_path                                = (known after apply)
      + wait_for_guest_ip_timeout               = 0
      + wait_for_guest_net_routable             = true
      + wait_for_guest_net_timeout              = 5

      + clone {
          + linked_clone  = true
          + template_uuid = &quot;423e0473-2b46-603b-852b-c97d2d48fa85&quot;
          + timeout       = 30

          + customize {
              + ipv4_gateway = &quot;192.168.123.1&quot;
              + timeout      = 10

              + network_interface {
                  + ipv4_address = &quot;192.168.123.240&quot;
                  + ipv4_netmask = 24
                }

              + windows_options {
                  + auto_logon_count  = 1
                  + computer_name     = &quot;win2019-20231113&quot;
                  + full_name         = &quot;Administrator&quot;
                  + organization_name = &quot;Managed by Terraform&quot;
                  + time_zone         = 85
                }
            }
        }

      + disk {
          + attach            = false
          + controller_type   = &quot;scsi&quot;
          + datastore_id      = &quot;&amp;lt;computed&amp;gt;&quot;
          + device_address    = (known after apply)
          + disk_mode         = &quot;persistent&quot;
          + disk_sharing      = &quot;sharingNone&quot;
          + eagerly_scrub     = false
          + io_limit          = -1
          + io_reservation    = 0
          + io_share_count    = 0
          + io_share_level    = &quot;normal&quot;
          + keep_on_remove    = false
          + key               = 0
          + label             = &quot;disk0&quot;
          + path              = (known after apply)
          + size              = 90
          + storage_policy_id = (known after apply)
          + thin_provisioned  = false
          + unit_number       = 0
          + uuid              = (known after apply)
          + write_through     = false
        }

      + network_interface {
          + adapter_type          = &quot;e1000e&quot;
          + bandwidth_limit       = -1
          + bandwidth_reservation = 0
          + bandwidth_share_count = (known after apply)
          + bandwidth_share_level = &quot;normal&quot;
          + device_address        = (known after apply)
          + key                   = (known after apply)
          + mac_address           = (known after apply)
          + network_id            = &quot;network-1016&quot;
        }
    }

Plan: 1 to add, 0 to change, 0 to destroy.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;yes 를 입력하면, 위의 내용이 승인되어 위의 작성한 내용으로 상태를 변경한다.&lt;/div&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;778&quot; data-origin-height=&quot;413&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIfRGj/btsAamBGLvx/Ap7sxTCXlNJy96kWDFdoj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIfRGj/btsAamBGLvx/Ap7sxTCXlNJy96kWDFdoj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIfRGj/btsAamBGLvx/Ap7sxTCXlNJy96kWDFdoj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIfRGj%2FbtsAamBGLvx%2FAp7sxTCXlNJy96kWDFdoj0%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;778&quot; height=&quot;413&quot; data-origin-width=&quot;778&quot; data-origin-height=&quot;413&quot;/&gt;&lt;/span&gt;&lt;/figure&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;배포가 성공하면, TEMPLATE 으로 복제 배포가 완료된다.&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;1869&quot; data-origin-height=&quot;1094&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QbWfI/btsAcQovwSW/tekk8JW0V1wA3TRy9jPcwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QbWfI/btsAcQovwSW/tekk8JW0V1wA3TRy9jPcwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QbWfI/btsAcQovwSW/tekk8JW0V1wA3TRy9jPcwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQbWfI%2FbtsAcQovwSW%2Ftekk8JW0V1wA3TRy9jPcwK%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;1869&quot; height=&quot;1094&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1869&quot; data-origin-height=&quot;1094&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>ARCHIVE(완료, 보류, 관심x)/Terraform</category>
      <author>싹튼</author>
      <guid isPermaLink="true">https://ssackteun.tistory.com/252</guid>
      <comments>https://ssackteun.tistory.com/252#entry252comment</comments>
      <pubDate>Mon, 13 Nov 2023 15:01:18 +0900</pubDate>
    </item>
    <item>
      <title>[Terraform] - 테라폼 - vsphere provider 로 vm 생성해보기 1</title>
      <link>https://ssackteun.tistory.com/251</link>
      <description>&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;순서&amp;nbsp;&lt;/div&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;1. 테라폼 CLI 설치&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developer.hashicorp.com/terraform/install&quot;&gt;Install | Terraform | HashiCorp Developer&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1699849253648&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;Install | Terraform | HashiCorp Developer&quot; data-og-description=&quot;Explore Terraform product documentation, tutorials, and examples.&quot; data-og-host=&quot;developer.hashicorp.com&quot; data-og-source-url=&quot;https://developer.hashicorp.com/terraform/install&quot; data-og-url=&quot;https://developer.hashicorp.com/terraform/install&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/qiyP0/hyUu5satqa/DOHcEPGftnmT56pJtrOQ0K/img.jpg?width=3200&amp;amp;height=1800&amp;amp;face=0_0_3200_1800,https://scrap.kakaocdn.net/dn/1wkUj/hyUuQIx3gx/DUUawrVlN90uGwmMekmNx1/img.jpg?width=3200&amp;amp;height=1800&amp;amp;face=0_0_3200_1800&quot;&gt;&lt;a href=&quot;https://developer.hashicorp.com/terraform/install&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.hashicorp.com/terraform/install&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/qiyP0/hyUu5satqa/DOHcEPGftnmT56pJtrOQ0K/img.jpg?width=3200&amp;amp;height=1800&amp;amp;face=0_0_3200_1800,https://scrap.kakaocdn.net/dn/1wkUj/hyUuQIx3gx/DUUawrVlN90uGwmMekmNx1/img.jpg?width=3200&amp;amp;height=1800&amp;amp;face=0_0_3200_1800');&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;Install | Terraform | HashiCorp Developer&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Explore Terraform product documentation, tutorials, and examples.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developer.hashicorp.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;자신의 cpu 에 맞는 걸 다운로드. (인텔꺼면 위에 암드꺼면 아래로)&lt;/p&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1063&quot; data-origin-height=&quot;562&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dkNEM7/btsAaPJT6TR/RYP55dnHyDjA3dRBn7QoW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dkNEM7/btsAaPJT6TR/RYP55dnHyDjA3dRBn7QoW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dkNEM7/btsAaPJT6TR/RYP55dnHyDjA3dRBn7QoW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdkNEM7%2FbtsAaPJT6TR%2FRYP55dnHyDjA3dRBn7QoW1%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;542&quot; height=&quot;562&quot; data-origin-width=&quot;1063&quot; data-origin-height=&quot;562&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;압축 해제하면, 아래 파일이 나오는데&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;754&quot; data-origin-height=&quot;313&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/93j4q/btsz9ZGrr5r/80TEojEevptKkBVEKkbT90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/93j4q/btsz9ZGrr5r/80TEojEevptKkBVEKkbT90/img.png&quot; data-alt=&quot;다운로드 후 압축 해제&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/93j4q/btsz9ZGrr5r/80TEojEevptKkBVEKkbT90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F93j4q%2Fbtsz9ZGrr5r%2F80TEojEevptKkBVEKkbT90%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;532&quot; height=&quot;221&quot; data-origin-width=&quot;754&quot; data-origin-height=&quot;313&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;다운로드 후 압축 해제&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&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;일단, 저 파일을 C -&amp;gt; Terraform 폴더를 만들어서 넣어줬다.&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;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;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;666&quot; data-origin-height=&quot;462&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dLkRdI/btsz88pWzg0/Ff2Eem4gOwC2yV3t3Gcoh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dLkRdI/btsz88pWzg0/Ff2Eem4gOwC2yV3t3Gcoh0/img.png&quot; data-alt=&quot;환경 검색 -&amp;amp;gt; 시스템 환경 변수 편집 클릭&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dLkRdI/btsz88pWzg0/Ff2Eem4gOwC2yV3t3Gcoh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdLkRdI%2Fbtsz88pWzg0%2FFf2Eem4gOwC2yV3t3Gcoh0%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;427&quot; height=&quot;296&quot; data-origin-width=&quot;666&quot; data-origin-height=&quot;462&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;환경 검색 -&amp;gt; 시스템 환경 변수 편집 클릭&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;646&quot; data-origin-height=&quot;864&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rSgVP/btsz9XBRjyb/hnq90TSa1lFMgk4rhuHlc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rSgVP/btsz9XBRjyb/hnq90TSa1lFMgk4rhuHlc0/img.png&quot; data-alt=&quot;클릭&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rSgVP/btsz9XBRjyb/hnq90TSa1lFMgk4rhuHlc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrSgVP%2Fbtsz9XBRjyb%2Fhnq90TSa1lFMgk4rhuHlc0%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;255&quot; height=&quot;341&quot; data-origin-width=&quot;646&quot; data-origin-height=&quot;864&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;클릭&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;642&quot; data-origin-height=&quot;817&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GHHOf/btsz9ZfqWcy/hpxM22QhhwkEZaGYcuj6bk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GHHOf/btsz9ZfqWcy/hpxM22QhhwkEZaGYcuj6bk/img.png&quot; data-alt=&quot;더블 클릭&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GHHOf/btsz9ZfqWcy/hpxM22QhhwkEZaGYcuj6bk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGHHOf%2Fbtsz9ZfqWcy%2FhpxM22QhhwkEZaGYcuj6bk%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;325&quot; height=&quot;414&quot; data-origin-width=&quot;642&quot; data-origin-height=&quot;817&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;더블 클릭&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;725&quot; data-origin-height=&quot;506&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Y0TuO/btsAaloZHXY/tyRfdauefVUFwXyuXWel0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Y0TuO/btsAaloZHXY/tyRfdauefVUFwXyuXWel0k/img.png&quot; data-alt=&quot;압축푼 파일 위치 폴더까지 찾아서 선택&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Y0TuO/btsAaloZHXY/tyRfdauefVUFwXyuXWel0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FY0TuO%2FbtsAaloZHXY%2FtyRfdauefVUFwXyuXWel0k%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;331&quot; height=&quot;231&quot; data-origin-width=&quot;725&quot; data-origin-height=&quot;506&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;압축푼 파일 위치 폴더까지 찾아서 선택&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;645&quot; data-origin-height=&quot;674&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYw8wV/btsAaNeinTv/SGfMmGqs8grH5c0O1JzGdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYw8wV/btsAaNeinTv/SGfMmGqs8grH5c0O1JzGdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYw8wV/btsAaNeinTv/SGfMmGqs8grH5c0O1JzGdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYw8wV%2FbtsAaNeinTv%2FSGfMmGqs8grH5c0O1JzGdK%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;391&quot; height=&quot;409&quot; data-origin-width=&quot;645&quot; data-origin-height=&quot;674&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;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;재부팅 후&lt;/b&gt;&lt;/span&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;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;cmd , powershell 등에서 terraform 이라고 쳤을 때, 아래 처럼 나오면 환경변수가 정확하게 잡힌것임.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1025&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wpGhB/btsz9mhBOSi/q4Wqf71UQVpj74X8YMcXF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wpGhB/btsz9mhBOSi/q4Wqf71UQVpj74X8YMcXF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wpGhB/btsz9mhBOSi/q4Wqf71UQVpj74X8YMcXF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwpGhB%2Fbtsz9mhBOSi%2Fq4Wqf71UQVpj74X8YMcXF0%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;688&quot; height=&quot;687&quot; data-origin-width=&quot;1025&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;2. 편집기 설치 (VSCODE)&lt;/div&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;편집기 vscode 를 설치해보자.&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;a href=&quot;https://code.visualstudio.com/Download&quot;&gt;Download Visual Studio Code - Mac, Linux, Windows&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1699850259275&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;Download Visual Studio Code - Mac, Linux, Windows&quot; data-og-description=&quot;Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. Download Visual Studio Code to experience a redefined code editor, optimized for building and debugging modern web and cloud applications.&quot; data-og-host=&quot;code.visualstudio.com&quot; data-og-source-url=&quot;https://code.visualstudio.com/Download&quot; data-og-url=&quot;https://code.visualstudio.com/Download&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/g2lZi/hyUu4GNp3Y/6shKuYUdstVd9YexRE2fVK/img.png?width=1012&amp;amp;height=506&amp;amp;face=0_0_1012_506&quot;&gt;&lt;a href=&quot;https://code.visualstudio.com/Download&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://code.visualstudio.com/Download&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/g2lZi/hyUu4GNp3Y/6shKuYUdstVd9YexRE2fVK/img.png?width=1012&amp;amp;height=506&amp;amp;face=0_0_1012_506');&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;Download Visual Studio Code - Mac, Linux, Windows&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. Download Visual Studio Code to experience a redefined code editor, optimized for building and debugging modern web and cloud applications.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;code.visualstudio.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;587&quot; data-origin-height=&quot;823&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oHxFG/btsAcS0IVJO/AFhc0iZEY06KzelbSLdTU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oHxFG/btsAcS0IVJO/AFhc0iZEY06KzelbSLdTU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oHxFG/btsAcS0IVJO/AFhc0iZEY06KzelbSLdTU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoHxFG%2FbtsAcS0IVJO%2FAFhc0iZEY06KzelbSLdTU0%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;332&quot; height=&quot;465&quot; data-origin-width=&quot;587&quot; data-origin-height=&quot;823&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치후 실행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Terminal 클릭 ! -&amp;gt; 아래 터미널 창이 열리면, terraform 입력 해보기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1911&quot; data-origin-height=&quot;1029&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxDdTN/btsz7PK2bQo/BGk5eDhScraSAOcNcC0va0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxDdTN/btsz7PK2bQo/BGk5eDhScraSAOcNcC0va0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxDdTN/btsz7PK2bQo/BGk5eDhScraSAOcNcC0va0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxDdTN%2Fbtsz7PK2bQo%2FBGk5eDhScraSAOcNcC0va0%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;1911&quot; height=&quot;1029&quot; data-origin-width=&quot;1911&quot; data-origin-height=&quot;1029&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;</description>
      <category>ARCHIVE(완료, 보류, 관심x)/Terraform</category>
      <author>싹튼</author>
      <guid isPermaLink="true">https://ssackteun.tistory.com/251</guid>
      <comments>https://ssackteun.tistory.com/251#entry251comment</comments>
      <pubDate>Mon, 13 Nov 2023 13:57:07 +0900</pubDate>
    </item>
    <item>
      <title>[IaC, Terraform] - 테라폼</title>
      <link>https://ssackteun.tistory.com/250</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;참고하면 좋은 영상&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=3qSpwqckvXQ&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.youtube.com/watch?v=3qSpwqckvXQ&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=3qSpwqckvXQ&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/hZAfD/hyUrEB0Nqq/9E6TC4ClCg92lzYEiVB0e1/img.jpg?width=640&amp;amp;height=480&amp;amp;face=0_0_640_480&quot; data-video-width=&quot;640&quot; data-video-height=&quot;480&quot; data-video-origin-width=&quot;640&quot; data-video-origin-height=&quot;480&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/3qSpwqckvXQ&quot; width=&quot;640&quot; height=&quot;480&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;테라폼이란?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;테라폼(Terraform)은 하시코프(Hashicorp)에서 오픈소스로 개발중인 클라우드 인프라스트럭처 자동화를 지향하는 IaC 도구 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;IaC란?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;코드로서의 인프라스트럭처(Infrastructure as Code, IaC)라는 의미입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;코드로 인프라를 관리한다는 의미인데, 인프라에 해당하는 부분은 생각보다 많다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&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;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;작성의 용이성&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;재사용성&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;유지보수&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&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;size18&quot;&gt;서버, 미들웨어, 서비스 등이 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;서비스를 제공하는데 필요한 요소를 통틀어서 지칭한다고 이해하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Terraform&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;테라폼은 인프라를 만들고, 변경하고, 기록하는 IaC 를 위해 만들어진 도구로써, 문법이 쉽고 사용자가 많아 자료가 많다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;.tf 의 확장자를 가지는 파일을 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;다양한 클라우드 서비스를 지원한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;size18&quot;&gt;provider : 테라폼으로 생성할 인프라 종류&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;resource : 테라폼으로 실제 생성할 인프라 자원&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;state : 테라폼을 통해 생성한 자원의 상태&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;output : 테라폼으로 만든 자원을 변수 형태로 state 에 저장하는 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;module : 공통적으로 활용할 수 있는 코드를 문자 그대로 모듈 형태로 정의하는 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;remote : 다른 경로의 state 를 참조하는 것을 말함. output 변수를 불러올 때, 주로 사용&lt;/p&gt;</description>
      <category>ARCHIVE(완료, 보류, 관심x)/Terraform</category>
      <author>싹튼</author>
      <guid isPermaLink="true">https://ssackteun.tistory.com/250</guid>
      <comments>https://ssackteun.tistory.com/250#entry250comment</comments>
      <pubDate>Fri, 10 Nov 2023 11:01:56 +0900</pubDate>
    </item>
    <item>
      <title>[백준] - 2738 - 행렬 덧셈</title>
      <link>https://ssackteun.tistory.com/246</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Arrays.Stream으로 이차원 배열 출력하는 방법 정도는 기억해두면 좋을 것 같다.&lt;/p&gt;
&lt;pre class=&quot;java&quot; style=&quot;background-color: #131314; color: #ebebeb;&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;package org.example;

import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int M = sc.nextInt();

        int [][] matrix1 = new int[N][M];
        int [][] matrix2 = new int[N][M];
        int [][] result = new int[N][M];

        for(int i = 0; i &amp;lt; N; i++){
            for(int j = 0; j &amp;lt; M; j++){
                matrix1[i][j] = sc.nextInt();
            }
        }

        for(int i = 0; i &amp;lt; N; i++){
            for(int j = 0; j &amp;lt; M; j++){
                matrix2[i][j] = sc.nextInt();
            }
        }

        for(int i = 0; i &amp;lt; N; i++){
            for(int j = 0; j &amp;lt; M; j++){
                result[i][j] = matrix1[i][j] + matrix2[i][j];
            }
        }

        Arrays.stream(result).forEach(row -&amp;gt; {
            Arrays.stream(row).forEach(value -&amp;gt; {
                System.out.print(value + &quot; &quot;);
            });
            System.out.println();
        });
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>AREA(지속적인 일상)/02_백준</category>
      <author>싹튼</author>
      <guid isPermaLink="true">https://ssackteun.tistory.com/246</guid>
      <comments>https://ssackteun.tistory.com/246#entry246comment</comments>
      <pubDate>Thu, 2 Nov 2023 18:14:35 +0900</pubDate>
    </item>
    <item>
      <title>[백준] - 25206 - 너의 평점은</title>
      <link>https://ssackteun.tistory.com/245</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2490&quot; data-origin-height=&quot;1390&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzQjL3/btszAYnN2Xq/b1kjy9GVQDpCHN2TEAKtB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzQjL3/btszAYnN2Xq/b1kjy9GVQDpCHN2TEAKtB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzQjL3/btszAYnN2Xq/b1kjy9GVQDpCHN2TEAKtB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzQjL3%2FbtszAYnN2Xq%2Fb1kjy9GVQDpCHN2TEAKtB1%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;2490&quot; height=&quot;1390&quot; data-origin-width=&quot;2490&quot; data-origin-height=&quot;1390&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;/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;등급이 P 가 아닐 때만, 전공 학점 (학점 * 과목평점) / 학점을 누적시키면된다.&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;누적된 학점의 총합 (P 등급이 제외된) 과 전공 학점을 구할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1698903466166&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package org.example;

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        double totalScore = 0;
        double sumOfGradeAndSubjectAveragePoint = 0;

        for (int i = 0; i &amp;lt; 20; i++) {
            String subject = &quot;&quot;;
            double score = 0;
            String grade = &quot;&quot;;

            subject = sc.next();
            score = sc.nextDouble();
            grade = sc.next();

            if(!grade.equals(&quot;P&quot;)){
                sumOfGradeAndSubjectAveragePoint += majorScore(score, grade);
                totalScore+= score;
            }
        }
        double rst = result(totalScore, sumOfGradeAndSubjectAveragePoint);
        System.out.println(rst);
    }

    public static double majorScore(double score, String grade){
        // 등급 , 점수
        Map&amp;lt;String, Double&amp;gt; convertTo = new HashMap&amp;lt;&amp;gt;();
        convertTo.put(&quot;A+&quot;, 4.5);
        convertTo.put(&quot;A0&quot;, 4.0);
        convertTo.put(&quot;B+&quot;, 3.5);
        convertTo.put(&quot;B0&quot;, 3.0);
        convertTo.put(&quot;C+&quot;, 2.5);
        convertTo.put(&quot;C0&quot;, 2.0);
        convertTo.put(&quot;D+&quot;, 1.5);
        convertTo.put(&quot;D0&quot;, 1.0);
        convertTo.put(&quot;F&quot;, 0.0);

        return score * convertTo.get(grade);
    }

    public static double result (double sum, double sumOfEachScore){
        return sumOfEachScore / sum;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>AREA(지속적인 일상)/02_백준</category>
      <author>싹튼</author>
      <guid isPermaLink="true">https://ssackteun.tistory.com/245</guid>
      <comments>https://ssackteun.tistory.com/245#entry245comment</comments>
      <pubDate>Thu, 2 Nov 2023 14:41:08 +0900</pubDate>
    </item>
    <item>
      <title>[백준] - 2941 - 크로아티아 알파벳</title>
      <link>https://ssackteun.tistory.com/244</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;시스템 입력을 String 으로 받고, 스트림으로 일단 변환했다.&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;스트림 API 메서드 사용하는 감을 아직 못잡겠다.&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;로직&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;필터링할 문자를 저장을 하고, 하나씩 꺼내서 입력받은 문자열요소와 순환하면서 비교후, 치환을 통해서 croatia 가 포함하지 않는 요소, 즉 a 와 같은 한글자의 문자열로 바꾼 후, String 의 길이를 출력하면 된다.&lt;/b&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;foreach 문을 통해서, List 를 순환하면서 요소를 하나씩 꺼내온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;꺼낸 요소를 wordStream.map() 을 통해서 문자열을 치환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;map() 내부의 w 는 String word 의 문자열 전체를 의미하며, &quot;helloc=&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;w(helloc=).replace(list 요소, 치환 문자 a)&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;wordStream 은 &quot;helloc=&quot; 에서 -&amp;gt; &quot;helloa&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;이걸 다시 wordStream 에 저장하여 모든 요소와 비교하여 치환하게 한다.&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;System.out::println 이런 표현도 어색해서 잘 모르겠다.&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_1698836720889&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String word = sc.nextLine();

        List&amp;lt;String&amp;gt; croatia = new ArrayList&amp;lt;&amp;gt;();
        croatia.add(&quot;c=&quot;);
        croatia.add(&quot;c-&quot;);
        croatia.add(&quot;dz=&quot;);
        croatia.add(&quot;d-&quot;);
        croatia.add(&quot;lj&quot;);
        croatia.add(&quot;nj&quot;);
        croatia.add(&quot;s=&quot;);
        croatia.add(&quot;z=&quot;);

        Stream&amp;lt;String&amp;gt; wordStream = Stream.of(word);

        for(String croatiaElements : croatia){
            wordStream = wordStream.map(w -&amp;gt; w.replace(croatiaElements, &quot;a&quot;));
        }
//        wordStream.forEach(System.out::println);
        wordStream.forEach(w -&amp;gt; System.out.println(w.length()));
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>AREA(지속적인 일상)/02_백준</category>
      <author>싹튼</author>
      <guid isPermaLink="true">https://ssackteun.tistory.com/244</guid>
      <comments>https://ssackteun.tistory.com/244#entry244comment</comments>
      <pubDate>Wed, 1 Nov 2023 20:21:21 +0900</pubDate>
    </item>
    <item>
      <title>[백준] - 1157 - 단어공부</title>
      <link>https://ssackteun.tistory.com/243</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제도 풀면서 GPT 에게 물어보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Stream 예제를 눈으로 많이 익히기 위해서, 먼저 시도를 해보고 물어봤는데.&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;처음에는 Stream.of 로 arrays 를 string 으로 바꾸려고 했는데.. new String() 이라는 쉬운 방법이 있다니 충격.&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;처음부터 Map 자료형을 떠올리긴 했었는데, 중복제거나 이런 부분이 머리가 아파오기 시작하면서 for 문으로 시도하였으나,&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;이중for 문에 if 가 들어가고, 케이스가 많아지면서 복잡해져서 포기했다.&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;new String(arrays) : char[] 를 String 으로 변환&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;chars() : String 에서 요소를 intStream 으로 변환&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;mapToObj(c -&amp;gt; (char) c ) : c 는 intStream 으로 변환된 ascii 코드의 문자 정수이며, (char) c 로 문자로 변환&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;filter : (Charater::isLetterOrDigit) : Charater 중에 영어문자 도는 숫자만 필터링&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;collect() : 스트림의 요소를 수집하여, 반환하며 어떻게 처리하고 반환할지 정의&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Collectors.groupingBy() : 스트림 요소를 그룹화&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;Collections / Collectors 이런거 자주 사용되는데 따로 찾아봐야겠다.&lt;/p&gt;
&lt;pre id=&quot;code_1698737922682&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package org.example;

import java.util.*;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // 단어 입력 받는다.
        String word = sc.nextLine().toUpperCase();

        char[] arrays = word.toCharArray();

        Map&amp;lt;Character, Long&amp;gt; charFrequency = new String(arrays)
                .chars()
                .mapToObj(c -&amp;gt; (char) c)
                .filter(Character::isLetterOrDigit)
                .collect(Collectors.groupingBy(
                        Character::toUpperCase,
                        Collectors.counting()
                ));

        long maxFrequency = charFrequency.values().stream()
                .max(Long::compare)
                .orElse(0L);

        String mostFrequentChars = charFrequency.entrySet().stream()
                .filter(entry -&amp;gt; entry.getValue() == maxFrequency)
                .map(entry -&amp;gt; entry.getKey().toString())
                .collect(Collectors.joining());

        if (mostFrequentChars.isEmpty() || mostFrequentChars.length() &amp;gt; 1) {
            System.out.println(&quot;?&quot;);
        } else {
            System.out.println(mostFrequentChars);
        }
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>AREA(지속적인 일상)/02_백준</category>
      <author>싹튼</author>
      <guid isPermaLink="true">https://ssackteun.tistory.com/243</guid>
      <comments>https://ssackteun.tistory.com/243#entry243comment</comments>
      <pubDate>Tue, 31 Oct 2023 17:00:14 +0900</pubDate>
    </item>
    <item>
      <title>[백준] - 10988 - 팰린드롬인지 확인하기</title>
      <link>https://ssackteun.tistory.com/242</link>
      <description>&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;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #343541; color: #ececf1; text-align: start;&quot;&gt; List&amp;lt;Integer&amp;gt; origin = spellings.boxed().collect(Collectors.toList()); &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #343541; color: #ececf1; text-align: start;&quot;&gt;List&amp;lt;Integer&amp;gt; reverse = origin; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #343541; color: #ececf1; text-align: start;&quot;&gt;Collections.reverse(reverse);&lt;/span&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;span style=&quot;background-color: #343541; color: #ececf1; text-align: start;&quot;&gt;origin 과 reverse 를 비교해봐도, 둘의 결과가 계속 같았다.&lt;/span&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;GPT 에게 물어보았다. -&amp;gt; reverse = origin; 은 동일한 객체를 참조 하고 있는걸 뒤집기 때문에 문제다! 라고 했다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원래 코드에서는 Collections.reverse(reverse);를 사용하여 reverse 리스트를 뒤집는 것이 아니라, reverse 리스트가 origin 리스트와 동일한 객체를 참조하게 됩니다. 이것은 실제로 두 리스트가 같은 데이터를 가리키기 때문에 reverse 또한 변경되면 origin도 변경됩니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #444654; color: #d1d5db; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;따라서, Collections.reverse(reverse); 사용 대신에 reverse 리스트를 복제하여 origin의 역순을 만들어야 합니다. 아래는 수정된 코드에서 이것을 어떻게 수행하는지 보여줍니다:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1698731796114&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Create a reversed copy of the origin list
List&amp;lt;Integer&amp;gt; reverse = new ArrayList&amp;lt;&amp;gt;(origin); // Create a new list with the same elements

// Then reverse the 'reverse' list
Collections.reverse(reverse);&lt;/code&gt;&lt;/pre&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;&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;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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;이 때, == 로 비교해야하며, equals 로 비교하면 내용 비교이므로 조심해야한다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;666&quot; data-origin-height=&quot;654&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Q1gh0/btszvi7jHY2/okBBGdRvdtJUqcBtb95C01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Q1gh0/btszvi7jHY2/okBBGdRvdtJUqcBtb95C01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Q1gh0/btszvi7jHY2/okBBGdRvdtJUqcBtb95C01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQ1gh0%2Fbtszvi7jHY2%2FokBBGdRvdtJUqcBtb95C01%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;666&quot; height=&quot;654&quot; data-origin-width=&quot;666&quot; data-origin-height=&quot;654&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생각을 해보았는데, 진짜 헷갈린다. 여태껏 별 생각없이 써왔으니까.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;침착하게 잘생각해보면, 인스턴스를 새로 생성한것이 아니기 때문에 같은 객체를 참조하는 것이 맞다.&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;628&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDwQnl/btszvISeEoP/VSkemn8erZAuRO8hnzI3M1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDwQnl/btszvISeEoP/VSkemn8erZAuRO8hnzI3M1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDwQnl/btszvISeEoP/VSkemn8erZAuRO8hnzI3M1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDwQnl%2FbtszvISeEoP%2FVSkemn8erZAuRO8hnzI3M1%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;628&quot; height=&quot;500&quot; data-origin-width=&quot;628&quot; data-origin-height=&quot;500&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1698731256266&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package org.example;

import java.util.Collections;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        //단어
        String voca = sc.nextLine();

        IntStream spellings= voca.chars();

        List&amp;lt;Integer&amp;gt; origin = spellings.boxed().collect(Collectors.toList());

        List&amp;lt;Integer&amp;gt; reverse = origin.stream()
                .collect(Collectors.collectingAndThen(Collectors.toList(), list -&amp;gt; {
                    Collections.reverse(list);
                    return list;
                }));

        if(origin.equals(reverse)){
            System.out.println(&quot;1&quot;);
        }else{
            System.out.println(&quot;0&quot;);
        }
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>AREA(지속적인 일상)/02_백준</category>
      <author>싹튼</author>
      <guid isPermaLink="true">https://ssackteun.tistory.com/242</guid>
      <comments>https://ssackteun.tistory.com/242#entry242comment</comments>
      <pubDate>Tue, 31 Oct 2023 15:10:46 +0900</pubDate>
    </item>
  </channel>
</rss>