<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>ejyoo's 개발 노트</title>
    <link>https://ejyoo.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Wed, 6 May 2026 17:03:22 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>ejyoovV</managingEditor>
    <image>
      <title>ejyoo's 개발 노트</title>
      <url>https://tistory1.daumcdn.net/tistory/4609053/attach/63c7a9e1628f4bc6bf7b6b7d4bd0c10d</url>
      <link>https://ejyoo.tistory.com</link>
    </image>
    <item>
      <title>ipTIMEA604MU - CPU LED 먹통 및 WIFI 신호 먹통 해결 방법</title>
      <link>https://ejyoo.tistory.com/526</link>
      <description>&lt;p id=&quot;SE-15db5286-d884-484a-8902-edda78136dd2&quot; style=&quot;background-color: #ffffff; color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;부모님이 WIFI가 안된다고 하셔서 WIFI를 확인해보니&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-1ca22f0b-de14-4796-81fd-abeb13f7a44b&quot; style=&quot;background-color: #ffffff; color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;WIFI가 잡혔다 안잡혔다 했다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-339c5d39-4aed-4078-9c94-4d25ec28cdcf&quot; style=&quot;background-color: #ffffff; color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-8f3594c8-3d8a-407a-9dff-93cfb63cd3ba&quot; style=&quot;background-color: #ffffff; color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;그래서 WIFI 공유기를 봤는데 CPU LED가 깜빡거려야 정상인데, 깜빡거리지도 않고,&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-480c86f4-25bb-496e-b50c-891a95d01db9&quot; style=&quot;background-color: #ffffff; color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;공유기의 5G 2.4G LED 조차도 안들어오고 있었다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-0799ba2a-e2aa-4c46-b256-f904a2c41a46&quot; style=&quot;background-color: #ffffff; color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-62f5ef38-1dc6-40a8-b9fa-d450e2c0fb8e&quot; style=&quot;background-color: #ffffff; color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;공유기 초기화를 하고 공유기를 다시 등록하려고 하면, CPU LED 가 켜져있어야 하고, 그것을 통해 기기 등록 및 초기화 작업을 진행할 수 있는데 CPU LED 조차도 안들어오니, 방법이 필요했다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-f044d30a-549d-45a2-b8cf-e6758fe7a703&quot; style=&quot;background-color: #ffffff; color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-615cf788-478d-4ea4-9d3d-ab3151219fba&quot; style=&quot;background-color: #ffffff; color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;아래의 Check List를 통해 본인의 ipTIME 공유기를 확인해보자.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-71e87aac-9fbf-4424-9a58-baccb9ab6b2e&quot; style=&quot;background-color: #ffffff; color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #333333; text-align: left;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;list-style-type: inherit;&quot;&gt;&lt;span&gt;본인 집에 설치된 인터넷 모뎀(SKT, KT, LG) 단말기 전원을 전기에 꽂고 랜선을 연결하여 '인터넷' 부분에 불이 켜져 있는지 확인&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit;&quot;&gt;&lt;span&gt;공유기 단말기 전원을 전기에 꽂고 전원 버튼이 들어오는지 확인&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit;&quot;&gt;&lt;span&gt;인터넷 모뎀과 공유기사이에 랜선을 꽂고 CPU 버튼이 깜빡거리는지 확인&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p id=&quot;SE-7dd59d21-5458-445a-b3c5-4589996a8d83&quot; style=&quot;background-color: #ffffff; color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Y : 정상동작&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-b501ac94-b249-4a53-a3ae-8fc5c67d587d&quot; style=&quot;background-color: #ffffff; color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;N : 비정상동작 '3-1' 진행&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-41054217-cba3-41be-87df-ba09a32621d2&quot; style=&quot;background-color: #ffffff; color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ff0010;&quot;&gt;&lt;i&gt;&lt;b&gt;3-1. 공유기에 연결된 어댑터가 본인이 사용하는 공유기에 해당하는 어댑터인지 확인(본인은 이게 문제였음)&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-c85bf1d2-ed38-4341-a42e-3119578a9104&quot; style=&quot;background-color: #ffffff; color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ff0010;&quot;&gt;&lt;b&gt;-&amp;gt; 보통 공유기 사면 공유기 전용 어댑터가 오며, 선에 공유기 이름이 표시되어있음.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-e68829a8-4d8a-4bdb-8c54-98e53ad8830c&quot; style=&quot;background-color: #ffffff; color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ff0010;&quot;&gt;&lt;b&gt;-&amp;gt; 사용하고 있는 공유기는 A604MU 인데, 쓰고 있는 어댑터는 이전에 쓰던 공유기 어댑터를 쓰고 있었음(N604V). 어댑터가 약해서 그런거였음. 그래서 A604MU 표시되어있는 어댑터로 변경함.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-68452e7c-80ba-4207-a560-f1049b8cbbb7&quot; style=&quot;background-color: #ffffff; color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;3-2. 펌웨어 업데이트 (미진행)&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-2ba21ffd-c1bc-4168-8273-2dc9589fe14c&quot; style=&quot;background-color: #ffffff; color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;ipTIME 사이트 접속 &amp;gt; 펌웨어 복구 도우미 클릭 &amp;gt; 나의 기기 검색 &amp;gt; '도우미 다운로드' 클릭&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-62839eb7-fac4-46a3-af1d-5cc8913030a0&quot; style=&quot;background-color: #ffffff; color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://iptime.com/iptime/?page_id=67&amp;amp;uid=23345&amp;amp;mod=document&quot;&gt;https://iptime.com/iptime/?page_id=67&amp;amp;uid=23345&amp;amp;mod=document&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>일상</category>
      <category>a604mu</category>
      <category>cpu불안들어옴</category>
      <category>iptime</category>
      <category>wifi안됨</category>
      <category>공유기</category>
      <category>인터넷안됨</category>
      <author>ejyoovV</author>
      <guid isPermaLink="true">https://ejyoo.tistory.com/526</guid>
      <comments>https://ejyoo.tistory.com/526#entry526comment</comments>
      <pubDate>Sun, 11 May 2025 01:27:36 +0900</pubDate>
    </item>
    <item>
      <title>[직접경험,후기] 결혼식 진행 스토리 박스 스냅사진과 함께했어요.</title>
      <link>https://ejyoo.tistory.com/524</link>
      <description>&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;첫번째 : 웨딩사진&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;이 블로그는 스냅사진 업체 추천 관련 글이에요. 관련 있으신 분들만 읽으시면 될 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;대전 스냅사진 잘찍는 &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;스토리 박스&lt;/b&gt;&lt;/span&gt;와 함께한 결혼식 스냅 촬영&amp;hearts;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 대전 라도무스에서 결혼식을 하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스토리 박스를 스냅사진 업체로 선정하게 되면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결혼식 시작 두시간반 전에 스토리 박스 작가님을 만나게 돼요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결혼식장 안의 사진이 잘나오는 포토존에 가서 작가님이 이것저것 사진을 찍어주시는데요,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;촬영 자세와 각도는 전문적인 작가님이 다 잡아주십니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;저는 표정만 준비하면 됐어요 ^*^&lt;/u&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;&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;(모자이크 처리 아쉽다.. 개인적으로 뻥안치고 진짜 마음에 들었어요 ㅜㅜ)&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;결혼식 시작 전, 스냅 촬영&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_KakaoTalk_20240626_113530818_08.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;1999&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VWngE/btsIcX1A74d/4KPnKC9OSbqBQtVUfZWhF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VWngE/btsIcX1A74d/4KPnKC9OSbqBQtVUfZWhF0/img.png&quot; data-alt=&quot;창문샷&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VWngE/btsIcX1A74d/4KPnKC9OSbqBQtVUfZWhF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVWngE%2FbtsIcX1A74d%2F4KPnKC9OSbqBQtVUfZWhF0%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;3000&quot; height=&quot;1999&quot; data-filename=&quot;edited_KakaoTalk_20240626_113530818_08.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;1999&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;창문샷&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_KakaoTalk_20240626_113530818_15.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5bmGI/btsIeTQLrLK/aFPWNnvWrsFaBevIBK5DH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5bmGI/btsIeTQLrLK/aFPWNnvWrsFaBevIBK5DH1/img.png&quot; data-alt=&quot;분위기샷&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5bmGI/btsIeTQLrLK/aFPWNnvWrsFaBevIBK5DH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5bmGI%2FbtsIeTQLrLK%2FaFPWNnvWrsFaBevIBK5DH1%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;3000&quot; height=&quot;2000&quot; data-filename=&quot;edited_KakaoTalk_20240626_113530818_15.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;분위기샷&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_edited_KakaoTalk_20240626_113530818_09.jpg&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;3000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ceGz69/btsIdz0kQKJ/8pzsjtMK1cBLgoq18sqJhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ceGz69/btsIdz0kQKJ/8pzsjtMK1cBLgoq18sqJhk/img.png&quot; data-alt=&quot;응 반지삿어샷&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ceGz69/btsIdz0kQKJ/8pzsjtMK1cBLgoq18sqJhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FceGz69%2FbtsIdz0kQKJ%2F8pzsjtMK1cBLgoq18sqJhk%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;559&quot; height=&quot;839&quot; data-filename=&quot;edited_edited_KakaoTalk_20240626_113530818_09.jpg&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;3000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;응 반지삿어샷&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_KakaoTalk_20240626_113530818_10.jpg&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;3000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IXnoK/btsIekBhHiA/zNPNgKISBmeLSkh5Mh3sk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IXnoK/btsIekBhHiA/zNPNgKISBmeLSkh5Mh3sk1/img.png&quot; data-alt=&quot;예쁜첫샷&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IXnoK/btsIekBhHiA/zNPNgKISBmeLSkh5Mh3sk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIXnoK%2FbtsIekBhHiA%2FzNPNgKISBmeLSkh5Mh3sk1%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;558&quot; height=&quot;837&quot; data-filename=&quot;edited_KakaoTalk_20240626_113530818_10.jpg&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;3000&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 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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&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;여기에서도 스토리박스 스냅사진 작가님의 실력이 돋보입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;신부대기실, 스냅촬영&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 신랑이랑 가족들과 사진을 찍고&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_edited_KakaoTalk_20240626_113530818_13.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpaDRY/btsIcXUPeZv/Vw5DzkEFn2naNG59CS37j0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpaDRY/btsIcXUPeZv/Vw5DzkEFn2naNG59CS37j0/img.png&quot; data-alt=&quot;신부대기실에서 한컷-&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpaDRY/btsIcXUPeZv/Vw5DzkEFn2naNG59CS37j0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpaDRY%2FbtsIcXUPeZv%2FVw5DzkEFn2naNG59CS37j0%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;3000&quot; height=&quot;2000&quot; data-filename=&quot;edited_edited_KakaoTalk_20240626_113530818_13.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2000&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;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oxowN/btsIdF0t7Ex/ZgfXKe3iVd1KT8adiGPhk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oxowN/btsIdF0t7Ex/ZgfXKe3iVd1KT8adiGPhk1/img.png&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2000&quot; data-is-animation=&quot;false&quot; data-filename=&quot;edited_edited_KakaoTalk_20240626_113530818_12.jpg&quot; data-widthpercent=&quot;50&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oxowN/btsIdF0t7Ex/ZgfXKe3iVd1KT8adiGPhk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoxowN%2FbtsIdF0t7Ex%2FZgfXKe3iVd1KT8adiGPhk1%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;3000&quot; height=&quot;2000&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Fb4L3/btsIe3Mzyfz/UTUucdDIZxMrzzbvMNUpaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Fb4L3/btsIe3Mzyfz/UTUucdDIZxMrzzbvMNUpaK/img.png&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2000&quot; data-is-animation=&quot;false&quot; data-filename=&quot;edited_edited_KakaoTalk_20240626_113530818_11.jpg&quot; data-widthpercent=&quot;50&quot; style=&quot;width: 49.4186%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Fb4L3/btsIe3Mzyfz/UTUucdDIZxMrzzbvMNUpaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFb4L3%2FbtsIe3Mzyfz%2FUTUucdDIZxMrzzbvMNUpaK%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;3000&quot; height=&quot;2000&quot;/&gt;&lt;/span&gt;&lt;/div&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 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;그중에서 제일 잘 나온 LOVE 샷이에요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6명이 단체로 와야 이 사진을 찍을 수 있어요. (4명 와도 가능할 것 같네요.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_edited_edited_KakaoTalk_20240626_113530818_14.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxlvGC/btsIe0oL0RJ/c5dx0x3nnXy5lOHNc6sFck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxlvGC/btsIe0oL0RJ/c5dx0x3nnXy5lOHNc6sFck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxlvGC/btsIe0oL0RJ/c5dx0x3nnXy5lOHNc6sFck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxlvGC%2FbtsIe0oL0RJ%2Fc5dx0x3nnXy5lOHNc6sFck%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;3000&quot; height=&quot;2000&quot; data-filename=&quot;edited_edited_edited_KakaoTalk_20240626_113530818_14.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 사진에 정말 재밌는 사정이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;작가님께서 후레쉬 LOVE 샷을 부탁하셔가지곸ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;신랑 회사분들... 그날 처음봤는데ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;옆에서 LOVE 샷 예쁘게 찍어주고 가셨습니다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ&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;작가님, 신랑 회사 지인분들 감사합니다 &amp;hearts;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&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;결혼식 진행할 때 다양한 각도로 엄청 열심히 뛰어다니시면서 사진을 촬영해주셨습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_KakaoTalk_20240626_113530818_16.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FajKZ/btsIcWhmgqi/LpGZOFVAs50KSlIKqOhMkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FajKZ/btsIcWhmgqi/LpGZOFVAs50KSlIKqOhMkK/img.png&quot; data-alt=&quot;신랑 입장을 기다리며,,&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FajKZ/btsIcWhmgqi/LpGZOFVAs50KSlIKqOhMkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFajKZ%2FbtsIcWhmgqi%2FLpGZOFVAs50KSlIKqOhMkK%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;3000&quot; height=&quot;2000&quot; data-filename=&quot;edited_KakaoTalk_20240626_113530818_16.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;신랑 입장을 기다리며,,&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yrciF/btsIcpxBWrJ/yQ9W04qpgvqojo4e4XKOu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yrciF/btsIcpxBWrJ/yQ9W04qpgvqojo4e4XKOu0/img.png&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2000&quot; data-is-animation=&quot;false&quot; data-filename=&quot;edited_edited_edited_KakaoTalk_20240626_113530818_03.jpg&quot; data-widthpercent=&quot;50&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yrciF/btsIcpxBWrJ/yQ9W04qpgvqojo4e4XKOu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyrciF%2FbtsIcpxBWrJ%2FyQ9W04qpgvqojo4e4XKOu0%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;3000&quot; height=&quot;2000&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xXwGz/btsIe4dDPQD/sYY0roQRE9SUySsmfItPnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xXwGz/btsIe4dDPQD/sYY0roQRE9SUySsmfItPnk/img.png&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2000&quot; data-is-animation=&quot;false&quot; data-filename=&quot;edited_edited_KakaoTalk_20240626_113530818_04.jpg&quot; data-widthpercent=&quot;50&quot; style=&quot;width: 49.4186%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xXwGz/btsIe4dDPQD/sYY0roQRE9SUySsmfItPnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxXwGz%2FbtsIe4dDPQD%2FsYY0roQRE9SUySsmfItPnk%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;3000&quot; height=&quot;2000&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;신랑신부 입장샷&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8nbzZ/btsIcBrd6ww/KkK10axUqq3mOPK7LkOy9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8nbzZ/btsIcBrd6ww/KkK10axUqq3mOPK7LkOy9k/img.png&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2000&quot; data-is-animation=&quot;false&quot; data-filename=&quot;edited_KakaoTalk_20240626_113530818_05.jpg&quot; data-widthpercent=&quot;50&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8nbzZ/btsIcBrd6ww/KkK10axUqq3mOPK7LkOy9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8nbzZ%2FbtsIcBrd6ww%2FKkK10axUqq3mOPK7LkOy9k%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;3000&quot; height=&quot;2000&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2VwZe/btsIdQnaXoF/s4pVtYKNGkzq3dC5lUHGn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2VwZe/btsIdQnaXoF/s4pVtYKNGkzq3dC5lUHGn1/img.png&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2000&quot; data-is-animation=&quot;false&quot; data-filename=&quot;edited_edited_KakaoTalk_20240626_113530818_06.jpg&quot; data-widthpercent=&quot;50&quot; style=&quot;width: 49.4186%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2VwZe/btsIdQnaXoF/s4pVtYKNGkzq3dC5lUHGn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2VwZe%2FbtsIdQnaXoF%2Fs4pVtYKNGkzq3dC5lUHGn1%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;3000&quot; height=&quot;2000&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;이사진 표정 제일 이뻤는데,,,,,가려서 너무 아쉬운,,,&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bo5S6K/btsIeSdf4aW/gSsvvsTG2PPLRsfEQ9jO4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bo5S6K/btsIeSdf4aW/gSsvvsTG2PPLRsfEQ9jO4K/img.png&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;3000&quot; data-is-animation=&quot;false&quot; data-filename=&quot;edited_KakaoTalk_20240626_113530818_17.jpg&quot; data-widthpercent=&quot;30.77&quot; style=&quot;width: 30.4114%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bo5S6K/btsIeSdf4aW/gSsvvsTG2PPLRsfEQ9jO4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbo5S6K%2FbtsIeSdf4aW%2FgSsvvsTG2PPLRsfEQ9jO4K%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;2000&quot; height=&quot;3000&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cUdZrK/btsIdOiABP2/g7SQvv9Isy8bnhvtNQiYh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cUdZrK/btsIdOiABP2/g7SQvv9Isy8bnhvtNQiYh0/img.png&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2000&quot; data-is-animation=&quot;false&quot; data-filename=&quot;edited_KakaoTalk_20240626_113530818_07.jpg&quot; data-widthpercent=&quot;69.23&quot; style=&quot;width: 68.4258%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cUdZrK/btsIdOiABP2/g7SQvv9Isy8bnhvtNQiYh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcUdZrK%2FbtsIdOiABP2%2Fg7SQvv9Isy8bnhvtNQiYh0%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;3000&quot; height=&quot;2000&quot;/&gt;&lt;/span&gt;&lt;/div&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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nRKN2/btsIcZSFkdR/IyQS1h2UqEdez3e903r7IK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nRKN2/btsIcZSFkdR/IyQS1h2UqEdez3e903r7IK/img.png&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;1999&quot; data-is-animation=&quot;false&quot; data-filename=&quot;edited_edited_KakaoTalk_20240626_113530818.jpg&quot; data-widthpercent=&quot;50.01&quot; style=&quot;width: 49.431%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nRKN2/btsIcZSFkdR/IyQS1h2UqEdez3e903r7IK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnRKN2%2FbtsIcZSFkdR%2FIyQS1h2UqEdez3e903r7IK%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;3000&quot; height=&quot;1999&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/B02i2/btsIdHKK5HK/agGywCwCFOJp1Ima3m5xZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/B02i2/btsIdHKK5HK/agGywCwCFOJp1Ima3m5xZk/img.png&quot; data-filename=&quot;edited_edited_KakaoTalk_20240626_113530818_01.jpg&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;2000&quot; data-origin-width=&quot;3000&quot; data-widthpercent=&quot;49.99&quot; style=&quot;width: 49.4062%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/B02i2/btsIdHKK5HK/agGywCwCFOJp1Ima3m5xZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB02i2%2FbtsIdHKK5HK%2FagGywCwCFOJp1Ima3m5xZk%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;3000&quot; height=&quot;2000&quot;/&gt;&lt;/span&gt;&lt;/div&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 data-ke-size=&quot;size16&quot;&gt;신랑신부 행진 후에도 신랑이랑 함께 셀카 찍고 있었는데 그 모습도 찍어주셨어요 ㅋㅋㅋㅋㅋㅋㅋ&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_KakaoTalk_20240626_113530818_02.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LBoqi/btsIcWBHMTa/be9r2KLTkSwJaie8m5ftP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LBoqi/btsIcWBHMTa/be9r2KLTkSwJaie8m5ftP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LBoqi/btsIcWBHMTa/be9r2KLTkSwJaie8m5ftP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLBoqi%2FbtsIcWBHMTa%2Fbe9r2KLTkSwJaie8m5ftP1%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;3000&quot; height=&quot;2000&quot; data-filename=&quot;edited_KakaoTalk_20240626_113530818_02.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2000&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;예쁜 스냅과 함께한 행복한 결혼식&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잊지 못할 추억 남겨주셔서 감사합니다.&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;제 사진을 보고 스토리박스랑 함께하는 것도 나쁘지 않은 것 같아요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;긴글 읽어주셔서 감사합니다 ^*^ 항상 행복 가득하세용!!!!&lt;/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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막 사진 &amp;hearts;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_KakaoTalk_20240626_113530818_18.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JRpfg/btsIdy1rCO4/UTvestkSUqcwDjjH71YX7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JRpfg/btsIdy1rCO4/UTvestkSUqcwDjjH71YX7K/img.png&quot; data-alt=&quot;응 반지 맞췄어 샷2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JRpfg/btsIdy1rCO4/UTvestkSUqcwDjjH71YX7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJRpfg%2FbtsIdy1rCO4%2FUTvestkSUqcwDjjH71YX7K%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;3000&quot; height=&quot;2000&quot; data-filename=&quot;edited_KakaoTalk_20240626_113530818_18.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;응 반지 맞췄어 샷2&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_edited_KakaoTalk_20240626_113530818_19.jpg&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;3000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUmNb5/btsIdHYlvmT/I1owZ1gem6eFLHyrg5KK6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUmNb5/btsIdHYlvmT/I1owZ1gem6eFLHyrg5KK6k/img.png&quot; data-alt=&quot;우리가 식장 접수했음 존예 ㅜㅜ&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUmNb5/btsIdHYlvmT/I1owZ1gem6eFLHyrg5KK6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUmNb5%2FbtsIdHYlvmT%2FI1owZ1gem6eFLHyrg5KK6k%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;2000&quot; height=&quot;3000&quot; data-filename=&quot;edited_edited_KakaoTalk_20240626_113530818_19.jpg&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;3000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;우리가 식장 접수했음 존예 ㅜㅜ&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>일상</category>
      <category>대전본식영상</category>
      <category>대전스냅사진</category>
      <category>대전웨딩스냅</category>
      <category>라도무스dvd</category>
      <category>라도무스스냅</category>
      <category>스냅잘찍음</category>
      <category>스냅촬영</category>
      <category>스토리박스</category>
      <category>스토리박스스튜디오</category>
      <category>에스가든스냅</category>
      <author>ejyoovV</author>
      <guid isPermaLink="true">https://ejyoo.tistory.com/524</guid>
      <comments>https://ejyoo.tistory.com/524#entry524comment</comments>
      <pubDate>Wed, 26 Jun 2024 22:01:33 +0900</pubDate>
    </item>
    <item>
      <title>[Java] Scanner를 사용하고 자원 정리 측면에서 닫아야 할까?</title>
      <link>https://ejyoo.tistory.com/523</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;궁금해요 궁금해&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;코드프로그래머스에서 문제를 풀다가 Scanner를 닫는 사람이 있어서 궁금해졌다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;꼭 닫아야할까? JVM이 자동으로 정리해주지 않을까?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;궁금증 해소&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;Scanner 객체를 초기화할 때, 어떤 파라미터를 주었냐에 따라 Scanner의 close() 메소드를 사용하는 것이 좋을 수 있다.그런데 코드프로그래머스에서 사용하는 Scanner는 대부분 사용자에게 입력을 받는 것이여서, 입력이 끝나고 나면 프로그램이 종료되면서 JVM이 자동으로 리소스를 정리해준다고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #374151; text-align: start;&quot; 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;font-family: 'Noto Serif KR';&quot;&gt;무조건적으로 Scanner를 사용하고 닫게되면&amp;nbsp;만약 System.in을 사용하는 경우 더이상 자원을 사용할 수 없어서 Scanner 객체를 새로 만들어야 할 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #374151; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #374151; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;결론&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;System.in 인 경우 Scanner를 close() 호출하는 것은 필수가 아니다. 프로그램이 종료되면 JVM이 자동으로 정리해준다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #374151; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #374151; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;참고&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;- Scanner 클래스는 Closeable인터페이스를 구현한다. 사용이 끝난 후에 리소스를 해제하는 것이 중요하긴 하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;- 파일이나 네트워크 리소스와 같은 외부 리소스를 사용할 때는 반드시 close()를 호출하여 자원을 정리해야 한다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>물음표 저장소</category>
      <category>Close</category>
      <category>Java</category>
      <category>scanner</category>
      <category>자원정리</category>
      <author>ejyoovV</author>
      <guid isPermaLink="true">https://ejyoo.tistory.com/523</guid>
      <comments>https://ejyoo.tistory.com/523#entry523comment</comments>
      <pubDate>Tue, 5 Dec 2023 19:46:13 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] 중복 제거 코드</title>
      <link>https://ejyoo.tistory.com/522</link>
      <description>&lt;pre id=&quot;code_1701676122826&quot; class=&quot;csharp&quot; data-ke-language=&quot;csharp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/**
 * 중복 데이터에서 uniquedata만 추출하는 함수
 * @param {*} duplicateItems 중복데이터 목록
 * @param {*} customFunc 유일 데이터 추출하기 위한 커스텀 함수
 * @returns 
 */
convertUniqueDatas: function (duplicateItems, customFunc) {
    if (!Array.isArray(duplicateItems)) {
        throw new Error(&quot;DuplicateItems must be an array.&quot;);
    }

    var uniqueItems = undefined;

    if (typeof customFunc === 'function') {
        uniqueItems = [...new Set([].concat(...duplicateItems.map(item =&amp;gt; {
            try {
                return customFunc(item);
            } catch (e) {
                console.error(&quot;Error running customFunc.&quot;, e);
                return item;
            }
        })))];
    } else {
        uniqueItems = [...new Set([].concat(...duplicateItems.map(item =&amp;gt; {
            return item;
        })))];
    }

    return uniqueItems;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코드샘플</category>
      <category>JavaScript</category>
      <category>중복제거</category>
      <author>ejyoovV</author>
      <guid isPermaLink="true">https://ejyoo.tistory.com/522</guid>
      <comments>https://ejyoo.tistory.com/522#entry522comment</comments>
      <pubDate>Mon, 4 Dec 2023 16:48:53 +0900</pubDate>
    </item>
    <item>
      <title>[코딩 기초 트레이닝] 문자열 출력하기</title>
      <link>https://ejyoo.tistory.com/513</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;문제, 초기 솔루션&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1697127145716&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[문제]
문자열 str이 주어질 때, str을 출력하는 코드를 작성해 보세요.
[제한사항]
- 1 &amp;le; str의 길이 &amp;le; 1,000,000
- str에는 공백이 없으며, 첫째 줄에 한 줄로만 주어집니다.
[입출력예]
- 입력 #1
HelloWorld!
- 출력 #1
HelloWorld!&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1697201968528&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 문제는 주어진 문자열 'str'을 출력하는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;문제 풀이&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1697201888619&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        
        System.out.println(str);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;솔루션에서 Scanner 객체를 생성해서 사용자의 입력을 받고 next() 로 저장한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제한사항은 코드프로그래머스가 제공하는 테스트 코드에대한 제한사항 같다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1697202189296&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;- 1 &amp;le; str의 길이 &amp;le; 1,000,000
- str에는 공백이 없으며, 첫째 줄에 한 줄로만 주어집니다.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Scanner 의 next 는 메서드 공백을 기준으로 입력을 나누기 때문에 제한사항에 'str에는 공백이 없다' 로 되어있는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 str의 길이가 최대 1,000,000 까지 가능한다 하는 것은&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Scanner 의 내부버퍼의 특성에 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Sacnner의 내부버퍼 특성&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Scanner는 정규식 기반으로 동작하는 객체로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;next() 메서드가 입력 값을 처리할 때 내부적으로 'java.util.regex.Matcher'를 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이것은 내부적으로 버퍼를 사용하는데, 기본 버퍼의 크기는 '1024' 문자(char)이고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필요에 따라 시스템 가용 메모리 한도 내에서 내부 버퍼를 확장한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;드문 사례지만 매우 큰 입력이 주어져서 Scanner의 내부 버퍼 확장이 시스템 메모리를 초과하게 되면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JVM 이 OutOfMemoryError를 발생시킬 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 내부 버퍼를 확장하는 과정에서 성능 저하도 생길 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 매우 큰 입력을 처리할 때 BufferedReader 를 사용하는 것이 더 빠를 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;br /&gt;&lt;b&gt;BufferedReader 사용&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1697204083961&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.read();
        
        System.out.println(str);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 솔루션에는 Scanner를 사용하여 풀으라고 하는 것 같아서, BufferedReader보단 Scanner를 사용하여 문제를 풀었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>문제풀이/코드프로그래머스 문제풀이</category>
      <category>Next</category>
      <category>scanner</category>
      <category>코드프로그래머스</category>
      <author>ejyoovV</author>
      <guid isPermaLink="true">https://ejyoo.tistory.com/513</guid>
      <comments>https://ejyoo.tistory.com/513#entry513comment</comments>
      <pubDate>Thu, 12 Oct 2023 02:05:18 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스-코딩기초트레이닝] 문자열변환</title>
      <link>https://ejyoo.tistory.com/512</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/181952&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/181952&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697041148088&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;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/181952&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ctjMqN/hyUdWugds5/LC0abp23uuvDb1O9zDteNK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/ZnmBI/hyUd0XJzqk/40VjwwX4JxhsSDGA1I4DK1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/181952&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/181952&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ctjMqN/hyUdWugds5/LC0abp23uuvDb1O9zDteNK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/ZnmBI/hyUd0XJzqk/40VjwwX4JxhsSDGA1I4DK1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&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;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1697041104269&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[문제]
정수 n이 주어질 때, n을 문자열로 변환하여 return하도록 solution 함수를 완성해주세요.
[제한사항]
1 &amp;le; n &amp;le; 10000
[입출력예]
- 입출력 예 #1
123을 문자열로 변환한 &quot;123&quot;을 return합니다.
- 입출력 예 #2
2573을 문자열로 변환한 &quot;2573&quot;을 return합니다.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;내가 입력한 답&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 Java에서 제공하는 기본 메서드를 활용하여 문제를 해결하였다.&lt;/p&gt;
&lt;pre id=&quot;code_1697041179773&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public String solution(int n) {
        String answer = Integer.toString(n);
        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;다른 풀이 보기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 사람이 푼 답안을 보다가 신기한 것을 발견했다.&lt;/p&gt;
&lt;pre id=&quot;code_1697041544356&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;String answer = &quot;&quot; + n;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이&amp;nbsp;방법은&amp;nbsp;자바에서의&amp;nbsp;문자열&amp;nbsp;연결&amp;nbsp;특성을&amp;nbsp;활용한&amp;nbsp;것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빈 문자열 (&quot;&quot;)에 문자열 연결 연산자 '+'를 사용하여 문자열로 자동 변환되도록 하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'+' 문자열 연결 연산자는 문자열과 다른 데이터 타입(int, double 등)이 '+' 연산자로 만나게 되면,&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;따라서 위의 &quot;&quot; + n 는 n을 문자열로 변환하고 빈 문자열에 연결하는 것과 같으므로 결과적으로 n이 문자열로 변환되는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;무엇이 더 좋을까? (개인적)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 명확한 Integer.toString(n)이 좋은 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;&quot;+문자열 은 코드가 짧아서 간결하지만, 직관적이지 않다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;연산 측면에서 성능은?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;String&amp;nbsp;answer&amp;nbsp;=&amp;nbsp;&quot;&quot;&amp;nbsp;+&amp;nbsp;n; 과 String answer = Integer.toString(n); 은 기본 연산이라서 이러한 생각이 무의미 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 각각이 수행되는 '원리' 에 대해 생각해볼 필요는 있을 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;String answer = &quot;&quot; + n; 방식은,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빈 문자열과 정수를 연결하기 위해 문자열 연결 연산이 필히 발생된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바 내부에서 StringBuilder나 StringBuffer를 객체를 생성하고 문자열 연산을 수행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반면에 String answer = Integer.toString(n); 은 직접적인 변환 메서드이기 때문에 추가적인 객체 생성이 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 원리를 보았을 때 데이터가 1억개정도라면.. String answer = Integer.toString(n); 방식이 더 빠르지 않을까 싶다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 성능 차이는 JVM 최적화나 설정 그리고 컴퓨터 사양에 따라 달라지지 않을까..?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;만약에 정수가 아닌 것이 온다면? 어떻게해야할까?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제는 정수만 언급했는데 만약에 정수가 아니라면?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럴때는 String.valuesOf(n) 를 사용하면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1697042538792&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;String answer = String.valueOf(n);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Integer.toString(n) 과는 기능적인 차이가 없지만, (둘 다 정수를 문자열로 변환하는 작업)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;차이점은 String.valueOf(n) 가 더 범용적이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 메서드는 n에 다양한 타입의 인수 (boolean, char, float, int, long 등)를 받고, 문자열로 변환할 수 있어서 일관성을 유지할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇지만,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제에서는 '정수' 만을 문자열로 변환한다고 했으니, Integer.toString(n)을 사용하는게 더 직관적인 것 같다.&lt;/p&gt;</description>
      <category>문제풀이/코드프로그래머스 문제풀이</category>
      <category>&amp;quot;&amp;quot;+n</category>
      <category>Integer.toString</category>
      <category>String.valueOf</category>
      <category>기초트레이닝</category>
      <category>코드프로그래머스</category>
      <author>ejyoovV</author>
      <guid isPermaLink="true">https://ejyoo.tistory.com/512</guid>
      <comments>https://ejyoo.tistory.com/512#entry512comment</comments>
      <pubDate>Thu, 12 Oct 2023 01:44:40 +0900</pubDate>
    </item>
    <item>
      <title>[Mac/IntelliJ/Gradle/Spring Boot 3.1.4] 자동빌드 설정 (SpringBoot - devTools)</title>
      <link>https://ejyoo.tistory.com/508</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;.java 확장자를 가진 파일에 직접 코드를 작성하고 프로젝트 런을 돌리면 '빌드'라는 과정을 거치게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빌드는 여러 과정이 있지만 대표적으로 Java 컴파일러가 '컴파일' 하는 과정이다.&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;.java 파일을 Java 컴파일러(Javac) 는 .java 파일을 받아서 바이트 코드로 변환하고 ,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 결과를 .class 파일로 저장하는데, 이 바이트 코드는 JVM (Java Virtual Machine) 에서 실행하게 된다.&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;자동화하는 방법, 그것은 바로 Spring Boot에 devTools를 사용하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 코드를 수정할 때, 자동으로 빌드를 돌리게 되어 최신의 코드를 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;이를 위해서는 몇가지 설정이 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Spring Boot 버전에 따라 설정 방법이 다르지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 내가 만든 프로젝트의 버전은 Spring Boot 3.1.4 버전이므로 이것과 비슷한 메이저 버전의 프로젝트를 갖고 있다면,&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;시간을 버리지 않았으면 좋겠다.&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;아래부터 자동 빌드 설정관련한 설정들이다. IntelliJ 한글버전이므로 참고하여 봤으면 좋겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;빌드 옵션 설정&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;command + , 를 입력하여 IntelliJ 프로젝트 설정을 연다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cCRtAw/btswgXExUdM/5ncejVECbUWSaJ0i7JdDSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cCRtAw/btswgXExUdM/5ncejVECbUWSaJ0i7JdDSk/img.png&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;832&quot; data-is-animation=&quot;false&quot; style=&quot;width: 38.3318%; margin-right: 10px;&quot; data-widthpercent=&quot;38.78&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cCRtAw/btswgXExUdM/5ncejVECbUWSaJ0i7JdDSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCRtAw%2FbtswgXExUdM%2F5ncejVECbUWSaJ0i7JdDSk%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;1060&quot; height=&quot;832&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjsAYS/btswknJL2ff/JJBNRG1GnQaEvVF14KUXxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjsAYS/btswknJL2ff/JJBNRG1GnQaEvVF14KUXxK/img.png&quot; data-origin-width=&quot;1094&quot; data-origin-height=&quot;544&quot; data-is-animation=&quot;false&quot; style=&quot;width: 60.5055%;&quot; data-widthpercent=&quot;61.22&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjsAYS/btswknJL2ff/JJBNRG1GnQaEvVF14KUXxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjsAYS%2FbtswknJL2ff%2FJJBNRG1GnQaEvVF14KUXxK%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;1094&quot; height=&quot;544&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1704&quot; data-origin-height=&quot;1410&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qOFiP/btswJy4K1Qn/HY9C8xE9k0NkRwkfK5RwR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qOFiP/btswJy4K1Qn/HY9C8xE9k0NkRwkfK5RwR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qOFiP/btswJy4K1Qn/HY9C8xE9k0NkRwkfK5RwR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqOFiP%2FbtswJy4K1Qn%2FHY9C8xE9k0NkRwkfK5RwR1%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;1704&quot; height=&quot;1410&quot; data-origin-width=&quot;1704&quot; data-origin-height=&quot;1410&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;build.gradle 의존성 추가&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1696183704022&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;dependencies {
    implementation 'org.springframework.boot:spring-boot-devtools'
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;의존성을 설정한 뒤 Gradle 컴파일러에서 획득한 runtimeClasspath 에 추가한 devtools가 있는지 확인한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;934&quot; data-origin-height=&quot;614&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/73TYa/btsv8QGkux7/C1GGPSKCgask2FT6G1Tadk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/73TYa/btsv8QGkux7/C1GGPSKCgask2FT6G1Tadk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/73TYa/btsv8QGkux7/C1GGPSKCgask2FT6G1Tadk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F73TYa%2Fbtsv8QGkux7%2FC1GGPSKCgask2FT6G1Tadk%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;934&quot; height=&quot;614&quot; data-origin-width=&quot;934&quot; data-origin-height=&quot;614&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;IntelliJ 재시작&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;첫 빌드 실행&amp;nbsp;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빌드를 실행하면 [restartedMain] 키워드를 가진 로그가 보인다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1026&quot; data-origin-height=&quot;410&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QaXw7/btsv8OuYQ4n/aFKWTstJ3B6cshU6qy7281/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QaXw7/btsv8OuYQ4n/aFKWTstJ3B6cshU6qy7281/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QaXw7/btsv8OuYQ4n/aFKWTstJ3B6cshU6qy7281/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQaXw7%2Fbtsv8OuYQ4n%2FaFKWTstJ3B6cshU6qy7281%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;1026&quot; height=&quot;410&quot; data-origin-width=&quot;1026&quot; data-origin-height=&quot;410&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;최종확인&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드를 수정한 뒤 프로젝트의 build - 수정한 class 파일이 최신의 내용을 갖고있는지 확인한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자동으로 빌드가 돌려지는 시점에 아래와 같이 표시된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dk830E/btswknXkuhp/SvWNjTqsOKaWjpXQGzgyq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dk830E/btswknXkuhp/SvWNjTqsOKaWjpXQGzgyq1/img.png&quot; data-origin-width=&quot;842&quot; data-origin-height=&quot;594&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;26.41&quot; style=&quot;width: 26.104%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dk830E/btswknXkuhp/SvWNjTqsOKaWjpXQGzgyq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdk830E%2FbtswknXkuhp%2FSvWNjTqsOKaWjpXQGzgyq1%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;842&quot; height=&quot;594&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wdXSH/btsv7ltsvfT/dN63Ijzm2319TnDDezfUN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wdXSH/btsv7ltsvfT/dN63Ijzm2319TnDDezfUN1/img.png&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;238&quot; data-is-animation=&quot;false&quot; style=&quot;width: 72.7332%;&quot; data-widthpercent=&quot;73.59&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wdXSH/btsv7ltsvfT/dN63Ijzm2319TnDDezfUN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwdXSH%2Fbtsv7ltsvfT%2FdN63Ijzm2319TnDDezfUN1%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;940&quot; height=&quot;238&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;최종 정리&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 자동 빌드를 수행하기 전에 IntelliJ Idea 의 기능을 이해해보아야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IntelliJ에서 코드를 수정한 파일은 따로 저장을 할 필요가 없다. 이는 class 파일에 적용되는 것이 아닌 그냥 '로컬파일' 만 저장된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자동으로 저장되는 것을 확인하려면 아무 java 파일을 수정하고 파일을 닫았을 때,&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;그러나 build 파일을 열어서 .class 파일을 보았을 때, 변경사항이 반영되지 않음을 확인할 수 있다.&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;보통 Command + Shift + F9로 수동 빌드로 돌리지만,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;spring-boot-devtools 에서 devtool이 트리거를 실행시켜 자동으로 빌드를 시키고 .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;그런데 이 시점이, 불분명하다. 이 시점에 대해서 언젠가는 알게될 것이라고 믿어본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 그 시점이 열려있는 창간 이동? 왔다갔다 하면 무조건 빌드가 되었다. 원리는 뭔지 잘 모르겠다.&amp;nbsp;&lt;/p&gt;</description>
      <category>BackEnd/Spring Boot</category>
      <category>3.1.4</category>
      <category>build</category>
      <category>DevTools</category>
      <category>gradle</category>
      <category>intellij</category>
      <category>mac</category>
      <category>spring-boot</category>
      <category>spring-boot 3.1.4</category>
      <category>spring-boot-devtools</category>
      <category>자동빌드</category>
      <author>ejyoovV</author>
      <guid isPermaLink="true">https://ejyoo.tistory.com/508</guid>
      <comments>https://ejyoo.tistory.com/508#entry508comment</comments>
      <pubDate>Sun, 1 Oct 2023 20:11:19 +0900</pubDate>
    </item>
    <item>
      <title>[Spring Boot 3.1.4] build.gradle 에 대한 정리</title>
      <link>https://ejyoo.tistory.com/507</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;본 글은 spring boot 기반의 Java 프로젝트를 처음 접하면서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;build.gradle라는 파일에 들어가는 Gradle 빌드 스크립트에 대해서 정리하였다&lt;/p&gt;
&lt;pre id=&quot;code_1695987890808&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;plugins {
    id 'java'
    id 'org.springframework.boot' version '3.1.4'
    id 'io.spring.dependency-management' version '1.1.3'
}

repositories {
    mavenCentral() // 중앙 Maven 저장소 사용 지시 (Maven Central Repository)
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'

java {
    sourceCompatibility = '17'
}

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}



dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.h2database:h2'
    runtimeOnly 'com.mysql:mysql-connector-j'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'

    // QueryDSL Implementation
    implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
    annotationProcessor &quot;com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta&quot;
    annotationProcessor &quot;jakarta.annotation:jakarta.annotation-api&quot;
    annotationProcessor &quot;jakarta.persistence:jakarta.persistence-api&quot;
}

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

test {
    useJUnitPlatform()
}

/**
 * QueryDSL Build Options
 */
def querydslDir = &quot;src/main/generated&quot;

sourceSets {
    main.java.srcDirs += [ querydslDir ]
}

tasks.withType(JavaCompile) {
    options.getGeneratedSourceOutputDirectory().set(file(querydslDir))
}

clean.doLast {
    file(querydslDir).deleteDir()
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;플러그인 추가&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1695988028682&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;plugins {
  id 'java'
  id 'org.springframework.boot' version '3.1.4'
  id 'io.spring.dependency-management' version '1.1.3'
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- id 'java' : Java 프로젝트를 위한 기본 Gradle 플러그인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- id 'org.springframework.boot' : Spring Boot의 Gradle 플러그인. Spring Boot 프로젝트의 생성, 실행 등을 지원&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- id 'io.spring.dependency-management' : Spring 프로젝트의 의존성 버전을 자동으로 관리해주는 플러그인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;저장소 설정&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1695988174535&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;repositories {
   mavenCentral()
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- mavenCentral() : 중앙 Maven 저장소를 사용하여 의존성을 획득&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;프로젝트 메타데이터 설정&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1695988383027&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;group = 'com.ejyooshop'
version = '0.0.1-SNAPSHOT'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Java 버전 설정&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트가 Java 17 버전과 호환된다는 설정&lt;/p&gt;
&lt;pre id=&quot;code_1695988405674&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;java {
   sourceCompatibility = '17'
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;의존성 추가1&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 주요 Spring Boot 스타터 관련 의존성, Lombok, H2 데이터 베이스, MySQL 커넥터 포함&lt;/p&gt;
&lt;pre id=&quot;code_1695988516972&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.h2database:h2'
    runtimeOnly 'com.mysql:mysql-connector-j'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;의존성 추가2&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;QueryDSL 을 사용하기 위한 의존성 설정 부분&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;QueryDSL : JPA 엔터티를 기반으로 타입 세이프한 쿼리를 작성할 수 있게 하는 프레임워크&lt;/p&gt;
&lt;pre id=&quot;code_1695988633508&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;dependencies {
    // QueryDSL Implementation
    implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
    annotationProcessor &quot;com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta&quot;
    annotationProcessor &quot;jakarta.annotation:jakarta.annotation-api&quot;
    annotationProcessor &quot;jakarta.persistence:jakarta.persistence-api&quot;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;com.querydsl:querydsl-jpa:5.0.0:jakarta&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;― QueryDSL 의 JPA 모듈을 위한 의존성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;― Jakarta 는 Jakarta Persistence (JPA 2.2 이후의 버전)를 의미함. 이는 Java EE의 JPA 스펙과의 차이점을 나타내기 위함.&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;com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;― APT (Annotaion Processing Tool) 모듈을 위한 의존성.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;― APT 는 Annotaion을 기반으로 코드를 생성하기 위한 도구임.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;― QueryDSL은 APT를 사용하여 JPA 엔터티에 기반한 Q-클래스를 생성함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;― Q-클래스는 QueryDSL 쿼리를 작성할 때 사용되는 타입 세이프한 클래스임.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;― Gradle의 dependencyManagement 플러그인에서 가져온 QueryDSL 버전을 나타냄. 실제로 querydsl.version은 특정 QueryDSL 버전 문자열로 치환될 예정임.&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;jakarta.annotation:jakarta.annotaion-api&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;― jakarta Annotaions API 에 대한 의존성임.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;― Java의 기본 Annotaion들 (ex: @Override, @Deprecated 등) 이외의 추가적인 Annotaion을 제공&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;jakarta.persistence:jakarta.persistence-api&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;― Jakarta Persistence (JPA) API에 대한 의존성임.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;― QueryDSL은 이 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;annotationProcessor&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;― 빌드 시간에 코드 생성 / 코드 검사 작업 수행하기 위해 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;― 위의 코드에서는 QueryDSL의 Q-클래스를 생성하기 위해 해당 의존성들이 Annotaion Processor로 지정됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;애노테이션&amp;nbsp;프로세서&amp;nbsp;구성&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1695989656355&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;― Gradle에서 configurations 블록은 프로젝트의 의존성 그룹 (의존성 설정) 을 정의하고 구성하는데 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- compileOnly&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;― 프로젝트의 컴파일 시간에만 필요한 의존성을 나타냄 (런타임에서는 미포함)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;― ex) Lombok : 소스코드 컴파일 시 Annotaion을 기반으로 코드 생성 / 런타임에는 이러한 추가 코드가 필요하지 않음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- extendsFrom&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;― compileOnly가 다른 의존성인 annotaionProcessor로 부터 의존성을 상속받도록 함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;― annotaionProcessor 는 APT 를 위한 의존성을 나타냄. 이 설정을 통해 QueryDSL, Lomebok 과 같은 Annotaion Processor의 의존성을 정의할 수 있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;― compileOnly 의존성 그룹에 annotaionProcessor의 의존성을 포함시키는 코드.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;― Annotaion Processor를 컴파일 시간에만 사용할 수 있게 됨, 이 의존성들은 최종 생성된 아티팩트(JAR 파일)에는 포함하지 않음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;테스트 설정&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JUnit 5를 사용하도록 Gradle에 지시&lt;/p&gt;
&lt;pre id=&quot;code_1695990037093&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; test {
   useJUnitPlatform()
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;―&lt;span&gt; Gradle 빌드 스크립트 내에서 test 작업의 행동을 구성 / Gradle의 기본적인 작업&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;―&lt;span&gt;&amp;nbsp;프로젝트 내의 테스트 코드를 실행하는데 사용&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;―&lt;span&gt; Java 프로젝트에서 JUnit 또는 TestNG와 같은 테스트 프레임워크를 사용하여 테스트 코드를 작성하고 실행&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;―&lt;span&gt; useJUnitPlatform() : 'test' 작업이 JUnit5을 사용하여 테스트를 실행하도록 구성. (JUnit Jupiter 테스트 엔진 사용)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;QueryDSL 빌드 옵션&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;QueryDSL 코드 생성에 필요한 Gradle 설정&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;QueryDSL 은 JPA 엔터티를 기반으로 type safe한 쿼리를 작성할 수 있도록 도움을 주는 프레임워크&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래의 코드는&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Q-클래스를 생성하기위한 디렉터리를 정의하고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 디렉터리를 Java 소스 디렉터리로 추가하며&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Q-클래스를 생성할 위치를 설정하고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빌드 출력을 정리할 때 생성된 Q-클래스를 삭제하도록 구성됨.&lt;/p&gt;
&lt;pre id=&quot;code_1695990222631&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def querydslDir = &quot;src/main/generated&quot;
sourceSets {
   main.java.srcDirs += [ querydslDir ]
}
tasks.withType(JavaCompile) {
   options.getGeneratedSourceOutputDirectory().set(file(querydslDir))
}
clean.doLast {
   file(querydslDir).deleteDir()
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- def querydslDir = &quot;src/main/generated&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;querydslDir 변수는 QueryDSL에 의해 생성된 코드(Q-클래스)가 저장될 디렉터리의 경로를 정의.&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;- sourceSets 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sourceSets은 프로젝트의 소스코드와 리소스를 어디서 가져올지 구성함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;main 소스 세트의 java 소스 디렉터리에 querydslDir을 추가하도록 설정함. Gradle은 이 디렉터리에 있는 QueryDSL로 생성된 Q-클래스를 일반 Java클래스처럼 컴파일함.&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;- tasks.withType(JavaCompile)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 JavaCompile 유형의 작업 (Java 소스코드를 컴파일하는 작업)에 대해 코드 생성 디렉터리를 querydslDir 로 설정함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;QueryDSL 의 Annotaion Processor 가 Q-클래스를 생성할 때 해당 디렉터리에 파일을 출력&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;- clean.doLast 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빌드 출력을 정리하는 기본 Gradle 작업임&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;clean 작업이 실행된 후 querydslDir 디렉터리를 삭제하도록 추가적인 작업을 정의함. (빌드를 깔끔하게 정리하기 위함)&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>BackEnd/Spring Boot</category>
      <category>build.gradle</category>
      <category>intellij</category>
      <author>ejyoovV</author>
      <guid isPermaLink="true">https://ejyoo.tistory.com/507</guid>
      <comments>https://ejyoo.tistory.com/507#entry507comment</comments>
      <pubDate>Sat, 30 Sep 2023 12:50:45 +0900</pubDate>
    </item>
    <item>
      <title>[SpringBoot][Mac][인텔리제이] Hello world 출력하기</title>
      <link>https://ejyoo.tistory.com/506</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;숨겨진 이야기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;C#을 하던 내가 스프링 부트를 해보겠다고 환경을 구성하고 있었는데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인텔리제이로 하고싶었지만, 모든 서비스가 유료로 알고있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 VSCode로 Maven 환경설정을 꾸역꾸역 하고있었다.&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;인텔리제이 커뮤니티 버전 설치&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.jetbrains.com/idea/download/?section=mac&quot;&gt;https://www.jetbrains.com/idea/download/?section=mac&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1695473457328&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 IntelliJ IDEA &amp;ndash; The Leading Java and Kotlin IDE&quot; data-og-description=&quot;Download the latest version of IntelliJ IDEA for Windows, macOS or Linux.&quot; data-og-host=&quot;www.jetbrains.com&quot; data-og-source-url=&quot;https://www.jetbrains.com/idea/download/?section=mac&quot; data-og-url=&quot;https://www.jetbrains.com/idea/download/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/brdEO8/hyTY1D8vqI/h8RTjoh5Z0TsBk0q9nXJzk/img.png?width=1280&amp;amp;height=800&amp;amp;face=0_0_1280_800&quot;&gt;&lt;a href=&quot;https://www.jetbrains.com/idea/download/?section=mac&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.jetbrains.com/idea/download/?section=mac&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/brdEO8/hyTY1D8vqI/h8RTjoh5Z0TsBk0q9nXJzk/img.png?width=1280&amp;amp;height=800&amp;amp;face=0_0_1280_800');&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 IntelliJ IDEA &amp;ndash; The Leading Java and Kotlin IDE&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Download the latest version of IntelliJ IDEA for Windows, macOS or Linux.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.jetbrains.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;스프링 프로젝트 데모 생성하기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://start.spring.io/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://start.spring.io/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2510&quot; data-origin-height=&quot;1276&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLXXmQ/btsvbDu37sE/qDw6g8n1S8y8R4uzjaJyd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLXXmQ/btsvbDu37sE/qDw6g8n1S8y8R4uzjaJyd1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLXXmQ/btsvbDu37sE/qDw6g8n1S8y8R4uzjaJyd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLXXmQ%2FbtsvbDu37sE%2FqDw6g8n1S8y8R4uzjaJyd1%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;2510&quot; height=&quot;1276&quot; data-origin-width=&quot;2510&quot; data-origin-height=&quot;1276&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Generate 버튼 클릭&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;프로젝트 코드 작성&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;압축풀고 인텔리제이에서 프로젝트 임포트 한 뒤&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HelloWorld를 출력하기 위한 코드를 작성&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;2044&quot; data-origin-height=&quot;1052&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQLz0j/btsvvFxgISJ/O2JZnHGSxhVoQ4v1mABkqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQLz0j/btsvvFxgISJ/O2JZnHGSxhVoQ4v1mABkqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQLz0j/btsvvFxgISJ/O2JZnHGSxhVoQ4v1mABkqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQLz0j%2FbtsvvFxgISJ%2FO2JZnHGSxhVoQ4v1mABkqk%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;2044&quot; height=&quot;1052&quot; data-origin-width=&quot;2044&quot; data-origin-height=&quot;1052&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;포트 설정&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1682&quot; data-origin-height=&quot;832&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIz9he/btsvvCAx8iI/nIzFHZOG5pKJT69rUiPwpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIz9he/btsvvCAx8iI/nIzFHZOG5pKJT69rUiPwpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIz9he/btsvvCAx8iI/nIzFHZOG5pKJT69rUiPwpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIz9he%2FbtsvvCAx8iI%2FnIzFHZOG5pKJT69rUiPwpk%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;1682&quot; height=&quot;832&quot; data-origin-width=&quot;1682&quot; data-origin-height=&quot;832&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;실행 확인&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2294&quot; data-origin-height=&quot;282&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DxyLo/btsvkTjfGM0/aQh8ADTlDJ62uBECBK44GK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DxyLo/btsvkTjfGM0/aQh8ADTlDJ62uBECBK44GK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DxyLo/btsvkTjfGM0/aQh8ADTlDJ62uBECBK44GK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDxyLo%2FbtsvkTjfGM0%2FaQh8ADTlDJ62uBECBK44GK%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;2294&quot; height=&quot;282&quot; data-origin-width=&quot;2294&quot; data-origin-height=&quot;282&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;HelloWorld 출력은 어딜가나 언어의 시작을 알리는 첫 코드인 것 같다.&amp;nbsp;&lt;/p&gt;</description>
      <category>BackEnd/Spring Boot</category>
      <category>HelloWorld</category>
      <category>SpringBoot</category>
      <author>ejyoovV</author>
      <guid isPermaLink="true">https://ejyoo.tistory.com/506</guid>
      <comments>https://ejyoo.tistory.com/506#entry506comment</comments>
      <pubDate>Sat, 23 Sep 2023 21:56:27 +0900</pubDate>
    </item>
    <item>
      <title>[Mac][인텔리제이] 단축키</title>
      <link>https://ejyoo.tistory.com/505</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;Option + Command + L&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;Command + 1&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;Ctrl + D&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;Option + Enter&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>BackEnd/Spring Boot</category>
      <author>ejyoovV</author>
      <guid isPermaLink="true">https://ejyoo.tistory.com/505</guid>
      <comments>https://ejyoo.tistory.com/505#entry505comment</comments>
      <pubDate>Sat, 23 Sep 2023 21:48:49 +0900</pubDate>
    </item>
  </channel>
</rss>