<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>스택큐힙리스트</title>
    <link>https://stack-queue.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Mon, 13 Apr 2026 07:23:13 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>스택큐힙리스트</managingEditor>
    <image>
      <title>스택큐힙리스트</title>
      <url>https://tistory1.daumcdn.net/tistory/6148549/attach/c4dfea7db8c34af88a689de67b225847</url>
      <link>https://stack-queue.tistory.com</link>
    </image>
    <item>
      <title>Terms &amp;amp; Conditions</title>
      <link>https://stack-queue.tistory.com/1982</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Terms &amp;amp; Conditions&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;These terms and conditions apply to the vocaduck app (hereby referred to as &quot;Application&quot;) for mobile devices that was created by INIM (hereby referred to as &quot;Service Provider&quot;) as an Ad Supported service.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Upon downloading or utilizing the Application, you are automatically agreeing to the following terms. It is strongly advised that you thoroughly read and understand these terms prior to using the Application.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Unauthorized copying, modification of the Application, any part of the Application, or our trademarks is strictly prohibited. Any attempts to extract the source code of the Application, translate the Application into other languages, or create derivative versions are not permitted. All trademarks, copyrights, database rights, and other intellectual property rights related to the Application remain the property of the Service Provider.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The Service Provider is dedicated to ensuring that the Application is as beneficial and efficient as possible. As such, they reserve the right to modify the Application or charge for their services at any time and for any reason. The Service Provider assures you that any charges for the Application or its services will be clearly communicated to you.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The Application stores and processes personal data that you have provided to the Service Provider in order to provide the Service. It is your responsibility to maintain the security of your phone and access to the Application. The Service Provider strongly advise against jailbreaking or rooting your phone, which involves removing software restrictions and limitations imposed by the official operating system of your device. Such actions could expose your phone to malware, viruses, malicious programs, compromise your phone's security features, and may result in the Application not functioning correctly or at all.&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Please note that the Application utilizes third-party services that have their own Terms and Conditions. Below are the links to the Terms and Conditions of the third-party service providers used by the Application:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #2942ff;&quot; href=&quot;https://policies.google.com/terms&quot;&gt;Google Play Services&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #2942ff;&quot; href=&quot;https://developers.google.com/admob/terms&quot;&gt;AdMob&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #2942ff;&quot; href=&quot;https://www.google.com/analytics/terms/&quot;&gt;Google Analytics for Firebase&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #2942ff;&quot; href=&quot;https://firebase.google.com/terms/crashlytics&quot;&gt;Firebase Crashlytics&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Please be aware that the Service Provider does not assume responsibility for certain aspects. Some functions of the Application require an active internet connection, which can be Wi-Fi or provided by your mobile network provider. The Service Provider cannot be held responsible if the Application does not function at full capacity due to lack of access to Wi-Fi or if you have exhausted your data allowance.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;If you are using the application outside of a Wi-Fi area, please be aware that your mobile network provider's agreement terms still apply. Consequently, you may incur charges from your mobile provider for data usage during the connection to the application, or other third-party charges. By using the application, you accept responsibility for any such charges, including roaming data charges if you use the application outside of your home territory (i.e., region or country) without disabling data roaming. If you are not the bill payer for the device on which you are using the application, they assume that you have obtained permission from the bill payer.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Similarly, the Service Provider cannot always assume responsibility for your usage of the application. For instance, it is your responsibility to ensure that your device remains charged. If your device runs out of battery and you are unable to access the Service, the Service Provider cannot be held responsible.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;In terms of the Service Provider's responsibility for your use of the application, it is important to note that while they strive to ensure that it is updated and accurate at all times, they do rely on third parties to provide information to them so that they can make it available to you. The Service Provider accepts no liability for any loss, direct or indirect, that you experience as a result of relying entirely on this functionality of the application.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The Service Provider may wish to update the application at some point. The application is currently available as per the requirements for the operating system (and for any additional systems they decide to extend the availability of the application to) may change, and you will need to download the updates if you want to continue using the application. The Service Provider does not guarantee that it will always update the application so that it is relevant to you and/or compatible with the particular operating system version installed on your device. However, you agree to always accept updates to the application when offered to you. The Service Provider may also wish to cease providing the application and may terminate its use at any time without providing termination notice to you. Unless they inform you otherwise, upon any termination, (a) the rights and licenses granted to you in these terms will end; (b) you must cease using the application, and (if necessary) delete it from your device.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;Changes to These Terms and Conditions&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The Service Provider may periodically update their Terms and Conditions. Therefore, you are advised to review this page regularly for any changes. The Service Provider will notify you of any changes by posting the new Terms and Conditions on this page.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;These terms and conditions are effective as of 2025-11-28&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;Contact Us&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;If you have any questions or suggestions about the Terms and Conditions, please do not hesitate to contact the Service Provider at skymygo1bis@gmail.com.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;This Terms and Conditions page was generated by&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #2942ff;&quot; href=&quot;https://app-privacy-policy-generator.nisrulz.com/&quot;&gt;App Privacy Policy Generator&lt;/a&gt;&lt;/p&gt;</description>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1982</guid>
      <comments>https://stack-queue.tistory.com/1982#entry1982comment</comments>
      <pubDate>Fri, 28 Nov 2025 11:57:05 +0900</pubDate>
    </item>
    <item>
      <title>Privacy Policy</title>
      <link>https://stack-queue.tistory.com/1981</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Privacy Policy&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;This privacy policy applies to the vocaduck app (hereby referred to as &quot;Application&quot;) for mobile devices that was created by INIM (hereby referred to as &quot;Service Provider&quot;) as an Ad Supported service. This service is intended for use &quot;AS IS&quot;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;Information Collection and Use&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The Application collects information when you download and use it. This information may include information such as&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Your device's Internet Protocol address (e.g. IP address)&lt;/li&gt;
&lt;li&gt;The pages of the Application that you visit, the time and date of your visit, the time spent on those pages&lt;/li&gt;
&lt;li&gt;The time spent on the Application&lt;/li&gt;
&lt;li&gt;The operating system you use on your mobile device&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The Application does not gather precise information about the location of your mobile device.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The Service Provider may use the information you provided to contact you from time to time to provide you with important information, required notices and marketing promotions.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;For a better experience, while using the Application, the Service Provider may require you to provide us with certain personally identifiable information. The information that the Service Provider request will be retained by them and used as described in this privacy policy.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;Third Party Access&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Only aggregated, anonymized data is periodically transmitted to external services to aid the Service Provider in improving the Application and their service. The Service Provider may share your information with third parties in the ways that are described in this privacy statement.&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot;&gt;&lt;br /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Please note that the Application utilizes third-party services that have their own Privacy Policy about handling data. Below are the links to the Privacy Policy of the third-party service providers used by the Application:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #2942ff;&quot; href=&quot;https://www.google.com/policies/privacy/&quot;&gt;Google Play Services&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #2942ff;&quot; href=&quot;https://support.google.com/admob/answer/6128543?hl=en&quot;&gt;AdMob&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #2942ff;&quot; href=&quot;https://firebase.google.com/support/privacy&quot;&gt;Google Analytics for Firebase&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #2942ff;&quot; href=&quot;https://firebase.google.com/support/privacy/&quot;&gt;Firebase Crashlytics&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The Service Provider may disclose User Provided and Automatically Collected Information:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;as required by law, such as to comply with a subpoena, or similar legal process;&lt;/li&gt;
&lt;li&gt;when they believe in good faith that disclosure is necessary to protect their rights, protect your safety or the safety of others, investigate fraud, or respond to a government request;&lt;/li&gt;
&lt;li&gt;with their trusted services providers who work on their behalf, do not have an independent use of the information we disclose to them, and have agreed to adhere to the rules set forth in this privacy statement.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;Opt-Out Rights&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;You can stop all collection of information by the Application easily by uninstalling it. You may use the standard uninstall processes as may be available as part of your mobile device or via the mobile application marketplace or network.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;Data Retention Policy&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The Service Provider will retain User Provided data for as long as you use the Application and for a reasonable time thereafter. If you'd like them to delete User Provided Data that you have provided via the Application, please contact them at skymygo1bis@gmail.com and they will respond in a reasonable time.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;Children&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The Service Provider does not use the Application to knowingly solicit data from or market to children under the age of 13.&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot;&gt;&lt;br /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The Application does not address anyone under the age of 13. The Service Provider does not knowingly collect personally identifiable information from children under 13 years of age. In the case the Service Provider discover that a child under 13 has provided personal information, the Service Provider will immediately delete this from their servers. If you are a parent or guardian and you are aware that your child has provided us with personal information, please contact the Service Provider (skymygo1bis@gmail.com) so that they will be able to take the necessary actions.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;Security&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The Service Provider is concerned about safeguarding the confidentiality of your information. The Service Provider provides physical, electronic, and procedural safeguards to protect information the Service Provider processes and maintains.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;Changes&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;This Privacy Policy may be updated from time to time for any reason. The Service Provider will notify you of any changes to the Privacy Policy by updating this page with the new Privacy Policy. You are advised to consult this Privacy Policy regularly for any changes, as continued use is deemed approval of all changes.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;This privacy policy is effective as of 2025-11-28&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;Your Consent&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;By using the Application, you are consenting to the processing of your information as set forth in this Privacy Policy now and as amended by us.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;Contact Us&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;If you have any questions regarding privacy while using the Application, or have questions about the practices, please contact the Service Provider via email at skymygo1bis@gmail.com.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p style=&quot;background-color: #ffffff; color: #404654; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;This privacy policy page was generated by&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #2942ff;&quot; href=&quot;https://app-privacy-policy-generator.nisrulz.com/&quot;&gt;App Privacy Policy Generator&lt;/a&gt;&lt;/p&gt;</description>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1981</guid>
      <comments>https://stack-queue.tistory.com/1981#entry1981comment</comments>
      <pubDate>Fri, 28 Nov 2025 11:56:41 +0900</pubDate>
    </item>
    <item>
      <title>분산락 3종 비교 &amp;ndash; Redisson, ShedLock, DB 락의 장단점</title>
      <link>https://stack-queue.tistory.com/1980</link>
      <description>&lt;p data-end=&quot;205&quot; data-start=&quot;45&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;동시에 한 번만 실행&amp;rdquo;을 보장하는 방법은 하나가 아닙니다. 실무에서 가장 많이 쓰는 세 가지&amp;mdash;&lt;b&gt;Redisson(레디스 기반 락), ShedLock(스케줄 단일 실행), DB 락(Advisory/행 수준 락)&lt;/b&gt;&amp;mdash;을 아키텍처 관점과 장애 시나리오까지 묶어 고급 비교로 정리했습니다.&lt;/p&gt;
&lt;hr data-end=&quot;210&quot; data-start=&quot;207&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;224&quot; data-start=&quot;212&quot; data-ke-size=&quot;size26&quot;&gt;1) 한 줄 요약&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;685&quot; data-start=&quot;226&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;355&quot; data-start=&quot;226&quot;&gt;&lt;b&gt;Redisson&lt;/b&gt;: 초저지연&amp;middot;고QPS 임계영역 보호에 적합. &lt;b&gt;TTL/워치독&lt;/b&gt;으로 고아락 방지. 레디스 가용성/네트워크 분할 가정이 안전성의 전제.&lt;/li&gt;
&lt;li data-end=&quot;520&quot; data-start=&quot;356&quot;&gt;&lt;b&gt;ShedLock&lt;/b&gt;: &amp;ldquo;스케줄 job을 &lt;b&gt;동시에 최대 1회&lt;/b&gt;만&amp;rdquo; 실행하는 데 특화. 비즈니스 임계구간 일반 락 용도는 아님. &lt;b&gt;lockAtMostFor/lockAtLeastFor&lt;/b&gt;로 종료 보장&amp;middot;중복 억제.&lt;/li&gt;
&lt;li data-end=&quot;685&quot; data-start=&quot;521&quot;&gt;&lt;b&gt;DB 락&lt;/b&gt;: 트랜잭션 모델과 강한 일관성이 장점. &lt;b&gt;PostgreSQL Advisory/MySQL GET_LOCK&lt;/b&gt;으로 애플리케이션 레벨 조정 가능. DB 부하&amp;middot;교착, 클러스터 전역 보장 범위는 DB 특성에 좌우.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;690&quot; data-start=&quot;687&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;718&quot; data-start=&quot;692&quot; data-ke-size=&quot;size26&quot;&gt;2) 레디스 기반: Redisson 분산락&lt;/h2&gt;
&lt;h3 data-end=&quot;729&quot; data-start=&quot;720&quot; data-ke-size=&quot;size23&quot;&gt;언제 쓰나&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;800&quot; data-start=&quot;730&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;800&quot; data-start=&quot;730&quot;&gt;초당 수천~수만 요청이 &lt;b&gt;한 키(자원)&lt;/b&gt;를 두고 경쟁할 때&amp;mdash;예: 재고 차감, 선착순 쿠폰, 멱등 처리의 임계구간 보호.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;811&quot; data-start=&quot;802&quot; data-ke-size=&quot;size23&quot;&gt;설계 핵심&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1184&quot; data-start=&quot;812&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;991&quot; data-start=&quot;812&quot;&gt;Redisson RLock은 &lt;b&gt;임대시간(leaseTime)&lt;/b&gt; 만료 또는 unlock() 시 해제. &lt;b&gt;워치독(Watchdog)&lt;/b&gt;이 기본 &lt;b&gt;30초&lt;/b&gt; 간격으로 자동 연장해, 홀더가 살아있는 동안 락을 유지한다는 점이 고아락을 줄여줍니다.&lt;/li&gt;
&lt;li data-end=&quot;1184&quot; data-start=&quot;992&quot;&gt;레디스의 분산락 알고리즘(예: &lt;b&gt;Redlock&lt;/b&gt;)은 단일 노드 대비 내고장성을 높이려는 시도지만, &lt;b&gt;네트워크 분할&amp;middot;시계 드리프트&lt;/b&gt; 등 가정이 현실과 어긋날 수 있다는 비판도 존재합니다. 즉, &lt;b&gt;성능은 탁월하지만, 완전한 안전성은 워크로드&amp;middot;배포구조에 의존&lt;/b&gt;합니다. &lt;span data-state=&quot;closed&quot;&gt;&lt;span data-testid=&quot;webpage-citation-pill&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1192&quot; data-start=&quot;1186&quot; data-ke-size=&quot;size23&quot;&gt;장점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1268&quot; data-start=&quot;1193&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1232&quot; data-start=&quot;1193&quot;&gt;&lt;b&gt;대기 시간이 짧고&lt;/b&gt; Lock/Unlock 오버헤드가 낮다.&lt;/li&gt;
&lt;li data-end=&quot;1268&quot; data-start=&quot;1233&quot;&gt;JVM 친화 API, 재진입락/공정락 등 도구 세트가 풍부.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1282&quot; data-start=&quot;1270&quot; data-ke-size=&quot;size23&quot;&gt;주의점&amp;middot;안티패턴&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1581&quot; data-start=&quot;1283&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1420&quot; data-start=&quot;1283&quot;&gt;&lt;b&gt;TTL 미설정 + 긴 GC/스톰&lt;/b&gt; &amp;rarr; 워치독 연장 실패 시 조기 해제 위험. 장시간 업무는 명시적 leaseTime 또는 보수적 설계. (워치독 이슈 사례 다수)&lt;/li&gt;
&lt;li data-end=&quot;1503&quot; data-start=&quot;1421&quot;&gt;레디스 장애&amp;middot;페일오버 시 &lt;b&gt;락 상실/이중 실행&lt;/b&gt; 가능성. 중요 거래는 &lt;b&gt;멱등성 키&lt;/b&gt;와 &lt;b&gt;유니크 제약&lt;/b&gt;을 병행해 2차 방어막 마련.&lt;/li&gt;
&lt;li data-end=&quot;1581&quot; data-start=&quot;1504&quot;&gt;참고할 만한 한국어 실무 글: Redisson 적용기와 한계 논의.&lt;span data-state=&quot;closed&quot;&gt;&lt;span data-testid=&quot;webpage-citation-pill&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1586&quot; data-start=&quot;1583&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1613&quot; data-start=&quot;1588&quot; data-ke-size=&quot;size26&quot;&gt;3) 스케줄 단일 실행: ShedLock&lt;/h2&gt;
&lt;h3 data-end=&quot;1624&quot; data-start=&quot;1615&quot; data-ke-size=&quot;size23&quot;&gt;언제 쓰나&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1686&quot; data-start=&quot;1625&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1686&quot; data-start=&quot;1625&quot;&gt;다중 인스턴스에서 돌아가는 @Scheduled/배치 작업을 &amp;ldquo;&lt;b&gt;동시에 한 번만&lt;/b&gt;&amp;rdquo; 돌리고 싶을 때.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1697&quot; data-start=&quot;1688&quot; data-ke-size=&quot;size23&quot;&gt;설계 핵심&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1950&quot; data-start=&quot;1698&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1741&quot; data-start=&quot;1698&quot;&gt;&lt;b&gt;공유 저장소(DB/Redis/Mongo 등)&lt;/b&gt;에 락 상태를 기록.&lt;/li&gt;
&lt;li data-end=&quot;1887&quot; data-start=&quot;1742&quot;&gt;&lt;b&gt;lockAtMostFor&lt;/b&gt;: 노드가 죽어도 일정 시간 뒤 &lt;b&gt;자동 해제&lt;/b&gt;(세이프티넷). &lt;b&gt;lockAtLeastFor&lt;/b&gt;: 최소 실행 시간 보장(너무 자주 재실행 방지).&lt;/li&gt;
&lt;li data-end=&quot;1950&quot; data-start=&quot;1888&quot;&gt;&amp;ldquo;공유 저장소가 있어야 동작&amp;rdquo;하는 구조.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1958&quot; data-start=&quot;1952&quot; data-ke-size=&quot;size23&quot;&gt;장점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2023&quot; data-start=&quot;1959&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1996&quot; data-start=&quot;1959&quot;&gt;구현&amp;middot;운영이 단순하고, 스케줄 중복 실행을 안정적으로 차단.&lt;/li&gt;
&lt;li data-end=&quot;2023&quot; data-start=&quot;1997&quot;&gt;Quartz 클러스터 대체로 가벼운 선택지.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2037&quot; data-start=&quot;2025&quot; data-ke-size=&quot;size23&quot;&gt;주의점&amp;middot;안티패턴&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2266&quot; data-start=&quot;2038&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2114&quot; data-start=&quot;2038&quot;&gt;&lt;b&gt;HTTP 요청 임계구간 보호용 &amp;lsquo;일반 분산락&amp;rsquo; 라이브러리가 아님.&lt;/b&gt; 요청-응답 경로의 수ms~수십ms 단위 경쟁에는 부적합.&lt;/li&gt;
&lt;li data-end=&quot;2202&quot; data-start=&quot;2115&quot;&gt;lockAtMostFor는 &lt;b&gt;반드시&lt;/b&gt; 설정(노드 장애 시 영구 락 방지).&lt;span data-state=&quot;closed&quot;&gt;&lt;span data-testid=&quot;webpage-citation-pill&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;2266&quot; data-start=&quot;2203&quot;&gt;국내 도입기&amp;middot;설정 예시는 아래를 참고.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2271&quot; data-start=&quot;2268&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2304&quot; data-start=&quot;2273&quot; data-ke-size=&quot;size26&quot;&gt;4) 데이터베이스 락: Advisory/행 수준 락&lt;/h2&gt;
&lt;h3 data-end=&quot;2315&quot; data-start=&quot;2306&quot; data-ke-size=&quot;size23&quot;&gt;언제 쓰나&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2383&quot; data-start=&quot;2316&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2383&quot; data-start=&quot;2316&quot;&gt;이미 &lt;b&gt;강한 트랜잭션 모델&lt;/b&gt;을 쓰는 서비스에서, DB를 중심으로 &lt;b&gt;일관성과 순서를 엄격히&lt;/b&gt; 가져가고 싶을 때.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2399&quot; data-start=&quot;2385&quot; data-ke-size=&quot;size23&quot;&gt;두 가지 대표 방식&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;2779&quot; data-start=&quot;2400&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;2466&quot; data-start=&quot;2400&quot;&gt;&lt;b&gt;행 수준(PESSIMISTIC/FOR UPDATE)&lt;/b&gt;: 데이터 행을 잠가 Lost Update 방지.&lt;/li&gt;
&lt;li data-end=&quot;2779&quot; data-start=&quot;2467&quot;&gt;&lt;b&gt;Advisory Lock&lt;/b&gt;: &lt;b&gt;애플리케이션 정의 키&lt;/b&gt;로 협력적 잠금.
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2779&quot; data-start=&quot;2519&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2633&quot; data-start=&quot;2519&quot;&gt;PostgreSQL: 트랜잭션/세션 레벨 &lt;b&gt;둘 다&lt;/b&gt; 제공. 세션 락은 롤백과 무관하게 유지될 수 있으므로 해제 정책 주의.&lt;/li&gt;
&lt;li data-end=&quot;2779&quot; data-start=&quot;2637&quot;&gt;MySQL: &lt;b&gt;GET_LOCK(name, timeout)&lt;/b&gt;으로 서버 단위 이름 기반 락. 세션 종료 시 암묵 해제. (클러스터 토폴로지에 따라 전역 보장은 달라질 수 있음) &lt;span data-state=&quot;closed&quot;&gt;&lt;span data-testid=&quot;webpage-citation-pill&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-end=&quot;2787&quot; data-start=&quot;2781&quot; data-ke-size=&quot;size23&quot;&gt;장점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2880&quot; data-start=&quot;2788&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2837&quot; data-start=&quot;2788&quot;&gt;트랜잭션 경계 내 &lt;b&gt;완결성&amp;middot;가시성&lt;/b&gt;이 좋고, DB 감사/메트릭으로 관찰 가능.&lt;/li&gt;
&lt;li data-end=&quot;2880&quot; data-start=&quot;2838&quot;&gt;외부 미들웨어 의존 없이 &lt;b&gt;단일 장애면(SPOF)&lt;/b&gt;를 줄일 수 있음.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2894&quot; data-start=&quot;2882&quot; data-ke-size=&quot;size23&quot;&gt;주의점&amp;middot;안티패턴&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3233&quot; data-start=&quot;2895&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2940&quot; data-start=&quot;2895&quot;&gt;&lt;b&gt;DB 커넥션이 곧 락 리소스&lt;/b&gt;. 락 경합이 늘면 풀 고갈&amp;middot;교착 위험.&lt;/li&gt;
&lt;li data-end=&quot;3036&quot; data-start=&quot;2941&quot;&gt;세션 레벨 Advisory는 &lt;b&gt;롤백과 분리&lt;/b&gt;될 수 있어 &lt;b&gt;정확한 해제&lt;/b&gt; 코딩이 중요.&lt;span data-state=&quot;closed&quot;&gt;&lt;span data-testid=&quot;webpage-citation-pill&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;3157&quot; data-start=&quot;3037&quot;&gt;MySQL GET_LOCK은 배포 구조에 따라 &lt;b&gt;노드 간 전역성 한계&lt;/b&gt;가 있음&amp;mdash;클러스터 전역 보장을 전제로 설계하면 오작동 위험. &lt;span data-state=&quot;closed&quot;&gt;&lt;span data-testid=&quot;webpage-citation-pill&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;3233&quot; data-start=&quot;3158&quot;&gt;한국어 실무 정리: Advisory/락 동작 이해 글 다수. &lt;span data-state=&quot;closed&quot;&gt;&lt;span data-testid=&quot;webpage-citation-pill&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;3238&quot; data-start=&quot;3235&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;3263&quot; data-start=&quot;3240&quot; data-ke-size=&quot;size26&quot;&gt;5) 선택 가이드 (실무 체크리스트)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3611&quot; data-start=&quot;3265&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;3398&quot; data-start=&quot;3265&quot;&gt;&lt;b&gt;HTTP 임계구간, 초저지연&amp;middot;고QPS&lt;/b&gt;: &lt;b&gt;Redisson&lt;/b&gt; 우선. 단, &lt;b&gt;멱등성 키 + DB 유니크 제약&lt;/b&gt;을 보조로 깔아 재시도&amp;middot;중복에 안전하게. &lt;span data-state=&quot;closed&quot;&gt;&lt;span data-testid=&quot;webpage-citation-pill&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;3498&quot; data-start=&quot;3399&quot;&gt;&lt;b&gt;스케줄&amp;middot;배치 단일 실행&lt;/b&gt;: &lt;b&gt;ShedLock&lt;/b&gt; 정답. lockAtMostFor는 필수.&lt;span data-state=&quot;closed&quot;&gt;&lt;span data-testid=&quot;webpage-citation-pill&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;3611&quot; data-start=&quot;3499&quot;&gt;&lt;b&gt;DB 중심 강한 일관성/순서 보장&lt;/b&gt;: &lt;b&gt;DB 락&lt;/b&gt;. 트랜잭션 시간 최소화&amp;middot;인덱스/쿼리 설계로 교착 리스크를 낮출 것.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-end=&quot;3750&quot; data-start=&quot;3613&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;3750&quot; data-start=&quot;3615&quot; data-ke-size=&quot;size16&quot;&gt;보너스 팁: 어떤 락이든 &lt;b&gt;&amp;ldquo;락만으로 안전하지 않다&amp;rdquo;&lt;/b&gt;는 사실을 기억하세요. &lt;b&gt;멱등성(Idempotency)&lt;/b&gt;, &lt;b&gt;재시도 정책&lt;/b&gt;, &lt;b&gt;타임아웃&lt;/b&gt;, &lt;b&gt;모니터링(락 보유 시간 관측)&lt;/b&gt;을 함께 설계해야 진짜 실전 내구성이 나옵니다.&lt;/p&gt;
&lt;/blockquote&gt;</description>
      <category>개발</category>
      <category>AdvisoryLock</category>
      <category>MySQL</category>
      <category>PostgreSQL</category>
      <category>Redisson</category>
      <category>ShedLock</category>
      <category>springboot</category>
      <category>동시성제어</category>
      <category>레디스</category>
      <category>분산락</category>
      <category>스케줄러</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1980</guid>
      <comments>https://stack-queue.tistory.com/1980#entry1980comment</comments>
      <pubDate>Sat, 16 Aug 2025 23:02:42 +0900</pubDate>
    </item>
    <item>
      <title>MVVM 패턴, 뷰모델로 화면 로직을 &amp;lsquo;깨끗하게&amp;rsquo; 분리하는 법</title>
      <link>https://stack-queue.tistory.com/1979</link>
      <description>&lt;p data-end=&quot;304&quot; data-start=&quot;38&quot; data-ke-size=&quot;size16&quot;&gt;MVVM(Model&amp;ndash;View&amp;ndash;ViewModel)은 화면(UI) 코드에서 상태&amp;middot;로직을 떼어내 &lt;b&gt;ViewModel&lt;/b&gt;에 모으는 아키텍처예요. 핵심은 &lt;b&gt;상태 홀더(state holder)&lt;/b&gt;인 ViewModel이 화면 수명주기와 느슨하게 연결되어, 회전/재생성 같은 상황에도 상태를 안전하게 유지하고 테스트가 쉬워진다는 점입니다. 안드로이드&amp;middot;iOS&amp;middot;웹 어디서든 통하는 사고방식이고, 국내 실무 사례도 많습니다&lt;/p&gt;
&lt;hr data-end=&quot;309&quot; data-start=&quot;306&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;325&quot; data-start=&quot;311&quot; data-ke-size=&quot;size26&quot;&gt;MVVM 한 줄 정의&lt;/h2&gt;
&lt;p data-end=&quot;559&quot; data-start=&quot;326&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;View는 그리기만, ViewModel은 상태와 화면 로직을 관리, Model은 도메인/데이터를 담당.&lt;/b&gt;&lt;br /&gt;View는 ViewModel을 &amp;lsquo;구독&amp;rsquo;해 화면을 갱신하고, 사용자 입력은 View&amp;rarr;ViewModel로 전달됩니다. 안드로이드에선 ViewModel이 구성 변경에도 상태를 보존해 &lt;b&gt;데이터 재로딩을 줄이고&lt;/b&gt; UI 안정성을 높입니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr data-end=&quot;564&quot; data-start=&quot;561&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;585&quot; data-start=&quot;566&quot; data-ke-size=&quot;size26&quot;&gt;왜 MVVM이 요즘도 사랑받나&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;958&quot; data-start=&quot;586&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;656&quot; data-start=&quot;586&quot;&gt;&lt;b&gt;상태 관리의 중심이 분명&lt;/b&gt;: &amp;ldquo;어떤 값을, 왜, 언제 갱신하나?&amp;rdquo;가 ViewModel에 모여 디버깅이 쉬워집니다.&lt;/li&gt;
&lt;li data-end=&quot;733&quot; data-start=&quot;657&quot;&gt;&lt;b&gt;테스트 친화적&lt;/b&gt;: UI 프레임워크 없이도 ViewModel 단위테스트로 포맷&amp;middot;검증&amp;middot;로딩 상태 등을 빠르게 검증할 수 있어요.&lt;/li&gt;
&lt;li data-end=&quot;858&quot; data-start=&quot;734&quot;&gt;&lt;b&gt;수명주기 안전&lt;/b&gt;: LiveData/Flow 같은 관찰 가능 상태를 쓰면 액티비티/프래그먼트 생명주기를 존중하며 안전하게 업데이트됩니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;958&quot; data-start=&quot;859&quot;&gt;&lt;b&gt;실무 검증&lt;/b&gt;: 카카오페이 등 국내 팀들이 MVVM 적용&amp;middot;전환 사례를 공개하고 있어 참고하기 좋습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;963&quot; data-start=&quot;960&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;988&quot; data-start=&quot;965&quot; data-ke-size=&quot;size26&quot;&gt;안드로이드에서의 MVVM 빠른 가이드&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1512&quot; data-start=&quot;989&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1154&quot; data-start=&quot;989&quot;&gt;&lt;b&gt;ViewModel = 상태 홀더&lt;/b&gt;&lt;br /&gt;화면에 필요한 데이터/로딩&amp;middot;에러 상태를 보유하고, 비즈니스 유스케이스를 호출해 결과를 가공합니다. ViewModel은 &lt;b&gt;Context 직접 참조 금지&lt;/b&gt;(메모리 릭 위험).&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1321&quot; data-start=&quot;1155&quot;&gt;&lt;b&gt;관찰 가능한 상태&lt;/b&gt;&lt;br /&gt;기존 LiveData부터 코루틴 Flow까지 선택지 다양. 비동기 스트림에 강한 Flow, 수명주기와의 궁합이 좋은 LiveData&amp;mdash;둘 다 공식 가이드&amp;middot;코드랩이 잘 정리돼 있어요.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1512&quot; data-start=&quot;1322&quot;&gt;&lt;b&gt;데이터 바인딩/선언형 UI&lt;/b&gt;&lt;br /&gt;Data Binding/Compose(또는 iOS의 RxSwift/Combine)로 View는 &lt;b&gt;상태를 선언&lt;/b&gt;하고, 실제 변화는 ViewModel이 주도합니다. 우아한형제들 iOS 사례도 MVVM+리액티브 조합을 소개합니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1517&quot; data-start=&quot;1514&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1535&quot; data-start=&quot;1519&quot; data-ke-size=&quot;size26&quot;&gt;자주 하는 실수와 예방책&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1914&quot; data-start=&quot;1536&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1642&quot; data-start=&quot;1536&quot;&gt;&lt;b&gt;Massive ViewModel&lt;/b&gt;: 네트워크&amp;middot;캐시&amp;middot;매핑을 몽땅 넣으면 또 비대해져요. 유스케이스(서비스)로 분리하고, ViewModel은 &lt;b&gt;오케스트레이션과 상태만&lt;/b&gt; 책임지게.&lt;/li&gt;
&lt;li data-end=&quot;1800&quot; data-start=&quot;1643&quot;&gt;&lt;b&gt;양방향 바인딩 남용&lt;/b&gt;: 편하지만 흐름을 추적하기 어렵습니다. &lt;b&gt;단방향 데이터 흐름(UDF)&lt;/b&gt; 을 기본으로 두고 꼭 필요한 곳에만 쓸 것. (실무 팁과 DTO 분리는 최근 국내 글에서도 강조됩니다.)&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1914&quot; data-start=&quot;1801&quot;&gt;&lt;b&gt;수명주기 무시&lt;/b&gt;: View에서 LiveData/Flow 수집 시 생명주기를 지키고, ViewModel에 UI 객체 넣지 않기.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1919&quot; data-start=&quot;1916&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1941&quot; data-start=&quot;1921&quot; data-ke-size=&quot;size26&quot;&gt;서버 개발자를 위한 짧은 브릿지&lt;/h2&gt;
&lt;p data-end=&quot;2123&quot; data-start=&quot;1942&quot; data-ke-size=&quot;size16&quot;&gt;MVP에서 Presenter가 &lt;b&gt;응답 DTO&lt;/b&gt;를 만들듯, MVVM의 ViewModel은 &lt;b&gt;UI 친화 상태&lt;/b&gt;를 만든다는 점이 닮았습니다. 서버에선 컨트롤러 밖에서 DTO/뷰모델을 조립해 테스트하듯, 클라이언트에선 ViewModel을 순수하게 테스트하면 됩니다. (MVVM은 여전히 &lt;b&gt;UI 아키텍처&lt;/b&gt;라는 점만 기억!)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-end=&quot;3190&quot; data-start=&quot;3187&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;3198&quot; data-start=&quot;3192&quot; data-ke-size=&quot;size26&quot;&gt;마무리&lt;/h2&gt;
&lt;p data-end=&quot;3348&quot; data-start=&quot;3199&quot; data-ke-size=&quot;size16&quot;&gt;MVVM의 가치는 &amp;ldquo;&lt;b&gt;상태와 화면 로직을 View에서 떼어내 가독성&amp;middot;테스트성&amp;middot;유지보수성을 모두 가져간다&lt;/b&gt;&amp;rdquo;는 데 있어요. 팀의 규모가 커질수록 &lt;b&gt;단방향 흐름 + 얇은 View + 유스케이스 분리&lt;/b&gt;를 기본으로 잡으면, 기능 추가와 리팩터링 속도가 확 달라집니다.&lt;/p&gt;</description>
      <category>개발</category>
      <category>DataBinding</category>
      <category>Jetpack</category>
      <category>KotlinFlow</category>
      <category>livedata</category>
      <category>mvvm</category>
      <category>UDF</category>
      <category>뷰모델</category>
      <category>안드로이드아키텍처</category>
      <category>클린아키텍처</category>
      <category>테스트코드</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1979</guid>
      <comments>https://stack-queue.tistory.com/1979#entry1979comment</comments>
      <pubDate>Mon, 11 Aug 2025 12:43:28 +0900</pubDate>
    </item>
    <item>
      <title>이번주 원&amp;middot;달러 환율 전망 (2025.08.11&amp;ndash;08.15)</title>
      <link>https://stack-queue.tistory.com/1978</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;CPI 이벤트 주, 1,380~1,400 박스권에서 방향성 모색. 엔저&amp;middot;중국지표&amp;middot;연준 기대가 동시에 당깁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;187&quot; data-start=&quot;176&quot; data-ke-size=&quot;size26&quot;&gt;지금 어디 있나&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;438&quot; data-start=&quot;188&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;296&quot; data-start=&quot;188&quot;&gt;&lt;b&gt;8월 11일(월) 오전 기준&lt;/b&gt; 원/달러는 &lt;b&gt;1,388원대&lt;/b&gt;에서 시작했습니다(Reuters 실시간 호가 기준).&lt;/li&gt;
&lt;li data-end=&quot;438&quot; data-start=&quot;297&quot;&gt;&lt;b&gt;지난주 범위:&lt;/b&gt; 고점 &lt;b&gt;1,391.27원(8/5)&lt;/b&gt;, 저점 &lt;b&gt;1,378.92원(8/7)&lt;/b&gt;, 금요일 종가 &lt;b&gt;1,384.97원&lt;/b&gt;으로 마감&amp;mdash;전형적인 박스권 흐름이었습니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-end=&quot;462&quot; data-start=&quot;440&quot; data-ke-size=&quot;size26&quot;&gt;이번주 체크포인트 (이벤트 드리븐)&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1109&quot; data-start=&quot;463&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;646&quot; data-start=&quot;463&quot;&gt;&lt;b&gt;미국 7월 CPI(소비자물가)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;646&quot; data-start=&quot;492&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;646&quot; data-start=&quot;492&quot;&gt;&lt;b&gt;현지 8/12(화) 8:30am ET &amp;rarr; 한국 8/12(화) 21:30 발표.&lt;/b&gt; 시장 컨센서스는 &lt;b&gt;전년비 2.8%&lt;/b&gt; 근처. 수치가 높게 나오면 달러 강세(원화 약세) 압력이 생길 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;817&quot; data-start=&quot;647&quot;&gt;&lt;b&gt;미국 PPI(생산자물가) &amp;amp; 소비심리&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;817&quot; data-start=&quot;680&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;817&quot; data-start=&quot;680&quot;&gt;CPI 다음 날/같은 주에 이어지는 물가&amp;middot;심리지표가 &lt;b&gt;9월 연준 결정&lt;/b&gt; 기대를 재조정할 변수. 최근 &amp;ldquo;약한 고용 vs. 관세발 물가&amp;rdquo;의 줄다리기가 핵심 내러티브입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;991&quot; data-start=&quot;818&quot;&gt;&lt;b&gt;한국 사이드(보유재료/정책)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;991&quot; data-start=&quot;846&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;991&quot; data-start=&quot;846&quot;&gt;&lt;b&gt;BOK(한국은행) 8월 회의는 8/27~28 예정&lt;/b&gt;, 7월에는 동결(2.50%)을 유지했습니다. 금리 갭이 큰 변화가 없으면 &lt;b&gt;대외 변수(달러&amp;middot;중국&amp;middot;엔)&lt;/b&gt; 민감도가 더 큽니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1109&quot; data-start=&quot;992&quot;&gt;&lt;b&gt;중국&amp;middot;글로벌 리스크&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1109&quot; data-start=&quot;1015&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1109&quot; data-start=&quot;1015&quot;&gt;이번 주 &lt;b&gt;중국 활동지표&lt;/b&gt;도 포커스. 리스크오프가 세지면 원화는 단기 약세로 기울기 쉽습니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-end=&quot;1124&quot; data-start=&quot;1111&quot; data-ke-size=&quot;size26&quot;&gt;수급&amp;middot;모멘텀 브리핑&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1420&quot; data-start=&quot;1125&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1270&quot; data-start=&quot;1125&quot;&gt;&lt;b&gt;원화의 연중 체력:&lt;/b&gt; 2025년 들어 &lt;b&gt;원화가 달러 대비 약 7% 강세&lt;/b&gt;를 보이며 아시아 통화 중 상위권에 올라 있던 흐름이 수급을 받쳐왔습니다(최근 1~2주간은 숨 고르기).&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1420&quot; data-start=&quot;1271&quot;&gt;&lt;b&gt;정서(센티먼트):&lt;/b&gt; 주식&amp;middot;크레딧 위험선호가 유지되는 한 원화의 급락 가능성은 제한적. 다만 &lt;b&gt;CPI 서프라이즈&lt;/b&gt;가 나오면 &lt;b&gt;1,395~1,400&lt;/b&gt; 테스트가 빠르게 전개될 수 있습니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-end=&quot;1432&quot; data-start=&quot;1422&quot; data-ke-size=&quot;size26&quot;&gt;기술적 포인트&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1649&quot; data-start=&quot;1433&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1507&quot; data-start=&quot;1433&quot;&gt;&lt;b&gt;레인지:&lt;/b&gt; 지난주 박스 &lt;b&gt;1,379~1,391&lt;/b&gt; 재확인 &amp;rarr; 이번주도 &lt;b&gt;1,380~1,400&lt;/b&gt;을 1차 무대로 가정.&lt;/li&gt;
&lt;li data-end=&quot;1574&quot; data-start=&quot;1508&quot;&gt;&lt;b&gt;지지/저항:&lt;/b&gt; &lt;b&gt;1,382~1,384(단기 지지)&lt;/b&gt; / &lt;b&gt;1,395~1,400(심리&amp;middot;옵션 저항)&lt;/b&gt;.&lt;/li&gt;
&lt;li data-end=&quot;1649&quot; data-start=&quot;1575&quot;&gt;&lt;b&gt;트리거:&lt;/b&gt; CPI가 컨센 상회 &amp;rarr; &lt;b&gt;1,395 상단 돌파 시도&lt;/b&gt; 가능. 하회 &amp;rarr; &lt;b&gt;1,380 초반 재확인&lt;/b&gt; 시나리오.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-end=&quot;1671&quot; data-start=&quot;1651&quot; data-ke-size=&quot;size26&quot;&gt;시나리오(확률은 대략적 가이드)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1855&quot; data-start=&quot;1672&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1729&quot; data-start=&quot;1672&quot;&gt;&lt;b&gt;베이스(50%)&lt;/b&gt;: CPI 대체로 컨센 근처 &amp;rarr; &lt;b&gt;1,383~1,395 박스권&lt;/b&gt; 등락.&lt;/li&gt;
&lt;li data-end=&quot;1798&quot; data-start=&quot;1730&quot;&gt;&lt;b&gt;강달러(30%)&lt;/b&gt;: CPI 상회 또는 지정학 리스크 부각 &amp;rarr; &lt;b&gt;1,398~1,405 스파이크&lt;/b&gt; 후 되돌림.&lt;/li&gt;
&lt;li data-end=&quot;1855&quot; data-start=&quot;1799&quot;&gt;&lt;b&gt;원화강세(20%)&lt;/b&gt;: CPI 하회+중국지표 개선 &amp;rarr; &lt;b&gt;1,375~1,382 하단 탐색&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-end=&quot;1872&quot; data-start=&quot;1857&quot; data-ke-size=&quot;size26&quot;&gt;실무 팁 (기업&amp;middot;개인)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2078&quot; data-start=&quot;1873&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1942&quot; data-start=&quot;1873&quot;&gt;&lt;b&gt;수입기업:&lt;/b&gt; 이번주 결제 비중이 크다면 &lt;b&gt;1,385 전후 분할 매수&lt;/b&gt; + CPI 직전 일부 헤지 비중 확대.&lt;/li&gt;
&lt;li data-end=&quot;2013&quot; data-start=&quot;1943&quot;&gt;&lt;b&gt;수출기업:&lt;/b&gt; &lt;b&gt;1,395 근처 시 레벨성 헤지&lt;/b&gt; 고려. 이벤트 이후 되돌림 대비 &lt;b&gt;탄력적 비중조절&lt;/b&gt; 권장.&lt;/li&gt;
&lt;li data-end=&quot;2078&quot; data-start=&quot;2014&quot;&gt;&lt;b&gt;개인 투자/환전:&lt;/b&gt; 이벤트 후 첫 반응은 과민할 수 있어 &lt;b&gt;발표 12~24시간 뒤 레벨 체크&lt;/b&gt;가 유리.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2083&quot; data-start=&quot;2080&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2090&quot; data-start=&quot;2085&quot; data-ke-size=&quot;size26&quot;&gt;결론&lt;/h2&gt;
&lt;p data-end=&quot;2268&quot; data-start=&quot;2091&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이번주는 &amp;lsquo;CPI가 모든 것을 결정&amp;rsquo;하는 구도.&lt;/b&gt;&lt;br /&gt;기본값은 &lt;b&gt;1,380~1,400 박스권&lt;/b&gt;, 숫자가 센 쪽으로 치우치면 &lt;b&gt;상단 돌파/하단 이탈&lt;/b&gt;이 단기에 나올 수 있어요. 이벤트 전후로 &lt;b&gt;분할&amp;middot;분산&amp;middot;짧은 만기 헤지&lt;/b&gt;가 유효합니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>재테크</category>
      <category>CPI</category>
      <category>달러인덱스</category>
      <category>엔저</category>
      <category>연준</category>
      <category>원달러환율</category>
      <category>중국지표</category>
      <category>한국은행</category>
      <category>환율박스권</category>
      <category>환율전망</category>
      <category>환헤지</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1978</guid>
      <comments>https://stack-queue.tistory.com/1978#entry1978comment</comments>
      <pubDate>Mon, 11 Aug 2025 12:41:17 +0900</pubDate>
    </item>
    <item>
      <title>한세실업, 니어쇼어링으로 다시 달리다</title>
      <link>https://stack-queue.tistory.com/1977</link>
      <description>&lt;h2 data-end=&quot;320&quot; data-start=&quot;309&quot; data-ke-size=&quot;size26&quot;&gt;왜 지금 보나?&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;549&quot; data-start=&quot;321&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;432&quot; data-start=&quot;321&quot;&gt;&lt;b&gt;실적 이벤트 임박&lt;/b&gt;: Q2 2025 실적 발표가 8월 18일로 잡혀 있어요(프로젝션). 가이던스&amp;middot;오더 톤 확인 포인트.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;549&quot; data-start=&quot;433&quot;&gt;&lt;b&gt;ESG/브랜딩 스토리&lt;/b&gt;: 8월 6일에 &amp;lsquo;2025 지속가능경영보고서&amp;rsquo;를 단독 발간했다고 공지. 북미 바이어 대응에 도움이 되는 신호.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;554&quot; data-start=&quot;551&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;566&quot; data-start=&quot;556&quot; data-ke-size=&quot;size26&quot;&gt;비즈니스 핵심&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;833&quot; data-start=&quot;567&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;690&quot; data-start=&quot;567&quot;&gt;&lt;b&gt;무엇을 하나&lt;/b&gt;: GAP, TARGET, OLD NAVY 등 글로벌 바이어 대상 의류 OEM/ODM. 베트남&amp;middot;인도네시아 등 8개국 생산 법인.&lt;/li&gt;
&lt;li data-end=&quot;833&quot; data-start=&quot;691&quot;&gt;&lt;b&gt;요즘 하는 일&lt;/b&gt;: 원단&amp;rarr;염색&amp;rarr;봉제까지 &lt;b&gt;수직계열화&lt;/b&gt; 강화. 2024년 Texollini 인수, 베트남 C&amp;amp;T Vina 3공장 증설, &lt;b&gt;과테말라 니어쇼어링 기지&lt;/b&gt; 확대.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;838&quot; data-start=&quot;835&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;854&quot; data-start=&quot;840&quot; data-ke-size=&quot;size26&quot;&gt;숫자로 본 현재 위치&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1262&quot; data-start=&quot;855&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;964&quot; data-start=&quot;855&quot;&gt;&lt;b&gt;1Q25 스냅샷&lt;/b&gt;: 매출 +13.5% YoY, 영업이익 -46.8% YoY. 믹스&amp;middot;원가 변수로 수익성은 일시 둔화.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1113&quot; data-start=&quot;965&quot;&gt;&lt;b&gt;브로커 전망(&amp;rsquo;25E~&amp;rsquo;26E)&lt;/b&gt;: 2025년 매출 1.9조원, OPM 7.5% 추정. &lt;b&gt;수직계열화 가동 본격화로 2026년 OPM 10%&lt;/b&gt; 가능성 언급. (추정치이므로 변동 가능)&lt;/li&gt;
&lt;li data-end=&quot;1262&quot; data-start=&quot;1114&quot;&gt;&lt;b&gt;투자 규모와 재무&lt;/b&gt;: 2022~2026년 &lt;b&gt;1.7억 달러&lt;/b&gt;를 과테말라 수직계열화에 투입 계획 &amp;rarr; 단기적으로 차입 부담은 커질 수 있으나 영업현금흐름으로 통제 가능하다는 신용평가 코멘트.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1267&quot; data-start=&quot;1264&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1279&quot; data-start=&quot;1269&quot; data-ke-size=&quot;size26&quot;&gt;체크포인트 5&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1797&quot; data-start=&quot;1280&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1378&quot; data-start=&quot;1280&quot;&gt;&lt;b&gt;과테말라 라인 램프업 속도&lt;/b&gt;: 방적&amp;middot;염색&amp;middot;봉제 일원화가 실제 OPM에 얼마나 빨리 반영되는지.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1495&quot; data-start=&quot;1379&quot;&gt;&lt;b&gt;북미 수요/한미 통상 환경&lt;/b&gt;: 미국 리테일 재고/발주 사이클, 상호관세 변수. 동사는 베트남&amp;middot;인니 외 생산 다변화로 대응 중.&lt;/li&gt;
&lt;li data-end=&quot;1594&quot; data-start=&quot;1496&quot;&gt;&lt;b&gt;원가 사이드&lt;/b&gt;: 면화/합섬 원료 가격, 임금&amp;middot;에너지 비용 추이. (마진 감속기 최대 변수) &lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1698&quot; data-start=&quot;1595&quot;&gt;&lt;b&gt;환율&lt;/b&gt;: 달러 강세 시 단가/원가 전가 구조가 관건. 2분기 프리뷰에서도 수익성 민감도 이슈 언급.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1797&quot; data-start=&quot;1699&quot;&gt;&lt;b&gt;ESG&amp;middot;납기 준수&lt;/b&gt;: 글로벌 바이어의 코드 요구 강해짐&amp;mdash;ESG 공시 강화는 긍정적 심리 요인.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-end=&quot;1802&quot; data-start=&quot;1799&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1821&quot; data-start=&quot;1804&quot; data-ke-size=&quot;size26&quot;&gt;투자 관점&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2186&quot; data-start=&quot;1822&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1976&quot; data-start=&quot;1822&quot;&gt;&lt;b&gt;베이스 케이스&lt;/b&gt;: Q2 실적&amp;middot;커멘트로 하반기 오더 톤이 안정적이면, &lt;b&gt;&amp;rsquo;26 이익률 상향 스토리&lt;/b&gt;가 다시 가격에 반영될 여지. 브로커들은 수직계열화로 중장기 OPM 상향을 반복적으로 제시&lt;/li&gt;
&lt;li data-end=&quot;2111&quot; data-start=&quot;1977&quot;&gt;&lt;b&gt;리스크 시나리오&lt;/b&gt;: 달러 강세에도 매입원가&amp;middot;임금 상승 &amp;rarr; 스프레드 악화, 북미 수요 둔화 시 가동률 레버리지 축소. 프리뷰에서도 이익 훼손 가능성이 지적됨.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;2186&quot; data-start=&quot;2112&quot;&gt;&lt;b&gt;실행 팁&lt;/b&gt;: 이벤트(8/18) 전후로 가이던스&amp;middot;오더, 과테말라 CAPA 업데이트를 먼저 확인하고 &lt;b&gt;분할 접근&lt;/b&gt;이 합리적.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>재테크</category>
      <category>과테말라</category>
      <category>니어쇼어링</category>
      <category>베트남생산</category>
      <category>수직계열화</category>
      <category>실적발표</category>
      <category>의류OEM</category>
      <category>코스피</category>
      <category>패션주</category>
      <category>한세실업</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1977</guid>
      <comments>https://stack-queue.tistory.com/1977#entry1977comment</comments>
      <pubDate>Sat, 9 Aug 2025 17:52:40 +0900</pubDate>
    </item>
    <item>
      <title>MVC 패턴, 지금까지 가장 많이 쓰인 &amp;ldquo;기본기&amp;rdquo;부터 다지자</title>
      <link>https://stack-queue.tistory.com/1976</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;요즘 아키텍처 얘기만 나오면 MV*가 줄줄이 소환되죠. 그중 MVC(Model&amp;ndash;View&amp;ndash;Controller) 는 여전히 시작점이자 기준점입니다. 이번 글에서는 개념부터 현업에서 자주 겪는 오해, 프레임워크별 쓰임새까지 빠르게 정리해둘게요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;262&quot; data-start=&quot;244&quot; data-ke-size=&quot;size26&quot;&gt;1) MVC, 한 문장 정의&lt;/h2&gt;
&lt;p data-end=&quot;489&quot; data-start=&quot;263&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;UI(화면)와 도메인 로직을 분리하기 위해 앱을 Model / View / Controller 3축으로 나누는 아키텍처 패턴.&lt;/b&gt; 모델은 데이터와 규칙, 뷰는 표현, 컨트롤러는 입력 흐름과 조합을 맡습니다. 이 분리가 유지보수와 테스트에 유리한 이유는, 화면이 바뀌어도 비즈니스 규칙을 안 건드릴 수 있고 반대도 가능해지기 때문이죠.&lt;/p&gt;
&lt;h2 data-end=&quot;520&quot; data-start=&quot;491&quot; data-ke-size=&quot;size26&quot;&gt;2) 프레임워크마다 &amp;lsquo;MVC 다이어트&amp;rsquo;가 다르다&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1018&quot; data-start=&quot;521&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;706&quot; data-start=&quot;521&quot;&gt;&lt;b&gt;Spring MVC&lt;/b&gt;: HTTP 요청을 &lt;b&gt;Controller&lt;/b&gt;가 받고, 보통 비즈니스 로직은 &lt;b&gt;Service&lt;/b&gt; 레이어로 빼서 &amp;ldquo;MVC + 레이어드&amp;rdquo;로 쓰는 게 관례입니다. DispatcherServlet, 핸들러 매핑, 뷰 리졸버 흐름을 타죠.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;890&quot; data-start=&quot;707&quot;&gt;&lt;b&gt;iOS UIKit&lt;/b&gt;: UIViewController가 이름부터 &amp;lsquo;Controller&amp;rsquo;지만, 실제론 뷰 관리에 더 가깝습니다. 그래서 &lt;b&gt;Massive View Controller&lt;/b&gt; 문제가 악명 높죠&amp;mdash;역할 분리를 못하면 컨트롤러가 비대해집니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1018&quot; data-start=&quot;891&quot;&gt;&lt;b&gt;Django&lt;/b&gt;: MVC와 거의 동일하지만 용어가 &lt;b&gt;MTV(Model&amp;ndash;Template&amp;ndash;View)&lt;/b&gt; 로 바뀝니다. 이름만 달라졌지 큰 그림은 같습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-end=&quot;1045&quot; data-start=&quot;1020&quot; data-ke-size=&quot;size26&quot;&gt;3) MVC를 잘 썼을 때 체감되는 이득&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1327&quot; data-start=&quot;1046&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1089&quot; data-start=&quot;1046&quot;&gt;&lt;b&gt;화면 교체가 쉬움&lt;/b&gt;: 뷰 템플릿을 갈아끼워도 모델/로직은 그대로.&lt;/li&gt;
&lt;li data-end=&quot;1268&quot; data-start=&quot;1090&quot;&gt;&lt;b&gt;테스트 범위가 또렷함&lt;/b&gt;: 모델 규칙은 단위테스트, 컨트롤러는 요청/응답 테스트로 분리. Spring 진영은 오래전부터 &lt;b&gt;Spring-Test-MVC(MockMvc)&lt;/b&gt; 로 서블릿 컨테이너 없이 컨트롤러를 테스트하는 루틴이 자리잡았습니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1327&quot; data-start=&quot;1269&quot;&gt;&lt;b&gt;협업 분업이 명확&lt;/b&gt;: 백엔드(모델/서비스)와 프론트(뷰)가 인터페이스만 맞추면 병렬 작업 가능.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-end=&quot;1354&quot; data-start=&quot;1329&quot; data-ke-size=&quot;size26&quot;&gt;4) 현업에서 자주 터지는 오해 &amp;amp; 함정&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1825&quot; data-start=&quot;1355&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1569&quot; data-start=&quot;1355&quot;&gt;&lt;b&gt;&amp;ldquo;Controller에 로직 좀만 더&amp;hellip;&amp;rdquo;&lt;/b&gt;&lt;br /&gt;그 &amp;ldquo;좀만&amp;rdquo;이 쌓여 &lt;b&gt;Massive Controller&lt;/b&gt; 가 됩니다. 데이터 로딩, 포맷팅, 이벤트 처리, 네트워킹을 한곳에 몰아넣지 말고 &lt;b&gt;서비스/유스케이스&lt;/b&gt; 로 분리하세요. iOS든 Web이든 원인은 &amp;ldquo;역할 분리 실패&amp;rdquo;지, MVC 탓이 아닙니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1687&quot; data-start=&quot;1570&quot;&gt;&lt;b&gt;모델 누수&lt;/b&gt;&lt;br /&gt;뷰가 도메인 객체를 직접 들고 가공하기 시작하면, 나중에 모델 변경이 화면 전반을 깨뜨립니다. &lt;b&gt;ViewModel/DTO&lt;/b&gt; 로 뷰 전용 데이터 형태를 만들어 주는 게 안전합니다.&lt;/li&gt;
&lt;li data-end=&quot;1825&quot; data-start=&quot;1688&quot;&gt;&lt;b&gt;MVC만으로는 부족한 규모&lt;/b&gt;&lt;br /&gt;팀/서비스가 커지면 &lt;b&gt;도메인 모듈화&lt;/b&gt;(레이어드, 헥사고날, 클린)와 함께 써야 유지보수가 됩니다. MVC는 &amp;ldquo;화면 중심 분리&amp;rdquo;이고, &lt;b&gt;클린/헥사고날&lt;/b&gt;은 &amp;ldquo;의존성 방향과 도메인 경계&amp;rdquo;를 다룹니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-end=&quot;1858&quot; data-start=&quot;1827&quot; data-ke-size=&quot;size26&quot;&gt;5) 써보기: MVC 도입 체크리스트 (간단 버전)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2154&quot; data-start=&quot;1859&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1956&quot; data-start=&quot;1859&quot;&gt;&lt;b&gt;Controller는 얇게&lt;/b&gt;: 파라미터 검증 &amp;rarr; 유스케이스 호출 &amp;rarr; 결과를 뷰 모델로 변환만.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1998&quot; data-start=&quot;1957&quot;&gt;&lt;b&gt;View는 &amp;lsquo;그리기&amp;rsquo;에만 집중&lt;/b&gt;: 계산/규칙/상태 전이 금지.&lt;/li&gt;
&lt;li data-end=&quot;2043&quot; data-start=&quot;1999&quot;&gt;&lt;b&gt;Model은 UI 몰라야 함&lt;/b&gt;: 화면 프레임워크 import 금지.&lt;/li&gt;
&lt;li data-end=&quot;2154&quot; data-start=&quot;2044&quot;&gt;&lt;b&gt;테스트 계획을 먼저&lt;/b&gt;: 모델/유스케이스 단위테스트, 컨트롤러는 요청/응답 단위로 MockMvc(or 유사 도구) 테스트.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-end=&quot;2177&quot; data-start=&quot;2156&quot; data-ke-size=&quot;size26&quot;&gt;6) 언제 MVC가 특히 잘 맞나&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2373&quot; data-start=&quot;2178&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2228&quot; data-start=&quot;2178&quot;&gt;&lt;b&gt;서버 렌더링 웹&lt;/b&gt;: 템플릿 기반 화면이 많고, 요청-응답 사이클이 뚜렷할 때.&lt;/li&gt;
&lt;li data-end=&quot;2281&quot; data-start=&quot;2229&quot;&gt;&lt;b&gt;작은~중간 규모 앱의 출발점&lt;/b&gt;: 처음 구조를 잡고, 커지면 도메인 경계를 더한다.&lt;/li&gt;
&lt;li data-end=&quot;2373&quot; data-start=&quot;2282&quot;&gt;&lt;b&gt;학습/온보딩&lt;/b&gt;: 팀 공통 언어로 쓰기 좋고, 다른 MV*로 전환할 때 기준선이 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2521&quot; data-start=&quot;2387&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발</category>
      <category>DjangoMTV</category>
      <category>IOS개발</category>
      <category>MVC</category>
      <category>디자인패턴</category>
      <category>스프링MVC</category>
      <category>아키텍처패턴</category>
      <category>클린아키텍처</category>
      <category>헥사고날</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1976</guid>
      <comments>https://stack-queue.tistory.com/1976#entry1976comment</comments>
      <pubDate>Sat, 9 Aug 2025 13:52:15 +0900</pubDate>
    </item>
    <item>
      <title>배심원 설득 전략 &amp;ndash; 스토리텔링 레시피</title>
      <link>https://stack-queue.tistory.com/1975</link>
      <description>&lt;p data-end=&quot;67&quot; data-start=&quot;34&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;한 편의 &amp;lsquo;사건 드라마&amp;rsquo;로 배심원 마음을 움직이는 법&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;226&quot; data-start=&quot;69&quot; data-ke-size=&quot;size16&quot;&gt;배심원은 변론 전체를 법률 조문으로 기억하지 않습니다. &lt;b&gt;이야기&lt;/b&gt;로 기억하죠.&lt;br /&gt;증거와 논리는 당연히 필요하지만, &lt;b&gt;스토리 형식&lt;/b&gt;으로 포장될 때 설득력이 폭발합니다.&lt;br /&gt;아래 레시피대로 구성하면, 오프닝부터 클로징까지 하나의 &amp;ldquo;드라마&amp;rdquo;처럼 흐르는 프레임을 만들 수 있어요.&lt;/p&gt;
&lt;hr data-end=&quot;231&quot; data-start=&quot;228&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;252&quot; data-start=&quot;233&quot; data-ke-size=&quot;size26&quot;&gt;1) 테마 한 줄: 7단어 룰&lt;/h2&gt;
&lt;p data-end=&quot;302&quot; data-start=&quot;253&quot; data-ke-size=&quot;size16&quot;&gt;모든 장면을 꿰는 &lt;b&gt;주제 문장(Theme Line)&lt;/b&gt;을 7단어 안쪽으로 만드세요.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;401&quot; data-start=&quot;303&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;353&quot; data-start=&quot;303&quot;&gt;예: &amp;ldquo;He followed the rules. They broke them.&amp;rdquo;&lt;/li&gt;
&lt;li data-end=&quot;401&quot; data-start=&quot;354&quot;&gt;회의 때, 증인 질문에 막힐 때, 클로징 전에도 이 한 줄로 방향을 재정렬합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;406&quot; data-start=&quot;403&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;437&quot; data-start=&quot;408&quot; data-ke-size=&quot;size26&quot;&gt;2) 오프닝 스테이트먼트: ABT 스토리 스파인&lt;/h2&gt;
&lt;p data-end=&quot;483&quot; data-start=&quot;438&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;And&amp;ndash;But&amp;ndash;Therefore(ABT)&lt;/b&gt;는 쉽고 강력한 서사 틀입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;591&quot; data-start=&quot;484&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;514&quot; data-start=&quot;484&quot;&gt;&lt;b&gt;AND&lt;/b&gt;: 사건의 공감 가능한 배경을 깔고&lt;/li&gt;
&lt;li data-end=&quot;551&quot; data-start=&quot;515&quot;&gt;&lt;b&gt;BUT&lt;/b&gt;: 균열(갈등&amp;middot;배신&amp;middot;위험)을 선명하게 드러내며&lt;/li&gt;
&lt;li data-end=&quot;591&quot; data-start=&quot;552&quot;&gt;&lt;b&gt;THEREFORE&lt;/b&gt;: 오늘 증거가 무엇을 입증할지 약속합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;613&quot; data-start=&quot;593&quot; data-ke-size=&quot;size23&quot;&gt;오프닝 템플릿 (30초 버전)&lt;/h3&gt;
&lt;blockquote data-end=&quot;855&quot; data-start=&quot;614&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;855&quot; data-start=&quot;616&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;This case is about trust &lt;b&gt;and&lt;/b&gt; responsibility.&lt;br /&gt;The defendant followed the process, &lt;b&gt;but&lt;/b&gt; the supplier faked the safety reports.&lt;br /&gt;&lt;b&gt;Therefore&lt;/b&gt;, the evidence will show the defendant acted reasonably&amp;mdash;and deserves your verdict.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;883&quot; data-start=&quot;857&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Road-map 문장&lt;/b&gt;을 꼭 붙이세요:&lt;/p&gt;
&lt;blockquote data-end=&quot;987&quot; data-start=&quot;884&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;987&quot; data-start=&quot;886&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;You&amp;rsquo;ll hear from three witnesses. You&amp;rsquo;ll see two emails. The timeline will make the choice clear.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;992&quot; data-start=&quot;989&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1022&quot; data-start=&quot;994&quot; data-ke-size=&quot;size26&quot;&gt;3) 증인신문: 장면 전환과 &amp;lsquo;팩트 아일랜드&amp;rsquo;&lt;/h2&gt;
&lt;p data-end=&quot;1069&quot; data-start=&quot;1023&quot; data-ke-size=&quot;size16&quot;&gt;배심원은 &lt;b&gt;장면(Scene)&lt;/b&gt; 단위로 이해합니다. 증인신문도 장면처럼 쪼개세요.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1431&quot; data-start=&quot;1071&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1129&quot; data-start=&quot;1071&quot;&gt;&lt;b&gt;장면 선언&lt;/b&gt;: &amp;ldquo;Let&amp;rsquo;s talk about the delivery on March 3.&amp;rdquo;&lt;/li&gt;
&lt;li data-end=&quot;1293&quot; data-start=&quot;1130&quot;&gt;&lt;b&gt;팩트 아일랜드(Fact Island)&lt;/b&gt;: 부인하기 어려운 작은 사실을 차례로 고정합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1293&quot; data-start=&quot;1189&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1235&quot; data-start=&quot;1189&quot;&gt;&amp;ldquo;You signed this at 9:12 a.m., correct?&amp;rdquo;&lt;/li&gt;
&lt;li data-end=&quot;1293&quot; data-start=&quot;1238&quot;&gt;&amp;ldquo;And you sent it to Quality within five minutes?&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1431&quot; data-start=&quot;1294&quot;&gt;&lt;b&gt;루핑(Looping)&lt;/b&gt;: 핵심 단어를 다음 질문 첫머리에 반복해 메시지 각인.
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1431&quot; data-start=&quot;1345&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1431&quot; data-start=&quot;1345&quot;&gt;&amp;ldquo;Five minutes. In those five minutes, you never checked the test result, did you?&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1452&quot; data-start=&quot;1433&quot; data-ke-size=&quot;size23&quot;&gt;크로스(반대신문) 미니 규칙&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1570&quot; data-start=&quot;1453&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1479&quot; data-start=&quot;1453&quot;&gt;&lt;b&gt;형용사 금지&lt;/b&gt;: 평가 대신 사실만.&lt;/li&gt;
&lt;li data-end=&quot;1529&quot; data-start=&quot;1480&quot;&gt;&lt;b&gt;예/아니오 박스&lt;/b&gt;: &amp;ldquo;Yes/No&amp;rdquo; 구조로 &lt;b&gt;범위를 좁혀&lt;/b&gt; 서사를 회수.&lt;/li&gt;
&lt;li data-end=&quot;1570&quot; data-start=&quot;1530&quot;&gt;&lt;b&gt;침묵 활용&lt;/b&gt;: 답 후 1초 정적 &amp;rarr; 배심원 시선이 증거로 이동.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1575&quot; data-start=&quot;1572&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1614&quot; data-start=&quot;1577&quot; data-ke-size=&quot;size26&quot;&gt;4) 증거 제시: 이름 붙이고(네이밍) 멈추고(프리즈) 의미화&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1792&quot; data-start=&quot;1615&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1667&quot; data-start=&quot;1615&quot;&gt;&lt;b&gt;Name it&lt;/b&gt;: &amp;ldquo;Exhibit 12, the safety checklist.&amp;rdquo;&lt;/li&gt;
&lt;li data-end=&quot;1713&quot; data-start=&quot;1668&quot;&gt;&lt;b&gt;Freeze it&lt;/b&gt;: 보여준 뒤 1박자 멈춤(배심원이 스스로 읽게).&lt;/li&gt;
&lt;li data-end=&quot;1792&quot; data-start=&quot;1714&quot;&gt;&lt;b&gt;Frame it&lt;/b&gt;: &amp;ldquo;One box matters: &amp;lsquo;Independent lab verification.&amp;rsquo; It&amp;rsquo;s blank.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1797&quot; data-start=&quot;1794&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1820&quot; data-start=&quot;1799&quot; data-ke-size=&quot;size26&quot;&gt;5) 반론 대응: 스토리 리라이트&lt;/h2&gt;
&lt;p data-end=&quot;1846&quot; data-start=&quot;1821&quot; data-ke-size=&quot;size16&quot;&gt;상대가 만든 이야기를 &lt;b&gt;재편집&lt;/b&gt;하세요.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1970&quot; data-start=&quot;1847&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1899&quot; data-start=&quot;1847&quot;&gt;&lt;b&gt;프레이밍 전환&lt;/b&gt;: &amp;ldquo;이건 &amp;lsquo;실수&amp;rsquo;의 사건이 아닙니다. &lt;b&gt;선택&lt;/b&gt;의 사건입니다.&amp;rdquo;&lt;/li&gt;
&lt;li data-end=&quot;1970&quot; data-start=&quot;1900&quot;&gt;&lt;b&gt;결정 규칙 제시&lt;/b&gt;: &amp;ldquo;If two stories tie, the one with the documents wins.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1975&quot; data-start=&quot;1972&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2009&quot; data-start=&quot;1977&quot; data-ke-size=&quot;size26&quot;&gt;6) 클로징: 테마 복귀 &amp;rarr; 증거 체인 &amp;rarr; 결심 문장&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;2254&quot; data-start=&quot;2010&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;2080&quot; data-start=&quot;2010&quot;&gt;&lt;b&gt;테마 복귀&lt;/b&gt;: &amp;ldquo;처음에 말씀드렸죠. He followed the rules. They broke them.&amp;rdquo;&lt;/li&gt;
&lt;li data-end=&quot;2117&quot; data-start=&quot;2081&quot;&gt;&lt;b&gt;증거 체인&lt;/b&gt;: 시간순 3~5개 &lt;b&gt;핵심 고리&lt;/b&gt;만.&lt;/li&gt;
&lt;li data-end=&quot;2173&quot; data-start=&quot;2118&quot;&gt;&lt;b&gt;법적 기준&lt;/b&gt;: 부담(standard/burden)을 &lt;b&gt;쉬운 문장&lt;/b&gt;으로 다시 설명.&lt;/li&gt;
&lt;li data-end=&quot;2254&quot; data-start=&quot;2174&quot;&gt;&lt;b&gt;결심(Call to Action)&lt;/b&gt;: &amp;ldquo;Your verdict should be for the defense/prosecution.&amp;rdquo;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-end=&quot;2271&quot; data-start=&quot;2256&quot; data-ke-size=&quot;size23&quot;&gt;클로징 한 문단 예시&lt;/h3&gt;
&lt;blockquote data-end=&quot;2503&quot; data-start=&quot;2272&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;2503&quot; data-start=&quot;2274&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;Rules protect people. He followed them. The emails (Ex.12) and the March 3 timeline show who didn&amp;rsquo;t. When the law asks for a reasonable decision, it points to documents, not guesses. The reasonable verdict is for the defense.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;2508&quot; data-start=&quot;2505&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2535&quot; data-start=&quot;2510&quot; data-ke-size=&quot;size26&quot;&gt;7) 목소리&amp;middot;속도&amp;middot;시선: 퍼포먼스 3요소&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2680&quot; data-start=&quot;2536&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2579&quot; data-start=&quot;2536&quot;&gt;&lt;b&gt;Voice Drop&lt;/b&gt;: 결론은 **속도&amp;darr;, 볼륨&amp;darr;**로 또렷하게.&lt;/li&gt;
&lt;li data-end=&quot;2634&quot; data-start=&quot;2580&quot;&gt;&lt;b&gt;1&amp;ndash;3&amp;ndash;1 리듬&lt;/b&gt;: 핵심(1) &amp;rarr; 설명(3문장) &amp;rarr; 핵심(1)로 감정 과열을 막아요.&lt;/li&gt;
&lt;li data-end=&quot;2680&quot; data-start=&quot;2635&quot;&gt;&lt;b&gt;시선 고정&lt;/b&gt;: 문장 끝은 &lt;b&gt;배심원석에 놓기&lt;/b&gt;(판사&amp;middot;스크린이 아니라).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2685&quot; data-start=&quot;2682&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2714&quot; data-start=&quot;2687&quot; data-ke-size=&quot;size26&quot;&gt;8) 윤리 가드레일: 공감은 &amp;lsquo;사실&amp;rsquo; 위에서&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2818&quot; data-start=&quot;2715&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2747&quot; data-start=&quot;2715&quot;&gt;과장은 &lt;b&gt;증거와 충돌하는 순간&lt;/b&gt; 역풍 맞습니다.&lt;/li&gt;
&lt;li data-end=&quot;2792&quot; data-start=&quot;2748&quot;&gt;피해자&amp;middot;피고의 인간적 맥락은 &lt;b&gt;사실에 닿아 있을 때&lt;/b&gt;만 힘을 냅니다.&lt;/li&gt;
&lt;li data-end=&quot;2818&quot; data-start=&quot;2793&quot;&gt;상대 비난보다 &lt;b&gt;선택&amp;middot;결과&lt;/b&gt;에 초점을.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>영어공부</category>
      <category>드라마처럼설득하기</category>
      <category>배심원설득</category>
      <category>법정영어</category>
      <category>법정전략</category>
      <category>법정커뮤니케이션</category>
      <category>스토리텔링</category>
      <category>영어설득</category>
      <category>오프닝스테이트먼트</category>
      <category>증인신문</category>
      <category>클로징아규먼트</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1975</guid>
      <comments>https://stack-queue.tistory.com/1975#entry1975comment</comments>
      <pubDate>Fri, 8 Aug 2025 19:30:53 +0900</pubDate>
    </item>
    <item>
      <title>명상 방법, 이렇게 시작하세요: 10분 루틴 가이드</title>
      <link>https://stack-queue.tistory.com/1974</link>
      <description>&lt;h2 data-end=&quot;46&quot; data-start=&quot;32&quot; data-ke-size=&quot;size26&quot;&gt;왜 지금 &amp;lsquo;명상&amp;rsquo;인가&lt;/h2&gt;
&lt;p data-end=&quot;148&quot; data-start=&quot;47&quot; data-ke-size=&quot;size16&quot;&gt;스트레스가 쌓일수록 뇌는 과부하 걸린 브라우저처럼 느려집니다. 명상은 이 탭들을 조용히 닫아주는 버튼 같아요. 거창한 수행 아닙니다. 의자, 바닥, 혹은 산책길&amp;mdash;어디서든 가능합니다.&lt;/p&gt;
&lt;h2 data-end=&quot;172&quot; data-start=&quot;150&quot; data-ke-size=&quot;size26&quot;&gt;시작 전 체크리스트 (초보자 필수)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;307&quot; data-start=&quot;173&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;201&quot; data-start=&quot;173&quot;&gt;&lt;b&gt;시간&lt;/b&gt;: 하루 10분. 알람 맞춰 두세요.&lt;/li&gt;
&lt;li data-end=&quot;230&quot; data-start=&quot;202&quot;&gt;&lt;b&gt;장소&lt;/b&gt;: 방해 적은 자리. 휴대폰은 무음.&lt;/li&gt;
&lt;li data-end=&quot;266&quot; data-start=&quot;231&quot;&gt;&lt;b&gt;자세&lt;/b&gt;: 허리는 곧게, 턱 살짝 당기고 어깨 힘 빼기.&lt;/li&gt;
&lt;li data-end=&quot;307&quot; data-start=&quot;267&quot;&gt;&lt;b&gt;의도&lt;/b&gt;: &amp;ldquo;완벽하게 하려&amp;rdquo;가 아니라 &lt;b&gt;&amp;ldquo;돌아오기&amp;rdquo;&lt;/b&gt;가 목표.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;312&quot; data-start=&quot;309&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;335&quot; data-start=&quot;314&quot; data-ke-size=&quot;size26&quot;&gt;1) 호흡 명상(가장 쉽고 확실)&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;513&quot; data-start=&quot;336&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;363&quot; data-start=&quot;336&quot;&gt;눈을 감고 코로 천천히 들이마십니다(4초).&lt;/li&gt;
&lt;li data-end=&quot;396&quot; data-start=&quot;364&quot;&gt;잠시 멈췄다가(2초), 입으로 길게 내쉽니다(6초).&lt;/li&gt;
&lt;li data-end=&quot;432&quot; data-start=&quot;397&quot;&gt;&lt;b&gt;코끝/배의 움직임&lt;/b&gt; 같은 &amp;ldquo;호흡 감각&amp;rdquo;을 관찰합니다.&lt;/li&gt;
&lt;li data-end=&quot;513&quot; data-start=&quot;433&quot;&gt;생각이 새면? &amp;ldquo;아, 생각이구나&amp;rdquo; 알아차리고 &lt;b&gt;호흡으로 돌아오기&lt;/b&gt;.&lt;br /&gt;&amp;rarr; 10분 타이머로 진행. 매일 같은 시간에 하면 루틴이 고정돼요.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;522&quot; data-start=&quot;515&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;팁&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;601&quot; data-start=&quot;523&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;561&quot; data-start=&quot;523&quot;&gt;숫자 세기가 맞으면: 1~10까지 들숨마다 세고, 다시 1로.&lt;/li&gt;
&lt;li data-end=&quot;601&quot; data-start=&quot;562&quot;&gt;졸리면: 숨을 짧게 3번 &amp;lsquo;훅훅훅&amp;rsquo; 내쉰 뒤, 평소 호흡으로 복귀.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;606&quot; data-start=&quot;603&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;634&quot; data-start=&quot;608&quot; data-ke-size=&quot;size26&quot;&gt;2) 바디 스캔(몸으로 현재에 닻 내리기)&lt;/h2&gt;
&lt;p data-end=&quot;784&quot; data-start=&quot;635&quot; data-ke-size=&quot;size16&quot;&gt;발끝 &amp;rarr; 종아리 &amp;rarr; 무릎 &amp;rarr; 허벅지 &amp;rarr; 골반 &amp;rarr; 배 &amp;rarr; 가슴 &amp;rarr; 손 &amp;rarr; 어깨 &amp;rarr; 목 &amp;rarr; 얼굴 순서로, &lt;b&gt;부위마다 5~10초&lt;/b&gt; 주고 감각을 관찰합니다. 따뜻함, 쑤심, 무감각도 그대로 &amp;ldquo;있음&amp;rdquo;으로 두세요.&lt;br /&gt;&lt;b&gt;목표는 이완이 아니라 &amp;lsquo;관찰&amp;rsquo;&lt;/b&gt;입니다. 이완은 덤.&lt;/p&gt;
&lt;hr data-end=&quot;789&quot; data-start=&quot;786&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;815&quot; data-start=&quot;791&quot; data-ke-size=&quot;size26&quot;&gt;3) 걷기 명상(앉기 힘들 땐 이동식)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;921&quot; data-start=&quot;816&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;847&quot; data-start=&quot;816&quot;&gt;속도는 &lt;b&gt;평소의 70%&lt;/b&gt;, 시선은 전방 2~3m.&lt;/li&gt;
&lt;li data-end=&quot;887&quot; data-start=&quot;848&quot;&gt;&amp;ldquo;오른발-왼발-멈춤-숨&amp;rdquo;처럼 &lt;b&gt;리듬&lt;/b&gt;을 짧게 마음속으로 라벨링.&lt;/li&gt;
&lt;li data-end=&quot;921&quot; data-start=&quot;888&quot;&gt;5분 걷기 + 5분 호흡 명상 콤보, 출퇴근 동선에 딱.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;926&quot; data-start=&quot;923&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;965&quot; data-start=&quot;928&quot; data-ke-size=&quot;size26&quot;&gt;4) 자비 명상(Loving-Kindness, 마음을 넓히기)&lt;/h2&gt;
&lt;p data-end=&quot;984&quot; data-start=&quot;966&quot; data-ke-size=&quot;size16&quot;&gt;조용히 마음속으로 반복합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1136&quot; data-start=&quot;985&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1011&quot; data-start=&quot;985&quot;&gt;&lt;b&gt;나에게&lt;/b&gt;: &amp;ldquo;편안하길. 건강하길.&amp;rdquo;&lt;/li&gt;
&lt;li data-end=&quot;1037&quot; data-start=&quot;1012&quot;&gt;&lt;b&gt;소중한 사람에게&lt;/b&gt;: &amp;ldquo;행복하길.&amp;rdquo;&lt;/li&gt;
&lt;li data-end=&quot;1064&quot; data-start=&quot;1038&quot;&gt;&lt;b&gt;중립적인 사람에게&lt;/b&gt;: &amp;ldquo;평안하길.&amp;rdquo;&lt;/li&gt;
&lt;li data-end=&quot;1136&quot; data-start=&quot;1065&quot;&gt;&lt;b&gt;어려운 관계에도&lt;/b&gt;(가능하면): &amp;ldquo;고통에서 벗어나길.&amp;rdquo;&lt;br /&gt;감정을 &amp;ldquo;억지로 느끼기&amp;rdquo;보다 &lt;b&gt;문장을 천천히 음미&lt;/b&gt;하세요.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1141&quot; data-start=&quot;1138&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1170&quot; data-start=&quot;1143&quot; data-ke-size=&quot;size26&quot;&gt;5) 만트라 명상(생각 소음 줄이는 스위치)&lt;/h2&gt;
&lt;p data-end=&quot;1267&quot; data-start=&quot;1171&quot; data-ke-size=&quot;size16&quot;&gt;짧은 소리(예: &amp;ldquo;옴&amp;rdquo;, &amp;ldquo;람&amp;rdquo;)나 단어(예: &amp;ldquo;평온&amp;rdquo;)를 &lt;b&gt;속삭이듯 마음속 반복&lt;/b&gt;.&lt;br /&gt;생각이 끼어들면 &lt;b&gt;다시 만트라&lt;/b&gt;. 호흡과 함께 리듬 타면 집중이 오래갑니다.&lt;/p&gt;
&lt;hr data-end=&quot;1468&quot; data-start=&quot;1465&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1486&quot; data-start=&quot;1470&quot; data-ke-size=&quot;size26&quot;&gt;막히는 포인트 &amp;amp; 해결법&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1671&quot; data-start=&quot;1487&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1566&quot; data-start=&quot;1487&quot;&gt;&lt;b&gt;생각이 폭주해요&lt;/b&gt; &amp;rarr; 멈추지 말고 &lt;b&gt;&amp;ldquo;생각&amp;rdquo; 라벨&lt;/b&gt; 후 호흡으로 복귀. 잘하는 증거가 아니라 &lt;b&gt;연습 중&lt;/b&gt;이라는 신호입니다.&lt;/li&gt;
&lt;li data-end=&quot;1617&quot; data-start=&quot;1567&quot;&gt;&lt;b&gt;졸려요&lt;/b&gt; &amp;rarr; 아침에 하거나, 등을 벽에 기대어 각도 업. 가벼운 세수도 도움.&lt;/li&gt;
&lt;li data-end=&quot;1671&quot; data-start=&quot;1618&quot;&gt;&lt;b&gt;시간이 없어요&lt;/b&gt; &amp;rarr; &lt;b&gt;1분 미니 명상&lt;/b&gt;(숨 6번 세기)을 하루 5회. 누적이 핵심.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1676&quot; data-start=&quot;1673&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1697&quot; data-start=&quot;1678&quot; data-ke-size=&quot;size26&quot;&gt;루틴을 오래 가는 3가지 요령&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1856&quot; data-start=&quot;1698&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1763&quot; data-start=&quot;1698&quot;&gt;&lt;b&gt;초소 + 초시&lt;/b&gt;: &lt;b&gt;초소요(10분)&lt;/b&gt;, &lt;b&gt;초시작(앉자마자 시작)&lt;/b&gt;&amp;mdash;준비 의식은 짧을수록 유지됨.&lt;/li&gt;
&lt;li data-end=&quot;1819&quot; data-start=&quot;1764&quot;&gt;&lt;b&gt;트리거 걸기&lt;/b&gt;: &amp;ldquo;양치 &amp;rarr; 명상&amp;rdquo;, &amp;ldquo;커피 내리기 &amp;rarr; 명상&amp;rdquo;처럼 일상 행동에 붙이기.&lt;/li&gt;
&lt;li data-end=&quot;1856&quot; data-start=&quot;1820&quot;&gt;&lt;b&gt;기록&lt;/b&gt;: 달력에 ✅ 체크. 21일 지나면 자동화됩니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-end=&quot;1861&quot; data-start=&quot;1858&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1873&quot; data-start=&quot;1863&quot; data-ke-size=&quot;size26&quot;&gt;초보자 FAQ&lt;/h2&gt;
&lt;p data-end=&quot;2016&quot; data-start=&quot;1944&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. 눈은 꼭 감아야 하나요?&lt;/b&gt;&lt;br /&gt;A. 반쯤 뜨고 &lt;b&gt;바닥 1~2m&lt;/b&gt; 지점을 부드럽게 보는 것도 좋아요. 졸음 방지.&lt;/p&gt;
&lt;p data-end=&quot;2092&quot; data-start=&quot;2018&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. 효과는 언제 느끼죠?&lt;/b&gt;&lt;br /&gt;A. 보통 &lt;b&gt;2~4주&lt;/b&gt; 꾸준히 하면 스트레스 반응이 옅어지는 체감이 옵니다. 개인차 있어요.&lt;/p&gt;
&lt;hr data-end=&quot;2097&quot; data-start=&quot;2094&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2105&quot; data-start=&quot;2099&quot; data-ke-size=&quot;size26&quot;&gt;마무리&lt;/h2&gt;
&lt;p data-end=&quot;2178&quot; data-start=&quot;2106&quot; data-ke-size=&quot;size16&quot;&gt;명상은 &amp;ldquo;잘했다/못했다&amp;rdquo;가 아니라 &lt;b&gt;&amp;ldquo;돌아온 횟수&amp;rdquo;&lt;/b&gt;가 실력입니다. 오늘 10분, 내일도 10분. 작은 반복이 뇌를 바꿉니다.&lt;/p&gt;</description>
      <category>기타</category>
      <category>10분루틴</category>
      <category>걷기명상</category>
      <category>마음챙김</category>
      <category>명상</category>
      <category>명상방법</category>
      <category>바디스캔</category>
      <category>스트레스관리</category>
      <category>자비명상</category>
      <category>초보자명상</category>
      <category>호흡명상</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1974</guid>
      <comments>https://stack-queue.tistory.com/1974#entry1974comment</comments>
      <pubDate>Fri, 8 Aug 2025 18:12:20 +0900</pubDate>
    </item>
    <item>
      <title>Interpreter 패턴: 미니 DSL로 &amp;ldquo;규칙을 읽는&amp;rdquo; 코드 만들기</title>
      <link>https://stack-queue.tistory.com/1973</link>
      <description>&lt;p data-end=&quot;274&quot; data-start=&quot;43&quot; data-ke-size=&quot;size16&quot;&gt;복잡한 if-else 정글 대신, &lt;b&gt;사람이 읽는 문장 같은 규칙&lt;/b&gt;을 그대로 코드가 해석(interpret)해 실행하면 얼마나 깔끔할까요?&lt;br /&gt;&lt;b&gt;Interpreter 패턴&lt;/b&gt;은 아주 단순한 문법(Grammar)을 &lt;b&gt;클래스 구조로 표현&lt;/b&gt;하고, 그 트리를 순회하며 의미를 평가하는 방식입니다. 검색 필터, 권한 규칙, 프로모션 조건, 피처 플래그 같은 &lt;b&gt;반복적으로 해석해야 하는 도메인 문장&lt;/b&gt;에 제격이에요.&lt;/p&gt;
&lt;hr data-end=&quot;279&quot; data-start=&quot;276&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;296&quot; data-start=&quot;281&quot; data-ke-size=&quot;size26&quot;&gt;언제 쓰나? (한눈에)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;446&quot; data-start=&quot;297&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;354&quot; data-start=&quot;297&quot;&gt;&lt;b&gt;도메인 규칙을 문장처럼 표현&lt;/b&gt;하고 싶을 때 (ex. &amp;ldquo;가격 &amp;gt; 1만 AND 태그=세일&amp;rdquo;).&lt;/li&gt;
&lt;li data-end=&quot;390&quot; data-start=&quot;355&quot;&gt;같은 규칙을 &lt;b&gt;여러 데이터에 반복 적용&lt;/b&gt;해야 할 때.&lt;/li&gt;
&lt;li data-end=&quot;446&quot; data-start=&quot;391&quot;&gt;문법이 &lt;b&gt;작고 안정적&lt;/b&gt;일 때(중요!). 커지면 파서/컴파일러 영역이라 다른 접근이 낫습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;451&quot; data-start=&quot;448&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;467&quot; data-start=&quot;453&quot; data-ke-size=&quot;size26&quot;&gt;큰 그림: 구성 요소&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;716&quot; data-start=&quot;468&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;619&quot; data-start=&quot;468&quot;&gt;&lt;b&gt;Expression 계층&lt;/b&gt;: 규칙을 트리로 표현하는 인터페이스/클래스들
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;619&quot; data-start=&quot;517&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;567&quot; data-start=&quot;517&quot;&gt;TerminalExpression : 숫자&amp;middot;문자&amp;middot;단일 속성 비교 같은 원자 규칙&lt;/li&gt;
&lt;li data-end=&quot;619&quot; data-start=&quot;570&quot;&gt;NonTerminalExpression : AND/OR/NOT 같은 조합 규칙&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;660&quot; data-start=&quot;620&quot;&gt;&lt;b&gt;Context&lt;/b&gt;: 해석 대상(예: 상품, 사용자, 요청 등)&lt;/li&gt;
&lt;li data-end=&quot;716&quot; data-start=&quot;661&quot;&gt;&lt;b&gt;interpret(context)&lt;/b&gt;: 트리를 따라 내려가며 &lt;b&gt;참/거짓 또는 값&lt;/b&gt;을 계산&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-end=&quot;792&quot; data-start=&quot;718&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;792&quot; data-start=&quot;720&quot; data-ke-size=&quot;size16&quot;&gt;실무에선 &lt;b&gt;Composite&lt;/b&gt;로 트리를 만들고, 필요하면 &lt;b&gt;Visitor&lt;/b&gt;로 최적화&amp;middot;로깅&amp;middot;출력 같은 부가 작업을 붙입니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;797&quot; data-start=&quot;794&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;826&quot; data-start=&quot;799&quot; data-ke-size=&quot;size26&quot;&gt;Kotlin 미니 예제 &amp;ndash; 상품 필터 DSL&lt;/h2&gt;
&lt;p data-end=&quot;881&quot; data-start=&quot;828&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;가격이 1만 원 초과이고, 태그에 &amp;lsquo;세일&amp;rsquo; 또는 &amp;lsquo;신상&amp;rsquo;이 포함&amp;rdquo; 규칙을 해석하는 예제입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1754632871214&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// --- 도메인 ---
data class Product(val price: Int, val tags: Set&amp;lt;String&amp;gt;)

// --- Expression ---
fun interface Expr { fun interpret(p: Product): Boolean }

// Terminal
class PriceGt(private val min: Int) : Expr {
    override fun interpret(p: Product) = p.price &amp;gt; min
}
class HasTag(private val tag: String) : Expr {
    override fun interpret(p: Product) = tag in p.tags
}

// NonTerminal
class And(private val left: Expr, private val right: Expr) : Expr {
    override fun interpret(p: Product) = left.interpret(p) &amp;amp;&amp;amp; right.interpret(p)
}
class Or(private val left: Expr, private val right: Expr) : Expr {
    override fun interpret(p: Product) = left.interpret(p) || right.interpret(p)
}
class Not(private val expr: Expr) : Expr {
    override fun interpret(p: Product) = !expr.interpret(p)
}

// --- DSL 헬퍼 ---
infix fun Expr.and(other: Expr) = And(this, other)
infix fun Expr.or(other: Expr)  = Or(this, other)
fun not(e: Expr) = Not(e)

// --- 규칙 트리 (Grammar를 코드로) ---
val rule: Expr =
    PriceGt(10_000) and (HasTag(&quot;세일&quot;) or HasTag(&quot;신상&quot;))

// --- 사용 ---
val a = Product(price = 9000,  tags = setOf(&quot;세일&quot;))
val b = Product(price = 12000, tags = setOf(&quot;여름&quot;, &quot;신상&quot;))

println(rule.interpret(a)) // false (가격 조건 탈락)
println(rule.interpret(b)) // true&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2234&quot; data-start=&quot;2150&quot; data-ke-size=&quot;size16&quot;&gt;핵심은 &lt;b&gt;규칙을 데이터처럼 조립&lt;/b&gt;한다는 점이에요. 이제 &amp;ldquo;세일은 아니지만 &amp;lsquo;특가&amp;rsquo; 태그면 OK&amp;rdquo; 같은 요구도 &lt;b&gt;트리만 바꾸면&lt;/b&gt; 바로 반영됩니다.&lt;/p&gt;
&lt;hr data-end=&quot;2239&quot; data-start=&quot;2236&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2248&quot; data-start=&quot;2241&quot; data-ke-size=&quot;size26&quot;&gt;실전 팁&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;2641&quot; data-start=&quot;2249&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;2319&quot; data-start=&quot;2249&quot;&gt;&lt;b&gt;문법을 욕심내지 말 것&lt;/b&gt;: 비교&amp;middot;AND/OR/NOT 정도로 시작하세요. 커지면 파싱&amp;middot;성능이 급격히 어려워집니다.&lt;/li&gt;
&lt;li data-end=&quot;2389&quot; data-start=&quot;2320&quot;&gt;&lt;b&gt;캐시/메모이제이션&lt;/b&gt;: 같은 규칙을 많은 데이터에 적용하면 &lt;b&gt;서브트리 결과 캐시&lt;/b&gt;가 체감 성능을 올려줍니다.&lt;/li&gt;
&lt;li data-end=&quot;2450&quot; data-start=&quot;2390&quot;&gt;&lt;b&gt;빌더/DSL로 표현력 업그레이드&lt;/b&gt;: 위처럼 infix/헬퍼 함수로 &amp;ldquo;읽히는&amp;rdquo; 코드를 만드세요.&lt;/li&gt;
&lt;li data-end=&quot;2518&quot; data-start=&quot;2451&quot;&gt;&lt;b&gt;검증 단계 추가&lt;/b&gt;: 배포 전 규칙 트리를 정적 검사(불가능한 조합, 항상 true 등)해 장애를 줄이세요.&lt;/li&gt;
&lt;li data-end=&quot;2641&quot; data-start=&quot;2519&quot;&gt;&lt;b&gt;한계를 인정하기&lt;/b&gt;: 문법이 커지기 시작하면 &lt;b&gt;파서(ANTLR), 스펙/룰 엔진(SPEL, MVEL, Drools), Kotlin DSL, 혹은 Query 언어&lt;/b&gt;로 전환을 고려하는 게 장기적으로 이득입니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-end=&quot;2646&quot; data-start=&quot;2643&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2657&quot; data-start=&quot;2648&quot; data-ke-size=&quot;size26&quot;&gt;장단점 정리&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2818&quot; data-start=&quot;2658&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2739&quot; data-start=&quot;2658&quot;&gt;&lt;b&gt;장점&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2739&quot; data-start=&quot;2671&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2703&quot; data-start=&quot;2671&quot;&gt;규칙을 &lt;b&gt;데이터처럼 조립&lt;/b&gt; &amp;rarr; 변경&amp;middot;테스트 용이&lt;/li&gt;
&lt;li data-end=&quot;2739&quot; data-start=&quot;2706&quot;&gt;도메인 담당자와 &lt;b&gt;공유 가능한 표현&lt;/b&gt;(의사 언어)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2818&quot; data-start=&quot;2740&quot;&gt;&lt;b&gt;단점&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2818&quot; data-start=&quot;2753&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2785&quot; data-start=&quot;2753&quot;&gt;문법이 커지면 &lt;b&gt;성능&amp;middot;가독성&amp;middot;테스트 비용 폭증&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;2818&quot; data-start=&quot;2788&quot;&gt;트리 생성(파싱)까지 자체 구현하면 유지보수 난도&amp;uarr;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2823&quot; data-start=&quot;2820&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2836&quot; data-start=&quot;2825&quot; data-ke-size=&quot;size26&quot;&gt;한 줄 요약&lt;/h2&gt;
&lt;blockquote data-end=&quot;2928&quot; data-start=&quot;2837&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;2928&quot; data-start=&quot;2839&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Interpreter 패턴은 &amp;ldquo;작은 문법을 가진 규칙 엔진&amp;rdquo;에 최적&lt;/b&gt;&amp;mdash;트리로 규칙을 만들고 해석해, 변화 많은 비즈니스 룰을 안전하게 운용할 수 있습니다.&lt;/p&gt;
&lt;/blockquote&gt;</description>
      <category>개발</category>
      <category>composite</category>
      <category>DSL</category>
      <category>Interpreter패턴</category>
      <category>Kotlin</category>
      <category>visitor</category>
      <category>규칙엔진</category>
      <category>디자인패턴</category>
      <category>백엔드아키텍처</category>
      <category>안드로이드개발</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1973</guid>
      <comments>https://stack-queue.tistory.com/1973#entry1973comment</comments>
      <pubDate>Fri, 8 Aug 2025 15:02:21 +0900</pubDate>
    </item>
    <item>
      <title>캡슐 속 풀다이브 VR, 10:1 시간가속&amp;hellip;진짜 가능할까?</title>
      <link>https://stack-queue.tistory.com/1972</link>
      <description>&lt;p data-end=&quot;206&quot; data-start=&quot;46&quot; data-ke-size=&quot;size16&quot;&gt;게임 판타지 소설에 자주 나오는 &amp;lsquo;풀다이브 캡슐&amp;rsquo;&amp;mdash;온몸의 감각을 그대로 느끼고, 현실 1시간이 게임 10시간처럼 흘러가는 그 세계. 과학적으로 가능성은 있을까? 결론부터 말하면 &lt;b&gt;부분적으로는 가능&lt;/b&gt;, &lt;b&gt;완전체는 먼 미래&lt;/b&gt;다. 어떻게 작동할지, 어디가 한계인지 현실적으로 풀어볼게.&lt;/p&gt;
&lt;h3 data-end=&quot;231&quot; data-start=&quot;208&quot; data-ke-size=&quot;size23&quot;&gt;1) &amp;ldquo;온몸 감각&amp;rdquo; 전송, 어떻게?&lt;/h3&gt;
&lt;p data-end=&quot;283&quot; data-start=&quot;232&quot; data-ke-size=&quot;size16&quot;&gt;풀다이브의 핵심은 &lt;b&gt;쓰는 것(write)&lt;/b&gt; 과 &lt;b&gt;읽는 것(read)&lt;/b&gt; 두 가지다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;601&quot; data-start=&quot;284&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;433&quot; data-start=&quot;284&quot;&gt;&lt;b&gt;읽기(뇌&amp;rarr;기계)&lt;/b&gt;: 사용자의 의도&amp;middot;시선&amp;middot;근육명령 등을 뇌파/피질 전극/근전도로 읽어서 게임에 반영. 지금은 비침습(EEG, 카메라 트래킹)은 &lt;b&gt;정확도가 낮고 지연이 큼&lt;/b&gt;, 침습(ECoG, 미세전극)은 &lt;b&gt;정확도&amp;middot;대역폭은 좋지만 수술 리스크&lt;/b&gt;가 있다.&lt;/li&gt;
&lt;li data-end=&quot;601&quot; data-start=&quot;434&quot;&gt;&lt;b&gt;쓰기(기계&amp;rarr;뇌)&lt;/b&gt;: 시각&amp;middot;청각&amp;middot;촉각&amp;middot;온도&amp;middot;통증&amp;middot;중력감(어지럼까지)을 &lt;b&gt;감각피질/말초신경/전정계&lt;/b&gt;에 인위적으로 자극해 &amp;lsquo;있다고 느끼게&amp;rsquo; 만든다. 현재는 &lt;b&gt;전신 햅틱+전정 자극(GVS)&lt;/b&gt; 같은 비침습 조합이 실용적이고, 먼 미래에는 &lt;b&gt;감각피질 직접 자극&lt;/b&gt;으로 해상도를 올릴 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;653&quot; data-start=&quot;603&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;현실적인 중간해법&lt;/b&gt;&lt;br /&gt;초반 세대 풀다이브는 &amp;ldquo;뇌 직접 연결 100%&amp;rdquo;가 아니라,&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;892&quot; data-start=&quot;654&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;682&quot; data-start=&quot;654&quot;&gt;상반신/손 촉각은 &lt;b&gt;고해상도 햅틱 수트&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;718&quot; data-start=&quot;683&quot;&gt;전정감(가속&amp;middot;회전)은 &lt;b&gt;전정 자극 또는 구동 플랫폼&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;751&quot; data-start=&quot;719&quot;&gt;통증&amp;middot;온도는 &lt;b&gt;안전한 범위로 제한된 가짜 자극&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;780&quot; data-start=&quot;752&quot;&gt;시각&amp;middot;청각은 &lt;b&gt;초고해상도 HMD+오디오&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;892&quot; data-start=&quot;781&quot;&gt;뇌인터페이스는 &lt;b&gt;의도&amp;middot;표정&amp;middot;시선 추적 + 약간의 신경 신호 보조&lt;/b&gt;&lt;br /&gt;&amp;hellip;같은 &lt;b&gt;하이브리드&lt;/b&gt;로 갈 가능성이 높다. 완전한 &amp;ldquo;신경 직결 풀스택&amp;rdquo;은 의학적 안전성이 검증될 때까지는 느리게 간다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;917&quot; data-start=&quot;894&quot; data-ke-size=&quot;size23&quot;&gt;2) 10:1 시간가속, 가능한가?&lt;/h3&gt;
&lt;p data-end=&quot;1084&quot; data-start=&quot;918&quot; data-ke-size=&quot;size16&quot;&gt;여기서 많은 사람이 &lt;b&gt;오해&lt;/b&gt;한다. &amp;ldquo;뇌를 10배 빠르게 돌리면 되지 않나?&amp;rdquo; 문제는 &lt;b&gt;생물학적 하드웨어의 한계&lt;/b&gt;다. 뉴런은 발화 속도와 회로 신호 전달에 &lt;b&gt;물리적&amp;middot;대사적 제한&lt;/b&gt;이 있다(에너지&amp;middot;열&amp;middot;혈류&amp;middot;불응기 등). 진짜로 &amp;lsquo;생각 속도&amp;rsquo;를 10배 높이려면 &lt;b&gt;안전성&amp;middot;대사부하&lt;/b&gt;가 벽이다.&lt;/p&gt;
&lt;p data-end=&quot;1115&quot; data-start=&quot;1086&quot; data-ke-size=&quot;size16&quot;&gt;그렇다면 대안은? &lt;b&gt;&amp;lsquo;지각과 기억&amp;rsquo;의 트릭&lt;/b&gt;이다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1500&quot; data-start=&quot;1116&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1239&quot; data-start=&quot;1116&quot;&gt;&lt;b&gt;시간 인플레이션 디자인&lt;/b&gt;: 실제 1시간 동안 &lt;b&gt;이벤트 밀도&lt;/b&gt;를 과도하게 높이고, 컷씬&amp;middot;장면 전환&amp;middot;일상 반복 구간을 &lt;b&gt;스킵&lt;/b&gt;한다. 사용자는 &amp;ldquo;많이 겪었다&amp;rdquo;고 느끼며 &lt;b&gt;10시간 같은 포만감&lt;/b&gt;을 얻는다.&lt;/li&gt;
&lt;li data-end=&quot;1351&quot; data-start=&quot;1240&quot;&gt;&lt;b&gt;기억 서사 보정&lt;/b&gt;: 뇌는 &amp;lsquo;연속성&amp;rsquo;을 기억으로 구성한다. 중간중간 &lt;b&gt;자연스러운 전환 기억(예: 이동&amp;middot;준비 과정 압축)&lt;/b&gt; 을 심어주면 &amp;ldquo;오래 머물렀다&amp;rdquo;는 &lt;b&gt;서사적 시간감&lt;/b&gt;이 생긴다.&lt;/li&gt;
&lt;li data-end=&quot;1500&quot; data-start=&quot;1352&quot;&gt;&lt;b&gt;내부 시계 조정&lt;/b&gt;: 도파민/노르에피네프린/기저핵&amp;middot;소뇌의 &lt;b&gt;간격 타이밍 회로&lt;/b&gt;를 간접적으로 조절(비침습 자극+콘텐츠 설계)해 &lt;b&gt;체감 시간&lt;/b&gt;을 늘릴 수 있다. 하지만 10:1 같은 &lt;b&gt;정량적&amp;middot;안정적 배율&lt;/b&gt;을 장시간 유지하는 건 현재로선 &lt;b&gt;어렵다&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1618&quot; data-start=&quot;1502&quot; data-ke-size=&quot;size16&quot;&gt;즉, &lt;b&gt;뇌를 10배로 가속&lt;/b&gt;하는 게 아니라, &lt;b&gt;콘텐츠&amp;middot;기억&amp;middot;지각 설계&lt;/b&gt;로 &amp;ldquo;10배처럼 느끼게&amp;rdquo; 할 수는 있다.&lt;br /&gt;완벽한 &amp;ldquo;10:1 시계 싱크&amp;rdquo;는 의료&amp;middot;신경윤리 리스크가 너무 커서 &lt;b&gt;현실성 낮음&lt;/b&gt;.&lt;/p&gt;
&lt;h3 data-end=&quot;1639&quot; data-start=&quot;1620&quot; data-ke-size=&quot;size23&quot;&gt;3) 캡슐은 어떤 구조일까?&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2014&quot; data-start=&quot;1640&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1734&quot; data-start=&quot;1640&quot;&gt;&lt;b&gt;안정화&lt;/b&gt;: 체온&amp;middot;호흡&amp;middot;자세를 관리하는 캡슐, 근감소 방지를 위한 &lt;b&gt;간헐적 전기자극/수축 프로그램&lt;/b&gt;, 장시간 사용 시 &lt;b&gt;압력 분산&amp;middot;혈전 예방&lt;/b&gt; 시스템.&lt;/li&gt;
&lt;li data-end=&quot;1804&quot; data-start=&quot;1735&quot;&gt;&lt;b&gt;감각 출력&lt;/b&gt;: HMD 또는 시각피질 자극(원격 미래), 공간오디오, 전신 햅틱, 냉온풍&amp;middot;향기 모듈, 전정 자극.&lt;/li&gt;
&lt;li data-end=&quot;1856&quot; data-start=&quot;1805&quot;&gt;&lt;b&gt;의도 입력&lt;/b&gt;: 시선&amp;middot;표정&amp;middot;근육 미세전위, 손가락 신경인터페이스, 선택적 BCI.&lt;/li&gt;
&lt;li data-end=&quot;1936&quot; data-start=&quot;1857&quot;&gt;&lt;b&gt;사이버멀미 방지&lt;/b&gt;: 시각-전정 일치 알고리즘, &lt;b&gt;지연 20ms 이하&lt;/b&gt; 목표, 급가속/급회전은 역시 &lt;b&gt;전정 자극과 동기화&lt;/b&gt;.&lt;/li&gt;
&lt;li data-end=&quot;2014&quot; data-start=&quot;1937&quot;&gt;&lt;b&gt;안전&amp;middot;윤리&lt;/b&gt;: 세션 제한(수면&amp;middot;영양 주기), &lt;b&gt;강도 제한(통증&amp;middot;공포)&lt;/b&gt;, 개인정보/두뇌데이터 암호화, &lt;b&gt;연령&amp;middot;중독 관리&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2034&quot; data-start=&quot;2016&quot; data-ke-size=&quot;size23&quot;&gt;4) 현실 타임라인(대략)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2299&quot; data-start=&quot;2035&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2135&quot; data-start=&quot;2035&quot;&gt;&lt;b&gt;5~10년&lt;/b&gt;: 전신 햅틱&amp;middot;전정 자극&amp;middot;시선/표정/손가락 신호 결합한 &lt;b&gt;하이브리드 풀다이브 느낌&lt;/b&gt;의 상용 초기형. &amp;lsquo;시간가속&amp;rsquo;은 &lt;b&gt;콘텐츠 편집형&lt;/b&gt; 체감 확장 위주.&lt;/li&gt;
&lt;li data-end=&quot;2225&quot; data-start=&quot;2136&quot;&gt;&lt;b&gt;10~25년&lt;/b&gt;: 선택적 의료급 BCI로 &lt;b&gt;국지 감각 보강&lt;/b&gt;(특정 촉각/시각 요소), 멀미 거의 제로화. 제한적 &lt;b&gt;감각쓰기&lt;/b&gt; 상용 사례 증가.&lt;/li&gt;
&lt;li data-end=&quot;2299&quot; data-start=&quot;2226&quot;&gt;&lt;b&gt;25년+&lt;/b&gt;: 광범위한 &lt;b&gt;피질-피질 양방향&lt;/b&gt; 고해상도는 여전히 규제&amp;middot;의학 허들. 소수 전문 환경에서만 가동될 가능성 큼.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2317&quot; data-start=&quot;2301&quot; data-ke-size=&quot;size23&quot;&gt;5) 핵심 포인트 요약&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2549&quot; data-start=&quot;2318&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2394&quot; data-start=&quot;2318&quot;&gt;&lt;b&gt;온몸 감각&lt;/b&gt;: 비침습 햅틱+전정 자극 중심으로 충분히 &amp;ldquo;진짜 같은 느낌&amp;rdquo;을 줄 수 있고, 일부는 &lt;b&gt;신경 자극&lt;/b&gt;으로 보강.&lt;/li&gt;
&lt;li data-end=&quot;2473&quot; data-start=&quot;2395&quot;&gt;&lt;b&gt;10:1 시간가속&lt;/b&gt;: 뇌 가속이 아니라 &lt;b&gt;지각&amp;middot;기억 설계&lt;/b&gt;와 &lt;b&gt;이벤트 밀도 조절&lt;/b&gt;로 &amp;lsquo;그렇게 느끼게&amp;rsquo; 만드는 게 현실적.&lt;/li&gt;
&lt;li data-end=&quot;2549&quot; data-start=&quot;2474&quot;&gt;&lt;b&gt;가장 큰 장벽&lt;/b&gt;: 안전성(의학&amp;middot;열&amp;middot;대사), 지연(레이턴시), 멀미, 윤리&amp;middot;규제, &lt;b&gt;데이터 프라이버시(두뇌 데이터 보호)&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>기타</category>
      <category>BCI</category>
      <category>SFvsScience</category>
      <category>가상현실캡슐</category>
      <category>게임디자인</category>
      <category>뉴로테크</category>
      <category>미래기술</category>
      <category>시간가속</category>
      <category>전정자극</category>
      <category>풀다이브VR</category>
      <category>햅틱</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1972</guid>
      <comments>https://stack-queue.tistory.com/1972#entry1972comment</comments>
      <pubDate>Fri, 8 Aug 2025 13:23:10 +0900</pubDate>
    </item>
    <item>
      <title>ChatGPT&amp;middot;Gemini에 &amp;lsquo;잡히는&amp;rsquo; 법: AIO(LLM 최적화) 실전 체크리스트</title>
      <link>https://stack-queue.tistory.com/1971</link>
      <description>&lt;p data-end=&quot;165&quot; data-start=&quot;50&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;구글 검색 등록&amp;rdquo; 말고, &lt;b&gt;챗봇이 답변에 당신을 &amp;lsquo;인용&amp;rsquo;하도록&lt;/b&gt; 만드는 방법을 정리했어요. 핵심은 간단합니다. &lt;b&gt;LLM이 읽고 요약&amp;middot;인용하기 쉬운 구조로, 신뢰 가능한 출처처럼 보이게&lt;/b&gt; 꾸미는 것.&lt;/p&gt;
&lt;hr data-end=&quot;170&quot; data-start=&quot;167&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;200&quot; data-start=&quot;172&quot; data-ke-size=&quot;size26&quot;&gt;1) LLM이 소스를 고르는 방식부터 이해하자&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;680&quot; data-start=&quot;201&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;377&quot; data-start=&quot;201&quot;&gt;&lt;b&gt;브라우징형 LLM&lt;/b&gt;(ChatGPT with browsing, Perplexity 등)은 신뢰성(도메인/저자), 최신성, 의도 적합성을 기준으로 링크를 고릅니다. 명확한 제목, 날짜, 요약, 실증 데이터가 있으면 선택 확률이 높아요.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;549&quot; data-start=&quot;378&quot;&gt;&lt;b&gt;Google Gemini의 AI Overviews/AI Mode&lt;/b&gt;는 기존 SEO 신호+콘텐츠 품질을 결합해 답을 만들고, 근거 링크를 함께 노출합니다. 즉, 전통 SEO+구조화 데이터+명료한 답변 형식이 여전히 중요합니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;680&quot; data-start=&quot;550&quot;&gt;마케터들이 말하는 &lt;b&gt;GEO/AIO(Generative/AI Optimization)&lt;/b&gt; 는 바로 이 &amp;ldquo;AI가 답에 인용하는 구조&amp;rdquo;로 콘텐츠를 만드는 전략이에요.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;685&quot; data-start=&quot;682&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;726&quot; data-start=&quot;687&quot; data-ke-size=&quot;size26&quot;&gt;2) 로봇 접근 권한: &amp;ldquo;AI 크롤러&amp;rdquo;가 읽을 수 있어야 인용된다&lt;/h2&gt;
&lt;p data-end=&quot;788&quot; data-start=&quot;727&quot; data-ke-size=&quot;size16&quot;&gt;AI가 읽지 못하면 인용 자체가 불가하죠. 기본은 &lt;b&gt;robots.txt에서 주요 AI 크롤러 허용&lt;/b&gt;입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1754626693105&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 예시: AI/검색 크롤러 허용
User-agent: GPTBot
Allow: /

User-agent: Google-Extended
Allow: /

User-agent: PerplexityBot
Allow: /

User-agent: *
Allow: /&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1354&quot; data-start=&quot;947&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1046&quot; data-start=&quot;947&quot;&gt;OpenAI의 &lt;b&gt;GPTBot/크롤러 설정&lt;/b&gt; 공식 문서에서 사용자 에이전트와 제어 방법을 확인하세요.&lt;/li&gt;
&lt;li data-end=&quot;1141&quot; data-start=&quot;1047&quot;&gt;&lt;b&gt;PerplexityBot&lt;/b&gt;의 UA와 IP 범위는 여기서 안내합니다(서치 노출용 크롤러).&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1252&quot; data-start=&quot;1142&quot;&gt;&lt;b&gt;robots.txt는 &amp;lsquo;규범&amp;rsquo;이지 강제는 아님&lt;/b&gt;(일부 봇은 미준수 가능). 보안 차단 목적으론 인증/벽이 정답입니다.&lt;/li&gt;
&lt;li data-end=&quot;1354&quot; data-start=&quot;1253&quot;&gt;최근엔 특정 봇(예: Perplexity)의 우회 크롤링 논란도 있어요. 접근 로그 모니터링이 필요합니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-end=&quot;1451&quot; data-start=&quot;1356&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1451&quot; data-start=&quot;1358&quot; data-ke-size=&quot;size16&quot;&gt;팁: Naver&amp;middot;Google의 로봇 가이드(한글)도 함께 참고해, 사이트 루트에 정확히 배치하세요.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;1456&quot; data-start=&quot;1453&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1487&quot; data-start=&quot;1458&quot; data-ke-size=&quot;size26&quot;&gt;3) 구조화 데이터로 &amp;ldquo;기계 친화적&amp;rdquo; 신호 강화&lt;/h2&gt;
&lt;p data-end=&quot;1537&quot; data-start=&quot;1488&quot; data-ke-size=&quot;size16&quot;&gt;LLM이 누가/무엇을/언제를 바로 파악하도록 &lt;b&gt;JSON-LD&lt;/b&gt;를 적극 사용하세요.&lt;/p&gt;
&lt;h3 data-end=&quot;1548&quot; data-start=&quot;1539&quot; data-ke-size=&quot;size23&quot;&gt;최소 세트&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1795&quot; data-start=&quot;1549&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1619&quot; data-start=&quot;1549&quot;&gt;Article(블로그 포스트), Organization(브랜드/회사), FAQPage(핵심 질문/답변 정리)&lt;/li&gt;
&lt;li data-end=&quot;1698&quot; data-start=&quot;1620&quot;&gt;datePublished, dateModified, author, headline, about 등 메타를 빠짐없이.&lt;/li&gt;
&lt;li data-end=&quot;1795&quot; data-start=&quot;1699&quot;&gt;sameAs로 &lt;b&gt;Wikidata&amp;middot;Wikipedia&amp;middot;공식 SNS&lt;/b&gt;를 연결(엔티티 정체성 강화).&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1754626743191&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;script type=&quot;application/ld+json&quot;&amp;gt;
{
  &quot;@context&quot;: &quot;https://schema.org&quot;,
  &quot;@type&quot;: [&quot;Article&quot;,&quot;FAQPage&quot;],
  &quot;headline&quot;: &quot;ChatGPT&amp;middot;Gemini에 잡히는 법&quot;,
  &quot;datePublished&quot;: &quot;2025-08-08&quot;,
  &quot;dateModified&quot;: &quot;2025-08-08&quot;,
  &quot;author&quot;: {&quot;@type&quot;:&quot;Person&quot;,&quot;name&quot;:&quot;당신의 이름&quot;},
  &quot;mainEntity&quot;: [{
    &quot;@type&quot;: &quot;Question&quot;,
    &quot;name&quot;: &quot;AI가 내 글을 왜 인용하나요?&quot;,
    &quot;acceptedAnswer&quot;: {
      &quot;@type&quot;: &quot;Answer&quot;,
      &quot;text&quot;: &quot;명확한 주장+근거, 구조화 데이터, 엔티티 연결, 최신 통계가 있을 때 인용 확률이 높아집니다.&quot;
    }
  }]
}
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;2292&quot; data-start=&quot;2289&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2333&quot; data-start=&quot;2294&quot; data-ke-size=&quot;size26&quot;&gt;4) 엔티티(사람/브랜드/제품) 프로필을 &amp;lsquo;하나의 ID&amp;rsquo;로 묶어라&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2476&quot; data-start=&quot;2334&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2476&quot; data-start=&quot;2334&quot;&gt;&lt;b&gt;Wikidata 항목 생성 후&lt;/b&gt; 사이트의 Organization 스키마에 sameAs로 연결하세요. LLM&amp;middot;검색 엔진이 &amp;ldquo;이 사람/브랜드=이 엔티티&amp;rdquo;로 더 잘 인지합니다. &lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2481&quot; data-start=&quot;2478&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2509&quot; data-start=&quot;2483&quot; data-ke-size=&quot;size26&quot;&gt;5) &amp;ldquo;LLM이 좋아하는 글쓰기&amp;rdquo;로 재구성&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2794&quot; data-start=&quot;2510&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2549&quot; data-start=&quot;2510&quot;&gt;&lt;b&gt;정답 먼저&lt;/b&gt;: 서두 2&amp;ndash;3문장에 결론을, 이후 근거&amp;middot;예시.&lt;/li&gt;
&lt;li data-end=&quot;2673&quot; data-start=&quot;2550&quot;&gt;&lt;b&gt;숫자&amp;middot;날짜&amp;middot;출처&lt;/b&gt;를 명시(&amp;ldquo;대략&amp;rdquo;보다 &amp;ldquo;2025년 7월 보고서에 따르면 42%&amp;hellip;&amp;rdquo;). 이런 &lt;b&gt;구체 통계&lt;/b&gt;는 인용 확률을 끌어올립니다.&lt;/li&gt;
&lt;li data-end=&quot;2794&quot; data-start=&quot;2674&quot;&gt;&lt;b&gt;Q&amp;amp;A 섹션&lt;/b&gt;을 별도로 두고, 질문을 실제 검색 문장으로 작성(&amp;ldquo;~하는 법?&amp;rdquo;, &amp;ldquo;~비용은?&amp;rdquo;). &lt;b&gt;FAQ 스키마&lt;/b&gt;와 궁합이 최상.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2799&quot; data-start=&quot;2796&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2832&quot; data-start=&quot;2801&quot; data-ke-size=&quot;size26&quot;&gt;6) 분산 출처 전략: &amp;ldquo;웹 전역에 근거를 남겨라&amp;rdquo;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3034&quot; data-start=&quot;2833&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2918&quot; data-start=&quot;2833&quot;&gt;&lt;b&gt;깃허브(README), 노션 공개 페이지, 미디엄, 학회/정부 통계 인용&lt;/b&gt; 같은 재인용하기 쉬운 포맷으로 핵심 주장과 수치를 배포하세요.&lt;/li&gt;
&lt;li data-end=&quot;3034&quot; data-start=&quot;2919&quot;&gt;&lt;b&gt;속도&amp;middot;접근성&lt;/b&gt;(로그인/페이월 없이 열람 가능)도 중요. LLM은 빠르고 열려 있는 문서를 선호합니다. (업계 가이드 참조)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;3039&quot; data-start=&quot;3036&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;3058&quot; data-start=&quot;3041&quot; data-ke-size=&quot;size26&quot;&gt;7) 모니터링&amp;middot;피드백 루프&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3229&quot; data-start=&quot;3059&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;3155&quot; data-start=&quot;3059&quot;&gt;ChatGPT/Gemini/Perplexity에서 &lt;b&gt;실제 질문으로 테스트&lt;/b&gt; &amp;rarr; &amp;ldquo;출처를 보여줘&amp;rdquo;라고 물어 &lt;b&gt;인용 링크&lt;/b&gt;를 확인 &amp;rarr; 본문/FAQ/스키마를 조정.&lt;/li&gt;
&lt;li data-end=&quot;3229&quot; data-start=&quot;3156&quot;&gt;업계가 빠르게 변하니 &lt;b&gt;분기별 업데이트&lt;/b&gt;를 권장해요.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;3234&quot; data-start=&quot;3231&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;3252&quot; data-start=&quot;3236&quot; data-ke-size=&quot;size26&quot;&gt;8) 리스크 관리(중요)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3363&quot; data-start=&quot;3253&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;3363&quot; data-start=&quot;3253&quot;&gt;&lt;b&gt;일부 AI 크롤러는 robots.txt를 무시할 수 있음&lt;/b&gt; &amp;rarr; 서버 로그&amp;middot;WAF로 비정상 UA/패턴 차단 정책 준비.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;3999&quot; data-start=&quot;3996&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;4021&quot; data-start=&quot;4001&quot; data-ke-size=&quot;size26&quot;&gt;국내 참고 리딩 자료(더 보기)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;4223&quot; data-start=&quot;4022&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;4112&quot; data-start=&quot;4022&quot;&gt;&lt;b&gt;GEO 개념과 적용&lt;/b&gt;: Adriel, NHN 커머스, InterAd 인사이트. &lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://www.adriel.com/ko/blog/geo-guide?utm_source=chatgpt.com&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Adriel&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://www.nhn-commerce.com/main/blog/25/%EC%87%BC%ED%95%91%EB%AA%B0-SEO%EB%B6%80%ED%84%B0-AI-%EA%B2%80%EC%83%89-%EC%B5%9C%EC%A0%81%ED%99%94%EA%B9%8C%EC%A7%80-%EB%85%B8%EC%B6%9C-%EC%98%AC%EB%A6%AC%EB%8A%94-%EC%8B%A4%EC%A0%84-%EB%B0%A9%EB%B2%95-4725?utm_source=chatgpt.com&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;nhn-commerce.com&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://www.interad.com/insights/unified-geo-seo?utm_source=chatgpt.com&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;InterAd Korea&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;4223&quot; data-start=&quot;4113&quot;&gt;&lt;b&gt;Google 공식(한국어)&lt;/b&gt;: AI 기능 가이드, FAQ/Article 스키마 문서, robots.txt 가이드. &lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://blog.google/intl/ko-kr/products/explore-get-answers/google-search-ai-mode-update-kr/?utm_source=chatgpt.com&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;blog.google&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://developers.google.com/search/docs/appearance/structured-data/faqpage?hl=ko&amp;amp;utm_source=chatgpt.com&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Google for Developers&lt;/span&gt;&lt;span&gt;+2&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;Google for Developers&lt;/span&gt;&lt;span&gt;+2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;4228&quot; data-start=&quot;4225&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;4235&quot; data-start=&quot;4230&quot; data-ke-size=&quot;size26&quot;&gt;결론&lt;/h2&gt;
&lt;p data-end=&quot;4442&quot; data-start=&quot;4236&quot; data-ke-size=&quot;size16&quot;&gt;AI 시대의 노출은 &amp;ldquo;1등&amp;rdquo;보다 &lt;b&gt;&amp;ldquo;답변에 채택&amp;middot;인용&amp;rdquo;&lt;/b&gt;되는 것이 더 중요합니다. &lt;b&gt;크롤링 허용 &amp;rarr; 구조화 &amp;rarr; 엔티티 연결 &amp;rarr; 통계&amp;middot;출처 강화 &amp;rarr; 반복 테스트&lt;/b&gt; 이 5단계를 꾸준히 돌리면, ChatGPT&amp;middot;Gemini 같은 AI에서도 자연스럽게 발견됩니다. (업계 전환 트렌드&amp;middot;사례 참고)&lt;/p&gt;</description>
      <category>기타</category>
      <category>aio</category>
      <category>ai검색최적화</category>
      <category>ChatGPT노출</category>
      <category>FAQ스키마</category>
      <category>geminiai</category>
      <category>GEO</category>
      <category>robots</category>
      <category>Wikidata</category>
      <category>구조화데이터</category>
      <category>엔티티SEO</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1971</guid>
      <comments>https://stack-queue.tistory.com/1971#entry1971comment</comments>
      <pubDate>Fri, 8 Aug 2025 13:20:39 +0900</pubDate>
    </item>
    <item>
      <title>커맨드 vs 메멘토: 언제 어떤 패턴이 덜 아픈가</title>
      <link>https://stack-queue.tistory.com/1970</link>
      <description>&lt;p data-end=&quot;133&quot; data-start=&quot;31&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;되돌리기(Undo)&amp;rdquo;나 &amp;ldquo;기록/재실행(Redo&amp;middot;Macro)&amp;rdquo;가 필요할 때, 팀이 가장 많이 헷갈리는 두 패턴이 커맨드(Command)와 메멘토(Memento)죠. 결론부터 말할게요.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;207&quot; data-start=&quot;135&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;167&quot; data-start=&quot;135&quot;&gt;&lt;b&gt;작업 자체를 기록&amp;middot;재생하고 싶다면 &amp;rarr; 커맨드&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;207&quot; data-start=&quot;168&quot;&gt;&lt;b&gt;객체 상태를 &amp;lsquo;그 순간&amp;rsquo;으로 즉시 되돌리고 싶다면 &amp;rarr; 메멘토&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;377&quot; data-start=&quot;209&quot; data-ke-size=&quot;size16&quot;&gt;두 패턴은 겹치는 영역이 있지만 &lt;b&gt;목표가 다릅니다&lt;/b&gt;. 커맨드는 &amp;ldquo;행위(요청)&amp;rdquo;를 객체로 만들고 큐잉&amp;middot;지연&amp;middot;원격 실행&amp;middot;로그&amp;middot;매크로까지 다룹니다. 메멘토는 &amp;ldquo;상태 스냅샷&amp;rdquo;을 캡슐화해 &lt;b&gt;내부 구현을 노출하지 않고&lt;/b&gt; 저장&amp;middot;복원합니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr data-end=&quot;382&quot; data-start=&quot;379&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;398&quot; data-start=&quot;384&quot; data-ke-size=&quot;size26&quot;&gt;언제 커맨드가 맞나?&lt;/h2&gt;
&lt;p data-end=&quot;417&quot; data-start=&quot;400&quot; data-ke-size=&quot;size16&quot;&gt;이럴 때 커맨드가 덜 아픕니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;638&quot; data-start=&quot;419&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;478&quot; data-start=&quot;419&quot;&gt;&lt;b&gt;행위 중심&lt;/b&gt;으로 생각해야 할 때: &amp;ldquo;이 버튼이 누르면 어떤 작업을 수행한다&amp;rdquo;를 깔끔히 객체화.&lt;/li&gt;
&lt;li data-end=&quot;519&quot; data-start=&quot;479&quot;&gt;&lt;b&gt;큐&amp;middot;지연&amp;middot;원격 실행&lt;/b&gt;이 필요할 때(잡 큐, 워커, 재시도).&lt;/li&gt;
&lt;li data-end=&quot;563&quot; data-start=&quot;520&quot;&gt;&lt;b&gt;Audit/로그/매크로&lt;/b&gt;가 필요할 때: 기록을 그대로 재생 가능.&lt;/li&gt;
&lt;li data-end=&quot;638&quot; data-start=&quot;564&quot;&gt;&lt;b&gt;Undo/Redo&lt;/b&gt;를 &amp;ldquo;&lt;b&gt;반대 연산&lt;/b&gt;&amp;rdquo;으로 처리할 수 있을 때(execute()와 unexecute() 쌍).&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-end=&quot;747&quot; data-start=&quot;640&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;747&quot; data-start=&quot;642&quot; data-ke-size=&quot;size16&quot;&gt;커맨드는 &amp;ldquo;요청을 객체로 변환&amp;rdquo;해서 호출자와 수신자를 느슨하게 분리하고, 실행 취소와 대기열 등을 자연스럽게 지원합니다.&amp;nbsp;&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 data-end=&quot;767&quot; data-start=&quot;749&quot; data-ke-size=&quot;size23&quot;&gt;초소형 Kotlin 스케치&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1754626359760&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;interface Command { fun execute(); fun undo() }
class Insert(private val buf: StringBuilder, private val s: String) : Command {
    override fun execute() { buf.append(s) }
    override fun undo() { buf.delete(buf.length - s.length, buf.length) }
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;1035&quot; data-start=&quot;1032&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1051&quot; data-start=&quot;1037&quot; data-ke-size=&quot;size26&quot;&gt;언제 메멘토가 맞나?&lt;/h2&gt;
&lt;p data-end=&quot;1070&quot; data-start=&quot;1053&quot; data-ke-size=&quot;size16&quot;&gt;이럴 때 메멘토가 덜 아픕니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1223&quot; data-start=&quot;1072&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1117&quot; data-start=&quot;1072&quot;&gt;&lt;b&gt;상태 중심&lt;/b&gt;으로 생각해야 할 때: &amp;ldquo;이전 상태 그대로 복구&amp;rdquo;가 목표.&lt;/li&gt;
&lt;li data-end=&quot;1159&quot; data-start=&quot;1118&quot;&gt;&lt;b&gt;캡슐화&lt;/b&gt;를 지키며 내부 상태를 외부에 노출하고 싶지 않을 때.&lt;/li&gt;
&lt;li data-end=&quot;1223&quot; data-start=&quot;1160&quot;&gt;Undo/Redo가 &lt;b&gt;행위의 반대 연산 없이&lt;/b&gt; &amp;ldquo;스냅샷 복원&amp;rdquo;만으로 충분할 때(복원 O(1), 심플).&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-end=&quot;1316&quot; data-start=&quot;1225&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1316&quot; data-start=&quot;1227&quot; data-ke-size=&quot;size16&quot;&gt;메멘토는 &amp;ldquo;구현을 드러내지 않고&amp;rdquo; 객체의 &lt;b&gt;이전 상태를 저장&amp;middot;복원&lt;/b&gt;하는 행동 패턴입니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 data-end=&quot;1336&quot; data-start=&quot;1318&quot; data-ke-size=&quot;size23&quot;&gt;초소형 Kotlin 스케치&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1754626446582&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;data class EditorState(val text: String) // Memento
class Editor { var text = &quot;&quot;; fun save() = EditorState(text); fun restore(m: EditorState){ text = m.text } }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;1516&quot; data-start=&quot;1513&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1546&quot; data-start=&quot;1518&quot; data-ke-size=&quot;size26&quot;&gt;비용 구조 한눈에 (감으로 고르는 체크리스트)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2008&quot; data-start=&quot;1548&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1646&quot; data-start=&quot;1548&quot;&gt;&lt;b&gt;되돌리기 단위가 &amp;lsquo;행위&amp;rsquo;인가, &amp;lsquo;상태&amp;rsquo;인가?&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1646&quot; data-start=&quot;1583&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1613&quot; data-start=&quot;1583&quot;&gt;행위 단위(매크로, 원격 재생): &lt;b&gt;커맨드&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1646&quot; data-start=&quot;1616&quot;&gt;상태 단위(&amp;ldquo;딱 그 화면 그대로&amp;rdquo;): &lt;b&gt;메멘토&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1739&quot; data-start=&quot;1647&quot;&gt;&lt;b&gt;Redo가 &amp;lsquo;다시 실행&amp;rsquo;이어야 하나?&lt;/b&gt; &amp;rarr; &lt;b&gt;커맨드&lt;/b&gt;가 유리(재생/대기열/로그).&lt;/li&gt;
&lt;li data-end=&quot;1827&quot; data-start=&quot;1740&quot;&gt;&lt;b&gt;복원이 아주 자주&amp;middot;즉시 일어나나?&lt;/b&gt; &amp;rarr; &lt;b&gt;메멘토&lt;/b&gt;가 단순(스냅샷 복원).&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1883&quot; data-start=&quot;1828&quot;&gt;&lt;b&gt;상태가 큰가?&lt;/b&gt; 큰 스냅샷을 자주 찍으면 &lt;b&gt;메모리 부담&lt;/b&gt;(메멘토)의 대가가 큽니다.&lt;/li&gt;
&lt;li data-end=&quot;1955&quot; data-start=&quot;1884&quot;&gt;&lt;b&gt;반대 연산 정의가 어렵나?&lt;/b&gt; 반대 연산이 애매하면 커맨드의 undo()가 지옥이 됩니다 &amp;rarr; &lt;b&gt;메멘토&lt;/b&gt; 고려.&lt;/li&gt;
&lt;li data-end=&quot;2008&quot; data-start=&quot;1956&quot;&gt;&lt;b&gt;감사/리플레이가 필수인가?&lt;/b&gt;(업무 로그, 매크로) &amp;rarr; &lt;b&gt;커맨드&lt;/b&gt; 쪽이 자연스러움.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2013&quot; data-start=&quot;2010&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2034&quot; data-start=&quot;2015&quot; data-ke-size=&quot;size26&quot;&gt;하이브리드가 정답일 때가 많다&lt;/h2&gt;
&lt;p data-end=&quot;2218&quot; data-start=&quot;2036&quot; data-ke-size=&quot;size16&quot;&gt;실무에선 &lt;b&gt;둘을 섞는 게 제일 편합니다.&lt;/b&gt;&lt;br /&gt;예를 들어, 커맨드로 기록과 재생을 담당하면서 &lt;b&gt;주기적으로 메멘토 체크포인트&lt;/b&gt;를 찍어 빠른 복구와 메모리&amp;middot;성능 균형을 잡습니다. 국내 글들도 &amp;ldquo;둘 중 하나만 고집할 필요 없고 함께 쓰면 좋다&amp;rdquo;고 정리하죠.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2387&quot; data-start=&quot;2220&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2272&quot; data-start=&quot;2220&quot;&gt;&lt;b&gt;패턴&lt;/b&gt;: Command 히스토리를 유지하되, N번마다 Memento를 저장&lt;/li&gt;
&lt;li data-end=&quot;2324&quot; data-start=&quot;2273&quot;&gt;&lt;b&gt;복구&lt;/b&gt;: 가장 가까운 스냅샷으로 점프 &amp;rarr; 남은 커맨드만 재생(콜드 스타트 단축)&lt;/li&gt;
&lt;li data-end=&quot;2387&quot; data-start=&quot;2325&quot;&gt;&lt;b&gt;모바일/안드로이드&lt;/b&gt;: 앱 백그라운드 전환 시 메멘토 저장, 전면 복귀 후엔 커맨드 재생으로 세부 동기화&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2392&quot; data-start=&quot;2389&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2405&quot; data-start=&quot;2394&quot; data-ke-size=&quot;size26&quot;&gt;실무 팁 6가지&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;2851&quot; data-start=&quot;2407&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;2487&quot; data-start=&quot;2407&quot;&gt;&lt;b&gt;Undo/Redo UX 규칙&lt;/b&gt;: Undo 후 새로운 편집이 발생하면 Redo 스택은 폐기(편집기 표준). 커맨드든 메멘토든 동일.&lt;/li&gt;
&lt;li data-end=&quot;2544&quot; data-start=&quot;2488&quot;&gt;&lt;b&gt;깊은 복사 주의(메멘토)&lt;/b&gt;: 참조 공유로 스냅샷이 오염되지 않게 불변 + 딥카피 전략.&lt;/li&gt;
&lt;li data-end=&quot;2601&quot; data-start=&quot;2545&quot;&gt;&lt;b&gt;메모리 관리(메멘토)&lt;/b&gt;: 스냅샷 압축&amp;middot;델타 저장&amp;middot;기간 제한(예: 30일)로 용량 제어.&lt;/li&gt;
&lt;li data-end=&quot;2665&quot; data-start=&quot;2602&quot;&gt;&lt;b&gt;보상 트랜잭션(커맨드)&lt;/b&gt;: 외부 API/결제처럼 역함수가 없는 작업은 &amp;ldquo;보상&amp;rdquo; 커맨드를 별도 설계.&lt;/li&gt;
&lt;li data-end=&quot;2723&quot; data-start=&quot;2666&quot;&gt;&lt;b&gt;대기열/재시도(커맨드)&lt;/b&gt;: 실패 시 백오프&amp;middot;리트라이는 Invoker 수준에서 공통 처리.&lt;/li&gt;
&lt;li data-end=&quot;2851&quot; data-start=&quot;2724&quot;&gt;&lt;b&gt;테스트 전략&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2851&quot; data-start=&quot;2744&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2793&quot; data-start=&quot;2744&quot;&gt;커맨드: execute()/undo()의 아이템포턴스, 순서 보장 테스트.&lt;/li&gt;
&lt;li data-end=&quot;2851&quot; data-start=&quot;2797&quot;&gt;메멘토: &amp;ldquo;N번 편집 &amp;rarr; 스냅샷 &amp;rarr; undo &amp;rarr; redo&amp;rdquo; 경계값(0개/1개/많이) 시나리오.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-end=&quot;2856&quot; data-start=&quot;2853&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2866&quot; data-start=&quot;2858&quot; data-ke-size=&quot;size26&quot;&gt;간단 결론&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3016&quot; data-start=&quot;2868&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2901&quot; data-start=&quot;2868&quot;&gt;&lt;b&gt;행위 추적&amp;middot;재생&amp;middot;로그&lt;/b&gt;가 핵심 &amp;rarr; &lt;b&gt;커맨드&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;2933&quot; data-start=&quot;2902&quot;&gt;&lt;b&gt;상태의 즉시 복원&lt;/b&gt;이 핵심 &amp;rarr; &lt;b&gt;메멘토&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;3016&quot; data-start=&quot;2934&quot;&gt;현실은 &lt;b&gt;하이브리드&lt;/b&gt;가 제일 덜 아프다(체크포인트 + 커맨드 히스토리).&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>개발</category>
      <category>Kotlin예제</category>
      <category>UndoRedo</category>
      <category>디자인패턴</category>
      <category>리팩토링</category>
      <category>메멘토패턴</category>
      <category>아키텍처</category>
      <category>커맨드패턴</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1970</guid>
      <comments>https://stack-queue.tistory.com/1970#entry1970comment</comments>
      <pubDate>Fri, 8 Aug 2025 13:14:59 +0900</pubDate>
    </item>
    <item>
      <title>돈은 &amp;lsquo;얼마나&amp;rsquo;가 아니라 &amp;lsquo;어떻게&amp;rsquo; 늘어나는가 &amp;mdash; 《미스터리 오브 뱅킹》 4장 읽고</title>
      <link>https://stack-queue.tistory.com/1969</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;로스바드는 &amp;ldquo;물가를 밀어 올리는 진짜 힘은 화폐 &lt;b&gt;공급&lt;/b&gt;&amp;rdquo;이라며, 금 본위&amp;middot;지폐&amp;middot;디지털 시대를 가로질러 돈이 늘어나는 메커니즘(채굴&amp;middot;디베이스&amp;middot;정책 발행)과 그 &lt;b&gt;재분배 효과&lt;/b&gt;(먼저 쓰는 사람이 이익)를 해부합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;244&quot; data-start=&quot;231&quot; data-ke-size=&quot;size26&quot;&gt;핵심 포인트만 쏙쏙&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1230&quot; data-start=&quot;246&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;434&quot; data-start=&quot;246&quot;&gt;&lt;b&gt;화폐공급의 정의부터 리셋&lt;/b&gt;&lt;br /&gt;로스바드는 화폐공급을 &amp;ldquo;경제 안에 존재하는 &lt;b&gt;화폐 단위의 총량&lt;/b&gt;&amp;rdquo;으로 본다고 시작합니다. 금본위라면 &amp;lsquo;달러=금 x온스&amp;rsquo;가 1:1로 붙어 돌아가죠. 기준이 금속이든 종이든, &amp;ldquo;M은 그냥 &lt;b&gt;총 화폐 단위&lt;/b&gt;다&amp;rdquo;는 관점입니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;616&quot; data-start=&quot;436&quot;&gt;&lt;b&gt;&amp;ldquo;얼마가 최적인가?&amp;rdquo;&amp;mdash;정답: 어떤 양이든 된다&lt;/b&gt;&lt;br /&gt;돈은 신발처럼 &amp;ldquo;많을수록 좋다&amp;rdquo;가 아니에요. 교환 매개라는 기능만 한다면 &lt;b&gt;어떤 수준의 M이든 기능적으로 최적&lt;/b&gt;이라는 게 그의 결론. 문제는 &amp;lsquo;양&amp;rsquo;보다 &lt;b&gt;늘리는 방식과 타이밍&lt;/b&gt;입니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;834&quot; data-start=&quot;618&quot;&gt;&lt;b&gt;천사 실험(Angel Gabriel)과 &amp;lsquo;먼저 쓰는 자&amp;rsquo;&lt;/b&gt;&lt;br /&gt;하룻밤 사이 돈이 두 배가 됐다? 사회 전체는 부자가 안 되지만, &lt;b&gt;먼저 쓰는 사람&lt;/b&gt;은 가격이 오르기 전에 혜택을 챙깁니다. 뒤늦게 지갑 여는 사람은 이미 오른 가격을 맞아요. 오늘 우리가 &amp;ldquo;유동성 파티의 승자/패자&amp;rdquo;를 보는 방식 그대로죠.&lt;/li&gt;
&lt;li data-end=&quot;1062&quot; data-start=&quot;836&quot;&gt;&lt;b&gt;돈이 늘어나는 세 가지 길&lt;/b&gt;&lt;br /&gt;① &lt;b&gt;금본위&lt;/b&gt;에선 채굴이 유일한 공급 증가 경로, 그래서 속도가 느립니다. ② &lt;b&gt;디베이스(화폐 희석)&lt;/b&gt;: 왕이나 정부가 동전의 순도를 살짝 깎아 물 밑에서 공급을 늘립니다(세뇨리지). ③ &lt;b&gt;현대 법정화폐&lt;/b&gt;에선 정책 버튼 한 번으로 단위와 양을 바꾸고, 그 결과는 물가로 돌아옵니다.&lt;/li&gt;
&lt;li data-end=&quot;1230&quot; data-start=&quot;1064&quot;&gt;&lt;b&gt;왜 인플레이션의 &amp;lsquo;주범&amp;rsquo;은 공급인가&lt;/b&gt;&lt;br /&gt;4장은 &amp;ldquo;대부분의 물가상승은 &lt;b&gt;화폐공급의 지속 증가&lt;/b&gt;에서 나온다&amp;rdquo;는 논지를 3장의 수요&amp;middot;공급 틀과 연결해 굳힙니다. 장기적으로 계속 올리는 쪽(공급)이 결정적 변수라는 것.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1235&quot; data-start=&quot;1232&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1269&quot; data-start=&quot;1237&quot; data-ke-size=&quot;size26&quot;&gt;현대판 연결: 우리가 보는 M1&amp;middot;M2랑 뭐가 다른가?&lt;/h2&gt;
&lt;p data-end=&quot;1453&quot; data-start=&quot;1271&quot; data-ke-size=&quot;size16&quot;&gt;현실에선 중앙은행과 통계기관이 &lt;b&gt;M1, M2&lt;/b&gt; 같은 지표로 &amp;lsquo;돈의 범위&amp;rsquo;를 정의합니다. 한국은행 설명으로는 &lt;b&gt;M2&lt;/b&gt;가 &amp;ldquo;현금+결제성 예금+만기 2년 미만 저축성 예금 등, 거주자가 보유한 넓은 유동성&amp;rdquo;을 뜻하죠. (나라별 세부 구성은 조금씩 달라요.)&lt;/p&gt;
&lt;p data-end=&quot;1688&quot; data-start=&quot;1455&quot; data-ke-size=&quot;size16&quot;&gt;반면 로스바드는 &lt;b&gt;&amp;ldquo;교환에 바로 쓰이는 것&amp;rdquo;&lt;/b&gt; 중심의 정의를 선호했고, 나중에 살레르노와 함께 &lt;b&gt;TMS(True Money Supply)&lt;/b&gt;라는 대안 지표를 밀었습니다. 핵심은 &amp;ldquo;&lt;b&gt;이게 진짜 &amp;lsquo;지불 수단&amp;rsquo;인가?&lt;/b&gt;&amp;rdquo;에 가깝게 집계하자는 취지예요. 학계 합의는 아니지만, 금융순환과 채권스프레드를 설명할 때 TMS가 유용했다는 연구도 있습니다.&lt;/p&gt;
&lt;hr data-end=&quot;1693&quot; data-start=&quot;1690&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1718&quot; data-start=&quot;1695&quot; data-ke-size=&quot;size26&quot;&gt;정리&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2366&quot; data-start=&quot;1720&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1939&quot; data-start=&quot;1720&quot;&gt;&lt;b&gt;양(量)보다 경로(Path)&lt;/b&gt;&lt;br /&gt;&amp;ldquo;돈을 얼마나 풀었나&amp;rdquo;도 중요하지만, &lt;b&gt;어디로 먼저 들어갔나&lt;/b&gt;가 체감에 더 세게 박힙니다. 유동성이 특정 섹터로 먼저 흘러가면(예: 기술주, 부동산) 그쪽 가격이 먼저 튀고, 나중에 전체 물가가 뒤따라오죠. 로스바드의 &amp;lsquo;먼저 쓰는 자&amp;rsquo; 논리는 지금도 소름 돋게 현실적입니다. &lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;2177&quot; data-start=&quot;1941&quot;&gt;&lt;b&gt;디지털 시대의 &amp;lsquo;느린 디베이스&amp;rsquo;가 &amp;lsquo;빠른 디베이스&amp;rsquo;로&lt;/b&gt;&lt;br /&gt;과거엔 디베이스가 왕의 주조 개입 같은 &lt;b&gt;느린 기술&lt;/b&gt;이었다면, 지금은 정책&amp;middot;코드로 &lt;b&gt;빠르게&lt;/b&gt; 벌어질 수 있어요(CBDC의 프로그래머블 기능 논의가 그래서 늘 민감하죠). 결국 &lt;b&gt;화폐 신뢰&lt;/b&gt;는 제도적 견제에서 나오지, 기술 그 자체에서 나오지 않는다는 걸 다시 확인했습니다. &lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;2366&quot; data-start=&quot;2179&quot;&gt;&lt;b&gt;한국 투자자에게&lt;/b&gt;&lt;br /&gt;금&amp;middot;달러를 헤지로 두자는 얘기가 단순 겁주기가 아니라, &lt;b&gt;공급 증가의 재분배 효과&lt;/b&gt;에 대한 보험이라는 걸 이 장이 설득력 있게 보여줍니다. &amp;ldquo;유동성 국면&amp;rdquo;이란 말을 뉴스에서 보게 되면 &lt;b&gt;누가 먼저 쓰는지&lt;/b&gt;부터 떠올려보세요. &lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>재테크</category>
      <category>CBDC</category>
      <category>m2</category>
      <category>tms</category>
      <category>경제고전읽기</category>
      <category>디베이스</category>
      <category>로스바드</category>
      <category>미스터리오브뱅킹</category>
      <category>인플레이션</category>
      <category>중앙은행</category>
      <category>화폐공급</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1969</guid>
      <comments>https://stack-queue.tistory.com/1969#entry1969comment</comments>
      <pubDate>Fri, 8 Aug 2025 13:06:12 +0900</pubDate>
    </item>
    <item>
      <title>메멘토(Memento) 패턴 완전 분석: &amp;ldquo;되돌리기(Undo)&amp;rdquo;를 가장 깔끔하게</title>
      <link>https://stack-queue.tistory.com/1968</link>
      <description>&lt;p data-end=&quot;244&quot; data-start=&quot;48&quot; data-ke-size=&quot;size16&quot;&gt;복잡한 편집기나 결제 플로우에서 &amp;ldquo;방금 전으로 돌아가줘&amp;rdquo;는 거의 필수 기능이죠. 이걸 매번 if/else로 땜빵하다 보면 상태 관리가 산으로 갑니다. &lt;b&gt;메멘토 패턴&lt;/b&gt;은 객체의 내부 구현을 까지 않고(캡슐화 유지) &lt;b&gt;이전 상태 스냅샷을 저장&amp;middot;복원&lt;/b&gt;하게 해 주는 정석 해법이에요.&lt;/p&gt;
&lt;hr data-end=&quot;249&quot; data-start=&quot;246&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;272&quot; data-start=&quot;251&quot; data-ke-size=&quot;size26&quot;&gt;왜 메멘토인가? (문제 &amp;rarr; 해법)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;503&quot; data-start=&quot;273&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;334&quot; data-start=&quot;273&quot;&gt;&lt;b&gt;문제:&lt;/b&gt; 객체가 복잡해질수록 &amp;ldquo;원래대로&amp;rdquo; 돌리는 로직이 여기저기 흩어짐 &amp;rarr; 사이드이펙트&amp;middot;버그 증가&lt;/li&gt;
&lt;li data-end=&quot;503&quot; data-start=&quot;335&quot;&gt;&lt;b&gt;해법:&lt;/b&gt; 현재 상태를 &lt;b&gt;Memento(스냅샷)&lt;/b&gt; 로 외부에 맡겨 두고, 필요할 때 &lt;b&gt;Originator&lt;/b&gt; 가 그 스냅샷으로 복원. 스냅샷 묶음은 &lt;b&gt;Caretaker&lt;/b&gt; 가 관리. 구조가 단순하고 테스트가 쉬워집니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;508&quot; data-start=&quot;505&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;528&quot; data-start=&quot;510&quot; data-ke-size=&quot;size26&quot;&gt;구성 요소 한 번에 이해하기&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;756&quot; data-start=&quot;529&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;604&quot; data-start=&quot;529&quot;&gt;&lt;b&gt;Originator&lt;/b&gt;: &amp;ldquo;상태 주인공&amp;rdquo;. 스냅샷을 만들고(save()), 나중에 되돌리는(restore()) 역할.&lt;/li&gt;
&lt;li data-end=&quot;659&quot; data-start=&quot;605&quot;&gt;&lt;b&gt;Memento&lt;/b&gt;: 스냅샷 그 자체. 보통 &lt;b&gt;불변(immutable)&lt;/b&gt; 으로 설계.&lt;/li&gt;
&lt;li data-end=&quot;756&quot; data-start=&quot;660&quot;&gt;&lt;b&gt;Caretaker&lt;/b&gt;: 스냅샷 보관&amp;middot;관리(스택/큐/DB). Undo/Redo 스택도 여기서 처리.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;761&quot; data-start=&quot;758&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;777&quot; data-start=&quot;763&quot; data-ke-size=&quot;size26&quot;&gt;언제 쓰면 베스트인가&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;999&quot; data-start=&quot;778&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;861&quot; data-start=&quot;778&quot;&gt;&lt;b&gt;에디터 Undo/Redo&lt;/b&gt;: 텍스트/이미지/도면 편집기의 기본 UX.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;911&quot; data-start=&quot;862&quot;&gt;&lt;b&gt;상태 머신 롤백&lt;/b&gt;: 다단계 가입&amp;middot;결제 플로우에서 오류 시 이전 단계로 복귀.&lt;/li&gt;
&lt;li data-end=&quot;956&quot; data-start=&quot;912&quot;&gt;&lt;b&gt;게임 저장&amp;middot;로드&lt;/b&gt;: 체크포인트마다 스냅샷 저장, 로드로 즉시 복원.&lt;/li&gt;
&lt;li data-end=&quot;999&quot; data-start=&quot;957&quot;&gt;&lt;b&gt;알림&amp;middot;예약 취소&lt;/b&gt;: &amp;ldquo;N초 안엔 취소 가능&amp;rdquo; 같은 임시 상태 보관.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1004&quot; data-start=&quot;1001&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1041&quot; data-start=&quot;1006&quot; data-ke-size=&quot;size26&quot;&gt;Kotlin 미니 예제 &amp;ndash; 텍스트 에디터 Undo/Redo&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1754625730745&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// --- Memento ---
@JvmInline value class EditorState(val text: String)

// --- Originator ---
class TextEditor {
    var content: String = &quot;&quot;
        private set

    fun write(s: String) { content += s }
    fun save(): EditorState = EditorState(content)
    fun restore(m: EditorState) { content = m.text }
}

// --- Caretaker ---
class History {
    private val undo = ArrayDeque&amp;lt;EditorState&amp;gt;()
    private val redo = ArrayDeque&amp;lt;EditorState&amp;gt;()

    fun push(s: EditorState) { undo.addLast(s); redo.clear() }
    fun canUndo() = undo.isNotEmpty()
    fun canRedo() = redo.isNotEmpty()

    fun undo(current: EditorState): EditorState? =
        if (undo.isEmpty()) null
        else undo.removeLast().also { redo.addLast(current) }

    fun redo(current: EditorState): EditorState? =
        if (redo.isEmpty()) null
        else redo.removeLast().also { undo.addLast(current) }
}

// --- 사용 ---
val editor = TextEditor()
val history = History()

editor.write(&quot;Hello, &quot;); history.push(editor.save())
editor.write(&quot;World!&quot;);  history.push(editor.save())

val prev = history.undo(editor.save())
if (prev != null) editor.restore(prev)   // &quot;Hello, &quot;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2274&quot; data-start=&quot;2208&quot; data-ke-size=&quot;size16&quot;&gt;핵심은 &lt;b&gt;복원 로직이 오직 restore() 한 줄&lt;/b&gt;이라는 것. 여기저기 뒤엉킨 롤백 코드를 걷어낼 수 있어요.&lt;/p&gt;
&lt;hr data-end=&quot;2279&quot; data-start=&quot;2276&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2311&quot; data-start=&quot;2281&quot; data-ke-size=&quot;size26&quot;&gt;실무에서 바로 쓰는 팁 (안드로이드&amp;middot;백엔드 공통)&lt;/h2&gt;
&lt;h3 data-end=&quot;2335&quot; data-start=&quot;2313&quot; data-ke-size=&quot;size23&quot;&gt;1) 스냅샷 최소화 &amp;amp; 깊은 복사&lt;/h3&gt;
&lt;p data-end=&quot;2467&quot; data-start=&quot;2336&quot; data-ke-size=&quot;size16&quot;&gt;스냅샷에 꼭 필요한 필드만 담으세요(재생 위치, 선택된 언어 등). &lt;b&gt;참조 타입은 깊은 복사&lt;/b&gt;를 고려하지 않으면 복원 후 값이 바뀌는 &lt;b&gt;유령 버그&lt;/b&gt;가 생깁니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-end=&quot;2494&quot; data-start=&quot;2469&quot; data-ke-size=&quot;size23&quot;&gt;2) 보관 전략(메모리 vs. 영속화)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2653&quot; data-start=&quot;2495&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2533&quot; data-start=&quot;2495&quot;&gt;&lt;b&gt;가벼운 편집&lt;/b&gt;: ArrayDeque 스택만으로 OK.&lt;/li&gt;
&lt;li data-end=&quot;2653&quot; data-start=&quot;2534&quot;&gt;&lt;b&gt;큰 상태/장시간 작업&lt;/b&gt;: Room/파일/직렬화로 오프로드. (Refactoring.Guru 한국어 문서도 직렬화를 일반적 방법으로 언급) &lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2677&quot; data-start=&quot;2655&quot; data-ke-size=&quot;size23&quot;&gt;3) Undo/Redo UX 규칙&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2834&quot; data-start=&quot;2678&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2738&quot; data-start=&quot;2678&quot;&gt;사용자 행위 &lt;b&gt;단위&lt;/b&gt;에 맞춰 저장(입력 30자마다 X, &amp;ldquo;문단 완료&amp;rdquo;나 onPause 시점 O).&lt;/li&gt;
&lt;li data-end=&quot;2834&quot; data-start=&quot;2739&quot;&gt;&lt;b&gt;Redo 무효화&lt;/b&gt;: Undo 뒤 편집이 발생하면 Redo 스택은 비웁니다(편집기 표준 UX).&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2860&quot; data-start=&quot;2836&quot; data-ke-size=&quot;size23&quot;&gt;4) Command 패턴과 혼동 금지&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3016&quot; data-start=&quot;2861&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2914&quot; data-start=&quot;2861&quot;&gt;&lt;b&gt;Command&lt;/b&gt;: &amp;ldquo;행위를 객체화&amp;rdquo;해서 실행/취소를 기록(redo/undo 가능).&lt;/li&gt;
&lt;li data-end=&quot;3016&quot; data-start=&quot;2915&quot;&gt;&lt;b&gt;Memento&lt;/b&gt;: &amp;ldquo;상태 스냅샷&amp;rdquo;을 저장&amp;middot;복원. 둘을 함께 쓰기도 합니다(커맨드 실행 전 스냅샷 저장).&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;3031&quot; data-start=&quot;3018&quot; data-ke-size=&quot;size23&quot;&gt;5) 테스트 전략&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3138&quot; data-start=&quot;3032&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;3092&quot; data-start=&quot;3032&quot;&gt;&lt;b&gt;단위 테스트&lt;/b&gt;: 여러 번의 write() 후 undo() &amp;rarr; 기대 텍스트를 정확히 검증.&lt;/li&gt;
&lt;li data-end=&quot;3138&quot; data-start=&quot;3093&quot;&gt;&lt;b&gt;회귀 테스트&lt;/b&gt;: 깊은 복사 누락 케이스(리스트/맵 포함)를 따로 만든다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1754625760737&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Test
fun `undo restores previous snapshot`() {
    val e = TextEditor(); val h = History()
    e.write(&quot;A&quot;); h.push(e.save())
    e.write(&quot;B&quot;); h.push(e.save())
    val prev = h.undo(e.save())
    assertEquals(&quot;A&quot;, prev?.text)
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;3388&quot; data-start=&quot;3385&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;3400&quot; data-start=&quot;3390&quot; data-ke-size=&quot;size26&quot;&gt;장단점 총정리&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3614&quot; data-start=&quot;3401&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;3490&quot; data-start=&quot;3401&quot;&gt;&lt;b&gt;장점&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3490&quot; data-start=&quot;3414&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;3451&quot; data-start=&quot;3414&quot;&gt;캡슐화 유지: 내부 구현을 외부에 노출하지 않고 복원 가능.&lt;/li&gt;
&lt;li data-end=&quot;3490&quot; data-start=&quot;3454&quot;&gt;단순한 롤백: 복원은 restore() 한 번으로 끝.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3614&quot; data-start=&quot;3491&quot;&gt;&lt;b&gt;단점&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3614&quot; data-start=&quot;3504&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;3535&quot; data-start=&quot;3504&quot;&gt;메모리 사용: 스냅샷이 크거나 잦으면 용량 부담.&lt;/li&gt;
&lt;li data-end=&quot;3614&quot; data-start=&quot;3538&quot;&gt;깊은 복사 비용: 안전한 스냅샷을 위한 추가 비용이 들 수 있음.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>개발</category>
      <category>Kotlin예제</category>
      <category>MementoPattern</category>
      <category>UndoRedo</category>
      <category>디자인패턴</category>
      <category>메멘토패턴</category>
      <category>소프트웨어아키텍처</category>
      <category>행위패턴</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1968</guid>
      <comments>https://stack-queue.tistory.com/1968#entry1968comment</comments>
      <pubDate>Fri, 8 Aug 2025 13:03:14 +0900</pubDate>
    </item>
    <item>
      <title>한국카본 분석: LNG 보냉재 톱티어, 아직 덜 알려진 KOSPI 수혜주</title>
      <link>https://stack-queue.tistory.com/1967</link>
      <description>&lt;p data-end=&quot;290&quot; data-start=&quot;58&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;왜 이 종목?&lt;/b&gt;&lt;br /&gt;한국카본은 KOSPI에 상장된 복합소재 기업으로, LNG 운반선의 핵심 부품인 &lt;b&gt;보냉재(Insulation System)&lt;/b&gt; 를 만든다. GTT 인증 기반의 &lt;b&gt;RSB/FSB&lt;/b&gt; 제품을 공급하고, 국내 조선 &amp;lsquo;빅3&amp;rsquo;(HD현대중공업&amp;middot;삼성중공업&amp;middot;한화오션)에 납품한다. 조선 사이클이 길어질수록 실적 레버리지가 커지는 구조다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr data-end=&quot;295&quot; data-start=&quot;292&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;315&quot; data-start=&quot;297&quot; data-ke-size=&quot;size23&quot;&gt;1) 비즈니스 한 줄 정리&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;612&quot; data-start=&quot;316&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;403&quot; data-start=&quot;316&quot;&gt;&lt;b&gt;주력:&lt;/b&gt; LNG선 화물창용 보냉재(RSB&amp;middot;FSB), 탄소/유리섬유 복합소재.&lt;/li&gt;
&lt;li data-end=&quot;523&quot; data-start=&quot;404&quot;&gt;&lt;b&gt;고객 저변:&lt;/b&gt; GTT 멤브레인 타입 인증으로 글로벌 조선사에 공급, &lt;b&gt;한화오션의 NO96-SUPER+&lt;/b&gt; 채택과 함께 고객 다변화. &lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;612&quot; data-start=&quot;524&quot;&gt;&lt;b&gt;포지셔닝:&lt;/b&gt; 국내 보냉재는 사실상 &lt;b&gt;한국카본&amp;middot;동성화인텍의 과점 구조&lt;/b&gt;로 평가.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;617&quot; data-start=&quot;614&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;632&quot; data-start=&quot;619&quot; data-ke-size=&quot;size23&quot;&gt;2) 요즘 모멘텀&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1169&quot; data-start=&quot;633&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;753&quot; data-start=&quot;633&quot;&gt;&lt;b&gt;CAPA 증설 완료 &amp;amp; 라인 이원화:&lt;/b&gt; 2024년 5월 증설을 마치고 기존 1개 &amp;rarr; 2개 공장에서 보냉재 생산, 수주 증가에 대응 중.&lt;/li&gt;
&lt;li data-end=&quot;875&quot; data-start=&quot;754&quot;&gt;&lt;b&gt;제품/레퍼런스 강화:&lt;/b&gt; 세계 최초 &lt;b&gt;NO96-SUPER+&lt;/b&gt; 타입 보냉재 수주(&amp;rsquo;22) 이후, 한화오션 채택으로 상업적 레퍼런스 축적.&lt;/li&gt;
&lt;li data-end=&quot;875&quot; data-start=&quot;754&quot;&gt;&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;실적 흐름:&lt;/b&gt; 2025년 1분기(연결) 매출 2,246억, 영업이익 311억, 지배순이익 219억. 전년 동기 대비 큰 폭 개선. 다음 실적 발표 예정일은 &lt;b&gt;2025년 8월 18일&lt;/b&gt;.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1169&quot; data-start=&quot;1064&quot;&gt;&lt;b&gt;수주 사이클:&lt;/b&gt; 2025년 보냉재 &lt;b&gt;신규 수주 6,000억 원 수준 기대&lt;/b&gt; 등 업황 우호 뉴스 플로우 지속.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1174&quot; data-start=&quot;1171&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1195&quot; data-start=&quot;1176&quot; data-ke-size=&quot;size23&quot;&gt;3) 투자 포인트 (핵심만)&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1584&quot; data-start=&quot;1196&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1353&quot; data-start=&quot;1196&quot;&gt;&lt;b&gt;조선 사이클 장기화의 정중앙&lt;/b&gt;&lt;br /&gt;국내 조선 3사의 수주잔고에서 LNG선 비중이 매우 높아 구조적 파이프라인이 두텁다. 보냉재는 LNG선 건조에 필수라 수주&amp;middot;인도 흐름이 실적으로 전이되기 좋다.&lt;/li&gt;
&lt;li data-end=&quot;1477&quot; data-start=&quot;1354&quot;&gt;&lt;b&gt;과점 구조 + 기술 장벽&lt;/b&gt;&lt;br /&gt;GTT 인증 체계 안에서 수년간 축적된 제조/품질 역량과 RSB 등 특화 제품이 진입장벽으로 작동.&lt;/li&gt;
&lt;li data-end=&quot;1584&quot; data-start=&quot;1478&quot;&gt;&lt;b&gt;증설 완료에 따른 탄력도&lt;/b&gt;&lt;br /&gt;CAPA 확대로 피크 아웃 우려보다 &lt;b&gt;실적 볼륨업&lt;/b&gt; 구간이 기대된다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-end=&quot;1589&quot; data-start=&quot;1586&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1611&quot; data-start=&quot;1591&quot; data-ke-size=&quot;size23&quot;&gt;4) 리스크 체크 (꼭 보자)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1964&quot; data-start=&quot;1612&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1770&quot; data-start=&quot;1612&quot;&gt;&lt;b&gt;GTT(프랑스) 라이선스 종속 &amp;amp; 로열티 구조&lt;/b&gt;&lt;br /&gt;LNG 화물창 원천기술을 GTT가 사실상 독점, &lt;b&gt;척당 선가의 약 5% 수준 로열티&lt;/b&gt;가 발생. 제도&amp;middot;분쟁&amp;middot;계약 조건 변화 시 수익성 변동성.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1857&quot; data-start=&quot;1771&quot;&gt;&lt;b&gt;사이클/환율/원재료 민감도&lt;/b&gt;&lt;br /&gt;조선 발주 지연&amp;middot;취소, 환율 급변, 복합소재 원재료 가격 변동은 실적 변동성 요인. (일반적 업종 리스크)&lt;/li&gt;
&lt;li data-end=&quot;1964&quot; data-start=&quot;1858&quot;&gt;&lt;b&gt;집중도 리스크&lt;/b&gt;&lt;br /&gt;LNG 보냉재 비중이 높아 업황 둔화 시 방어력이 약해질 수 있음. (다각화 진행 중)&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1969&quot; data-start=&quot;1966&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1989&quot; data-start=&quot;1971&quot; data-ke-size=&quot;size23&quot;&gt;5) 밸류 &amp;amp; 수급 한 컷&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2225&quot; data-start=&quot;1990&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2128&quot; data-start=&quot;1990&quot;&gt;&lt;b&gt;시가총액/유통:&lt;/b&gt; 2025-08-07 기준 시가총액 약 1.68조, 외국인 지분 12.5% 수준. 52주 최저 9,410원 &amp;rarr; 최고 32,450원으로 리레이팅 중.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;2225&quot; data-start=&quot;2129&quot;&gt;&lt;b&gt;컨센서스 톤:&lt;/b&gt; 증권가 평균 투자의견 &amp;lsquo;매수(4.0)&amp;rsquo;, 목표가 31,000원(변동 가능).&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2230&quot; data-start=&quot;2227&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;2271&quot; data-start=&quot;2232&quot; data-ke-size=&quot;size23&quot;&gt;6) 레퍼런스(국내 자료&amp;middot;블로그 위주, 가독성 높은 글들 중심)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2561&quot; data-start=&quot;2272&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2374&quot; data-start=&quot;2272&quot;&gt;&lt;b&gt;회사/공시/펀더멘털:&lt;/b&gt; 에프앤가이드 스냅샷, 한국카본 공식 제품 페이지/연혁, IR 전자공시 목록.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;2459&quot; data-start=&quot;2375&quot;&gt;&lt;b&gt;업황&amp;middot;뉴스:&lt;/b&gt; 조선&amp;middot;LNG 특수 관련 기사(조선비즈, 블로터 등).&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;2561&quot; data-start=&quot;2460&quot;&gt;&lt;b&gt;국내 블로그 참고:&lt;/b&gt; 티스토리의 한국카본 분석 포스팅(핵심 개념&amp;middot;과거 자료 정리 중심으로 교차검증).&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-end=&quot;2652&quot; data-start=&quot;2563&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;2652&quot; data-start=&quot;2565&quot; data-ke-size=&quot;size16&quot;&gt;※ 숫자는 공시/데이터 제공처 업데이트에 따라 바뀔 수 있어요. 위 인용 시점(특히 시가총액/주가/발표일 등)은 각 출처의 표기 날짜 기준으로 명시했습니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;2657&quot; data-start=&quot;2654&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2668&quot; data-start=&quot;2659&quot; data-ke-size=&quot;size26&quot;&gt;한 줄 결론&lt;/h2&gt;
&lt;p data-end=&quot;2789&quot; data-start=&quot;2669&quot; data-ke-size=&quot;size16&quot;&gt;LNG선 호황과 CAPA 확대로 &lt;b&gt;볼륨이 커지는 과점 사업자&lt;/b&gt;. 다만 &lt;b&gt;GTT 로열티 구조&lt;/b&gt;라는 태생적 리스크를 이해한 뒤 접근하면, &amp;ldquo;비(非)메이저 KOSPI&amp;rdquo; 중에서는 스토리&amp;middot;실적 모두 설득력 있는 종목.&lt;/p&gt;</description>
      <category>재테크</category>
      <category>gtt</category>
      <category>KOSPI</category>
      <category>lng선</category>
      <category>과점</category>
      <category>보냉재</category>
      <category>실적분석</category>
      <category>조선기자재</category>
      <category>주가전망</category>
      <category>한국카본</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1967</guid>
      <comments>https://stack-queue.tistory.com/1967#entry1967comment</comments>
      <pubDate>Fri, 8 Aug 2025 13:01:10 +0900</pubDate>
    </item>
    <item>
      <title>장마철 일본어 표현 12선 &amp;ndash; 우산 챙길 때 꼭 써먹는 한 마디</title>
      <link>https://stack-queue.tistory.com/1966</link>
      <description>&lt;p data-end=&quot;292&quot; data-start=&quot;40&quot; data-ke-size=&quot;size16&quot;&gt;장마가 시작되면 비가 끝도 없이 쏟아지고, 습기는 치솟아 머리카락은 부풀고 기분도 축축해지죠. 일본도 마찬가지! &lt;b&gt;비‧우산‧습기&lt;/b&gt; 이야기는 어디서든 스몰토크 1순위입니다. 오늘은 일본 여행&amp;middot;유학&amp;middot;비즈니스 출장 전에 알아두면 무조건 써먹는 &lt;b&gt;장마철 일본어 필수 어휘 12가지&lt;/b&gt;를 소개합니다.&lt;/p&gt;
&lt;hr data-end=&quot;297&quot; data-start=&quot;294&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;323&quot; data-start=&quot;299&quot; data-ke-size=&quot;size23&quot;&gt;1. つゆ (tsuyu) &amp;ndash; &amp;lsquo;장마&amp;rsquo;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;372&quot; data-start=&quot;324&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;372&quot; data-start=&quot;324&quot;&gt;일본의 6‧7월 긴 비 시즌. &amp;ldquo;つゆ に なったね&amp;rdquo; 하면 &amp;ldquo;드디어 장마네&amp;rdquo;라는 뜻!&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;395&quot; data-start=&quot;374&quot; data-ke-size=&quot;size23&quot;&gt;2. あめ (ame) &amp;ndash; &amp;lsquo;비&amp;rsquo;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;430&quot; data-start=&quot;396&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;430&quot; data-start=&quot;396&quot;&gt;기본 단어. &amp;ldquo;あめ が ふって いる&amp;rdquo; = 비가 오고 있어.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;487&quot; data-start=&quot;432&quot; data-ke-size=&quot;size23&quot;&gt;3. かさ (kasa) / ビニールかさ (biniiru kasa) &amp;ndash; &amp;lsquo;우산 / 비닐 우산&amp;rsquo;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;525&quot; data-start=&quot;488&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;525&quot; data-start=&quot;488&quot;&gt;편의점에서 500엔 정도면 살 수 있는 비닐 우산이 특히 유명.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;566&quot; data-start=&quot;527&quot; data-ke-size=&quot;size23&quot;&gt;4. かさ を さす (kasa o sasu) &amp;ndash; &amp;lsquo;우산을 쓰다&amp;rsquo;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;603&quot; data-start=&quot;567&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;603&quot; data-start=&quot;567&quot;&gt;&amp;ldquo;かさ さして！&amp;rdquo; 한마디면 &amp;ldquo;우산 써!&amp;rdquo;라는 급한 경고 완성.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;639&quot; data-start=&quot;605&quot; data-ke-size=&quot;size23&quot;&gt;5. あまやどり (amayadori) &amp;ndash; &amp;lsquo;비를 피함&amp;rsquo;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;677&quot; data-start=&quot;640&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;677&quot; data-start=&quot;640&quot;&gt;&amp;ldquo;コンビニ で あまやどり しよう&amp;rdquo; = 편의점에서 비 좀 피하자.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;716&quot; data-start=&quot;679&quot; data-ke-size=&quot;size23&quot;&gt;6. むしあつい (mushi atsui) &amp;ndash; &amp;lsquo;후덥지근하다&amp;rsquo;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;748&quot; data-start=&quot;717&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;748&quot; data-start=&quot;717&quot;&gt;습도 높은 날씨 묘사. 한국어 &amp;lsquo;찝찝하다&amp;rsquo;와도 비슷.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;789&quot; data-start=&quot;750&quot; data-ke-size=&quot;size23&quot;&gt;7. じめじめ する (jimejime suru) &amp;ndash; &amp;lsquo;눅눅하다&amp;rsquo;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;844&quot; data-start=&quot;790&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;844&quot; data-start=&quot;790&quot;&gt;방 안 습기를 말할 때 자주 사용. &amp;ldquo;へや が じめじめ して いやだ&amp;rdquo; = 방이 눅눅해서 싫어.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;880&quot; data-start=&quot;846&quot; data-ke-size=&quot;size23&quot;&gt;8. しめっぽい (shimettpoi) &amp;ndash; &amp;lsquo;축축하다&amp;rsquo;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;911&quot; data-start=&quot;881&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;911&quot; data-start=&quot;881&quot;&gt;옷이나 수건에 물기가 남았을 때도 이 표현을 쓴다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;940&quot; data-start=&quot;913&quot; data-ke-size=&quot;size23&quot;&gt;9. すいぶん (suibun) &amp;ndash; &amp;lsquo;수분&amp;rsquo;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;964&quot; data-start=&quot;941&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;964&quot; data-start=&quot;941&quot;&gt;&amp;ldquo;すいぶん が 多い&amp;rdquo; &amp;rarr; 습기가 많다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1006&quot; data-start=&quot;966&quot; data-ke-size=&quot;size23&quot;&gt;10. あめ が やむ (ame ga yamu) &amp;ndash; &amp;lsquo;비가 그치다&amp;rsquo;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1035&quot; data-start=&quot;1007&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1035&quot; data-start=&quot;1007&quot;&gt;&amp;ldquo;やんだ？&amp;rdquo;만 던져도 &amp;ldquo;비 그쳤어?&amp;rdquo;라는 의미.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1084&quot; data-start=&quot;1037&quot; data-ke-size=&quot;size23&quot;&gt;11. かみなり が なる (kaminari ga naru) &amp;ndash; &amp;lsquo;천둥이 치다&amp;rsquo;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1109&quot; data-start=&quot;1085&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1109&quot; data-start=&quot;1085&quot;&gt;장마철 번개 동반 폭우 예보에 꼭 등장.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1158&quot; data-start=&quot;1111&quot; data-ke-size=&quot;size23&quot;&gt;12. くもり のち あめ (kumori nochi ame) &amp;ndash; &amp;lsquo;흐렸다가 비&amp;rsquo;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1190&quot; data-start=&quot;1159&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1190&quot; data-start=&quot;1159&quot;&gt;일기예보 빈출 표현. 일본 TV‧앱에서 자주 보인다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1195&quot; data-start=&quot;1192&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1208&quot; data-start=&quot;1197&quot; data-ke-size=&quot;size23&quot;&gt;실전 활용 팁&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1420&quot; data-start=&quot;1209&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1281&quot; data-start=&quot;1209&quot;&gt;&lt;b&gt;우산 빌리기&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1281&quot; data-start=&quot;1228&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1281&quot; data-start=&quot;1228&quot;&gt;&amp;ldquo;すみません、かさ を かして いただけますか？&amp;rdquo; (실례지만 우산 빌려 주실 수 있을까요?)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1350&quot; data-start=&quot;1282&quot;&gt;&lt;b&gt;습도 토크 열기&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1350&quot; data-start=&quot;1303&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1350&quot; data-start=&quot;1303&quot;&gt;엘리베이터 안에서 &amp;ldquo;きょう むしあつい ですね&amp;rdquo; 한마디면 자연스럽게 대화 시작!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1420&quot; data-start=&quot;1351&quot;&gt;&lt;b&gt;쇼핑 &amp;amp; 날씨 앱&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1420&quot; data-start=&quot;1373&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1420&quot; data-start=&quot;1373&quot;&gt;앱 알림에 &amp;ldquo;あめ が やみました&amp;rdquo;가 뜨면 비 그친 신호. 바로 움직이기 좋다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>일본어공부</category>
      <category>비관련일본어</category>
      <category>습기일본어</category>
      <category>우산일본어표현</category>
      <category>일본어회화</category>
      <category>일본여행준비</category>
      <category>장마철일본어</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1966</guid>
      <comments>https://stack-queue.tistory.com/1966#entry1966comment</comments>
      <pubDate>Wed, 30 Jul 2025 17:04:42 +0900</pubDate>
    </item>
    <item>
      <title>2025 친환경차 관세&amp;middot;보조금 지도: 북미&amp;middot;EU&amp;middot;중국 한눈에 보기</title>
      <link>https://stack-queue.tistory.com/1965</link>
      <description>&lt;p data-end=&quot;187&quot; data-start=&quot;88&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;전기차 가격 = &lt;b&gt;차값 + 관세 &amp;ndash; 보조금&lt;/b&gt;.&amp;rdquo;&lt;br /&gt;같은 모델이라도 지역마다 &amp;lsquo;실구매가&amp;rsquo;가 달라지는 이유다. 2025년 현재 북미&amp;middot;유럽&amp;middot;중국의 제도를 한 번에 정리했다.&lt;/p&gt;
&lt;hr data-end=&quot;192&quot; data-start=&quot;189&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;221&quot; data-start=&quot;194&quot; data-ke-size=&quot;size26&quot;&gt;1. 북미: &amp;lsquo;세제 + 관세&amp;rsquo; 이중 필터&lt;/h2&gt;
&lt;p data-end=&quot;231&quot; data-start=&quot;223&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;미국&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;511&quot; data-start=&quot;232&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;373&quot; data-start=&quot;232&quot;&gt;인플레이션감축법(IRA) 크레딧 최대 7,500 달러. 배터리 핵심광물&amp;middot;부품 비중 조건, 최종 조립이 북미여야 인정된다. 혜택은 2025년 9월 30일까지만 제공될 전망이다. &lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;511&quot; data-start=&quot;374&quot;&gt;2025년 4월부터 북미 외 조립 승용차&amp;middot;트럭에는 25 % 글로벌 관세가 적용된다. 단, &lt;b&gt;USMCA(미국&amp;middot;멕시코&amp;middot;캐나다 협정)&lt;/b&gt; 원산지 요건을 충족하면 0 % 유지. &lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;522&quot; data-start=&quot;513&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;캐나다&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;676&quot; data-start=&quot;523&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;676&quot; data-start=&quot;523&quot;&gt;연방 &lt;b&gt;iZEV 프로그램&lt;/b&gt;: 배터리 EV&amp;middot;수소차&amp;middot;장거리 PHEV 최대 5,000 캐나다달러(단기 PHEV 2,500 달러). 2025년 예산 조기 소진으로 일시 중단됐지만 정부는 연장안 검토 중. &lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;687&quot; data-start=&quot;678&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;멕시코&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;802&quot; data-start=&quot;688&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;802&quot; data-start=&quot;688&quot;&gt;미국 25 % 관세의 직격탄을 피하려고 &amp;lsquo;Plan Mexico&amp;rsquo; 등 전기차 현지 투자, 라틴아메리카 수출 다변화 전략을 가동 중. &lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-end=&quot;925&quot; data-start=&quot;804&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;820&quot; data-start=&quot;806&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;북미 체크포인트&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;925&quot; data-start=&quot;823&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;881&quot; data-start=&quot;823&quot;&gt;북미 최종 조립&amp;middot;배터리 소싱을 맞추면 관세 0 % + 7,500 달러 세액공제 동시 노림수 가능&lt;/li&gt;
&lt;li data-end=&quot;925&quot; data-start=&quot;884&quot;&gt;멕시코 생산 라인이라도 IRA 광물&amp;middot;부품 기준을 만족해야 크레딧 적용&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;930&quot; data-start=&quot;927&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;973&quot; data-start=&quot;932&quot; data-ke-size=&quot;size26&quot;&gt;2. 유럽연합(EU): 기본 10 % + 중국 EV 추가 관세 폭탄&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1316&quot; data-start=&quot;975&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1050&quot; data-start=&quot;975&quot;&gt;EU는 승용차 수입에 기본 10 % MFN 관세를 부과한다.&lt;/li&gt;
&lt;li data-end=&quot;1184&quot; data-start=&quot;1051&quot;&gt;2024~2025년 반보조금 조사 결과, 중국산 BEV에 &lt;b&gt;최대 45 %&lt;/b&gt; 추가 관세(브랜드별 7.8 %~35.3 %)를 부과하기로 결정, 5년간 유지될 전망.&lt;/li&gt;
&lt;li data-end=&quot;1316&quot; data-start=&quot;1185&quot;&gt;회원국 보조금은 국별 편차가 크다. 예) &lt;b&gt;프랑스 &amp;lsquo;에코 보너스&amp;rsquo;&lt;/b&gt; 2025년 기준 소득 따라 최대 4,000 유로(저소득층은 7,000 유로 한도) 유지. &lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-end=&quot;1450&quot; data-start=&quot;1318&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1334&quot; data-start=&quot;1320&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;EU 체크포인트&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1450&quot; data-start=&quot;1337&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1388&quot; data-start=&quot;1337&quot;&gt;중국&amp;middot;한국 업체가 EU로 완성차를 보내려면 10 % + 추가관세(해당 시) 감안 필수&lt;/li&gt;
&lt;li data-end=&quot;1450&quot; data-start=&quot;1391&quot;&gt;현지 공장&amp;middot;KD(노크다운) 조립으로 관세 회피, 또는 프랑스&amp;middot;스페인 등 잔여 보조금 활용 전략 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;1455&quot; data-start=&quot;1452&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1494&quot; data-start=&quot;1457&quot; data-ke-size=&quot;size26&quot;&gt;3. 중국: &amp;lsquo;내수 세금면제&amp;rsquo; vs &amp;lsquo;수입 15 % 관세&amp;rsquo;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1713&quot; data-start=&quot;1496&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1618&quot; data-start=&quot;1496&quot;&gt;&lt;b&gt;NEV(친환경차) 구매세 면제&lt;/b&gt;: 2024~2025년 최대 30,000 위안(약 420 만원) 세금 감면, 2027년까지 단계 절반 연장.&amp;nbsp;&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1713&quot; data-start=&quot;1619&quot;&gt;&lt;b&gt;수입 관세&lt;/b&gt;: 승용차 MFN 15 % 기본세율. 대형 가솔린차엔 25 % 상향 검토 중.&amp;nbsp;&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-end=&quot;1818&quot; data-start=&quot;1715&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1731&quot; data-start=&quot;1717&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;중국 체크포인트&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1818&quot; data-start=&quot;1734&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1776&quot; data-start=&quot;1734&quot;&gt;해외 브랜드는 15 % 관세+보증금&amp;middot;소비세까지 고려한 가격 설정 필요&lt;/li&gt;
&lt;li data-end=&quot;1818&quot; data-start=&quot;1779&quot;&gt;국산 브랜드는 세금 면제 덕에 내수 경쟁 가격 우위를 지속 확보&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;1823&quot; data-start=&quot;1820&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1841&quot; data-start=&quot;1825&quot; data-ke-size=&quot;size23&quot;&gt;지역별 한 줄 요약&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1965&quot; data-start=&quot;1843&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1879&quot; data-start=&quot;1843&quot;&gt;&lt;b&gt;미국&lt;/b&gt;: &amp;ldquo;북미산 인증이면 세금 깎고 관세도 없다.&amp;rdquo;&lt;/li&gt;
&lt;li data-end=&quot;1925&quot; data-start=&quot;1880&quot;&gt;&lt;b&gt;EU&lt;/b&gt;: &amp;ldquo;중국 EV엔 관세 가중, 국별 보조금은 아직 남아 있다.&amp;rdquo;&lt;/li&gt;
&lt;li data-end=&quot;1965&quot; data-start=&quot;1926&quot;&gt;&lt;b&gt;중국&lt;/b&gt;: &amp;ldquo;내수엔 세금 면제, 외산엔 15 % 관세 벽.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1970&quot; data-start=&quot;1967&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1996&quot; data-start=&quot;1972&quot; data-ke-size=&quot;size26&quot;&gt;한국 기업&amp;middot;소비자를 위한 액션 플랜&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;2178&quot; data-start=&quot;1998&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;2054&quot; data-start=&quot;1998&quot;&gt;&lt;b&gt;공장 위치+배터리 소싱 동시 최적화&lt;/b&gt; &amp;ndash; 북미&amp;middot;EU 관세&amp;middot;세액공제 두 마리 토끼 잡기.&lt;/li&gt;
&lt;li data-end=&quot;2118&quot; data-start=&quot;2055&quot;&gt;&lt;b&gt;&amp;lsquo;투자 패키지&amp;rsquo; 협상 준비&lt;/b&gt; &amp;ndash; 미국&amp;middot;EU에 조립&amp;middot;R&amp;amp;D 투자안을 제시해 관세 인하 레버리지 확보.&lt;/li&gt;
&lt;li data-end=&quot;2178&quot; data-start=&quot;2119&quot;&gt;&lt;b&gt;현지 보조금 레이더&lt;/b&gt; &amp;ndash; 프랑스&amp;middot;영국 등 잔존 구매 보조금을 활용해 판매 가격 경쟁력 방어.&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>재테크</category>
      <category>EU중국EV관세</category>
      <category>EV인센티브</category>
      <category>IRA세액공제</category>
      <category>NEV세금면제</category>
      <category>친환경차관세</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1965</guid>
      <comments>https://stack-queue.tistory.com/1965#entry1965comment</comments>
      <pubDate>Wed, 30 Jul 2025 16:27:54 +0900</pubDate>
    </item>
    <item>
      <title>Visitor 패턴: &amp;ldquo;구조는 그대로, 기능은 덧붙여&amp;rdquo;</title>
      <link>https://stack-queue.tistory.com/1964</link>
      <description>&lt;p data-end=&quot;320&quot; data-start=&quot;81&quot; data-ke-size=&quot;size16&quot;&gt;객체 트리(파일 시스템, 문서 AST, UI 컴포넌트&amp;hellip;)에 &lt;b&gt;새로운 연산&lt;/b&gt;을 넣어야 할 때, 모든 클래스에 메서드를 추가하자니 코드가 산으로 가고, 상속도 이미 꽉 차 있다면?&lt;br /&gt;&lt;b&gt;Visitor 패턴&lt;/b&gt;은 데이터 구조(Elements) 와 알고리즘(Visitors) 을 분리해 &lt;b&gt;&amp;ldquo;클래스 손대지 않고 기능만 플러그인&amp;rdquo;&lt;/b&gt; 할 수 있게 해 줍니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-end=&quot;336&quot; data-start=&quot;322&quot; data-ke-size=&quot;size23&quot;&gt;언제 쓰면 딱일까?&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;606&quot; data-start=&quot;337&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;402&quot; data-start=&quot;337&quot;&gt;&lt;b&gt;컴파일러&amp;middot;파서&lt;/b&gt;: 구문 트리를 돌며 타입 체크, 코드 생성, pretty print 등 다양한 작업 추가&lt;/li&gt;
&lt;li data-end=&quot;451&quot; data-start=&quot;403&quot;&gt;&lt;b&gt;UI 테스트 자동화&lt;/b&gt;: 위젯 트리를 방문하며 스냅샷&amp;middot;접근성 검사&amp;middot;통계 수집&lt;/li&gt;
&lt;li data-end=&quot;510&quot; data-start=&quot;452&quot;&gt;&lt;b&gt;파일 탐색기&lt;/b&gt;: 디렉터리&amp;middot;파일 객체 구조에 압축, 용량 계산, 권한 검사 등 추가 기능 삽입&lt;/li&gt;
&lt;li data-end=&quot;559&quot; data-start=&quot;511&quot;&gt;&lt;b&gt;게임 엔진&lt;/b&gt;: 씬 그래프에 충돌 검사, 렌더링, AI 패스 한 번에 붙이기&lt;/li&gt;
&lt;li data-end=&quot;606&quot; data-start=&quot;560&quot;&gt;&lt;b&gt;로그&amp;middot;모니터링&lt;/b&gt;: 객체 계층을 돌며 메트릭을 추출해 Grafana 로 전송&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-end=&quot;728&quot; data-start=&quot;608&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;728&quot; data-start=&quot;610&quot; data-ke-size=&quot;size16&quot;&gt;핵심은 &lt;b&gt;Element 쪽엔 accept(visitor) 한 줄만 두고&lt;/b&gt;, 나머지 모든 연산은 Visitor 서브클래스에서 해결한다는 것!&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 data-end=&quot;761&quot; data-start=&quot;730&quot; data-ke-size=&quot;size23&quot;&gt;Kotlin 미니 예제 &amp;ndash; 파일 시스템 용량 계산&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1753860313331&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// --- Element 계층 ---
interface FsNode { fun accept(v: FsVisitor) }
class File(val size: Long) : FsNode {
    override fun accept(v: FsVisitor) = v.visitFile(this)
}
class Folder(val children: List&amp;lt;FsNode&amp;gt;) : FsNode {
    override fun accept(v: FsVisitor) = v.visitFolder(this)
}

// --- Visitor 계층 ---
interface FsVisitor {
    fun visitFile(file: File)
    fun visitFolder(folder: Folder)
}

class SizeCalculatorVisitor : FsVisitor {
    var total: Long = 0
        private set
    override fun visitFile(file: File) { total += file.size }
    override fun visitFolder(folder: Folder) { folder.children.forEach { it.accept(this) } }
}

// --- 사용 ---
val tree = Folder(
    listOf(
        File(1200),
        Folder(listOf(File(800), File(400)))
    )
)

val calc = SizeCalculatorVisitor()
tree.accept(calc)
println(&quot;총 용량: ${calc.total} bytes&quot;)  // 2,400 bytes&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1771&quot; data-start=&quot;1641&quot; data-ke-size=&quot;size16&quot;&gt;새로운 기능(예: &lt;b&gt;파일 암호화 Visitor&lt;/b&gt;)을 추가해도 File&amp;middot;Folder 클래스는 전혀 수정하지 않습니다. 구조와 연산이 완벽히 분리됐기 때문이죠.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-end=&quot;1784&quot; data-start=&quot;1773&quot; data-ke-size=&quot;size23&quot;&gt;테스트 스케치&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1753860357957&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Test
fun `Visitor가 모든 노드를 방문해 용량을 합산한다`() {
    val root = Folder(listOf(File(10), Folder(listOf(File(20)))))
    val v = SizeCalculatorVisitor().also { root.accept(it) }
    assertEquals(30, v.total)
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;2019&quot; data-start=&quot;2005&quot; data-ke-size=&quot;size23&quot;&gt;장 점 vs 단 점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2291&quot; data-start=&quot;2020&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2076&quot; data-start=&quot;2020&quot;&gt;&lt;b&gt;  기능 추가 OCP&lt;/b&gt;: 새 Visitor 만들면 끝&amp;mdash;Element는 건드리지 않는다.&lt;/li&gt;
&lt;li data-end=&quot;2128&quot; data-start=&quot;2077&quot;&gt;&lt;b&gt;  행위 집중&lt;/b&gt;: 관련 로직이 Visitor 내부에 모여 읽기&amp;middot;테스트가 쉽다.&lt;/li&gt;
&lt;li data-end=&quot;2199&quot; data-start=&quot;2129&quot;&gt;&lt;b&gt;  Element 변경 &amp;uarr; 비용&lt;/b&gt;: Element 타입이 자주 바뀌면 모든 Visitor에 메서드 추가해야 함.&lt;/li&gt;
&lt;li data-end=&quot;2291&quot; data-start=&quot;2200&quot;&gt;&lt;b&gt;  이중 디스패치&lt;/b&gt;: accept &amp;rarr; visitX 구조가 처음엔 낯설 수 있다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2305&quot; data-start=&quot;2293&quot; data-ke-size=&quot;size23&quot;&gt;한 줄 요약&lt;/h3&gt;
&lt;blockquote data-end=&quot;2390&quot; data-start=&quot;2306&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;2390&quot; data-start=&quot;2308&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Visitor 패턴은 &amp;ldquo;데이터 구조 위를 돌아다니며 기능을 꽂아 넣는 만능 플러그&amp;rdquo;&lt;/b&gt;&amp;mdash;클래스를 건드리지 않고도 행동을 무한히 확장할 수 있다!&lt;/p&gt;
&lt;/blockquote&gt;</description>
      <category>개발</category>
      <category>BehavioralPattern</category>
      <category>Kotlin</category>
      <category>Visitor패턴</category>
      <category>디자인패턴</category>
      <category>소프트웨어아키텍처</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1964</guid>
      <comments>https://stack-queue.tistory.com/1964#entry1964comment</comments>
      <pubDate>Wed, 30 Jul 2025 16:26:28 +0900</pubDate>
    </item>
    <item>
      <title>심텍 주가 전망: AI PCB로 도약할 &amp;lsquo;숨은&amp;rsquo; 코스피 강자</title>
      <link>https://stack-queue.tistory.com/1963</link>
      <description>&lt;p data-end=&quot;361&quot; data-start=&quot;47&quot; data-ke-size=&quot;size16&quot;&gt;&amp;lsquo;메이저&amp;rsquo; 반도체 대장주들 뒤에 가려 있지만, 인쇄회로기판(PCB) 전문기업 &lt;b&gt;심텍(222800, KOSPI)&lt;/b&gt;은 AI &amp;middot; HBM(고대역폭 메모리) 붐의 핵심 부품사로 꼽힙니다.&lt;br /&gt;30 일 장초 기준 주가는 &lt;b&gt;약 23,450원(+5.3%)&lt;/b&gt;에 거래되며 온디바이스 AI 테마 강세를 주도했습니다. 최근 일주일간 22,450 ~ 24,950원 사이에서 등락하며 52주 저점(9,690원) 대비 세 배 가까이 오른 상태죠.&amp;nbsp;&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr data-end=&quot;366&quot; data-start=&quot;363&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;387&quot; data-start=&quot;368&quot; data-ke-size=&quot;size20&quot;&gt;1. 회사 한눈에 보기&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;633&quot; data-start=&quot;388&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;512&quot; data-start=&quot;388&quot;&gt;2015 년 홀딩스에서 인적분할된 이후 &lt;b&gt;패키지 서브스트레이트와 모듈 PCB&lt;/b&gt;를 주력으로 생산. 글로벌 메모리&amp;middot;패키징 Big 5가 주요 고객사.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;633&quot; data-start=&quot;513&quot;&gt;국내 6 개, 중국&amp;middot;일본 2 개 공장으로 다층 PCB(MLB)&amp;middot;HDI 기판 공급. AI 가속기&amp;middot;5G 통신&amp;middot;서버용 고밀도 기판 비중 확대 중. &lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;638&quot; data-start=&quot;635&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;660&quot; data-start=&quot;640&quot; data-ke-size=&quot;size20&quot;&gt;2. 지금 주목받는 이유&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1213&quot; data-start=&quot;661&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;877&quot; data-start=&quot;661&quot;&gt;&lt;b&gt;AI 서버 기판 수요 폭발&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;877&quot; data-start=&quot;688&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;778&quot; data-start=&quot;688&quot;&gt;엔비디아가 추진 중인 차세대 메모리 표준 &lt;b&gt;&amp;lsquo;SOCAMM&amp;rsquo;&lt;/b&gt; 기판 후보군으로 거론.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;877&quot; data-start=&quot;782&quot;&gt;AI PC&amp;middot;AI 가속기용 HBM - GDDR7 채택률&amp;uarr; &amp;rarr; 고층&amp;middot;고다층 패키지 기판 수요 확대.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1051&quot; data-start=&quot;879&quot;&gt;&lt;b&gt;2025 년 하반기 실적 턴어라운드&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1051&quot; data-start=&quot;911&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1051&quot; data-start=&quot;911&quot;&gt;1Q25 매출 +3.3% YoY에도 영업손실이었지만, 2H25부터 가동률 상승&amp;middot;단가 인상 효과로 &lt;b&gt;연간 흑자 전환&lt;/b&gt; 예상. 영업이익 1,163 억(+120% YoY) 전망.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1213&quot; data-start=&quot;1053&quot;&gt;&lt;b&gt;밸류에이션 메리트&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1213&quot; data-start=&quot;1075&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1213&quot; data-start=&quot;1075&quot;&gt;52주 PER 밴드 하단, 동종 대형사 대비 약 30% 할인 상태. 공급망&amp;middot;환율 리스크를 감안해도 &lt;b&gt;중소형 AI 밸류체인&lt;/b&gt; 가운데 상대적으로 저평가. (증권가 컨센서스)&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-end=&quot;1218&quot; data-start=&quot;1215&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1236&quot; data-start=&quot;1220&quot; data-ke-size=&quot;size20&quot;&gt;3. 리스크 체크&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1370&quot; data-start=&quot;1237&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1281&quot; data-start=&quot;1237&quot;&gt;&lt;b&gt;수요 순환성&lt;/b&gt;: 메모리 업황 회복 늦어지면 가동률&amp;middot;손익 변동성 확대&lt;/li&gt;
&lt;li data-end=&quot;1336&quot; data-start=&quot;1282&quot;&gt;&lt;b&gt;고객 집중도&lt;/b&gt;: 상위 고객 매출 비중 70%+ &amp;hellip; 대형 고객 발주 변동 시 충격 가능&lt;/li&gt;
&lt;li data-end=&quot;1370&quot; data-start=&quot;1337&quot;&gt;&lt;b&gt;환율&amp;middot;원자재&lt;/b&gt;: 구리&amp;middot;환율 급등 시 원가 부담 존재&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1375&quot; data-start=&quot;1372&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1396&quot; data-start=&quot;1377&quot; data-ke-size=&quot;size20&quot;&gt;4. 투자 포인트 요약&lt;/h4&gt;
&lt;blockquote data-end=&quot;1468&quot; data-start=&quot;1397&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1468&quot; data-start=&quot;1399&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;AI 서버&amp;middot;HBM 증설 사이클에서 PCB는 필수 공급망&amp;hellip; 심텍은 &amp;lsquo;중소형주 + AI 부품&amp;rsquo;이라는 두 가지 레버가 겹친다.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1624&quot; data-start=&quot;1470&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1515&quot; data-start=&quot;1470&quot;&gt;AI 관련 신규 패키지(FC-CSP, SiP) 라인 증설 &amp;rarr; 매출 레버리지&lt;/li&gt;
&lt;li data-end=&quot;1564&quot; data-start=&quot;1516&quot;&gt;메모리 3사 HBM 전환으로 범용 DRAM 공급 부족 &amp;rarr; MCP 기판 수요 상승&lt;/li&gt;
&lt;li data-end=&quot;1624&quot; data-start=&quot;1565&quot;&gt;2024 ~ 2027년 CAGR 15%로 추정되는 AI 서버 PCB 시장 성장률의 &lt;b&gt;순수 수혜&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1629&quot; data-start=&quot;1626&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1655&quot; data-start=&quot;1631&quot; data-ke-size=&quot;size20&quot;&gt;5. 행동 전략(블로그 독자용)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1854&quot; data-start=&quot;1656&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1727&quot; data-start=&quot;1656&quot;&gt;&lt;b&gt;단기(3 ~ 6개월)&lt;/b&gt;: 26,000 원 돌파 후 28,000 원대 저항 테스트 가능. 거래량 동반 상승 확인 필요&lt;/li&gt;
&lt;li data-end=&quot;1797&quot; data-start=&quot;1728&quot;&gt;&lt;b&gt;중기(6 ~ 12개월)&lt;/b&gt;: 하반기 실적 모멘텀&amp;middot;AI 서버 수주 발표 노림수. 실적 가시성 확인 후 분할매수 권장&lt;/li&gt;
&lt;li data-end=&quot;1854&quot; data-start=&quot;1798&quot;&gt;&lt;b&gt;손절&amp;middot;분할라인&lt;/b&gt;: 20,000 원 이탈 시 리스크 관리, 25,000 원 안착 시 추세 강화&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>재테크</category>
      <category>ai서버</category>
      <category>HBM</category>
      <category>PCB주</category>
      <category>socamm</category>
      <category>심텍</category>
      <category>심텍주가</category>
      <category>주식분석</category>
      <category>코스피중소형주</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1963</guid>
      <comments>https://stack-queue.tistory.com/1963#entry1963comment</comments>
      <pubDate>Wed, 30 Jul 2025 16:22:08 +0900</pubDate>
    </item>
    <item>
      <title>이어보기 완성! Iterator + Memento로 구현한 플레이백 히스토리</title>
      <link>https://stack-queue.tistory.com/1962</link>
      <description>&lt;p data-end=&quot;180&quot; data-start=&quot;95&quot; data-ke-size=&quot;size16&quot;&gt;동영상/오디오 앱에서 &lt;b&gt;&amp;ldquo;지난번 보던 자리부터 이어보기&amp;rdquo;&lt;/b&gt; 는 필수 UX입니다.&lt;br /&gt;이 기능은 사실 두 가지 디자인 패턴이 만나면 깔끔하게 풀립니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;289&quot; data-start=&quot;182&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;236&quot; data-start=&quot;182&quot;&gt;&lt;b&gt;Memento&lt;/b&gt; &amp;ndash; 플레이어의 &amp;lsquo;스냅샷&amp;rsquo;을 저장&amp;middot;복원해 &lt;b&gt;재생 위치&lt;/b&gt;를 되살린다.&lt;/li&gt;
&lt;li data-end=&quot;289&quot; data-start=&quot;237&quot;&gt;&lt;b&gt;Iterator&lt;/b&gt; &amp;ndash; 저장된 스냅샷 목록을 순회해 &lt;b&gt;최근 기록&lt;/b&gt;을 탐색‧표시한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;356&quot; data-start=&quot;291&quot; data-ke-size=&quot;size16&quot;&gt;아래 예시는 조회수 높은 한국 안드로이드 블로그들의 패턴 사용법을 베이스로, 실제 서비스 코드 형태로 재구성했습니다.&lt;/p&gt;
&lt;hr data-end=&quot;361&quot; data-start=&quot;358&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;379&quot; data-start=&quot;363&quot; data-ke-size=&quot;size23&quot;&gt;1. 핵심 클래스 설계&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1108&quot; data-start=&quot;381&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;530&quot; data-start=&quot;381&quot;&gt;&lt;b&gt;&lt;b&gt;PlayerState (Memento)&lt;br /&gt;&lt;/b&gt;&lt;/b&gt;
&lt;pre id=&quot;code_1753859933388&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;kotlin&quot;&gt;&lt;code&gt;@JvmInline value class PlayerState(val positionMs: Long)&lt;/code&gt;&lt;/pre&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;530&quot; data-start=&quot;497&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;530&quot; data-start=&quot;497&quot;&gt;불변(immutable)이라 복원 시 사이드이펙트 없음.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;768&quot; data-start=&quot;532&quot;&gt;&lt;b&gt;&lt;b&gt;VideoPlayer (Originator)&lt;br /&gt;&lt;/b&gt;&lt;/b&gt;
&lt;pre id=&quot;code_1753859950791&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;kotlin&quot;&gt;&lt;code&gt;class VideoPlayer(private val exo: ExoPlayer) {
    fun save() = PlayerState(exo.currentPosition)
    fun restore(state: PlayerState) { exo.seekTo(state.positionMs) }
}&lt;/code&gt;&lt;/pre&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;PlayHistory (Caretaker + Iterable)&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1753859983720&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;kotlin&quot;&gt;&lt;code&gt;class PlayHistory : Iterable&amp;lt;PlayerState&amp;gt; {
    private val history = ArrayDeque&amp;lt;PlayerState&amp;gt;()  // 최신 &amp;rarr; 오래된 순
    fun push(state: PlayerState) { history.addFirst(state) }            // 저장
    fun iterator() = history.iterator()             // Iterator 패턴
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-end=&quot;1113&quot; data-start=&quot;1110&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1130&quot; data-start=&quot;1115&quot; data-ke-size=&quot;size23&quot;&gt;2. 저장&amp;middot;복원 흐름&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1753859974290&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;val player   = VideoPlayer(exo)
val history  = PlayHistory()

// ► 사용자가 시청 중일 때 주기적으로 or onPause 시점 저장
lifecycle.addObserver(object : DefaultLifecycleObserver {
    override fun onPause(owner: LifecycleOwner) {
        history.push(player.save())
    }
})

// ▶ 앱 재실행 후 이어보기
for (state in history) {           // Iterator 순회
    // UI에 &amp;ldquo;10분 12초까지 봤어요&amp;rdquo;처럼 표시
    showResumeButton(state.positionMs)
}
resumeButton.setOnClickListener {
    player.restore(history.first()) // 가장 최근 상태 복원
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1753&quot; data-start=&quot;1632&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1692&quot; data-start=&quot;1632&quot;&gt;&lt;b&gt;Iterator&lt;/b&gt; 덕분에 for (state in history) 처럼 깔끔하게 순회합니다.&lt;/li&gt;
&lt;li data-end=&quot;1753&quot; data-start=&quot;1693&quot;&gt;&lt;b&gt;Memento&lt;/b&gt; 로 캡슐화가 유지돼 VideoPlayer 내부 구현을 외부가 모를 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1758&quot; data-start=&quot;1755&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1771&quot; data-start=&quot;1760&quot; data-ke-size=&quot;size23&quot;&gt;3. 실전 팁&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2232&quot; data-start=&quot;1773&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1834&quot; data-start=&quot;1773&quot;&gt;&lt;b&gt;스냅샷 크기 최소화&lt;/b&gt;&lt;br /&gt;위치&amp;middot;속도&amp;middot;자막 언어 등 필요한 필드만 담아 메모리 낭비를 줄입니다.&lt;/li&gt;
&lt;li data-end=&quot;1910&quot; data-start=&quot;1835&quot;&gt;&lt;b&gt;저장 빈도 전략&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1910&quot; data-start=&quot;1854&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1910&quot; data-start=&quot;1854&quot;&gt;배터리 절약을 위해 onPause, every 30 sec 와 같이 타임아웃을 두세요.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2014&quot; data-start=&quot;1911&quot;&gt;&lt;b&gt;보관 주기 관리&lt;/b&gt;&lt;br /&gt;ArrayDeque 용량을 제한하거나, 30일 이상 지난 항목은 Iterator 순회 전에 제거해서 DB‧SharedPref를 슬림하게 유지합니다.&lt;/li&gt;
&lt;li data-end=&quot;2109&quot; data-start=&quot;2015&quot;&gt;&lt;b&gt;멀티 디바이스 싱크&lt;/b&gt;&lt;br /&gt;Caretaker가 Firebase/Hasura 같은 실시간 DB로 직렬화-업로드하면 어떤 기기에서도 즉시 이어볼 수 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;2232&quot; data-start=&quot;2110&quot;&gt;&lt;b&gt;Unit Test&lt;/b&gt;&lt;br /&gt;Iterator는 단순 순서 보장만 확인하면 되므로 assertEquals(listOf(state3,state2,state1), history.toList()) 정도면 충분합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2237&quot; data-start=&quot;2234&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;2254&quot; data-start=&quot;2239&quot; data-ke-size=&quot;size23&quot;&gt;4. 한 줄 정리&lt;/h3&gt;
&lt;blockquote data-end=&quot;2324&quot; data-start=&quot;2255&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;2324&quot; data-start=&quot;2257&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Iterator로 &amp;ldquo;히스토리를 탐색&amp;rdquo;하고, Memento로 &amp;ldquo;시간을 복원&amp;rdquo;하면 이어보기 UX가 자연스레 완성된다.&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description>
      <category>개발</category>
      <category>iterator패턴</category>
      <category>Memento패턴</category>
      <category>UX개선</category>
      <category>이어보기</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1962</guid>
      <comments>https://stack-queue.tistory.com/1962#entry1962comment</comments>
      <pubDate>Wed, 30 Jul 2025 16:20:18 +0900</pubDate>
    </item>
    <item>
      <title>Memento 패턴: &amp;ldquo;되돌리기(Undo)&amp;rdquo;를 코드로 구현하는 가장 깔끔한 방법</title>
      <link>https://stack-queue.tistory.com/1961</link>
      <description>&lt;p data-end=&quot;347&quot; data-start=&quot;49&quot; data-ke-size=&quot;size16&quot;&gt;복잡한 앱을 만들다 보면 &amp;ldquo;방금 전 상태로 돌려줘!&amp;rdquo; 라는 요구가 꼭 생깁니다. 편집기에서의 &lt;b&gt;Undo/Redo&lt;/b&gt;, 게임의 &lt;b&gt;저장&amp;middot;로드&lt;/b&gt;, 그리고 &lt;b&gt;상태 머신&lt;/b&gt;에서 특정 단계로 롤백 하기까지&amp;mdash;모두 객체의 이전 상태를 안전하게 보관&amp;shy;-복원하는 &lt;b&gt;Memento 패턴&lt;/b&gt;으로 해결할 수 있습니다.&lt;br /&gt;Memento는 &lt;b&gt;캡슐화를 깨지 않고&lt;/b&gt; 객체의 스냅샷을 외부에 보관했다가 원할 때 정확히 그 상태로 되돌리는 행위(Behavioral) 패턴입니다.&lt;/p&gt;
&lt;hr data-end=&quot;352&quot; data-start=&quot;349&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;371&quot; data-start=&quot;354&quot; data-ke-size=&quot;size20&quot;&gt;언제, 왜 써야 할까?&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;533&quot; data-start=&quot;372&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;423&quot; data-start=&quot;372&quot;&gt;&lt;b&gt;상태 머신 롤백&lt;/b&gt;: 복잡한 워크플로에서 오류가 나면 직전 단계로 안전하게 복귀.&lt;/li&gt;
&lt;li data-end=&quot;475&quot; data-start=&quot;424&quot;&gt;&lt;b&gt;알림 시스템 취소&lt;/b&gt;: 푸시 예약을 &amp;ldquo;1분 안에 취소&amp;rdquo; 하도록 임시 스냅샷 보관.&lt;/li&gt;
&lt;li data-end=&quot;533&quot; data-start=&quot;476&quot;&gt;&lt;b&gt;에디터 Undo/Redo&lt;/b&gt;: 사용자가 편집할 때마다 스냅샷을 스택에 쌓았다가 단계별 복원.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-end=&quot;591&quot; data-start=&quot;534&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;591&quot; data-start=&quot;536&quot; data-ke-size=&quot;size16&quot;&gt;핵심은 &amp;ldquo;상태 이력&amp;rdquo; 을 Caretaker가 관리하고, 객체 내부 구현은 건드리지 않는다는 점!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;596&quot; data-start=&quot;593&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;617&quot; data-start=&quot;598&quot; data-ke-size=&quot;size20&quot;&gt;3개 핵심 역할만 기억하자&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;793&quot; data-start=&quot;618&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;666&quot; data-start=&quot;618&quot;&gt;&lt;b&gt;Originator&lt;/b&gt; &amp;ndash; 현재 상태를 갖고 스냅샷을 만들고 복원하는 주체&lt;/li&gt;
&lt;li data-end=&quot;702&quot; data-start=&quot;667&quot;&gt;&lt;b&gt;Memento&lt;/b&gt; &amp;ndash; 스냅샷 객체(불변&amp;middot;읽기 전용)&lt;/li&gt;
&lt;li data-end=&quot;793&quot; data-start=&quot;703&quot;&gt;&lt;b&gt;Caretaker&lt;/b&gt; &amp;ndash; 스냅샷들을 보관하고 필요할 때 Originator에게 돌려줌&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-end=&quot;798&quot; data-start=&quot;795&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;836&quot; data-start=&quot;800&quot; data-ke-size=&quot;size20&quot;&gt;Kotlin 실전 예제 &amp;ndash; 글쓰기 화면 Undo/Redo&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1753831528713&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// --- Originator ---
data class EditorState(val text: String)

class TextEditor {
    var content: String = &quot;&quot;
        private set

    fun write(newText: String) { content += newText }
    fun save() = EditorState(content)          // -&amp;gt; Memento
    fun restore(memento: EditorState) {        // &amp;lt;- Memento
        content = memento.text
    }
}

// --- Caretaker ---
class History {
    private val undoStack = ArrayDeque&amp;lt;EditorState&amp;gt;()
    private val redoStack = ArrayDeque&amp;lt;EditorState&amp;gt;()

    fun push(state: EditorState) { undoStack.push(state); redoStack.clear() }
    fun undo(current: EditorState): EditorState? =
        if (undoStack.isEmpty()) null else undoStack.pop().also { redoStack.push(current) }
    fun redo(current: EditorState): EditorState? =
        if (redoStack.isEmpty()) null else redoStack.pop().also { undoStack.push(current) }
}

// --- 사용 예 ---
val editor = TextEditor()
val history = History()

editor.write(&quot;Hello, &quot;)
history.push(editor.save())

editor.write(&quot;World!&quot;)
history.push(editor.save())

history.undo(editor.save())?.let { editor.restore(it) }  // =&amp;gt; &quot;Hello, &quot;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2137&quot; data-start=&quot;1958&quot; data-ke-size=&quot;size16&quot;&gt;이처럼 &lt;b&gt;Originator(TextEditor)&lt;/b&gt; 는 자신만 아는 내부 상태를 EditorState 에 담아 Caretaker(History)에 맡깁니다. Caretaker는 스택을 이용해 다단계 Undo/Redo를 구현하고, 텍스트 에디터는 오직 &amp;ldquo;쓰기&amp;middot;저장&amp;middot;복원&amp;rdquo; 만 알면 되므로 단일 책임이 지켜집니다.&lt;/p&gt;
&lt;hr data-end=&quot;2142&quot; data-start=&quot;2139&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;2162&quot; data-start=&quot;2144&quot; data-ke-size=&quot;size20&quot;&gt;JUnit 테스트 스케치&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1753831669964&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Test
fun `undo restores previous content`() {
    val editor = TextEditor()
    val history = History()
    editor.write(&quot;A&quot;).also { history.push(editor.save()) }
    editor.write(&quot;B&quot;).also { history.push(editor.save()) }

    val prev = history.undo(editor.save())
    assertEquals(&quot;A&quot;, prev?.text)
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2523&quot; data-start=&quot;2480&quot; data-ke-size=&quot;size16&quot;&gt;간단하지만 핵심 로직(스냅샷 저장&amp;middot;복원)이 잘 동작하는지 검증할 수 있습니다.&lt;/p&gt;
&lt;hr data-end=&quot;2528&quot; data-start=&quot;2525&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;2543&quot; data-start=&quot;2530&quot; data-ke-size=&quot;size20&quot;&gt;장단점 짚어보기&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2814&quot; data-start=&quot;2544&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2600&quot; data-start=&quot;2544&quot;&gt;&lt;b&gt;  완벽한 캡슐화&lt;/b&gt;: Originator 내부를 외부가 엿보지 않아도 상태 저장 가능.&lt;/li&gt;
&lt;li data-end=&quot;2666&quot; data-start=&quot;2601&quot;&gt;&lt;b&gt;  간단한 복원 로직&lt;/b&gt;: 복구 시 side-effect 최소화&amp;mdash;그냥 restore() 호출이면 끝.&lt;/li&gt;
&lt;li data-end=&quot;2723&quot; data-start=&quot;2667&quot;&gt;&lt;b&gt;  메모리 부담&lt;/b&gt;: 상태가 크거나 스냅샷이 잦으면 Caretaker 메모리 사용량 &amp;uarr;.&lt;/li&gt;
&lt;li data-end=&quot;2814&quot; data-start=&quot;2724&quot;&gt;&lt;b&gt;  깊은 복사 주의&lt;/b&gt;: 얕은 복사로 참조만 넘기면 복원 시 예상치 못한 변경 위험. &lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2819&quot; data-start=&quot;2816&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;2834&quot; data-start=&quot;2821&quot; data-ke-size=&quot;size20&quot;&gt;한 줄 정리&lt;/h4&gt;
&lt;blockquote data-end=&quot;2901&quot; data-start=&quot;2835&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;2901&quot; data-start=&quot;2837&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Memento 패턴은 &amp;ldquo;캡슐화된 타임머신&amp;rdquo;&lt;/b&gt;&amp;mdash;객체를 과거로 안전하게 되돌리고 싶을 때 가장 우아한 해법입니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발</category>
      <category>Kotlin</category>
      <category>Memento패턴</category>
      <category>UndoRedo</category>
      <category>디자인패턴</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1961</guid>
      <comments>https://stack-queue.tistory.com/1961#entry1961comment</comments>
      <pubDate>Wed, 30 Jul 2025 08:30:59 +0900</pubDate>
    </item>
    <item>
      <title>MediatorLiveData 제대로 쓰는 7가지 실전 팁</title>
      <link>https://stack-queue.tistory.com/1960</link>
      <description>&lt;p data-end=&quot;263&quot; data-start=&quot;37&quot; data-ke-size=&quot;size16&quot;&gt;안드로이드 MVVM에서 &lt;b&gt;MediatorLiveData&lt;/b&gt; 는 &amp;ldquo;여러 스트림을 하나로 묶는 허브&amp;rdquo;입니다. 소스 LiveData 들을 자유롭게 합치고, UI-State를 한곳에서 관리할 수 있죠. 그러나 잘못 쓰면 메모리 누수나 스파게티 ViewModel 로직을 만들기도 합니다. 여기, 실제 서비스 코드와 조회수 높은 한국 개발 블로그들을 참고해 뽑은 &lt;b&gt;핵심 활용 팁 7가지&lt;/b&gt;를 정리했습니다.&lt;/p&gt;
&lt;hr data-end=&quot;268&quot; data-start=&quot;265&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1619&quot; data-start=&quot;270&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;501&quot; data-start=&quot;270&quot;&gt;&lt;b&gt;addSource / removeSource는 ViewModel 안에만 두자&lt;/b&gt;&lt;br /&gt;MediatorLiveData 는 내부적으로 addSource() 로 등록된 스트림을 관찰하고 removeSource() 로 해제합니다. 이 로직은 ViewModel 레이어에서 끝내야 UI 컨트롤러(액티비티&amp;middot;프래그먼트)가 가벼워집니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;700&quot; data-start=&quot;503&quot;&gt;&lt;b&gt;버튼 활성화&amp;middot;폼 검증 등에 &amp;lsquo;다중 LiveData 합성&amp;rsquo; 활용&lt;/b&gt;&lt;br /&gt;예를 들어 이메일&amp;middot;비밀번호 LiveData 둘을 합쳐 &lt;b&gt;회원가입 버튼&lt;/b&gt;의 enable 상태를 계산할 수 있습니다. 땅으니 블로그 예시처럼 네다섯 개의 스트림도 거뜬히 한 줄에 합칠 수 있어요.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;889&quot; data-start=&quot;702&quot;&gt;&lt;b&gt;확장 함수로 보일러플레이트 줄이기&lt;/b&gt;&lt;br /&gt;&amp;ldquo;소스 추가 &amp;rarr; 값 포워딩&amp;rdquo; 코드를 매번 쓰기 귀찮다면, 확장 함수로 래핑해 두세요. Medium 글의 샘플처럼 MediatorLiveData&amp;lt;T&amp;gt;.combine(...) 식으로 만들면 훨씬 읽기 좋습니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1067&quot; data-start=&quot;891&quot;&gt;&lt;b&gt;Kotlin Flow + asLiveData() 조합을 고려&lt;/b&gt;&lt;br /&gt;네트워크&amp;middot;Room 등 코루틴 기반 스트림이라면 먼저 &lt;b&gt;Flow&lt;/b&gt; 로 결합하고, 최종 단계에서 asLiveData() 로 변환하면 로직 분리가 더 깔끔합니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1247&quot; data-start=&quot;1069&quot;&gt;&lt;b&gt;distinctUntilChanged()로 불필요한 UI 리렌더 막기&lt;/b&gt;&lt;br /&gt;여러 소스를 합치다 보면 값이 동일해도 매번 옵저버가 호출되는 경우가 많습니다. switchMap &amp;middot; map 뒤에 distinctUntilChanged() 를 붙이면 불필요한 UI 업데이트를 방지할 수 있어요.&lt;/li&gt;
&lt;li data-end=&quot;1436&quot; data-start=&quot;1249&quot;&gt;&lt;b&gt;onActive() / onInactive() 훅으로 리소스 관리&lt;/b&gt;&lt;br /&gt;MediatorLiveData 자체가 활성화될 때만 내부 소스를 붙이고, 비활성화되면 떼도록 구현해 두면(예: API 폴링 중지) 배터리와 데이터 사용량을 아낄 수 있습니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1619&quot; data-start=&quot;1438&quot;&gt;&lt;b&gt;소스 제거를 잊지 말자&amp;mdash;메모리 누수 방지&lt;/b&gt;&lt;br /&gt;일회성 결제 &amp;middot; 로그인 Flow 등 일시적인 로직이라면 작업이 끝난 즉시 removeSource() 나 value = null 처리로 참조를 끊어 주세요. 안 그러면 ViewModel이 살아 있는 한 콜백이 계속 쌓여서 메모리와 CPU를 잡아먹습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-end=&quot;1624&quot; data-start=&quot;1621&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1634&quot; data-start=&quot;1626&quot; data-ke-size=&quot;size20&quot;&gt;마무리&lt;/h4&gt;
&lt;p data-end=&quot;1804&quot; data-start=&quot;1635&quot; data-ke-size=&quot;size16&quot;&gt;MediatorLiveData 는 &amp;ldquo;작은 중재자(Mediator)&amp;rdquo; 같은 존재입니다. 스트림 수가 늘어도 UI 코드는 단순해지고, 테스트 대상도 ViewModel 한곳으로 모일 수 있죠. 위 7가지만 지키면 과도한 콜백 지옥이나 누수 걱정 없이 &lt;b&gt;클린한 데이터 파이프라인&lt;/b&gt;을 구축할 수 있습니다.&lt;/p&gt;</description>
      <category>개발</category>
      <category>Android</category>
      <category>Kotlin</category>
      <category>livedata</category>
      <category>MediatorLiveData</category>
      <category>mvvm</category>
      <category>개발</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1960</guid>
      <comments>https://stack-queue.tistory.com/1960#entry1960comment</comments>
      <pubDate>Wed, 30 Jul 2025 01:47:21 +0900</pubDate>
    </item>
    <item>
      <title>일본‧미국 15 % 관세 합의, 한국 산업에 드리운 세 가지 신호</title>
      <link>https://stack-queue.tistory.com/1959</link>
      <description>&lt;p data-end=&quot;207&quot; data-start=&quot;41&quot; data-ke-size=&quot;size16&quot;&gt;8월 24일 타결된 &lt;b&gt;미국-일본 관세 협상&lt;/b&gt;은 일본산 제품 전반에 15 % &amp;lsquo;상한&amp;rsquo; 관세를 적용하고, 일본이 &lt;b&gt;미국 내 5,500억 달러&lt;/b&gt; 규모 투자를 약속한 것이 핵심입니다.&amp;nbsp;아래 세 신호를 한국 산업이 주목해야 합니다.&lt;/p&gt;
&lt;hr data-end=&quot;212&quot; data-start=&quot;209&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;242&quot; data-start=&quot;214&quot; data-section-id=&quot;15vgtnv&quot; data-ke-size=&quot;size23&quot;&gt;1. 자동차: &amp;ldquo;가격 격차가 다시 벌어진다&amp;rdquo;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;444&quot; data-start=&quot;244&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;350&quot; data-start=&quot;244&quot;&gt;일본 완성차는 기존 27.5 % &amp;rarr; 15 %로 관세가 낮아지며, 동급 한국차 대비 가격 경쟁력을 빠르게 회복합니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;444&quot; data-start=&quot;351&quot;&gt;미국 소비자가 선호하는 하이브리드&amp;middot;픽업 부문에서 혼다&amp;middot;도요타가 마케팅 예산을 확대할 예정이라, 현대&amp;middot;기아는 &lt;b&gt;친환경 라인업 현지 생산 확대&lt;/b&gt;로 대응해야 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;480&quot; data-start=&quot;446&quot; data-section-id=&quot;99juo9&quot; data-ke-size=&quot;size23&quot;&gt;2. 조선&amp;middot;철강: &amp;ldquo;투자 카드 없인 교섭이 안 먹힌다&amp;rdquo;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;675&quot; data-start=&quot;482&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;574&quot; data-start=&quot;482&quot;&gt;협상 과정에서 일본은 &lt;b&gt;&amp;lsquo;미국 조선소 공동투자&amp;rsquo;&lt;/b&gt;를 패키지로 내세워 관세를 낮췄습니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;675&quot; data-start=&quot;575&quot;&gt;한국 조선&amp;middot;철강기업도 『해군 보조선&amp;middot;LNG선 현지 건조 프로그램』 같은 &lt;b&gt;일자리 창출형 제안을 준비&lt;/b&gt;하지 않으면, 향후 한-미 협상에서 불리한 출발선에 설 가능성이 큽니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;711&quot; data-start=&quot;677&quot; data-section-id=&quot;1cgwz97&quot; data-ke-size=&quot;size23&quot;&gt;3. 디지털&amp;middot;부품 소재: &amp;ldquo;글로벌 공급망 재편 속도전&amp;rdquo;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;959&quot; data-start=&quot;713&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;768&quot; data-start=&quot;713&quot;&gt;일본에 부여된 &amp;lsquo;상한 관세&amp;rsquo; 모델은 &lt;b&gt;부품~완제품까지 연쇄적인 원가 인하&lt;/b&gt;를 의미합니다.&lt;/li&gt;
&lt;li data-end=&quot;847&quot; data-start=&quot;769&quot;&gt;삼성&amp;middot;LG&amp;middot;SK 계열사는 &lt;b&gt;멕시코&amp;middot;베트남 공장과 美 현지 공장 간 공급 루트를 재배치&lt;/b&gt;해 관세 리스크를 최소화할 필요가 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;959&quot; data-start=&quot;848&quot;&gt;美 행정부가 디지털세&amp;middot;플랫폼 규제를 협상 카드로 삼고 있어, 카카오&amp;middot;네이버 역시 &lt;b&gt;해외 매출 전략&lt;/b&gt;을 미리 조정해야 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;964&quot; data-start=&quot;961&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;989&quot; data-start=&quot;966&quot; data-section-id=&quot;1b00oqw&quot; data-ke-size=&quot;size23&quot;&gt;한국 산업이 취할 3단계 액션 플랜&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1316&quot; data-start=&quot;991&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1093&quot; data-start=&quot;991&quot;&gt;&lt;b&gt;&amp;ldquo;투자 리스트부터 만들라&amp;rdquo;&lt;/b&gt; &amp;ndash; 완성차&amp;middot;조선&amp;middot;배터리 업계는 美 의회가 선호하는 &lt;b&gt;&amp;lsquo;고임금州 공장&amp;middot;방위산업 클러스터&amp;rsquo;&lt;/b&gt; 투자안을 구체화해 협상 테이블에 올려야 합니다.&lt;/li&gt;
&lt;li data-end=&quot;1205&quot; data-start=&quot;1094&quot;&gt;&lt;b&gt;&amp;ldquo;공급망 시나리오 X-Y-Z&amp;rdquo;&lt;/b&gt; &amp;ndash; 25 % 관세가 현실화될 때와 15 % 상한이 적용될 때, 두 가지 원가 구조를 시뮬레이션해 리스크 헷징이 가능하도록 만반의 채널을 확보해야 합니다.&lt;/li&gt;
&lt;li data-end=&quot;1316&quot; data-start=&quot;1206&quot;&gt;&lt;b&gt;&amp;ldquo;친환경&amp;middot;디지털 패키지로 차별화&amp;rdquo;&lt;/b&gt; &amp;ndash; 미국 정부가 강조하는 &amp;lsquo;친환경&amp;middot;AI 반도체&amp;rsquo; 키워드에 맞춰 &lt;b&gt;R&amp;amp;D&amp;middot;인재 양성 컨소시엄&lt;/b&gt;을 포함한 협상안을 설계하면 주도권을 되찾을 수 있습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-end=&quot;1321&quot; data-start=&quot;1318&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1330&quot; data-start=&quot;1323&quot; data-section-id=&quot;1xgz7x2&quot; data-ke-size=&quot;size23&quot;&gt;마무리&lt;/h3&gt;
&lt;p data-end=&quot;1518&quot; data-start=&quot;1332&quot; data-ke-size=&quot;size16&quot;&gt;일본의 15 % 관세 합의는 단순히 한-미 협상 &amp;lsquo;하향 목표치&amp;rsquo;를 정한 것이 아닙니다. &lt;b&gt;&amp;ldquo;투자를 담보로 관세 리스크를 관리하라&amp;rdquo;&lt;/b&gt;는 새로운 무역 규칙을 제시한 셈입니다. 8월 1일 한-미 협상을 앞둔 지금, 한국 기업&amp;middot;정부가 얼마나 빠르고 과감하게 대응 카드를 제시하느냐가 &lt;b&gt;향후 10년 미국 시장 판세&lt;/b&gt;를 결정할 것입니다.&lt;/p&gt;</description>
      <category>재테크</category>
      <category>디지털세Risk</category>
      <category>일본15퍼관세</category>
      <category>조선투자전략</category>
      <category>한국자동차</category>
      <category>한미무역협상</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1959</guid>
      <comments>https://stack-queue.tistory.com/1959#entry1959comment</comments>
      <pubDate>Wed, 30 Jul 2025 01:07:26 +0900</pubDate>
    </item>
    <item>
      <title>D-2 관세 데드라인: 한미 협상, &amp;lsquo;딜&amp;rsquo;로 끝날까 25% 충돌로 갈까?</title>
      <link>https://stack-queue.tistory.com/1958</link>
      <description>&lt;p data-end=&quot;180&quot; data-start=&quot;46&quot; data-ke-size=&quot;size16&quot;&gt;미국 트럼프 행정부가 8월 1일 0시(워싱턴 시각)를 기점으로 한국산 상품에 &lt;b&gt;전면 25 % 관세&lt;/b&gt;를 예고한 상황에서, 양국 협상은 지금 &amp;lsquo;막판 스퍼트&amp;rsquo;를 밟고 있습니다. 미국 주요 매체들이 전한 협상 지형을 종합하면 다음과 같습니다.&lt;/p&gt;
&lt;hr data-end=&quot;185&quot; data-start=&quot;182&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;210&quot; data-start=&quot;187&quot; data-ke-size=&quot;size20&quot;&gt;지금 어떤 제안이 오가고 있나?&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;897&quot; data-start=&quot;212&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;397&quot; data-start=&quot;212&quot;&gt;&lt;b&gt;&amp;lsquo;Make American Shipbuilding Great Again&amp;rsquo;&lt;/b&gt;&lt;br /&gt;한국 측은 미국 필라델피아 조선소 증설 등을 골자로 한 수십억 달러 규모 &amp;lsquo;조선 협력 패키지&amp;rsquo;를 제시하며 자동차&amp;middot;철강 관세를 15 % 수준으로 낮추는 방안을 타진 중입니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;551&quot; data-start=&quot;399&quot;&gt;&lt;b&gt;&amp;ldquo;농업 시장 일부 개방 가능&amp;rdquo;&lt;/b&gt;&lt;br /&gt;7월 14일자 로이터에 따르면 한국은 농축산 분야의 &amp;lsquo;민감 품목&amp;rsquo;은 지키되, 일부 품목에 한해 미국산 수입 문을 여는 &amp;lsquo;프레임워크 딜&amp;rsquo;을 검토하고 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;708&quot; data-start=&quot;553&quot;&gt;&lt;b&gt;미국 측 요구 ① 대규모 투자 펀드&lt;/b&gt;&lt;br /&gt;블룸버그 취재원들은 &amp;ldquo;일본이 체결한 15 % 관세-투자 패키지와 유사하게, 한국에도 수백 억 달러 규모의 미국 내 투자 약속을 요구하고 있다&amp;rdquo;고 전했습니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;897&quot; data-start=&quot;710&quot;&gt;&lt;b&gt;미국 측 요구 ② 디지털세&amp;middot;플랫폼 규제 완화&lt;/b&gt;&lt;br /&gt;월스트리트저널은 트럼프 대통령이 디지털 서비스세를 &amp;lsquo;실리콘밸리 과세&amp;rsquo;로 규정하며, 외국 IT 규제를 철회할 것을 각국에 압박하고 있다고 보도했습니다. 한국 역시 협상 테이블에서 이 이슈가 연결돼 있습니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;902&quot; data-start=&quot;899&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;924&quot; data-start=&quot;904&quot; data-ke-size=&quot;size20&quot;&gt;협상 &amp;lsquo;체크포인트&amp;rsquo; 3가지&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1312&quot; data-start=&quot;926&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1088&quot; data-start=&quot;926&quot;&gt;&lt;b&gt;일본식 15 % 실현 여부&lt;/b&gt;&lt;br /&gt;한국 정부는 최소 15 ~ 18 %대 관세로 낮추는 것을 &amp;lsquo;마지노선&amp;rsquo;으로 보고 있습니다. 로이터가 전한 내부 목표치와 비교해, 미국 측이 얼마나 양보하느냐가 핵심 변수입니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1196&quot; data-start=&quot;1090&quot;&gt;&lt;b&gt;투자&amp;middot;조선 패키지에 대한 미 의회&amp;middot;노동계 반응&lt;/b&gt;&lt;br /&gt;조선업 협력안은 미국 조선업계 일자리 창출 명분이 있으나, &amp;lsquo;투자 펀드&amp;rsquo;는 대선 국면의 정치적 논란이 될 소지가 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;1312&quot; data-start=&quot;1198&quot;&gt;&lt;b&gt;디지털세&amp;middot;농업 시장 맞교환 폭&lt;/b&gt;&lt;br /&gt;한국은 플랫폼 규제 법안 수정 폭을 최소화하려 하고, 미국은 농산물 수출 확대를 노립니다. 쌍방 모두 국내 여론 반발을 무릅써야 하는 민감 카드입니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-end=&quot;1317&quot; data-start=&quot;1314&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1335&quot; data-start=&quot;1319&quot; data-ke-size=&quot;size20&quot;&gt;시나리오별 결과 전망&lt;/h4&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1630&quot; data-start=&quot;1337&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt; 시나리오 &lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt; 관세율 &lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt; 특징 &lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt; 가능성 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1474&quot; data-start=&quot;1381&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1403&quot; data-start=&quot;1381&quot;&gt;&lt;b&gt;A. &amp;lsquo;프레임워크&amp;rsquo; 딜 체결&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;1429&quot; data-start=&quot;1403&quot; data-col-size=&quot;sm&quot;&gt;15 % 즉시 적용, 세부협상 6개월 유예&lt;/td&gt;
&lt;td data-end=&quot;1462&quot; data-start=&quot;1429&quot; data-col-size=&quot;sm&quot;&gt;조선&amp;middot;투자 패키지, 농산물 부분 개방, 디지털세 재검토&lt;/td&gt;
&lt;td data-end=&quot;1474&quot; data-start=&quot;1462&quot; data-col-size=&quot;sm&quot;&gt;&lt;b&gt;55 %&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1553&quot; data-start=&quot;1475&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1498&quot; data-start=&quot;1475&quot;&gt;&lt;b&gt;B. 부분 합의 &amp;amp; 발효 연기&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;1513&quot; data-start=&quot;1498&quot; data-col-size=&quot;sm&quot;&gt;25 % 유예(60일)&lt;/td&gt;
&lt;td data-end=&quot;1541&quot; data-start=&quot;1513&quot; data-col-size=&quot;sm&quot;&gt;농업&amp;middot;디지털세만 큰 틀 합의, 투자 약속 미비&lt;/td&gt;
&lt;td data-end=&quot;1553&quot; data-start=&quot;1541&quot; data-col-size=&quot;sm&quot;&gt;&lt;b&gt;25 %&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1630&quot; data-start=&quot;1554&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1574&quot; data-start=&quot;1554&quot;&gt;&lt;b&gt;C. 노딜 &amp;amp; 관세 발효&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;1587&quot; data-start=&quot;1574&quot; data-col-size=&quot;sm&quot;&gt;25 % 전면 발효&lt;/td&gt;
&lt;td data-end=&quot;1618&quot; data-start=&quot;1587&quot; data-col-size=&quot;sm&quot;&gt;한국 정부&amp;middot;대기업 투자안 부족, 美 정치 일정 겹침&lt;/td&gt;
&lt;td data-end=&quot;1630&quot; data-start=&quot;1618&quot; data-col-size=&quot;sm&quot;&gt;&lt;b&gt;20 %&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote data-end=&quot;1817&quot; data-start=&quot;1632&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1646&quot; data-start=&quot;1634&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심 변수:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1817&quot; data-start=&quot;1649&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1735&quot; data-start=&quot;1649&quot;&gt;7월 31일 밤(美 기준) 열릴 예정인 루트닉 상무장관-김정관 산업장관 담판 결과&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1773&quot; data-start=&quot;1738&quot;&gt;백악관이 농업단체&amp;middot;공화당 강경파를 얼마나 달랠 수 있느냐&lt;/li&gt;
&lt;li data-end=&quot;1817&quot; data-start=&quot;1776&quot;&gt;한국 측이 제시할 &amp;lsquo;100 억 달러+&amp;alpha;&amp;rsquo; 규모 대미 투자 리스트 구체성&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;1822&quot; data-start=&quot;1819&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1842&quot; data-start=&quot;1824&quot; data-ke-size=&quot;size20&quot;&gt;눈여겨 볼 사항&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2088&quot; data-start=&quot;1844&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1915&quot; data-start=&quot;1844&quot;&gt;&lt;b&gt;증시&amp;middot;환율 변동성 대비:&lt;/b&gt; 8월 1일 결과에 따라 원/달러 환율과 자동차&amp;middot;철강&amp;middot;조선주 변동성이 급증할 수 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;2016&quot; data-start=&quot;1916&quot;&gt;&lt;b&gt;관세 적용 시 소비자가격 파급:&lt;/b&gt; 25 % 관세가 현실화될 경우, 한국산 전기차&amp;middot;가전의 미국 내 판매가격이 평균 8 ~ 12 % 추가 상승할 것으로 업계는 추산합니다.&lt;/li&gt;
&lt;li data-end=&quot;2088&quot; data-start=&quot;2017&quot;&gt;&lt;b&gt;디지털세 협상 이슈 체크:&lt;/b&gt; 네이버&amp;middot;카카오 등 국내 플랫폼사는 글로벌 사업 확장 전략을 다시 점검할 필요가 있습니다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>재테크</category>
      <category>August1Deadline</category>
      <category>KoreaUSTrade</category>
      <category>TariffTalks</category>
      <category>트럼프관세</category>
      <category>한미관세협상</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1958</guid>
      <comments>https://stack-queue.tistory.com/1958#entry1958comment</comments>
      <pubDate>Wed, 30 Jul 2025 00:40:01 +0900</pubDate>
    </item>
    <item>
      <title>&amp;ldquo;밤 7시 이후 물 금지?&amp;rdquo;&amp;hellip;진짜 필요한 건 &amp;lsquo;취침 2시간 전 세이프존&amp;rsquo;</title>
      <link>https://stack-queue.tistory.com/1957</link>
      <description>&lt;h4 data-end=&quot;69&quot; data-start=&quot;48&quot; data-ke-size=&quot;size20&quot;&gt;낮엔 충분히, 밤엔 가볍게&lt;/h4&gt;
&lt;p data-end=&quot;226&quot; data-start=&quot;70&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;저녁 7시 이후 물 마시지 마라&amp;rdquo;는 말, 블로그와 커뮤니티에서 한 번쯤 봤을 거예요. 하지만 수면 시간&amp;middot;생활 패턴이 사람마다 다른 만큼 &amp;lsquo;7시&amp;rsquo;는 절대 규칙이 아닙니다. 핵심은 &lt;b&gt;취침 1 ~ 2시간 전 이후엔 &amp;lsquo;벌컥벌컥&amp;rsquo;을 피해 야간뇨를 줄이고 수면 질을 지키자&lt;/b&gt;는 것!&lt;/p&gt;
&lt;h4 data-end=&quot;258&quot; data-start=&quot;228&quot; data-ke-size=&quot;size20&quot;&gt;왜 7시가 아니라 &amp;lsquo;취침 2시간 전&amp;rsquo;일까?&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;471&quot; data-start=&quot;259&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;324&quot; data-start=&quot;259&quot;&gt;&lt;b&gt;개인 수면 패턴 차이&lt;/b&gt;: 밤 10시에 자는 사람과 새벽 1시에 자는 사람에게 같은 7시는 의미가 다르죠.&lt;/li&gt;
&lt;li data-end=&quot;403&quot; data-start=&quot;325&quot;&gt;&lt;b&gt;야간뇨 예방&lt;/b&gt;: 방광에 물이 가득 차면 깊게 자는 도중에도 깨어 화장실을 가게 됩니다. 수면 단절은 피로&amp;middot;호르몬 분비에 악영향!&lt;/li&gt;
&lt;li data-end=&quot;471&quot; data-start=&quot;404&quot;&gt;&lt;b&gt;활동&amp;middot;땀량&amp;middot;날씨 변수&lt;/b&gt;: 운동&amp;middot;사우나 후엔 저녁이라도 수분&amp;middot;전해질을 반드시 보충해야 탈수를 막을 수 있어요.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;495&quot; data-start=&quot;473&quot; data-ke-size=&quot;size20&quot;&gt;전문가가 권하는 타이밍 전략&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;657&quot; data-start=&quot;496&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;534&quot; data-start=&quot;496&quot;&gt;&lt;b&gt;아침 기상 직후&lt;/b&gt; 큰 컵 한 잔으로 밤새 손실분 리필.&lt;/li&gt;
&lt;li data-end=&quot;586&quot; data-start=&quot;535&quot;&gt;&lt;b&gt;점심 전&amp;middot;후, 오후 4시 전&lt;/b&gt;까지 하루 목표 섭취량 70 ~ 80 % 채우기.&lt;/li&gt;
&lt;li data-end=&quot;627&quot; data-start=&quot;587&quot;&gt;&lt;b&gt;저녁 식사 후&lt;/b&gt;: 텀블러로 &amp;lsquo;입만 축이는&amp;rsquo; 식으로 천천히.&lt;/li&gt;
&lt;li data-end=&quot;657&quot; data-start=&quot;628&quot;&gt;&lt;b&gt;취침 1시간 전 마지막 화장실&lt;/b&gt; 필수.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-end=&quot;682&quot; data-start=&quot;659&quot; data-ke-size=&quot;size20&quot;&gt;이런 경우엔 특히 일찍 끊기!&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;792&quot; data-start=&quot;683&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;721&quot; data-start=&quot;683&quot;&gt;밤마다 2회 이상 깨서 화장실 가는 &lt;b&gt;야간뇨&amp;middot;과민성 방광&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;761&quot; data-start=&quot;722&quot;&gt;&lt;b&gt;전립선 비대증&amp;middot;임신&amp;middot;이뇨제 복용&lt;/b&gt;으로 소변 횟수가 많은 분&lt;/li&gt;
&lt;li data-end=&quot;792&quot; data-start=&quot;762&quot;&gt;&lt;b&gt;노년층&lt;/b&gt;: 방광 용적 감소로 더 민감해요.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;818&quot; data-start=&quot;794&quot; data-ke-size=&quot;size20&quot;&gt;그래도 저녁에 꼭 마셔야 할 때&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;920&quot; data-start=&quot;819&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;855&quot; data-start=&quot;819&quot;&gt;&lt;b&gt;저녁 운동&amp;middot;사우나 후&lt;/b&gt; 땀으로 빠진 수분&amp;middot;전해질 보충&lt;/li&gt;
&lt;li data-end=&quot;894&quot; data-start=&quot;856&quot;&gt;&lt;b&gt;저염식&amp;middot;단식&lt;/b&gt; 중이라 낮에 물&amp;middot;나트륨 섭취가 부족했을 때&lt;/li&gt;
&lt;li data-end=&quot;920&quot; data-start=&quot;895&quot;&gt;&lt;b&gt;폭염 경보&lt;/b&gt;로 땀을 많이 흘린 날&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;937&quot; data-start=&quot;922&quot; data-ke-size=&quot;size20&quot;&gt;실천 체크리스트&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1039&quot; data-start=&quot;938&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;971&quot; data-start=&quot;938&quot;&gt;소변 색이 &lt;b&gt;엷은 레몬색&lt;/b&gt;이면 수분 밸런스 OK.&lt;/li&gt;
&lt;li data-end=&quot;1008&quot; data-start=&quot;972&quot;&gt;카페인&amp;middot;알코올&amp;middot;당이 많은 음료는 저녁에 더 빨리 &amp;lsquo;커트&amp;rsquo;!&lt;/li&gt;
&lt;li data-end=&quot;1039&quot; data-start=&quot;1009&quot;&gt;갈증이 날 땐 &lt;b&gt;&amp;lsquo;소량&amp;middot;자주&amp;rsquo;&lt;/b&gt;로 목만 적신다.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-end=&quot;1120&quot; data-start=&quot;1041&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1120&quot; data-start=&quot;1043&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;한줄 요약&lt;/b&gt;&lt;br /&gt;7시라는 숫자에 매이지 말고, &lt;b&gt;&amp;ldquo;취침 2시간 전부터는 과음 NO&amp;rdquo;&lt;/b&gt;&amp;mdash;낮엔 충분히, 밤엔 가볍게가 꿀팁입니다.&lt;/p&gt;
&lt;/blockquote&gt;</description>
      <category>기타</category>
      <category>건강습관</category>
      <category>물마시는시간</category>
      <category>수면관리</category>
      <category>수분섭취</category>
      <category>야간뇨</category>
      <category>웰빙</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1957</guid>
      <comments>https://stack-queue.tistory.com/1957#entry1957comment</comments>
      <pubDate>Tue, 29 Jul 2025 10:12:12 +0900</pubDate>
    </item>
    <item>
      <title>호텔신라, 2Q &amp;lsquo;어닝 쇼크&amp;rsquo;&amp;hellip;면세 회복 없인 반등 어렵다?</title>
      <link>https://stack-queue.tistory.com/1956</link>
      <description>&lt;h4 data-end=&quot;266&quot; data-start=&quot;237&quot; data-ke-size=&quot;size20&quot;&gt;1) 2분기 실적 쇼크, 컨센서스의 절반&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;444&quot; data-start=&quot;267&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;444&quot; data-start=&quot;267&quot;&gt;2Q25 실적(잠정): 매출 1.03조 원, 영업이익 87억 원으로 &lt;b&gt;전년 대비 &amp;ndash;68.5%&lt;/b&gt; 급감. 시장 예상치(162억 원)를 크게 밑돌았습니다. 발표 직후 주가는 장중 &amp;ndash;8%대까지 밀렸고, 면세 부문은 113억 원 적자로 전환됐습니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;472&quot; data-start=&quot;446&quot; data-ke-size=&quot;size20&quot;&gt;2) 구조적 난관: 면세 회복 지연&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;612&quot; data-start=&quot;473&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;612&quot; data-start=&quot;473&quot;&gt;국내 면세업 전체 매출은 2월 기준 &lt;b&gt;YoY +9.3% 상승&lt;/b&gt;했지만, 방문객 수는 &amp;ndash;12% 감소해 &amp;lsquo;객단가&amp;rsquo; 상승이 성장을 떠받치는 형국입니다. 업황은 여전히 불안정합니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;643&quot; data-start=&quot;614&quot; data-ke-size=&quot;size20&quot;&gt;3) 모멘텀의 씨앗: 중국 단체관광 재개&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;818&quot; data-start=&quot;644&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;736&quot; data-start=&quot;644&quot;&gt;정부는 &lt;b&gt;3Q25 중국 단체 관광객 비자 면제&lt;/b&gt;를 예고하며 관광 수요 부양에 나섰습니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;818&quot; data-start=&quot;737&quot;&gt;실제로 4&amp;ndash;6월 중국발 예약은 2&amp;ndash;3월 대비 &lt;b&gt;24% 증가&lt;/b&gt;했습니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-end=&quot;903&quot; data-start=&quot;819&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;903&quot; data-start=&quot;821&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;의미&lt;/b&gt;: 인바운드 회복이 본격화될 경우 면세&amp;middot;호텔 양 날개에 순풍. 다만 &amp;lsquo;다이고(代購) 규제‧고환율 부담&amp;rsquo; 같은 외생 변수는 여전합니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 data-end=&quot;929&quot; data-start=&quot;905&quot; data-ke-size=&quot;size20&quot;&gt;4) 밸류에이션 &amp;amp; 투자 포인트&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1191&quot; data-start=&quot;930&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;999&quot; data-start=&quot;930&quot;&gt;&lt;b&gt;밸류&lt;/b&gt;: 이익이 급감해 PER은 의미가 없으며, P/B 1.4배는 역사적 저점(1배 내외)과 평균(2배) 사이.&lt;/li&gt;
&lt;li data-end=&quot;1120&quot; data-start=&quot;1000&quot;&gt;&lt;b&gt;리스크&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1120&quot; data-start=&quot;1015&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1043&quot; data-start=&quot;1015&quot;&gt;단기 실적 변동성(면세 손익 가이던스 부재)&lt;/li&gt;
&lt;li data-end=&quot;1083&quot; data-start=&quot;1046&quot;&gt;中 소비 둔화‧경쟁 심화(Lotte, Shinsegae 등)&lt;/li&gt;
&lt;li data-end=&quot;1120&quot; data-start=&quot;1086&quot;&gt;高환율 &amp;rarr; 해외여행 지연 &amp;rarr; 면세 수요 회복 속도 지연&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1191&quot; data-start=&quot;1121&quot;&gt;&lt;b&gt;기대&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1191&quot; data-start=&quot;1135&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1166&quot; data-start=&quot;1135&quot;&gt;인바운드 급증 시 하이레버리지 효과(고정비 구조)&lt;/li&gt;
&lt;li data-end=&quot;1191&quot; data-start=&quot;1169&quot;&gt;삼성그룹 호텔‧리테일 시너지 강화&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1359&quot; data-start=&quot;1193&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;종합&lt;/b&gt;: 단기 반등은 제한적이지만, 하반기 중국 단체관광 재개가 현실화되면 영업 레버리지가 빠르게 회복될 수 있습니다. 중장기 관점에서 &amp;lsquo;관광수혜 턴어라운드&amp;rsquo; 베팅은 유효하나, 실적 확인 전까지 &lt;b&gt;분할매수&lt;/b&gt; 또는 &lt;b&gt;추세 전환(50일선 회복) 시점&lt;/b&gt;을 노리는 보수적 접근이 바람직합니다.&lt;/p&gt;</description>
      <category>재테크</category>
      <category>면세점</category>
      <category>여행수혜주</category>
      <category>주식분석</category>
      <category>중국관광객</category>
      <category>코스피</category>
      <category>호텔신라</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1956</guid>
      <comments>https://stack-queue.tistory.com/1956#entry1956comment</comments>
      <pubDate>Tue, 29 Jul 2025 09:56:12 +0900</pubDate>
    </item>
    <item>
      <title>한여름 일본어 표현 8가지 &amp;ndash; 일본 여행 전에 필수 암기!</title>
      <link>https://stack-queue.tistory.com/1955</link>
      <description>&lt;p data-end=&quot;192&quot; data-start=&quot;38&quot; data-ke-size=&quot;size16&quot;&gt;장마가 끝나고 본격적인 무더위가 찾아오면 일본인들도 &amp;ldquo;더워 죽겠다&amp;rdquo;는 말을 입에 달고 삽니다. 이번 포스팅에서는 &lt;b&gt;여름날 자주 쓰이는 일본어 표현 8가지&lt;/b&gt;를 콕 집어 소개할게요. 일본 여행은 물론, 일본어 원서&amp;middot;드라마&amp;middot;유튜브를 볼 때도 은근히 자주 들리니 꼭 익혀 두세요!&lt;/p&gt;
&lt;hr data-end=&quot;197&quot; data-start=&quot;194&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;231&quot; data-start=&quot;199&quot; data-ke-size=&quot;size20&quot;&gt;1. あついですね (atsui desu ne)&lt;/h4&gt;
&lt;p data-end=&quot;278&quot; data-start=&quot;232&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;덥네요.&amp;rdquo;&lt;br /&gt;가장 기본적인 인사이자 아이스커피를 권하며 대화를 열 때도 좋아요.&lt;/p&gt;
&lt;h4 data-end=&quot;306&quot; data-start=&quot;280&quot; data-ke-size=&quot;size20&quot;&gt;2. なつばて (natsubate)&lt;/h4&gt;
&lt;p data-end=&quot;396&quot; data-start=&quot;307&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;여름철 무기력&amp;middot;더위 먹음.&amp;rdquo;&lt;br /&gt;지친 상태를 묘사할 때 쓰입니다.&lt;/p&gt;
&lt;p data-end=&quot;396&quot; data-start=&quot;307&quot; data-ke-size=&quot;size16&quot;&gt;예) きのうから なつばて で しごと が すすまない (어제부터 더위 먹어서 일이 안 돼).&lt;/p&gt;
&lt;h4 data-end=&quot;423&quot; data-start=&quot;398&quot; data-ke-size=&quot;size20&quot;&gt;3. すずしい (suzushii)&lt;/h4&gt;
&lt;p data-end=&quot;476&quot; data-start=&quot;424&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;시원하다.&amp;rdquo;&lt;br /&gt;냉방이 잘된 실내나 바람이 선선할 때. 반말로 すずしい！ 만으로도 OK.&lt;/p&gt;
&lt;h4 data-end=&quot;505&quot; data-start=&quot;478&quot; data-ke-size=&quot;size20&quot;&gt;4. うみびより (umibiyori)&lt;/h4&gt;
&lt;p data-end=&quot;556&quot; data-start=&quot;506&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;해수욕하기 좋은 날씨.&amp;rdquo;&lt;br /&gt;〜びより는 &amp;ldquo;~하기 딱 좋은 날&amp;rdquo;을 뜻하는 계절어입니다.&lt;/p&gt;
&lt;h4 data-end=&quot;585&quot; data-start=&quot;558&quot; data-ke-size=&quot;size20&quot;&gt;5. かきごおり (kakigoori)&lt;/h4&gt;
&lt;p data-end=&quot;650&quot; data-start=&quot;586&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;빙수.&amp;rdquo;&lt;br /&gt;여름 축제(まつり) 노점에서 빠질 수 없죠. 맛을 붙여 いちご かきごおり(딸기 빙수)처럼 씁니다.&lt;/p&gt;
&lt;h4 data-end=&quot;678&quot; data-start=&quot;652&quot; data-ke-size=&quot;size20&quot;&gt;6. せんぷうき (senpuuki)&lt;/h4&gt;
&lt;p data-end=&quot;721&quot; data-start=&quot;679&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;선풍기.&amp;rdquo;&lt;br /&gt;일본 가정에서는 에어컨(エアコン) 대신 선풍기를 자주 써요.&lt;/p&gt;
&lt;h4 data-end=&quot;747&quot; data-start=&quot;723&quot; data-ke-size=&quot;size20&quot;&gt;7. あせだく (asedaku)&lt;/h4&gt;
&lt;p data-end=&quot;805&quot; data-start=&quot;748&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;땀이 흠뻑.&amp;rdquo;&lt;br /&gt;*あせ(땀) + だく(가득)*의 조어.&lt;/p&gt;
&lt;p data-end=&quot;805&quot; data-start=&quot;748&quot; data-ke-size=&quot;size16&quot;&gt;예) ライブ ハウス は あせだく だった.&lt;/p&gt;
&lt;h4 data-end=&quot;835&quot; data-start=&quot;807&quot; data-ke-size=&quot;size20&quot;&gt;8. ひやけどめ (hiyakedome)&lt;/h4&gt;
&lt;p data-end=&quot;889&quot; data-start=&quot;836&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;선크림&amp;middot;자외선 차단제.&amp;rdquo;&lt;br /&gt;드럭스토어에서 ひやけどめ ありますか？ 한마디면 바로 통합니다.&lt;/p&gt;
&lt;hr data-end=&quot;894&quot; data-start=&quot;891&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;활용 팁&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1009&quot; data-start=&quot;907&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;952&quot; data-start=&quot;907&quot;&gt;아침 인사 후 あついですね로 공감대를 만들면 자연스러운 스몰토크 완성!&lt;/li&gt;
&lt;li data-end=&quot;1009&quot; data-start=&quot;953&quot;&gt;더위에 지친 친구에게는 なつばて しないように みず を たくさん のんでね처럼 걱정해 줍시다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>일본어공부</category>
      <category>여름일본어</category>
      <category>여름회화</category>
      <category>일본문화</category>
      <category>일본어</category>
      <category>일본여행회화</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1955</guid>
      <comments>https://stack-queue.tistory.com/1955#entry1955comment</comments>
      <pubDate>Tue, 29 Jul 2025 09:09:45 +0900</pubDate>
    </item>
    <item>
      <title>Kotlin also 한눈에 이해하기</title>
      <link>https://stack-queue.tistory.com/1954</link>
      <description>&lt;p data-end=&quot;138&quot; data-start=&quot;28&quot; data-ke-size=&quot;size16&quot;&gt;also는 &lt;b&gt;스코프 함수(scope function)&lt;/b&gt; 중 하나예요.&lt;br /&gt;&amp;ldquo;지금 만든(혹은 불러온) 객체를 그대로 반환하되, &lt;b&gt;중간에 &amp;lsquo;추가 작업&amp;rsquo;&lt;/b&gt;을 하고 싶을 때&amp;rdquo; 쓰면 딱 맞습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1753747540223&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;val user = User(&quot;철수&quot;, 29).also {
    println(&quot;✅ 새 사용자 생성: ${it.name}&quot;)
}
// 여기서 user 는 그대로 User(&quot;철수&quot;, 29)&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-end=&quot;522&quot; data-start=&quot;507&quot; data-ke-size=&quot;size20&quot;&gt;언제 쓰면 좋은가?&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;776&quot; data-start=&quot;524&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;625&quot; data-start=&quot;524&quot;&gt;&lt;b&gt;&lt;b&gt;객체 생성 직후 검증&amp;middot;로깅|&lt;br /&gt;&lt;/b&gt;&lt;/b&gt;
&lt;pre id=&quot;code_1753747576972&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;kotlin&quot;&gt;&lt;code&gt;val config = loadConfig().also { check(it.isValid()) }&lt;/code&gt;&lt;/pre&gt;
&lt;b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;776&quot; data-start=&quot;626&quot;&gt;&lt;b&gt;체이닝 사이에 디버깅&lt;br /&gt;&lt;/b&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre id=&quot;code_1753747587841&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;val result = list
    .map { it * 2 }
    .also { println(&quot;중간 결과: $it&quot;) }
    .filter { it &amp;gt; 10 }&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-end=&quot;808&quot; data-start=&quot;778&quot; data-ke-size=&quot;size20&quot;&gt;apply&amp;middot;let과의 차이, 빠른 비교&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;980&quot; data-start=&quot;810&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;871&quot; data-start=&quot;810&quot;&gt;apply : 블록 안에서 this 로 속성 설정 &amp;rarr; &lt;b&gt;객체 초기화&lt;/b&gt;에 좋음. 반환값은 리시버.&lt;/li&gt;
&lt;li data-end=&quot;928&quot; data-start=&quot;872&quot;&gt;let : 블록 안에서 it 사용, &lt;b&gt;람다 결과&lt;/b&gt;를 반환 &amp;rarr; 널 처리, 변환에 유리.&lt;/li&gt;
&lt;li data-end=&quot;980&quot; data-start=&quot;929&quot;&gt;also: 블록 안에서 it 사용, &lt;b&gt;리시버를 반환&lt;/b&gt; &amp;rarr; 사이드 이펙트 전용.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-end=&quot;1083&quot; data-start=&quot;982&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1083&quot; data-start=&quot;984&quot; data-ke-size=&quot;size16&quot;&gt;기억법: &lt;b&gt;&amp;ldquo;do this also, but give me the same thing back.&amp;rdquo;&lt;/b&gt;&lt;br /&gt;(무언가 &amp;lsquo;추가로&amp;rsquo; 하고 싶지만 결과값은 그대로 받고 싶을 때)&lt;/p&gt;
&lt;/blockquote&gt;</description>
      <category>개발</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1954</guid>
      <comments>https://stack-queue.tistory.com/1954#entry1954comment</comments>
      <pubDate>Tue, 29 Jul 2025 09:06:44 +0900</pubDate>
    </item>
    <item>
      <title>Mediator 패턴: 복잡한 객체 의존을 한 방에 정리하기</title>
      <link>https://stack-queue.tistory.com/1953</link>
      <description>&lt;p data-end=&quot;393&quot; data-start=&quot;104&quot; data-ke-size=&quot;size16&quot;&gt;UI 컴포넌트&amp;middot;모듈&amp;middot;마이크로서비스가 서로 직접 호출을 시작하면, 어느 순간 &amp;ldquo;누가 누구를 부르는지&amp;rdquo; 알 수 없는 스파게티 의존 그래프가 됩니다.&lt;br /&gt;Mediator 패턴은 &lt;b&gt;&amp;ldquo;중재자&amp;rdquo;&lt;/b&gt;-객체를 사이에 두어 모든 통신을 중앙 집중화합니다. 콜리그(Colleague)들은 중재자에게만 말하고, 중재자가 대신 다른 콜리그에게 메시지를 전달합니다. 결과적으로 각 객체는 &lt;b&gt;서로를 전혀 모른 채&lt;/b&gt; 협력할 수 있고, 관계 변경도 중재자만 수정하면 됩니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-end=&quot;409&quot; data-start=&quot;395&quot; data-section-id=&quot;n6ioaa&quot; data-ke-size=&quot;size23&quot;&gt;언제 쓰면 좋은가?&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;617&quot; data-start=&quot;410&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;476&quot; data-start=&quot;410&quot;&gt;&lt;b&gt;이벤트 버스&lt;/b&gt;: 게시자와 구독자가 직접 연결되지 않고 중앙 EventBus(Mediator)를 통해 소통.&lt;/li&gt;
&lt;li data-end=&quot;551&quot; data-start=&quot;477&quot;&gt;&lt;b&gt;알림 시스템&lt;/b&gt;: 다양한 채널(SMS, 이메일, 앱 푸시)을 하나의 NotificationHub(Mediator)가 조정.&lt;/li&gt;
&lt;li data-end=&quot;617&quot; data-start=&quot;552&quot;&gt;&lt;b&gt;상태 머신&lt;/b&gt;: 여러 상태 객체가 TransitionManager(Mediator)를 통해 전이 로직을 공유.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;634&quot; data-start=&quot;619&quot; data-section-id=&quot;1b62hcq&quot; data-ke-size=&quot;size23&quot;&gt;구조 한눈에 보기&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;788&quot; data-start=&quot;635&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;682&quot; data-start=&quot;635&quot;&gt;&lt;b&gt;Mediator 인터페이스&lt;/b&gt;: notify(sender, event)&lt;/li&gt;
&lt;li data-end=&quot;723&quot; data-start=&quot;683&quot;&gt;&lt;b&gt;ConcreteMediator&lt;/b&gt;: 이벤트별 라우팅 로직 보유&lt;/li&gt;
&lt;li data-end=&quot;788&quot; data-start=&quot;724&quot;&gt;&lt;b&gt;Colleague&lt;/b&gt;: send(event) &amp;rarr; mediator 로 위임, receive() 로 콜백&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;821&quot; data-start=&quot;790&quot; data-section-id=&quot;1k0dd24&quot; data-ke-size=&quot;size23&quot;&gt;Kotlin 미니 예제 &amp;ndash; ChatEventBus&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1753747370895&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;interface Mediator {
    fun notify(sender: Colleague, event: String, payload: Any? = null)
}
class ChatEventBus : Mediator {
    private val colleagues = mutableListOf&amp;lt;Colleague&amp;gt;()
    fun register(c: Colleague) { colleagues += c }
    override fun notify(sender: Colleague, event: String, payload: Any?) {
        colleagues.filter { it != sender }
                  .forEach { it.receive(event, payload) }
    }
}
abstract class Colleague(private val bus: Mediator) {
    fun send(event: String, payload: Any? = null) = bus.notify(this, event, payload)
    abstract fun receive(event: String, payload: Any?)
}
class User(bus: Mediator, private val name: String) : Colleague(bus) {
    override fun receive(event: String, payload: Any?) =
        println(&quot;[$name] $event : $payload&quot;)
}
fun main() {
    val bus = ChatEventBus()
    val a = User(bus, &quot;철수&quot;).also { bus.register(it) }
    val b = User(bus, &quot;영희&quot;).also { bus.register(it) }
    a.send(&quot;MSG&quot;, &quot;안녕  &quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1943&quot; data-start=&quot;1803&quot; data-ke-size=&quot;size16&quot;&gt;이벤트 버스를 Mediator로 구현해 두 사용자 객체가 서로를 모른 채 메시지를 주고받습니다. 중앙 버스를 다른 구현체로 교체하면 로직 전체를 흔들지 않고 기능을 확장할 수 있습니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-end=&quot;1962&quot; data-start=&quot;1945&quot; data-section-id=&quot;c610li&quot; data-ke-size=&quot;size23&quot;&gt;JUnit 테스트 스케치&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1753747410893&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Test
fun `버스가 메시지를 중계한다`() {
    val bus = ChatEventBus()
    val received = mutableListOf&amp;lt;String&amp;gt;()
    val a = object : Colleague(bus) {
        override fun receive(event: String, payload: Any?) { /* no-op */ }
    }
    val b = object : Colleague(bus) {
        override fun receive(event: String, payload: Any?) {
            if (event == &quot;PING&quot;) received += &quot;${payload}&quot;
        }
    }
    bus.register(a); bus.register(b)
    a.send(&quot;PING&quot;, &quot;hello&quot;)
    assertEquals(listOf(&quot;hello&quot;), received)
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;2495&quot; data-start=&quot;2483&quot; data-section-id=&quot;1qztuvi&quot; data-ke-size=&quot;size23&quot;&gt;장점 vs 단점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2678&quot; data-start=&quot;2496&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2547&quot; data-start=&quot;2496&quot;&gt;&lt;b&gt;  결합도&amp;darr;&lt;/b&gt;: Colleague 간 직접 참조 제거 &amp;rarr; 테스트&amp;middot;유지보수 용이&lt;/li&gt;
&lt;li data-end=&quot;2597&quot; data-start=&quot;2548&quot;&gt;&lt;b&gt;  단일 행동 지점&lt;/b&gt;: 복잡한 비즈니스 흐름을 Mediator 하나에 집중&lt;/li&gt;
&lt;li data-end=&quot;2678&quot; data-start=&quot;2598&quot;&gt;&lt;b&gt;  Mediator 비대화&lt;/b&gt;: 모든 규칙이 몰리면 거대한 &amp;ldquo;신-객체&amp;rdquo;가 될 위험 &amp;rarr; 서브-중재자 분할&amp;middot;이벤트 서브 타입 도입으로 완화&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2692&quot; data-start=&quot;2680&quot; data-section-id=&quot;qfizuf&quot; data-ke-size=&quot;size23&quot;&gt;한 줄 요약&lt;/h3&gt;
&lt;p data-end=&quot;2770&quot; data-start=&quot;2693&quot; data-ke-size=&quot;size16&quot;&gt;Mediator 패턴은 &lt;b&gt;&amp;ldquo;다대다 의존의 골칫거리&amp;rdquo;&lt;/b&gt;를 &lt;b&gt;&amp;ldquo;하나의 중재자&amp;rdquo;&lt;/b&gt;로 수렴시켜 코드의 복잡도를 기하급수적으로 낮춰 줍니다.&lt;/p&gt;</description>
      <category>개발</category>
      <category>Kotlin예제</category>
      <category>MediatorPattern</category>
      <category>디자인패턴</category>
      <category>미디에이터패턴</category>
      <category>이벤트버스</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1953</guid>
      <comments>https://stack-queue.tistory.com/1953#entry1953comment</comments>
      <pubDate>Tue, 29 Jul 2025 09:04:05 +0900</pubDate>
    </item>
    <item>
      <title>Kotlin Sequence 내부 구현으로 배우는 Lazy Iterator 원리</title>
      <link>https://stack-queue.tistory.com/1952</link>
      <description>&lt;h4 data-end=&quot;162&quot; data-start=&quot;124&quot; data-ke-size=&quot;size20&quot;&gt;1. Sequence가 List&amp;middot;Set과 다른 진짜 이유&lt;/h4&gt;
&lt;p data-end=&quot;371&quot; data-start=&quot;163&quot; data-ke-size=&quot;size16&quot;&gt;Sequence&amp;lt;T&amp;gt;는 &lt;b&gt;데이터를 담지 않고 &amp;ldquo;필요할 때 만들어&amp;rdquo;&lt;/b&gt; 내보냅니다. filter &amp;rarr; map &amp;rarr; take 같은 여러 단계도 &lt;b&gt;요소당 한 번씩&lt;/b&gt; 흐르기 때문에 중간 컬렉션이 전혀 생기지 않죠. Kotlin 공식 문서가 강조하듯, 이는 eager 컬렉션과 구조적으로 다릅니다.&lt;/p&gt;
&lt;blockquote data-end=&quot;403&quot; data-start=&quot;373&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;403&quot; data-start=&quot;375&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;한마디로&lt;/b&gt;: 이터레이터를 감춘 파이프라인.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;408&quot; data-start=&quot;405&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;474&quot; data-start=&quot;410&quot; data-ke-size=&quot;size20&quot;&gt;2. 파이프라인 안쪽: TransformingSequence &amp;middot; FilteringSequence&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;698&quot; data-start=&quot;475&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;531&quot; data-start=&quot;475&quot;&gt;모든 중간 연산(map / filter 등)은 &lt;b&gt;새 Sequence 구현체&lt;/b&gt;를 리턴합니다.&lt;/li&gt;
&lt;li data-end=&quot;612&quot; data-start=&quot;532&quot;&gt;map()을 호출하면 TransformingSequence가 생성되어 원본 sequence와 lambda를 보관만 합니다.&lt;/li&gt;
&lt;li data-end=&quot;698&quot; data-start=&quot;613&quot;&gt;실제 변환은 내부 Iterator의 next()가 불릴 때 실행됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1753745189554&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public fun &amp;lt;T, R&amp;gt; Sequence&amp;lt;T&amp;gt;.map(
    transform: (T) -&amp;gt; R
): Sequence&amp;lt;R&amp;gt; = TransformingSequence(this, transform)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;972&quot; data-start=&quot;829&quot; data-ke-size=&quot;size16&quot;&gt;TransformingSequence.iterator()는 원본 iterator를 들고 있다가, next()가 호출되면&lt;br /&gt;transformer(it)로 값을 가공해 넘겨줍니다. 즉 &lt;b&gt;&amp;ldquo;pull&amp;rdquo; 모델&lt;/b&gt;이라 불필요한 요소는 건드리지 않습니다.&lt;/p&gt;
&lt;hr data-end=&quot;977&quot; data-start=&quot;974&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1033&quot; data-start=&quot;979&quot; data-ke-size=&quot;size20&quot;&gt;3. 진짜 Lazy의 비밀 &amp;mdash; SequenceBuilderIterator와 코루틴&lt;/h4&gt;
&lt;p data-end=&quot;1314&quot; data-start=&quot;1034&quot; data-ke-size=&quot;size16&quot;&gt;sequence { &amp;hellip; } 빌더 안에서 yield()를 쓰면 &lt;b&gt;경량 코루틴&lt;/b&gt;이 생성됩니다.&lt;br /&gt;SequenceBuilderIterator가 Iterator + SequenceScope를 함께 구현하고,&lt;br /&gt;yield() 시점에서 &lt;b&gt;suspend &amp;rarr; 소비자에게 값 반환 &amp;rarr; 다음 next() 때 이어서 실행&lt;/b&gt; 흐름을 만듭니다.&lt;br /&gt;이 덕분에 &lt;b&gt;무한 시퀀스&lt;/b&gt;도 메모리 걱정 없이 다룰 수 있죠. &lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr data-end=&quot;1319&quot; data-start=&quot;1316&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1355&quot; data-start=&quot;1321&quot; data-ke-size=&quot;size20&quot;&gt;4. 중간 vs 종단 연산 &amp;ndash; 호출 순간이 다르다&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1618&quot; data-start=&quot;1356&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1440&quot; data-start=&quot;1356&quot;&gt;&lt;b&gt;Intermediate&lt;/b&gt;: filter, map, distinct &amp;hellip; &amp;rarr; 또 다른 Sequence 반환, 아직 실행 안 됨.&lt;/li&gt;
&lt;li data-end=&quot;1618&quot; data-start=&quot;1441&quot;&gt;&lt;b&gt;Terminal&lt;/b&gt;: first, toList, sum &amp;hellip; &amp;rarr; 그제서야 iterator 루프가 돌며 모든 연산 수행.&lt;br /&gt;이 디자인 덕분에 take(1) 같은 종단 연산이 앞쪽에 오면 &lt;b&gt;필요한 만큼만&lt;/b&gt; 작업하고 멈춥니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1623&quot; data-start=&quot;1620&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1648&quot; data-start=&quot;1625&quot; data-ke-size=&quot;size20&quot;&gt;5. 퍼포먼스&amp;middot;메모리 관점 팁&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1937&quot; data-start=&quot;1649&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1709&quot; data-start=&quot;1649&quot;&gt;&lt;b&gt;작은 컬렉션 + 1~2 단계&lt;/b&gt;라면 일반 List 연산이 인라인 최적화 덕분에 더 빠를 수도.&lt;/li&gt;
&lt;li data-end=&quot;1767&quot; data-start=&quot;1710&quot;&gt;체인이 길거나 데이터가 크면 &lt;b&gt;Sequence로 중간 객체 할당을 0으로&lt;/b&gt; 줄이는 게 유리.&lt;/li&gt;
&lt;li data-end=&quot;1833&quot; data-start=&quot;1768&quot;&gt;Sequence마다 객체를 하나씩 만들기 때문에 람다 캡처가 많은 경우에는 GC 압박이 생길 수 있다.&lt;/li&gt;
&lt;li data-end=&quot;1937&quot; data-start=&quot;1834&quot;&gt;일부 Sequence(예: iterator {} 빌더)는 &lt;b&gt;1회 순회 전제&lt;/b&gt;이므로, 재사용하려면 .toList() 등으로 복사하거나 별도 시퀀스를 새로 만들어야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1942&quot; data-start=&quot;1939&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1972&quot; data-start=&quot;1944&quot; data-ke-size=&quot;size20&quot;&gt;6. 알아두면 좋은 내부 클래스 스냅샷&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2259&quot; data-start=&quot;1973&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2022&quot; data-start=&quot;1973&quot;&gt;&lt;b&gt;TransformingSequence&lt;/b&gt; &amp;ndash; map&amp;middot;flatMap류&lt;/li&gt;
&lt;li data-end=&quot;2074&quot; data-start=&quot;2023&quot;&gt;&lt;b&gt;FilteringSequence&lt;/b&gt; &amp;ndash; filter&amp;middot;takeWhile류&lt;/li&gt;
&lt;li data-end=&quot;2140&quot; data-start=&quot;2075&quot;&gt;&lt;b&gt;FlatteningSequence&lt;/b&gt; &amp;ndash; flatMap 내부에서 다시 iterator 뽑을 때 사용&lt;/li&gt;
&lt;li data-end=&quot;2198&quot; data-start=&quot;2141&quot;&gt;&lt;b&gt;ConstrainedOnceSequence&lt;/b&gt; &amp;ndash; &amp;ldquo;한 번만 돌 수 있다&amp;rdquo;는 계약을 명시&lt;/li&gt;
&lt;li data-end=&quot;2259&quot; data-start=&quot;2199&quot;&gt;&lt;b&gt;SequenceBuilderIterator&lt;/b&gt; &amp;ndash; sequence {} 코루틴 빌더의 핵심&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2348&quot; data-start=&quot;2261&quot; data-ke-size=&quot;size16&quot;&gt;이들은 모두 &lt;b&gt;Iterator 구현체를 생성할 때&lt;/b&gt; 로직을 실행하므로, JVM JIT가 인라이닝 최적화를 쉽게 적용할 수 있다는 장점도 함께 가져갑니다.&lt;/p&gt;
&lt;hr data-end=&quot;2353&quot; data-start=&quot;2350&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;2373&quot; data-start=&quot;2355&quot; data-ke-size=&quot;size20&quot;&gt;7. 실전 코드 패턴&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1753745240202&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 기존 리스트를 지연 평가 파이프라인으로
val lazy = listOf(1, 2, 3, 4, 5)
    .asSequence()
    .filter { it % 2 == 1 }   // 아직 실행 안 됨
    .map { it * it }

println(lazy.first())         // 1만 계산
println(lazy.sum())           // 남은 9 + 25 계산&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2669&quot; data-start=&quot;2615&quot; data-ke-size=&quot;size16&quot;&gt;first() 호출 직후 파이프라인이 끊기므로 1&amp;middot;9&amp;middot;25 세 값만 가공했다는 점이 핵심!&lt;/p&gt;
&lt;hr data-end=&quot;2674&quot; data-start=&quot;2671&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;2708&quot; data-start=&quot;2676&quot; data-ke-size=&quot;size20&quot;&gt;8. 마무리 &amp;ndash; 언제 Sequence를 쓸까?&lt;/h4&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;2889&quot; data-start=&quot;2709&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt; 상황 &lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt; 추천 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2780&quot; data-start=&quot;2737&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2766&quot; data-start=&quot;2737&quot;&gt;&lt;b&gt;대량 데이터 스트림&lt;/b&gt;, &lt;b&gt;무한 스트림&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2780&quot; data-start=&quot;2766&quot;&gt;✅ Sequence&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2825&quot; data-start=&quot;2781&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2806&quot; data-start=&quot;2781&quot;&gt;&lt;b&gt;데이터 적고 연산 단계도 1~2개&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2825&quot; data-start=&quot;2806&quot;&gt;  컬렉션이 더 빠를 수도&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2889&quot; data-start=&quot;2826&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2875&quot; data-start=&quot;2826&quot;&gt;&lt;b&gt;연산 순서를 최적으로 배치&lt;/b&gt;해 필터 &amp;rarr; take 처럼 일찍 끊기고 싶을 때&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2889&quot; data-start=&quot;2875&quot;&gt;✅ Sequence&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;</description>
      <category>개발</category>
      <category>Kotlin</category>
      <category>LazyIterator</category>
      <category>sequence</category>
      <category>TransformingSequence</category>
      <category>개발블로그</category>
      <category>디자인패턴</category>
      <category>코틀린개발</category>
      <category>퍼포먼스튜닝</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1952</guid>
      <comments>https://stack-queue.tistory.com/1952#entry1952comment</comments>
      <pubDate>Tue, 29 Jul 2025 08:28:00 +0900</pubDate>
    </item>
    <item>
      <title>카페인 샴푸 vs 2-Deoxy-D-Ribose(2dDR) 젤</title>
      <link>https://stack-queue.tistory.com/1951</link>
      <description>&lt;h4 data-end=&quot;68&quot; data-start=&quot;41&quot; data-ke-size=&quot;size20&quot;&gt;― 모낭 혈류를 깨우는 &amp;lsquo;진짜&amp;rsquo; 강자는?&lt;/h4&gt;
&lt;p data-end=&quot;236&quot; data-start=&quot;70&quot; data-ke-size=&quot;size16&quot;&gt;탈모 관리의 핵심은 &lt;b&gt;모낭에 얼마나 많은 피와 영양이 흐르느냐&lt;/b&gt;입니다. 최근 주목받는 두 토픽, &lt;b&gt;카페인 샴푸&lt;/b&gt;와 &lt;b&gt;2dDR 젤&lt;/b&gt;이 바로 &amp;lsquo;혈류 개선&amp;rsquo;으로 모발을 살린다는 공통점을 내세우죠. 과연 어느 쪽이 더 근거가 탄탄할까요? 최신 논문&amp;middot;임상 데이터를 바탕으로 장단점을 정리했습니다.&lt;/p&gt;
&lt;hr data-end=&quot;241&quot; data-start=&quot;238&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;279&quot; data-start=&quot;243&quot; data-ke-size=&quot;size20&quot;&gt;1️⃣ 카페인 샴푸: &amp;lsquo;카페인 + &amp;alpha;&amp;rsquo;의 실전 데이터&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;800&quot; data-start=&quot;280&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;397&quot; data-start=&quot;280&quot;&gt;&lt;b&gt;작동 메커니즘&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;397&quot; data-start=&quot;298&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;350&quot; data-start=&quot;298&quot;&gt;카페인이 &lt;b&gt;PDE 억제 &amp;rarr; cAMP&amp;uarr;&lt;/b&gt; 경로를 통해 모낭 세포 대사와 증식을 촉진.&lt;/li&gt;
&lt;li data-end=&quot;397&quot; data-start=&quot;353&quot;&gt;남성형 탈모의 주범 DHT 신호를 부분적으로 차단한다는 연구도 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;662&quot; data-start=&quot;398&quot;&gt;&lt;b&gt;임상 근거&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;662&quot; data-start=&quot;414&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;525&quot; data-start=&quot;414&quot;&gt;2024년 중국 연구: &lt;b&gt;카페인+아데노신 샴푸&lt;/b&gt;를 77명(18~60세)에게 12주 사용시 모발 밀도 증가&amp;middot;탈모 감소 보고&amp;nbsp;&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;662&quot; data-start=&quot;528&quot;&gt;2025년 체계적 문헌고찰: 9건(총 684명) 인체 시험을 분석해 &amp;ldquo;효과&amp;middot;안전성 신호는 긍정적, 그러나 무작위&amp;middot;대조 설계 부족&amp;rdquo;으로 &amp;lsquo;중간 이하&amp;rsquo;의 근거 수준 평가&amp;nbsp;&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;718&quot; data-start=&quot;663&quot;&gt;&lt;b&gt;현실적 장점&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;718&quot; data-start=&quot;680&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;718&quot; data-start=&quot;680&quot;&gt;약국&amp;middot;온라인에서 손쉽게 구입, 부작용 드물고 사용 편의성 &amp;uarr;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;800&quot; data-start=&quot;719&quot;&gt;&lt;b&gt;한계&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;800&quot; data-start=&quot;732&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;764&quot; data-start=&quot;732&quot;&gt;샴푸는 두피 접촉 시간이 짧아 흡수 효율이 제한적.&lt;/li&gt;
&lt;li data-end=&quot;800&quot; data-start=&quot;767&quot;&gt;제품별 카페인 농도&amp;middot;포뮬러가 천차만별&amp;rarr; 효과 재현성 &amp;darr;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;805&quot; data-start=&quot;802&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;845&quot; data-start=&quot;807&quot; data-ke-size=&quot;size20&quot;&gt;2️⃣ 2dDR 젤: &amp;lsquo;DNA 당&amp;rsquo;이 여는 신생혈관 모드&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1409&quot; data-start=&quot;846&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;998&quot; data-start=&quot;846&quot;&gt;&lt;b&gt;작동 메커니즘(가설)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;998&quot; data-start=&quot;868&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;957&quot; data-start=&quot;868&quot;&gt;&lt;b&gt;VEGF 80&amp;ndash;90 % 수준의 혈관 신생&lt;/b&gt; 유도&amp;rarr; 모낭 주변에 신선한 혈액 공급&lt;/li&gt;
&lt;li data-end=&quot;998&quot; data-start=&quot;960&quot;&gt;미토콘드리아 활성&amp;middot;항산화 작용도 제시되지만, 아직 초기 단계.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1233&quot; data-start=&quot;999&quot;&gt;&lt;b&gt;주요 연구&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1233&quot; data-start=&quot;1015&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1146&quot; data-start=&quot;1015&quot;&gt;2024년 Frontiers in Pharmacology: &lt;b&gt;AGA 유도 마우스&lt;/b&gt;에 2 % 2dDR 젤 20일 도포 시 &lt;b&gt;미녹시딜과 유사한 발모율&lt;/b&gt; 확인&lt;/li&gt;
&lt;li data-end=&quot;1233&quot; data-start=&quot;1149&quot;&gt;셰필드대 발표(2024): &amp;ldquo;2dDR가 자연 발생 당으로 안전성 기대&amp;rdquo; 보도 &lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1319&quot; data-start=&quot;1234&quot;&gt;&lt;b&gt;강점&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1319&quot; data-start=&quot;1247&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1293&quot; data-start=&quot;1247&quot;&gt;미녹시딜 수준의 효과를 &lt;b&gt;비(非)호르몬&amp;middot;비고혈압 약물&lt;/b&gt;로 달성할 잠재력.&lt;/li&gt;
&lt;li data-end=&quot;1319&quot; data-start=&quot;1296&quot;&gt;젤 포뮬러로 두피 지속 접촉 가능.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1409&quot; data-start=&quot;1320&quot;&gt;&lt;b&gt;한계&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1409&quot; data-start=&quot;1333&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1374&quot; data-start=&quot;1333&quot;&gt;&lt;b&gt;인체 임상 0건&lt;/b&gt;: 용량&amp;middot;도포 주기&amp;middot;장기 안전성 모두 미확립.&lt;/li&gt;
&lt;li data-end=&quot;1409&quot; data-start=&quot;1377&quot;&gt;혈관 신생 자극 물질 특성상 암&amp;middot;염증 위험 검증 필요.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1414&quot; data-start=&quot;1411&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1463&quot; data-start=&quot;1416&quot; data-ke-size=&quot;size20&quot;&gt;3️⃣ 직접 비교: &amp;lsquo;지금&amp;rsquo; 쓸 수 있는 건 카페인, &amp;lsquo;미래&amp;rsquo;는 2dDR&lt;/h4&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1729&quot; data-start=&quot;1464&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt; 포인트 &lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt; 카페인 샴푸 &lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt; 2dDR 젤 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1553&quot; data-start=&quot;1504&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1512&quot; data-start=&quot;1504&quot;&gt;근거 단계&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1536&quot; data-start=&quot;1512&quot;&gt;&lt;b&gt;사람 대상 중&amp;middot;소규모 시험+리뷰&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1553&quot; data-start=&quot;1536&quot;&gt;&lt;b&gt;동물&amp;middot;세포 실험만&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1597&quot; data-start=&quot;1554&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1562&quot; data-start=&quot;1554&quot;&gt;주사용 법&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1583&quot; data-start=&quot;1562&quot;&gt;샴푸(릴스-오프)&amp;middot;세럼(남겨두기)&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1597&quot; data-start=&quot;1583&quot;&gt;젤&amp;middot;크림 형태 예상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1643&quot; data-start=&quot;1598&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1603&quot; data-start=&quot;1598&quot;&gt;결과&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1623&quot; data-start=&quot;1603&quot;&gt;모발 밀도&amp;middot;탈모량 개선 신호 &amp;uarr;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1643&quot; data-start=&quot;1623&quot;&gt;마우스 털 80&amp;ndash;90 % 복원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1684&quot; data-start=&quot;1644&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1650&quot; data-start=&quot;1644&quot;&gt;안전성&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1672&quot; data-start=&quot;1650&quot;&gt;피부 자극 &amp;darr;, 장기 사용 경험 &amp;uarr;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1684&quot; data-start=&quot;1672&quot;&gt;장기 데이터 無&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1729&quot; data-start=&quot;1685&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1693&quot; data-start=&quot;1685&quot;&gt;출시 전망&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1711&quot; data-start=&quot;1693&quot;&gt;이미 시판(상표&amp;middot;농도 다양)&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1729&quot; data-start=&quot;1711&quot;&gt;전임상&amp;rarr;1상 최소 2-3년&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote data-end=&quot;1917&quot; data-start=&quot;1731&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1744&quot; data-start=&quot;1733&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;한줄 결론&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1917&quot; data-start=&quot;1747&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1827&quot; data-start=&quot;1747&quot;&gt;&lt;b&gt;즉시 실전&lt;/b&gt;: 카페인 샴푸&amp;middot;세럼을 &amp;ldquo;꾸준히, 충분 시간 두피에 접촉&amp;rdquo;시키는 방식이 현재로선 가장 손쉬운 &amp;lsquo;혈류 부스터&amp;rsquo; 옵션입니다.&lt;/li&gt;
&lt;li data-end=&quot;1917&quot; data-start=&quot;1830&quot;&gt;&lt;b&gt;기대주&lt;/b&gt;: 2dDR 젤은 &lt;b&gt;미녹시딜 대체 or 시너지&lt;/b&gt; 가능성이 있으나, 임상 1상 결과가 나온 뒤 &amp;lsquo;판정 승&amp;rsquo; 여부를 가늠해도 늦지 않습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;1922&quot; data-start=&quot;1919&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1949&quot; data-start=&quot;1924&quot; data-ke-size=&quot;size20&quot;&gt;4️⃣ 실천 TIP &amp;amp; 주의 사항&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;2219&quot; data-start=&quot;1950&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;2016&quot; data-start=&quot;1950&quot;&gt;&lt;b&gt;샴푸 사용법 최적화&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2016&quot; data-start=&quot;1973&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2016&quot; data-start=&quot;1973&quot;&gt;두피에 거품을 &lt;b&gt;2&amp;ndash;3 분 이상&lt;/b&gt; 남겨두어 흡수 시간을 확보하세요.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2088&quot; data-start=&quot;2017&quot;&gt;&lt;b&gt;DIY 고농도 카페인&amp;middot;2dDR 원료는 NO&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2088&quot; data-start=&quot;2053&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2088&quot; data-start=&quot;2053&quot;&gt;농도&amp;middot;pH&amp;middot;안전 규격 미확보 시 피부염&amp;middot;탈모 악화 우려.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2148&quot; data-start=&quot;2089&quot;&gt;&lt;b&gt;기존 치료와 병행&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2148&quot; data-start=&quot;2111&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2148&quot; data-start=&quot;2111&quot;&gt;미녹시딜&amp;middot;피나스테리드 복용 중이라면 전문가와 상의 후 추가.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2219&quot; data-start=&quot;2149&quot;&gt;&lt;b&gt;임상 소식 체크&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2219&quot; data-start=&quot;2170&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2219&quot; data-start=&quot;2170&quot;&gt;2dDR 인체 1상(예상 2026 하반기) 결과가 나오면 데이터를 꼭 확인해 보세요.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>재테크</category>
      <category>2dDR젤</category>
      <category>AngiogenesisHair</category>
      <category>DNA당</category>
      <category>모낭혈류</category>
      <category>미녹시딜대안</category>
      <category>카페인샴푸</category>
      <category>카페인효과</category>
      <category>탈모블로그</category>
      <category>탈모치료</category>
      <category>헤어그로스</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1951</guid>
      <comments>https://stack-queue.tistory.com/1951#entry1951comment</comments>
      <pubDate>Tue, 29 Jul 2025 08:25:44 +0900</pubDate>
    </item>
    <item>
      <title>세방전지: &amp;lsquo;로케트 배터리&amp;rsquo;의 숨은 질주, 리튬으로 가속한다</title>
      <link>https://stack-queue.tistory.com/1950</link>
      <description>&lt;h4 data-end=&quot;94&quot; data-start=&quot;75&quot; data-ke-size=&quot;size20&quot;&gt;왜 지금 세방전지인가?&lt;/h4&gt;
&lt;p data-end=&quot;369&quot; data-start=&quot;95&quot; data-ke-size=&quot;size16&quot;&gt;LG 엔솔&amp;middot;삼성SDI처럼 스포트라이트를 받지는 못하지만, 세방전지는 국내 납축전지 시장 점유율 1위(약 40 %)를 지키며 130여 개국에 &amp;lsquo;ROCKET&amp;rsquo; 브랜드를 수출해 온 70년 노장의 강자다. 올 1분기 연결 매출 5,271억 원(+13 % YoY), 영업이익 506억 원(+10 % YoY)로 또 한 번 사상 최대 분기 실적을 경신했다. 차량용 AGM 배터리와 전력보조배터리팩 수요가 동시 호조를 보인 덕분이다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-end=&quot;400&quot; data-start=&quot;371&quot; data-ke-size=&quot;size20&quot;&gt;&amp;lsquo;납축&amp;rsquo;에서 &amp;lsquo;리튬&amp;rsquo;으로, 신성장 로드맵&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;740&quot; data-start=&quot;401&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;583&quot; data-start=&quot;401&quot;&gt;&lt;b&gt;리튬배터리 모듈 공략&lt;/b&gt;: 자회사 &amp;lsquo;세방리튬배터리&amp;rsquo;가 유럽 상용차 OEM을 넘어 신규 고객사를 확보, 1분기 생산량이 31 % 뛰었다. 회사는 2025년 이후 매년 350억 원 규모의 설비 투자를 예고하며 EV&amp;middot;ESS 시장으로 세를 넓히는 중이다.&lt;/li&gt;
&lt;li data-end=&quot;740&quot; data-start=&quot;584&quot;&gt;&lt;b&gt;CAPA 증설&lt;/b&gt;: Stop&amp;amp;Go 기능&amp;middot;하이브리드 확산으로 AGM 시장이 연 10 % 성장세를 보이자, 기존 광주&amp;middot;창원 공장에 이어 안양 R&amp;amp;D센터까지 풀가동해 생산능력을 20 % 이상 확대하고 있다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;761&quot; data-start=&quot;742&quot; data-ke-size=&quot;size20&quot;&gt;숫자로 보는 현재 가치&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1072&quot; data-start=&quot;762&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;868&quot; data-start=&quot;762&quot;&gt;&lt;b&gt;주가&lt;/b&gt;: 71,800 원(2025-07-29 종가) &amp;mdash; 52주 최저 60,000 원, 최고 109,600 원.&lt;/li&gt;
&lt;li data-end=&quot;987&quot; data-start=&quot;869&quot;&gt;&lt;b&gt;2025F EPS&lt;/b&gt;: 18,943 원, &lt;b&gt;추정 PER 약 3.8배&lt;/b&gt; &amp;mdash; 동종 중견 배터리주 평균(7-9배) 대비 큰 할인 구간.&lt;/li&gt;
&lt;li data-end=&quot;1072&quot; data-start=&quot;988&quot;&gt;&lt;b&gt;증권사 컨센서스&lt;/b&gt;: 목표가 85,000 원, 투자의견 &amp;lsquo;BUY&amp;rsquo; 우세.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;1091&quot; data-start=&quot;1074&quot; data-ke-size=&quot;size20&quot;&gt;투자 포인트 한눈에&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1324&quot; data-start=&quot;1092&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1151&quot; data-start=&quot;1092&quot;&gt;&lt;b&gt;안정적 캐시카우&lt;/b&gt; &amp;mdash; 글로벌 납축전지 교체 수요는 경기 둔화에도 유지(수명 주기 3-4년).&lt;/li&gt;
&lt;li data-end=&quot;1213&quot; data-start=&quot;1152&quot;&gt;&lt;b&gt;리튬 전환 가속&lt;/b&gt; &amp;mdash; 모듈 위탁생산(BMS&amp;middot;팩 조립)으로 초기 CAPEX 부담 &amp;darr;, 수익성 &amp;uarr;.&lt;/li&gt;
&lt;li data-end=&quot;1270&quot; data-start=&quot;1214&quot;&gt;&lt;b&gt;저평가&amp;middot;배당&lt;/b&gt; &amp;mdash; 낮은 PER과 3 %대 배당수익률(최근 3년 평균)이 방어력을 제공.&lt;/li&gt;
&lt;li data-end=&quot;1324&quot; data-start=&quot;1271&quot;&gt;&lt;b&gt;환율 헤지 수혜&lt;/b&gt; &amp;mdash; 수출 비중 60 % 이상, 달러 강세 국면에 실적 레버리지.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-end=&quot;1343&quot; data-start=&quot;1326&quot; data-ke-size=&quot;size20&quot;&gt;체크해야 할 리스크&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1492&quot; data-start=&quot;1344&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1385&quot; data-start=&quot;1344&quot;&gt;&lt;b&gt;납 가격 변동성&lt;/b&gt;: 원가 구조상 납 가격 급등 시 마진 압박.&lt;/li&gt;
&lt;li data-end=&quot;1440&quot; data-start=&quot;1386&quot;&gt;&lt;b&gt;EV 파워팩 내재화&lt;/b&gt;: 완성차의 배터리 내재화가 빨라지면 B2B 물량이 줄 수 있음.&lt;/li&gt;
&lt;li data-end=&quot;1492&quot; data-start=&quot;1441&quot;&gt;&lt;b&gt;고시 사이클&lt;/b&gt;: 배터리 교체 수요가 계절&amp;middot;경기 요인에 따라 출렁이는 패턴 존재.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;1503&quot; data-start=&quot;1494&quot; data-ke-size=&quot;size20&quot;&gt;결론&lt;/h4&gt;
&lt;p data-end=&quot;1709&quot; data-start=&quot;1504&quot; data-ke-size=&quot;size16&quot;&gt;세방전지는 &amp;lsquo;납축 베테랑&amp;rsquo;에서 &amp;lsquo;리튬 신흥 강자&amp;rsquo;로 체질 변환을 가속하며, 실적과 모멘텀이 동시에 개선되고 있다. 대형 2차전지주에 가려졌던 중형 가치주를 찾는 투자자라면, 지금이 리레이팅(재평가)을 선점할 기회일 수 있다. 다만 납 가격 및 OEM 전략 변화는 반드시 모니터링하자.&lt;/p&gt;</description>
      <category>재테크</category>
      <category>004490</category>
      <category>kospi중형주</category>
      <category>로케트배터리</category>
      <category>리튬배터리</category>
      <category>배터리주</category>
      <category>세방전지</category>
      <category>주가전망</category>
      <category>투자분석</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1950</guid>
      <comments>https://stack-queue.tistory.com/1950#entry1950comment</comments>
      <pubDate>Tue, 29 Jul 2025 08:01:23 +0900</pubDate>
    </item>
    <item>
      <title>카페인 vs 파워냅: 깨어 있는 시간과 부작용, 무엇이 내 오후를 지켜줄까?</title>
      <link>https://stack-queue.tistory.com/1949</link>
      <description>&lt;h4 data-end=&quot;76&quot; data-start=&quot;53&quot; data-ke-size=&quot;size20&quot;&gt;1. 왜 둘을 비교해야 하나?&lt;/h4&gt;
&lt;p data-end=&quot;209&quot; data-start=&quot;77&quot; data-ke-size=&quot;size16&quot;&gt;점심 뒤 &amp;lsquo;식곤증&amp;rsquo;이 밀려오면 선택지는 보통 두 가지입니다. &lt;b&gt;카페인 한 잔&lt;/b&gt; 혹은 &lt;b&gt;10~20 분 파워냅&lt;/b&gt;. 둘 다 각성 효과가 있지만, 지속시간과 부작용이 꽤 다릅니다. 아래에서 실제 연구&amp;middot;언론 자료를 바탕으로 살펴보겠습니다.&lt;/p&gt;
&lt;hr data-end=&quot;214&quot; data-start=&quot;211&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;233&quot; data-start=&quot;216&quot; data-ke-size=&quot;size20&quot;&gt;2. 각성 지속시간&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;649&quot; data-start=&quot;234&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;417&quot; data-start=&quot;234&quot;&gt;&lt;b&gt;카페인&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;417&quot; data-start=&quot;248&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;417&quot; data-start=&quot;248&quot;&gt;첫 모금 10 분 후부터 혈중 농도가 올라 각성이 시작되고, 약 &lt;b&gt;45 분에 절정&lt;/b&gt;에 이릅니다. 효과는 개인차가 있지만 &lt;b&gt;2 시간 이후 서서히 떨어지기&lt;/b&gt; 시작하며, 카페인 자체는 최대 6 ~ 12 시간까지 몸에 머뭅니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;649&quot; data-start=&quot;418&quot;&gt;&lt;b&gt;파워냅&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;649&quot; data-start=&quot;432&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;550&quot; data-start=&quot;432&quot;&gt;NASA 연구(26 분 낮잠)에서 &lt;b&gt;알림성 100 %&amp;middot;업무 수행 34 % 향상&lt;/b&gt;이 확인됐고, 효과는 2 ~ 3 시간가량 이어졌습니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;649&quot; data-start=&quot;553&quot;&gt;국내 기사 역시 &lt;b&gt;20 분 파워냅이 커피보다 인지 기능을 더 오래 끌어올린다&lt;/b&gt;고 보도했습니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-end=&quot;764&quot; data-start=&quot;651&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;764&quot; data-start=&quot;653&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;요약&lt;/b&gt;: 빠른 &amp;lsquo;피로 깨기&amp;rsquo;엔 카페인이 즉각적이지만, 체내 잔류 시간이 길어 저녁 수면을 해칠 수 있습니다. 파워냅은 준비&amp;middot;환경이 필요하지만 비슷한 각성 효과를 &lt;b&gt;짧고 선명하게&lt;/b&gt; 제공합니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;769&quot; data-start=&quot;766&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;788&quot; data-start=&quot;771&quot; data-ke-size=&quot;size20&quot;&gt;3. 부작용&amp;middot;주의점&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1059&quot; data-start=&quot;789&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;918&quot; data-start=&quot;789&quot;&gt;&lt;b&gt;카페인&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;918&quot; data-start=&quot;803&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;918&quot; data-start=&quot;803&quot;&gt;과다 섭취 시 &lt;b&gt;두근거림&amp;middot;신경 과민&amp;middot;두통&amp;middot;불면&lt;/b&gt; 등이 보고됩니다. 특히 빈번한 늦은 오후 카페인은 만성 불면증 위험을 높입니다.&amp;nbsp;&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1059&quot; data-start=&quot;919&quot;&gt;&lt;b&gt;파워냅&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1059&quot; data-start=&quot;933&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1059&quot; data-start=&quot;933&quot;&gt;30 분 이상 자면 깊은 수면 단계로 빠져 &amp;lsquo;수면 관성(깨고도 멍한 상태)&amp;rsquo;이 올 수 있고, &lt;b&gt;오후 3시 이후&lt;/b&gt; 낮잠은 밤잠을 교란할 수 있습니다. &lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1064&quot; data-start=&quot;1061&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1087&quot; data-start=&quot;1066&quot; data-ke-size=&quot;size20&quot;&gt;4. 언제 무엇을 고를까?&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1343&quot; data-start=&quot;1088&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1134&quot; data-start=&quot;1088&quot;&gt;&lt;b&gt;회의 10 분 전 초집중 필요&lt;/b&gt; &amp;rarr; 소량(100 mg 이하) 카페인.&lt;/li&gt;
&lt;li data-end=&quot;1185&quot; data-start=&quot;1135&quot;&gt;&lt;b&gt;오후 1 ~ 3시, 한두 시간 집중력 리부트&lt;/b&gt; &amp;rarr; 15 ~ 20 분 파워냅.&lt;/li&gt;
&lt;li data-end=&quot;1343&quot; data-start=&quot;1186&quot;&gt;&lt;b&gt;야간 운전&amp;middot;교대근무&lt;/b&gt;처럼 각성 유지가 필수 &amp;rarr; &lt;b&gt;&amp;lsquo;나프치노(카페인+파워냅)&amp;rsquo;&lt;/b&gt; 전략: 커피를 빨리 마시고 즉시 20 분 눕는다. 카페인이 각성되기 전 짧게 자고, 일어나면 두 효과가 겹쳐 시너지.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-end=&quot;1348&quot; data-start=&quot;1345&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1364&quot; data-start=&quot;1350&quot; data-ke-size=&quot;size20&quot;&gt;5. 실전 팁&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1559&quot; data-start=&quot;1365&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1424&quot; data-start=&quot;1365&quot;&gt;&lt;b&gt;카페인&lt;/b&gt;: 오전&amp;middot;점심 직후에 집중 배치하고, 하루 400 mg(아메리카노 4잔) 이내로 제한.&lt;/li&gt;
&lt;li data-end=&quot;1497&quot; data-start=&quot;1425&quot;&gt;&lt;b&gt;파워냅&lt;/b&gt;: 알람 20 분, 암막&amp;middot;귀마개&amp;middot;차가운 환경 조성. &amp;lsquo;안 자도 된다&amp;rsquo;는 마음가짐이 오히려 빨리 잠들게 합니다.&lt;/li&gt;
&lt;li data-end=&quot;1559&quot; data-start=&quot;1498&quot;&gt;&lt;b&gt;둘 다&lt;/b&gt;: 물 충분히 마셔 수분&amp;middot;뇌혈류 유지, 야간 7 ~ 8 시간 기본 수면이 전제돼야 진가 발휘.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1564&quot; data-start=&quot;1561&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1575&quot; data-start=&quot;1566&quot; data-ke-size=&quot;size20&quot;&gt;결론&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1761&quot; data-start=&quot;1576&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1639&quot; data-start=&quot;1576&quot;&gt;&lt;b&gt;즉각-장시간 깨있기&lt;/b&gt;가 목표라면 카페인이 편하지만, 잔여 카페인으로 인해 밤잠이 흔들릴 수 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;1706&quot; data-start=&quot;1640&quot;&gt;&lt;b&gt;짧고 선명한 리셋&lt;/b&gt;이 필요하다면 파워냅이 더 안전하며, 올바른 길이&amp;middot;시간대를 지키면 부작용이 최소화됩니다.&lt;/li&gt;
&lt;li data-end=&quot;1761&quot; data-start=&quot;1707&quot;&gt;상황에 맞춰 &lt;b&gt;카페인&amp;middot;낮잠&amp;middot;나프치노&lt;/b&gt;를 &amp;lsquo;도구 상자&amp;rsquo;처럼 꺼내 쓰는 것이 가장 현명합니다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>기타</category>
      <category>각성효과</category>
      <category>나프치노</category>
      <category>생산성</category>
      <category>수면해킹</category>
      <category>집중력</category>
      <category>카페인</category>
      <category>파워냅</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1949</guid>
      <comments>https://stack-queue.tistory.com/1949#entry1949comment</comments>
      <pubDate>Tue, 29 Jul 2025 07:55:35 +0900</pubDate>
    </item>
    <item>
      <title>Iterator 패턴 &amp;ndash; 컬렉션 속을 우아하게 누비는 비결</title>
      <link>https://stack-queue.tistory.com/1948</link>
      <description>&lt;p data-end=&quot;77&quot; data-start=&quot;39&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;for-each 없이도, 내부 구조 몰라도, 끝까지 한 번에!&amp;rdquo;&lt;/p&gt;
&lt;hr data-end=&quot;82&quot; data-start=&quot;79&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;104&quot; data-start=&quot;84&quot; data-ke-size=&quot;size20&quot;&gt;왜 Iterator인가?&lt;/h4&gt;
&lt;p data-end=&quot;326&quot; data-start=&quot;105&quot; data-ke-size=&quot;size16&quot;&gt;코드가 커질수록 자료구조가 제각각입니다. 배열, 연결 리스트, 트리, 그래프&amp;hellip;&lt;br /&gt;&lt;b&gt;Iterator 패턴&lt;/b&gt;은 데이터 구조를 감추고 &lt;b&gt;&amp;ldquo;다음 요소를 주세요&amp;rdquo;&lt;/b&gt; 라는 단일 프로토콜로 순회(Traversal)를 통일합니다.&lt;br /&gt;즉, 컬렉션 구현을 몰라도 같은 방식으로 next() / hasNext()만 호출하면 끝. 책임이 깨끗하게 나뉘니 테스트&amp;middot;유지보수&amp;middot;확장성이 모두 좋아집니다.&lt;/p&gt;
&lt;hr data-end=&quot;331&quot; data-start=&quot;328&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;347&quot; data-start=&quot;333&quot; data-ke-size=&quot;size20&quot;&gt;핵심 아이디어&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;534&quot; data-start=&quot;348&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;417&quot; data-start=&quot;348&quot;&gt;&lt;b&gt;Iterable(집합)&lt;/b&gt; &amp;ndash; &amp;ldquo;Iterator를 하나 주세요!&amp;rdquo;를 요청받으면 해당 컬렉션에 맞는 반복자를 반환&lt;/li&gt;
&lt;li data-end=&quot;489&quot; data-start=&quot;418&quot;&gt;&lt;b&gt;Iterator(반복자)&lt;/b&gt; &amp;ndash; 순회 상태를 보유하며 hasNext()와 next()를 통해 한 걸음씩 이동&lt;/li&gt;
&lt;li data-end=&quot;534&quot; data-start=&quot;490&quot;&gt;&lt;b&gt;클라이언트&lt;/b&gt; &amp;ndash; 내부 구조를 몰라도 동일한 API로 데이터에 접근&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-end=&quot;539&quot; data-start=&quot;536&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;571&quot; data-start=&quot;541&quot; data-ke-size=&quot;size20&quot;&gt;Kotlin 예제 &amp;ndash; 깊이 우선 트리 순회&lt;/h4&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;pre id=&quot;code_1753743136172&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 트리 노드
data class Node&amp;lt;T&amp;gt;(val value: T, val children: List&amp;lt;Node&amp;lt;T&amp;gt;&amp;gt; = emptyList())

// Iterator 구현
class DepthFirstIterator&amp;lt;T&amp;gt;(start: Node&amp;lt;T&amp;gt;) : Iterator&amp;lt;T&amp;gt; {
    private val stack = ArrayDeque&amp;lt;Node&amp;lt;T&amp;gt;&amp;gt;().apply { push(start) }

    override fun hasNext() = stack.isNotEmpty()
    override fun next(): T {
        val node = stack.removeLast()
        node.children.reversed().forEach { stack.addLast(it) } // DFS
        return node.value
    }
}

// Iterable 래퍼
class Tree&amp;lt;T&amp;gt;(private val root: Node&amp;lt;T&amp;gt;) : Iterable&amp;lt;T&amp;gt; {
    override fun iterator(): Iterator&amp;lt;T&amp;gt; = DepthFirstIterator(root)
}

// 사용
fun main() {
    val tree = Tree(
        Node(1, listOf(Node(2), Node(3, listOf(Node(4), Node(5)))))
    )
    for (v in tree) print(&quot;$v &quot;)      // 1 2 3 4 5
}&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1481&quot; data-start=&quot;1356&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1412&quot; data-start=&quot;1356&quot;&gt;&lt;b&gt;자료구조 비공개&lt;/b&gt;: Tree 외부에서는 스택&amp;middot;자식 리스트를 전혀 알 필요가 없습니다.&lt;/li&gt;
&lt;li data-end=&quot;1481&quot; data-start=&quot;1413&quot;&gt;&lt;b&gt;전략 교체&lt;/b&gt;: 필요하면 BreadthFirstIterator만 새로 만들어 넣으면 끝 &amp;ndash; OCP 준수.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1486&quot; data-start=&quot;1483&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1505&quot; data-start=&quot;1488&quot; data-ke-size=&quot;size20&quot;&gt;언제 빛을 발하나?&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1655&quot; data-start=&quot;1506&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1559&quot; data-start=&quot;1506&quot;&gt;&lt;b&gt;다양한 컬렉션 타입을 일괄 처리&lt;/b&gt;할 때 (e.g., 레거시 리스트 + 새 큐 혼재)&lt;/li&gt;
&lt;li data-end=&quot;1603&quot; data-start=&quot;1560&quot;&gt;&lt;b&gt;복잡한 순회 로직&lt;/b&gt;을 캡슐화해 비즈니스 코드에서 분리하고 싶을 때&lt;/li&gt;
&lt;li data-end=&quot;1655&quot; data-start=&quot;1604&quot;&gt;&lt;b&gt;동일 컬렉션에 여러 순회 방식&lt;/b&gt;(정방향&amp;middot;역방향&amp;middot;필터링)을 런타임에 바꿔야 할 때&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1660&quot; data-start=&quot;1657&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1673&quot; data-start=&quot;1662&quot; data-ke-size=&quot;size20&quot;&gt;실전 팁&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1981&quot; data-start=&quot;1674&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1797&quot; data-start=&quot;1674&quot;&gt;Kotlin/JVM에선 Iterable&amp;middot;Sequence가 이미 Iterator 패턴의 정석 구현이므로 &lt;b&gt;직접 구현보다 확장&lt;/b&gt;(커스텀 iterator()&amp;middot;asSequence()) 방식이 간단합니다.&lt;/li&gt;
&lt;li data-end=&quot;1886&quot; data-start=&quot;1798&quot;&gt;&lt;b&gt;병렬 처리&lt;/b&gt;가 필요하면, 순회 상태를 공유하지 않는 클론 가능한 Iterator를 따로 두어야 Race Condition을 피할 수 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;1981&quot; data-start=&quot;1887&quot;&gt;&amp;ldquo;한 번만 순회해야&amp;rdquo; 하는 스트림(예: 네트워크 응답)은 forEachRemaining 대신 &lt;b&gt;코루틴 Flow&lt;/b&gt;를 고려해 I/O 차단을 줄일 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>개발</category>
      <category>iterator패턴</category>
      <category>Kotlin</category>
      <category>개발블로그</category>
      <category>디자인패턴</category>
      <category>소프트웨어아키텍처</category>
      <category>코틀린개발</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1948</guid>
      <comments>https://stack-queue.tistory.com/1948#entry1948comment</comments>
      <pubDate>Tue, 29 Jul 2025 07:53:22 +0900</pubDate>
    </item>
    <item>
      <title>드라마 속 변호사들의 설득 화술 &amp;ndash; 법정 영어 완전 정복</title>
      <link>https://stack-queue.tistory.com/1947</link>
      <description>&lt;p data-end=&quot;244&quot; data-start=&quot;44&quot; data-ke-size=&quot;size16&quot;&gt;드라마 한 편이 끝나면 &amp;ldquo;나도 저 판사 앞에서 저렇게 말할 수 있을까?&amp;rdquo; 싶을 만큼 가슴이 뛰죠.&lt;br /&gt;하지만 그 화려한 &lt;b&gt;법정 명대사&lt;/b&gt;들은 사실 영어권 변호사들이 실제로 쓰는 설득 기법을 농축한 결과물입니다.&lt;br /&gt;오늘은 《Suits》&amp;middot;《Better Call Saul》를 중심으로, &lt;b&gt;법정에서 통하는 영어 화술&lt;/b&gt;을 해부해볼게요.&lt;/p&gt;
&lt;hr data-end=&quot;249&quot; data-start=&quot;246&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;284&quot; data-start=&quot;251&quot; data-ke-size=&quot;size20&quot;&gt;1️⃣ 상대를 멈칫하게 하는 &lt;b&gt;카리스마 한 줄&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;489&quot; data-start=&quot;285&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;489&quot; data-start=&quot;285&quot;&gt;&lt;b&gt;&amp;ldquo;Win a no-win situation by rewriting the rules.&amp;rdquo;&lt;/b&gt; &amp;ndash; Harvey Specter&lt;br /&gt;규칙 자체를 새로 정의하며 판을 뒤집는 &lt;b&gt;프레이밍(Framing)&lt;/b&gt; 기법. 질문을 받으면 즉시 답하기보다, &amp;ldquo;문제 설정&amp;rdquo;부터 내 입맛에 맞게 고쳐버립니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  실전 응용&lt;/p&gt;
&lt;blockquote data-end=&quot;588&quot; data-start=&quot;508&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;588&quot; data-start=&quot;510&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;Let&amp;rsquo;s redefine the issue: this isn&amp;rsquo;t about blame, it&amp;rsquo;s about accountability.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;593&quot; data-start=&quot;590&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;626&quot; data-start=&quot;595&quot; data-ke-size=&quot;size20&quot;&gt;2️⃣ &lt;b&gt;헌법&amp;middot;원칙&lt;/b&gt;을 내 편으로 끌어당기기&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;842&quot; data-start=&quot;627&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;842&quot; data-start=&quot;627&quot;&gt;&lt;b&gt;&amp;ldquo;Did you know you have rights? The Constitution says you do, and so do I.&amp;rdquo;&lt;/b&gt; &amp;ndash; Saul Goodman&lt;br /&gt;미국 배심원들은 &amp;ldquo;헌법&amp;rdquo;이라는 키워드에 즉각 반응합니다. &lt;b&gt;최고 규범을 호출&lt;/b&gt;해 내 논리를 거슬러 올라갈 수 없게 만드는 방식이죠.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  실전 응용&lt;/p&gt;
&lt;blockquote data-end=&quot;954&quot; data-start=&quot;861&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;954&quot; data-start=&quot;863&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;No clause in this contract overrides the Fair Trade Act. That&amp;rsquo;s where the line is drawn.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1121&quot; data-start=&quot;956&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1121&quot; data-start=&quot;956&quot;&gt;&lt;b&gt;&amp;ldquo;Let justice be done though the heavens fall.&amp;rdquo;&lt;/b&gt; &amp;ndash; Chuck McGill(BCS)&lt;br /&gt;&lt;b&gt;도덕적 절대성&lt;/b&gt;을 선언해, 손해가 따르더라도 정의를 택한다는 이미지를 강화합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1126&quot; data-start=&quot;1123&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1536&quot; data-start=&quot;1508&quot; data-ke-size=&quot;size20&quot;&gt;3️⃣&lt;b&gt;질문을 무기화&lt;/b&gt;하는 역공 전략&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1770&quot; data-start=&quot;1537&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1770&quot; data-start=&quot;1537&quot;&gt;&lt;b&gt;&amp;ldquo;Don&amp;rsquo;t you dare walk away from me.&amp;rdquo;&lt;/b&gt; &amp;ndash; Meredith(Grey&amp;rsquo;s Anatomy)&lt;br /&gt;공격 대신 &lt;b&gt;강력한 의문&amp;middot;명령형&lt;/b&gt;으로 상대의 페이스를 자르며, 청중의 시선을 다시 끌어옵니다. (이 대사는 의료 드라마지만, 법정에서 그대로 통용)&lt;br /&gt;&amp;rarr; 실무에서는 &amp;ldquo;Why are we ignoring Exhibit B?&amp;rdquo;처럼 상대 측 빈틈을 즉석에서 찌를 때 효과적입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1996&quot; data-start=&quot;1993&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;2027&quot; data-start=&quot;1998&quot; data-section-id=&quot;1yivfja&quot; data-ke-size=&quot;size23&quot;&gt;✅ 한눈에 기억할 &lt;b&gt;법정 영어 설득 공식&lt;/b&gt;&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;2259&quot; data-start=&quot;2029&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;2062&quot; data-start=&quot;2029&quot;&gt;&lt;b&gt;Frame &amp;rarr; Question &amp;rarr; Close&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;2106&quot; data-start=&quot;2063&quot;&gt;&lt;b&gt;Pathos(공감) &amp;rarr; Logos(논리) &amp;rarr; Ethos(신뢰)&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;2150&quot; data-start=&quot;2107&quot;&gt;&lt;b&gt;Rule Calling&lt;/b&gt;: 헌법&amp;middot;선례&amp;middot;기업 윤리를 먼저 올려라.&lt;/li&gt;
&lt;li data-end=&quot;2193&quot; data-start=&quot;2151&quot;&gt;&lt;b&gt;Voice Drop&lt;/b&gt;: 결정적 한 마디는 템포를 낮춰 또렷이.&lt;/li&gt;
&lt;li data-end=&quot;2259&quot; data-start=&quot;2194&quot;&gt;&lt;b&gt;Call to Action&lt;/b&gt;: &amp;ldquo;Your Honor, we ask for summary judgment.&amp;rdquo;&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>영어공부</category>
      <category>bettercallsaul</category>
      <category>CourtroomEnglish</category>
      <category>suits</category>
      <category>드라마영어</category>
      <category>법정영어</category>
      <category>변호사영어</category>
      <category>비즈니스영어</category>
      <category>설득화술</category>
      <category>영어회화</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1947</guid>
      <comments>https://stack-queue.tistory.com/1947#entry1947comment</comments>
      <pubDate>Tue, 29 Jul 2025 07:51:40 +0900</pubDate>
    </item>
    <item>
      <title>나폴레옹 수면법, 정말 4 시간이면 충분할까?</title>
      <link>https://stack-queue.tistory.com/1946</link>
      <description>&lt;h4 data-end=&quot;61&quot; data-start=&quot;38&quot; data-ke-size=&quot;size20&quot;&gt;1. &amp;lsquo;나폴레옹 수면법&amp;rsquo;이란?&lt;/h4&gt;
&lt;p data-end=&quot;188&quot; data-start=&quot;62&quot; data-ke-size=&quot;size16&quot;&gt;프랑스 황제 나폴레옹 보나파르트가 &amp;ldquo;하루 3 ~ 4 시간만 자고도 정복 전쟁을 지휘했다&amp;rdquo;는 일화에서 유래한 &amp;lsquo;초단수면&amp;rsquo; 전략입니다. 국내&amp;middot;외 블로그와 자기계발서에서 제시하는 대표적인 14 일 적응 로드맵은 다음과 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;343&quot; data-start=&quot;190&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;215&quot; data-start=&quot;190&quot;&gt;&lt;b&gt;1일차&lt;/b&gt; : 정확히 8 시간 수면&lt;/li&gt;
&lt;li data-end=&quot;238&quot; data-start=&quot;216&quot;&gt;&lt;b&gt;2일차&lt;/b&gt; : 밤샘(0 시간)&lt;/li&gt;
&lt;li data-end=&quot;264&quot; data-start=&quot;239&quot;&gt;&lt;b&gt;3 ~ 5일차&lt;/b&gt; : 6 시간 수면&lt;/li&gt;
&lt;li data-end=&quot;291&quot; data-start=&quot;265&quot;&gt;&lt;b&gt;6 ~ 10일차&lt;/b&gt; : 4 시간 수면&lt;/li&gt;
&lt;li data-end=&quot;312&quot; data-start=&quot;292&quot;&gt;&lt;b&gt;11일차&lt;/b&gt; : 다시 밤샘&lt;/li&gt;
&lt;li data-end=&quot;343&quot; data-start=&quot;313&quot;&gt;&lt;b&gt;12 ~ 14일차&lt;/b&gt; : 4 시간 수면 유지&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;430&quot; data-start=&quot;345&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 생체리듬을 &amp;lsquo;훈련&amp;rsquo;하면 이후에도 4 시간 잠만으로 개운해진다는 주장입니다. &lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr data-end=&quot;435&quot; data-start=&quot;432&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;461&quot; data-start=&quot;437&quot; data-ke-size=&quot;size20&quot;&gt;2. 실제 나폴레옹의 수면 습관&lt;/h4&gt;
&lt;p data-end=&quot;666&quot; data-start=&quot;462&quot; data-ke-size=&quot;size16&quot;&gt;나폴레옹은 자서전과 수행원 기록에서 &amp;ldquo;자정 무렵 잠들어 새벽 2 ~ 3시에 깨고, 낮 동안 짧게 쪽잠(power nap)을 즐겼다&amp;rdquo;고 전해집니다. 문헌에 따라 편차가 크지만, 지속적인 &lt;b&gt;&amp;lsquo;짧은 핵심 수면 + 틈틈이 낮잠&amp;rsquo;&lt;/b&gt; 형태(=폴리페이식 수면)에 가까웠다는 데는 대체로 의견이 모입니다.&lt;/p&gt;
&lt;hr data-end=&quot;671&quot; data-start=&quot;668&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;695&quot; data-start=&quot;673&quot; data-ke-size=&quot;size20&quot;&gt;3. 과학은 뭐라고 말하나?&lt;/h4&gt;
&lt;div&gt;&lt;br /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1131&quot; data-start=&quot;697&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt; 주장 &lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt; 과학적 근거 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;852&quot; data-start=&quot;736&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;772&quot; data-start=&quot;736&quot;&gt;4 시간만 자도 &lt;b&gt;REM&amp;middot;깊은 수면을 압축&lt;/b&gt;하면 충분하다&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;852&quot; data-start=&quot;772&quot;&gt;&lt;b&gt;근거 부족&lt;/b&gt;. 수면 단계는 순환적으로 이뤄져 임의 단축이 어렵다&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;950&quot; data-start=&quot;853&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;882&quot; data-start=&quot;853&quot;&gt;폴리페이식 수면이 &lt;b&gt;집중력&amp;middot;창의성&lt;/b&gt;을 높인다&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;950&quot; data-start=&quot;882&quot;&gt;대조 연구에서 &lt;b&gt;학업&amp;middot;인지 기능 저하&lt;/b&gt; 보고&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1035&quot; data-start=&quot;951&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;965&quot; data-start=&quot;951&quot;&gt;건강엔 큰 문제 없다&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;1035&quot; data-start=&quot;965&quot;&gt;만성 수면부족은 &lt;b&gt;우울&amp;middot;비만&amp;middot;심혈관 위험&lt;/b&gt; 증가&amp;nbsp;&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1131&quot; data-start=&quot;1036&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1052&quot; data-start=&quot;1036&quot;&gt;적응만 하면 누구나 가능&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;1131&quot; data-start=&quot;1052&quot;&gt;체질 차&amp;middot;유전자&amp;middot;업무 패턴 등 변수 커서 &lt;b&gt;개인별 성공률 낮음&lt;/b&gt;&amp;nbsp;&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote data-end=&quot;1249&quot; data-start=&quot;1133&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1249&quot; data-start=&quot;1135&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;연구 리뷰(2021)&lt;/b&gt; &amp;ldquo;폴리페이식 패턴은 신체&amp;middot;정신 건강과 수행 능력에 부정적 영향을 줄 가능성이 높으므로 권장되지 않는다.&amp;rdquo;&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;1254&quot; data-start=&quot;1251&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1282&quot; data-start=&quot;1256&quot; data-ke-size=&quot;size20&quot;&gt;4. 시도해 보고 싶다면 체크리스트&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1521&quot; data-start=&quot;1284&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1348&quot; data-start=&quot;1284&quot;&gt;&lt;b&gt;기간&lt;/b&gt; : 단기 프로젝트(시험&amp;middot;마감)용 &amp;lsquo;반짝&amp;rsquo; 활용은 비교적 위험이 덜하지만, 장기 지속은 피하세요.&lt;/li&gt;
&lt;li data-end=&quot;1392&quot; data-start=&quot;1349&quot;&gt;&lt;b&gt;낮잠 길이&lt;/b&gt; : 20 분 내외로 제한(깊은 수면 진입 전 기상).&lt;/li&gt;
&lt;li data-end=&quot;1447&quot; data-start=&quot;1393&quot;&gt;&lt;b&gt;광&amp;middot;식사&amp;middot;카페인 관리&lt;/b&gt; : 노출을 시간대별로 규칙화해 체내시계를 최소한으로 흔듭니다.&lt;/li&gt;
&lt;li data-end=&quot;1521&quot; data-start=&quot;1448&quot;&gt;&lt;b&gt;건강 모니터링&lt;/b&gt; : 심박&amp;middot;기분&amp;middot;작업 효율 변화를 기록해 이상 징후(두통, 과민, 기억력 저하 등) 발생 시 즉시 중단.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1526&quot; data-start=&quot;1523&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1540&quot; data-start=&quot;1528&quot; data-ke-size=&quot;size20&quot;&gt;5. 결론&lt;/h4&gt;
&lt;p data-end=&quot;1633&quot; data-start=&quot;1541&quot; data-ke-size=&quot;size16&quot;&gt;&amp;lsquo;나폴레옹 수면법&amp;rsquo;은 &lt;b&gt;시간을 벌어주는 유혹적인 전략&lt;/b&gt;이지만, 과학적으로는 &lt;b&gt;효능보다 위험이 크다&lt;/b&gt;는 평가가 우세합니다. 극단적 수면 단축을 시도하기보다,&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1711&quot; data-start=&quot;1635&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1658&quot; data-start=&quot;1635&quot;&gt;&lt;b&gt;규칙적 7 ~ 8 시간 수면&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1682&quot; data-start=&quot;1659&quot;&gt;&lt;b&gt;낮 10 ~ 20 분 파워냅&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1711&quot; data-start=&quot;1683&quot;&gt;&lt;b&gt;자기 크로노타입(아침형&amp;middot;저녁형) 존중&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1751&quot; data-start=&quot;1713&quot; data-ke-size=&quot;size16&quot;&gt;같은 현실적인 방법이 업무 효율과 건강을 동시에 지키는 길입니다.&lt;/p&gt;</description>
      <category>4시간수면</category>
      <category>PolyphasicSleep</category>
      <category>건강수면</category>
      <category>나폴레옹수면법</category>
      <category>생산성</category>
      <category>수면해킹</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1946</guid>
      <comments>https://stack-queue.tistory.com/1946#entry1946comment</comments>
      <pubDate>Tue, 29 Jul 2025 07:48:08 +0900</pubDate>
    </item>
    <item>
      <title>설탕으로 머리카락 키운다? 2-Deoxy-D-Ribose 연구 팩트체크</title>
      <link>https://stack-queue.tistory.com/1945</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;머리에 설탕 바르면 난다?&amp;rdquo;&amp;mdash;7월 28일 업로드된 유튜브 영상이 화제가 됐습니다. 실제로 과학자들은 &lt;b&gt;2-deoxy-D-ribose(2dDR)&lt;/b&gt; 라는 &amp;lsquo;DNA 속 당&amp;rsquo;을 이용해 쥐의 털을 80~90 %까지 복원했다는 논문을 발표했죠. 하지만 &lt;b&gt;&amp;lsquo;흥미로운 초기 연구&amp;rsquo;&lt;/b&gt;와 &lt;b&gt;&amp;lsquo;당장 사람에게 적용&amp;rsquo;&lt;/b&gt; 사이에는 큰 간극이 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;hr data-end=&quot;301&quot; data-start=&quot;298&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;326&quot; data-start=&quot;303&quot; data-ke-size=&quot;size20&quot;&gt;1. 2dDR, 어떤 당인가?&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;608&quot; data-start=&quot;327&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;353&quot; data-start=&quot;327&quot;&gt;DNA 구조를 이루는 자연 발생 단당류.&lt;/li&gt;
&lt;li data-end=&quot;480&quot; data-start=&quot;354&quot;&gt;2024~2025년 잇따른 동물실험에서 &lt;b&gt;혈관 신생(angiogenesis)&lt;/b&gt; 을 유도해 모낭 주변 혈류를 늘리고 털을 굵게 만드는 효과가 관찰됨.&lt;/li&gt;
&lt;li data-end=&quot;608&quot; data-start=&quot;481&quot;&gt;영국 셰필드대&amp;middot;파키스탄 COMSATS 공동 연구팀 논문에 따르면, &lt;b&gt;미녹시딜과 유사한 수준의 발모율&lt;/b&gt;을 보였으며 가격&amp;middot;안정성 면에서 장점이 기대된다.&amp;nbsp;&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;637&quot; data-start=&quot;610&quot; data-ke-size=&quot;size20&quot;&gt;2. 효과가 나타난 &amp;lsquo;메커니즘&amp;rsquo; 가설&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;828&quot; data-start=&quot;638&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;686&quot; data-start=&quot;638&quot;&gt;&lt;b&gt;모낭 혈류 증가&lt;/b&gt; &amp;ndash; 새 모세혈관이 형성돼 모발 뿌리에 산소&amp;middot;영양 공급&amp;uarr;&lt;/li&gt;
&lt;li data-end=&quot;761&quot; data-start=&quot;687&quot;&gt;&lt;b&gt;세포 에너지 대사 촉진&lt;/b&gt; &amp;ndash; 모낭 줄기세포의 미토콘드리아 활성이 높아져 성장 주기(anagen) 전환을 돕는다는 추정.&lt;/li&gt;
&lt;li data-end=&quot;828&quot; data-start=&quot;762&quot;&gt;&lt;b&gt;항염&amp;middot;항산화 가능성&lt;/b&gt; &amp;ndash; 초기 세포실험에서 ROS(산화 스트레스) 감소 신호가 보고됨(후속 검증 필요).&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-end=&quot;857&quot; data-start=&quot;830&quot; data-ke-size=&quot;size20&quot;&gt;3. 왜 &amp;lsquo;사람&amp;rsquo;에게는 아직 이르냐?&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1118&quot; data-start=&quot;858&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;943&quot; data-start=&quot;858&quot;&gt;&lt;b&gt;동물-인간 번역의 벽&lt;/b&gt;: 쥐 모낭은 성장 주기와 호르몬 민감도가 사람과 다르다. 동물 성공률이 90 %여도 사람 임상에서 실패한 예가 다수.&lt;/li&gt;
&lt;li data-end=&quot;1039&quot; data-start=&quot;944&quot;&gt;&lt;b&gt;용량&amp;middot;도포 방식 미정&lt;/b&gt;: 논문은 2dDR 2 % 농도 젤을 하루 1회 20일 도포&amp;mdash;두피 면적&amp;middot;피지량이 다른 인간에게는 안전&amp;middot;효능 데이터를 새로 만들어야 한다.&lt;/li&gt;
&lt;li data-end=&quot;1118&quot; data-start=&quot;1040&quot;&gt;&lt;b&gt;장기 안전성 불명&lt;/b&gt;: 혈관 신생을 과도하게 자극하면 암 위험을 높일 수 있다는 지적도 있어, 최소 1~2상 임상 데이터가 필요.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;1149&quot; data-start=&quot;1120&quot; data-ke-size=&quot;size20&quot;&gt;4. 블로거들이 주목한 &amp;lsquo;현실 적용&amp;rsquo; 팁&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1393&quot; data-start=&quot;1150&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1244&quot; data-start=&quot;1150&quot;&gt;&lt;b&gt;&amp;ldquo;식단에 설탕 더 먹기&amp;rdquo;는 금물&lt;/b&gt;: 2dDR은 일반 설탕(자당)과 화학식‧대사 경로가 전혀 다르다. 과다 당분 섭취는 오히려 인슐린 저항성-탈모 악화 요인.&lt;/li&gt;
&lt;li data-end=&quot;1302&quot; data-start=&quot;1245&quot;&gt;&lt;b&gt;DIY 원료 구입은 위험&lt;/b&gt;: 연구용 시약을 피부에 바로 쓰면 농도&amp;middot;순도&amp;middot;pH 문제가 생김.&lt;/li&gt;
&lt;li data-end=&quot;1393&quot; data-start=&quot;1303&quot;&gt;&lt;b&gt;현 시점 최선의 선택&lt;/b&gt;: FDA 승인 치료(미녹시딜&amp;middot;피나스테리드) + 생활습관 관리(스트레스-수면-영양) 병행, 새 물질은 임상 결과 확정 후 고려.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;1419&quot; data-start=&quot;1395&quot; data-ke-size=&quot;size20&quot;&gt;5. 앞으로 주목할 연구 로드맵&lt;/h4&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 100px;&quot; border=&quot;1&quot; data-end=&quot;1611&quot; data-start=&quot;1420&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;&lt;b&gt;단계&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;&lt;b&gt;내용&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;&lt;b&gt;예상 시기&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot; data-end=&quot;1540&quot; data-start=&quot;1502&quot;&gt;
&lt;td style=&quot;height: 20px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;1507&quot; data-start=&quot;1502&quot;&gt;1상&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot; data-end=&quot;1528&quot; data-start=&quot;1507&quot; data-col-size=&quot;sm&quot;&gt;소수 성인 남녀 두피 도포 안전성&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot; data-end=&quot;1540&quot; data-start=&quot;1528&quot; data-col-size=&quot;sm&quot;&gt;2026 하반기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot; data-end=&quot;1575&quot; data-start=&quot;1541&quot;&gt;
&lt;td style=&quot;height: 20px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;1546&quot; data-start=&quot;1541&quot;&gt;2상&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot; data-end=&quot;1567&quot; data-start=&quot;1546&quot; data-col-size=&quot;sm&quot;&gt;용량-효능 탐색(200-300명)&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot; data-end=&quot;1575&quot; data-start=&quot;1567&quot; data-col-size=&quot;sm&quot;&gt;2027&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot; data-end=&quot;1611&quot; data-start=&quot;1576&quot;&gt;
&lt;td style=&quot;height: 20px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;1581&quot; data-start=&quot;1576&quot;&gt;3상&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot; data-end=&quot;1600&quot; data-start=&quot;1581&quot; data-col-size=&quot;sm&quot;&gt;다국가 비교 임상, 허가 신청&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot; data-end=&quot;1611&quot; data-start=&quot;1600&quot; data-col-size=&quot;sm&quot;&gt;2028 이후&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody data-end=&quot;1611&quot; data-start=&quot;1457&quot;&gt;
&lt;tr style=&quot;height: 20px;&quot; data-end=&quot;1501&quot; data-start=&quot;1457&quot;&gt;
&lt;td style=&quot;height: 20px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;1466&quot; data-start=&quot;1457&quot;&gt;전임상 톡식&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot; data-end=&quot;1488&quot; data-start=&quot;1466&quot; data-col-size=&quot;sm&quot;&gt;설치류-토끼 장기독성, 흡수율 평가&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot; data-end=&quot;1501&quot; data-start=&quot;1488&quot; data-col-size=&quot;sm&quot;&gt;2025-2026&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1668&quot; data-start=&quot;1613&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-end=&quot;1673&quot; data-start=&quot;1670&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1684&quot; data-start=&quot;1675&quot; data-ke-size=&quot;size20&quot;&gt;결론&lt;/h4&gt;
&lt;p data-end=&quot;1881&quot; data-start=&quot;1685&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;ldquo;달콤한 당 하나면 탈모 고민 끝!&amp;rdquo;&lt;/b&gt;&amp;mdash;아직은 이르지만, 2dDR 연구는 혈관 신생을 활용한 &lt;b&gt;제3의 탈모 치료 패러다임&lt;/b&gt;을 열 수 있다는 점에서 의미가 큽니다. 당분을 무분별하게 늘리기보다는, 공식 임상 결과를 기다리면서 두피 환경을 관리하는 것이 현명합니다. 연구 속도가 빠르니 내년에는 사람 대상 1상 결과가 나올지 지켜봐도 좋겠습니다!&lt;/p&gt;</description>
      <category>재테크</category>
      <category>2dDR</category>
      <category>DNA당</category>
      <category>hairgrowth</category>
      <category>두피건강</category>
      <category>모발성장</category>
      <category>모발재생</category>
      <category>설탕탈모연구</category>
      <category>탈모</category>
      <category>탈모치료</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1945</guid>
      <comments>https://stack-queue.tistory.com/1945#entry1945comment</comments>
      <pubDate>Mon, 28 Jul 2025 20:39:33 +0900</pubDate>
    </item>
    <item>
      <title>한국인이 가장 많이 틀리는 영어 발음 TOP 10 &amp;ndash; 교정 꿀팁까지!</title>
      <link>https://stack-queue.tistory.com/1944</link>
      <description>&lt;p data-end=&quot;272&quot; data-start=&quot;44&quot; data-ke-size=&quot;size16&quot;&gt;영어 단어를 아무리 많이 외워도, 발음이 틀리면 의사소통이 막히죠. 특히 한국어에는 없는 소리 때문에 한국 학습자들이 반복해서 실수하는 단어들이 있습니다. 이번 포스팅에서는 &lt;b&gt;영어 발음&lt;/b&gt;들을 분석해, 실제로 자주 틀리는 10개 단어를 엄선했습니다. 각 단어마다 &amp;lsquo;왜 틀리기 쉬운지&amp;rsquo;와 &amp;lsquo;바로 고칠 수 있는 훈련법&amp;rsquo;을 함께 소개할 테니, 오늘부터 거울 앞에서 따라 해보세요!&lt;/p&gt;
&lt;hr data-end=&quot;277&quot; data-start=&quot;274&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;305&quot; data-start=&quot;279&quot; data-ke-size=&quot;size20&quot;&gt;1. clothes /kloʊ&amp;eth;z/&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;419&quot; data-start=&quot;306&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;335&quot; data-start=&quot;306&quot;&gt;&lt;b&gt;자주 나오는 잘못된 발음&lt;/b&gt;: 클로-즈&lt;/li&gt;
&lt;li data-end=&quot;419&quot; data-start=&quot;336&quot;&gt;&lt;b&gt;교정 포인트&lt;/b&gt;: &amp;lsquo;&amp;eth;&amp;rsquo;(치간음)와 끝의 &amp;lsquo;z&amp;rsquo;까지 내야 함. 살짝 치아 사이로 혀를 빼고 「드」 소리를 내며 마무리로 &amp;lsquo;즈&amp;rsquo;를 붙여 주세요.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;446&quot; data-start=&quot;421&quot; data-ke-size=&quot;size20&quot;&gt;2. salmon /ˈs&amp;aelig;mən/&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;518&quot; data-start=&quot;447&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;468&quot; data-start=&quot;447&quot;&gt;&lt;b&gt;잘못된 발음&lt;/b&gt;: 쌀-몬&lt;/li&gt;
&lt;li data-end=&quot;518&quot; data-start=&quot;469&quot;&gt;&lt;b&gt;교정 포인트&lt;/b&gt;: &amp;lsquo;l&amp;rsquo;을 묵음 처리. 입술을 넓게 벌려 &amp;lsquo;샘-은&amp;rsquo;처럼 부드럽게.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;546&quot; data-start=&quot;520&quot; data-ke-size=&quot;size20&quot;&gt;3. island /ˈaɪlənd/&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;613&quot; data-start=&quot;547&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;570&quot; data-start=&quot;547&quot;&gt;&lt;b&gt;잘못된 발음&lt;/b&gt;: 이-스랜드&lt;/li&gt;
&lt;li data-end=&quot;613&quot; data-start=&quot;571&quot;&gt;&lt;b&gt;교정 포인트&lt;/b&gt;: &amp;lsquo;s&amp;rsquo;는 무음. &amp;lsquo;아이-런드&amp;rsquo;처럼 두 음절로 구분.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;642&quot; data-start=&quot;615&quot; data-ke-size=&quot;size20&quot;&gt;4. receipt /rɪˈsiːt/&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;713&quot; data-start=&quot;643&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;668&quot; data-start=&quot;643&quot;&gt;&lt;b&gt;잘못된 발음&lt;/b&gt;: 레-시-프-트&lt;/li&gt;
&lt;li data-end=&quot;713&quot; data-start=&quot;669&quot;&gt;&lt;b&gt;교정 포인트&lt;/b&gt;: &amp;lsquo;p&amp;rsquo;는 묵음. 길게 늘어뜨린 &amp;lsquo;시ː&amp;rsquo;에 힘을 주세요.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;762&quot; data-start=&quot;715&quot; data-ke-size=&quot;size20&quot;&gt;5. coupon /ˈkuːpɑːn/ (美), /ˈkjuːpɒn/ (英)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;836&quot; data-start=&quot;763&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;784&quot; data-start=&quot;763&quot;&gt;&lt;b&gt;잘못된 발음&lt;/b&gt;: 쿠-폰&lt;/li&gt;
&lt;li data-end=&quot;836&quot; data-start=&quot;785&quot;&gt;&lt;b&gt;교정 포인트&lt;/b&gt;: 미국식은 &amp;lsquo;쿠-판&amp;rsquo;, 영국식은 &amp;lsquo;큐-폰&amp;rsquo;. 지역 따라 다름을 기억!&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;868&quot; data-start=&quot;838&quot; data-ke-size=&quot;size20&quot;&gt;6. Wednesday /ˈwenzdeɪ/&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;937&quot; data-start=&quot;869&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;893&quot; data-start=&quot;869&quot;&gt;&lt;b&gt;잘못된 발음&lt;/b&gt;: 웬-즈-데이&lt;/li&gt;
&lt;li data-end=&quot;937&quot; data-start=&quot;894&quot;&gt;&lt;b&gt;교정 포인트&lt;/b&gt;: 중간 &amp;lsquo;d&amp;rsquo; 묵음. &amp;lsquo;웬즈-데이&amp;rsquo; 두 음절처럼 연결.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;973&quot; data-start=&quot;939&quot; data-ke-size=&quot;size20&quot;&gt;7. vegetables /ˈvedʒtəbəlz/&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1070&quot; data-start=&quot;974&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1000&quot; data-start=&quot;974&quot;&gt;&lt;b&gt;잘못된 발음&lt;/b&gt;: 베-지-터-블스&lt;/li&gt;
&lt;li data-end=&quot;1070&quot; data-start=&quot;1001&quot;&gt;&lt;b&gt;교정 포인트&lt;/b&gt;: &amp;lsquo;e&amp;rsquo; 뒤 &amp;lsquo;g&amp;rsquo;는 /dʒ/로 묶고, &amp;lsquo;etables&amp;rsquo;를 두 음절로 축약해 &amp;lsquo;베-저-터블즈&amp;rsquo; 느낌.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;1107&quot; data-start=&quot;1072&quot; data-ke-size=&quot;size20&quot;&gt;8. comfortable /ˈkʌmftərbəl/&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1192&quot; data-start=&quot;1108&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1133&quot; data-start=&quot;1108&quot;&gt;&lt;b&gt;잘못된 발음&lt;/b&gt;: 컴-포-터-블&lt;/li&gt;
&lt;li data-end=&quot;1192&quot; data-start=&quot;1134&quot;&gt;&lt;b&gt;교정 포인트&lt;/b&gt;: 네 음절이 아닌 세 음절. &amp;lsquo;컴프-터블&amp;rsquo;처럼 &amp;lsquo;fort&amp;rsquo;의 &amp;lsquo;r&amp;rsquo;가 사라집니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;1258&quot; data-start=&quot;1194&quot; data-ke-size=&quot;size20&quot;&gt;9. photograph /ˈfoʊtəɡr&amp;aelig;f/ vs photographer /fəˈtɑːɡrəfər/&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1360&quot; data-start=&quot;1259&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1291&quot; data-start=&quot;1259&quot;&gt;&lt;b&gt;잘못된 발음&lt;/b&gt;: 두 단어 강세를 같은 곳에 줌&lt;/li&gt;
&lt;li data-end=&quot;1360&quot; data-start=&quot;1292&quot;&gt;&lt;b&gt;교정 포인트&lt;/b&gt;: photo&lt;b&gt;graph&lt;/b&gt;(1음절 강세) vs pho&lt;b&gt;to&lt;/b&gt;grapher(2음절 강세) 구분!&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;1411&quot; data-start=&quot;1362&quot; data-ke-size=&quot;size20&quot;&gt;10. dessert /dɪˈzɜːrt/ vs desert /ˈdezərt/&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1489&quot; data-start=&quot;1412&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1433&quot; data-start=&quot;1412&quot;&gt;&lt;b&gt;잘못된 발음&lt;/b&gt;: 강세 혼동&lt;/li&gt;
&lt;li data-end=&quot;1489&quot; data-start=&quot;1434&quot;&gt;&lt;b&gt;교정 포인트&lt;/b&gt;: 달콤한 &lt;b&gt;디‧저트&lt;/b&gt;는 2음절 강세, 사막 &lt;b&gt;데저트&lt;/b&gt;는 1음절 강세.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1494&quot; data-start=&quot;1491&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1516&quot; data-start=&quot;1496&quot; data-ke-size=&quot;size23&quot;&gt;발음 교정, 이렇게 연습하세요&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1775&quot; data-start=&quot;1518&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1566&quot; data-start=&quot;1518&quot;&gt;&lt;b&gt;입 모양 체크&lt;/b&gt;: 스마트폰 셀프 카메라로 녹화하며 혀&amp;middot;입술 위치를 점검.&lt;/li&gt;
&lt;li data-end=&quot;1617&quot; data-start=&quot;1567&quot;&gt;&lt;b&gt;섀도잉&lt;/b&gt;: Netflix&amp;middot;YouTube 인터뷰에서 문장 단위로 따라 말하기.&lt;/li&gt;
&lt;li data-end=&quot;1670&quot; data-start=&quot;1618&quot;&gt;&lt;b&gt;단어 &amp;harr; 문장 변환&lt;/b&gt;: 같은 단어를 문장 안에서 연습해야 리듬&amp;middot;강세가 잡힙니다.&lt;/li&gt;
&lt;li data-end=&quot;1775&quot; data-start=&quot;1731&quot;&gt;&lt;b&gt;꾸준함&lt;/b&gt;: 하루 5분이라도 매일 거울 앞 발음 루틴을 만들어 보세요.&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>영어공부</category>
      <category>발음교정</category>
      <category>영어공부</category>
      <category>영어발음</category>
      <category>영어회화</category>
      <category>한국인영어팁</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1944</guid>
      <comments>https://stack-queue.tistory.com/1944#entry1944comment</comments>
      <pubDate>Mon, 28 Jul 2025 13:51:17 +0900</pubDate>
    </item>
    <item>
      <title>5 분 홈트로 만드는 복근 ― 타바타 버전</title>
      <link>https://stack-queue.tistory.com/1943</link>
      <description>&lt;h4 data-end=&quot;150&quot; data-start=&quot;126&quot; data-ke-size=&quot;size20&quot;&gt;타바타? 4 분이면 충분한 HIIT&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;457&quot; data-start=&quot;151&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;295&quot; data-start=&quot;151&quot;&gt;타바타(20 초 전력 - 10 초 휴식 &amp;times; 8 라운드)는 4 분 동안 심박수를 급격히 끌어올려 &lt;b&gt;운동 후에도&lt;/b&gt; 체지방을 태우는 &amp;lsquo;애프터번(After-burn)&amp;rsquo; 효과가 특징입니다.&lt;/li&gt;
&lt;li data-end=&quot;457&quot; data-start=&quot;296&quot;&gt;맥마스터 대학 Martin Gibala 교수팀은 &amp;ldquo;1분 전력 스프린트가 포함된 10분 인터벌 운동&amp;rdquo;이 50분 지속 운동과 &lt;b&gt;같은 대사 개선&lt;/b&gt; 효과를 보인다고 밝혔습니다. 5 분짜리 타바타도 같은 원리로 작동합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;462&quot; data-start=&quot;459&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;483&quot; data-start=&quot;464&quot; data-ke-size=&quot;size20&quot;&gt;5 분 ABS 타바타 루틴&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;824&quot; data-start=&quot;485&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;524&quot; data-start=&quot;485&quot;&gt;&lt;b&gt;00:00-00:20&lt;/b&gt; - Bicycle Crunch&lt;/li&gt;
&lt;li data-end=&quot;550&quot; data-start=&quot;525&quot;&gt;&lt;b&gt;00:20-00:30&lt;/b&gt; - 휴식&lt;/li&gt;
&lt;li data-end=&quot;592&quot; data-start=&quot;551&quot;&gt;&lt;b&gt;00:30-00:50&lt;/b&gt; - Mountain Climber&lt;/li&gt;
&lt;li data-end=&quot;618&quot; data-start=&quot;593&quot;&gt;&lt;b&gt;00:50-01:00&lt;/b&gt; - 휴식&lt;/li&gt;
&lt;li data-end=&quot;657&quot; data-start=&quot;619&quot;&gt;&lt;b&gt;01:00-01:20&lt;/b&gt; - Russian Twist&lt;/li&gt;
&lt;li data-end=&quot;683&quot; data-start=&quot;658&quot;&gt;&lt;b&gt;01:20-01:30&lt;/b&gt; - 휴식&lt;/li&gt;
&lt;li data-end=&quot;719&quot; data-start=&quot;684&quot;&gt;&lt;b&gt;01:30-01:50&lt;/b&gt; - Plank Jack&lt;/li&gt;
&lt;li data-end=&quot;824&quot; data-start=&quot;720&quot;&gt;&lt;b&gt;01:50-02:00&lt;/b&gt; - 휴식&lt;br /&gt;&amp;ensp;&amp;rarr; 위 4개 동작을 &lt;b&gt;한 번 더&lt;/b&gt; 반복하면 정확히 4 분!&lt;br /&gt;&amp;ensp;마지막 1 분은 가벼운 제자리걷기로 쿨다운하면 총 5 분이 완성됩니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-end=&quot;953&quot; data-start=&quot;950&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;971&quot; data-start=&quot;955&quot; data-ke-size=&quot;size20&quot;&gt;효과를 극대화하는 팁&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1192&quot; data-start=&quot;972&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1008&quot; data-start=&quot;972&quot;&gt;&lt;b&gt;매일 같은 시간&lt;/b&gt;에 실행해 몸에 루틴을 각인시키세요.&lt;/li&gt;
&lt;li data-end=&quot;1052&quot; data-start=&quot;1009&quot;&gt;복부에 힘을 주고 허리가 뜨지 않도록 코어를 단단히 조여야 안전합니다.&lt;/li&gt;
&lt;li data-end=&quot;1108&quot; data-start=&quot;1053&quot;&gt;체중 감량이 목표라면, 아침 공복이나 식후 1-2 시간 뒤에 실시하면 지방 산화를 돕습니다.&lt;/li&gt;
&lt;li data-end=&quot;1192&quot; data-start=&quot;1109&quot;&gt;주 2-3회는 전신 근력운동이나 걷기&amp;middot;조깅을 섞어 &lt;b&gt;근손실&lt;/b&gt;을 예방하세요. &lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1197&quot; data-start=&quot;1194&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1217&quot; data-start=&quot;1199&quot; data-ke-size=&quot;size20&quot;&gt;따라 해본 사람들의 후기&lt;/h4&gt;
&lt;p data-end=&quot;1380&quot; data-start=&quot;1218&quot; data-ke-size=&quot;size16&quot;&gt;국내 인기 홈트 채널들은 &amp;ldquo;5 분 복근 타바타&amp;rdquo; 영상으로 모두 &lt;b&gt;100 만+ 조회수&lt;/b&gt;를 기록할 정도로 반응이 뜨겁습니다. 댓글에는 &amp;ldquo;직장에서도 점심시간 틈새 운동으로 딱&amp;rdquo; &amp;ldquo;운동 후 땀이 폭발&amp;rdquo; 같은 후기가 이어집니다.&lt;/p&gt;
&lt;hr data-end=&quot;1385&quot; data-start=&quot;1382&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1398&quot; data-start=&quot;1387&quot; data-ke-size=&quot;size20&quot;&gt;실전 Q&amp;amp;A&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1604&quot; data-start=&quot;1399&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1511&quot; data-start=&quot;1399&quot;&gt;&lt;b&gt;Q. 5 분만으로 복근이 생길까요?&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1511&quot; data-start=&quot;1429&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1511&quot; data-start=&quot;1429&quot;&gt;식단 조절과 주당 총 활동량(150 분 이상)이 병행돼야 복근이 드러납니다. 5 분 타바타는 &amp;lsquo;복부 지방 우선 공략&amp;rsquo;용 부스터로 활용하세요.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1604&quot; data-start=&quot;1512&quot;&gt;&lt;b&gt;Q. 허리 아픈데 해도 될까요?&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1604&quot; data-start=&quot;1540&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1604&quot; data-start=&quot;1540&quot;&gt;통증이 있다면 Russian Twist 대신 Dead Bug 같은 허리 부담이 적은 동작으로 교체하세요.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>기타</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1943</guid>
      <comments>https://stack-queue.tistory.com/1943#entry1943comment</comments>
      <pubDate>Mon, 28 Jul 2025 13:18:44 +0900</pubDate>
    </item>
    <item>
      <title>10 분 &amp;times; 10 회 vs 1 시간 연속! ― 당신에게 맞는 운동 루틴은?</title>
      <link>https://stack-queue.tistory.com/1942</link>
      <description>&lt;p data-end=&quot;102&quot; data-start=&quot;47&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;운동할 시간은 없는데 건강은 챙기고 싶다.&amp;rdquo;&lt;br /&gt;이럴 때 흔히 비교되는 두 가지 방식이 있습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;184&quot; data-start=&quot;104&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;149&quot; data-start=&quot;104&quot;&gt;&lt;b&gt;한 시간마다 10 분씩, 하루 10 번 움직이기&lt;/b&gt; (총 100 분)&lt;/li&gt;
&lt;li data-end=&quot;184&quot; data-start=&quot;150&quot;&gt;&lt;b&gt;한 번에 1 시간 몰아서 운동하기&lt;/b&gt; (총 60 분)&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;246&quot; data-start=&quot;186&quot; data-ke-size=&quot;size16&quot;&gt;둘 중 무엇이 더 효과적일까요? 최신 연구 사례를 바탕으로 장단점을 깔끔하게 정리했습니다.&lt;/p&gt;
&lt;hr data-end=&quot;251&quot; data-start=&quot;248&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;289&quot; data-start=&quot;253&quot; data-ke-size=&quot;size20&quot;&gt;1. &amp;lsquo;운동 스낵&amp;rsquo; ― 10 분씩 자주 끊어 움직이는 법&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;827&quot; data-start=&quot;291&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;482&quot; data-start=&quot;291&quot;&gt;&lt;b&gt;지방 연소 &amp;amp; 대사 활성&lt;/b&gt;&lt;br /&gt;건국대 김지수 교수팀은 동일 강도로 10 분 운동&amp;middot;10 분 휴식을 6회 반복한 그룹이 60 분 연속 운동 그룹보다 체지방 소모가 컸다고 보고했습니다. 짧은 운동 후 회복(EPOC) 과정이 반복돼 에너지 소비가 누적되기 때문이죠.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;633&quot; data-start=&quot;484&quot;&gt;&lt;b&gt;혈당&amp;middot;심혈관 관리&lt;/b&gt;&lt;br /&gt;45 분마다 3 분 걷기＋스쿼트 10회를 실험한 국내 연구에선, 단순 걷기 30 분보다 혈당이 21 % 더 낮아졌습니다. 장시간 앉아 있을 때 특히 유리합니다.&lt;/li&gt;
&lt;li data-end=&quot;827&quot; data-start=&quot;635&quot;&gt;&lt;b&gt;습관 형성 &amp;amp; 집중력 리셋&lt;/b&gt;&lt;br /&gt;&amp;ldquo;Exercise Snack&amp;rdquo; 트렌드는 네이버&amp;middot;브런치 등 고조회 블로그에서 업무 집중력 회복용 미니 루틴으로 빠르게 확산 중입니다. 짧게 움직이면 뇌로 가는 혈류가 순간적으로 증가해 졸음을 깨고 창의성도 올라간다는 후기가 많죠. &lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;838&quot; data-start=&quot;829&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;주의점&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;912&quot; data-start=&quot;839&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;870&quot; data-start=&quot;839&quot;&gt;알람을 맞추거나 스마트워치 리마인더 설정이 필수.&lt;/li&gt;
&lt;li data-end=&quot;912&quot; data-start=&quot;871&quot;&gt;근비대가 목표라면 세션마다 준비운동&amp;middot;세트 구성이 번거로울 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;917&quot; data-start=&quot;914&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;949&quot; data-start=&quot;919&quot; data-ke-size=&quot;size20&quot;&gt;2. 1 시간 연속 운동 ― 고밀도 한방 루틴&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1221&quot; data-start=&quot;951&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1068&quot; data-start=&quot;951&quot;&gt;&lt;b&gt;시간 효율 &amp;amp; 몰입감&lt;/b&gt;&lt;br /&gt;하루 일정을 방해받지 않고 &amp;lsquo;운동 모드&amp;rsquo;로 몰입할 수 있습니다. 러닝&amp;middot;사이클처럼 일정 페이스를 타야 하는 유산소 운동, 또는 무게를 증량해가는 웨이트 트레이닝에 적합하죠.&lt;/li&gt;
&lt;li data-end=&quot;1221&quot; data-start=&quot;1070&quot;&gt;&lt;b&gt;근력&amp;middot;근육 발달&lt;/b&gt;&lt;br /&gt;최신 메타분석에 따르면 주당 60 분 내외의 저항운동만으로도 근육량&amp;middot;근력이 유의하게 늘어났습니다. 세트 간 휴식과 점진적 과부하를 한 번에 설계하기 좋기 때문입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1232&quot; data-start=&quot;1223&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;주의점&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1353&quot; data-start=&quot;1233&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1309&quot; data-start=&quot;1233&quot;&gt;긴 시간 앉아 있는 라이프스타일 그대로라면, 1 시간 운동 후 남은 23 시간의 신진대사 저하 문제를 해결하지 못할 수 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;1353&quot; data-start=&quot;1310&quot;&gt;초보자에게는 60 분 연속 고강도 운동이 과부하로 작용할 위험도 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1358&quot; data-start=&quot;1355&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1383&quot; data-start=&quot;1360&quot; data-ke-size=&quot;size20&quot;&gt;3. 어떤 방식을 선택해야 할까?&lt;/h4&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1560&quot; data-start=&quot;1385&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt; 목표 &lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt; 추천 루틴 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1459&quot; data-start=&quot;1410&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1426&quot; data-start=&quot;1410&quot;&gt;&lt;b&gt;혈당&amp;middot;체지방 관리&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;1459&quot; data-start=&quot;1426&quot; data-col-size=&quot;sm&quot;&gt;10 분 &amp;times; 10 회 같은 &amp;lsquo;운동 스낵&amp;rsquo; 방식이 유리.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1502&quot; data-start=&quot;1460&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1476&quot; data-start=&quot;1460&quot;&gt;&lt;b&gt;근비대&amp;middot;기술 습득&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;1502&quot; data-start=&quot;1476&quot; data-col-size=&quot;sm&quot;&gt;1 시간 연속 세션이 프로그램화에 편리.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1560&quot; data-start=&quot;1503&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1516&quot; data-start=&quot;1503&quot;&gt;&lt;b&gt;바쁜 직장인&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;1560&quot; data-start=&quot;1516&quot; data-col-size=&quot;sm&quot;&gt;오전&amp;middot;오후 3 회씩 10 분 루틴 후, 주말 1 시간 집중운동으로 혼합.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote data-end=&quot;1677&quot; data-start=&quot;1562&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1573&quot; data-start=&quot;1564&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;포인트&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1677&quot; data-start=&quot;1576&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1621&quot; data-start=&quot;1576&quot;&gt;총 운동량이 같더라도 &amp;lsquo;휴식&amp;middot;회복&amp;rsquo;이 자주 끼면 에너지 소비가 더 커진다.&lt;/li&gt;
&lt;li data-end=&quot;1677&quot; data-start=&quot;1624&quot;&gt;그러나 근육 발달은 세트 간 누적 자극과 점진적 과부하가 핵심이라, 긴 세션이 구현이 쉽다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;1682&quot; data-start=&quot;1679&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1699&quot; data-start=&quot;1684&quot; data-ke-size=&quot;size20&quot;&gt;4. 실전 적용 팁&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1885&quot; data-start=&quot;1701&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1751&quot; data-start=&quot;1701&quot;&gt;&lt;b&gt;스케줄러에 &amp;lsquo;10 분 알림&amp;rsquo; 등록&lt;/b&gt; &amp;ndash; 앉아 있던 시간을 끊어주는 게 핵심.&lt;/li&gt;
&lt;li data-end=&quot;1793&quot; data-start=&quot;1752&quot;&gt;&lt;b&gt;집&amp;middot;회사 계단 이용&lt;/b&gt; &amp;ndash; 장비 필요 없는 최고의 운동 스낵.&lt;/li&gt;
&lt;li data-end=&quot;1838&quot; data-start=&quot;1794&quot;&gt;&lt;b&gt;주 2회 이상 30-60 분 웨이트 데이 확보&lt;/b&gt; &amp;ndash; 근손실 방지.&lt;/li&gt;
&lt;li data-end=&quot;1885&quot; data-start=&quot;1839&quot;&gt;&lt;b&gt;활동량 트래킹 앱 활용&lt;/b&gt; &amp;ndash; 하루 총 칼로리&amp;middot;걸음수를 체크해 동기 부여.&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>기타</category>
      <category>10분운동</category>
      <category>1시간운동</category>
      <category>다이어트</category>
      <category>생활체육</category>
      <category>운동스낵</category>
      <category>직장인운동</category>
      <category>헬스</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1942</guid>
      <comments>https://stack-queue.tistory.com/1942#entry1942comment</comments>
      <pubDate>Mon, 28 Jul 2025 13:15:36 +0900</pubDate>
    </item>
    <item>
      <title>책임 연쇄 vs 데코레이터 &amp;mdash; 헷갈리는 두 패턴, 결정적 차이를 콕 짚다</title>
      <link>https://stack-queue.tistory.com/1941</link>
      <description>&lt;h4 data-end=&quot;64&quot; data-start=&quot;51&quot; data-ke-size=&quot;size20&quot;&gt;1. 큰그림&lt;/h4&gt;
&lt;p data-end=&quot;207&quot; data-start=&quot;65&quot; data-ke-size=&quot;size16&quot;&gt;두 패턴 모두 &lt;b&gt;객체를 일렬로 연결&lt;/b&gt;해 요청을 전달하는 &amp;ldquo;재귀적 합성(체이닝)&amp;rdquo; 구조를 쓴다. 그래서 UML만 보면 &amp;ldquo;거의 같은데?&amp;rdquo; 싶지만, &lt;b&gt;의도와 결과가 완전히 다르다&lt;/b&gt;.&lt;/p&gt;
&lt;hr data-end=&quot;212&quot; data-start=&quot;209&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;240&quot; data-start=&quot;214&quot; data-ke-size=&quot;size20&quot;&gt;2. 공통점 ― 왜 비슷해 보일까?&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;387&quot; data-start=&quot;241&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;290&quot; data-start=&quot;241&quot;&gt;&lt;b&gt;재귀 합성&lt;/b&gt;: 객체가 자기 안에 같은 타입을 보관하고 다음 객체로 위임한다.&lt;/li&gt;
&lt;li data-end=&quot;339&quot; data-start=&quot;291&quot;&gt;&lt;b&gt;런타임 조립&lt;/b&gt;: 체인 순서를 코드를 수정하지 않고 동적으로 바꿀 수 있다.&lt;/li&gt;
&lt;li data-end=&quot;387&quot; data-start=&quot;340&quot;&gt;&lt;b&gt;결합도 &amp;darr;&lt;/b&gt;: 클라이언트는 &amp;ldquo;얼마나 많은 객체가 연결돼 있는지&amp;rdquo; 모른다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;392&quot; data-start=&quot;389&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;411&quot; data-start=&quot;394&quot; data-ke-size=&quot;size20&quot;&gt;3. 결정적 차이점&lt;/h4&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;973&quot; data-start=&quot;413&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt; 포인트 &lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt; 책임 연쇄(CoR) &lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt; 데코레이터(Decorator) &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;552&quot; data-start=&quot;473&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;482&quot; data-start=&quot;473&quot;&gt;&lt;b&gt;목적&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;518&quot; data-start=&quot;482&quot;&gt;&amp;ldquo;&lt;b&gt;누가&lt;/b&gt; 요청을 처리할지 찾는다&amp;rdquo; &amp;ndash; &lt;b&gt;책임 위임&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;552&quot; data-start=&quot;518&quot;&gt;&amp;ldquo;객체에 &lt;b&gt;기능을 덧붙인다&lt;/b&gt;&amp;rdquo; &amp;ndash; &lt;b&gt;행위 확장&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;718&quot; data-start=&quot;553&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;565&quot; data-start=&quot;553&quot;&gt;&lt;b&gt;흐름 제어&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;643&quot; data-start=&quot;565&quot;&gt;핸들러가 &lt;b&gt;처리를 중단&lt;/b&gt;할 수 있음 (다음으로 패스 여부 결정)&amp;nbsp;&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;718&quot; data-start=&quot;643&quot;&gt;데코레이터는 &lt;b&gt;반드시&lt;/b&gt; 내부 객체를 호출해 흐름을 이어감&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;818&quot; data-start=&quot;719&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;736&quot; data-start=&quot;719&quot;&gt;&lt;b&gt;반환값/사이드이펙트&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;775&quot; data-start=&quot;736&quot;&gt;주로 &lt;b&gt;하나만&lt;/b&gt; 결과를 만든다 (ex. 인증 실패 &amp;rarr; 401)&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;818&quot; data-start=&quot;775&quot;&gt;호출마다 &lt;b&gt;누적 효과&lt;/b&gt;가 생긴다 (ex. 로그 + 캐싱 + 인코딩)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;866&quot; data-start=&quot;819&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;835&quot; data-start=&quot;819&quot;&gt;&lt;b&gt;Undo/Redo&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;848&quot; data-start=&quot;835&quot;&gt;거의 사용하지 않음&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;866&quot; data-start=&quot;848&quot;&gt;래퍼를 벗겨 원상복구 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;973&quot; data-start=&quot;867&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;879&quot; data-start=&quot;867&quot;&gt;&lt;b&gt;대표 사례&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;930&quot; data-start=&quot;879&quot;&gt;Spring Security Filter Chain, Exception Resolver&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;973&quot; data-start=&quot;930&quot;&gt;Java I/O BufferedInputStream, 로깅 인터셉터&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;978&quot; data-start=&quot;975&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1005&quot; data-start=&quot;980&quot; data-ke-size=&quot;size20&quot;&gt;4. 언제 어떤 패턴을 쓰면 좋을까?&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1168&quot; data-start=&quot;1007&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1090&quot; data-start=&quot;1007&quot;&gt;&lt;b&gt;요청이 한 번만 처리되면 끝&lt;/b&gt;   &lt;b&gt;책임 연쇄&lt;/b&gt;&lt;br /&gt;예) 인증 &amp;rarr; 승인된 첫 핸들러만 200 OK 반환, 이후 체인은 멈춤.&lt;/li&gt;
&lt;li data-end=&quot;1168&quot; data-start=&quot;1092&quot;&gt;&lt;b&gt;여러 기능을 겹겹이 추가&lt;/b&gt;   &lt;b&gt;데코레이터&lt;/b&gt;&lt;br /&gt;예) 리스너에 로그 &amp;rarr; 캐시 &amp;rarr; 암호화 &amp;rarr; 전송을 차례로 포장.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-end=&quot;1267&quot; data-start=&quot;1170&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1267&quot; data-start=&quot;1172&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;TIP&lt;/b&gt;: 체인 중 일부 단계에서 흐름을 끊어야 한다면 데코레이터가 아니라 책임 연쇄를 선택하라&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;1272&quot; data-start=&quot;1269&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1291&quot; data-start=&quot;1274&quot; data-ke-size=&quot;size20&quot;&gt;5. 현업 적용 팁&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1519&quot; data-start=&quot;1293&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1357&quot; data-start=&quot;1293&quot;&gt;&lt;b&gt;스프링 필터 작성&lt;/b&gt;: doFilter 안에서 return으로 체인을 끊을지(CoR) 꼭 확인.&lt;/li&gt;
&lt;li data-end=&quot;1441&quot; data-start=&quot;1358&quot;&gt;&lt;b&gt;관점이 바뀌어 혼동될 때&lt;/b&gt;: &amp;ldquo;이 단계가 일을 끝내야 하나, 추가 행동만 해야 하나?&amp;rdquo;를 자문해 보면 패턴이 자연스럽게 갈린다.&lt;/li&gt;
&lt;li data-end=&quot;1519&quot; data-start=&quot;1442&quot;&gt;&lt;b&gt;혼합 금물&lt;/b&gt;: 기능 확장용 데코레이터를 CoR에 끼워 넣으면 디버깅 지옥. 체인과 데코레이터는 각각의 레이어로 명확히 분리하자.&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>개발</category>
      <category>Kotlin</category>
      <category>softwarearchitecture</category>
      <category>springboot</category>
      <category>데코레이터패턴</category>
      <category>디자인패턴</category>
      <category>책임연쇄패턴</category>
      <category>코드리팩터링</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1941</guid>
      <comments>https://stack-queue.tistory.com/1941#entry1941comment</comments>
      <pubDate>Mon, 28 Jul 2025 13:12:16 +0900</pubDate>
    </item>
    <item>
      <title>지갑 속 &amp;lsquo;종이&amp;rsquo;와 물가의 밀당 &amp;ndash; 《미스터리 오브 뱅킹》 3장</title>
      <link>https://stack-queue.tistory.com/1940</link>
      <description>&lt;h2 data-end=&quot;75&quot; data-start=&quot;61&quot; data-ke-size=&quot;size26&quot;&gt;한눈에 보는 3장&lt;/h2&gt;
&lt;p data-end=&quot;349&quot; data-start=&quot;76&quot; data-ke-size=&quot;size16&quot;&gt;로스바드는 &amp;ldquo;물건값이 전반적으로 오르내리는 이유는 단 두 가지, &lt;b&gt;화폐 공급(M)&lt;/b&gt; 과 &lt;b&gt;화폐 수요(D)&lt;/b&gt; 뿐&amp;rdquo;이라고 못 박는다. 화폐가 많이 풀리면 같은 빵이라도 가격표가 올라가고, 사람들이 지갑을 꼭 쥐고 쓰길 꺼리면(화폐 수요 &amp;uarr;) 물가는 내려간다. 이 단순하지만 강력한 법칙이 1970년대의 &amp;lsquo;그레이트 인플레이션&amp;rsquo;부터 2020년대 팬데믹 유동성 파티까지 줄곧 반복돼 왔음을 3장은 실증&amp;middot;그래프로 보여 준다&lt;/p&gt;
&lt;hr data-end=&quot;354&quot; data-start=&quot;351&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;369&quot; data-start=&quot;356&quot; data-ke-size=&quot;size26&quot;&gt;3장의 핵심 메시지&lt;/h2&gt;
&lt;h3 data-end=&quot;404&quot; data-start=&quot;371&quot; data-ke-size=&quot;size23&quot;&gt;1) &lt;b&gt;가격 수준은 결국 &amp;lsquo;돈&amp;rsquo;으로 설명된다&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;589&quot; data-start=&quot;405&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;490&quot; data-start=&quot;405&quot;&gt;금&amp;middot;은 본위 시절엔 화폐량이 광산 채굴 속도에 발이 묶여 물가가 안정적이었다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;589&quot; data-start=&quot;491&quot;&gt;종이&amp;middot;디지털 화폐 시대엔 정부&amp;middot;중앙은행이 버튼 한 번으로 늘릴 수 있어 가격이 급격히 흔들린다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;620&quot; data-start=&quot;591&quot; data-ke-size=&quot;size23&quot;&gt;2) &lt;b&gt;화폐 공급 증가 &amp;rarr; 물가 상승&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;819&quot; data-start=&quot;621&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;738&quot; data-start=&quot;621&quot;&gt;3장은 돈이 30 % 늘어나면 같은 값어치의 달러가 30 % 희석돼 &amp;lsquo;빵 1달러 &amp;rarr; 1.3달러&amp;rsquo; 식으로 가격표가 재조정된다고 설명한다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;819&quot; data-start=&quot;739&quot;&gt;1975~80년 미국 화폐 급증과 소비자물가 2배 상승은 대표적 예. &lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;850&quot; data-start=&quot;821&quot; data-ke-size=&quot;size23&quot;&gt;3) &lt;b&gt;화폐 수요 증가 &amp;rarr; 물가 하락&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;978&quot; data-start=&quot;851&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;978&quot; data-start=&quot;851&quot;&gt;공포&amp;middot;긴축 등으로 사람들이 현금을 더 보유하려 하면(수요 &amp;uarr;) 지출이 줄어 물가가 내려간다. 2008년 글로벌 금융위기 직후 단기 디플레이션이 그 사례.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1019&quot; data-start=&quot;980&quot; data-ke-size=&quot;size23&quot;&gt;4) &lt;b&gt;&amp;lsquo;마이크로=가격, 매크로=물가&amp;rsquo;가 따로가 아니다&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1119&quot; data-start=&quot;1020&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1119&quot; data-start=&quot;1020&quot;&gt;계란 한 판 값이 오르는 원리(수급)가 그대로 경제 전체의 물가에도 적용된다는 것이 로스바드의 논지다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1124&quot; data-start=&quot;1121&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1142&quot; data-start=&quot;1126&quot; data-ke-size=&quot;size26&quot;&gt;현대 한국에 대입해 보기&lt;/h2&gt;
&lt;h3 data-end=&quot;1171&quot; data-start=&quot;1144&quot; data-ke-size=&quot;size23&quot;&gt;▸ 코로나 이후 원‧달러‧집값 삼각관계&lt;/h3&gt;
&lt;p data-end=&quot;1349&quot; data-start=&quot;1172&quot; data-ke-size=&quot;size16&quot;&gt;2020~22년 한국 화폐 공급은 연평균 9 % 이상 확대됐다. 그사이 수도권 아파트 중위가격이 30 % 넘게 뛰었고, 원/달러 환율은 1,200&amp;rarr;1,400원을 오가며 불안정성이 커졌다. &lt;b&gt;돈이 풀린 뒤 자산‧환율이 함께 요동친 전형적 패턴&lt;/b&gt;이다.&lt;/p&gt;
&lt;h3 data-end=&quot;1381&quot; data-start=&quot;1351&quot; data-ke-size=&quot;size23&quot;&gt;▸ 금리 인상기, &amp;lsquo;현금 수요&amp;rsquo;가 상승했다?&lt;/h3&gt;
&lt;p data-end=&quot;1529&quot; data-start=&quot;1382&quot; data-ke-size=&quot;size16&quot;&gt;2023년 이후 한국은행의 연속 기준금리 인상으로 신용 창출 속도가 꺾이자 주식&amp;middot;코인 거래대금이 급감했다. 이는 투자자가 현금 비중을 늘리며 &lt;b&gt;화폐 수요가 높아진 결과&lt;/b&gt;로 해석할 수 있다.&lt;/p&gt;
&lt;h3 data-end=&quot;1551&quot; data-start=&quot;1531&quot; data-ke-size=&quot;size23&quot;&gt;▸ CBDC의 잠재적 파급&lt;/h3&gt;
&lt;p data-end=&quot;1692&quot; data-start=&quot;1552&quot; data-ke-size=&quot;size16&quot;&gt;중앙은행 디지털화폐가 도입되면 &lt;b&gt;공급&amp;middot;회수 속도가 종이화폐보다 훨씬 가파르게 변동&lt;/b&gt;할 수 있어 &amp;lsquo;가격 급등락&amp;mdash;디지털 디베이스&amp;rsquo; 위험이 커진다. 3장이 경고한 &amp;ldquo;화폐 양의 임의적 팽창은 결국 물가로 돌아온다&amp;rdquo;는 원칙이 디지털 시대에도 유효하다.&lt;/p&gt;
&lt;hr data-end=&quot;1697&quot; data-start=&quot;1694&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;blockquote data-end=&quot;1756&quot; data-start=&quot;1715&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1756&quot; data-start=&quot;1717&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;가격 통제를 논하기 전에 &lt;b&gt;돈이 얼마나 풀렸는지&lt;/b&gt;부터 체크하자.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1937&quot; data-start=&quot;1758&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1870&quot; data-start=&quot;1758&quot;&gt;정부는 종종 고물가를 &amp;lsquo;유통마진&amp;middot;담합&amp;middot;기후&amp;rsquo; 탓으로 돌리지만, 역사상 &lt;b&gt;지속적 인플레이션의 공통분모는 과잉 통화&lt;/b&gt;였다.&lt;/li&gt;
&lt;li data-end=&quot;1937&quot; data-start=&quot;1871&quot;&gt;금이나 비트코인 같은 &amp;lsquo;희소 디지털&amp;middot;실물 자산&amp;rsquo;이 각광받는 것도 결국 화폐 희석을 피하려는 본능적 움직임이다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>재테크</category>
      <category>CBDC위험</category>
      <category>경제고전읽기</category>
      <category>로스바드</category>
      <category>물가상승</category>
      <category>인플레이션</category>
      <category>투자전략</category>
      <category>한국경제</category>
      <category>화폐공급</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1940</guid>
      <comments>https://stack-queue.tistory.com/1940#entry1940comment</comments>
      <pubDate>Mon, 28 Jul 2025 10:13:58 +0900</pubDate>
    </item>
    <item>
      <title>책임을 넘겨라! Chain of Responsibility 한방 정복</title>
      <link>https://stack-queue.tistory.com/1939</link>
      <description>&lt;h4 data-end=&quot;68&quot; data-start=&quot;49&quot; data-ke-size=&quot;size20&quot;&gt;1. 패턴 한 줄 요약&lt;/h4&gt;
&lt;p data-end=&quot;193&quot; data-start=&quot;69&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;여러 &lt;b&gt;처리자(handler)&lt;/b&gt; 를 체인처럼 묶어, 요청을 순차적으로 건네며 &lt;b&gt;해당 단계가 책임을 지면 거기서 끝&lt;/b&gt;&amp;middot;못 하면 다음으로 패스한다.&amp;rdquo;&lt;/p&gt;
&lt;hr data-end=&quot;198&quot; data-start=&quot;195&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;218&quot; data-start=&quot;200&quot; data-ke-size=&quot;size20&quot;&gt;2. 왜 써야 할까?&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;401&quot; data-start=&quot;219&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;259&quot; data-start=&quot;219&quot;&gt;&lt;b&gt;결합도&amp;darr;&lt;/b&gt; : 클라이언트가 &amp;lsquo;누가 처리할지&amp;rsquo;를 몰라도 된다.&lt;/li&gt;
&lt;li data-end=&quot;303&quot; data-start=&quot;260&quot;&gt;&lt;b&gt;확장성&amp;uarr;&lt;/b&gt; : 새 규칙이 생겨도 체인에 핸들러만 끼워 넣으면 끝.&lt;/li&gt;
&lt;li data-end=&quot;401&quot; data-start=&quot;304&quot;&gt;&lt;b&gt;실행 흐름 제어&lt;/b&gt; : 요청 로깅&amp;rarr;인증&amp;rarr;권한&amp;rarr;비즈니스 로직 같은 가변 파이프라인을 우아하게 다룬다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;406&quot; data-start=&quot;403&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;425&quot; data-start=&quot;408&quot; data-ke-size=&quot;size20&quot;&gt;3. 구조 감 잡기&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;571&quot; data-start=&quot;426&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;480&quot; data-start=&quot;426&quot;&gt;&lt;b&gt;Handler 인터페이스&lt;/b&gt; &amp;ndash; handle(request) + next 보관&lt;/li&gt;
&lt;li data-end=&quot;524&quot; data-start=&quot;481&quot;&gt;&lt;b&gt;ConcreteHandler&lt;/b&gt; &amp;ndash; 조건 확인 후 처리&amp;middot;패스 결정&lt;/li&gt;
&lt;li data-end=&quot;571&quot; data-start=&quot;525&quot;&gt;&lt;b&gt;Client&lt;/b&gt; &amp;ndash; 첫 번째 핸들러에게만 요청하고, 나머지는 체인이 알아서&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-end=&quot;576&quot; data-start=&quot;573&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;606&quot; data-start=&quot;578&quot; data-ke-size=&quot;size20&quot;&gt;4. 코틀린 예제 &amp;ndash; API 필터 체인&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1753664674771&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;interface ApiFilter {
    fun doFilter(req: Request): Boolean       // true면 처리 완료
    var next: ApiFilter?
}

abstract class BaseFilter : ApiFilter {
    override var next: ApiFilter? = null
    final override fun doFilter(req: Request): Boolean {
        if (process(req)) return true         // 자신이 처리
        return next?.doFilter(req) ?: false   // 패스
    }
    protected abstract fun process(req: Request): Boolean
}

class AuthFilter : BaseFilter() {
    override fun process(req: Request) =
        if (req.token == &quot;VALID&quot;) false else { println(&quot;401&quot;); true }
}

class LogFilter : BaseFilter() {
    override fun process(req: Request): Boolean {
        println(&quot;요청 로그: ${req.path}&quot;); return false
    }
}

// 체인 조립
val chain = AuthFilter().apply { next = LogFilter() }
chain.doFilter(Request(&quot;/pay&quot;, &quot;INVALID&quot;))  // 401&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1517&quot; data-start=&quot;1453&quot; data-ke-size=&quot;size16&quot;&gt;AuthFilter가 실패를 잡아내면 이후 필터는 건너뛴다. 체인 순서&amp;middot;구성은 런타임에 자유롭게 바꿀 수 있다.&lt;/p&gt;
&lt;hr data-end=&quot;1522&quot; data-start=&quot;1519&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1546&quot; data-start=&quot;1524&quot; data-ke-size=&quot;size20&quot;&gt;5. 실무에서 보이는 체인들&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1893&quot; data-start=&quot;1547&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1655&quot; data-start=&quot;1547&quot;&gt;&lt;b&gt;Servlet Filter Chain&lt;/b&gt; &amp;ndash; HTTP 요청을 여러 필터가 순서대로 가공하고 통과시키는 전형적인 예.&lt;/li&gt;
&lt;li data-end=&quot;1773&quot; data-start=&quot;1656&quot;&gt;&lt;b&gt;Spring Security Filter Chain&lt;/b&gt; &amp;ndash; 인증&amp;middot;인가&amp;middot;CSRF 등 수십 개의 보안 필터가 &amp;lsquo;책임 연쇄&amp;rsquo;로 연결된다.&lt;/li&gt;
&lt;li data-end=&quot;1833&quot; data-start=&quot;1774&quot;&gt;&lt;b&gt;로깅 &amp;amp; 미들웨어 스택&lt;/b&gt; &amp;ndash; SLF4J MDC 설정, 트레이싱, 모니터링까지 계층형으로 삽입.&lt;/li&gt;
&lt;li data-end=&quot;1893&quot; data-start=&quot;1834&quot;&gt;&lt;b&gt;결제 프로세스&lt;/b&gt; &amp;ndash; 한 주문이 재고 확인&amp;rarr;결제 승인&amp;rarr;마일리지 적립&amp;rarr;알림 발송 단계를 타고 흐른다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1898&quot; data-start=&quot;1895&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1916&quot; data-start=&quot;1900&quot; data-ke-size=&quot;size20&quot;&gt;6. 장단점 체크&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2010&quot; data-start=&quot;1917&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1961&quot; data-start=&quot;1917&quot;&gt;&lt;b&gt;  유연성&lt;/b&gt; : 핸들러 순서&amp;middot;유무를 설정 파일만으로도 조정 가능.&lt;/li&gt;
&lt;li data-end=&quot;2010&quot; data-start=&quot;1962&quot;&gt;&lt;b&gt;⚠️ 주의&lt;/b&gt; : 디버깅이 어렵다. 어느 단계에서 멈췄는지 로깅을 꼭 집어넣자.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>개발</category>
      <category>ChainOfResponsibility</category>
      <category>FilterChain</category>
      <category>Kotlin</category>
      <category>springboot</category>
      <category>디자인패턴</category>
      <category>백엔드개발</category>
      <category>책임연쇄패턴</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1939</guid>
      <comments>https://stack-queue.tistory.com/1939#entry1939comment</comments>
      <pubDate>Mon, 28 Jul 2025 10:06:50 +0900</pubDate>
    </item>
    <item>
      <title>명령을 객체로! 커맨드 패턴으로 유연한 실행 로직 만들기  </title>
      <link>https://stack-queue.tistory.com/1938</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;왜 또 커맨드 패턴인가?&lt;/p&gt;
&lt;p data-end=&quot;321&quot; data-start=&quot;70&quot; data-ke-size=&quot;size16&quot;&gt;버튼 하나에 기능을 자꾸 갈아끼워야 할 때마다 if-else 덩어리를 늘리는 대신, &lt;b&gt;&amp;ldquo;명령 자체를 객체로 포장&amp;rdquo;&lt;/b&gt;하면 된다. 요청(함수 이름&amp;middot;인자&amp;middot;수행 시점)을 통째로 캡슐화해 &lt;b&gt;큐에 쌓거나, 로그로 남기거나, 실행 &amp;harr; 취소&lt;/b&gt;까지 자유자재로 다룰 수 있다는 얘기다. 국내 인기 블로그들도 &amp;ldquo;요청을 객체로 만들어 느슨한 결합을 얻는다&amp;rdquo;는 점을 1순위 장점으로 꼽는다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr data-end=&quot;326&quot; data-start=&quot;323&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;패턴 한 줄 정의&lt;/p&gt;
&lt;blockquote data-end=&quot;565&quot; data-start=&quot;346&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;565&quot; data-start=&quot;348&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Invoker&lt;/b&gt;(요청자)가 &lt;b&gt;Command&lt;/b&gt;(명령 객체)를 실행하면, 명령은 &lt;b&gt;Receiver&lt;/b&gt;(실제 작업자)에게 일을 시킨다.&lt;br /&gt;Invoker는 &amp;ldquo;누가 어떻게 일하느냐&amp;rdquo;에 전혀 관여하지 않는다. 때문에 실행 시점 지연, 일괄 처리, undo/redo, 트랜잭션 롤백 같은 고급 기능을 끼워 넣기 쉽다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;570&quot; data-start=&quot;567&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;핵심 구성 요소&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;819&quot; data-start=&quot;589&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;641&quot; data-start=&quot;589&quot;&gt;&lt;b&gt;Command 인터페이스&lt;/b&gt;: execute()&amp;middot;undo() 같은 동작 규약&lt;/li&gt;
&lt;li data-end=&quot;688&quot; data-start=&quot;642&quot;&gt;&lt;b&gt;ConcreteCommand&lt;/b&gt;: 실제 로직과 Receiver 참조 보관&lt;/li&gt;
&lt;li data-end=&quot;721&quot; data-start=&quot;689&quot;&gt;&lt;b&gt;Receiver&lt;/b&gt;: 명령을 수행할 도메인 객체&lt;/li&gt;
&lt;li data-end=&quot;764&quot; data-start=&quot;722&quot;&gt;&lt;b&gt;Invoker&lt;/b&gt;: 명령을 받아 실행&amp;middot;취소&amp;middot;재실행 등 타이밍 제어&lt;/li&gt;
&lt;li data-end=&quot;819&quot; data-start=&quot;765&quot;&gt;&lt;b&gt;Client&lt;/b&gt;: 누가 어떤 ConcreteCommand를 Invoker에 심을지 결정&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;824&quot; data-start=&quot;821&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코틀린 예제 &amp;ndash; 리모컨 &amp;amp; 가전&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1753664239256&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Command
fun interface Command { fun execute() }

// Receiver
class Light {
    fun on()  = println(&quot;  불 켜짐&quot;)
    fun off() = println(&quot;  불 꺼짐&quot;)
}

// ConcreteCommand
class LightOnCommand(private val light: Light) : Command {
    override fun execute() = light.on()
}

// Invoker
class RemoteControl {
    private val slots = mutableMapOf&amp;lt;Int, Command&amp;gt;()
    fun setCommand(slot: Int, cmd: Command) { slots[slot] = cmd }
    fun press(slot: Int) = slots[slot]?.execute()
}

// 사용
fun main() {
    val light = Light()
    val remote = RemoteControl()
    remote.setCommand(0, LightOnCommand(light))
    remote.press(0)   //   불 켜짐
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1609&quot; data-start=&quot;1502&quot; data-ke-size=&quot;size16&quot;&gt;명령이 객체이므로 &lt;b&gt;remote.setCommand()&lt;/b&gt;만으로 버튼 역할을 핫스왑할 수 있다. undo()를 추가해 실행 내역 스택을 관리하면 스마트홈 앱에서도 그대로 쓸 수 있다.&lt;/p&gt;
&lt;hr data-end=&quot;1614&quot; data-start=&quot;1611&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실전에서 빛나는 순간&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1888&quot; data-start=&quot;1636&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1669&quot; data-start=&quot;1636&quot;&gt;&lt;b&gt;Undo / Redo&lt;/b&gt;: 포토샵, IDE 단축키&lt;/li&gt;
&lt;li data-end=&quot;1712&quot; data-start=&quot;1670&quot;&gt;&lt;b&gt;매크로&amp;middot;배치 작업&lt;/b&gt;: 여러 명령을 List로 묶어 한 번에 실행&lt;/li&gt;
&lt;li data-end=&quot;1773&quot; data-start=&quot;1713&quot;&gt;&lt;b&gt;CQRS/이벤트 소싱&lt;/b&gt;: &amp;ldquo;쓰기 명령(Command) vs 읽기(Query)&amp;rdquo; 분리 구조의 근간&lt;/li&gt;
&lt;li data-end=&quot;1888&quot; data-start=&quot;1774&quot;&gt;&lt;b&gt;스프링 부트&lt;/b&gt;: ApplicationRunner, CommandLineRunner가 대표적인 Command 구현체다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1893&quot; data-start=&quot;1890&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;장점  &lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2025&quot; data-start=&quot;1909&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1949&quot; data-start=&quot;1909&quot;&gt;요청, 실행 시점을 분리해 &lt;b&gt;스케줄링&amp;middot;트랜잭션 재시도&lt;/b&gt;가 간단&lt;/li&gt;
&lt;li data-end=&quot;1993&quot; data-start=&quot;1950&quot;&gt;&lt;b&gt;OCP&lt;/b&gt; 준수: 새 명령 클래스만 만들면 Invoker 수정 없음&lt;/li&gt;
&lt;li data-end=&quot;2025&quot; data-start=&quot;1994&quot;&gt;로깅&amp;middot;모니터링이 쉬워 &lt;b&gt;운영 관점&lt;/b&gt;에서도 유리&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주의할 점 ⚠️&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2112&quot; data-start=&quot;2044&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2076&quot; data-start=&quot;2044&quot;&gt;명령 종류가 폭증하면 클래스 수도 급격히 늘어난다.&lt;/li&gt;
&lt;li data-end=&quot;2112&quot; data-start=&quot;2077&quot;&gt;간단한 호출이면 람다 전달이 더 짧고 명료할 때도 있다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>개발</category>
      <category>Command패턴</category>
      <category>CQRS</category>
      <category>UndoRedo</category>
      <category>개발블로그</category>
      <category>디자인패턴</category>
      <category>스프링부트</category>
      <category>코틀린</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1938</guid>
      <comments>https://stack-queue.tistory.com/1938#entry1938comment</comments>
      <pubDate>Mon, 28 Jul 2025 10:02:39 +0900</pubDate>
    </item>
    <item>
      <title>FOMC 앞두고 숨 고른 1.6 억 비트코인: 7 월 29 일&amp;ndash;8 월 4 일 주간 전망</title>
      <link>https://stack-queue.tistory.com/1937</link>
      <description>&lt;p data-end=&quot;234&quot; data-start=&quot;95&quot; data-ke-size=&quot;size16&quot;&gt;지난주 급락을 딛고 7 월 28 일 10 시 KST 기준, 업비트에서 1 BTC는 &lt;b&gt;약 1 억 60 2천 만 원&lt;/b&gt;에 거래 중이다. 글로벌 가격(약 $119 K)보다 1 % 남짓 낮아 &lt;b&gt;김치프리미엄이 &amp;ndash;1.3 %&lt;/b&gt; 수준까지 역전된 상태다.&lt;/p&gt;
&lt;hr data-end=&quot;239&quot; data-start=&quot;236&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;273&quot; data-start=&quot;241&quot; data-ke-size=&quot;size20&quot;&gt;1️⃣ 거시 변수: &amp;lsquo;파월의 입&amp;rsquo;과 국채 수급&lt;/h4&gt;
&lt;p data-end=&quot;402&quot; data-start=&quot;274&quot; data-ke-size=&quot;size16&quot;&gt;미 연준은 7 월 31 일 FOMC에서 금리를 동결할 가능성이 높지만, **&amp;ldquo;추가 인하를 미룰 수도 있다&amp;rdquo;**는 시그널이 금융시장 곳곳에서 포착된다. 채권금리가 반등하며 달러가 강세로 돌아서면 위험자산에는 압박 요인이 된다.&lt;/p&gt;
&lt;h4 data-end=&quot;450&quot; data-start=&quot;404&quot; data-ke-size=&quot;size20&quot;&gt;2️⃣ ETF 흐름: 12 일 연속 순유입 끝&amp;hellip;첫 &amp;lsquo;130 M$ 유출&amp;rsquo;&lt;/h4&gt;
&lt;p data-end=&quot;573&quot; data-start=&quot;451&quot; data-ke-size=&quot;size16&quot;&gt;미국 현물 BTC-ETF는 지난 월요일 하루에만 &lt;b&gt;1억 3천 만 달러&lt;/b&gt;가 빠져나오며 랠리의 핵심 연료가 일시적으로 꺼졌다. 이번 주 재유입이 재개될지, 아니면 추가 유출이 이어질지가 방향성을 가를 1차 촉매다.&lt;/p&gt;
&lt;h4 data-end=&quot;610&quot; data-start=&quot;575&quot; data-ke-size=&quot;size20&quot;&gt;3️⃣ 알트코인 순환매: ETH&amp;middot;SOL에 쏠린 시선&lt;/h4&gt;
&lt;p data-end=&quot;754&quot; data-start=&quot;611&quot; data-ke-size=&quot;size16&quot;&gt;비트코인 도미넌스는 48 %대로 내려앉았다. 기관 자금이 &lt;b&gt;ETH 현물 ETF(2주 유입 2 B$)&lt;/b&gt; 로 이동하면서 &amp;lsquo;알트 시즌&amp;rsquo;에 대한 기대가 커진다. 자금 분산이 장기 추세에는 긍정적이지만, 이번 주 단기 수급은 BTC에 다소 불리할 수 있다.&lt;/p&gt;
&lt;h4 data-end=&quot;795&quot; data-start=&quot;756&quot; data-ke-size=&quot;size20&quot;&gt;4️⃣ 역(逆)프리미엄 심화: 강한 원화+국내 거래량 급감&lt;/h4&gt;
&lt;p data-end=&quot;936&quot; data-start=&quot;796&quot; data-ke-size=&quot;size16&quot;&gt;원/달러 환율이 1,360원대로 내려온 데다, 국내 거래대금이 전년 대비 30 % 이상 줄면서 해외 호재를 즉각 따라붙지 못하는 &lt;b&gt;가격 갭&lt;/b&gt;이 커졌다. 김프가 &amp;ndash;1 %대에 머무는 한, 환율 변동이 곧장 가격에 미치는 효과도 제한적일 전망이다.&lt;/p&gt;
&lt;h4 data-end=&quot;958&quot; data-start=&quot;938&quot; data-ke-size=&quot;size20&quot;&gt;5️⃣ 기술적 레벨 체크&lt;/h4&gt;
&lt;p data-end=&quot;1144&quot; data-start=&quot;959&quot; data-ke-size=&quot;size16&quot;&gt;50일 EMA가 위치한 &lt;b&gt;1 억 58 백 만 원&lt;/b&gt; 선이 이번 주 1차 지지대다. ETF 재유입과 매파 완화 기대가 겹치면 &lt;b&gt;1 억 65 백 만~1 억 68 백 만 원&lt;/b&gt;(글로벌 $122 K) 저항을 재테스트할 수 있다. 반대로 FOMC 매파 전환+ETF 유출이 지속되면 &lt;b&gt;1 억 50 백 만 원&lt;/b&gt;까지 눌림도 열려 있다.&lt;/p&gt;
&lt;hr data-end=&quot;1149&quot; data-start=&quot;1146&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1166&quot; data-start=&quot;1151&quot; data-ke-size=&quot;size23&quot;&gt;투자 전략 한눈에&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1382&quot; data-start=&quot;1167&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1248&quot; data-start=&quot;1167&quot;&gt;&lt;b&gt;낙관 시나리오&lt;/b&gt;: 파월이 완화적 톤 &amp;rarr; ETF 순유입 재개 &amp;rarr; 1 억 68 백 만 원 돌파 시 1 억 72 백 만 원까지 상단 열림.&lt;/li&gt;
&lt;li data-end=&quot;1313&quot; data-start=&quot;1249&quot;&gt;&lt;b&gt;중립 시나리오&lt;/b&gt;: FOMC&amp;middot;PCE 지표 소화 전까지 1 억 55 백 만~1 억 65 백 만 원 박스권.&lt;/li&gt;
&lt;li data-end=&quot;1382&quot; data-start=&quot;1314&quot;&gt;&lt;b&gt;비관 시나리오&lt;/b&gt;: 강달러&amp;middot;ETF 유출 지속 시 1 억 50 백 만 원 지지 테스트, 알트코인 낙폭 확대 가능.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1503&quot; data-start=&quot;1384&quot; data-ke-size=&quot;size16&quot;&gt;이번 주는 &lt;b&gt;&amp;ldquo;FOMC+ETF 자금 흐름&amp;rdquo;&lt;/b&gt; 이 두 축이 모든 변동성의 근원이다. 이벤트 전후엔 레버리지 노출을 낮추고, 핵심 지지선(1 억 55 백 만 원) 부근에서 분할 대응하는 보수적 접근이 유효하다.&lt;/p&gt;</description>
      <category>재테크</category>
      <category>2025투자</category>
      <category>BTC전망</category>
      <category>ETF흐름</category>
      <category>FOMC</category>
      <category>김치프리미엄</category>
      <category>비트코인</category>
      <category>알트시즌</category>
      <category>암호화폐</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1937</guid>
      <comments>https://stack-queue.tistory.com/1937#entry1937comment</comments>
      <pubDate>Mon, 28 Jul 2025 09:55:02 +0900</pubDate>
    </item>
    <item>
      <title>7월 마지막 주 원달러 환율 전망 &amp;ndash; 환율의 피로감, 반등은 어디서?</title>
      <link>https://stack-queue.tistory.com/1936</link>
      <description>&lt;p data-end=&quot;291&quot; data-start=&quot;162&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이번 주(7월 22일~7월 26일) 원/달러 환율은 단기 조정 이후 다시 반등 흐름을 시도했습니다. 미국 경제 지표와 일본 엔화 약세, 중국 경기 부진이 복합적으로 영향을 주며 환율이 1,390원대에서 방향을 탐색 중입니다.&lt;/b&gt;&lt;/p&gt;
&lt;hr data-end=&quot;296&quot; data-start=&quot;293&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;322&quot; data-start=&quot;298&quot; data-ke-size=&quot;size20&quot;&gt;  이번 주 주요 환율 흐름 요약&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;511&quot; data-start=&quot;323&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;378&quot; data-start=&quot;323&quot;&gt;&lt;b&gt;7월 22일 (월):&lt;/b&gt; 1,391.2원으로 출발. 안전자산 선호 심리와 엔저 지속에 상승.&lt;/li&gt;
&lt;li data-end=&quot;444&quot; data-start=&quot;379&quot;&gt;&lt;b&gt;7월 23~24일:&lt;/b&gt; 미국 PMI 부진과 국채금리 하락 영향으로 환율 일시 하락 &amp;rarr; 1,384원선까지 밀림.&lt;/li&gt;
&lt;li data-end=&quot;511&quot; data-start=&quot;445&quot;&gt;&lt;b&gt;7월 25~26일:&lt;/b&gt; ECB의 매파적 스탠스와 중국 위안화 약세에 동조, 환율 반등 &amp;rarr; 1,391.8원 마감.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;516&quot; data-start=&quot;513&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;541&quot; data-start=&quot;518&quot; data-ke-size=&quot;size20&quot;&gt;  환율에 영향을 준 핵심 요인&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;826&quot; data-start=&quot;542&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;622&quot; data-start=&quot;542&quot;&gt;&lt;b&gt;미국 경기 둔화 조짐&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;622&quot; data-start=&quot;564&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;593&quot; data-start=&quot;564&quot;&gt;7월 제조업&amp;middot;서비스 PMI 모두 시장 예상치 하회&lt;/li&gt;
&lt;li data-end=&quot;622&quot; data-start=&quot;597&quot;&gt;연준의 연내 금리 인하 기대가 다시 살아남&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;710&quot; data-start=&quot;624&quot;&gt;&lt;b&gt;日 엔저 압박&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;710&quot; data-start=&quot;642&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;675&quot; data-start=&quot;642&quot;&gt;일본은행의 완화적 스탠스 유지 &amp;rarr; 엔/달러 158엔 돌파&lt;/li&gt;
&lt;li data-end=&quot;710&quot; data-start=&quot;679&quot;&gt;원/엔 환율도 900원 돌파, 원화의 동반 약세 유도&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;775&quot; data-start=&quot;712&quot;&gt;&lt;b&gt;中 경기 우려&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;775&quot; data-start=&quot;730&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;748&quot; data-start=&quot;730&quot;&gt;중국 부동산 디폴트 확대 우려&lt;/li&gt;
&lt;li data-end=&quot;775&quot; data-start=&quot;752&quot;&gt;위안화 약세로 아시아 통화 전반에 압력&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;826&quot; data-start=&quot;777&quot;&gt;&lt;b&gt;달러 인덱스 혼조&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;826&quot; data-start=&quot;797&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;826&quot; data-start=&quot;797&quot;&gt;105선에서 등락. 연준 금리 정책 불확실성 지속&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-end=&quot;831&quot; data-start=&quot;828&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;875&quot; data-start=&quot;833&quot; data-ke-size=&quot;size20&quot;&gt;  다음 주 전망: &lt;b&gt;환율 박스권? 단기 상단은 1,395원&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;983&quot; data-start=&quot;876&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;929&quot; data-start=&quot;876&quot;&gt;&lt;b&gt;단기 상단:&lt;/b&gt; 1,395~1,398원선. 엔저 및 위안화 흐름 따라 추가 상승 가능성.&lt;/li&gt;
&lt;li data-end=&quot;983&quot; data-start=&quot;930&quot;&gt;&lt;b&gt;단기 하단:&lt;/b&gt; 1,380원 초반. 연준 완화 기대감이 강하게 작용할 경우 제한적 하락.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1046&quot; data-start=&quot;985&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;rarr; 투자자 입장에선 외환시장 변동성 확대 구간. 수출기업엔 유리, 수입기업은 환헤지 전략 재점검 필요.&lt;/b&gt;&lt;/p&gt;
&lt;hr data-end=&quot;1051&quot; data-start=&quot;1048&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1075&quot; data-start=&quot;1053&quot; data-ke-size=&quot;size20&quot;&gt;  다음 주 주목해야 할 이슈&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1158&quot; data-start=&quot;1076&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1102&quot; data-start=&quot;1076&quot;&gt;7월 31일 &lt;b&gt;미국 FOMC 회의 결과&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1123&quot; data-start=&quot;1103&quot;&gt;8월 1일 &lt;b&gt;미국 고용보고서&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1143&quot; data-start=&quot;1124&quot;&gt;일본은행 통화정책회의 발언 추이&lt;/li&gt;
&lt;li data-end=&quot;1158&quot; data-start=&quot;1144&quot;&gt;한국 7월 수출입 실적&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1163&quot; data-start=&quot;1160&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1174&quot; data-start=&quot;1165&quot; data-ke-size=&quot;size23&quot;&gt;  결론&lt;/h3&gt;
&lt;p data-end=&quot;1308&quot; data-start=&quot;1175&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;7월 마지막 주 원/달러 환율은 글로벌 불확실성 속 '고점 눈치보기' 구간에 들어섰습니다.&lt;/b&gt;&lt;br /&gt;단기 급등보단 박스권 횡보 흐름이 이어질 가능성이 크며, 투자자는 &lt;b&gt;글로벌 금리 방향성과 아시아 통화 흐름&lt;/b&gt;을 계속 주시해야 합니다.&lt;/p&gt;</description>
      <category>재테크</category>
      <category>7월환율분석</category>
      <category>FOMC회의</category>
      <category>달러인덱스</category>
      <category>미국금리인하</category>
      <category>수출기업전략</category>
      <category>엔화약세</category>
      <category>원달러환율</category>
      <category>위안화</category>
      <category>환율박스권</category>
      <category>환율전망</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1936</guid>
      <comments>https://stack-queue.tistory.com/1936#entry1936comment</comments>
      <pubDate>Mon, 28 Jul 2025 09:53:17 +0900</pubDate>
    </item>
    <item>
      <title>Factory Method vs Template Method ― &amp;ldquo;누가 만들고, 누가 조립하나?&amp;rdquo;</title>
      <link>https://stack-queue.tistory.com/1935</link>
      <description>&lt;h4 data-end=&quot;81&quot; data-start=&quot;67&quot; data-ke-size=&quot;size20&quot;&gt;큰 그림 먼저&lt;/h4&gt;
&lt;p data-end=&quot;132&quot; data-start=&quot;82&quot; data-ke-size=&quot;size16&quot;&gt;두 패턴 모두 &lt;b&gt;코드 중복을 줄이고 역할을 쪼개기&lt;/b&gt; 위한 도구지만, 초점이 다르다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;407&quot; data-start=&quot;133&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;280&quot; data-start=&quot;133&quot;&gt;&lt;b&gt;Factory Method&lt;/b&gt;는 &amp;ldquo;어떤 객체를 만들지?&amp;rdquo;에 대한 &lt;b&gt;생성 책임&lt;/b&gt;을 서브클래스에 넘긴다. API 사용자는 &amp;ldquo;어떤 구체 클래스인지&amp;rdquo; 모르는 채로 인스턴스를 받아 쓴다.&lt;/li&gt;
&lt;li data-end=&quot;407&quot; data-start=&quot;281&quot;&gt;&lt;b&gt;Template Method&lt;/b&gt;는 &amp;ldquo;만들어진 객체가 어떻게 일할까?&amp;rdquo;에 대한 &lt;b&gt;행위 흐름&lt;/b&gt;을 부모가 고정하고, 변동 단계만 자식에게 맡긴다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;667&quot; data-start=&quot;409&quot; data-ke-size=&quot;size16&quot;&gt;둘을 조합하면 &amp;ldquo;공통 알고리즘 뼈대&amp;rdquo;는 Template Method로 잡고, 그 과정에서 필요한 &amp;ldquo;구체 객체&amp;rdquo;는 Factory Method로 생성하도록 설계할 수 있다. 예컨대 &lt;b&gt;스프링 DispatcherServlet이 요청 흐름(Template) 안에서 View 객체를 뽑아낼 때&lt;/b&gt; ViewResolver가 Factory Method 역할을 한다고 국내 인기 블로그들도 자주 소개한다. &lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr data-end=&quot;672&quot; data-start=&quot;669&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;696&quot; data-start=&quot;674&quot; data-ke-size=&quot;size20&quot;&gt;코틀린 감각으로 비교해 보기&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1753323646289&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 템플릿 메서드: 알고리즘 골격
abstract class ReportJob {
    fun run() {
        val reader = createReader()          // ★ Factory Method 호출
        val data   = reader.read()
        format(data)
        send()
    }
    protected abstract fun createReader(): DataReader   // Factory Method
    protected abstract fun format(d: String)
    protected open fun send() = println(&quot;메일 전송 완료&quot;)
}

// 팩토리 메서드: 객체 생성 책임
class CsvReportJob : ReportJob() {
    override fun createReader() = CsvReader()
    override fun format(d: String) = println(&quot;CSV 서식: $d&quot;)
}

class CsvReader : DataReader { override fun read() = &quot;매출,10000&quot; }
interface DataReader { fun read(): String }

fun main() { CsvReportJob().run() }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1525&quot; data-start=&quot;1406&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1456&quot; data-start=&quot;1406&quot;&gt;run() 흐름은 &lt;b&gt;Template Method&lt;/b&gt; &amp;mdash; 절차를 바꿀 수 없다.&lt;/li&gt;
&lt;li data-end=&quot;1525&quot; data-start=&quot;1457&quot;&gt;createReader()는 &lt;b&gt;Factory Method&lt;/b&gt; &amp;mdash; 어떤 Reader를 만들지는 자식이 결정한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1647&quot; data-start=&quot;1527&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 분리하면 &lt;b&gt;새로운 리더(JsonReader)&lt;/b&gt; 를 추가할 때 기존 알고리즘은 그대로 두고, 생성 책임만 새 하위 클래스가 맡는다.&lt;/p&gt;
&lt;hr data-end=&quot;1652&quot; data-start=&quot;1649&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1676&quot; data-start=&quot;1654&quot; data-ke-size=&quot;size20&quot;&gt;언제 어떤 패턴이 유리할까?&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1877&quot; data-start=&quot;1677&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1772&quot; data-start=&quot;1677&quot;&gt;&lt;b&gt;Factory Method&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1772&quot; data-start=&quot;1702&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1741&quot; data-start=&quot;1702&quot;&gt;여러 제품군이 늘어날 때 &amp;ldquo;객체 생성 로직&amp;rdquo;을 갈아끼워야 한다.&lt;/li&gt;
&lt;li data-end=&quot;1772&quot; data-start=&quot;1744&quot;&gt;IoC 컨테이너&amp;middot;DI 프레임워크와 찰떡궁합.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1877&quot; data-start=&quot;1773&quot;&gt;&lt;b&gt;Template Method&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1877&quot; data-start=&quot;1799&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1836&quot; data-start=&quot;1799&quot;&gt;동일한 작업 흐름이 반복되지만 중간 단계가 조금씩 다를 때.&lt;/li&gt;
&lt;li data-end=&quot;1877&quot; data-start=&quot;1839&quot;&gt;프레임워크가 제어권을 갖고, 개발자는 훅만 구현하길 원할 때.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-end=&quot;1995&quot; data-start=&quot;1879&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1995&quot; data-start=&quot;1881&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;팁&lt;/b&gt;: 생성 로직이 복잡해지면 Factory Method를 &lt;b&gt;Abstract Factory&lt;/b&gt;로 키우고, 흐름 제어가 런타임에 바뀌어야 하면 Template 대신 &lt;b&gt;Strategy&lt;/b&gt;로 교체하라.&lt;/p&gt;
&lt;/blockquote&gt;</description>
      <category>개발</category>
      <category>FactoryMethod</category>
      <category>OOP</category>
      <category>springboot</category>
      <category>TemplateMethod</category>
      <category>개발블로그</category>
      <category>디자인패턴</category>
      <category>소프트웨어아키텍처</category>
      <category>코틀린</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1935</guid>
      <comments>https://stack-queue.tistory.com/1935#entry1935comment</comments>
      <pubDate>Thu, 24 Jul 2025 11:21:41 +0900</pubDate>
    </item>
    <item>
      <title>한&amp;middot;미 관세 협상, 15 %로 귀결될까? 세 가지 시나리오와 투자 전략</title>
      <link>https://stack-queue.tistory.com/1934</link>
      <description>&lt;p data-end=&quot;315&quot; data-start=&quot;118&quot; data-ke-size=&quot;size16&quot;&gt;미&amp;middot;일이 &amp;lsquo;15 % 일괄 관세+5500억 달러 투자&amp;rsquo; 딜을 타결한 뒤, 오는 &lt;b&gt;8 월 1 일 전에 한&amp;middot;미도 비슷한 합의를 이끌어낼 수 있을지가 최대 관심사&lt;/b&gt;입니다. 현재 미국의 &amp;lsquo;상호주의 관세&amp;rsquo; 목록에는 &lt;b&gt;한국 25 %&lt;/b&gt;가 명시돼 있어 협상 실패 땐 추가 부담이 현실화됩니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-end=&quot;345&quot; data-start=&quot;317&quot; data-ke-size=&quot;size20&quot;&gt;1. 왜 15 %가 &amp;lsquo;마지노선&amp;rsquo;이 됐나&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;717&quot; data-start=&quot;346&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;481&quot; data-start=&quot;346&quot;&gt;&lt;b&gt;동종 업계 경쟁 압박&lt;/b&gt; &amp;ndash; 일본 15 % 딜로 현대&amp;middot;기아 주가가 즉각 7 %대 급등. &amp;lsquo;동일 조건&amp;rsquo;이 안 되면 가격 경쟁력에서 밀린다는 우려가 시장에 반영됐습니다.&amp;nbsp;&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;585&quot; data-start=&quot;482&quot;&gt;&lt;b&gt;정치적 균형&lt;/b&gt; &amp;ndash; 한국은 &amp;ldquo;일본보다 나쁜 조건은 받을 수 없다&amp;rdquo;는 입장으로 워싱턴 협상에 임하고 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;717&quot; data-start=&quot;586&quot;&gt;&lt;b&gt;미국 협상 카드&lt;/b&gt; &amp;ndash; 미국은 ▲LNG(알래스카) 프로젝트 공동투자 ▲칩&amp;middot;배터리 공장 증설 ▲옥수수&amp;middot;에탄올용 곡물 수입 확대 등을 요구한 것으로 알려졌습니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;758&quot; data-start=&quot;719&quot; data-ke-size=&quot;size20&quot;&gt;2. 15 %로 합의될 &amp;lsquo;확률&amp;rsquo; 진단 &amp;ndash; 세 가지 시나리오&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1171&quot; data-start=&quot;759&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;868&quot; data-start=&quot;759&quot;&gt;&lt;b&gt;베이스라인 25 % (가능성 &amp;asymp; 20 %)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;868&quot; data-start=&quot;795&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;827&quot; data-start=&quot;795&quot;&gt;농축산물 개방&amp;middot;대규모 투자에서 접점을 못 찾을 때.&lt;/li&gt;
&lt;li data-end=&quot;868&quot; data-start=&quot;831&quot;&gt;한국 자동차&amp;middot;철강에 즉각적인 마진 쇼크, 원&amp;middot;달러 급등 가능.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1037&quot; data-start=&quot;870&quot;&gt;&lt;b&gt;일괄 15 % (가능성 &amp;asymp; 60 %)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1037&quot; data-start=&quot;903&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;939&quot; data-start=&quot;903&quot;&gt;최소 투자&amp;middot;시장 개방 패키지로 일본과 &amp;lsquo;대등한&amp;rsquo; 수준 확보.&lt;/li&gt;
&lt;li data-end=&quot;987&quot; data-start=&quot;943&quot;&gt;자동차 관세(현 2.5 %)가 크게 오르지만, &amp;lsquo;25 % 최악&amp;rsquo;은 회피.&lt;/li&gt;
&lt;li data-end=&quot;1037&quot; data-start=&quot;991&quot;&gt;배터리&amp;middot;반도체 공장 미국 증설 가속, 현대&amp;middot;LG&amp;middot;삼성 미국 CAPEX 상향.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1171&quot; data-start=&quot;1039&quot;&gt;&lt;b&gt;차등&amp;middot;부분 인하 10&amp;ndash;12 % (가능성 &amp;asymp; 20 %)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1171&quot; data-start=&quot;1081&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1126&quot; data-start=&quot;1081&quot;&gt;LNG&amp;middot;방위산업 등 전략 협력 확대 + 대미 무역적자 축소 플랜 제시 시.&lt;/li&gt;
&lt;li data-end=&quot;1171&quot; data-start=&quot;1130&quot;&gt;농업시장 개방을 최소화하면서도 미국이 &amp;lsquo;승리 선언&amp;rsquo;할 수 있는 절충.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-end=&quot;1197&quot; data-start=&quot;1173&quot; data-ke-size=&quot;size20&quot;&gt;3. 산업&amp;middot;투자 영향 체크포인트&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1467&quot; data-start=&quot;1198&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1264&quot; data-start=&quot;1198&quot;&gt;&lt;b&gt;자동차&amp;middot;부품&lt;/b&gt;: 15 %라도 관세 인상분은 2026 년 실적에 반영. 현지 생산 비중 확대가 불가피.&lt;/li&gt;
&lt;li data-end=&quot;1335&quot; data-start=&quot;1265&quot;&gt;&lt;b&gt;배터리&amp;middot;반도체&lt;/b&gt;: 대규모 미국 투자 시 세액공제&amp;middot;보조금 수혜, 지방선거 전 &amp;lsquo;친제조업&amp;rsquo; 테마로 주가 모멘텀 가능.&lt;/li&gt;
&lt;li data-end=&quot;1401&quot; data-start=&quot;1336&quot;&gt;&lt;b&gt;철강&amp;middot;화학&lt;/b&gt;: 중국산 덤핑 대상 규제와 중첩돼 리스크 이중화, 보호무역 심화에 따른 구조조정 압력 주시.&lt;/li&gt;
&lt;li data-end=&quot;1467&quot; data-start=&quot;1402&quot;&gt;&lt;b&gt;외환시장&lt;/b&gt;: 협상 지연 시 &amp;lsquo;25 % 공포&amp;rsquo;로 원화 약세, 합의 발표 시 환율 급락(원화 강세) 가능성.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;1495&quot; data-start=&quot;1469&quot; data-ke-size=&quot;size20&quot;&gt;4. 개인&amp;middot;기업이 준비해야 할 전략&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1732&quot; data-start=&quot;1496&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1554&quot; data-start=&quot;1496&quot;&gt;&lt;b&gt;공장 이전 vs. 현지화&lt;/b&gt; &amp;ndash; 미국 내 가동률 70 % 이상 목표로 설비 증설 계획 점검.&lt;/li&gt;
&lt;li data-end=&quot;1601&quot; data-start=&quot;1555&quot;&gt;&lt;b&gt;부품&amp;middot;원자재 다변화&lt;/b&gt; &amp;ndash; 관세&amp;middot;환율 변동에 대응할 대체 공급망 확보.&lt;/li&gt;
&lt;li data-end=&quot;1667&quot; data-start=&quot;1602&quot;&gt;&lt;b&gt;투자 포트폴리오&lt;/b&gt; &amp;ndash; 단기 변동성에선 수출주보다 내수&amp;middot;리쇼어링 수혜주(건설&amp;middot;친환경 인프라) 비중 확대.&lt;/li&gt;
&lt;li data-end=&quot;1732&quot; data-start=&quot;1668&quot;&gt;&lt;b&gt;농산물&amp;middot;에너지 계약 재검토&lt;/b&gt; &amp;ndash; 옥수수&amp;middot;LNG 장기계약 조건 선점으로 협상 결과 반영 전 비용 절감.&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>재테크</category>
      <category>15퍼센트관세</category>
      <category>배터리투자</category>
      <category>자동차관세전망</category>
      <category>트럼프관세</category>
      <category>한국미국관세협상</category>
      <category>한미무역전망</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1934</guid>
      <comments>https://stack-queue.tistory.com/1934#entry1934comment</comments>
      <pubDate>Thu, 24 Jul 2025 07:40:19 +0900</pubDate>
    </item>
    <item>
      <title>일&amp;middot;미 관세 15 % 합의, 일본은 무엇을 얻고 무엇을 내줬나?</title>
      <link>https://stack-queue.tistory.com/1933</link>
      <description>&lt;p data-end=&quot;322&quot; data-start=&quot;110&quot; data-ke-size=&quot;size16&quot;&gt;미국과 일본이 7 월 22 일(현지) &amp;lsquo;상호관세율 15 %&amp;rsquo;에 전격 합의했습니다. 트럼프 행정부가 8 월 1 일부터 예고했던 25 % 일괄 관세를 10 %p 낮춘 대신, 일본은 &lt;b&gt;5 500 억 달러(약 760 조 원) 규모의 대미 투자&lt;/b&gt;와 ▸자동차&amp;middot;트럭 ▸쌀 ▸특정 농산물 시장 추가 개방을 약속했습니다.&lt;/p&gt;
&lt;h4 data-end=&quot;348&quot; data-start=&quot;324&quot; data-ke-size=&quot;size20&quot;&gt;1. 기존과 무엇이 달라졌을까?&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;795&quot; data-start=&quot;349&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;571&quot; data-start=&quot;349&quot;&gt;&lt;b&gt;관세 수준&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;571&quot; data-start=&quot;365&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;445&quot; data-start=&quot;365&quot;&gt;기존 시나리오: 25 % &amp;lsquo;대응 관세&amp;rsquo;가 8 월 1 일 발효 예정 &amp;rarr; 일본 자동차(현행 2.5 %)&amp;middot;전자&amp;middot;기계류는 공급망 충격 우려.&lt;/li&gt;
&lt;li data-end=&quot;571&quot; data-start=&quot;448&quot;&gt;합의 이후: 15 % 일괄 관세. 위협적 수준은 피했지만, WTO 기본세율(자동차 2.5 % 등)보다는 높아 &lt;b&gt;&amp;lsquo;절반의 승리&amp;rsquo;&lt;/b&gt;라는 평가.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;795&quot; data-start=&quot;573&quot;&gt;&lt;b&gt;대가와 조건&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;795&quot; data-start=&quot;590&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;628&quot; data-start=&quot;590&quot;&gt;일본의 5 500 억 달러 투자 패키지(에너지&amp;middot;반도체&amp;middot;인프라)&lt;/li&gt;
&lt;li data-end=&quot;661&quot; data-start=&quot;631&quot;&gt;미국산 쌀&amp;middot;쇠고기 수입 확대, 농업 로비 달래기&lt;/li&gt;
&lt;li data-end=&quot;795&quot; data-start=&quot;664&quot;&gt;일본산 승용차는 종전 2.5 %+12.5 % 추가해 총 15 % 관세 적용, 트럭&amp;middot;SUV도 15 % 상한 ■ 자동차 업계 마진 악화분은 일부 가격 전가될 전망.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;815&quot; data-start=&quot;797&quot; data-ke-size=&quot;size20&quot;&gt;2. 단기&amp;middot;중기 전망&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1349&quot; data-start=&quot;816&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1013&quot; data-start=&quot;816&quot;&gt;&lt;b&gt;일본 기업&amp;middot;시장&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1013&quot; data-start=&quot;837&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;931&quot; data-start=&quot;837&quot;&gt;호재: &amp;lsquo;관세 최악 시나리오&amp;rsquo; 사라지며 닛케이225 +3.5 %, 도요타 +14 % 급등.&lt;/li&gt;
&lt;li data-end=&quot;1013&quot; data-start=&quot;935&quot;&gt;리스크: 2.5 %&amp;rarr;15 %로 올라간 관세 자체는 비용 압박. 전기차&amp;middot;고부가가치 모델 집중, 북미 현지 생산 확대가 가속화될 것.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1216&quot; data-start=&quot;1015&quot;&gt;&lt;b&gt;한국 등 제3국&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1216&quot; data-start=&quot;1036&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1142&quot; data-start=&quot;1036&quot;&gt;한국엔 24 % 관세 경고장만 남은 상태. &amp;lsquo;일본 15 %&amp;rsquo;가 협상 마지노선으로 작용, 정부&amp;middot;기업 협상 부담 증가.&lt;/li&gt;
&lt;li data-end=&quot;1216&quot; data-start=&quot;1146&quot;&gt;미국 시장에서 &lt;b&gt;&amp;ldquo;동일 관세, 동일 조건&amp;rdquo;&lt;/b&gt; 논리가 확산되면 한국 자동차&amp;middot;부품&amp;middot;철강에도 15 % 수준 합의 압박 가능성.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1349&quot; data-start=&quot;1218&quot;&gt;&lt;b&gt;글로벌 교역 흐름&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1349&quot; data-start=&quot;1240&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1349&quot; data-start=&quot;1240&quot;&gt;트럼프 2기 &amp;lsquo;대응 관세&amp;rsquo; 정책이 개별 양자 딜로 풀리는 양상. &lt;b&gt;거래 비용은 확실히 상승&lt;/b&gt;해 가격 경쟁력이 수시로 흔들릴 수 있어, 중장기적으론 &lt;b&gt;현지화&amp;middot;공장 이전&lt;/b&gt;이 주요 전략.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-end=&quot;1374&quot; data-start=&quot;1351&quot; data-ke-size=&quot;size20&quot;&gt;3. 투자&amp;middot;비즈니스 체크포인트&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1611&quot; data-start=&quot;1375&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1472&quot; data-start=&quot;1375&quot;&gt;&lt;b&gt;일본 자동차&amp;middot;부품&lt;/b&gt;: 관세 부담이 남았음에도 &amp;lsquo;최악 피했다&amp;rsquo; 랠리 지속 가능. 단, 달러 강세&amp;middot;높은 원자재 가격이 이익률을 압박하므로 4 분기 실적 확인은 필수.&lt;/li&gt;
&lt;li data-end=&quot;1543&quot; data-start=&quot;1473&quot;&gt;&lt;b&gt;한국 경쟁 업종&lt;/b&gt;: 미국 관세 협상 진척 여부가 단기 주가 변수. 7&amp;ndash;8 월 협상 일정&amp;middot;백악관 발표 모니터링 필요.&lt;/li&gt;
&lt;li data-end=&quot;1611&quot; data-start=&quot;1544&quot;&gt;&lt;b&gt;원화&amp;middot;엔화&lt;/b&gt;: 무역 불확실성 완화로 엔화 강세 제한, 원&amp;middot;달러 환율은 한&amp;middot;미 협상 우려로 변동성 확대 예상.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>재테크</category>
      <category>5500억달러투자</category>
      <category>관세15퍼센트</category>
      <category>미일무역협상</category>
      <category>일본관세합의</category>
      <category>일본자동차관세</category>
      <category>트럼프정책</category>
      <category>한국수출전망</category>
      <author>스택큐힙리스트</author>
      <guid isPermaLink="true">https://stack-queue.tistory.com/1933</guid>
      <comments>https://stack-queue.tistory.com/1933#entry1933comment</comments>
      <pubDate>Thu, 24 Jul 2025 07:37:42 +0900</pubDate>
    </item>
  </channel>
</rss>