<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>bestprogram</title>
    <link>https://bestprogram.tistory.com/</link>
    <description>각종 프로그래밍 정보를 다루는 블로그입니다.</description>
    <language>ko</language>
    <pubDate>Mon, 20 Jul 2026 13:09:55 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>bestprogram</managingEditor>
    <item>
      <title>하위 프로세스 호출을 텍스트 파일로 전송하려면 어떻게 해야 합니까?</title>
      <link>https://bestprogram.tistory.com/1351</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;하위 프로세스 호출을 텍스트 파일로 전송하려면 어떻게 해야 합니까?&lt;/font&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;subprocess.call([&quot;/home/myuser/run.sh&quot;, &quot;/tmp/ad_xml&quot;,  &quot;/tmp/video_xml&quot;])
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;지금 제가 실행하고 있는 스크립트가 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;실행하면 run.sh 에 인쇄물이 있기 때문에 이 선에 도달하면 인쇄가 시작됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 파일을 텍스트 파일로 복사하려면 어떻게 해야 합니까? (가능한 경우 인쇄도 가능)&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;출력을 파일에 쓰려면 다음의 stdout-argument를 사용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;subprocess.call&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;둘 중 하나가 필요합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;None&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(기본값, stdout은 상위 스크립트에서 상속됨)&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;subprocess.PIPE&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(하나의 명령/프로세스에서 다른 명령/프로세스로 파이프를 연결하도록 allows)&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;파일 개체 또는 파일 설명자(파일에 출력을 기록할 것)&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;파일을 열어서 다음과 같은 것이 필요합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;open&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;개체 또는 파일 기술자 정수를 전달합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;call&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;f = open(&quot;blah.txt&quot;, &quot;w&quot;)
subprocess.call([&quot;/home/myuser/run.sh&quot;, &quot;/tmp/ad_xml&quot;,  &quot;/tmp/video_xml&quot;], stdout=f)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;소켓과 같은 유효한 파일과 같은 객체가 작동할 것이라고 생각합니다( :). 하지만 시도해 본 적은 없습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/users/89806/marcog&quot; papago-id=&quot;7-1&quot;&gt;marcog&lt;/a&gt;에서 stderr도 재연결할 수 있다고 언급한 것처럼 stdout과 동일한 위치로 재연결할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;stderr=subprocess.STDOUT&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;. 위에 언급된 값 중 어느 것도 작동하므로 다른 위치로 리디렉션할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;에 대한 옵션&lt;/font&gt;&lt;/font&gt;&lt;code&gt;popen&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용할 수 있는&lt;/font&gt;&lt;/font&gt;&lt;code&gt;call&lt;/code&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;args, 
bufsize=0, 
executable=None, 
stdin=None, 
stdout=None, 
stderr=None, 
preexec_fn=None, 
close_fds=False, 
shell=False, 
cwd=None, 
env=None, 
universal_newlines=False, 
startupinfo=None, 
creationflags=0
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서...&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;myoutput = open('somefile.txt', 'w')
subprocess.call([&quot;/home/myuser/run.sh&quot;, &quot;/tmp/ad_xml&quot;,  &quot;/tmp/video_xml&quot;], stdout=myoutput)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러면 당신은 당신이 원하는 것을 할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;myoutput&lt;/code&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 이와 같이 파이프 출력에 가까운 작업을 수행할 수도 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;dmesg | grep hda
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;p1 = Popen([&quot;dmesg&quot;], stdout=PIPE)
p2 = Popen([&quot;grep&quot;, &quot;hda&quot;], stdin=p1.stdout, stdout=PIPE)
output = p2.communicate()[0]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://docs.python.org/library/subprocess.html#subprocess.Popen&quot; rel=&quot;noreferrer&quot; papago-id=&quot;21-1&quot;&gt;파이썬 매뉴얼 페이지&lt;/a&gt;에는 사랑스럽고 유용한 정보가 많이 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/4856583/how-do-i-pipe-a-subprocess-call-to-a-text-file&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>python</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1351</guid>
      <comments>https://bestprogram.tistory.com/1351#entry1351comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:56:05 +0900</pubDate>
    </item>
    <item>
      <title>서비스 방법을 만들 때 module.service와 module.factory의 차이점은 무엇입니까?</title>
      <link>https://bestprogram.tistory.com/1350</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;서비스 방법을 만들 때 module.service와 module.factory의 차이점은 무엇입니까?&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;무엇이 가장 좋은 방법이고 무엇을 사용해야 하는지 모르겠습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;아래 두 가지 방법의 차이점은 무엇입니까?&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;module.service(..);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;module.factory(..);
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Pawel Kozlowski의 훌륭한 구글 그룹 게시물이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://groups.google.com/forum/#!msg/angular/hVrkvaHGOfc/idEaEctreMYJ&quot; papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;https://groups.google.com/forum/ #!msg/angular/hVrkvaHGOfc/idEaEectreMYJ&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Powel에서 인용:&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;provide, provider, provide.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;공장과 provide 달러.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;서비스는 모두 객체 인스턴스를 생성하기 위한 Blueprint/명령이라는 점에서 어느 정도 동일합니다(이러한 인스턴스는 공동작업자에게 주입될 준비가 됨).&lt;/font&gt;&lt;/p&gt; 
 &lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;$provide.provider는 청사진을 등록하는 가장 대중적인 방법으로 복잡한 작성 기능과 구성 옵션을 가질 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
 &lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;달러 provide.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;factory는 $ provide.provider를 단순화한 버전으로, 구성 옵션을 지원할 필요는 없지만 보다 정교한 작성 로직을 원하는 경우입니다.&lt;/font&gt;&lt;/p&gt; 
 &lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;달러 provide.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;service는 전체 생성 로직이 생성자 함수를 호출하는 것으로 요약되는 경우를 위한 것입니다.&lt;/font&gt;&lt;/p&gt; 
 &lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 구성 로직의 복잡성에 따라 $provider.provider, $provider 중 하나를 선택합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;공장과 provide 달러.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;서비스 하지만 결국 당신이 얻게 될 것은 새로운 사례입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음은 (스레드에서) 시연할 동반 피들입니다. http://jsfiddle.net/pkozlowski_opensource/PxdSP/14/&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 코드는:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var myApp = angular.module('myApp', []);

//service style, probably the simplest one
myApp.service('helloWorldFromService', function() {
    this.sayHello = function() {
        return &quot;Hello, World!&quot;
    };
});

//factory style, more involved but more sophisticated
myApp.factory('helloWorldFromFactory', function() {
    return {
        sayHello: function() {
            return &quot;Hello, World!&quot;
        }
    };
});

//provider style, full blown, configurable version     
myApp.provider('helloWorld', function() {

    this.name = 'Default';

    this.$get = function() {
        var name = this.name;
        return {
            sayHello: function() {
                return &quot;Hello, &quot; + name + &quot;!&quot;
            }
        }
    };

    this.setName = function(name) {
        this.name = name;
    };
});

//hey, we can configure a provider!            
myApp.config(function(helloWorldProvider){
    helloWorldProvider.setName('World');
});


function MyCtrl($scope, helloWorld, helloWorldFromFactory, helloWorldFromService) {

    $scope.hellos = [
        helloWorld.sayHello(),
        helloWorldFromFactory.sayHello(),
        helloWorldFromService.sayHello()];
}
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음 서비스를 고려해 봅니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;angular.module(&quot;myModule&quot;, [])
.service(&quot;thingCountingService&quot;, function() {
    var thingCount = 0;
    this.countThing = function() { thingCount++; }
    this.getNumThings = function() { return thingCount; }
});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다양한 컨트롤러, 뷰 등이 모두 하나의 일반적인 사물 카운트에 기여하고자 하는 앱이 있다면 위의 서비스는 효과가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 각 앱이 자신만의 집계를 유지하기를 원한다면 어떻게 해야 할까요?&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 경우, 싱글톤 서비스는 모든 서비스를 추적할 수 있기 때문에 작동하지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 공장에서는 새 카운터를 시작할 때마다 새 서비스를 생성할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;angular.module(&quot;myModule&quot;, [])
.factory(&quot;thingCountingServiceFactory&quot;, function() {
    var thingCount = 0;
    this.countThing = function() { thingCount++; }
    this.getNumThings = function() { return thingCount; }
});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;위의 공장으로 당신은 전화를 할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;new thingCountingServiceFactory()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언제든지 새것을 사세요.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;thingCountingService&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;20&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;로 설정.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;0&lt;/code&gt;&lt;/p&gt;&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/16565105/when-creating-service-method-whats-the-difference-between-module-service-and-mo&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>angularJS</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1350</guid>
      <comments>https://bestprogram.tistory.com/1350#entry1350comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:55:59 +0900</pubDate>
    </item>
    <item>
      <title>for 루프에서 팬더 데이터 프레임의 행을 추가하는 방법?</title>
      <link>https://bestprogram.tistory.com/1349</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;for 루프에서 팬더 데이터 프레임의 행을 추가하는 방법?&lt;/font&gt;&lt;/h2&gt;
&lt;div&gt; 
 &lt;aside class=&quot;s-notice s-notice__info post-notice js-post-notice mb16&quot; role=&quot;status&quot;&gt; 
  &lt;div class=&quot;d-flex fd-column fw-nowrap&quot;&gt; 
   &lt;div class=&quot;d-flex fw-nowrap&quot;&gt; 
    &lt;div class=&quot;flex--item wmn0 fl1 lh-lg&quot;&gt; 
     &lt;div class=&quot;flex--item fl1 lh-lg&quot;&gt; 
      &lt;div papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;
&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;b papago-id=&quot;1-1&quot;&gt;이 질문에는 이미 다음&lt;/b&gt;과 같은 &lt;b papago-id=&quot;1-1&quot;&gt;답변이 있습니다&lt;/b&gt;.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;      &lt;/font&gt;&lt;/div&gt; 
     &lt;/div&gt; 
    &lt;/div&gt; 
   &lt;/div&gt; 
   &lt;div class=&quot;flex--item mb0 mt4&quot;&gt; 
    &lt;a href=&quot;/questions/10715965/create-a-pandas-dataframe-by-appending-one-row-at-a-time&quot; dir=&quot;ltr&quot; papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;한 번에 하나의 행을 추가하여 Pandas Data Frame 만들기&lt;/font&gt;&lt;/a&gt; 
    &lt;span class=&quot;question-originals-answer-count&quot; papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(32개 답변)&lt;/font&gt;&lt;/span&gt; 
   &lt;/div&gt; 
   &lt;div class=&quot;flex--item mb0 mt8&quot; papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;
&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;닫힘&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;span class=&quot;relativetime&quot; papago-id=&quot;4-1&quot; title=&quot;2023-04-28 14:27:08Z&quot; papago-attr-id=&quot;1&quot;&gt;4개월 전&lt;/span&gt;에.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;   &lt;/font&gt;&lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/aside&gt; 
&lt;/div&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;루프에 대해 다음과 같은 것이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;for i in links:
     data = urllib2.urlopen(str(i)).read()
     data = json.loads(data)
     data = pd.DataFrame(data.items())
     data = data.transpose()
     data.columns = data.iloc[0]
     data = data.drop(data.index[[0]])
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이렇게 생성된 각 데이터 프레임에는 대부분의 열이 다른 열과 공통적으로 있지만 모든 열이 있는 것은 아닙니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;게다가, 그들은 모두 한 줄밖에 가지고 있지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;for 루프에서 생성된 각 데이터 프레임에서 다른 모든 열과 각 행을 데이터 프레임에 추가해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;나는 판다들이 컨카테네이트 혹은 유사한 것들을 시도해 보았지만 아무것도 효과가 없는 것 같았습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;감 잡히는 게 없어요?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;감사해요.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;데이터가 다음과 같다고 가정합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import pandas as pd
import numpy as np

np.random.seed(2015)
df = pd.DataFrame([])
for i in range(5):
    data = dict(zip(np.random.choice(10, replace=False, size=5),
                    np.random.randint(10, size=5)))
    data = pd.DataFrame(data.items())
    data = data.transpose()
    data.columns = data.iloc[0]
    data = data.drop(data.index[[0]])
    df = df.append(data)
print('{}\n'.format(df))
# 0   0   1   2   3   4   5   6   7   8   9
# 1   6 NaN NaN   8   5 NaN NaN   7   0 NaN
# 1 NaN   9   6 NaN   2 NaN   1 NaN NaN   2
# 1 NaN   2   2   1   2 NaN   1 NaN NaN NaN
# 1   6 NaN   6 NaN   4   4   0 NaN NaN NaN
# 1 NaN   9 NaN   9 NaN   7   1   9 NaN NaN
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그 다음에 그것을 대체할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;np.random.seed(2015)
data = []
for i in range(5):
    data.append(dict(zip(np.random.choice(10, replace=False, size=5),
                         np.random.randint(10, size=5))))
df = pd.DataFrame(data)
print(df)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;즉, 각 행에 대해 새 DataFrame을 형성하지 마십시오.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;대신 명령어 목록에 있는 모든 데이터를 수집한 다음 호출합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;df = pd.DataFrame(data)&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;마지막에 한 번, 고리 밖에서.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;통화할 때마다&lt;/font&gt;&lt;/font&gt;&lt;code&gt;df.append&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;는 하나의 추가 행으로 새 DataFrame을 위한 공간을 할당하고, 원래 DataFrame의 모든 데이터를 새 DataFrame으로 복사한 다음 새 행으로 데이터를 복사해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;모든 할당과 복사가 전화를 걸게 합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;df.append&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;매우 비효율적으로 순환하고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;복사 시간 비용은 행 수에 따라 &lt;a href=&quot;http://stackoverflow.com/a/36489724/190597&quot; papago-id=&quot;14-1&quot;&gt;4차적으로 증가&lt;/a&gt;합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Call-DataFrame 코드는 쓰기가 더 쉬울 뿐만 아니라 성능도 훨씬 향상됩니다. 복사 시간 비용은 행 수에 따라 선형적으로 증가합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;루프에서 행을 추가할 수 있는 이유는 2가지, 1. 기존의 df에 추가할 수 있고 2. 새로운 df를 생성할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;새로운 df를 만들려면 데이터를 목록으로 만든 다음 데이터 프레임을 만들어야 한다는 것이 잘 문서화되어 있다고 생각됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;cols = ['c1', 'c2', 'c3']
lst = []
for a in range(2):
    lst.append([1, 2, 3])
df1 = pd.DataFrame(lst, columns=cols)
df1
Out[3]: 
   c1  c2  c3
0   1   2   3
1   1   2   3
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또는 인덱스를 사용하여 데이터 프레임을 생성한 후 추가합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;cols = ['c1', 'c2', 'c3']
df2 = pd.DataFrame(columns=cols, index=range(2))
for a in range(2):
    df2.loc[a].c1 = 4
    df2.loc[a].c2 = 5
    df2.loc[a].c3 = 6
df2
Out[4]: 
  c1 c2 c3
0  4  5  6
1  4  5  6
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기존 데이터 프레임에 추가하려면 위의 방법 중 하나를 사용한 다음 df를 함께 추가할 수 있습니다(인덱스 포함 여부).&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;df3 = df2.append(df1, ignore_index=True)
df3
Out[6]: 
  c1 c2 c3
0  4  5  6
1  4  5  6
2  1  2  3
3  1  2  3
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또는 위의 답변과 같이 사전 항목 목록을 만들어 추가할 수도 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;lst_dict = []
for a in range(2):
    lst_dict.append({'c1':2, 'c2':2, 'c3': 3})
df4 = df1.append(lst_dict)
df4
Out[7]: 
   c1  c2  c3
0   1   2   3
1   1   2   3
0   2   2   3
1   2   2   3
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;dict(zip(cols, vals)) 사용&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;lst_dict = []
for a in range(2):
    vals = [7, 8, 9]
    lst_dict.append(dict(zip(cols, vals)))
df5 = df1.append(lst_dict)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;아래 의견에서 나온 아이디어를 포함하면 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Pandas는 데이터 프레임에 추가할 수 있는 효과적인 방법을 가지고 있는 것으로 드러났습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;pre&gt;&lt;code&gt;df.loc[ len(df) ] = [new, row, of, data] 
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(이것은) 제자리에 있는 데이터 프레임의 끝까지 &quot;append&quot;됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;– 데미스 3월 22일 15시 32분&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt;&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;보다 콤팩트하고 효율적인 방법은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;cols = ['frame', 'count']
N = 4
dat = pd.DataFrame(columns = cols)
for i in range(N):

    dat = dat.append({'frame': str(i), 'count':i},ignore_index=True)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;출력은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; dat
   frame count
0     0     0
1     1     1
2     2     2
3     3     3
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;임시 빈 데이터 프레임을 사용하여 for loop에 데이터 프레임을 만들었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;for loop의 모든 반복에 대해 새로운 데이터 프레임이 생성되어 이전 반복의 내용을 덮어씁니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 데이터 프레임의 내용을 이미 생성된 빈 데이터 프레임으로 이동해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것은 저것만큼 간단합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;아래와 같이 .append 기능만 사용하면 됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;temp_df = pd.DataFrame() #Temporary empty dataframe
for sent in Sentences:
    New_df = pd.DataFrame({'words': sent.words}) #Creates a new dataframe and contains tokenized words of input sentences
    temp_df = temp_df.append(New_df, ignore_index=True) #Moving the contents of newly created dataframe to the temporary dataframe
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;28&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;for 루프 외부에서 임시 데이터 프레임의 내용을 마스터 데이터 프레임에 복사한 후 필요 없는 경우 임시 데이터 프레임을 삭제할 수 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;29&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;먼저 열 이름이 있는 빈 DataFrame을 만든 다음 for 루프 내부에서 추가할 데이터가 있는 사전(행)을 정의해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;df = pd.DataFrame(columns=['A'])
for i in range(5):
    df = df.append({'A': i}, ignore_index=True)
df
   A
0  0
1  1
2  2
3  3
4  4
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;30&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;열이 더 많은 행을 추가하려는 경우 코드는 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;df = pd.DataFrame(columns=['A','B','C'])
for i in range(5):
    df = df.append({'A': i,
                    'B': i * 2,
                    'C': i * 3,
                   }
                   ,ignore_index=True
                  )
df
    A   B   C
0   0   0   0
1   1   2   3
2   2   4   6
3   3   6   9
4   4   8   12
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;a href=&quot;https://pandas.pydata.org/pandas-docs/version/0.23.1/generated/pandas.DataFrame.append.html&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;31&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;원천&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p papago-id=&quot;32&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/31674557/how-to-append-rows-in-a-pandas-dataframe-in-a-for-loop&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>DataFrame</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1349</guid>
      <comments>https://bestprogram.tistory.com/1349#entry1349comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:55:51 +0900</pubDate>
    </item>
    <item>
      <title>nodejs의 폴더 아래에 있는 *. html 확장명으로 파일 찾기</title>
      <link>https://bestprogram.tistory.com/1348</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;nodejs의 폴더 아래에 있는 *. html 확장명으로 파일 찾기&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;src 폴더의 모든 *.html 파일과 nodejs를 사용하는 모든 하위 폴더를 찾고 싶습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것을 하는 가장 좋은 방법은 무엇입니까?&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var folder = '/project1/src';
var extension = 'html';
var cb = function(err, results) {
   // results is an array of the files with path relative to the folder
   console.log(results);

}
// This function is what I am looking for. It has to recursively traverse all sub folders. 
findFiles(folder, extension, cb);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;많은 개발자들이 훌륭하고 검증된 솔루션을 가져야 하고 직접 작성하는 것보다 그것을 사용하는 것이 더 낫다고 생각합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;node.js, 재귀적 단순 함수:&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-js prettyprint-override&quot;&gt;&lt;code&gt;var path = require('path'),
fs = require('fs');

function fromDir(startPath, filter) {

    //console.log('Starting from dir '+startPath+'/');

    if (!fs.existsSync(startPath)) {
        console.log(&quot;no dir &quot;, startPath);
        return;
    }

    var files = fs.readdirSync(startPath);
    for (var i = 0; i &amp;lt; files.length; i++) {
        var filename = path.join(startPath, files[i]);
        var stat = fs.lstatSync(filename);
        if (stat.isDirectory()) {
            fromDir(filename, filter); //recurse
        } else if (filename.endsWith(filter)) {
            console.log('-- found: ', filename);
        };
    };
};

fromDir('../LiteScript', '.html');
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;화려해지고 싶다면 RegExp를 추가하고, 일반적인 것으로 만들기 위해 콜백을 추가합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-js prettyprint-override&quot;&gt;&lt;code&gt;var path = require('path'),
fs = require('fs');

function fromDir(startPath, filter, callback) {

    //console.log('Starting from dir '+startPath+'/');

    if (!fs.existsSync(startPath)) {
        console.log(&quot;no dir &quot;, startPath);
        return;
    }

    var files = fs.readdirSync(startPath);
    for (var i = 0; i &amp;lt; files.length; i++) {
        var filename = path.join(startPath, files[i]);
        var stat = fs.lstatSync(filename);
        if (stat.isDirectory()) {
            fromDir(filename, filter, callback); //recurse
        } else if (filter.test(filename)) callback(filename);
    };
};

fromDir('../LiteScript', /\.html$/, function(filename) {
    console.log('-- found: ', filename);
});
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;나는 &lt;a href=&quot;https://www.npmjs.com/package/glob&quot; rel=&quot;noreferrer&quot; papago-id=&quot;5-1&quot;&gt;glob&lt;/a&gt; 패키지를 사용하는 것을 좋아합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;const glob = require('glob');

glob(__dirname + '/**/*.html', {}, (err, files)=&amp;gt;{
  console.log(files)
})
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;뭐, 잠깐만!&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;좋아요, 다른 사람들에게도 이게 더 말이 되나 봐요.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;[&lt;em papago-id=&quot;7-1&quot;&gt;nodejs 7&lt;/em&gt; mind you]&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;const fs = import('fs');
const dirCont = fs.readdirSync( dir );
const files = dirCont.filter( ( elm ) =&amp;gt; elm.match(/.*\.(html?)/ig));
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;regex로 무엇을 하든지 기본값 등과 함께 함수에서 설정한 인수로 만듭니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;루시오의 코드를 바탕으로 모듈을 만들었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;특정 확장명을 가진 모든 파일이 하나 아래에 있는 어웨이를 반환합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;필요한 사람이 있으면 여기에 올려주세요.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var path = require('path'), 
    fs   = require('fs');


/**
 * Find all files recursively in specific folder with specific extension, e.g:
 * findFilesInDir('./project/src', '.html') ==&amp;gt; ['./project/src/a.html','./project/src/build/index.html']
 * @param  {String} startPath    Path relative to this file or other file which requires this files
 * @param  {String} filter       Extension name, e.g: '.html'
 * @return {Array}               Result files with path string in an array
 */
function findFilesInDir(startPath,filter){

    var results = [];

    if (!fs.existsSync(startPath)){
        console.log(&quot;no dir &quot;,startPath);
        return;
    }

    var files=fs.readdirSync(startPath);
    for(var i=0;i&amp;lt;files.length;i++){
        var filename=path.join(startPath,files[i]);
        var stat = fs.lstatSync(filename);
        if (stat.isDirectory()){
            results = results.concat(findFilesInDir(filename,filter)); //recurse
        }
        else if (filename.indexOf(filter)&amp;gt;=0) {
            console.log('-- found: ',filename);
            results.push(filename);
        }
    }
    return results;
}

module.exports = findFilesInDir;
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;10-1&quot;&gt;파일하운드&lt;/strong&gt;를 사용하여 이 작업을 수행할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어, /tmp에서 모든 .html 파일을 찾습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;const Filehound = require('filehound');

Filehound.create()
  .ext('html')
  .paths(&quot;/tmp&quot;)
  .find((err, htmlFiles) =&amp;gt; {
    if (err) return console.error(&quot;handle err&quot;, err);

    console.log(htmlFiles);
});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;자세한 정보(및 예)는 문서: https://github.com/nspragg/filehound 를 참조하십시오.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;13-0&quot;&gt;면책&lt;/strong&gt; 사항:&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 작가입니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;위의 답변들을 살펴보았고, 저에게 적합한 이 버전을 조합했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;function getFilesFromPath(path, extension) {
    let files = fs.readdirSync( path );
    return files.filter( file =&amp;gt; file.match(new RegExp(`.*\.(${extension})`, 'ig')));
}

console.log(getFilesFromPath(&quot;./testdata&quot;, &quot;.txt&quot;));
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 테스트는 경로의 폴더에 있는 파일에서 파일 이름 배열을 반환합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;./testdata&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 중&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 노드 버전 8.11.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;3에서 작업 중입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음 코드는 ./(적절하게 변경) 내부에서 재귀적 검색을 수행하고 .html로 끝나는 절대 파일 이름 배열을 반환합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var fs = require('fs');
var path = require('path');

var searchRecursive = function(dir, pattern) {
  // This is where we store pattern matches of all files inside the directory
  var results = [];

  // Read contents of directory
  fs.readdirSync(dir).forEach(function (dirInner) {
    // Obtain absolute path
    dirInner = path.resolve(dir, dirInner);

    // Get stats to determine if path is a directory or a file
    var stat = fs.statSync(dirInner);

    // If path is a directory, scan it and combine results
    if (stat.isDirectory()) {
      results = results.concat(searchRecursive(dirInner, pattern));
    }

    // If path is a file and ends with pattern then push it onto results
    if (stat.isFile() &amp;amp;&amp;amp; dirInner.endsWith(pattern)) {
      results.push(dirInner);
    }
  });

  return results;
};

var files = searchRecursive('./', '.html'); // replace dir and pattern
                                                // as you seem fit

console.log(files);
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;OS 도움말을 이용하시면 됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;크로스 플랫폼 솔루션은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;1. 벨로우 기능은 다음을 사용합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ls&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;dir&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 재귀적으로 검색하지는 않지만 상대적인 경로를 가지고 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var exec = require('child_process').exec;
function findFiles(folder,extension,cb){
    var command = &quot;&quot;;
    if(/^win/.test(process.platform)){
        command = &quot;dir /B &quot;+folder+&quot;\\*.&quot;+extension;
    }else{
        command = &quot;ls -1 &quot;+folder+&quot;/*.&quot;+extension;
    }
    exec(command,function(err,stdout,stderr){
        if(err)
            return cb(err,null);
        //get rid of \r from windows
        stdout = stdout.replace(/\r/g,&quot;&quot;);
        var files = stdout.split(&quot;\n&quot;);
        //remove last entry because it is empty
        files.splice(-1,1);
        cb(err,files);
    });
}

findFiles(&quot;folderName&quot;,&quot;html&quot;,function(err,files){
    console.log(&quot;files:&quot;,files);
})
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;2. 벨로우 기능은 다음을 사용합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;find&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;dir&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 검색은 재귀적이지만 윈도우에는 절대 경로가 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var exec = require('child_process').exec;
function findFiles(folder,extension,cb){
    var command = &quot;&quot;;
    if(/^win/.test(process.platform)){
        command = &quot;dir /B /s &quot;+folder+&quot;\\*.&quot;+extension;
    }else{
        command = 'find '+folder+' -name &quot;*.'+extension+'&quot;'
    }
    exec(command,function(err,stdout,stderr){
        if(err)
            return cb(err,null);
        //get rid of \r from windows
        stdout = stdout.replace(/\r/g,&quot;&quot;);
        var files = stdout.split(&quot;\n&quot;);
        //remove last entry because it is empty
        files.splice(-1,1);
        cb(err,files);
    });
}

findFiles(&quot;folder&quot;,&quot;html&quot;,function(err,files){
    console.log(&quot;files:&quot;,files);
})
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;평판 때문에 코멘트를 추가할 수는 없지만, 다음 사항에 유의하십시오.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;fs.readdir 또는 node-glob을 사용하여 500,000개의 파일로 구성된 폴더에서 와일드카드 파일 집합을 찾으려면 ~2초가 걸렸습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;DIR과 함께 exec을 사용하면 ~0.05초(재귀적이 아님) 또는 ~0.45초(재귀적)가 소요됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;(단일 디렉토리에서 패턴과 일치하는 ~14개의 파일을 찾고 있었습니다.)&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;지금까지 저는 효율성을 위해 낮은 수준의 OS 와일드카드 검색을 사용하는 nodejs 구현을 찾지 못했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 위의 DIR/ls 기반 코드는 효율성 측면에서 윈도우에서 훌륭하게 작동합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 linux find는 큰 디렉토리에 대해 &lt;a href=&quot;https://www.unix.com/shell-programming-and-scripting/72719-fastest-way-list-file-folder-containing-800-000-files-using-wildcard.html&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;27-1&quot;&gt;매우 느릴 것&lt;/a&gt;입니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;28&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://www.npmjs.com/package/file-regex&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;28-1&quot;&gt;file-regex&lt;/a&gt;를 살펴봅니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;let findFiles = require('file-regex')
let pattern = '\.js'

findFiles(__dirname, pattern, (err, files) =&amp;gt; {  
   console.log(files);
})
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;29&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;위의 이 토막글은 모든 것을 인쇄할 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;js&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;30&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;현재 디렉터리에 있는 파일을(를)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;h1 papago-id=&quot;31&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;설치하다&lt;/font&gt;&lt;/h1&gt; 
&lt;p papago-id=&quot;32&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신은 이 패키지 &lt;a href=&quot;https://www.npmjs.com/package/walk-sync&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;32-1&quot;&gt;워크싱크&lt;/a&gt;를 설치할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;yarn add walk-sync
&lt;/code&gt;&lt;/pre&gt; 
&lt;h1 papago-id=&quot;33&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용.&lt;/font&gt;&lt;/h1&gt; 
&lt;pre&gt;&lt;code&gt;const walkSync = require(&quot;walk-sync&quot;);
const paths = walkSync(&quot;./project1/src&quot;, {globs: [&quot;**/*.html&quot;]});
console.log(paths);   //all html file path array
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;34&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;나의 2펜스, for-loop 대신에 지도를 사용하는 것.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var path = require('path'), fs = require('fs');

var findFiles = function(folder, pattern = /.*/, callback) {
  var flist = [];

  fs.readdirSync(folder).map(function(e){ 
    var fname = path.join(folder, e);
    var fstat = fs.lstatSync(fname);
    if (fstat.isDirectory()) {
      // don't want to produce a new array with concat
      Array.prototype.push.apply(flist, findFiles(fname, pattern, callback)); 
    } else {
      if (pattern.test(fname)) {
        flist.push(fname);
        if (callback) {
          callback(fname);
        }
      }
    }
  });
  return flist;
};

// HTML files   
var html_files = findFiles(myPath, /\.html$/, function(o) { console.log('look what we have found : ' + o} );

// All files
var all_files = findFiles(myPath);
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;35&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;수많은 가능한 솔루션에 빌드 스크립트 목적에 적합한 &lt;a href=&quot;https://github.com/szwacz/fs-jetpack&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;35-1&quot;&gt;fs-jetpack&lt;/a&gt; 라이브러리를 추가할 수도 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-js prettyprint-override&quot;&gt;&lt;code&gt;const jetpack = require(&quot;fs-jetpack&quot;);

// the sync way
const files = jetpack.find(&quot;my_project&quot;, { matching: &quot;*.html&quot; });
console.log(files);

// or the async way
jetpack.findAsync(&quot;my_project&quot;, { matching: &quot;*.html&quot; }).then(files =&amp;gt; {
  console.log(files);
});

&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;36&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;방금 알게 되었는데, 당신은 syncfs 메서드를 사용하고 있어서 응용 프로그램을 차단할 수 있습니다. 여기 &lt;strong papago-id=&quot;36-1&quot;&gt;비동기&lt;/strong&gt;와 &lt;strong papago-id=&quot;36-3&quot;&gt;q&lt;/strong&gt;를 사용하는 약속 기반 비동기 방식이 있습니다. 다음 코드를 myfile.js라는 파일에 넣었다고 가정하면 START=/myfolder FILTER=&quot;.jpg&quot; 노드 myfile.js로 실행할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Q = require(&quot;q&quot;)
async = require(&quot;async&quot;)
path = require(&quot;path&quot;)
fs = require(&quot;fs&quot;)

function findFiles(startPath, filter, files){
    var deferred;
    deferred = Q.defer(); //main deferred

    //read directory
    Q.nfcall(fs.readdir, startPath).then(function(list) {
        var ideferred = Q.defer(); //inner deferred for resolve of async each
        //async crawling through dir
        async.each(list, function(item, done) {

            //stat current item in dirlist
            return Q.nfcall(fs.stat, path.join(startPath, item))
                .then(function(stat) {
                    //check if item is a directory
                    if (stat.isDirectory()) {
                        //recursive!! find files in subdirectory
                        return findFiles(path.join(startPath, item), filter, files)
                            .catch(function(error){
                                console.log(&quot;could not read path: &quot; + error.toString());
                            })
                            .finally(function() {
                                //resolve async job after promise of subprocess of finding files has been resolved
                                return done();
                             });
                    //check if item is a file, that matches the filter and add it to files array
                    } else if (item.indexOf(filter) &amp;gt;= 0) {
                        files.push(path.join(startPath, item));
                        return done();
                    //file is no directory and does not match the filefilter -&amp;gt; don't do anything
                    } else {
                        return done();
                    }
                })
                .catch(function(error){
                    ideferred.reject(&quot;Could not stat: &quot; + error.toString());
                });
        }, function() {
            return ideferred.resolve(); //async each has finished, so resolve inner deferred
        });
        return ideferred.promise;
    }).then(function() {
        //here you could do anything with the files of this recursion step (otherwise you would only need ONE deferred)
        return deferred.resolve(files); //resolve main deferred
    }).catch(function(error) {
        deferred.reject(&quot;Could not read dir: &quot; + error.toString());
        return
    });
    return deferred.promise;
}


findFiles(process.env.START, process.env.FILTER, [])
    .then(function(files){
        console.log(files);
    })
    .catch(function(error){
        console.log(&quot;Problem finding files: &quot; + error);
})
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;37&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 코드를 원하는 작업에 맞게 편집할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;노드가 다음 줄의 코드를 계속 실행하기 전에 결과가 반환되도록 nodejs IO 작업에 동기화 버전을 사용했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;const fs = require('fs');
const path = require('path');
    
// Path to the directory(folder) to look into
const dirPath = path.resolve(`${__dirname}../../../../../tests_output`);
        
// Read all files with .html extension in the specified folder above
const filesList = fs.readdirSync(dirPath, (err, files) =&amp;gt; files.filter((e) =&amp;gt; path.extname(e).toLowerCase() === '.html'));
        
// Read the content of the first file with .txt extension in the folder
const data = fs.readFileSync(path.resolve(`${__dirname}../../../../../tests_output/${filesList[0]}`), 'utf8');

res.writeHead(200, { 'Content-Type': 'text/html' });
res.write(data);
return res.end();
&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;&lt;em&gt;&lt;strong papago-id=&quot;38&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;도서관의 &lt;a href=&quot;https://www.npmjs.com/package/recursive-readdir&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;38-1&quot;&gt;재귀적&lt;/a&gt; 판독기를 사용하는 것을 추천합니다.&lt;/font&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/h3&gt; 
&lt;hr&gt; 
&lt;p papago-id=&quot;39&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;html &lt;em papago-id=&quot;39-1&quot;&gt;파일&lt;/em&gt; 뿐만 아니라 다른 파일 형식을 검색할 수 있는 기능도 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;40&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신은 &lt;a href=&quot;https://github.com/jergason/recursive-readdir#usage&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;40-1&quot;&gt;여기&lt;/a&gt;서 도멘테온을 읽을 수 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;41&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;오래된 게시물이지만 ES6는 이제 이것을 즉시 처리합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;includes&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;42&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;방법.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;let files = ['file.json', 'other.js'];

let jsonFiles = files.filter(file =&amp;gt; file.includes('.json'));

console.log(&quot;Files: &quot;, jsonFiles) ==&amp;gt; //file.json
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;43&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/25460574/find-files-by-extension-html-under-a-folder-in-nodejs&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>Node.js</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1348</guid>
      <comments>https://bestprogram.tistory.com/1348#entry1348comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:55:42 +0900</pubDate>
    </item>
    <item>
      <title>&amp;quot;너무 많은 데이터베이스 연결&amp;quot;의 원인</title>
      <link>https://bestprogram.tistory.com/1347</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;너무 많은 데이터베이스 연결&quot;의 원인&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내 워드프레스 웹사이트에 &quot;데이터베이스 연결 설정 오류&quot; 마사지가 발생했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;호스트는 &quot;사용자&quot;가 한 번에 열려 있는 데이터베이스 연결이 너무 많기 때문이라고 알려주었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이로 인해 추가 연결을 하는 동안 오류가 발생하여 마사지가 수행되었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;교착 상태에 빠진 데이터베이스 연결을 제거하여 이 문제를 해결했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;임시 테이블에 데이터를 복사하는 연결이 여러 개 있었지만, 하나의 업데이트를 기다리는 대규모 조회 집합으로 인해 교착 상태가 발생했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;누가 어떻게 이런 일이 발생했는지, 어떻게 하면 피할 수 있는지 설명해 주실 수 있나요?&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(p.s: 해당 WP 설치에는 2000개 이상의 게시물이 있음)&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;WP와 데이터베이스 속도에 많은 도움이 되는 것은 게시물 및 페이지 수정에 대한 데이터베이스를 정리하는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;WP는 각 편집 수정본의 전체 복사본을 보관하고 있으며, 2000개의 게시물을 사용하면 데이터베이스가 방대해질 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;수정사항을 지우려면 phphmyadmin에서 SQL 쿼리로 실행합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;데이터베이스 크기가 75% 감소하고 수정사항을 삭제한 후 훨씬 더 빨리 실행되는 것을 보았습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;WP를 설치할 때 테이블 접두사를 변경한 경우 테이블 접두사를 변경하고 백업을 실행합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;DELETE a,b,c FROM wp_posts a LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id) WHERE a.post_type = 'revision' &lt;/code&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 해당 쿼리를 실행하여 수정사항 &lt;em papago-id=&quot;7-1&quot;&gt;삭제&lt;/em&gt;를 완료한 후 테이블을 최적화합니다. phpmyadmin의 드롭다운 메뉴에서 전체 데이터베이스를 최적화하거나 게시물 테이블에 대해서만 다른 쿼리를 사용합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;OPTIMIZE TABLE wp_posts;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 이 줄을 wp-config에 추가하여 포스트/페이지 수정사항이 다시 누적되는 것을 방지할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;수정을 중지하려면 php:&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;define ('WP_POST_REVISIONS', FALSE);&lt;/code&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또는 이 줄을 사용하여 유지할 수정사항 수를 선택합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;define('WP_POST_REVISIONS', 3);&lt;/code&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;MySQL 구성 파일에 액세스할 수 있는 경우 &lt;a href=&quot;https://github.com/major/MySQLTuner-perl&quot; papago-id=&quot;10-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;GitHub&lt;/a&gt; -&lt;a href=&quot;https://github.com/major/MySQLTuner-perl&quot; papago-id=&quot;10-1&quot; rel=&quot;nofollow noreferrer&quot;&gt; major/MySQLTuner-perl&lt;/a&gt;과 같은 유틸리티를 사용하여 MySQL을 튜닝하여 성능을 향상시킬 수 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;공유 호스팅 환경에서는 블로그에 트래픽이 많아지기 시작하면 조만간 이러한 동작이 발생합니다. 언급한 세부 사항은 잘못 작성된 WordPress 플러그인과 관련이 있을 수 있습니다(성능을 위해 모든 플러그인이 WordPress 코어와 함께 업데이트되었는지 확인하십시오).&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;아직 &lt;a href=&quot;http://wordpress.org/extend/plugins/wp-super-cache/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;12-1&quot;&gt;WP Super Cache&lt;/a&gt;를 사용하지 않았다면 고려해 볼 수도 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;두 가지 선택지가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;PHP &lt;a href=&quot;http://php.net/manual/en/function.mysql-pconnect.php&quot; rel=&quot;nofollow&quot; papago-id=&quot;14-1&quot;&gt;영구 연결&lt;/a&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;MySQL &lt;a href=&quot;http://dev.mysql.com/doc/refman/5.1/en/too-many-connections.html&quot; rel=&quot;nofollow&quot; papago-id=&quot;15-1&quot;&gt;max_connections&lt;/a&gt; 설정&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;영구 연결은 사용 가능한 경우 MySQL 서버와 동일한 연결을 계속 사용하려고 합니다(PHP 요청 간에 연결이 닫히지 않음).&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;MySQL max_connections를 사용하면 서버에서 허용할 수 있는 연결의 양을 늘릴 수 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;워드프레스에 대해서는 잘 모르니 DB Perfect tuning 관점에서 생각해 보겠습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;먼저 업데이트가 왜 이렇게 오래 걸리는지 자세히 알고 싶습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;DB의 인덱싱 전략을 조정해야 하는 잘못된 쿼리 계획이 있을 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;업데이트 속도를 높일 수 없고, 완전히 커밋되지 않은 데이터(예를 들어 블로그에서는 괜찮지만 회계 응용 프로그램은 아닌 데이터)를 읽을 수 있도록 조회할 의향이 있는 경우 업데이트에 대한 차단을 피하기 위해 SELECT를 NOLOCK 힌트를 포함하도록 변경할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;자세한 내용은 이 &lt;a href=&quot;https://stackoverflow.com/questions/917640/any-way-to-select-without-causing-locking-in-mysql&quot; papago-id=&quot;21-1&quot;&gt;SO 질문&lt;/a&gt; 참조&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용 중인 데이터베이스 연결이 너무 많을 경우(분명히) 너무 많은 데이터베이스 연결이 발생할 수 있습니다. 즉, 허용된 최대 연결보다 한 번에 사이트에서 쿼리를 실행하는 사람이 더 많을 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신의 mysql 서버는 몇 개의 연결을 허용합니까?&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;mysql_pconnect()를 사용하고 계십니까 아니면 그냥 mysql_connect()를 사용하고 계십니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;전자를 사용하면 연결이 더 오랫동안 열려 있으므로 강제로 닫을 수 없습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/3898252/what-can-cause-too-many-database-connections&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>Wordpress</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1347</guid>
      <comments>https://bestprogram.tistory.com/1347#entry1347comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:55:30 +0900</pubDate>
    </item>
    <item>
      <title>사용자 지정 비교 술어가 포함된 힙큐</title>
      <link>https://bestprogram.tistory.com/1346</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용자 지정 비교 술어가 포함된 힙큐&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용자 지정 정렬 술어로 힙을 구축하려고 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;입력되는 값이 &quot;사용자 정의&quot; 유형이기 때문에 기본 제공되는 비교 술어를 수정할 수 없습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음과 같은 작업을 수행할 수 있는 방법이 있습니까?&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;h = heapq.heapify([...], key=my_lt_pred)
h = heapq.heappush(h, key=my_lt_pred)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;아니면 더 좋게도, 내가 포장해 줄 수도 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;heapq&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;술어를 계속 전달할 필요가 없도록 내 컨테이너에 기능합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://docs.python.org/library/heapq.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;5-1&quot;&gt;힙큐 문서&lt;/a&gt;에 따르면 힙 순서를 사용자 지정하는 방법은 힙의 각 요소를 튜플로 만드는 것이며 첫 번째 튜플 요소는 일반적인 파이썬 비교를 허용하는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;힙큐 모듈의 함수는 객체 지향적이지 않기 때문에 약간 번거로우며 항상 힙 객체(히프화된 목록)를 첫 번째 매개 변수로 명시적으로 전달해야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;우리는 매우 간단한 포장지 클래스를 만들어서 우리가 특정할 수 있게 함으로써 두 마리 토끼를 죽일 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;key&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;function, 그리고 힙을 객체로 표시합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;아래 클래스는 각 요소가 튜플이고 첫 번째 구성원은 키이며 다음을 사용하여 요소 삽입 시간에 계산되는 내부 목록을 유지합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;key&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;힙 인스턴스화 시 전달된 매개 변수:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;# -*- coding: utf-8 -*-
import heapq

class MyHeap(object):
    def __init__(self, initial=None, key=lambda x:x):
        self.key = key
        self.index = 0
        if initial:
            self._data = [(key(item), i, item) for i, item in enumerate(initial)]
            self.index = len(self._data)
            heapq.heapify(self._data)
        else:
            self._data = []

    def push(self, item):
        heapq.heappush(self._data, (self.key(item), self.index, item))
        self.index += 1

    def pop(self):
        return heapq.heappop(self._data)[2]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; ()&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;self.index&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;part는 평가된 키 값이 무승부이고 저장된 값이 직접 비교할 수 없을 때 충돌을 방지하는 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 그렇지 않으면 heapq가 TypeError와 함께 실패할 수 있습니다.)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;클래스를 정의합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 클래스를 재정의합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;__lt__()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기능.&lt;/font&gt; 아래 예제 &lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;(Python 3.7에서 &lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;아래 예제 참조(Python 3.7에서 작동):&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-py prettyprint-override&quot;&gt;&lt;code&gt;import heapq

class Node(object):
    def __init__(self, val: int):
        self.val = val

    def __repr__(self):
        return f'Node value: {self.val}'

    def __lt__(self, other):
        return self.val &amp;lt; other.val

heap = [Node(2), Node(0), Node(1), Node(4), Node(2)]
heapq.heapify(heap)
print(heap)  # output: [Node value: 0, Node value: 2, Node value: 1, Node value: 4, Node value: 2]

heapq.heappop(heap)
print(heap)  # output: [Node value: 1, Node value: 2, Node value: 2, Node value: 4]

&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://docs.python.org/library/heapq.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;14-1&quot;&gt;힙큐 문서&lt;/a&gt;는 힙 요소가 첫 번째 요소가 우선 순위이고 정렬 순서를 정의하는 튜플일 수 있음을 암시합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 이 문서에는 정렬 안정성 문제와 (다른 문제 중) 동등한 우선 순위를 가진 &lt;a href=&quot;http://docs.python.org/library/heapq.html#priority-queue-implementation-notes&quot; papago-id=&quot;15-1&quot; rel=&quot;noreferrer&quot;&gt;요소&lt;/a&gt;를 처리하기 위해 자체 힙큐 래퍼 함수를 어떻게 구현할 수 있는지에 &lt;a href=&quot;http://docs.python.org/library/heapq.html#priority-queue-implementation-notes&quot; papago-id=&quot;15-1&quot; rel=&quot;noreferrer&quot;&gt;대한 샘플&lt;/a&gt; 코드가 포함되어 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;간단히 말해서, 그들의 해결책은 힙큐의 각 요소가 우선순위, 엔트리 수 및 삽입할 요소와 함께 세 배가 되도록 하는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;항목 수를 사용하면 우선 순위가 같은 요소가 순서대로 정렬되어 힙큐에 추가됩니다.&lt;/font&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;setattr(ListNode, &quot;__lt__&quot;, lambda self, other: self.val &amp;lt;= other.val)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;힙큐의 개체 값을 비교할 때 사용합니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;두 답변 모두 넥타이가 넥타이로 취급되는 것을 허용하지 않는다는 것이 한계입니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;첫 번째는 항목을 비교하여 동점을 끊는 것이고, 두 번째는 입력 순서를 비교하여 끊는 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;인연은 그냥 인연으로 두는 것이 빠르고, 인연이 많으면 큰 변화를 가져올 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;위의 내용과 문서에 근거하여, 이것이 힙큐(heapq)에서 달성될 수 있는지는 확실하지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;hapq가 키를 받지 않는 반면, 같은 모듈에서 파생된 함수는 키를 받지 못하는 것이 이상해 보입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;추신: 첫번째 댓글의 링크를 따라가면 (&quot;중복 가능..&quot;)&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;) 해결책처럼 보이는 le를 정의하자는 또 다른 제안이 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;python3에서는 사용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;cmp_to_key&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;부터&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;functools&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모듈.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://github.com/python/cpython/blob/7ad52d174a12951d260aecfcdfe0fcfd2437a66b/Lib/functools.py#L206&quot; papago-id=&quot;22-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;cpython 소스 코드&lt;/a&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;트리플렛의 우선순위 대기열이 필요하다고 가정하고 마지막 속성을 사용하여 우선순위를 지정합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-py prettyprint-override&quot;&gt;&lt;code&gt;from heapq import *
from functools import cmp_to_key
def mycmp(triplet_left, triplet_right):
    key_l, key_r = triplet_left[2], triplet_right[2]
    if key_l &amp;gt; key_r:
        return -1  # larger first
    elif key_l == key_r:
        return 0  # equal
    else:
        return 1


WrapperCls = cmp_to_key(mycmp)
pq = []
myobj = tuple(1, 2, &quot;anystring&quot;)
# to push an object myobj into pq
heappush(pq, WrapperCls(myobj))
# to get the heap top use the `obj` attribute
inner = pq[0].obj
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2 papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;성능 테스트:&lt;/font&gt;&lt;/h2&gt; 
&lt;h3 papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;환경&lt;/font&gt;&lt;/h3&gt; 
&lt;p papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;python 3.10.2&lt;/font&gt;&lt;/p&gt; 
&lt;h3 papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;코드&lt;/font&gt;&lt;/h3&gt; 
&lt;pre class=&quot;lang-py prettyprint-override&quot;&gt;&lt;code&gt;from functools import cmp_to_key
from timeit import default_timer as time
from random import randint
from heapq import *

class WrapperCls1:
    __slots__ = 'obj'
    def __init__(self, obj):
        self.obj = obj
    def __lt__(self, other):
        kl, kr = self.obj[2], other.obj[2]
        return True if kl &amp;gt; kr else False

def cmp_class2(obj1, obj2):
    kl, kr = obj1[2], obj2[2]
    return -1 if kl &amp;gt; kr else 0 if kl == kr else 1

WrapperCls2 = cmp_to_key(cmp_class2)

triplets = [[randint(-1000000, 1000000) for _ in range(3)] for _ in range(100000)]
# tuple_triplets = [tuple(randint(-1000000, 1000000) for _ in range(3)) for _ in range(100000)]

def test_cls1():
    pq = []
    for triplet in triplets:
        heappush(pq, WrapperCls1(triplet))
        
def test_cls2():
    pq = []
    for triplet in triplets:
        heappush(pq, WrapperCls2(triplet))

def test_cls3():
    pq = []
    for triplet in triplets:
        heappush(pq, (-triplet[2], triplet))

start = time()
for _ in range(10):
    test_cls1()
    # test_cls2()
    # test_cls3()
print(&quot;total running time (seconds): &quot;, -start+(start:=time()))
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3 papago-id=&quot;28&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;결과.&lt;/font&gt;&lt;/h3&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용하다&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;list&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;대신에&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;tuple&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;:,:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li papago-id=&quot;32&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;포장지 Cls1 : 16.2ms&lt;/font&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(  Cls1 )&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;__slots__&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;: 9.8ms&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;35&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;포장지 Cls2: 8.6ms&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;36&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;우선순위 속성을 첫 번째 위치로 이동(&lt;strong papago-id=&quot;36-1&quot;&gt;사용자&lt;/strong&gt; 지정 술어를 지원하지 않음): 6.0ms&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;20&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 이 메서드는 재정의된 사용자 지정 클래스를 사용하는 것보다 약간 빠릅니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;__lt__()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;21&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;과.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;__slots__&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기여하다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;h1 papago-id=&quot;40&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;단순 및 최근&lt;/font&gt;&lt;/h1&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;간단한 해결책은&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;store entries as a list of tuples&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;24&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;각 튜플에 대해 원하는 순서로 우선순위를 정의합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 튜플 내의 각 항목에 대해 다른 순서가 필요하다면 내림차순에 대해 음수로 만듭니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;43&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 항목의 공식 힙큐 파이썬 문서를 참조하십시오. &lt;a href=&quot;https://docs.python.org/3/library/heapq.html#priority-queue-implementation-notes&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;43-1&quot;&gt;우선순위 대기열 구현 참고&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;44&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;간단한 속임수:&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;45&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음과 같은 (이름, 나이) 목록을 가지고 있다고 가정합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;a = [('Tim',4), ('Radha',9), ('Rob',7), ('Krsna',3)]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;46&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용자 지정 비교 항목을 모두 작성하는 대신 큐에 넣기 직전에 튜플의 내용 순서를 뒤집으면 나이에 따라 연령에 따라 이 목록을 정렬하려면 사용자 지정 비교 항목을 추가해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이는 힙큐.heappush()가 기본적으로 튜플의 첫 번째 요소를 기준으로 정렬되기 때문입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음과 같은 경우:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import heapq
heap = []
heapq.heapify(heap)
for element in a:
    heapq.heappush(heap, (element[1],element[0]))
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;47&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이렇게 하면 사용자 지정 비교기를 엉망으로 쓸 필요가 없을 경우 간단한 조작이 가능합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;48&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;마찬가지로 기본적으로 오름차순으로 값을 정렬합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;나이순으로 정렬하려면 내용을 뒤집어서 튜플의 첫번째 요소 값을 음수로 만듭니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import heapq
heap = []
heapq.heapify(heap)
for element in a:
    heapq.heappush(heap, (-element[1],element[0]))
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;49&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/8875706/heapq-with-custom-compare-predicate&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>python</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1346</guid>
      <comments>https://bestprogram.tistory.com/1346#entry1346comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:55:23 +0900</pubDate>
    </item>
    <item>
      <title>C# - 한 워크북에서 다른 워크북으로 Excel 워크시트를 복사하는 방법은 무엇입니까?</title>
      <link>https://bestprogram.tistory.com/1345</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;C# - 한 워크북에서 다른 워크북으로 Excel 워크시트를 복사하는 방법은 무엇입니까?&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;한 워크북에서 다른 워크북으로 워크시트를 복사해야 하는데 좀 막힙니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그 전제는 여러 보고서의 템플릿을 저장하는 &quot;마스터&quot; 워크북을 가지고 있는데, 그런 다음 특정 워크시트의 빈 복사본을 만들어 새 워크북에 추가해야 한다는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것이 지금까지 제가 가진 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;private void CreateNewWorkbook(Tables table)
{
    Excel.Application app = null;
    Excel.Workbook book = null;
    Excel.Worksheet sheet = null;

    try
    {
        string startPath = System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);
        string filePath = System.IO.Path.Combine(startPath, &quot;sal1011forms.xls&quot;);
        Microsoft.Win32.SaveFileDialog sfd = new Microsoft.Win32.SaveFileDialog();

        app = new Excel.Application();
        book = app.Workbooks.Open(filePath);
        sheet = (Excel.Worksheet)book.Worksheets.get_Item((int)table + 1);

        sfd.AddExtension = true;
        sfd.FileName = table.ToString() + &quot;.xls&quot;;
        sfd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

        if (sfd.ShowDialog() == true)
        {
            sheet.SaveAs(sfd.FileName);
        }
    }
    finally
    {
        if (book != null)
        {
            book.Close();
        }
        if (app != null)
        {
            app.Quit();
        }
        this.ReleaseObject(sheet);
        this.ReleaseObject(book);
        this.ReleaseObject(app);
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;지금 제가 안고 있는 유일한 문제는 제가 전화를 할 때입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;워크시트에 저장()하면 원래 워크시트의 모든 워크시트가 새 워크시트로 저장됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 문제를 해결할 방법에 대한 의견이 있습니까?&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;미리 감사드립니다.&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;소니&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신은 또한 사용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Sheet.Copy()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;방법.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기본적으로.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Sheet.copy&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;시트를 복사하면 새 워크북이 동시에 자동으로 생성됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;코드에 다음 행을 추가해 보십시오.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Worksheets.get_Item&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;// Copies sheet and puts the copy into a new workbook
sheet.Copy(Type.Missing, Type.Missing);

// Sets the sheet variable to the copied sheet in the new workbook
sheet = app.Workbooks[2].Sheets[1];
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기에 그에 대한 참고 자료가 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Copy()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기능도 : &lt;a href=&quot;https://learn.microsoft.com/en-us/office/vba/api/excel.worksheet.copy&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;9-1&quot;&gt;MSDN 링크&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것이 다소 늦은 답변이라는 것을 알고 있지만, 저는 이 문제를 겪고 있는 다른 사람에게 도움이 될 수 있도록 해결책을 게시해야겠다고 생각했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여러 번 채워넣을 템플릿 시트가 있는 경우:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;    public void test()
    {

        Excel.Application excelApp;

        string fileTarget = &quot;C:\target.xlsx&quot;;
        string fileTemplate = &quot;C:\template.xlsx&quot;;
        excelApp = new Excel.Application();
        Excel.Workbook wbTemp, wbTarget;
        Excel.Worksheet sh;

        //Create target workbook
        wbTarget = excelApp.Workbooks.Open(fileTemplate);

        //Fill target workbook
        //Open the template sheet
        sh = wbTarget.Worksheets[&quot;TEMPLATE&quot;];
        //Fill in some data
        sh.Cells[1, 1] = &quot;HELLO WORLD!&quot;;
        //Rename sheet
        sh.Name = &quot;1. SHEET&quot;;


        //Save file
        wbTarget.SaveAs(fileTarget);

        //Iterate through the rest of the files
        for (int i = 1; i &amp;lt; 3; i++)
        {
            //Open template file in temporary workbook
            wbTemp = excelApp.Workbooks.Open(fileTemplate);

            //Fill temporary workbook
            //Open the template sheet
            sh = wbTemp.Worksheets[&quot;TEMPLATE&quot;];
            //Fill in some data
            sh.Cells[1, 1] = &quot;HELLO WORLD! FOR THE &quot; + i + &quot;.TH TIME&quot;;
            //Rename sheet
            sh.Name = i + &quot;. SHEET&quot;;

            //Copy sheet to target workbook
            sh.Copy(wbTarget.Worksheets[1]);
            //Close temporary workbook without saving
            wbTemp.Close(false);
        }

        //Close and save target workbook
        wbTarget.Close(true);
        //Kill excelapp
        excelApp.Quit();
    }
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;질문을 받은 지 1년이 넘었음에도 이 질문에 대한 답을 드리고 싶습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 개발 중인 프로젝트에 대해서 저도 같은 문제를 겪었고, 답을 찾는데 시간이 좀 걸렸습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;VB로 올리겠습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;나는 마지막을 잘 몰라서 C# 대신 NET 코드.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Excel 워크북 간에 시트를 복사하기 위해서는 하나의 Excel Application 개체만 사용한 다음 해당 단일 애플리케이션으로 두 워크북을 여는 것이 절대적으로 필요합니다. 그러면 알려진 워크시트를 사용할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;방법을 복사하고 다른 워크북의 시트 뒤 또는 앞에 시트를 복사하도록 지정하기만 하면 됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Private Sub ThisWorkbook_Startup() Handles Me.Startup
    Me.Application.Workbooks.Open(filePath)
    Me.Application.Workbooks(2).Worksheets(&quot;Reporte&quot;). _
          Copy(After:=Me.Application.Workbooks(1).Worksheets(&quot;Hoja1&quot;))
    Me.Application.Workbooks(2).Close()
    Me.Application.DisplayAlerts = False
    Globals.Hoja1.Delete()
    Me.Application.DisplayAlerts = True
End Sub
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 경우 제가 사용하고 있는 Excel 응용 프로그램은 Excel Workbook 프로젝트를 실행하는 프로그램이지만 다음과 같이 작동합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Dim xlApp As New Excel.Application
Dim book1 As Excel.Workbook
Dim book2 As Excel.Workbook
book1 = xlApp.Workbooks.Open(filePath1)
book2 = xlApp.Workbooks.Open(filePath2)

book1.Worksheets(&quot;Sheet to be copied&quot;).Copy(After:=book2.Worksheets(1))
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;물론 Excel 응용프로그램에 두 문제집이 모두 표시되므로 복사가 완료된 후에는 원본 문제집을 닫아야 합니다(또는 최소한 사용자가 수행할 수 있을 만큼 충분히 길지는 않음).&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;xlApp.Workbooks(1).Close()
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이렇게 하면 사용자는 깜박이는 새 워크북이 나타났다가 닫히는 것을 볼 수 있는데, 이는 정말 깔끔하지는 않지만 지금까지 다른 방법을 전혀 모릅니다(또는 이 복사 프로세스를 보이지 않는 방식으로 수행).&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것이 여전히 가치가 있기를 바랍니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;안부 전합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/3808368/c-sharp-how-to-copy-a-single-excel-worksheet-from-one-workbook-to-another&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>Excel</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1345</guid>
      <comments>https://bestprogram.tistory.com/1345#entry1345comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:55:14 +0900</pubDate>
    </item>
    <item>
      <title>워드프레스 플러그인: javascrtipt 태그에서 속성으로 사용할 매개 변수를 어떻게 전달합니까?</title>
      <link>https://bestprogram.tistory.com/1344</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;워드프레스 플러그인: javascrtipt 태그에서 속성으로 사용할 매개 변수를 어떻게 전달합니까?&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;워드프레스에서 자바스크립트 태그를 생성하여 페이지 하단에 드롭하는 위젯 플러그인을 작성하려고 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;wp_enqueue_script를 사용하여 이것을 만들 수 있다는 것을 알고 있습니다. 문제 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 위젯 설정의 파라미터를 이 스크립트 태그에 전달해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예:&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;wp_enqueue_script( 'script-name', '/js/example.js' );&lt;/code&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;는 다음과 같은 모양의 태그를 렌더링합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;&amp;lt;script type='text/javascript' src='/js/example.js'&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 원하는 것은 다음과 같은 모양의 태그를 만드는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;&amp;lt;script type='text/javascript' data-id='12345' src='/js/example.js'&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기서 12345는 위젯 설정에서 전달됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이거 어떻게 해요?&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;나는 이것이 오래된 게시물이라는 것을 알고 있지만, 솔직히 다음이 플러그인에서 자바스크립트로 매개 변수를 전달하는 허용 가능한 방법인지는 모르겠지만, 나는 같은 문제가 있었고 적어도 하나의 접근 방식을 공유하고 싶었습니다! 피드백을 주셔서 감사합니다!&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;어떤 이유에서든, 저는 플러그인 PHP 코드에서 JS 코드로 파라미터를 전달하는 두 가지 다른 방법을 사용하게 되었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;첫 번째는 wp_localize_script 옵션을 사용하여 상당히 간단했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;플러그인 PHP 스니펫은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;wp_enqueue_script(
    'dynamic-rss-scripts', /* Handle/Name */
    plugin_dir_url( __FILE__ ) . 'assets/js/dynamic-rss.js', /* Path to the plugin/assets folder */
    //array('jquery', 'xml2json', 'json2xml'), /* Script Dependencies */
    array('jquery'), /* Script Dependencies */
    null, /* null is any version, but could be the specific version of jquery if required */
    false /* if true=add to footer, false=add to header */
);


/*
    Pass any server-side vars down to JS.  These will be exposed as
    php_vars.variablename for example
*/
$jsarray = array(
    'exampleparam'               =&amp;gt; 'Example Param Value'
);
wp_localize_script( 'dynamic-rss-scripts', 'php_vars', $jsarray ); 
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저 같은 경우에는 보통 몇 개의 파라미터를 통과해야 하기 때문에 어레이를 사용하고 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;위의 토막글에서, 자바스크립트에서 사용하기 쉬운 실제 파라미터 값.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;em papago-id=&quot;12-1&quot;&gt;&lt;strong papago-id=&quot;12-1-0&quot;&gt;위 PHP&lt;/strong&gt;&lt;/em&gt;의 &lt;em papago-id=&quot;12-1&quot;&gt;&lt;strong papago-id=&quot;12-1-0&quot;&gt;wp_localize_script 라인에 있는 php_vars 참조를 참고&lt;/strong&gt;&lt;/em&gt;하세요.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 자바스크립트에서는 다음과 같은 방법으로 해당 매개변수를 참조하기가 매우 쉽습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;console.log('Hello to PHP variables', php_vars);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;... 그리고 위의 PHP 스니펫에 대한 저의 경우, 저는 물론 이제 다음을 통해 저의 예제 param 파라미터를 참조할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;console.log('Here is my specific param called exampleparam', php_vars.exampleparam);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 사용한 두 번째 접근 방식은 단순히 DOM 요소에 데이터 속성을 구성하는 것입니다(제 경우에는 컨테이너 DIV였습니다).&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;플러그인 PHP에서 플러그인/숏코드 파라미터를 추출합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;extract(( shortcode_atts(array))&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;'url' =&amp;gt; '',
'feed-type' =&amp;gt; 'list', // This could be for Wordpress or Calendar etc.
'rows' =&amp;gt; '5',
'cols' =&amp;gt; '1',
'include-image' =&amp;gt; 'false',
'image-align' =&amp;gt; 'left',
'image-size' =&amp;gt; '100',
'include-date' =&amp;gt; 'true',
'date-format' =&amp;gt; 'dd/mm/yyyy'
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;), $attrs ) ).&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 약간의 검증 등을 수행하지만 궁극적으로는 다음과 같은 HTML 데이터 속성을 생성하게 됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$content = &quot;&amp;lt;div id='dynamic-rss' class='dynamic-rss-container' &quot;;
    $content .= &quot;data-url='&quot; . $attrs['url'] . &quot;' &quot;;
    $content .= &quot;data-feedtype='&quot; . $attrs['feed-type'] . &quot;' &quot;;
    $content .= &quot;data-rows='&quot; . $attrs['rows'] . &quot;' &quot;;
    $content .= &quot;data-cols='&quot; . $attrs['cols'] . &quot;' &quot;;
    $content .= &quot;data-includeimage='&quot; . $attrs['include-image'] . &quot;' &quot;;
    $content .= &quot;data-imagealign='&quot; . $attrs['image-align'] . &quot;' &quot;;
    $content .= &quot;data-imagesize='&quot; . $attrs['image-size'] . &quot;' &quot;;
    $content .= &quot;data-includedate='&quot; . $attrs['include-date'] . &quot;' &quot;;
    $content .= &quot;data-dateformat='&quot; . $attrs['date-format'] . &quot;'&quot;;
$content .= &quot;&amp;gt;&amp;lt;/div&amp;gt;&quot;;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 해당 컨테이너 DIV를 데이터 속성과 함께 렌더링하는 $content를 PHP로 반환합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;자바스크립트/jQuery에서 마지막 단계(여기서 jQuery를 사용했지만 곧은 JS일 수 있음)는 자바스크립트 코드에서 필요한 곳에 사용할 수 있는 데이터 속성을 검색하는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;const feedUrl = $('#dynamic-rss').data('url');
const feedType = $('#dynamic-rss').data('feedtype');
const rows = returnInt($('#dynamic-rss').data('rows')) != NaN ? returnInt($('#dynamic-rss').data('rows')) : 10;
const cols = returnInt($('#dynamic-rss').data('cols')) != NaN ? returnInt($('#dynamic-rss').data('cols')) : 1;
const includeImage = $('#dynamic-rss').data('includeimage');
const imageAlign = $('#dynamic-rss').data('imagealign');
const imageSize = $('#dynamic-rss').data('imagesize');
const includeDate = $('#dynamic-rss').data('includedate');
const dateFormat = $('#dynamic-rss').data('dateformat');
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것이 어쨌든 도움이 되기를 바랍니다. 다른 사람이 이것에 발을 들여놓는다면요!&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 알아낸 것은 이렇습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;전면 디스플레이 조각을 만드는 위젯 코드에서 다음을 사용합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;add_action('wp_footer',create_function( '', 'echo(\'&amp;lt;script type=&quot;text/javascript&quot; data-id=&quot;' . $instance['widgetparamname'] . '&quot; src=&quot;//someurl.com/some.js&quot;&amp;gt;&amp;lt;/script&amp;gt;\');' ),1,0);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;$instance은 이미 전달되었으며, 위젯의 관리자 인터페이스에서 가져온 값을 포함합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 위젯에 어떤 값을 넣든지 해당 배열에 표시됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 배열의 올바른 요소를 참조하기만 하면 됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 코드가 수행하는 작업은 다른 함수를 필요로 하지 않고 wp_footer hook에 작업을 추가하는 것입니다(어떤 값도 전달할 수 없음). 따라서 여기에 입력하는 모든 작업이 사이트의 바닥글 영역에 기록됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;create_function의 첫 번째 매개 변수가 비어 있어야 합니다. 그렇지 않으면 워드 프레스에서 오류가 발생합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/34825075/wordpress-plugin-how-do-you-pass-parameters-to-be-used-as-attributes-in-a-javas&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>Wordpress</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1344</guid>
      <comments>https://bestprogram.tistory.com/1344#entry1344comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:55:05 +0900</pubDate>
    </item>
    <item>
      <title>MariaDB가 모든 데이터베이스의 쿼리 처리를 중지합니다.</title>
      <link>https://bestprogram.tistory.com/1343</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;MariaDB가 모든 데이터베이스의 쿼리 처리를 중지합니다.&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;우리는 가지고 있다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;mariadb server&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(현재&lt;/font&gt;&lt;/font&gt;&lt;code&gt;v10.1&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 하지만 똑같은 일이 일어났습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;v10.0&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;너무 큰 것은 없고, 단지 몇 GB의 데이터에 불과합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;9 databases&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 각각의 DB는 서로 다른 응용 프로그램에 대해 논리적으로 연결되어 있지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;모든 테이블이&lt;/font&gt;&lt;/font&gt;&lt;code&gt;InnoDB&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;때때로(보통)&lt;/font&gt;&lt;/font&gt;&lt;code&gt;0-2 times&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;일별)&lt;/font&gt;&lt;/font&gt;&lt;code&gt;server&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모든 db 관련 쿼리 처리를 중지합니다(&lt;/font&gt;&lt;/font&gt;&lt;code&gt;select&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;update&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;insert&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;alter&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 등)를 모든 데이터베이스에 저장합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;가장 오래된 쿼리가 도달할 때까지 중단/구축만 수행합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;500s&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;잠금 시간이 지나면 모든 것이 정상으로 돌아옵니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 상황들은 에 등록되어 있지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&quot;deadlocks&quot;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;부분의&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&quot;show engine innodb status;&quot;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;. 그리고 syslog에는 다음과 같은 항목만 표시됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;mysqld: 150423 12:07:38 [경고] 연결 42 to db: 'ejd_im' 사용자: 'ejabberd' 호스트: 'localhost' (알 수 없는 오류)&quot;.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;구성:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;[mysqld]
skip-external-locking

transaction-isolation = READ-COMMITTED

bind-address            = 0.0.0.0

max_connections         = 30
connect_timeout         = 10
max_allowed_packet      = 16M
thread_cache_size       = 64
sort_buffer_size        = 128M
bulk_insert_buffer_size = 64M

concurrent_insert       = 2
read_buffer_size        = 2M
read_rnd_buffer_size    = 2M
join_buffer_size        = 32M
tmp_table_size          = 64M
max_heap_table_size     = 64M

query_cache_limit       = 4M
query_cache_size        = 64M
query_cache_type        = 1

log_warnings            = 2
slow_query_log          = 1
slow_query_log_file     = /var/log/mysql/mariadb-slow.log
long_query_time         = 2
log_slow_verbosity      = explain #query_plan

log_bin                 = /var/log/mysql/mariadb-bin
log_bin_index           = /var/log/mysql/mariadb-bin.index
binlog_format           = 'ROW'

sync_binlog             = 0
expire_logs_days        = 2
max_binlog_size         = 100M

default_storage_engine  = InnoDB
innodb_log_file_size    = 64M
innodb_buffer_pool_size = 8G
innodb_log_buffer_size  = 8M
innodb_file_per_table   = 1
innodb_open_files       = 1200
innodb_flush_method     = O_DIRECT
innodb_defragment       = 1
innodb_file_format      = Barracuda
innodb_thread_concurrency = 16
innodb_flush_log_at_trx_commit = 2
innodb_log_checksum_algorithm = crc32
innodb_use_fallocate    = 1
innodb_autoinc_lock_mode= 2
innodb_ft_sort_pll_degree = 4
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 가장 오래된 대기 트랜잭션과 관련하여 &quot;엔진 in nodb status;&quot;에서 출력의 일부를 캡처할 수 있었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;---TRANSACTION 71290030, ACTIVE (PREPARED) 411 sec
mysql tables in use 1, locked 1
2 lock struct(s), heap size 360, 1 row lock(s), undo log entries 1
MySQL thread id 153651, OS thread handle 0x7ff144ada700, query id 1459228 localhost nlb query end
REPLACE INTO apiTimings (`userId`, `lastAccess`, `lastIp`, `source`) VALUES ('909', '1429783180', 'xxx.xxx.xxx.xxx', '1')
Trx #rec lock waits 0 #table lock waits 0
Trx total rec lock wait time 0 SEC
Trx total table lock wait time 0 SEC
TABLE LOCK table `nlb`.`apiTimings` trx id 71290030 lock mode IX lock hold time 411 wait time before grant 0
RECORD LOCKS space id 484 page no 5 n bits 280 index `PRIMARY` of table `nlb`.`apiTimings` trx table locks 1 total table locks 27  trx id 71290030 lock_mode X locks rec but not gap loc
k hold time 411 wait time before grant 0
---TRANSACTION 71290022, ACTIVE (PREPARED) 412 sec
mysql tables in use 1, locked 1
2 lock struct(s), heap size 360, 1 row lock(s), undo log entries 1
MySQL thread id 153644, OS thread handle 0x7ff1449b6700, query id 1459203 localhost nlb query end
REPLACE INTO apiTimings (`userId`, `lastAccess`, `lastIp`, `source`) VALUES ('963', '1429783179', 'xx.xx.xx.xx', '1')
Trx #rec lock waits 0 #table lock waits 0
Trx total rec lock wait time 0 SEC
Trx total table lock wait time 0 SEC
TABLE LOCK table `nlb`.`apiTimings` trx id 71290022 lock mode IX lock hold time 412 wait time before grant 0
RECORD LOCKS space id 484 page no 5 n bits 280 index `PRIMARY` of table `nlb`.`apiTimings` trx table locks 1 total table locks 27  trx id 71290022 lock_mode X locks rec but not gap lock hold time 412 wait time before grant 0
---TRANSACTION 71290019, ACTIVE 412 sec doing SYNC index
1 lock struct(s), heap size 360, 0 row lock(s), undo log entries 18987
Trx #rec lock waits 0 #table lock waits 0
Trx total rec lock wait time 0 SEC
Trx total table lock wait time 0 SEC
TABLE LOCK table &quot;nlb&quot;.&quot;FTS_0000000000000321_0000000000000724_INDEX_1&quot; trx id 71290019 lock mode IX lock hold time 412 wait time before grant 0
---TRANSACTION 71290018, ACTIVE (PREPARED) 412 sec committing
2 lock struct(s), heap size 360, 0 row lock(s), undo log entries 3
MySQL thread id 153643, OS thread handle 0x7ff132d93700, query id 1459197 localhost nlb init
COMMIT
Trx #rec lock waits 0 #table lock waits 0
Trx total rec lock wait time 0 SEC
Trx total table lock wait time 0 SEC
TABLE LOCK table `nlb`.`posts` trx id 71290018 lock mode IX lock hold time 412 wait time before grant 0
TABLE LOCK table `nlb`.`dashboards` trx id 71290018 lock mode IX lock hold time 412 wait time before grant 0
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;도대체 무슨 일이 일어나고 있는지, 아니면 어떻게 진단해야 하는지 누가 말해줄 수 있나요?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;모든 데이터베이스에 영향을 미치는 이유는 무엇입니까?&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;편집: apiTiming 구조:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;CREATE TABLE IF NOT EXISTS `apiTimings` (
  `userId` int(11) NOT NULL,
  `lastAccess` bigint(20) NOT NULL,
  `lastIp` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
  `source` int(11) NOT NULL,
  PRIMARY KEY (`userId`),
  KEY `source` (`source`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다른&lt;/font&gt;&lt;/font&gt;&lt;code&gt;show engine innodb status;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;---TRANSACTION 75459395, ACTIVE (PREPARED) 362 sec
mysql tables in use 1, locked 1
4 lock struct(s), heap size 1184, 4 row lock(s), undo log entries 2
MySQL thread id 1077860, OS thread handle 0x7fcd388d1700, query id 10200793 xen xx.xx.xx.xx yyy query end
REPLACE iplock SET ip = 'xx.xx.xx.xx', count = '1', lut = '1430055393'
Trx #rec lock waits 0 #table lock waits 0
Trx total rec lock wait time 0 SEC
Trx total table lock wait time 0 SEC
TABLE LOCK table `main`.`iplock` trx id 75459395 lock mode IX lock hold time 362 wait time before grant 0
RECORD LOCKS space id 677 page no 9 n bits 744 index `ip` of table `main`.`iplock` trx table locks 1 total table locks 4  trx id 75459395 lock_mode X lock hold time 362 wait time before grant 0
RECORD LOCKS space id 677 page no 15 n bits 264 index `PRIMARY` of table `main`.`iplock` trx table locks 1 total table locks 4  trx id 75459395 lock_mode X locks rec but not gap lock hold time 362 wait time before grant 0
RECORD LOCKS space id 677 page no 9 n bits 744 index `ip` of table `main`.`iplock` trx table locks 1 total table locks 4  trx id 75459395 lock_mode X locks gap before rec lock hold time 362 wait time before grant 0
---TRANSACTION 75459393, ACTIVE (PREPARED) 362 sec
1 lock struct(s), heap size 360, 0 row lock(s), undo log entries 1
MySQL thread id 45, OS thread handle 0x7fcade563700, query id 10200790 localhost 127.0.0.1 ejabberd init
commit
Trx #rec lock waits 0 #table lock waits 0
Trx total rec lock wait time 0 SEC
Trx total table lock wait time 0 SEC
TABLE LOCK table `ejd_im`.`spool` trx id 75459393 lock mode IX lock hold time 362 wait time before grant 0
---TRANSACTION 75459390, ACTIVE 362 sec doing SYNC index
1 lock struct(s), heap size 360, 0 row lock(s), undo log entries 18453
Trx #rec lock waits 0 #table lock waits 0
Trx total rec lock wait time 0 SEC
Trx total table lock wait time 0 SEC
TABLE LOCK table &quot;nlb&quot;.&quot;FTS_0000000000000321_0000000000000724_INDEX_1&quot; trx id 75459390 lock mode IX lock hold time 362 wait time before grant 0
---TRANSACTION 75459389, ACTIVE (PREPARED) 362 sec committing
2 lock struct(s), heap size 360, 0 row lock(s), undo log entries 3
MySQL thread id 1077859, OS thread handle 0x7fcd355d0700, query id 10200783 localhost nlb init
COMMIT
Trx #rec lock waits 0 #table lock waits 0
Trx total rec lock wait time 0 SEC
Trx total table lock wait time 0 SEC
TABLE LOCK table `nlb`.`posts` trx id 75459389 lock mode IX lock hold time 362 wait time before grant 0
TABLE LOCK table `nlb`.`dashboards` trx id 75459389 lock mode IX lock hold time 362 wait time before grant 0
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/29821868/mariadb-stops-processing-queries-from-all-databases&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>mariadb</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1343</guid>
      <comments>https://bestprogram.tistory.com/1343#entry1343comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:54:58 +0900</pubDate>
    </item>
    <item>
      <title>워드 프레스 플러그인이 활성 상태이지만 관리 도구에서 확인되지 않음</title>
      <link>https://bestprogram.tistory.com/1342</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;워드 프레스 플러그인이 활성 상태이지만 관리 도구에서 확인되지 않음&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;좋아요, 그래서 제게 큰 문제가 생겼어요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;아니면 적어도 큰 문제의 징후일 수도 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;최근에 시작한 사이트의 개발 버전을 만들기 위해 갔었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;모든 파일을 새 디렉토리에 복사하고 아파치 항목을 만든 다음 새 데이터베이스를 만든 다음 해당 데이터베이스에 복사했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 나서 저는 www.mysite.com 항목을 데이터베이스의 dev.mysite.com 로 변경했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;모든게 좋아보였고 아파치를 다시 시작했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;개발자 사이트에서 몇 가지 문제가 발생한 후 저는 밤을 보내기로 결정했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;생산 현장을 확인하러 갔는데 갑자기 다운되었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 Apache의 default-ssl에서 SSL 항목을 제거하고 Apache를 다시 시작했는데 괜찮았습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 관리자에게 들어가 보니 플러그인 페이지에 활성 플러그인이 굵게 표시되어 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;정확한 숫자를 알려줍니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;플러그인이 작동하고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런데 옆에 체크박스가 체크되어 있지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 저는 제가 실수로 데이터베이스를 망친 것 같다고 생각했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 이 모든 것이 시작되기 전에 만든 백업(약 30분 전)에서 DB를 날려버리고 정말 빠르게 다시 가져왔습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 똑같아 보여요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;사이트는 작동 중이지만 관리자 문제가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;조언해 주실 분 계신가요?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이건 좀 겁이 나요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 개발 사이트를 만들 때 이와 같은 문제가 발생한 적이 없으며 워드프레스가 이와 같은 미친 짓을 한 적이 없습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것이 워드프레스와 우커머스의 최신 버전을 실행하고 있다고 덧붙이겠습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;사이트가 작동하는 것 같습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 이것은 저에게 다른 문제들에 대한 걱정을 남깁니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;활성 플러그인 옆에 있는 확인란도 선택되어 있지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이게 정상인 것 같아요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;대량 작업을 여러 플러그인에 한 번에 적용하려면 직접 확인해야 합니다(예: 플러그인 세 개를 확인한 다음 대량 작업 드롭다운을 사용하여 세 개 모두를 한 번에 활성화).&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 여기서 당신의 문제를 오해했다면 죄송합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/20417766/wordpress-plugins-are-active-but-not-checked-in-admin-tool&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>Wordpress</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1342</guid>
      <comments>https://bestprogram.tistory.com/1342#entry1342comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:54:49 +0900</pubDate>
    </item>
    <item>
      <title>XML 사이트 맵에 대해 어떤 Content-Type 값을 보내야 합니까?</title>
      <link>https://bestprogram.tistory.com/1341</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;XML 사이트 맵에 대해 어떤 Content-Type 값을 보내야 합니까?&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;text/xml&quot;을 보내야 한다고 생각했는데, &quot;application/xml&quot;을 보내야 한다고 읽었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그게 중요한가요?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;누가 차이점을 설명해 줄 수 있습니까?&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc3023#section-3&quot; papago-id=&quot;2-1&quot; rel=&quot;noreferrer&quot;&gt;&lt;em papago-id=&quot;2-1-1&quot;&gt;text/&lt;/em&gt;xml&lt;/a&gt;과 &lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc3023#section-3&quot; papago-id=&quot;2-1&quot; rel=&quot;noreferrer&quot;&gt;&lt;em papago-id=&quot;2-1-3&quot;&gt;application/xml&lt;/em&gt;&lt;/a&gt;의&lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc3023#section-3&quot; papago-id=&quot;2-1&quot; rel=&quot;noreferrer&quot;&gt; 차이&lt;/a&gt;는 &lt;em papago-id=&quot;2-3&quot;&gt;charset&lt;/em&gt; 매개변수가 생략된 경우 기본 문자 인코딩입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;문자/xml과 application/xml은 charset 매개변수가 명시적으로 지정되지 않은 경우 다르게 동작합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;텍스트/xml의 기본 문자 집합(예: US-ASCII)이 어떤 이유로 불편한 경우(예: 불량 웹 서버), application/xml은 대안을 제공합니다(섹션 3.2의 application/xml 등록의 &quot;Optional parameters&quot; 참조).&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc3023#section-3.1&quot; rel=&quot;noreferrer&quot; papago-id=&quot;4-1&quot;&gt;&lt;em papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;텍스트/xml&lt;/font&gt;&lt;/em&gt;&lt;/a&gt;의 경우:&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;[RFC2046]에 따라 문자/xml 엔티티가 charset 매개변수가 생략된 상태로 수신되는 경우, MIME 프로세서 및 XML 프로세서는 기본 charset 값인 &quot;us-ascii&quot;를 사용해야 합니다[&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;ASCII].&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;XML MIME 엔티티가 HTTP를 통해 전송되는 경우 기본 charset 값은 여전히 &quot;us-ascii&quot;입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc3023#section-3.2&quot; papago-id=&quot;6-1&quot; rel=&quot;noreferrer&quot;&gt;&lt;em papago-id=&quot;6-1-0&quot;&gt;application/xml&lt;/em&gt;&lt;/a&gt;의 경우&lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc3023#section-3.2&quot; papago-id=&quot;6-1&quot; rel=&quot;noreferrer&quot;&gt;&lt;em papago-id=&quot;6-1-0&quot;&gt;:&lt;/em&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;charset 매개변수가 생략된 application/xml 엔티티가 수신되면 MIME Content-Type 헤더에 의해 charset에 대한 정보가 제공되지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;적합한 XML 프로세서는 이러한 비상 상황을 직접적으로 다루는 [XML]의 섹션 4.3.3의 요건을 따라야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 XML 프로세서가 아닌 MIME 프로세서는 응용 프로그램/xml 엔티티에서 charset 매개 변수가 누락된 경우 기본 charset을 가정하지 않아야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 &lt;em papago-id=&quot;8-1&quot;&gt;charset&lt;/em&gt; 매개변수가 생략된 경우,&lt;em papago-id=&quot;8-3&quot;&gt; 텍스트&lt;/em&gt;/xml의 문자 인코딩은 US-ASCII인 &lt;em papago-id=&quot;8-5&quot;&gt;반면 &lt;/em&gt;application/&lt;em papago-id=&quot;8-5&quot;&gt;xml&lt;/em&gt;의 경우에는 문서 자체에서 문자 인코딩을 지정할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이제 인터넷의 경험칙은 &quot;출력에는 엄격하지만 입력에는 관대하라&quot;입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;즉, 인터넷을 통해 데이터를 전달할 때는 가능한 한 기준을 충족해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 인터넷을 통해 데이터를 수신하고 해석할 때 오류를 간과하거나 추측할 수 있는 메커니즘을 구축해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 사용자의 경우 두 가지 유형 중 하나만 선택하고(&lt;em papago-id=&quot;10-1&quot;&gt;애플리케이션/xml&lt;/em&gt; 권장) 사용한 문자 인코딩을 제대로 지정해야 합니다(각 기본 문자 인코딩을 사용하여 안전하게 재생할 것을 권장하므로, &lt;em papago-id=&quot;10-3&quot;&gt;애플리케이션/xml&lt;/em&gt;의 경우 UTF-8 또는 UTF-16을 사용하십시오).&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;경험의 원칙으로 문서를 모든 웹 서버, 프록시 및 클라이언트 브라우저에서 올바르게 처리할 수 있는 가장 안전한 방법은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;application/xml 컨텐츠 유형 사용&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내용 유형에 문자 인코딩 포함(아마도 UTF-8)&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;XML 문서 자체의 인코딩 특성에 일치하는 문자 인코딩을 포함합니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;일부 브라우저가 제대로 구현하지 못하는 &lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc3023&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;15-1&quot;&gt;RFC 3023&lt;/a&gt; 규격의 경우, 다음과 같이 클라이언트가 문자 인코딩을 처리해야 하는 방식이 콘텐츠 유형의 가장 큰 차이점입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;application/xml, application/xml-dtd, application/xml-external-parse-entity 또는 application/atom+xml, application/rss+xml 또는 application/rdf+xml과 같은 application/xml 하위 유형 중 하나의 경우 문자 인코딩은 다음 순서로 결정됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Content-Type HTTP 헤더의 charset 매개변수에 주어진 인코딩&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;문서 내 XML 선언의 인코딩 속성에 주어진 인코딩,&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;UTF-8&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;text/xml, text/xml-external-parse-entity 또는 text/foo+xml과 같은 하위 유형의 경우 문서 내 XML 선언의 인코딩 속성은 무시되며, 문자 인코딩은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Content-Type HTTP 헤더의 charset 매개변수에 주어진 인코딩 또는&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;우리 ascii 말입니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;대부분의 구문 분석기는 규격을 구현하지 않으며, HTTP Context-Type을 무시하고 문서의 인코딩만 사용합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;잘못된 문서들이 너무 많이 나와 있기 때문에, 그것은 곧 바뀔 것입니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;둘 다 괜찮습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;text/xxx는 프로그램이 xxx를 이해하지 못할 경우 사용자에게 파일을 일반 텍스트로 보여주는 것이 합리적이라는 것을 의미합니다. application/xxx는 파일을 보여주는 것이 무의미하다는 것을 의미합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이러한 내용 유형은 나중에 웹 환경에서 사용되기 전에 전자 메일 첨부 파일용으로 정의되었습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;text/xml은 추가 처리 없이 텍스트로 표시되는 경우 인간에게 의미 있는 문서를 위한 것이며 application/xml은 다른 모든 것을 위한 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;28&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모든 XML 엔티티는 수정 없이 응용프로그램/xml 미디어 유형과 함께 사용하기에 적합합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 이것은 XML이 일반 텍스트로 취급될 수 있다는 사실을 이용하지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;응용프로그램/xml에 대한 명시적인 지원이 없는 MIME 사용자 에이전트(및 웹 사용자 에이전트)는 예를 들어 파일에 저장할 수 있도록 제공하여 응용프로그램/옥텟 스트림으로 처리합니다.&lt;/font&gt;&lt;/p&gt; 
 &lt;p papago-id=&quot;29&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기본적으로 XML 엔티티를 일반 텍스트로 처리해야 함을 나타내려면 text/xml 미디어 유형을 사용합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 XML 엔티티에서 사용되는 인코딩을 [RFC-2045] 및 [RFC-2046]에 설명된 텍스트 미디어 유형에 대한 요구 사항과 호환되는 인코딩(예: UTF-8)으로 제한하지만 UTF-16(HTTP 제외)은 제한하지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;30&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;— &lt;a href=&quot;http://www.ietf.org/rfc/rfc2376.txt&quot; rel=&quot;noreferrer&quot; papago-id=&quot;30-1&quot;&gt;http://www.ietf.org/rfc/rfc2376.txt&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기에 있는 다른 답변들은 무엇이 적절한지에 대한 일반적인 질문을 다루고 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Content-Type&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/q/4832357/1709587&quot; papago-id=&quot;1-1&quot;&gt;XML&lt;/a&gt; 응답의 경우 다음과 같이 &lt;a href=&quot;https://stackoverflow.com/q/4832357/1709587&quot; papago-id=&quot;1-1&quot;&gt;결론을 내립니다(웹&lt;/a&gt; 서비스 &lt;a href=&quot;https://stackoverflow.com/q/4832357/1709587&quot; papago-id=&quot;1-1&quot;&gt;응답&lt;/a&gt;의 경우 텍스트/&lt;a href=&quot;https://stackoverflow.com/q/4832357/1709587&quot; papago-id=&quot;1-1&quot;&gt;xml&lt;/a&gt;과 응용 프로그램/xml의 &lt;a href=&quot;https://stackoverflow.com/q/4832357/1709587&quot; papago-id=&quot;1-1&quot;&gt;차이점은 무엇&lt;/a&gt;입니까?).&lt;/font&gt;&lt;/font&gt;&lt;code&gt;text/xml&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;application/xml&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;허용될 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 사이트 &lt;em papago-id=&quot;3-1&quot;&gt;맵&lt;/em&gt;에 특정한 규칙이 있는지 여부는 다루지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;정답: 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;사이트맵 사양은 https://www.sitemaps.org 이며 구글을 사용하고 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;site:&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;검색에는 &lt;em papago-id=&quot;5-1&quot;&gt;mime&lt;/em&gt;, &lt;em papago-id=&quot;5-3&quot;&gt;mimype&lt;/em&gt;, &lt;em papago-id=&quot;5-5&quot;&gt;content-type&lt;/em&gt;, &lt;em papago-id=&quot;5-7&quot;&gt;application/xml&lt;/em&gt; 또는 &lt;em papago-id=&quot;5-9&quot;&gt;text/xml&lt;/em&gt;이라는 단어나 구문이 포함되어 있지 않음을 확인할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다시 말해서, 그것은 무엇에 대한 주제에 대해 완전히 침묵하고 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Content-Type&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사이트 맵을 제공하는 데 사용해야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 질문을 직접적으로 다루는 사이트맵 사양에 해설이 없는 경우, 우리는 안전하게 다음을 선택할 때와 동일한 규칙이 적용된다고 가정할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Content-Type&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다른 XML 문서의 - 즉 둘 중 하나일 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;text/xml&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;아니면&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;application/xml&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;42&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/3272534/what-content-type-value-should-i-send-for-my-xml-sitemap&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>XML</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1341</guid>
      <comments>https://bestprogram.tistory.com/1341#entry1341comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:54:43 +0900</pubDate>
    </item>
    <item>
      <title>C++에 가장 적합한 오픈 XML 파서는 무엇입니까?</title>
      <link>https://bestprogram.tistory.com/1340</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;C++에 가장 적합한 오픈 XML 파서는 무엇입니까?&lt;/font&gt;&lt;/h2&gt;
&lt;div&gt; 
 &lt;aside class=&quot;s-notice s-notice__info post-notice js-post-notice mb16&quot; role=&quot;status&quot;&gt; 
  &lt;div class=&quot;d-flex fd-column fw-nowrap&quot;&gt; 
   &lt;div class=&quot;d-flex fw-nowrap&quot;&gt; 
    &lt;div class=&quot;flex--item wmn0 fl1 lh-lg&quot;&gt; 
     &lt;div class=&quot;flex--item fl1 lh-lg&quot;&gt; 
      &lt;div papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;
&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;b papago-id=&quot;1-1&quot;&gt;이 질문에는 이미 다음&lt;/b&gt;과 같은 &lt;b papago-id=&quot;1-1&quot;&gt;답변이 있습니다&lt;/b&gt;.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;      &lt;/font&gt;&lt;/div&gt; 
     &lt;/div&gt; 
    &lt;/div&gt; 
   &lt;/div&gt; 
   &lt;div class=&quot;flex--item mb0 mt4&quot;&gt; 
    &lt;a href=&quot;/questions/9387610/what-xml-parser-should-i-use-in-c&quot; dir=&quot;ltr&quot; papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;C++에서 어떤 XML 파서를 사용해야 합니까?&lt;/font&gt;&lt;/a&gt; 
    &lt;span class=&quot;question-originals-answer-count&quot; papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(6개 답변)&lt;/font&gt;&lt;/span&gt; 
   &lt;/div&gt; 
   &lt;div class=&quot;flex--item mb0 mt8&quot; papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;
&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;닫힘&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;span class=&quot;relativetime&quot; papago-id=&quot;4-1&quot; title=&quot;2016-10-14 22:54:44Z&quot; papago-attr-id=&quot;1&quot;&gt;6년 전&lt;/span&gt;에.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;   &lt;/font&gt;&lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/aside&gt; 
&lt;/div&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;C++ 프로젝트에서 사용할 간단하고, 깨끗하고, 정확한 XML 파서를 찾고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 직접 써볼까요?&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://rapidxml.sourceforge.net/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;6-1&quot;&gt;&lt;strong papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;RapidXML&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;은 어떻습니까? RapidXML은 C++로 작성된 매우 빠르고 작은 XML DOM 파서입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 주로 내장된 환경, 컴퓨터 게임, 또는 사용 가능한 메모리 또는 CPU 처리 능력이 값비싼 기타 응용 프로그램을 목표로 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;RapidXML은 Boost Software License에 따라 라이센스가 부여되며 소스 코드는 자유롭게 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;특징들&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;동일한 데이터에서 실행되는 strlen 함수의 parsing 속도(DOM tree building 포함)에 접근하는 parsing 속도.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;최신 CPU(2008년 기준)에서 파서 처리량은 초당 약 10억 문자입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;온라인 설명서의 성능 섹션을 참조합니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;코드의 작은 메모리 풋프린트와 DOM 트리를 만들었습니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;헤더 전용 구현으로 통합 프로세스를 간소화합니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;어떠한 의무 없이 상업적 목적과 비상업적 목적을 불문하고 거의 모든 용도로 사용할 수 있는 간단한 라이센스.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;UTF-8 및 부분적으로 UTF-16, UTF-32 인코딩을 지원합니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;C++ Standard Library의 매우 작은 하위 집합을 제외한 종속성이 없는 휴대용 소스 코드.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 하위 집합은 너무 작아서 표준 라이브러리를 사용하지 않을 경우 수동으로 쉽게 에뮬레이트할 수 있습니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;한계&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;파서는 DOCTYPE 선언을 무시합니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;XML 네임스페이스는 지원되지 않습니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;파서에서 문자 유효성을 검사하지 않습니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;파서의 인터페이스가 DOM 규격에 맞지 않습니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;파서에서 특성 고유성을 검사하지 않습니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;출처 : wikipedia.org &lt;a href=&quot;http://en.wikipedia.org/wiki/Rapidxml&quot; rel=&quot;noreferrer&quot; papago-id=&quot;22-1&quot;&gt;://Rapidxml&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;hr&gt; 
&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용하는 용도에 따라 XML Data Binding을 사용할 수도 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://www.codesynthesis.com/products/xsd/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;23-1&quot;&gt;&lt;strong papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;코드합성 XSD&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;는 CodeSynthesis가 개발하고 GNU GPL 및 독점 라이선스 하에 이중 라이선스된 C++용 XML 데이터 바인딩 컴파일러입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;XML 인스턴스 규격(XML Schema)이 주어지면 주어진 어휘와 구문 분석 및 직렬화 코드를 나타내는 C++ 클래스를 생성합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;CodeSynthesis XSD의 독특한 기능 중 하나는 인메모리 C++/Tree와 스트림 지향 C++/Parser의 두 가지 다른 XML Schema to C++ 매핑을 지원한다는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;C++/Tree 매핑은 트리와 같은 인메모리 데이터 구조를 가진 전통적인 매핑입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;C++/Parser는 XML 인스턴스 문서에 저장된 정보를 어휘별 구문 분석 이벤트의 계층 구조로 나타내는 SAX와 같은 새로운 매핑입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;C++/Tree에 비해 C++/Parser 매핑을 사용하면 메모리에 맞지 않는 대형 XML 문서를 처리하거나 스트림 중심의 처리를 수행하거나 기존의 인메모리 표현을 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;출처 : wikipedia.org &lt;a href=&quot;http://en.wikipedia.org/wiki/CodeSynthesis_XSD&quot; rel=&quot;noreferrer&quot; papago-id=&quot;25-1&quot;&gt;://코드합성 XSD&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://github.com/zeux/pugixml&quot; rel=&quot;noreferrer&quot; title=&quot;퍼긱스ml&quot; papago-id=&quot;26-0&quot; papago-attr-id=&quot;5&quot;&gt;pugixml&lt;/a&gt; - C++용 경량, 단순하고 빠른 XML 파서 매우 작음(RapidXML과 비교), 매우 빠름(RapidXML과 비교), 매우 사용하기 쉽습니다(RapidXML보다 &lt;strong papago-id=&quot;26-2&quot;&gt;우수&lt;/strong&gt;함).&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;TinyXML을 사용해 봅니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;http://sourceforge.net/projects/tinyxml&quot; rel=&quot;noreferrer&quot; papago-id=&quot;28&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;http://sourceforge.net/projects/tinyxml&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p papago-id=&quot;29&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://code.google.com/p/ticpp/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;29-0&quot;&gt;TiCPP&lt;/a&gt;는 TinyXML의 &quot;더 많은 c++&quot; 버전입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;30&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;'TiCPP'는 공식 명칭인 TinyXML++의 줄임말입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 C++의 많은 장점을 사용하는 TinyXML(http://www.grinninglizard.com/tinyxml/) 의 완전히 새로운 인터페이스입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;템플릿, 예외 및 훨씬 더 나은 오류 처리.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 또한 독산소로 완전히 문서화되어 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 버전은 이전과 똑같은 방식으로 작은 인터페이스를 할 수도 있고 새로운 'tickpp' 클래스를 사용할 수도 있기 때문에 정말 멋집니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;TIXML_USE_TICPP만 정의하면 됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;VC 6.0, VC 7.0, VC 7.1, VC 8.0, MinGW gcc 3.4.5 및 Linux GNU gcc 3+에서 테스트되었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;31&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것을 시도해 보세요: http://www.applied-mathematics.net/tools/xmlParser.html&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;RapidX&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;ML이나 PUGXML보다 쉽고 빠릅니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;TinyXML은 &quot;simple parser&quot; 중 최악입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;34&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;효율성/메모리 관리가 우려되는 경우 TinyXML을 사용하지 마십시오(많은 &lt;em papago-id=&quot;34-1&quot;&gt;작은&lt;/em&gt; 블록을 할당하는 경향이 있음).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 개인적으로 좋아하는 것은 &lt;a href=&quot;http://rapidxml.sourceforge.net/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;34-3&quot;&gt;RapidXML&lt;/a&gt; 입니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;35&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://sourceforge.net/projects/gsoap2&quot; rel=&quot;nofollow noreferrer&quot; title=&quot;gSOAP&quot; papago-id=&quot;35-1&quot; papago-attr-id=&quot;6&quot;&gt;gSOAP&lt;/a&gt;는 어떻습니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;오픈 소스이며 GPL 라이선스 하에서 자유롭게 이용할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;gSOAP 툴킷은 일반적인 XML 데이터 바인딩 도구이며 C 및 C++ 데이터를 XML에 자동으로 바인딩할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;XML 파서 API를 사용할 필요는 없습니다. 데이터를 XML 형식으로 읽고 쓸 수 있게 해주십시오.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;정말로 간단한 C++ XML 파서가 필요하다면 gSOAP는 오버킬일 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 gSOAP가 2001년에 도입된 이후로 다른 모든 분야에서 유용하게 사용되었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;36&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기능 목록은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li papago-id=&quot;37&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;휴대용:&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;윈도우, 리눅스, 맥 OS X, 유닉스, VxWorks, 심비안, 팜 OS, WinCE 등&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;38&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;설치 공간이 적음: XML 웹 서비스 클라이언트 앱을 구현하기 위한 73KB의 코드와 2K 미만의 데이터(메모리 사용량을 제한하는 DOM 없음)&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;39&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;빠른 속도: 다른 도구가 주장하는 것을 믿지 마십시오. 실제 속도는 I/&lt;strong papago-id=&quot;39-1&quot;&gt;O&lt;/strong&gt;를 사용하여 측정해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;gSOAP의 경우 TCP/IP를 통한 3000개 이상의 라운드 트립 XML 메시지입니다. 직렬화를 해제하는 동안 입력/출력에 대한 단순 선형 스캔이기 때문에 XML 구문 분석 오버헤드는 무시할 수 있습니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;40&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;XML 지원: XML 스키마(XSD) 가져오기/내보내기, WSDL 가져오기/내보내기, XML 네임스페이스, XML 표준화, 첨부파일이 있는 XML(MIME), DOM의 선택적 사용, 들여쓰기가 있는 XML을 생성하기 위한 많은 옵션, UTF8 문자열 사용 등.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;41&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;XML 유효성 검사: 부분 및 전체(옵션)&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;42&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;WS 지원: WS-Security, WS-Reliable Messaging, WS-Addressing, WS-Policy, WS-SecurityPolicy 등.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;43&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;디버깅: 누출 감지, 로깅을 통한 메모리 통합 관리.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;44&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;API: 학습할 API가 없고 엔진 컨텍스트 초기화만 &quot;비누&quot;한 다음 데이터에 읽기/쓰기 인터페이스를 사용하고 엔진 컨텍스트 파괴를 &quot;비누&quot;합니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p papago-id=&quot;45&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어,&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-cxx prettyprint-override&quot;&gt;&lt;code&gt;class Address
{ 
  std::string name;
  std::vector&amp;lt;LONG64&amp;gt; number;
  time_t date;
};
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 &quot;soapcpp2&quot;를 실행합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Address&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;위의 클래스 선언을 생성합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;soap_read_Address&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;soap_write_Address&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;XML 판독기 및 기록기(예:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-cxx prettyprint-override&quot;&gt;&lt;code&gt;Address *a = new Address();
a = ...;
soap ctx = soap_new();
soap_write_Address(ctx, a);
soap_end(ctx);
soap_free(ctx);`
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 의 XML 표현을 생성합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Address a&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;물건.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;XML 네임스페이스 세부 정보(여기에 표시되지 않음)로 헤더 파일 선언에 주석을 달면 도구는 스키마도 생성합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 간단한 예입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;gSOAP 툴은 포인터 기반의 링크 구조와 (트리만이 아닌) 짝수(순환형) 그래프 등 매우 광범위한 C 및 C++ 데이터 유형을 처리할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;52&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;도움이 되길 바랍니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;53&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;TinyXML은 단순 XML 작업에 가장 적합할 수 있지만 더 많은 기능이 필요한 경우 apache 프로젝트의 Xerces를 사용해 보십시오.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;해당 기능에 대한 자세한 내용은 다음 페이지로 이동합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;http://xerces.apache.org/xerces-c/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;54&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;http://xerces.apache.org/xerces-c/&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p papago-id=&quot;55&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;TinyXML, 그리고 Boost.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;속성 트리.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;후자는 모든 공식적인 요구사항을 충족하지는 않지만 매우 간단합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;56&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 C++ &lt;strong papago-id=&quot;56-1&quot;&gt;신입&lt;/strong&gt;이고 이 페이지에서 몇 가지 다른 제안을 시도해 본 결과 &lt;a href=&quot;http://code.google.com/p/pugixml/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;56-3&quot;&gt;pugixml&lt;/a&gt;을 가장 좋아한다고 말해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;문서를 쉽게 이해할 수 있고, API 수준이 높아 제가 찾던 것입니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;57&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;나는 Gnome xml 파서를 좋아합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;오픈 소스(MIT License, 상용 제품에 사용 가능)로 빠르고 DOM과 SAX 기반의 인터페이스를 갖추고 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;http://xmlsoft.org/&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;58&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;http://xmlsoft.org/&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p papago-id=&quot;59&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://sourceforge.net/projects/tinyxml&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;59-1&quot;&gt;TinyXML&lt;/a&gt; 또는 &lt;a href=&quot;http://www.ambiera.com/irrxml/&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;59-3&quot;&gt;IrrXML&lt;/a&gt; 시도...&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;둘 다 경량 XML 파서입니다(어쨌든 TinyXML을 사용하는 것을 추천합니다).&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;60&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/170686/what-is-the-best-open-xml-parser-for-c&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>XML</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1340</guid>
      <comments>https://bestprogram.tistory.com/1340#entry1340comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:54:36 +0900</pubDate>
    </item>
    <item>
      <title>R 특정 데이터 프레임 열에 적용() 함수</title>
      <link>https://bestprogram.tistory.com/1339</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;R 특정 데이터 프레임 열에 적용() 함수&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;데이터 프레임에 적용 기능을 사용하고 싶은데 마지막 5열에만 적용하고 싶습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;B&amp;lt;- by(wifi,(wifi$Room),FUN=function(y){apply(y, 2, A)})
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 y의 모든 열에 A를 적용합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;B&amp;lt;- by(wifi,(wifi$Room),FUN=function(y){apply(y[4:9], 2, A)})
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이는 y의 4-9열에만 A를 적용하지만, B의 총 반환은 처음 3열에서 분리됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 여전히 그것들을 원합니다, 단지 A가 적용되는 것을 원하지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;wifi[,1:3]+B 
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 제가 기대했던/원했던 것을 하지 못합니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;lapply&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;아마도 그것보다 더 나은 선택일 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;apply&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기, apply가 먼저 data.frame을 배열에 강제 적용합니다. 즉, 모든 열이 동일한 유형을 가져야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;상황에 따라 의도하지 않은 결과가 발생할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;패턴은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;df[cols] &amp;lt;- lapply(df[cols], FUN)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;cols' 벡터는 변수 이름 또는 인덱스일 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 가능할 때마다 이름을 사용하는 것을 선호합니다(열 순서 변경에 강함).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그렇다면 당신의 경우 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;wifi[4:9] &amp;lt;- lapply(wifi[4:9], A)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;열 이름 사용 예:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;wifi &amp;lt;- data.frame(A=1:4, B=runif(4), C=5:8)
wifi[c(&quot;B&quot;, &quot;C&quot;)] &amp;lt;- lapply(wifi[c(&quot;B&quot;, &quot;C&quot;)], function(x) -1 * x)
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예제 data.frame 및 예제 함수 사용(모든 값에 +1만 적용)&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;A &amp;lt;- function(x) x + 1
wifi &amp;lt;- data.frame(replicate(9,1:4))
wifi

#  X1 X2 X3 X4 X5 X6 X7 X8 X9
#1  1  1  1  1  1  1  1  1  1
#2  2  2  2  2  2  2  2  2  2
#3  3  3  3  3  3  3  3  3  3
#4  4  4  4  4  4  4  4  4  4

data.frame(wifi[1:3], apply(wifi[4:9],2, A) )
#or
cbind(wifi[1:3], apply(wifi[4:9],2, A) )

#  X1 X2 X3 X4 X5 X6 X7 X8 X9
#1  1  1  1  2  2  2  2  2  2
#2  2  2  2  3  3  3  3  3  3
#3  3  3  3  4  4  4  4  4  4
#4  4  4  4  5  5  5  5  5  5
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또는 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;data.frame(wifi[1:3], lapply(wifi[4:9], A) )
#or
cbind(wifi[1:3], lapply(wifi[4:9], A) )

#  X1 X2 X3 X4 X5 X6 X7 X8 X9
#1  1  1  1  2  2  2  2  2  2
#2  2  2  2  3  3  3  3  3  3
#3  3  3  3  4  4  4  4  4  4
#4  4  4  4  5  5  5  5  5  5
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 작업은 다음과 같이 쉽게 수행할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;dplyr&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;꾸러미의&lt;/font&gt;&lt;/font&gt;&lt;code&gt;across&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기능성.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/a/18503273&quot; papago-id=&quot;15-1&quot;&gt;Late mail&lt;/a&gt;에서 제시한 &lt;a href=&quot;https://stackoverflow.com/a/18503273&quot; papago-id=&quot;15-1&quot;&gt;데이터&lt;/a&gt; 구조 차용하기:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;A &amp;lt;- function(x) x + 1
wifi &amp;lt;- data.frame(replicate(9,1:4))
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;함수를 적용할 열을 다음과 같이 색인별로 나타낼 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;library(dplyr)
wifi %&amp;gt;% 
   mutate(across(4:9, A))
#  X1 X2 X3 X4 X5 X6 X7 X8 X9
#1  1  1  1  2  2  2  2  2  2
#2  2  2  2  3  3  3  3  3  3
#3  3  3  3  4  4  4  4  4  4
#4  4  4  4  5  5  5  5  5  5
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또는 이름:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;wifi %&amp;gt;% 
   mutate(across(X4:X9, A))
#  X1 X2 X3 X4 X5 X6 X7 X8 X9
#1  1  1  1  2  2  2  2  2  2
#2  2  2  2  3  3  3  3  3  3
#3  3  3  3  4  4  4  4  4  4
#4  4  4  4  5  5  5  5  5  5
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급한 바와 같이, 당신은 단지 표준 R을 원합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;apply&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;열에 적용되는 함수(&lt;/font&gt;&lt;/font&gt;&lt;code&gt;MARGIN=2&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;20&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;):&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;wifi[,4:9] &amp;lt;- apply(wifi[,4:9], MARGIN=2, FUN=A)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또는 줄여서:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;wifi[,4:9] &amp;lt;- apply(wifi[,4:9], 2, A)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음을 사용하여 4:9 열을 제자리로 업데이트합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;A()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기능.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;자, 이제, 예를 들어,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;na.rm&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;24&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;에 대한 논쟁입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;A()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;25&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 당연히 그래야 할 겁니다&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;통과할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;na.rm=T&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;26&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;계산에서 NA 값을 제거하려면 다음과 같이 하십시오.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;wifi[,4:9] &amp;lt;- apply(wifi[,4:9], MARGIN=2, FUN=A, na.rm=T)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용자 지정 함수에 전달하려는 다른 인수도 마찬가지입니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;28&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;가장 쉬운 방법은 돌연변이 함수를 사용하는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;dataFunctionUsed &amp;lt;- data %&amp;gt;% 
  mutate(columnToUseFunctionOn = function(oldColumn ...))
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;29&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신이 원하는 것은 &lt;a href=&quot;https://www.computerworld.com/article/2486425/business-intelligence/business-intelligence-4-data-wrangling-tasks-in-r-for-advanced-beginners.html?page=3&quot; papago-id=&quot;29-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;maply&lt;/a&gt;라고 생각합니다&lt;a href=&quot;https://www.computerworld.com/article/2486425/business-intelligence/business-intelligence-4-data-wrangling-tasks-in-r-for-advanced-beginners.html?page=3&quot; papago-id=&quot;29-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;.&lt;/a&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;함수를 모든 열에 적용한 다음 원하지 않는 열을 삭제할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 다른 열에 다른 함수를 적용하는 경우 dplyr 패키지에서 &lt;a href=&quot;https://cran.r-project.org/web/packages/dplyr/vignettes/dplyr.html&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;29-3&quot;&gt;변형&lt;/a&gt;된 것을 원하는 것 같습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;30&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/18503177/r-apply-function-on-specific-dataframe-columns&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>DataFrame</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1339</guid>
      <comments>https://bestprogram.tistory.com/1339#entry1339comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:54:29 +0900</pubDate>
    </item>
    <item>
      <title>모드별 _full_group_only의 이점은 무엇입니까?</title>
      <link>https://bestprogram.tistory.com/1338</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모드별 _full_group_only의 이점은 무엇입니까?&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;mysql을 업데이트하고 MySQL 버전 5.6.17에서 버전 5.7.14로 변경했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;sql 쿼리에 오류가 있기 때문에&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;실제로 많은 쿼리가 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SELECT count (id) as nbr, lic from prep WHERE key = '18'
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 제게 이런 오류가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;1140 - GROUP BY가 없는 집계 쿼리에서 SELECT 목록의 식 #2에 집계되지 않은 열 'operator.preparation.orig_lic'이 포함되어 있습니다. 이는 sql_mode=only_full_group_by와 호환되지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;몇 가지 조사 끝에 Mysql 5.7.14가 기본적으로 ONLY_FULL_GROUP_BY를 활성화한다는 것을 알게 되었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기본적으로 활성화된 이유는 무엇입니까?&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(성능을 위한) 최선의 해결책은 무엇입니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;쿼리에서 ONLY_FULL_GROUP_BY를 비활성화하시겠습니까? 아니면 'group by'를 추가하시겠습니까?&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;감사해요.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;10-0&quot;&gt;only_full_group_by&lt;/strong&gt; &lt;strong papago-id=&quot;10-0&quot;&gt;=&lt;/strong&gt; 는 MySQL 엔진에 대해 다음과 같이 말합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;적용하지않음&lt;/font&gt;&lt;/font&gt;&lt;code&gt;GROUP BY&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;어떤 결과를 보여줄지 의문이 들 때, 그리고 오류를 던질 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;경우에만 &lt;strong papago-id=&quot;11-1&quot;&gt;적용&lt;/strong&gt;합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Group By&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;구체적으로 당신에게 무엇을 해야 하는지 알려줍니다. 즉, 언제.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Group By&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;꽉 차 있고 완벽합니다!&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;14-0&quot;&gt;only_full_group_by&lt;/strong&gt; &lt;strong papago-id=&quot;14-0&quot;&gt;=&lt;/strong&gt; &lt;strong papago-id=&quot;14-0&quot;&gt;off&lt;/strong&gt;가 MySQL 엔진에 알립니다: 항상 적용&lt;/font&gt;&lt;/font&gt;&lt;code&gt;GROUP BY&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 어떤 결과를 선택해야 할지 궁금하다면, 그냥 무작위로 하나를 고르세요!&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용하시면 끌 필요가 없습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;GROUP BY&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제대로!&lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;표: 사용자&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; id   |  name
----------------
  1      ali
  2      john
  3      ali
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용할때&lt;/font&gt;&lt;/font&gt;&lt;code&gt;GROUP BY&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;에서&lt;/font&gt;&lt;/font&gt;&lt;code&gt;name&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;열:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SELECT * FROM users GROUP BY name;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;두 가지 가능한 결과가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;  1      ali
  2      john     
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;오어&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;  2      john
  3      ali
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;MYSQL은 어떤 결과를 선택해야 할지 모릅니다!&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;서로 다르기 때문에&lt;/font&gt;&lt;/font&gt;&lt;code&gt;id&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;s 하지만 둘 다 가지고 있습니다&lt;/font&gt;&lt;/font&gt;&lt;code&gt;name=ali&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;28&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;해결책 1:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;선택만.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;name&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;필드:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SELECT name FROM users GROUP BY name;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;31&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;결과:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;  ali
  john     
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 완벽한 해결책입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음을 수행하는 열 제거&lt;/font&gt;&lt;/font&gt;&lt;code&gt;GROUP BY&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;혼란스러운.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 당신이 무엇을 하고 있는지를 알고 있다는 뜻입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;보통 당신은 필요하지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;34&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;필요한 경우 &lt;strong papago-id=&quot;34-1&quot;&gt;솔루션&lt;/strong&gt; 3으로 이동하십시오!&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;35&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;해결책 2:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;끄기&lt;/font&gt;&lt;/font&gt;&lt;code&gt;only_full_group_by&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;37&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;. MYSQL은 두 가지 가능한 결과 중 하나를 &lt;strong papago-id=&quot;37-1&quot;&gt;무작위&lt;/strong&gt;로 선택할 것입니다!! (당신이 정말로 무엇을 신경쓰지 않아도 괜찮습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;id&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;38&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;를 선택하지만 쿼리 후 즉시 &lt;strong papago-id=&quot;38-1&quot;&gt;전원을 켜서&lt;/strong&gt; 향후 그룹에서 예기치 않은 동작을 방지해야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;39&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;해결책3&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Aggregate&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;와 같은 기능을 하는&lt;/font&gt;&lt;/font&gt;&lt;code&gt;MIN()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;24&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;MAX()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;25&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;MYSQL이 무엇을 선택해야 하는지 결정할 수 있도록 도와줍니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;44&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어,&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SELECT MAX(id), name FROM users GROUP BY name;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;45&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;결과:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;  2      john     
  3      ali
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;26&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것은 선택할 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ali&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;27&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;최대를 가지는 행&lt;/font&gt;&lt;/font&gt;&lt;code&gt;id&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;28&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;29&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;최상의&quot; 해결책은 올바른 작업을 수행하고 다음을 추가하여 쿼리를 수정하는 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;group by&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;30&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 오류를 무시하는 것이 아닙니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음과 같은 오류를 재정의할 경우&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ONLY_FULL_GROUP_BY&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;31&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;현재 발생하고 있는 오류는 사라지지만 이로 인해 두 가지 새로운 오류가 발생할 가능성이 높습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;52&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;집계되지 않은 값에 집계된 값을 포함하는 예기치 않은 결과, 오류를 방지하려고 하는 문제입니다.&lt;/font&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;53&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다른 환경에서 쿼리를 실행할 수 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 데이터베이스를 사용하지 않는 다른 사용자에게 설정을 전환하거나 코드를 전달해야 하는 경우 쿼리에서 오류가 다시 발생합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;오류나 기타 오류를 무시하는 습관이 생기면 코드를 다른 사람이 사용할 수 없게 되고 코드의 유용성이 심각하게 손상될 수 있습니다.&lt;/font&gt;&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;p papago-id=&quot;54&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;일반적으로 오류가 발생하는 경우 컴파일러/옵티마이저에게 무시하라고 말할 것이 아니라 수정하십시오.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;55&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;올바른 해결책은 다음을 기준으로 그룹화하는 열을 추가하는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SELECT count (id) as nbr, lic 
from prep 
WHERE key = '18'
group by lic
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;56&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 당신이 가지고 있는 지수에 달려있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;32&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ONLY_FULL_GROUP_BY&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;33&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;는 SQL에서 집계 함수에 대한 일반적인 동작이며 집계되지 않은 열 결과에 대한 일상적인 결과의 모호성을 방지하기 위해 5.7을 채택했습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;59&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/45484068/what-are-the-benefits-of-only-full-group-by-mode&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>MYSQL</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1338</guid>
      <comments>https://bestprogram.tistory.com/1338#entry1338comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:54:21 +0900</pubDate>
    </item>
    <item>
      <title>REST API woecommerce - GET/고객의 모든 고객에게 표시되지 않음</title>
      <link>https://bestprogram.tistory.com/1337</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;REST API woecommerce - GET/고객의 모든 고객에게 표시되지 않음&lt;/font&gt;&lt;/h2&gt;
&lt;h2 papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;문제요약&lt;/font&gt;&lt;/h2&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;최신 woocmerce &lt;strong papago-id=&quot;2-5&quot;&gt;API(v3&lt;/strong&gt;)를 사용하여 &lt;strong papago-id=&quot;2-3&quot;&gt;POSTMAN&lt;/strong&gt;으로 &lt;strong papago-id=&quot;2-1&quot;&gt;모든 고객을 불러오려고&lt;/strong&gt; 합니다&lt;strong papago-id=&quot;2-5&quot;&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;GET/customers 
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 작은 &lt;strong papago-id=&quot;3-1&quot;&gt;세그먼트만 반환&lt;/strong&gt;됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;반품된 고객 수는 28명(&lt;strong papago-id=&quot;3-3&quot;&gt;X-WP-Total&lt;/strong&gt;)으로 시스템에 있는 150명 이상의 고객보다 훨씬 적습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;왜 모든 고객이 아닌 일부만 반품되는지에 대한 아이디어가 있습니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것이 내가 우커머스를 구성하는 방법과 관련이 있습니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;아니면 제가 API를 잘못 사용하고 있는 건가요?&lt;/font&gt;&lt;/p&gt; 
&lt;h2 papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내가 시도한 것&lt;/font&gt;&lt;/h2&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;6-1&quot;&gt;저&lt;/strong&gt;의 목표는 &lt;strong papago-id=&quot;6-3&quot;&gt;전화/이메일로 고객을 조회&lt;/strong&gt;하고 주문한 고객을 불러오는 작은 애플리케이션을 만드는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;부르기&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;GET/customers 
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모든 고객 중 작은 부분만 반환하고 나머지는 생략합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;em papago-id=&quot;9-4&quot;&gt;예&lt;/em&gt;를 들어&lt;em papago-id=&quot;9-4&quot;&gt; GET&lt;/em&gt;/&lt;em papago-id=&quot;9-2&quot;&gt;고객&lt;/em&gt;에서 누락된 &lt;strong papago-id=&quot;9-0&quot;&gt;고객&lt;/strong&gt;은 빈 배열을 반환합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;GET/customers?email=...
GET/customers?search=...
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;요청은 누락된 고객에게는 빈 배열을 반환하지만 다음에서 누락되지 않은 고객에게는 적용됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;GET/customers 
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 누락된 것으로 알려진 고객 ID를 고려할 때 다음으로 요청을 보내 해당 고객을 조회할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;GET/customer/{ID} 
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;전혀 말이 안 되는 일입니다&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;솔루션은 다음을 설정하는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;GET/customers?role=all
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;GET/고객은 기본적으로 '고객'의 역할을 하는 고객으로만 돌아간다는 것을 알았습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 저도 멤버십/구독을 이용하기 때문에 고객이 멤버십을 선택할 때마다 자동으로 새로운 역할('구독자')을 부여받게 됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 해당 고객은 더 이상 자신의 역할이 '고객'이 아니기 때문에 응답 대상에 포함되지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것이 같은 문제를 우연히 발견한 사람들에게 도움이 되기를 바랍니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/55543951/rest-api-woocommerce-not-showing-all-customers-on-get-customers&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>Wordpress</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1337</guid>
      <comments>https://bestprogram.tistory.com/1337#entry1337comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:54:14 +0900</pubDate>
    </item>
    <item>
      <title>View 작성 시 Oracle 오류 - ORA-01720</title>
      <link>https://bestprogram.tistory.com/1336</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;View 작성 시 Oracle 오류 - ORA-01720&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Oracle 11.2.0.4.0 환경에서 문제가 발생하여 어려움을 겪고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;데이터를 선택할 수 있는 작동 중인 COMPLED 뷰가 존재하지만 &quot;ORA-01720&quot; 오류가 발생하지 않으면 변경할 수 없습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내 설정에 대한 정보:&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 간단하게 &quot;A&quot;와 &quot;B&quot; 두 개의 스키마를 가지고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;스키마 &quot;A&quot;는 &quot;TABLE1&quot;, &quot;TABLE2&quot;, &quot;TABLE3&quot;을 소유하고 있으며 스키마 &quot;B&quot;는 현재 3개의 테이블에서 데이터를 선택하는 데 필요한 권한을 가지고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 조회를 통해 데이터를 선택할 수 있고, 존재하는 뷰도 선택할 수 있음을 확인했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;스키마 &quot;B&quot;가 세 개의 테이블 내에서 스키마 &quot;A&quot; 데이터에 대한 액세스를 허용했을 때 작업 뷰를 변경하는 것을 방해할 수 있는 것이 무엇인지 아는 사람이 있습니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;구글과 여러 사이트에서 &quot;with grant option&quot; 선택권을 부여하자는 제안을 여러 번 보았는데, 제가 시도해본 적이 있지만, 제가 grantee가 아닌 소유자로부터 직접 데이터를 선택할 때 어떻게 적용될지 알 수가 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;오류 메시지는 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SQL Error: ORA-01720: grant option does not exist for 'A.TABLE1'
01720. 00000 -  &quot;grant option does not exist for '%s.%s'&quot;
*Cause:    A grant was being performed on a view or a view was being replaced
           and the grant option was not present for an underlying object.
*Action:   Obtain the grant option on all underlying objects of the view or
           revoke existing grants on the view.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;오라클 11에 도입된 제한 사항입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;소유하고 있지 않지만 권한이 부여된 테이블을 기존 보기에 추가할 수 없습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;create or replace force view&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;. 먼저 보기를 삭제하고 재생성해야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/36551639/oracle-error-when-creating-view-ora-01720&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>Oracle</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1336</guid>
      <comments>https://bestprogram.tistory.com/1336#entry1336comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:54:07 +0900</pubDate>
    </item>
    <item>
      <title>ACF의 유연한 컨텐츠에서 마지막 행을 가져와 다른 페이지에 표시</title>
      <link>https://bestprogram.tistory.com/1335</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;ACF의 유연한 컨텐츠에서 마지막 행을 가져와 다른 페이지에 표시&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 1면과 &quot;기본적인 내용 페이지&quot;라는 두 페이지를 만들었습니다.&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 '기본 콘텐츠 페이지'에서는 텍스트와 이미지가 다른 유연한 콘텐츠를 만들었습니다.&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;맨 앞줄에 &lt;strong papago-id=&quot;2-1&quot;&gt;마지막&lt;/strong&gt; 줄을 표시하는 방법을 검색해봤는데, 가능한가요?&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;업데이트 : 마지막 코드는 @Nick Surmanidze 덕분에 &quot;post object field&quot;(&quot;relation&quot;이라는 이름의 &quot;post object field&quot;)를 사용하여 다른 페이지에서 콘텐츠를 가져올 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;마지막 줄을 어떻게 잡느냐의 문제만 남습니다.&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;?php
$post_object = get_field('relation');

if( $post_object ):
// override $post
$post = $post_object;
setup_postdata( $post );
?&amp;gt;
        &amp;lt;div&amp;gt;
                &amp;lt;?php
// check if the flexible content field has rows of data

if( have_rows('selection') ):
// loop through the rows of data
while ( have_rows('selection') ) :
the_row();

if( get_row_layout() == 'selectionselection' ):
?&amp;gt;
                            &amp;lt;div class=&quot;titre-soustitre&quot;&amp;gt;
                                &amp;lt;div class=&quot;menu-content&quot; data-id=&quot;id-&amp;lt;?php  the_sub_field('id'); ?&amp;gt;&quot;&amp;gt;
                                    &amp;lt;p class=&quot;demo bis&quot;&amp;gt;&amp;lt;span class=&quot;sub&quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
                                    &amp;lt;a href=&quot;#&quot; class=&quot;expander&quot;&amp;gt;&amp;lt;h1&amp;gt;&amp;lt;p class=&quot;demo title&quot;&amp;gt;&amp;lt;?php  the_sub_field('title'); ?&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/h1&amp;gt;&amp;lt;/a&amp;gt;              
                                    &amp;lt;p class=&quot;demo bis&quot;&amp;gt;&amp;lt;span class=&quot;sub&quot;&amp;gt;&amp;lt;?php  the_sub_field('subhead'); ?&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
                                &amp;lt;/div&amp;gt;
                            &amp;lt;/div&amp;gt;
                &amp;lt;?php 
endif;
endwhile; else :
// no layouts found
endif;
?&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;?php  wp_reset_postdata();// IMPORTANT - reset the $post object so the rest of the page works correctly  ?&amp;gt;
        &amp;lt;?php  endif; ?&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h1 papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;업데이트 2 : 이해를 돕기 위해:&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기 $post_object를 통해 다른 페이지의 ROW가 있습니다.&lt;/font&gt;&lt;/h1&gt; 
&lt;pre&gt;&lt;code&gt;                &amp;lt;?php
                // check if the flexible content field has rows of data
                if( have_rows('selection') ):
                // loop through the rows of data
                while ( have_rows('selection') ) : the_row();
                if( get_row_layout() == 'selectionselection' ):?&amp;gt;





                            &amp;lt;div class=&quot;titre-soustitre&quot;&amp;gt;


                                &amp;lt;div class=&quot;menu-content&quot; data-id=&quot;id-&amp;lt;?php the_sub_field('id');?&amp;gt;&quot;&amp;gt;


                                    &amp;lt;p class=&quot;demo bis&quot;&amp;gt;&amp;lt;span class=&quot;sub&quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
                                    &amp;lt;a href=&quot;#&quot; class=&quot;expander&quot;&amp;gt;&amp;lt;h1&amp;gt;&amp;lt;p class=&quot;demo title&quot;&amp;gt;&amp;lt;?php the_sub_field('title');?&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/h1&amp;gt;&amp;lt;/a&amp;gt;              
                                    &amp;lt;p class=&quot;demo bis&quot;&amp;gt;&amp;lt;span class=&quot;sub&quot;&amp;gt;&amp;lt;?php the_sub_field('subhead');?&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;





                                &amp;lt;/div&amp;gt;

                            &amp;lt;/div&amp;gt;





                &amp;lt;?php endif;
                endwhile;
                else :
                // no layouts found
                endif;

                ?&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;홈 페이지에 사용자 정의 필드를 추가해야 할 것 같습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;post / page&quot; 필드가 될 수 있습니다(정확하게 어떻게 호출되는지 기억하지 마십시오).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 아이디어는 홈 페이지 백엔드에 리피터 또는 플렉서블 콘텐츠 필드의 마지막 행을 가져올 페이지 ID를 표시하는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;홈 페이지의 페이지 ID를 나타내기 위해 사용자 정의 필드를 추가합니다.&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이제 홈페이지 템플릿에 $otherPageId = get_field ('your_other_page_id')와 같은 것을 써야 합니다.&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러면 코드에 있는 것과 동일한 것을 실행할 수 있지만,&lt;/font&gt;&lt;/p&gt; &lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;have_rows ('selection')&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;function add second parameter&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; have_rows('selection', $otherPageId)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;어느 페이지에서 이 필드를 검색할 것인지를 나타내기 위해.&lt;/font&gt;&lt;/p&gt; 
&lt;ol start=&quot;4&quot;&gt; 
 &lt;li papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;마지막 행을 얻기 위해서는 여러 가지 방법을 사용할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;하나는 배열에 행 콘텐츠를 할당한 다음 배열의 마지막 항목을 사용하는 것입니다. 또는 ACF 방식으로 수행하는 방법을 알려줄 수 있는 또 다른 토막이 있습니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;$ repeater = get_field ('repeater')&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;$last_row = ($repeter);&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;echo $last_row['sub_field'];&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/37722807/get-last-row-from-an-acf-flexible-content-and-display-it-on-another-page&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>Wordpress</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1335</guid>
      <comments>https://bestprogram.tistory.com/1335#entry1335comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:54:01 +0900</pubDate>
    </item>
    <item>
      <title>바우어와 함께 부트스트랩 CSS만 설치할 수 있습니까?</title>
      <link>https://bestprogram.tistory.com/1334</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;바우어와 함께 부트스트랩 CSS만 설치할 수 있습니까?&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Yeoman을 통해 새로운 Angular 프로젝트를 시작하면 Twitter Bootstrap을 포함할 것인지 묻습니다(Sass flavor를 사용하고 있습니다).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이렇게 하는 것은 스타일과 스크립트를 모두 포함합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 (jQuery에 의존하는) Bootstrap의 스크립트 &lt;a href=&quot;http://angular-ui.github.io/bootstrap/&quot; papago-id=&quot;1-1&quot; rel=&quot;noreferrer&quot;&gt;대신&lt;/a&gt; UI &lt;a href=&quot;http://angular-ui.github.io/bootstrap/&quot; papago-id=&quot;1-1&quot; rel=&quot;noreferrer&quot;&gt;Bootstrap&lt;/a&gt;을 사용하고 싶습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서, Bower와 함께 Bootstrap의 스타일(Sass가 좋음)만 설치 가능합니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;아니면 부트스트랩 스타일을 수동으로 다운로드하여 포함시키기만 하면 됩니까?&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;나는 바우어에서 CSS 전용 부트스트랩 패키지를 하나 알고 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;bootstrap-css-only&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;; 그러나 사전 컴파일된 CSS와 함께 제공되지만 SAS는 제공되지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;덧셈만&lt;/font&gt;&lt;/font&gt;&lt;code&gt;exclude&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;grunt bower에서 옵션&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;작업 설치 및 절&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;설치 작업은 제외된 파일을 html 파일에 주입하지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;bowerInstall: {
  app: {
    src: ['&amp;lt;%= yeoman.app %&amp;gt;/index.html'],
    exclude: ['bower_components/bootstrap/dist/js/bootstrap.js'],
    ignorePath: '&amp;lt;%= yeoman.app %&amp;gt;/'
  }
},
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 &lt;a href=&quot;https://stackoverflow.com/a/23289270/265570&quot; papago-id=&quot;4-1&quot;&gt;답변&lt;/a&gt;을 바탕으로 이 내용을 추가할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.bowerrc&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;부트스트랩 JS 파일 삭제하기&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;{ &quot;directory&quot;: &quot;bower_components&quot;, &quot;scripts&quot;: { &quot;postinstall&quot;: &quot;rm -rf bower_components/bootstrap-sass-official/assets/javascripts&quot; } }&lt;/code&gt;&lt;/p&gt;&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;뱃머리가 없으면&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;승인된 답변에서 언급된 대로 grunt 파일에 설치 작업을 수행합니다. 이 작업은 wiredep 작업에서도 수행됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; wiredep: {
  app: {
    src: ['&amp;lt;%= yeoman.app %&amp;gt;/index.html'],
    exclude: ['bower_components/bootstrap/dist/js/bootstrap.js'],
    ignorePath:  /\.\.\//
  },
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음을 실행할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;bower install bootstrap-css-only
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/21007470/possible-to-install-just-bootstrap-css-with-bower&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>angularJS</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1334</guid>
      <comments>https://bestprogram.tistory.com/1334#entry1334comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:53:53 +0900</pubDate>
    </item>
    <item>
      <title>Wordpress WooCommerce 다른 가격 예약</title>
      <link>https://bestprogram.tistory.com/1333</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Wordpress WooCommerce 다른 가격 예약&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;WordPress용 WooCommerce booking plugin을 구매한 이유는 고객이 트레일러를 빌리고 싶어하기 때문입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;서로 다른 가격에 문제가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;트레일러 A의 가격은 하루에 60유로입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;누군가가 주말동안 그것을 빌릴때 그것은 주말동안 100유로 입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;일주일 동안은 200유로, 한달 동안은 500유로가 될 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;문제는 날짜 범위가 그런 식으로 작동하지 않는다는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://i.stack.imgur.com/CMXTF.png&quot; rel=&quot;nofollow noreferrer&quot;&gt;&lt;img src=&quot;https://i.stack.imgur.com/CMXTF.png&quot; alt=&quot;Range dat WooCommerce&quot;&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 같은 물건을 일주일 동안 2번 예약했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;하나는 일요일부터 토요일까지 그리고 다른 하나는 월요일부터 일요일까지.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;둘 다 1주일인데 주말 범위일이라 가격이 다릅니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것에 대한 올바른 방법이 있습니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저도 한 달 예약하면 같은 문제가 있어요, 다른 날짜 범위도 걸려요.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;편집:&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 날짜 범위를 사용하면 더 효과적이지만 100% 좋은 방법은 아닙니다. 관리자 및 프론트엔드에서 클라이언트에 라운드 값을 사용하고 싶기 때문입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://i.stack.imgur.com/FXgqW.png&quot; rel=&quot;nofollow noreferrer&quot;&gt;&lt;img src=&quot;https://i.stack.imgur.com/FXgqW.png&quot; alt=&quot;Cart WooCommerce date ranges&quot;&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;소수점을 &lt;strong papago-id=&quot;0-1&quot;&gt;0&lt;/strong&gt;으로 설정합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;WooCommerce &amp;gt; Settings &amp;gt; General &amp;gt; Number of decimals&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;2-1&quot;&gt;199.50유로&lt;/strong&gt;인 &lt;strong papago-id=&quot;2-3&quot;&gt;제품&lt;/strong&gt;을 200유로로 표시합니다. 프론트엔드에는 적용되지만 관리자에게는 적용되지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;마지막으로 다음으로 이동합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;WooCommerce &amp;gt; Status &amp;gt; Tools &amp;gt; WooCommerce transients&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;4-1&quot;&gt;Clear&lt;/strong&gt; Transients(&lt;strong papago-id=&quot;4-1&quot;&gt;과도&lt;/strong&gt; 지우기)를 클릭합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/49728542/wordpress-woocommerce-booking-different-prices&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>Wordpress</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1333</guid>
      <comments>https://bestprogram.tistory.com/1333#entry1333comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:53:46 +0900</pubDate>
    </item>
    <item>
      <title>두 개의 데이터 프레임을 결합하려면 어떻게 해야 합니까?</title>
      <link>https://bestprogram.tistory.com/1332</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;두 개의 데이터 프레임을 결합하려면 어떻게 해야 합니까?&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;초기 데이터 프레임이 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;D&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;. 다음과 같이 두 개의 데이터 프레임을 추출합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;A = D[D.label == k]
B = D[D.label != k]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;합치고 싶습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;A&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;B&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;하나의 데이터 프레임으로 이동할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;데이터의 순서는 중요하지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 우리가 샘플을 채취할 때&lt;/font&gt;&lt;/font&gt;&lt;code&gt;A&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;B&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;부터&lt;/font&gt;&lt;/font&gt;&lt;code&gt;D&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 그들은 그들의 지수를 유지합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;D&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;blockquote&gt; 
 &lt;p&gt;&lt;font papago-translate=&quot;splited&quot;&gt;&lt;strong papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용하지 않음:&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt; &lt;code&gt;DataFrame.append&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Series.append&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;는 &lt;a href=&quot;https://pandas.pydata.org/pandas-docs/stable/whatsnew/v1.4.0.html#deprecated-dataframe-append-and-series-append&quot; papago-id=&quot;11-1&quot; rel=&quot;noreferrer&quot;&gt;v1.4.0&lt;/a&gt;에서 더 &lt;a href=&quot;https://pandas.pydata.org/pandas-docs/stable/whatsnew/v1.4.0.html#deprecated-dataframe-append-and-series-append&quot; papago-id=&quot;11-1&quot; rel=&quot;noreferrer&quot;&gt;이상&lt;/a&gt; 사용되지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;hr&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용하다&lt;/font&gt;&lt;/font&gt;&lt;code&gt;append&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;df_merged = df1.append(df2, ignore_index=True)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 그들의 지수를 유지하기 위해, set.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ignore_index=False&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용하다&lt;/font&gt;&lt;/font&gt;&lt;code&gt;pd.concat&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여러 데이터 프레임을 결합하는 방법:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;df_merged = pd.concat([df1, df2], ignore_index=True, sort=False)
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;행 간에 병합:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;df_row_merged = pd.concat([df_a, df_b], ignore_index=True)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여러 열에 병합:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;df_col_merged = pd.concat([df_a, df_b], axis=1)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;21&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;빅 데이터를 사용하고 있으며 여러 데이터셋을 연결해야 하는 경우&lt;/font&gt;&lt;/font&gt;&lt;code&gt;concat&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여러 번의 경우 성능 집약적일 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;매번 새 df를 만들지 않으려면 대신 변경 사항을 집계하고 호출할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;concat&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;24&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;한 번만:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-py prettyprint-override&quot;&gt;&lt;code&gt;frames = [df_A, df_B]  # Or perform operations on the DFs
result = pd.concat(frames)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이는 해당 섹션 하단의 &lt;a href=&quot;http://pandas.pydata.org/pandas-docs/stable/merging.html#concatenating-objects&quot; rel=&quot;noreferrer&quot; papago-id=&quot;25-1&quot;&gt;연결&lt;/a&gt;된 개체 아래에 있는 판다 문서에서 지적한 내용입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;22-0&quot;&gt;참고&lt;/strong&gt;: 하지만 주목할 필요가 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;concat&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;27&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(따라서)&lt;/font&gt;&lt;/font&gt;&lt;code&gt;append&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;28&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;)에서 데이터의 전체 복사본을 만들고, 이 기능을 지속적으로 재사용하면 성능이 크게 향상될 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;여러 데이터 세트에 걸쳐 작업을 사용해야 하는 경우 목록 이해력을 사용합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;29&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;첫번째 데이터 프레임의 값을 업데이트/교체하려는 경우&lt;/font&gt;&lt;/font&gt;&lt;code&gt;df1&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;30&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;두번째 데이터 프레임의 값으로&lt;/font&gt;&lt;/font&gt;&lt;code&gt;df2&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;31&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;. 다음 단계에 따라 작업을 수행할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;32&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;32-0&quot;&gt;Step &lt;/strong&gt;1 :&lt;strong papago-id=&quot;32-0&quot;&gt; &lt;/strong&gt;첫번째 데이터 프레임의 인덱스 설정 (df1)&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;df1.set_index('id')
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;33&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;33-0&quot;&gt;Step &lt;/strong&gt;2 :&lt;strong papago-id=&quot;33-0&quot;&gt; &lt;/strong&gt;두번째 데이터 프레임의 인덱스 설정 (df2)&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;df2.set_index('id')
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;34&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 마지막으로 다음 토막글을 사용하여 데이터 프레임을 업데이트합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;df1.update(df2)
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;35&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;두 팬더 데이터 프레임을 열별로 조인하려면 인덱스를 조인 키로 사용하여 다음 작업을 수행할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;both = a.join(b)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;36&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여러 DataFrame, Series 또는 이들의 혼합물을 인덱스로 결합하려면 다음과 같이 목록에 입력하면 됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;everything = a.join([b, c, d])
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;37&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;에 대한 팬더 문서를 참조하십시오.&lt;/font&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# collect excel content into list of dataframes
data = []
for excel_file in excel_files:
    data.append(pd.read_excel(excel_file, engine=&quot;openpyxl&quot;))

# concatenate dataframes horizontally
df = pd.concat(data, axis=1)
# save combined data to excel
df.to_excel(excelAutoNamed, index=False)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;38&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;수평으로 부칠 때 위의 것을 시도해 볼 수 있습니다!&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것이 sum1에 도움이 되기를 바랍니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;39&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 코드를 사용하여 두 개의 Panda Data Frame을 수평으로 부착합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;df3 = pd.concat([df1, df2],axis=1, ignore_index=True, sort=False)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;40&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;두 프레임을 병합할 축을 중심으로 지정해야 합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;41&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;두 데이터 프레임은 행 단위로 레코드를 추가하는 대신 다른 열 이름이 동일해야 하므로 별도의 열로 추가됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;df = df.append(df1,ignore_index=True)
df = pd.concat([df1,df2], ignore_index=True)
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;42&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/12850345/how-do-i-combine-two-dataframes&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>pandas</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1332</guid>
      <comments>https://bestprogram.tistory.com/1332#entry1332comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:53:39 +0900</pubDate>
    </item>
    <item>
      <title>웨이포인트를 저장하고 비교를 수행하는 가장 효율적인 방법은 무엇입니까?</title>
      <link>https://bestprogram.tistory.com/1331</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;웨이포인트를 저장하고 비교를 수행하는 가장 효율적인 방법은 무엇입니까?&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신의 의견을 알고 싶습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 사용자가 경로를 만들고 이 경로를 추적하여 데이터베이스에 모든 경유지를 저장하는 응용프로그램을 만들었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음, 응용 프로그램은 사용자 웨이포인트를 비교합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;현재 저는 a를 사용하고 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;MSSQL&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;두 개의 테이블을 사용하는 서버, 하나는 경로에 사용하고 다른 하나는 경유지(공간 데이터 유형)를 저장합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;비교는 st_distance...와 같은 SQL Server 지리 함수를 사용하여 저장 프로시저에서 수행됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다른 옵션들도 조사해 봤습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 구현한 것 중 하나는 객체를 이용한 오라클 11g입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;모든 데이터를 하나의 Object Table에만 저장하고 Way Point는 Latitude(위도) 및 Longitude(경도) 특성을 가진 유형의 Varray(배레이)에 저장됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 방법은 데이터를 저장하고 검색하는 데 매우 효율적이지만 비교할 때는 복잡해집니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 당신을 찾고 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;NoSQL&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;해결책, 이것을 효율적으로 수행하기 위한 알고리즘 또는 방법.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신은 어떻게 생각하나요?&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모든 n개의 레코드에 ST &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/bb933808.aspx&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;7-1&quot;&gt;Distance&lt;/a&gt;와 같은 데이터베이스 기능을 사용하는 것은 차선입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;CPU 오버헤드가 기하급수적으로 증가합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;현재 검색 중인 진원지 주변의 사각형 안에 있는 점의 양을 확인하는 것이 좋습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;MySQL의 예는 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SELECT * FROM `points`
    WHERE `latitude` &amp;gt;= X1 AND `latitude` &amp;lt;= X2
    AND `longitude` &amp;gt;= Y1 AND `longitude` &amp;lt;= Y2
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 감소된 기능을 확인할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;superset&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Haversine_formula&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;5-1&quot;&gt;Haversine 공식&lt;/a&gt;을 사용하여 (지구의 곡률에 대한) 정칙 거리를 계산함으로써 더 감소되어야 하는 점들에 대한.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/en/multiple-column-indexes.html&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;6-2&quot;&gt;복합 인덱스&lt;/a&gt;를 설정하는 것을 &lt;strong papago-id=&quot;6-0&quot;&gt;잊지&lt;/strong&gt; 마십시오&lt;strong papago-id=&quot;6-0&quot;&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;latitude&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;longitude&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://i.stack.imgur.com/d78lX.jpg&quot; alt=&quot;Orthodromic distance&quot;&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;PHP로 되어 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;?php
function haversine($latitude1, $longitude1,
                   $latitude2, $longitude2, $unit = 'Mi') {
    $theta = $longitude1 - $longitude2;
    $distance = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) +
    (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta)));
    $distance = acos($distance);
    $distance = rad2deg($distance);
    $distance = $distance * 60 * 1.1515;
    switch ($unit) {
    case 'Mi':
        break;
    case 'Km':
        $distance = $distance * 1.609344;
    }
    return (round($distance, 2));
}
?&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;15-0&quot;&gt;요약&lt;/strong&gt;하기:&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음은 수행 방법을 보여주는 이미지 예입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://i.stack.imgur.com/gg7Zp.png&quot; alt=&quot;Example with CN Tower&quot;&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;첫 번째 검색은 경계 상자 충돌 검색(MySQL 예제)을 포함하여 다음을 결정합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;superset&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 빨간 점은 빼고요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;두 번째 검증 과정은 Haversine 공식(PHP 예제)으로 점들이 적절한 직교 거리 내에 있는지 계산하고 다음을 수행하는 것을 포함합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;subset&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(검은색 점의 composed).&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/12568726/most-efficient-way-to-save-way-points-and-do-comparisons&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>Oracle</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1331</guid>
      <comments>https://bestprogram.tistory.com/1331#entry1331comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:53:33 +0900</pubDate>
    </item>
    <item>
      <title>임의 AND 절이 있는 동적 스프링 데이터 jpa 저장소 쿼리</title>
      <link>https://bestprogram.tistory.com/1330</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;임의 AND 절이 있는 동적 스프링 데이터 jpa 저장소 쿼리&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용하고 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Spring data jpa repositories&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 다른 필드로 검색 기능을 제공해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;검색 전에 필드를 입력하는 것은 선택사항입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 5개의 분야가 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;EmployeeNumber&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Name&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Married&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Profession&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;DateOfBirth&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기서 나는 사용자별로 주어진 값으로만 질의해야 하며 다른 필드는 무시해야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Input : EmployeeNumber: ,Name:St,Married: ,Professsion:IT,DateOfBirth: 
Query : Select * from Employee e where Name like 'St%' and Profession like 'IT%';  

Input : EmployeeNumber:10,Name: ,Married: ,Professsion:IT,DateOfBirth:
Query : Select * from Employee e where EmployeeNumber like '10%' and Profession like 'IT%';  
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 여기서는 입력한 값과 쿼리를 고려하고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 경우 Spring data는 본 &lt;a href=&quot;http://blog.credera.com/technology-insights/java/can-querydsl-part-1-enhance-simplify-existing-spring-data-jpa-repositories/&quot; papago-id=&quot;9-1&quot;&gt;게시물&lt;/a&gt;에 언급된 것과 같이 제한이 있습니다. (&lt;strong papago-id=&quot;9-3&quot;&gt;확장이 불가능하고 가능&lt;/strong&gt;한 모든 &lt;strong papago-id=&quot;9-3&quot;&gt;쿼리를 작성&lt;/strong&gt;해야 함) 제가 사용하고 있는&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Querydsl&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 하지만 문제는 여전히 존재합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;null&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;필드는 무시하고 가능한 거의 모든 쿼리를 개발해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 점에서.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;case 31 queries&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;. 검색 필드가&lt;/font&gt;&lt;/font&gt;&lt;code&gt;6,7,8...&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;??&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;선택 필드로 검색 옵션을 구현하는 가장 좋은 방법은 무엇입니까?&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Spring-data에서 제공하는 Specifications를 즉시 사용할 수 있으며 기준 API를 사용하여 쿼리를 프로그래밍 방식으로 구축할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;규격을 지원하기 위해 Jpa 규격을 사용하여 저장소 인터페이스를 확장할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;실행기 인터페이스&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;public interface CustomerRepository extends SimpleJpaRepository&amp;lt;T, ID&amp;gt;, JpaSpecificationExecutor {

}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;부가 인터페이스 (Jpa 규격)&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;실행자)는 다양한 방법으로 사양을 실행할 수 있는 메서드를 제공합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어 findAll 메서드는 규격과 일치하는 모든 엔터티를 반환합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;List&amp;lt;T&amp;gt; findAll(Specification&amp;lt;T&amp;gt; spec);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사양 인터페이스는 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;public interface Specification&amp;lt;T&amp;gt; {
     Predicate toPredicate(Root&amp;lt;T&amp;gt; root, CriteriaQuery&amp;lt;?&amp;gt; query,
            CriteriaBuilder builder);
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;좋아요, 그럼 전형적인 사용 사례는 무엇인가요?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;규격을 쉽게 사용하여 엔티티 위에 확장 가능한 술어 집합을 구축할 수 있으며, 이를 통해 필요한 모든 조합에 대한 쿼리(메소드)를 선언할 필요 없이 JpaRepository와 결합하여 사용할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기 예가 있습니다: 예 2.15.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;고객사양&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;public class CustomerSpecs {
    public static Specification&amp;lt;Customer&amp;gt; isLongTermCustomer() {
        return new Specification&amp;lt;Customer&amp;gt;() {
            public Predicate toPredicate(
                Root&amp;lt;Customer&amp;gt; root, CriteriaQuery&amp;lt;?&amp;gt; query,
                CriteriaBuilder builder) {
                LocalDate date = new LocalDate().minusYears(2);
                return builder.lessThan(root.get('dateField'), date);
            }
        };
    }

    public static Specification&amp;lt;Customer&amp;gt; hasSalesOfMoreThan(MontaryAmount value) {
        return new Specification&amp;lt;Customer&amp;gt;() {
            public Predicate toPredicate(
                Root&amp;lt;T&amp;gt; root, CriteriaQuery&amp;lt;?&amp;gt; query,
                CriteriaBuilder builder) {
                // build query here
            }
        };
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;비즈니스 요구사항 추상화 수준에 대한 몇 가지 기준을 표현하고 실행 가능한 사양을 만들었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 클라이언트는 다음과 같이 규격을 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;List customers = customerRepository.findAll(isLongTermCustomer());
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사양 예제 2.17을 결합할 수도 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;조합사양&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;    MonetaryAmount amount = new MonetaryAmount(200.0, Currencies.DOLLAR);
    List&amp;lt;Customer&amp;gt; customers = customerRepository.findAll(
        where(isLongTermCustomer()).or(hasSalesOfMoreThan(amount)));
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;보다시피 사양은 사양을 체인으로 연결하고 결합하는 몇 가지 글루 코드 방식을 제공합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 데이터 액세스 계층을 확장하는 것은 새로운 Specification 구현을 생성하고 이미 존재하는 구현과 결합하는 문제일 뿐입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;복잡한 사양을 생성할 수 있습니다. 여기 예가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;public class WorkInProgressSpecification {
    public static Specification&amp;lt;WorkInProgress&amp;gt; findByCriteria(final SearchCriteria searchCriteria) {

        return new Specification&amp;lt;WorkInProgress&amp;gt;() {

            @Override
            public Predicate toPredicate(
                Root&amp;lt;WorkInProgress&amp;gt; root,
                CriteriaQuery&amp;lt;?&amp;gt; query, CriteriaBuilder cb) {

                List&amp;lt;Predicate&amp;gt; predicates = new ArrayList&amp;lt;Predicate&amp;gt;();

                if (searchCriteria.getView() != null &amp;amp;&amp;amp; !searchCriteria.getView().isEmpty()) {
                    predicates.add(cb.equal(root.get(&quot;viewType&quot;), searchCriteria.getView()));
                }
                if (searchCriteria.getFeature() != null &amp;amp;&amp;amp; !searchCriteria.getFeature().isEmpty()) {
                    predicates.add(cb.equal(root.get(&quot;title&quot;), searchCriteria.getFeature()));
                }
                if (searchCriteria.getEpic() != null &amp;amp;&amp;amp; !searchCriteria.getEpic().isEmpty()) {
                    predicates.add(cb.equal(root.get(&quot;epic&quot;), searchCriteria.getEpic()));
                }
                if (searchCriteria.getPerformingGroup() != null &amp;amp;&amp;amp; !searchCriteria.getPerformingGroup().isEmpty()) {
                    predicates.add(cb.equal(root.get(&quot;performingGroup&quot;), searchCriteria.getPerformingGroup()));
                }
                if (searchCriteria.getPlannedStartDate() != null) {
                    System.out.println(&quot;searchCriteria.getPlannedStartDate():&quot; + searchCriteria.getPlannedStartDate());
                    predicates.add(cb.greaterThanOrEqualTo(root.&amp;lt;Date&amp;gt;get(&quot;plndStartDate&quot;), searchCriteria.getPlannedStartDate()));
                }
                if (searchCriteria.getPlannedCompletionDate() != null) {
                    predicates.add(cb.lessThanOrEqualTo(root.&amp;lt;Date&amp;gt;get(&quot;plndComplDate&quot;), searchCriteria.getPlannedCompletionDate()));
                }
                if (searchCriteria.getTeam() != null &amp;amp;&amp;amp; !searchCriteria.getTeam().isEmpty()) {
                    predicates.add(cb.equal(root.get(&quot;agileTeam&quot;), searchCriteria.getTeam()));
                }

                return cb.and(predicates.toArray(new Predicate[] {}));
            }
        };
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기 &lt;a href=&quot;http://docs.spring.io/spring-data/jpa/docs/1.4.3.RELEASE/reference/html/jpa.repositories.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;24-1&quot;&gt;JPA Respositorys 문서&lt;/a&gt;가 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;QueryDSL(4.x) 및 &lt;a href=&quot;https://github.com/querydsl/querydsl/tree/master/querydsl-jpa&quot; rel=&quot;noreferrer&quot; papago-id=&quot;25-1&quot;&gt;querydsl-jpa&lt;/a&gt;의 새 주 버전을 사용하려면 변경해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;hr&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;우리의 프로젝트 중 하나에서, 우리는&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;QueryDSL&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;와 함께&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;QueryDslPredicateExecutor&amp;lt;T&amp;gt;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;  public Predicate createPredicate(DataEntity dataEntity) {
    QDataEntity qDataEntity = QDataEntity.dataEntity;
    BooleanBuilder booleanBuilder = new BooleanBuilder();
    if (!StringUtils.isEmpty(dataEntity.getCnsiConsumerNo())) {
      booleanBuilder
        .or(qDataEntity.cnsiConsumerNo.contains(dataEntity.getCnsiConsumerNo()));
    }
    if (!StringUtils.isEmpty(dataEntity.getCnsiMeterNo())) {
      booleanBuilder.or(qDataEntity.cnsiMeterNo.contains(dataEntity.getCnsiMeterNo()));
    }

    return booleanBuilder.getValue();
  }
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;29&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저장소에서 이를 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;@Repository
public interface DataEntityRepository
  extends DaoRepository&amp;lt;DataEntity, Long&amp;gt; {
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;어디에&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;DaoRepository&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;@NoRepositoryBean
public interface DaoRepository&amp;lt;T, K extends Serializable&amp;gt;
  extends JpaRepository&amp;lt;T, K&amp;gt;,
  QueryDslPredicateExecutor&amp;lt;T&amp;gt; {
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;32&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러면 리포지토리 술어 메서드를 사용할 수 있기 때문입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Iterable&amp;lt;DataEntity&amp;gt; results = dataEntityRepository.findAll(dataEntityPredicateCreator.createPredicate(dataEntity));
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;갖기 위해&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;QClasses&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;34&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, pom.xml에 &lt;a href=&quot;https://github.com/querydsl/apt-maven-plugin&quot; papago-id=&quot;34-1&quot; rel=&quot;noreferrer&quot;&gt;QueryDSL APT Maven 플러그인&lt;/a&gt;을 지정해야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;  &amp;lt;build&amp;gt;
    &amp;lt;plugins&amp;gt;
      &amp;lt;plugin&amp;gt;
        &amp;lt;groupId&amp;gt;com.mysema.maven&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;maven-apt-plugin&amp;lt;/artifactId&amp;gt;
        &amp;lt;version&amp;gt;1.0.4&amp;lt;/version&amp;gt;
        &amp;lt;executions&amp;gt;
          &amp;lt;execution&amp;gt;
            &amp;lt;phase&amp;gt;generate-sources&amp;lt;/phase&amp;gt;
            &amp;lt;goals&amp;gt;
              &amp;lt;goal&amp;gt;process&amp;lt;/goal&amp;gt;
            &amp;lt;/goals&amp;gt;
            &amp;lt;configuration&amp;gt;
              &amp;lt;outputDirectory&amp;gt;target/generated-sources&amp;lt;/outputDirectory&amp;gt;
              &amp;lt;processor&amp;gt;com.mysema.query.apt.jpa.JPAAnnotationProcessor&amp;lt;/processor&amp;gt;
            &amp;lt;/configuration&amp;gt;
          &amp;lt;/execution&amp;gt;
        &amp;lt;/executions&amp;gt;
      &amp;lt;/plugin&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;35&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;종속성은&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;    &amp;lt;!-- querydsl --&amp;gt;
    &amp;lt;dependency&amp;gt;
        &amp;lt;groupId&amp;gt;com.mysema.querydsl&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;querydsl-core&amp;lt;/artifactId&amp;gt;
        &amp;lt;version&amp;gt;${querydsl.version}&amp;lt;/version&amp;gt;
    &amp;lt;/dependency&amp;gt;
    &amp;lt;dependency&amp;gt;
        &amp;lt;groupId&amp;gt;com.mysema.querydsl&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;querydsl-apt&amp;lt;/artifactId&amp;gt;
        &amp;lt;version&amp;gt;${querydsl.version}&amp;lt;/version&amp;gt;
    &amp;lt;/dependency&amp;gt;
    &amp;lt;dependency&amp;gt;
        &amp;lt;groupId&amp;gt;com.mysema.querydsl&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;querydsl-jpa&amp;lt;/artifactId&amp;gt;
        &amp;lt;version&amp;gt;${querydsl.version}&amp;lt;/version&amp;gt;
    &amp;lt;/dependency&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;36&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또는 그라들의 경우:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;sourceSets {
    generated
}
sourceSets.generated.java.srcDirs = ['src/main/generated']
configurations {
    querydslapt
}
dependencies {
    // other deps ....
    compile &quot;com.mysema.querydsl:querydsl-jpa:3.6.3&quot;
    compile &quot;com.mysema.querydsl:querydsl-apt:3.6.3:jpa&quot;
}
task generateQueryDSL(type: JavaCompile, group: 'build', description: 'Generates the QueryDSL query types') {
    source = sourceSets.main.java
    classpath = configurations.compile + configurations.querydslapt
    options.compilerArgs = [
            &quot;-proc:only&quot;,
            &quot;-processor&quot;, &quot;com.mysema.query.apt.jpa.JPAAnnotationProcessor&quot;
    ]
    destinationDir = sourceSets.generated.java.srcDirs.iterator().next()
}

compileJava {
    dependsOn generateQueryDSL
    source generateQueryDSL.destinationDir
}

compileGeneratedJava {
    dependsOn generateQueryDSL
    classpath += sourceSets.main.runtimeClasspath
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;37&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Spring Data JPA 1.10부터는 예제별 &lt;a href=&quot;http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#query-by-example&quot; papago-id=&quot;37-1&quot; rel=&quot;noreferrer&quot;&gt;&lt;strong papago-id=&quot;37-1-0&quot;&gt;쿼리&lt;/strong&gt;&lt;/a&gt;라는 다른 &lt;a href=&quot;http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#query-by-example&quot; papago-id=&quot;37-1&quot; rel=&quot;noreferrer&quot;&gt;&lt;strong papago-id=&quot;37-1-0&quot;&gt;옵션&lt;/strong&gt;&lt;/a&gt;이 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저장소는 다음과 별도로 구현해야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;JpaRepository&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;38&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 &lt;a href=&quot;http://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/repository/query/QueryByExampleExecutor.html&quot; papago-id=&quot;38-1&quot; rel=&quot;noreferrer&quot;&gt;쿼리&lt;/a&gt; 기준&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/repository/query/QueryByExampleExecutor.html&quot; papago-id=&quot;38-1&quot; rel=&quot;noreferrer&quot;&gt;예시&lt;/a&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음과 같은 메서드를 얻을 수 있는 &lt;a href=&quot;http://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/repository/query/QueryByExampleExecutor.html&quot; papago-id=&quot;38-1&quot; rel=&quot;noreferrer&quot;&gt;실행자&lt;/a&gt; 인터페이스:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;S extends T&amp;gt; Iterable&amp;lt;S&amp;gt; findAll(Example&amp;lt;S&amp;gt; example)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;39&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 다음 검색할 &lt;a href=&quot;http://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/domain/Example.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;39-1&quot;&gt;예제&lt;/a&gt;를 만듭니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Employee e = new Employee();
e.setEmployeeNumber(getEmployeeNumberSomewherFrom());
e.setName(getNameSomewhereFrom());
e.setMarried(getMarriedSomewhereFrom());
e.setProfession(getProfessionSomewhereFrom());
e.setDateOfBirth(getDateOfBirthSomewhereFrom());
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;40&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그 다음:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;employeeRepository.findAll(Example.of(e));
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;41&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;일부 매개 변수가 null일 경우 WHERE 절에 포함되지 않으므로 동적 쿼리를 얻을 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;42&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;문자열 특성의 일치를 세분화하려면 의 를 참조하십시오.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ExampleMatcher&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사건에 민감하지 않은 사람이&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;like&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;24&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;는 예를 들어 다음과 같습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;ExampleMatcher matcher = ExampleMatcher.matching().
          withMatcher(&quot;profession&quot;, ExampleMatcher.GenericPropertyMatcher.of(ExampleMatcher.StringMatcher.CONTAINING).ignoreCase());
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;46&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;QBE 예제: https://github.com/spring-projects/spring-data-examples/tree/master/jpa/query-by-example&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;47&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;게임에 좀 늦었지만 답이 너무 복잡해서...&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;만약 당신이 당신의 개체의 필드를 바꾸면 어떻게 됩니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다른 엔티티에 대한 검색을 지원하려면 어떻게 해야 합니까?&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;48&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그냥 이 라이브러리를 사용해도 됩니다: https://github.com/turkraft/spring-filter&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;49&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음과 같은 검색 쿼리를 실행할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;50&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;em papago-id=&quot;50-0&quot;&gt;/search?filter=&lt;/em&gt;평균(&lt;em papago-id=&quot;50-0&quot;&gt;ratings&lt;/em&gt;)&amp;gt; 4.5 및 &lt;em papago-id=&quot;50-0&quot;&gt;brand.name&lt;/em&gt; in ('&lt;em papago-id=&quot;50-0&quot;&gt;audi&lt;/em&gt;', '랜드로버') 및 (2018년 또는 km &amp;lt; 50000)에서 색상: '흰색' 및 &lt;strong papago-id=&quot;50-22&quot;&gt;사고&lt;/strong&gt;가 비어 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;25&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Spring's Pageable과 함께 다음 페이지를 호출할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&amp;amp;page=11&amp;amp;size=20&lt;/code&gt;&lt;/p&gt;&lt;p papago-id=&quot;52&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/28874135/dynamic-spring-data-jpa-repository-query-with-arbitrary-and-clauses&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>Spring</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1330</guid>
      <comments>https://bestprogram.tistory.com/1330#entry1330comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:53:25 +0900</pubDate>
    </item>
    <item>
      <title>fill_parent와 wrap_content의 차이점은 무엇입니까?</title>
      <link>https://bestprogram.tistory.com/1329</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;fill_parent와 wrap_content의 차이점은 무엇입니까?&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Android에서 위젯을 레이아웃 할 때 다음과 다른 점은 무엇입니까?&lt;/font&gt;&lt;/font&gt;&lt;code&gt;fill_parent&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(&lt;/font&gt;&lt;/font&gt;&lt;code&gt;match_parent&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(API Level 8 이상) 및&lt;/font&gt;&lt;/font&gt;&lt;code&gt;wrap_content&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;?&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신이 지목할 수 있는 문서가 있습니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 그것을 잘 이해하는 것에 관심이 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;둘 중 하나의 속성을 View(시각 제어)의 가로 또는 세로 크기에 적용할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;차원을 명시적으로 지정하지 않고 내용 또는 상위 레이아웃 크기에 따라 보기 또는 레이아웃 크기를 설정하는 데 사용됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; (deprec 및 이름 변경)&lt;/font&gt;&lt;/font&gt;&lt;code&gt;MATCH_PARENT&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;API Level 8 이상에서)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;위젯의 레이아웃을 fill_parent로 설정하면 위젯이 배치된 레이아웃 요소 내에서 사용 가능한 공간을 최대한 사용하도록 확장됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이는 윈도우 폼 컨트롤의 도크 스타일을 다음과 같이 설정하는 것과 거의 맞먹습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Fill&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;상위 레벨 레이아웃 또는 컨트롤을 fill_parent로 설정하면 해당 컨트롤이 전체 화면을 차지하게 됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;code&gt;wrap_content&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;보기의 크기를 wrap_content로 설정하면 보기에 포함된 값(또는 하위 컨트롤)이 포함될 수 있을 만큼만 확장됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;텍스트 상자(TextView) 또는 이미지(ImageView)와 같은 컨트롤의 경우 표시되는 텍스트 또는 이미지를 래핑합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;레이아웃 요소의 경우 하위 항목으로 추가된 컨트롤/레이아웃에 맞게 레이아웃 크기를 조정합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Windows Form Control(윈도우 폼 컨트롤)의 설정과 거의 맞먹습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Autosize&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;속성을 True로 바꿉니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;온라인 설명서&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기 &lt;a href=&quot;http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;16-1&quot;&gt;안드로이드&lt;/a&gt; 코드 설명서에 자세한 내용이 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; (deprec) =&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;자식 보기의 테두리가 부모 보기의 테두리와 일치하도록 확장됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splited&quot;&gt;&lt;strong&gt;&lt;code&gt;wrap_content&lt;/code&gt;&lt;/strong&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;하위 보기의 테두리는 고유한 내용을 잘 감싼다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기 상황을 좀 더 명확하게 하기 위한 몇 가지 이미지가 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;초록색과 빨간색은&lt;/font&gt;&lt;/font&gt;&lt;code&gt;TextViews&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;. 흰색은.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;LinearLayout&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;끝까지 보여주는&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://i.stack.imgur.com/9Xhsl.png&quot; alt=&quot;enter image description here&quot;&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모든&lt;/font&gt;&lt;/font&gt;&lt;code&gt;View&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(a)&lt;/font&gt;&lt;/font&gt;&lt;code&gt;TextView&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 가.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ImageView&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;,a&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Button&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;20&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 등)을 설정할 필요가 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;width&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;21&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;height&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;시야의&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;xml 레이아웃 파일에서는 다음과 같이 보일 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;android:layout_width=&quot;wrap_content&quot;
android:layout_height=&quot;match_parent&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;폭과 높이를 다음과 같이 설정하는 것 외에도&lt;/font&gt;&lt;/font&gt;&lt;code&gt;match_parent&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;24&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;아니면&lt;/font&gt;&lt;/font&gt;&lt;code&gt;wrap_content&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;25&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 어떤 절대값으로 설정할 수도 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;android:layout_width=&quot;100dp&quot;
android:layout_height=&quot;200dp&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;26&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 일반적으로 크기가 다른 장치에 비해 유연하지 않기 때문에 이는 좋지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신이 이해한 후에&lt;/font&gt;&lt;/font&gt;&lt;code&gt;wrap_content&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;27&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;match_parent&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;28&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 그 다음에 배울 것은&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;layout_weight&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;29&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;h1 papago-id=&quot;37&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;참고 항목&lt;/font&gt;&lt;/h1&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/a/29713797/3681880&quot; papago-id=&quot;38&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;안드로이드:layout_weight는 무엇을 의미합니까?&lt;/font&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/a/25520320/3681880&quot; papago-id=&quot;39&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;뷰의 패딩과 마진의 차이&lt;/font&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/a/26190050/3681880&quot; papago-id=&quot;40&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;중력 vs 레이아웃_중력&lt;/font&gt;&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h1 papago-id=&quot;41&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;위 이미지의 XML&lt;/font&gt;&lt;/h1&gt; 
&lt;p papago-id=&quot;42&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;수직 선형 레이아웃&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
              android:orientation=&quot;vertical&quot;
              android:layout_width=&quot;match_parent&quot;
              android:layout_height=&quot;match_parent&quot;&amp;gt;

    &amp;lt;TextView
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:textAppearance=&quot;?android:attr/textAppearanceMedium&quot;
        android:text=&quot;width=wrap height=wrap&quot;
        android:background=&quot;#c5e1b0&quot;/&amp;gt;

    &amp;lt;TextView
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:textAppearance=&quot;?android:attr/textAppearanceMedium&quot;
        android:text=&quot;width=match height=wrap&quot;
        android:background=&quot;#f6c0c0&quot;/&amp;gt;

    &amp;lt;TextView
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;match_parent&quot;
        android:textAppearance=&quot;?android:attr/textAppearanceMedium&quot;
        android:text=&quot;width=match height=match&quot;
        android:background=&quot;#c5e1b0&quot;/&amp;gt;

&amp;lt;/LinearLayout&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;43&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;수평 선형 배치&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
              android:orientation=&quot;horizontal&quot;
              android:layout_width=&quot;match_parent&quot;
              android:layout_height=&quot;match_parent&quot;&amp;gt;

    &amp;lt;TextView
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:textAppearance=&quot;?android:attr/textAppearanceMedium&quot;
        android:text=&quot;WrapWrap&quot;
        android:background=&quot;#c5e1b0&quot;/&amp;gt;

    &amp;lt;TextView
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;match_parent&quot;
        android:textAppearance=&quot;?android:attr/textAppearanceMedium&quot;
        android:text=&quot;WrapMatch&quot;
        android:background=&quot;#f6c0c0&quot;/&amp;gt;

    &amp;lt;TextView
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;match_parent&quot;
        android:textAppearance=&quot;?android:attr/textAppearanceMedium&quot;
        android:text=&quot;MatchMatch&quot;
        android:background=&quot;#c5e1b0&quot;/&amp;gt;

&amp;lt;/LinearLayout&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h1 papago-id=&quot;44&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;메모&lt;/font&gt;&lt;/h1&gt; 
&lt;p papago-id=&quot;45&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 답변의 설명은 &lt;a href=&quot;https://stackoverflow.com/a/25520320/3681880&quot; papago-id=&quot;45-1&quot;&gt;여백이나 덧씌우기&lt;/a&gt;가 없다고 가정합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 설사 있다 하더라도 기본 개념은 그대로입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;뷰 테두리/간격은 여백 또는 패딩 값으로 조정됩니다.&lt;/font&gt;&lt;/p&gt;&lt;ul&gt; 
 &lt;li&gt;&lt;p&gt;&lt;code&gt;fill_parent&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;30&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;는 요소의 너비 또는 높이를 상위 요소, 즉 컨테이너만큼 크게 만듭니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p&gt;&lt;code&gt;wrap_content&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;31&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;폭 또는 높이를 필요한 만큼 크게 하여 그 안에 요소를 포함할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;a href=&quot;http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;48&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;ANDROID DOC 참조를 보려면 여기를 클릭하십시오.&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p papago-id=&quot;49&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;49-0&quot;&gt;&lt;code papago-id=&quot;49-0-0&quot;&gt;fill_parent&lt;/code&gt;&lt;/strong&gt; :&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;32&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;구성 요소가 배치되어 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;fill_parent&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;33&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;공간에서 레이아웃 단위 멤버를 최대한 채우도록 확장해야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이는 Windows 컨트롤의 Dockstyle 속성과 일치합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;상단 세트 레이아웃 또는 컨트롤:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;fill_parent&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;34&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;화면 전체를 강제로 차지하게 됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;code&gt;wrap_content&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;35&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;에 대한 &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;wrap_content&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;54&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;보기가 강제로 확장되어 모든 내용이 표시됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어 &lt;strong papago-id=&quot;54-1&quot;&gt;TextView&lt;/strong&gt; 및 &lt;strong papago-id=&quot;54-1&quot;&gt;ImageView 컨트롤&lt;/strong&gt;은 다음과 같이 설정됩니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;wrap_content&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;37&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내부 텍스트와 이미지 전체가 표시됩니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;레이아웃 요소는 내용에 따라 크기가 변경됩니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; Autosize의 &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;wrap_content&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;38&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Windows 컨트롤을 True로 설정하는 것과 거의 맞먹습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;57&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;자세한 사항은 이 링크를 확인하시기 바랍니다: http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;58&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/432763/whats-the-difference-between-fill-parent-and-wrap-content&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>Android</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1329</guid>
      <comments>https://bestprogram.tistory.com/1329#entry1329comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:53:15 +0900</pubDate>
    </item>
    <item>
      <title>WooCommerce 체크아웃 필드 사이에 제목을 추가하는 방법</title>
      <link>https://bestprogram.tistory.com/1328</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;WooCommerce 체크아웃 필드 사이에 제목을 추가하는 방법&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;WooCommerce 체크아웃 페이지 필드를 커스터마이징하고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;필드 사이에 제목(텍스트)을 추가하고 싶습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이와 같은 필드를 다시 정렬했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;add_filter('woocommerce_checkout_fields', 'ac_checkout_reorder_fields');

function ac_checkout_reorder_fields($fields) {

    $order = array(
        &quot;billing_first_name&quot;, 
        &quot;billing_last_name&quot;, 
        &quot;billing_company&quot;, 
        &quot;billing_email&quot;, 
        &quot;billing_phone&quot;,
        &quot;billing_address_1&quot;, 
        &quot;billing_address_2&quot;, 
        &quot;billing_postcode&quot;, 
        &quot;billing_country&quot; 
        

    );
    foreach($order as $field)
    {
        $ordered_fields[$field] = $fields[&quot;billing&quot;][$field];
    }

    $fields[&quot;billing&quot;] = $ordered_fields;
    return $fields;

}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그다음에 이렇게 제목을 새로 붙였습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;add_action( 'woocommerce_after_checkout_billing_form', 'add_custom_heading' );

function add_custom_heading( $checkout ) {

    echo '&amp;lt;div id=&quot;add_custom_heading&quot;&amp;gt;&amp;lt;h2&amp;gt;' . __('Custom Heading Here') . '&amp;lt;/h2&amp;gt;&amp;lt;/div&amp;gt;' ;


}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이제 필드가 다시 정렬되고 사용자 정의 제목이 표시됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 &lt;strong papago-id=&quot;3-1&quot;&gt;저는 제목이 이름과 회사 필드&lt;/strong&gt; 바로 &lt;strong papago-id=&quot;3-1&quot;&gt;아래에 표시되기&lt;/strong&gt;를 원합니다&lt;strong papago-id=&quot;3-1&quot;&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제 코드로 아래에 필드가 추가됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;내가 원하는 장소에 어떻게 위치시킬지.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;추신: 이 후크로 전체 필드의 섹션 사용자 지정을 추가하려고 했습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;woocommerce_checkout_fields&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;자리 표시자를 추가하고 레이블을 제거합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;코드는 여기에 있지만 이것 또한 문제 해결에 도움이 되지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;function add_wc_custom_fields($fields) {
global $woocommerce;
    $countries_obj   = new WC_Countries();
    $countries   = $countries_obj-&amp;gt;__get('countries');

     $fields['billing']['billing_first_name'] = array(
            'label' =&amp;gt; '',
            'placeholder' =&amp;gt; _x('First Name*', 'placeholder', 'woocommerce'),
            'required' =&amp;gt; true,
           'class'    =&amp;gt; array( 'form-row-first' ),
        );
        $fields['billing']['billing_last_name'] = array(
            'label' =&amp;gt; '',
            'placeholder' =&amp;gt; _x('last Name*', 'placeholder', 'woocommerce'),
            'required' =&amp;gt; true,
           'class'    =&amp;gt; array( 'form-row-last' ),
        );
        $fields['billing']['billing_company'] = array(
            'label' =&amp;gt; '',
            'placeholder' =&amp;gt; _x('Company Name', 'placeholder', 'woocommerce'),
            'required' =&amp;gt; false,
            'class' =&amp;gt; array('checkout-billing-company')
        );
        $fields['billing']['billing_address_1'] = array(
            'label' =&amp;gt; '',
            'placeholder' =&amp;gt; _x('Address(Line 1)*', 'placeholder', 'woocommerce'),
            'required' =&amp;gt; true,
            'class' =&amp;gt; array('checkout-billing-addressL1')
        );
         $fields['billing']['billing_address_2'] = array(
            'label' =&amp;gt; '',
            'placeholder' =&amp;gt; _x('Address(Line 2)*', 'placeholder', 'woocommerce'),
            'required' =&amp;gt; false,
            'class' =&amp;gt; array('checkout-billing-addressL2')
        );
         $fields['billing']['billing_email'] = array(
            'label' =&amp;gt; '',
            'placeholder' =&amp;gt; _x('Email Address*', 'placeholder', 'woocommerce'),
            'required' =&amp;gt; true,
            'class' =&amp;gt; array('form-row-first')
        );
        $fields['billing']['billing_phone'] = array(
            'label' =&amp;gt; '',
            'placeholder' =&amp;gt; _x('Phone Number', 'placeholder', 'woocommerce'),
            'required' =&amp;gt; false,
            'class' =&amp;gt; array('form-row-last')
        );
        $fields['billing']['billing_city'] = array(
            'label' =&amp;gt; '',
            'placeholder' =&amp;gt; _x('Town/City', 'placeholder', 'woocommerce'),
            'required' =&amp;gt; false,
            'class' =&amp;gt; array('form-row-first')
        );
        
$fields['billing']['billing_state'] = array(
            'label' =&amp;gt; '',
            'placeholder' =&amp;gt; _x('State/County', 'placeholder', 'woocommerce'),
            'required' =&amp;gt; false,
            'class' =&amp;gt; array('form-row-first')
        );
    $fields['billing']['billing_postcode'] = array(
            'label' =&amp;gt; '',
            'placeholder' =&amp;gt; _x('Zip/Postcode', 'placeholder', 'woocommerce'),
            'required' =&amp;gt; false,
            'class' =&amp;gt; array('form-row-first')
        );
        $fields['billing']['billing_country'] = array(
            'label' =&amp;gt; '',
            'type' =&amp;gt; 'select',
            'placeholder' =&amp;gt; _x('Country', 'placeholder', 'woocommerce'),
            'required' =&amp;gt; false,
            'class' =&amp;gt; array('form-row-last'),
              'options'    =&amp;gt; $countries
        );
        return $fields;
    }

add_filter('woocommerce_checkout_fields', 'add_wc_custom_fields');
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;필터를 사용하면 됩니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;'woocommerce_form_field_' . $type&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;...어디에&lt;/font&gt;&lt;/font&gt;&lt;code&gt;$type&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;입력의 종류는...&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;우리의 경우에는&lt;/font&gt;&lt;/font&gt;&lt;code&gt;billing_company&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;텍스트 형식입니다...&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 필터는 필드의 html을 반환합니다. 우리의 경우 청구 필드의 경우,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;billing_company&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.. 필터에는 4개의 인수가 전달됩니다. 이것들은&lt;/font&gt;&lt;/font&gt;&lt;code&gt;$field&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;$key&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;$args&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;$value&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;... 이 두개만 있으면 돼요&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;add_action( 'woocommerce_form_field_text','reigel_custom_heading', 10, 2 );
function reigel_custom_heading( $field, $key ){
    // will only execute if the field is billing_company and we are on the checkout page...
    if ( is_checkout() &amp;amp;&amp;amp; ( $key == 'billing_company') ) {
        $field .= '&amp;lt;p class=&quot;form-row form-row-wide&quot;&amp;gt;Custom Heading&amp;lt;/p&amp;gt;';
    }
    return $field;
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;15-0&quot;&gt;중요:&lt;/strong&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;클래스와 함께 단락 형식을 지정하지 않으면&lt;/font&gt;&lt;/font&gt;&lt;code&gt;form-row&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Woocommerce(제가 모르는 이유)에 의해 모든 청구분야의 상위에 올려질 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 우리에게 이것이 &quot;핵&quot;과 여러분의 목표가 다르게 더 잘 달성된다는 것을 보여줍니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기존의 것을 연결하는 대신&lt;/font&gt;&lt;/font&gt;&lt;code&gt;woocommerce_form_field_&amp;lt;field_type&amp;gt;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;등의 필터&lt;/font&gt;&lt;/font&gt;&lt;code&gt;woocommerce_form_field_text&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 저는 사용하는 것을 선호합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;woocommerce_form_field_&amp;lt;field_type&amp;gt;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;filter: 새 필드 유형을 만듭니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이를 통해 추가 필드 유형에 대한 HTML 출력을 추가할 수 있으며(따라서 HTML 출력을 대신 머리글에 사용할 수 있습니다), 체크아웃 필드를 수정할 때 새로운 머리글 &quot;필드 유형&quot;을 사용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;woocommerce_checkout_fields&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;거름망을 치다&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;// Add field type to WooCommerce form field 
add_filter( 'woocommerce_form_field_heading','sc_woocommerce_form_field_heading', 10, 4 );
function sc_woocommerce_form_field_heading($field, $key, $args, $value) {
    $output = '&amp;lt;h3 class=&quot;form-row form-row-wide&quot;&amp;gt;'.__( $args['label'], 'woocommerce' ).'&amp;lt;/h3&amp;gt;';
    echo $output;
}

// Modify checkout fields
add_filter( 'woocommerce_checkout_fields','custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {
    $fields['billing']['billing_heading_name'] = array(
        'type'      =&amp;gt; 'heading',
        'label'     =&amp;gt; 'Heading here',
    );
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;위의 방법을 사용하면 원래 질문에 대한 해결책은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;add_filter('woocommerce_checkout_fields', 'ac_checkout_reorder_fields');
function ac_checkout_reorder_fields($fields) {
    $fields['billing']['billing_heading_name'] = array(
        'type'      =&amp;gt; 'heading',
        'label'     =&amp;gt; 'Heading here',
    );
    $order = array(
        &quot;billing_first_name&quot;, 
        &quot;billing_last_name&quot;, 
        &quot;billing_heading_name&quot;,
        &quot;billing_company&quot;, 
        &quot;billing_email&quot;, 
        &quot;billing_phone&quot;,
        &quot;billing_address_1&quot;, 
        &quot;billing_address_2&quot;, 
        &quot;billing_postcode&quot;, 
        &quot;billing_country&quot; 
    );
    foreach($order as $field) {
        $ordered_fields[$field] = $fields[&quot;billing&quot;][$field];
    }
    $fields[&quot;billing&quot;] = $ordered_fields;
    return $fields;
}
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;add_filter('woocommerce_form_field', 'addHeadingsInBetweenFormFields', 10, 4);

function addHeadingsInBetweenFormFields($field, $key, $args, $value = null) {

  if (is_checkout() &amp;amp; $key === 'billing_first_name') {
    $a = '&amp;lt;p class=&quot;form-row form-row-wide&quot;&amp;gt;Shipping&amp;lt;/p&amp;gt;';
    return $a . $field;
  }
  return $field;

}
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/35811301/how-to-add-a-heading-in-between-checkout-fields-of-woocommerce&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>Wordpress</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1328</guid>
      <comments>https://bestprogram.tistory.com/1328#entry1328comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:53:06 +0900</pubDate>
    </item>
    <item>
      <title>jQuery를 사용하여 비디오 src를 어떻게 변경합니까?</title>
      <link>https://bestprogram.tistory.com/1327</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;jQuery를 사용하여 비디오 src를 어떻게 변경합니까?&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;jQuery를 사용하여 HTML5 비디오 태그의 src를 어떻게 변경합니까?&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;HTML을 받았습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;div id=&quot;divVideo&quot;&amp;gt;
  &amp;lt;video controls&amp;gt;
    &amp;lt;source src=&quot;test1.mp4&quot; type=&quot;video/mp4&quot; /&amp;gt;
  &amp;lt;/video&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 작동하지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var videoFile = 'test2.mp4';
$('#divVideo video source').attr('src', videoFile);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;파이어버그를 이용하여 검사하면 src가 변경되지만 실제로 재생되는 동영상은 변경되지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.pause()와 .load()에 대해 읽었는데 어떻게 사용하는지 잘 모르겠어요.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;해라&lt;/font&gt;&lt;/font&gt;&lt;code&gt;$(&quot;#divVideo video&quot;)[0].load();&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;src 속성을 변경한 후.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;자동 재생 태그를 사용해 보았는데 .load() .play()는 여전히 크롬으로 호출되어야 합니다(아마도 제 설정입니다).&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 사용하여 jquery로 이것을 하는 가장 간단한 크로스 브라우저 방법은&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var $video = $('#divVideo video'),
videoSrc = $('source', $video).attr('src', videoFile);
$video[0].load();
$video[0].play();
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 제가 제안하는 방법은 (가독성과 단순성을 위해)&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var video = $('#divVideo video')[0];
video.src = videoFile;
video.load();
video.play();
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;더보기 http://msdn.microsoft.com/en-us/library/ie/hh924823(v=vs.85).aspx#ManagingPlaybackInJavascript&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;추가 정보: .load()는 비디오 요소 내부에 html 소스 요소가 있는 경우에만 작동합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&amp;lt;source src=&quot;demo.mp4&quot; type=&quot;video/mp4&quot; /&amp;gt;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;질문하지 않는 방법은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;HTML&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;div id=&quot;divVideo&quot;&amp;gt;
  &amp;lt;video id=&quot;videoID&quot; controls&amp;gt;
    &amp;lt;source src=&quot;test1.mp4&quot; type=&quot;video/mp4&quot; /&amp;gt;
  &amp;lt;/video&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;JS&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var video = document.getElementById('videoID');
video.src = videoFile;
video.load();
video.play();
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 차라리 이렇게 하고 싶습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;video  id=&quot;v1&quot; width=&quot;320&quot; height=&quot;240&quot; controls=&quot;controls&quot;&amp;gt;

&amp;lt;/video&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그 다음에 사용합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;#v1&quot;).html('&amp;lt;source src=&quot;test1.mp4&quot; type=&quot;video/mp4&quot;&amp;gt;&amp;lt;/source&amp;gt;' );
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제이쿼리&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;/p&gt;
&lt;div class=&quot;snippet&quot; data-lang=&quot;js&quot; data-hide=&quot;false&quot; data-console=&quot;true&quot; data-babel=&quot;false&quot;&gt; 
 &lt;div class=&quot;snippet-code&quot;&gt; 
  &lt;pre class=&quot;snippet-code-js lang-js prettyprint-override&quot;&gt;&lt;code&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
$(document).ready(function() {
  var videoID = 'videoclip';
  var sourceID = 'mp4video';
  var newmp4 = 'media/video2.mp4';
  var newposter = 'media/video-poster2.jpg';
 
  $('#videolink1').click(function(event) {
    $('#'+videoID).get(0).pause();
    $('#'+sourceID).attr('src', newmp4);
    $('#'+videoID).get(0).load();
     //$('#'+videoID).attr('poster', newposter); //Change video poster
    $('#'+videoID).get(0).play();
  });
});&lt;/code&gt;&lt;/pre&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;/p&gt;&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저에게 효과가 있었던 것은 소스를 바꾼 후에 '재생' 명령을 내리는 것이었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;jQuery 인스턴스를 통해 'play()'를 사용할 수 없는 이상하게도 getElementBy를 사용하게 됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;ID는 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;HTML&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;video id=&quot;videoplayer&quot; width=&quot;480&quot; height=&quot;360&quot;&amp;gt;&amp;lt;/video&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;자바스크립트&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;#videoplayer&quot;).html('&amp;lt;source src=&quot;'+strSRC+'&quot; type=&quot;'+strTYPE+'&quot;&amp;gt;&amp;lt;/source&amp;gt;' );
document.getElementById(&quot;videoplayer&quot;).play();
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;     $(document).ready(function () {     
    setTimeout(function () {
                    $(&quot;.imgthumbnew&quot;).click(function () {
                        $(&quot;#divVideo video&quot;).attr({
                            &quot;src&quot;: $(this).data(&quot;item&quot;),
                            &quot;autoplay&quot;: &quot;autoplay&quot;,        
                        })
                    })
                }, 2000); 
            }
        });

here &quot;.imgthumbnew&quot; is the class of images which are thumbs of videos, an extra attribute is given to them which have video url. u can change according to your convenient.
i would suggest you to give an ID to ur Video tag it would be easy to handle.
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;가장 쉬운 방법은 오토플레이를 이용하는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;video autoplay&amp;gt;&amp;lt;/video&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;javascript를 통해 src를 변경할 때 load()는 언급하지 않아도 됩니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 &lt;strong papago-id=&quot;25-1&quot;&gt;Flowplayer 6.0.2&lt;/strong&gt;에서 작동합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;script&amp;gt;
    flowplayer().load({
         sources: [
            { type: &quot;video/mp4&quot;,  src: variable }
            ]
        });
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기서 &lt;strong papago-id=&quot;26-1&quot;&gt;variable&lt;/strong&gt;은 javascript/jquery variable value이고 비디오 태그는 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;div class=&quot;flowplayer&quot;&amp;gt;
   &amp;lt;video&amp;gt;
      &amp;lt;source type=&quot;video/mp4&quot; src=&quot;&quot; class=&quot;videomp4&quot;&amp;gt;
   &amp;lt;/video&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;누구에게나 도움이 되길 바랍니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;28&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/3983036/how-do-you-change-video-src-using-jquery&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>jquery</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1327</guid>
      <comments>https://bestprogram.tistory.com/1327#entry1327comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:52:57 +0900</pubDate>
    </item>
    <item>
      <title>요청이 ajax인지 아닌지 확인하는 방법 뒤의 코드 - ASPNET 웹폼</title>
      <link>https://bestprogram.tistory.com/1326</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;요청이 ajax인지 아닌지 확인하는 방법 뒤의 코드 - ASP&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;NET 웹폼&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;해봤습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Request.IsAjaxRequest&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 이는 WebForms에는 존재하지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 JQuery ajax 전화를 걸고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것이 C#에서 ajax 요청인지 아닌지 확인하려면 어떻게 해야 합니까?&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://aspnet.codeplex.com/SourceControl/changeset/view/60098#338547&quot; rel=&quot;noreferrer&quot; papago-id=&quot;3-1&quot;&gt;당신은 MVC&lt;/a&gt; 코드에 있는 것과 같이 당신만의 확장 방법을 만들 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;public static bool IsAjaxRequest(this HttpRequest request)
{
    if (request == null)
    {
        throw new ArgumentNullException(&quot;request&quot;);
    }

    return (request[&quot;X-Requested-With&quot;] == &quot;XMLHttpRequest&quot;) || ((request.Headers != null) &amp;amp;&amp;amp; (request.Headers[&quot;X-Requested-With&quot;] == &quot;XMLHttpRequest&quot;));
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;HTHs,&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;찰스&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;7-0&quot;&gt;편집:&lt;/strong&gt; 사실 콜백 요청도 아약스 요청이지만,&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;    public static bool IsAjaxRequest(this HttpRequest request)
    {
        if (request == null)
        {
            throw new ArgumentNullException(&quot;request&quot;);
        }
        var context = HttpContext.Current;
        var isCallbackRequest = false;// callback requests are ajax requests
        if (context != null &amp;amp;&amp;amp; context.CurrentHandler != null &amp;amp;&amp;amp; context.CurrentHandler is System.Web.UI.Page)
        {
            isCallbackRequest = ((System.Web.UI.Page)context.CurrentHandler).IsCallback;
        }
        return isCallbackRequest || (request[&quot;X-Requested-With&quot;] == &quot;XMLHttpRequest&quot;) || (request.Headers[&quot;X-Requested-With&quot;] == &quot;XMLHttpRequest&quot;);
    }
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;ScriptManager가 &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.scriptmanager.isinasyncpostback.aspx&quot; rel=&quot;nofollow&quot; papago-id=&quot;8-1&quot;&gt;InSyncPostBack인지&lt;/a&gt; 확인해 봅니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;ScriptManager.GetCurrent(Page).IsInAsyncPostBack
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;일반적으로, 당신은 다음에 대한 테스트가 필요할 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;X-Requested-With&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;헤더의 값이 'XMLHtpRequest'인지 확인합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 아직 C# 개발자는 아니지만, 빠른 구글 검색 결과 C#에서는 다음과 같은 일이 일어난다고 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Request.Headers[&quot;X-Requested-With&quot;] == &quot;XMLHttpRequest&quot;;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;네.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Request.IsAjaxRequest&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;에 대한 헤더 및 쿼리 문자열을 봅니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;X-Requested-With&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 하지만 당신의 잡동사니가 그들을 보내지 않는 것 같습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;X-Requested-With&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;머리말&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Fiddler를 사용하여 어떤 헤더를 보내고 있는지 확인하거나 아니면 POST URL을 다음으로 설정하여 쿼리 문자열로 보낼 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;/whatever.aspx?x-requested-with=XMLHttpRequest&lt;/code&gt;&lt;/p&gt;&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용하는 확장자를 만들었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;internal static bool IsAjaxRequest(this HttpRequestMessage request)
{
    return request != null &amp;amp;&amp;amp; request.Headers.Any(h =&amp;gt; h.Key.Equals(&quot;X-Requested-With&quot;, StringComparison.CurrentCultureIgnoreCase) &amp;amp;&amp;amp;
        h.Value.Any(v =&amp;gt; v.Equals(&quot;XMLHttpRequest&quot;, StringComparison.CurrentCultureIgnoreCase)));
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음으로 수업 꾸미기로 장식하기&lt;/font&gt;&lt;/font&gt;&lt;code&gt;[WebMethod(EnableSession = true)]&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;만약 당신이 코드 뒤에 다음 함수를 쓰고 ajax call에서 같은 함수를 호출한다면 당신은 확신할 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;[WebMethod(EnableSession = true)]
    public static void   getData(string JSONFirstData,string JSONSecondData, string JSONThirdData, string JSONForthData, ...)
    {
       //code
    }
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Ajax에서 URL은 다음과 같습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;URL :'/Codebehind.aspx/getData'&lt;/code&gt;&lt;/p&gt;&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/4392836/how-to-check-if-request-is-ajax-or-not-in-codebehind-asp-net-webforms&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>ajax</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1326</guid>
      <comments>https://bestprogram.tistory.com/1326#entry1326comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:52:49 +0900</pubDate>
    </item>
    <item>
      <title>PHP 스크립트로 멀티사이트에서 새로운 사이트를 동적으로 만드는 방법은?</title>
      <link>https://bestprogram.tistory.com/1325</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;PHP 스크립트로 멀티사이트에서 새로운 사이트를 동적으로 만드는 방법은?&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;PHP 스크립트를 사용하여 다중 사이트 워드프레스 설치에서 하위 사이트를 만들려면 어떻게 해야 합니까?&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;에 대해 읽은 적이 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;wpmu_create_blog()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;어떻게 쓰는지 모르겠어요&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음 오류가 발생합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;치명적 오류: 정의되지 않은 함수 wpmu_create_blog()를 호출합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;어떻게 해결해야 할까요?&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리운 부분은 이번 &lt;a href=&quot;https://wordpress.stackexchange.com/q/6780/12615&quot; papago-id=&quot;7-1&quot;&gt;Q&lt;/a&gt;&amp;amp;A: PHP를 &lt;a href=&quot;https://wordpress.stackexchange.com/q/6780/12615&quot; papago-id=&quot;7-1&quot;&gt;이용한 새로운 블로그 만들기&lt;/a&gt;입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예제에 요약되어 있는 다중 사이트의 도메인과 유형을 조정합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;테스트 목적으로만 이 &lt;strong papago-id=&quot;7-3&quot;&gt;파일을 라이브&lt;/strong&gt; 서버에 두지 &lt;strong papago-id=&quot;7-3&quot;&gt;마십시오.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;?php
# Load WordPress barebones
define( 'WP_USE_THEMES', false );
require( $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php' );

# Multisite domain
$main_site = 'example.com';

# Type of Multisite
$subdomain_install = false;

# URL param activated
if( isset( $_GET['new-site'] ) )
{
    # Create a new user
    $rand_number = rand( 1, 2000 );
    $username = 'user-' . $rand_number;
    $password = 'fake-password';
    // $password = wp_generate_password( 12, false );
    $email = &quot;email+$rand_number@example.com&quot;;
    $user_id = wpmu_create_user( $username, $password, $email );
    // wp_new_user_notification( $user_id, $password );

    # Create site
    if( $subdomain_install )
    {
        $newdomain = &quot;{$_GET['new-site']}.$main_site&quot;;
        $path = '/';
    }
    else
    {
        $newdomain = $main_site;
        $path = &quot;/{$_GET['new-site']}/&quot;;
    }
    $title = $_GET['new-site'];
    $blog_id = wpmu_create_blog( $newdomain, $path, $title, $user_id , array( 'public' =&amp;gt; 1 ) );
    echo &quot;New blog with ID = $blog_id&quot;;
} 
else
    echo 'Add to the URL: &amp;lt;b&amp;gt;&amp;lt;tt&amp;gt;?new-site=NAME_OF_THE_SITE&amp;lt;/tt&amp;gt;&amp;lt;/b&amp;gt;';
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/18831077/how-to-dynamically-create-a-new-site-in-multisite-with-a-php-script&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>Wordpress</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1325</guid>
      <comments>https://bestprogram.tistory.com/1325#entry1325comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:52:42 +0900</pubDate>
    </item>
    <item>
      <title>getDefaultSharedPreferences와 getSharedPreferences의 차이</title>
      <link>https://bestprogram.tistory.com/1324</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;getDefaultSharedPreferences와 getSharedPreferences의 차이&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사이의 차이점은 무엇입니까?&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;getDefaultSharedPreferences&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;getSharedPreferences&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;안드로이드에서?&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;누가 설명해 주실 수 있습니까?&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;getDefaultSharedPreferences&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;는 m &quot;과 같은 합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; example와 같은 기본 이름을 사용합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;뭔가 _ prefe차이&quot;라는 말입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;getSharedPreferences&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이름이 &lt;em papago-id=&quot;5-1&quot;&gt;필요&lt;/em&gt;합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;getDefaultSharedPreferences&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;실지로&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Context.getSharedPreferences&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(아래는 Android 소스에서 직접 전송됨):&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;public static SharedPreferences getDefaultSharedPreferences(Context context) {
    return context.getSharedPreferences(getDefaultSharedPreferencesName(context),
        getDefaultSharedPreferencesMode());
}

private static String getDefaultSharedPreferencesName(Context context) {
    return context.getPackageName() + &quot;_preferences&quot;;
}

private static int getDefaultSharedPreferencesMode() {
    return Context.MODE_PRIVATE;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기본적인 차이점을 살펴보도록 하겠습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;p&gt;&lt;code&gt;getDefaultSharedPreferences()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기본 환경설정 파일 이름을 사용합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 기본값은 응용프로그램별로 설정되므로 다음 예제와 같이 동일한 응용프로그램 컨텍스트에 있는 모든 작업에 쉽게 액세스할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;pre&gt;&lt;code&gt;SharedPreferences spref = PreferenceManager.getDefaultSharedPreferences(this);
if (spref.contains(&quot;email&quot;)) {
     String sEmailAddr = spref.getString(&quot;email&quot;, &quot;&quot;);
}
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기본 설정은 일반적으로 다음 위치에 저장됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;/data/data/com.package.name/shared_prefs/com.package.name_preferences.xml&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;대안적인 방법은&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;getSharedPreferences(name,mode)&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;특정 기본 설정(파일) 이름과 작업 모드(예: 개인, world_readable 등)를 나타낼 것을 요구합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;copolii가 언급한 바와 같이, 결과는 동일하지만 첫 번째 옵션은 더 간단하며 여러 기본 설정 파일로 분할할 수 있는 유연성이 부족합니다. 두 번째 옵션은 다음과 같습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;getSharedPreferences()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;. MODE_WORLD_READABLE 동작 지시자를 사용하여 앱 간의 기본 설정을 공유하는 것도 가능합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;getSharedPreferences()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 거의 사용되지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;임호,&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;getDefaultSharedPreferences()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;앱의 다른 모듈이 다른 기본 설정 파일을 사용하지 않도록 하지 않는 한 오타 및 혼동이 발생하기 쉬운 여러 기본 설정 파일 이름을 혼동하지 않고 안전하게 사용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;일반적으로 이것은 필요 없습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;앱이 많은 파라미터를 저장해야 한다면 데이터 보호 기능도 향상되므로 외부 데이터베이스를 사용하는 것이 더 나을 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;getSharedPreferences()를 정기적으로 사용하고 DefaultSharedPreferences()를 사용하지 않는 좋은 이유를 아는 사람이 있다면 여기에 댓글을 달아 주십시오.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 게시물이 좀 오래된 것은 알지만, v7 지원 라이브러리의 24.0.1 이후로 어디서든 컨텍스트별로 기본 설정을 검색할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;// context might be an application context, activity, ..
// so if you want to get your apps defaults, pass an activity context
PreferenceManager.getDefaultSharedPreferences(context)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;https://developer.android.com/reference/android/support/v7/preference/PreferenceManager#getdefaultsharedpreferences 참조&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기본 공유 환경설정을 사용하는 것은 패키지 이름과 함께 공유 환경설정을 사용하는 것과 같지 &lt;strong papago-id=&quot;22-1&quot;&gt;않습니다&lt;/strong&gt;.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;context.getSharedPreferences(getPackageName(), MODE_PRIVATE);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;=&amp;gt; 공유 선호도 이름 : &quot;com.my .&lt;strong papago-id=&quot;23-1&quot;&gt;package&lt;/strong&gt; name&quot;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;PreferenceManager.getDefaultSharedPreferences(context);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;=&amp;gt; 공유 선호도 이름 : &quot;com.my .&lt;strong papago-id=&quot;24-1&quot;&gt;packaguename_&lt;/strong&gt;prefe&lt;strong papago-id=&quot;24-1&quot;&gt;ents&lt;/strong&gt;&quot;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;세 번째 기능도 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;public SharedPreferences Activity.getPreferences(int mode) {}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기서 내 질문과 답변 보기: &lt;a href=&quot;https://stackoverflow.com/questions/37953002/mess-with-the-shared-preferences-of-android-which-function-to-use/37953072&quot; papago-id=&quot;26-1&quot;&gt;안드로이드의 공유 선호도를 엉망으로 만들기 &lt;/a&gt;- &lt;a href=&quot;https://stackoverflow.com/questions/37953002/mess-with-the-shared-preferences-of-android-which-function-to-use/37953072&quot; papago-id=&quot;26-1&quot;&gt;어떤 기능을 사용&lt;/a&gt;할 것인가&lt;a href=&quot;https://stackoverflow.com/questions/37953002/mess-with-the-shared-preferences-of-android-which-function-to-use/37953072&quot; papago-id=&quot;26-1&quot;&gt;?&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;getSharedPreferences()와 getDefaultSharedPreferences()는 모두 응용프로그램 수준의 환경설정에 액세스하는 데 사용됩니다.getDefaultSharedPreferences()는 Android의 전체 환경설정 프레임워크에 따라 작동하는 공유 환경설정을 얻는 데 사용됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;getDefaultSharedPreferences()는 기본적으로 Preferences Activity와 함께 작동하는 SharedPreferences 개체를 제공하므로 사용하는 것이 좋습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;28&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/5946135/difference-between-getdefaultsharedpreferences-and-getsharedpreferences&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>Android</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1324</guid>
      <comments>https://bestprogram.tistory.com/1324#entry1324comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:52:35 +0900</pubDate>
    </item>
    <item>
      <title>자바스크립트에서 이것과 self의 차이점</title>
      <link>https://bestprogram.tistory.com/1323</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;자바스크립트에서 이것과 self의 차이점&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모든 사람들이 알고 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;this&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;javascript로 하지만, 예들도 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;self&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://github.com/LeaVerou/conic-gradient/blob/11f946cae718e50a8321c168dc9336da97bd1622/conic-gradient.js#L17&quot; papago-id=&quot;3-1&quot; rel=&quot;noreferrer&quot;&gt;이곳&lt;/a&gt;과 같은 야생에서 마주친&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그렇다면, 두 사람 사이의 차이점은 무엇일까요?&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;this&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;self&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;자바스크립트로?&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다른 곳에서 설정하지 않는 한, 값은&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;self&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;window&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;왜냐하면 &lt;em papago-id=&quot;9-1&quot;&gt;자바스크립트&lt;/em&gt;는 당신이 어떠한 속성에도 접근할 수 있게 해주기 때문입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;x&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;window&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;단순하게&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;x&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 대신에&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;window.x&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.그러므로,&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;self&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;는 정말 입니다. 와 다릅니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;window.self === window; // true
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;글로벌 스코프에서 실행되고 엄격한 모드가 아닌 기능을 사용하는 경우&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;this&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기본값:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;window&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 그러므로&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;function foo() {
    console.log(
        window.self === window, // is self window?
        window.self === this,   // is self this?
        this === window         // is this window?
    );
}
foo(); // true true true
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;만약 다른 맥락에서 함수를 사용한다면,&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;this&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그 맥락을 언급하겠지만,&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;self&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;아직은&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;window&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;20&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;// invoke foo with context {}
foo.call({}); // true false false
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;21&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;찾을 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;window.self&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://www.w3.org/TR/Window/#dfn-self-attribute&quot; papago-id=&quot;23-1&quot; rel=&quot;noreferrer&quot;&gt;&lt;em papago-id=&quot;23-1-1&quot;&gt;W3C 2006&lt;/em&gt;&lt;/a&gt; &lt;a href=&quot;http://www.w3.org/TR/Window/#dfn-self-attribute&quot; papago-id=&quot;23-1&quot; rel=&quot;noreferrer&quot;&gt;작업 초안&lt;/a&gt;에 정의되어 &lt;a href=&quot;http://www.w3.org/TR/Window/#dfn-self-attribute&quot; papago-id=&quot;23-1&quot; rel=&quot;noreferrer&quot;&gt;&lt;strong papago-id=&quot;23-1-3&quot;&gt;있습니다&lt;/strong&gt;&lt;/a&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기에 서비스 종사자의 상황에서 사람들이 이 문제를 마주칠 수 있기 때문에 이 문제에 약간 더하면 약간 다른 것을 의미합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;서비스 작업자 모듈에서는 다음과 같은 내용이 표시될 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;self.addEventListener('install', function(e) {
  console.log('[ServiceWorker] Install');
});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기서 &lt;strong papago-id=&quot;26-1&quot;&gt;self&lt;/strong&gt;는 WorkerGlobalScope를 의미하며, 이는 이벤트 수신기 설정을 위한 표준 방법입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Window/self&quot; rel=&quot;noreferrer&quot; papago-id=&quot;27-1&quot;&gt;Mozilla 문서&lt;/a&gt;에서:&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;28&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;self를 사용하면 window 컨텍스트(self는 window.self로 확인)에서뿐만 아니라 worker 컨텍스트(self는 WorkerGlobalScope.self로 확인)에서도 작동하는 방식으로 전역 범위를 참조할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;비록 제가 이곳에 늦었지만 이해하는데 도움이 될 수 있는 한가지 예를 발견했습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;this&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;24&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;추가:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var myObject = {
 foo: &quot;bar&quot;,
 func: function() {
    var self = this;
    console.log(&quot;outer func:  this.foo = &quot; + this.foo);
    console.log(&quot;outer func:  self.foo = &quot; + self.foo);
    (function() {
        console.log(&quot;inner func:  this.foo = &quot; + this.foo);
        console.log(&quot;inner func:  self.foo = &quot; + self.foo);
    }());
  }
};
myObject.func();
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;31&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;O/P&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;outer func:  this.foo = bar
outer func:  self.foo = bar
inner func:  this.foo = undefined
inner func:  self.foo = bar
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;25&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; ECMA 5 &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;this&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;26&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내부 함수는 전역 창 객체를 참조하는 반면, ECMA 5의 경우,&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;this&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;27&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내부 함수는 정의되지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt;&lt;p papago-id=&quot;35&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;ECMA 5에 대한 언급은 명확히 할 필요가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;36&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;ECMA-262 Edition 5를 의미하는 것 같습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;ECMA-262(일명 ECMA스크립트 또는 덜 정확하게는 자바스크립트)는 인터넷 브라우저에서 &lt;strong papago-id=&quot;36-1&quot;&gt;구현&lt;/strong&gt;된 일반적인 스크립트 언어입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Edition 5.1 표준부터:&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;37&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음 단계는 컨트롤이 함수 개체 F에 포함된 함수 코드에 대한 실행 컨텍스트, 이 Arg를 제공한 호출자 및 호출자가 제공한 인수List를 입력할 때 수행됩니다.&lt;/font&gt;&lt;/p&gt; 
 &lt;ol&gt; 
  &lt;li papago-id=&quot;38&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;함수 코드가 엄격한 코드인 경우 ThisBinding을 이 Arg로 설정합니다.&lt;/font&gt;&lt;/li&gt; 
  &lt;li papago-id=&quot;39&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 Arg가 null이거나 정의되지 않은 경우 ThisBinding을 글로벌 개체로 설정합니다.&lt;/font&gt;&lt;/li&gt; 
  &lt;li papago-id=&quot;40&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Type(thisArg)이 Object가 아닌 경우 ThisBinding ToObject(thisArg)를 설정합니다.&lt;/font&gt;&lt;/li&gt; 
  &lt;li papago-id=&quot;41&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또는 ThisBinding을 ThisArg로 설정합니다.&lt;/font&gt;&lt;/li&gt; 
  &lt;li papago-id=&quot;42&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;... (&quot;이것&quot;에 관한 것이 아님)&lt;/font&gt;&lt;/li&gt; 
 &lt;/ol&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;43&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;글로벌 오브젝트&quot;라는 용어는 스코프 체인의 상단에 있는 모든 오브젝트를 말합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;브라우저의 경우 이 객체는 &quot;윈도우&quot; 객체이지만 구현 선택입니다(Windows Script Host에는 보이지 않는 전역 객체가 있지만 엄격한 모드는 없으므로 무자격 참조는 속성에 액세스하고 전역 &quot;자체&quot;는 없습니다).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 &quot;엄격 모드&quot;를 명시적으로 활성화해야 합니다. 그렇지 않으면 활성화되지 않습니다(표준의 섹션 14.1).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 정의되지 않은 &quot;이것&quot;은 엄격한 모드가 활성화되지 않은 상태에서 &quot;ECMA 5&quot;의 전역 개체(창)로 여전히 해결됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;44&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그렇다면 이 질문에 대한 답은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;45&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;this&quot;는 항상 함수를 호출하는 개체를 나타냅니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;함수가 개체에 의해 호출되지 않은 경우(메소드 호출이 아닌 경우), &quot;이것&quot;(함수에 전달된 것처럼)은 &quot;정의되지 않은&quot; 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 엄격 모드를 사용하지 않는 경우 정의되지 않은 &quot;이것&quot;이 글로벌 개체로 설정됩니다(위의 규칙 2).&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;46&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;self&quot;는 특별한 통사적 의미가 없고 단지 식별자일 뿐입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;브라우저는 창을 정의하는 경향이 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;self(global window object의 속성일 뿐) = window.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 위의 &quot;var self = this;&quot;와 같이 &quot;self&quot;가 엔클로저 범위 내에서 재정의되지 않는 한 &quot;self&quot;가 &quot;self&quot;와 동일한 &quot;self&quot;를 의미하는 한정되지 않은 참조가 발생합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;이것&quot;을 재정의하는 행운을 빕니다.)&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;47&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 위의 예에 대한 전체 설명은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;outer func:  this.foo = bar
// &quot;this&quot; refers to the invoking object &quot;myObject&quot;
outer func:  self.foo = bar
// &quot;self&quot; resolves to the variable in the local scope which has been set to &quot;this&quot; so it is also &quot;myObject&quot;
inner func:  this.foo = undefined
// &quot;this&quot; refers to the invoking object (none) and so is replaced by the global object (strict mode must be off). &quot;window&quot; has no foo property so its &quot;value&quot; is undefined.
inner func:  self.foo = bar
// self resolves to the variable in the enclosing scope which is still &quot;myObject&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;48&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예제를 흥미롭게 변형하면 내부 함수에 대한 기준을 반환하여 닫힘이 생성됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var myObject = {
 foo: &quot;bar&quot;,
 func: function() {
    var self = this;
    console.log(&quot;outer func:  this.foo = &quot; + this.foo);
    console.log(&quot;outer func:  self.foo = &quot; + self.foo);
    return function() {
        console.log(&quot;inner func:  this.foo = &quot; + this.foo);
        console.log(&quot;inner func:  self.foo = &quot; + self.foo);
    };
  }
};
var yourObject = {
 foo: &quot;blat&quot;,
 func: myObject.func() // function call not function object
};
console.log(&quot;----&quot;);
yourObject.func();
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;49&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;프로듀싱&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;outer func:  this.foo = bar
outer func:  self.foo = bar
----
inner func:  this.foo = blat
inner func:  self.foo = bar
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;50&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;개체에서 호출하기 전까지 내부 함수가 호출되지 않는 방법을 기록합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 이거.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;foo는 이제 당신의 개체입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;foo 그러나 self는 내부 함수 객체가 반환될 때 myObject(내 개체)였던 엔클로저 범위의 변수로 여전히 해결됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 내부 함수 내에서 &quot;이것&quot;은 내부 함수를 부르는 개체를 가리키고, &quot;자기&quot;는 외부 함수를 불러 내부 함수를 가리키는 참조를 만드는 개체를 가리킵니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;51&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;요약의 요약을 요약하면, &quot;이것&quot;은 언어 표준에 의해 정의되고, &quot;자기&quot;는 그것을 정의하는 사람(런타임 구현자 또는 엔드 프로그래머)에 의해 정의됩니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;52&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;글로벌 스코프(브라우저 환경)에서 'window', 'self' 및 'this' 콘솔 출력의 일부 조합을 아래에서 찾아 참조하십시오.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;console.log( window ); // Window&amp;nbsp;{…}
console.log( self );   // Window&amp;nbsp;{…}
console.log( this );   // Window&amp;nbsp;{…}

console.log( window.window ); // Window&amp;nbsp;{…}
console.log( window.self );   // Window&amp;nbsp;{…}
console.log( window.this );   // undefined  

console.log( self.self );     // Window&amp;nbsp;{…}
console.log( self.window );   // Window&amp;nbsp;{…}
console.log( self.this );     // undefined

console.log( this.this );     // undefined
console.log( this.window );   // Window&amp;nbsp;{…}
console.log( this.self );     // Window&amp;nbsp;{…}

console.log( window.window.window );    // Window&amp;nbsp;{…}
console.log( self.self.self );          // Window&amp;nbsp;{…}
console.log( window.self.window.self ); // Window&amp;nbsp;{…}
console.log( self.window.self.window ); // Window&amp;nbsp;{…}
console.log( this.this );               // undefined
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;53&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/16875767/difference-between-this-and-self-in-javascript&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>JavaScript</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1323</guid>
      <comments>https://bestprogram.tistory.com/1323#entry1323comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:52:28 +0900</pubDate>
    </item>
    <item>
      <title>정점 배열 객체 이해(glGenVertexArrays)</title>
      <link>https://bestprogram.tistory.com/1322</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;정점 배열 객체 이해(glGenVertexArrays)&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;VAO(Vertex Array Object)를 생성/생성할 때 다음과 같은 점과 혼동이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;glGenVertexArrays(GLsizei n, GLuint *arrays);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;glBindVertexArray(GLuint);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;버퍼 객체를 생성할 수 있고 정점에 대해 설명할 수 있으며 버퍼 객체를 다음과 같이 설명할 수 있기 때문입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;glVertexAttribPointer&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;glEnableVertexAttribArray&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;VAO를 만들지 않고도 말입니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;버퍼 객체의 데이터를 설명하기 위해 실제로 VAO를 생성할 필요가 없는 경우 OpenGL SuperBible 5ed와 같은 소스에 VBO를 생성할 때 VAO를 생성하기 위한 호출이 포함되는 이유는 무엇입니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;아직 발견하지 못한 더 고급 주제에만 사용되는 건가요, 완전히 혼란스러운 건가요?&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 VBO에서 위키미디어 항목을 읽을 때 이 질문을 처음 접했는데 샘플 코드에는 다음에 대한 호출이 포함되지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;glGenVertexArrays()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 그들은 여전히 데이터를 설명합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;glVertexAttribPointer()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;a href=&quot;http://en.wikipedia.org/wiki/Vertex_Buffer_Object&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;5-1&quot;&gt;Wiki VBO 항목&lt;/a&gt; -- 어떤 &lt;a href=&quot;http://openglbook.com/chapter-2-vertices-and-shapes.html&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;5-3&quot;&gt;이유로 VAO가 생성되는 예?&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;성능 향상.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;호스트에서 속성을 설정하려면 많은 수의 API 호출과 구현 내부의 중요한 검증이 필요한 경우가 많습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 모든 작업을 한 번 수행하고 VAO를 사용하면 해당 작업을 상각할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어, 실제 데이터에 대한 Graham Sellers의 &lt;a href=&quot;http://www.openglsuperbible.com/2013/12/09/vertex-array-performance/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;13-1&quot;&gt;분석&lt;/a&gt;을 참조하십시오.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;세 개의 VBO가 필요한 객체를 구축한다고 가정합니다(차양을 위한 서로 다른 데이터, 아마도 위치, 정규식 및 일부 화려한 효과 매개변수).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 개체를 그릴 때마다 이 모든 VBO를 바인딩하고 추가 매개 변수를 설정해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;VAO를 사용하는 경우 (꼭짓점 배열을 바인딩하는) 호출 하나만 사용하면 특정 개체에 대한 전체 환경이 설정됩니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그 답은 당신이 생각했던 것만큼 어렵지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;재미있는 비유라고 생각해보세요.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;VertexArrayObject&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사장이고 여러명의 직원들을 관리합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;VetexBufferObjects&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/5970087/understanding-vertex-array-objects-glgenvertexarrays&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>c</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1322</guid>
      <comments>https://bestprogram.tistory.com/1322#entry1322comment</comments>
      <pubDate>Sun, 29 Oct 2023 19:52:20 +0900</pubDate>
    </item>
    <item>
      <title>C 표준 라이브러리의 기능을 C++에서 사용할 수 있습니까?</title>
      <link>https://bestprogram.tistory.com/1321</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;C 표준 라이브러리의 기능을 C++에서 사용할 수 있습니까?&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 지금 C와 C 표준 라이브러리에 익숙해지고 있는데 나중에 C++와 함께 일할 때 이 분야에 대한 제 지식이 유용할지 궁금합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 C 표준 라이브러리에서 제공하는 기능을 C++ 설정으로 사용할 수 있는지, 실제로 사용하는 것이 타당한지, 왜 가능한지 알고 싶습니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;네, C++는 원래 C++에서 어떤 C 라이브러리라도 쉽게 사용할 수 있도록 설계되었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;물론 이것은 약간 덜 사실입니다. (특히 C 라이브러리가 어떤 C++ 키워드를 사용하는 경우에는)&lt;/font&gt;&lt;/font&gt;&lt;code&gt;try&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;아니면&lt;/font&gt;&lt;/font&gt;&lt;code&gt;dynamic_cast&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 작동하지 않습니다. 또한 C++로 코딩된 &lt;a href=&quot;https://en.wikipedia.org/wiki/Callback_%28computer_programming%29&quot; papago-id=&quot;5-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;콜백&lt;/a&gt;이 C 라이브러리로 전달되면 큰 혼란이 발생할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;C++에서 C 헤더 파일을 사용하는 표준 방법은&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; extern &quot;C&quot; {
 #include &amp;lt;some_c_header_file.h&amp;gt;
 };
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 대부분의 &lt;em papago-id=&quot;7-1&quot;&gt;기존&lt;/em&gt; C 헤더 파일들은 C++와 협력하도록 설계되어 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; #ifdef __cplusplus
 extern &quot;C&quot; {
 #endif

 //// most of the header material goes here, C style

 #ifdef __cplusplus
 }; // end extern &quot;C&quot;
 #endif
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;실제로 많은 C 표준 헤더는 위와 같은 것들을 랩핑하는 동등한 C++ 헤더를 가지고 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;namespace std&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;). Eg C&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&amp;lt;stdio.h&amp;gt;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;C++ 입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&amp;lt;cstdio&amp;gt;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;-하지만 종종 정품 C++ 스트림을 선호해야 합니다 (&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&amp;lt;iostream&amp;gt;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;), 그러나&lt;/font&gt;&lt;/font&gt;&lt;code&gt;printf&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;-like 루틴은 대개 &lt;a href=&quot;http://man7.org/linux/man-pages/man3/gettext.3.html&quot; papago-id=&quot;13-3&quot; rel=&quot;nofollow noreferrer&quot;&gt;gettext(3&lt;/a&gt;)와 함께 &lt;a href=&quot;https://en.wikipedia.org/wiki/Internationalization_and_localization&quot; papago-id=&quot;13-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;현지화&lt;/a&gt;하기 쉽습니다&lt;a href=&quot;http://man7.org/linux/man-pages/man3/gettext.3.html&quot; papago-id=&quot;13-3&quot; rel=&quot;nofollow noreferrer&quot;&gt;.&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 &lt;strong papago-id=&quot;14-1&quot;&gt;C와 C++&lt;/strong&gt;는 &lt;strong papago-id=&quot;14-1&quot;&gt;매우 다른 언어입니다.&lt;/strong&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;관용적인 C++11로 코딩해야 합니다 (&lt;a href=&quot;http://en.cppreference.com/w/cpp/container&quot; papago-id=&quot;14-3&quot; rel=&quot;nofollow noreferrer&quot;&gt;표준&lt;/a&gt; C++ 용기 사용,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;auto&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Closure_%28computer_programming%29&quot; papago-id=&quot;15-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;닫기&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization&quot; papago-id=&quot;15-3&quot; rel=&quot;nofollow noreferrer&quot;&gt;RAI&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Smart_pointer&quot; papago-id=&quot;15-5&quot; rel=&quot;nofollow noreferrer&quot;&gt;스마트 포인터&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Rule_of_three_%28C%2B%2B_programming%29&quot; papago-id=&quot;15-7&quot; rel=&quot;nofollow noreferrer&quot;&gt;5의 규칙&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Substitution_failure_is_not_an_error&quot; papago-id=&quot;15-9&quot; rel=&quot;nofollow noreferrer&quot;&gt;SFINAE&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Exception_handling&quot; papago-id=&quot;15-11&quot; rel=&quot;nofollow noreferrer&quot;&gt;예외&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Anonymous_function&quot; papago-id=&quot;15-13&quot; rel=&quot;nofollow noreferrer&quot;&gt;익명 함수&lt;/a&gt;, ...)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;일부 표준 C 함수는 관용적인 C++에서 그다지 유용하지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어, 직접 &lt;em papago-id=&quot;16-1&quot;&gt;사용&lt;/em&gt;하지 않을 가능성이 높습니다.&lt;/font&gt;&lt;/font&gt; &lt;code&gt;malloc&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;em papago-id=&quot;17-1&quot;&gt;정품&lt;/em&gt; C++로 (최소한 선호)&lt;/font&gt;&lt;/font&gt;&lt;code&gt;new&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;- 여전히 매우 낮은 레벨이고 C++ 정신에 더 이상은 없는 - 힙 할당을 수동으로 처리하지 &lt;em papago-id=&quot;18-1&quot;&gt;않고&lt;/em&gt; 컨테이너와 스마트 포인터를 많이 사용할 가능성이 높습니다.)&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 &lt;a href=&quot;http://en.wikipedia.org/wiki/POSIX&quot; papago-id=&quot;18-3&quot; rel=&quot;nofollow noreferrer&quot;&gt;POSIX&lt;/a&gt; 함수(특히 &lt;a href=&quot;http://man7.org/linux/man-pages/man2/syscalls.2.html&quot; papago-id=&quot;18-5&quot; rel=&quot;nofollow noreferrer&quot;&gt;syscalls(2))&lt;/a&gt;는 C++에서 상당히 유용합니다. C++ 예외와 호환되지 않을 가능성이 높습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그건 그렇고, C++는 이번 세기에 &lt;em papago-id=&quot;19-1&quot;&gt;많이&lt;/em&gt; 발전했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;C++98은 배우지 말고 적어도 &lt;a href=&quot;https://en.wikipedia.org/wiki/C%2B%2B11&quot; papago-id=&quot;19-3&quot; rel=&quot;nofollow noreferrer&quot;&gt;C++11&lt;/a&gt;은 (&lt;a href=&quot;https://en.wikipedia.org/wiki/C%2B%2B14&quot; papago-id=&quot;19-7&quot; rel=&quot;nofollow noreferrer&quot;&gt;그들 사이&lt;/a&gt;에 엄청난 차이가 있다)&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;em papago-id=&quot;19-9&quot;&gt;최신&lt;/em&gt; 컴파일러(&lt;a href=&quot;http://gcc.gnu.org/&quot; papago-id=&quot;19-11&quot; rel=&quot;nofollow noreferrer&quot;&gt;GCC&lt;/a&gt; 또는 &lt;a href=&quot;http://clang.llvm.org/&quot; papago-id=&quot;19-13&quot; rel=&quot;nofollow noreferrer&quot;&gt;Clang/LLVM&lt;/a&gt;)를 사용합니다. 2015년 12월에는 적어도 &lt;a href=&quot;http://gcc.gnu.org/gcc-5/&quot; papago-id=&quot;19-15&quot; rel=&quot;nofollow noreferrer&quot;&gt;GCC 5&lt;/a&gt; 또는 &lt;a href=&quot;http://llvm.org/releases/3.7.0/docs/ReleaseNotes.html&quot; papago-id=&quot;19-17&quot; rel=&quot;nofollow noreferrer&quot;&gt;Clang/LLVM&lt;/a&gt; 3&lt;a href=&quot;http://llvm.org/releases/3.7.0/docs/ReleaseNotes.html&quot; papago-id=&quot;19-17&quot; rel=&quot;nofollow noreferrer&quot;&gt;.7&lt;/a&gt;을 의미합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;컴파일러에서 모든 경고 및 디버그 정보를 활성화하는 것을 잊지 마십시오(예:&lt;/font&gt;&lt;/font&gt;&lt;code&gt;g++ -Wall -Wextra -g -std=c++11&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;21-0&quot;&gt;C++(&lt;/strong&gt;적어도 C++11을 의미함)는 C보다 훨씬 복잡한 어려운 &lt;strong papago-id=&quot;21-2&quot;&gt;프로그래밍 언어&lt;/strong&gt;입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;몇 주간의 독서 기간이 필요할 것이고, 좋은 코딩 스타일과 훈련이 필수적입니다. (C++로 아주 엉망인 코드를 쉽게 쓸 수 있습니다.)&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://www.stroustrup.com/Programming/&quot; papago-id=&quot;21-4&quot; rel=&quot;nofollow noreferrer&quot;&gt;&lt;em papago-id=&quot;21-4-0&quot;&gt;프로그래밍&lt;/em&gt;&lt;/a&gt;부터 시작:&lt;a href=&quot;http://www.stroustrup.com/Programming/&quot; papago-id=&quot;21-4&quot; rel=&quot;nofollow noreferrer&quot;&gt;&lt;em papago-id=&quot;21-4-0&quot;&gt; C++&lt;/em&gt;&lt;/a&gt;를 &lt;a href=&quot;http://www.stroustrup.com/Programming/&quot; papago-id=&quot;21-4&quot; rel=&quot;nofollow noreferrer&quot;&gt;&lt;em papago-id=&quot;21-4-0&quot;&gt;사용한 원칙 &lt;/em&gt;&lt;/a&gt;및 &lt;a href=&quot;http://www.stroustrup.com/Programming/&quot; papago-id=&quot;21-4&quot; rel=&quot;nofollow noreferrer&quot;&gt;&lt;em papago-id=&quot;21-4-0&quot;&gt;실습&lt;/em&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;C만 알면 C++를 배우기 &lt;em papago-id=&quot;22-3&quot;&gt;전&lt;/em&gt;에 &lt;a href=&quot;http://mitpress.mit.edu/sicp/&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;22-1&quot;&gt;SICP&lt;/a&gt;를 읽고(그리고 스킴을 조금 공부하는 것도) 보람이 있다고 생각합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Undefined_behavior&quot; papago-id=&quot;23-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;정의&lt;/a&gt;되지 않은 &lt;a href=&quot;https://en.wikipedia.org/wiki/Undefined_behavior&quot; papago-id=&quot;23-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;행동&lt;/a&gt;의 개념은 C에서 그리고 아마도 C++에서 모두 매우 중요합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신은 그것을 절대적으로 이해할 필요가 있습니다(C 참조).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;라트너의 &lt;a href=&quot;http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;23-3&quot;&gt;블로그&lt;/a&gt;)와 &lt;a href=&quot;https://stackoverflow.com/a/25636788/841108&quot; papago-id=&quot;23-5&quot;&gt;피하세요&lt;/a&gt;.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 기존의 &lt;a href=&quot;https://en.wikipedia.org/wiki/Free_software&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;24-1&quot;&gt;무료 소프트웨어&lt;/a&gt;와 그 소스 코드를 연구(또는 기여)함으로써 많은 것을 배울 수 있을 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러므로 저는 리눅스를 사용하는 것을 추천합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;ISO/IEC N3690(c++ 표준)의 한 단락만 인용하겠습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;17.2 C 표준 라이브러리&lt;/font&gt;&lt;/p&gt; 
 &lt;p papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;1 C++ 표준 라이브러리는 정적 타입의 안전성을 보장하기 위해 적절히 조정된 C 표준 라이브러리의 설비도 이용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;28&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 그냥 네!&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;29&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;네. C++ 예제에서 표준 c 라이브러리 함수를 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;    stdio.h   =&amp;gt; cstdio   (printf/scanf)
    math.h    =&amp;gt; cmath     (sqrt)  
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;30&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/34307731/can-functions-from-the-c-standard-library-be-used-in-c&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>c</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1321</guid>
      <comments>https://bestprogram.tistory.com/1321#entry1321comment</comments>
      <pubDate>Tue, 24 Oct 2023 21:31:01 +0900</pubDate>
    </item>
    <item>
      <title>CSS: 글꼴 크기 100% - 무엇의 100%?</title>
      <link>https://bestprogram.tistory.com/1320</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;CSS: 글꼴 크기 100% - 무엇의 100%?&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;백분율 &lt;a href=&quot;http://kyleschaeffer.com/best-practices/css-font-size-em-vs-px-vs-pt-vs/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;1-7&quot;&gt;크기와 다른 크기&lt;/a&gt;의 글꼴에 대한 &lt;a href=&quot;http://www.w3.org/TR/CSS2/fonts.html#font-size-props&quot; rel=&quot;noreferrer&quot; papago-id=&quot;1-3&quot;&gt;기사&lt;/a&gt;와 &lt;a href=&quot;https://stackoverflow.com/questions/132685/font-size-in-css-or-em&quot; papago-id=&quot;1-5&quot;&gt;질문&lt;/a&gt;이 &lt;a href=&quot;http://www.alistapart.com/articles/howtosizetextincss&quot; rel=&quot;noreferrer&quot; papago-id=&quot;1-1&quot;&gt;많습니다&lt;/a&gt;.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 백분율 값의 기준이 무엇인지 알 수 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 '모든 브라우저에서 동일한 크기'인 것으로 알고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어 이 글도 읽었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;백분율(%):&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;백분율 단위는 몇 가지 기본적인 차이를 제외하고는 &quot;em&quot; 단위와 매우 유사합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;우선, 현재 글꼴 크기는 100%(즉, 12pt = 100%)와 같습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;백분율 단위를 사용하는 동안 텍스트는 모바일 장치와 접근성을 위해 완벽하게 확장 가능합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;출처 : http://kyleschaeffer.com/best-practices/css-font-size-em-vs-px-vs-pt-vs/&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;즉,   라고 하면 먼저 &quot; 12 pt  100%&quot;라는 을 정의해야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;라고 말한다면, 그것은 당신이 먼저 정의해야 한다는 것을 의미합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;font-size: 12pt&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 작동하는 겁니까&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그게 작동 방법이야?&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;먼저 절대측량에서 크기를 정의한 다음 이를 '100%'&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;라고 합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;많은 표본에서 다음을 입력하는 것이 유용하다고 하므로 이는 많은 의미가 없습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;body {
  font-size: 100%;
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그럼 이렇게 함으로써 글자 크기는 &lt;em papago-id=&quot;6-1&quot;&gt;어떻게&lt;/em&gt; 됩니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;화면에 보이는 크기가 폰트마다 다르다는 것을 알 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어, Arial은 Times New Roman보다 훨씬 커 보입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 이렇게 하면 바디 사이즈 = 100%로 모든 브라우저에서 동일하다는 뜻입니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;아니면 절대값을 먼저 정의할 경우에만?&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;업데이트, 7월 23일 토요일&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 거기에 도착할 예정입니다만, 조금만 참아주세요.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 % 값은 기본 브라우저 글꼴 크기와 관련이 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;좋은 말씀이지만 몇 가지 다른 질문이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 표준 크기는 모든 브라우저 버전에서 항상 동일한가요, 아니면 버전마다 다른가요?&lt;/font&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 구글 크롬의 설정을 찾았고(아래 이미지 참조), 표준 &quot;serif&quot;, &quot;sans-serif&quot;, &quot;monospace&quot; 설정을 봅니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 다른 글꼴의 경우 이를 어떻게 해석해야 합니까?&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;정의한다고 말함&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;font: 100% Georgia;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 브라우저의 크기는 어떻게 됩니까?&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;까의  것인가?&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 아니면 &quot;Georgia&quot; 글꼴이 브라우저의 표준 크기를 갖겠습니까?&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;몇몇 웹사이트에서 나는 다음과 같은 것들을 &lt;a href=&quot;http://www.alistapart.com/articles/howtosizetextincss&quot; papago-id=&quot;13-1&quot; rel=&quot;noreferrer&quot;&gt;읽습니다&lt;/a&gt;.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Sizing text and line-height in ems, with a percentage specified on the body [..], was shown to provide **accurate, resizable text across all browsers** in common use today&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;가 지금 , 를 조정할 수 있는 된 글꼴 ) 중 &lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 하지만 제가 지금 배우는 바에 따르면, 저는 실제로 크기를 조정할 수 있는 텍스트(이 인용문에서 추천하는 것처럼 %나 em을 사용함) 또는 '브라우저 전체에서 정확하고 일관된 글꼴 크기'(px 또는 pt를 기본으로 사용함) 중 하나를 선택해야 한다고 생각합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이거 맞는건가요?&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Google 설정:&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://i.stack.imgur.com/9dR1N.png&quot; alt=&quot;Google Chrome Settinsg&quot;&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;절대값으로 크기를 정의하지 않으면 상황이 &lt;em papago-id=&quot;16-3&quot;&gt;이렇게&lt;/em&gt; 보일 수 &lt;em papago-id=&quot;16-1&quot;&gt;있다고&lt;/em&gt; 생각합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://i.stack.imgur.com/GomGD.gif&quot; alt=&quot;enter image description here&quot;&gt;&lt;/p&gt;&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;파이어폭스의 브라우저 기본값은 16pt와 같습니다. 파이어폭스 옵션으로 들어가 내용 탭을 클릭하고 글꼴 크기를 확인하면 확인할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다른 브라우저에서도 똑같이 할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 개인적으로 웹사이트의 기본 글꼴 크기를 조절하는 것을 좋아하기 때문에 모든 페이지에 포함된 CSS 파일에서 BODY 기본값을 다음과 같이 설정합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;body {
    font-family: Helvetica, Arial, sans-serif;
    font-size: 14px
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이제 모든 HTML 태그의 글꼴 크기는 14px의 글꼴 크기를 이어받게 됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모든 디브의 글자 크기가 바디보다 10% 더 컸으면 좋겠다고 생각하면, 저는 그저 이렇게 할 뿐입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;div {
    font-size: 110%
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이제 내 페이지를 보는 모든 브라우저는 자동으로 모든 div를 본체의 div보다 10% 더 크게 만들 것입니다. 이것은 15.4px 정도여야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모든 div의 글꼴 크기를 10% 작게 하려면 다음을 수행합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;div {
    font-size: 90%
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이렇게 하면 모든 div의 글꼴 크기가 12.6px가 됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 글꼴 크기가 상속되므로 중첩된 각 디브의 글꼴 크기가 10% 감소하므로 다음과 같은 사항을 알아야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;div&amp;gt;Outer DIV.
    &amp;lt;div&amp;gt;Inner DIV&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내부 디브의 글꼴 크기는 11.34px(12.6px의 90%)로, 의도하지 않았을 수도 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 설명에 도움이 될 것입니다: http://www.w3.org/TR/2011/REC-CSS2-20110607/syndata.html#value-def-percentage&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;폰트가 다음과 같이 설정되면 이해합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;body {
  font-size: 100%;
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;28&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;브라우저는 해당 브라우저의 사용자 설정에 따라 글꼴을 렌더링합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;29&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사양에는 %가 렌더링되었다고 나와 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;30&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;상위 요소의 글꼴 크기에 상대적인&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;&lt;a href=&quot;http://www.w3.org/TR/CSS1/#font-size&quot; rel=&quot;noreferrer&quot; papago-id=&quot;31&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;http://www.w3.org/TR/CSS1/ # font사이즈&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;32&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 경우 브라우저가 설정되어 있는 것을 의미합니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;font-size&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;속성은 &lt;strong papago-id=&quot;7-1&quot;&gt;상위 요소의 글꼴 크기&lt;/strong&gt;에 상대적입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;CSS 2.1은 이것을 모호하고 혼란스럽게 말하지만(&quot;상속된 글꼴 크기&quot;를 언급함), CSS3 Text는 매우 명확하게 &lt;a href=&quot;http://www.w3.org/TR/css3-fonts/#font-size-prop&quot; rel=&quot;noreferrer&quot; papago-id=&quot;7-3&quot;&gt;말합니다&lt;/a&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;의 입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;body&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 즉 element는 root element,즉입니다&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;html&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;요소.&lt;/font&gt; &lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;에 설정되지 않은 경우&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;루트 요소의 글꼴 크기는 구현에 따라 달라집니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;스타일시트에 설정하지 않은 경우 루트 요소의 글꼴 크기는 구현에 따라 달라집니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;일반적으로 사용자 설정에 따라 달라집니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;font-size: 100%&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;요소가 부모의 글꼴 크기를 상속하므로(동일한 결과로 이어짐), 스타일시트가 자신의 글꼴 크기를 설정하지 않는 경우에는 대부분의 경우 의미가 없습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 다른 스타일시트(브라우저 기본 스타일시트 포함)의 설정을 재정의하는 데 유용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;를 들면 , a.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;input&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;요소는 일반적으로 브라우저 스타일 시트에 설정이 있으므로 기본 글꼴 크기가 복사 텍스트의 설정 크기보다 작습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;글꼴 크기를 동일하게 만들고 싶다면, 설정할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;42&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;입력 { 글꼴 크기: 100% }&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;은.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;body&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;요소, 논리적으로 중복되는 설정&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;font-size: 100%&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;일부 브라우저 버그(지금은 중요성을 잃었을 가능성이 있는 브라우저)를 방지하는 데 도움이 될 것으로 믿어지기 때문에 상당히 자주 사용됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;파티에 늦었더라면 미안하지만, 당신의 편집에서 당신은 다음과 같은 말을 했습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;font: 100% Georgia&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 다른 대답들은 대답하지 않았습니다&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;20&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사이에 차이가 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;font: 100% Georgia&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;21&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;font-size:100%; font-family:'Georgia'&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 그것이 속기 가 없었을 &lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 만약 그것이 속기 방법의 전부라면, 글자 크기 부분은 의미가 없을 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 많은 특성을 기본값으로 설정합니다. 선 높이는&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;normal&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(또는 약 1.2), 스타일(이탤릭체가 아닌) 및 무게(볼드체가 아닌).&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;52&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그게 전부입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다른 대답들은 이미 그 밖에 언급할 것들을 모두 언급했습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;53&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;pt 또는 px 값으로 재정의하지 않는 한 기본 브라우저 글꼴 크기에 상대적입니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;24&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;설득력 있게 보여주신 것처럼&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;font-size: 100%;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;25&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모든 브라우저에서 동일하게 렌더링되지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 CSS 파일에서 글꼴을 설정하므로 모든 브라우저에서 동일(또는 폴백)하게 됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;26&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;믿어요&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;font-size: 100%;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;27&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;와 결합할 때 매우 유용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;em&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;28&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;- 기본 설계.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://www.sitepoint.com/power-em-units-css/&quot; rel=&quot;nofollow&quot; title=&quot;CSS에서 EM 유닛의 파워&quot; papago-id=&quot;28-1&quot; papago-attr-id=&quot;1&quot;&gt;이 기사&lt;/a&gt;에서 알 수 있듯이, 이것은 매우 유연한 웹사이트를 만들 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;59&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 언제 유용합니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신의 사이트가 방문자들의 희망에 적응해야 할 때.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;기본 글꼴 크기를 24px로 설정한 노인을 예로 들 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;아니면 눈을 가늘게 뜨고 있어야 하기 때문에 기본 글꼴 크기가 커지는 해상도의 작은 화면을 가진 사람.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;대부분의 사이트가 중단되지만, EM 기반 사이트는 이러한 상황에 대처할 수 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;29&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;29-1&quot;&gt;1996년으로 거슬러 올라가는 모든&lt;/strong&gt; 사양에 따르면, 백분율 값은&lt;/font&gt;&lt;/font&gt;&lt;code&gt;font-size&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;30&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;상위 요소&lt;em papago-id=&quot;30-1&quot;&gt;(&lt;/em&gt;computed)의 글꼴 크기를 참조합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;style&amp;gt;
div {
  font-size: 16px;
}
span {
  font-size: 75%;
}
&amp;lt;/style&amp;gt;
&amp;lt;div&amp;gt;&amp;lt;span&amp;gt;this font size is 12px!&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;62&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그렇게 쉬워요.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;31&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; .&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;div&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;32&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;상대 글꼴 크기를 선언합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 예:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;em&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;33&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;s, 혹은 더 나쁜, 또 다른 비율?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;위의 &lt;em papago-id=&quot;33-1&quot;&gt;&quot;계산&quot;&lt;/em&gt;을 참조하십시오.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;상대적 단위가 변환하는 절대 단위.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;66&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;남은 질문은 상위가 없는 루트 요소에서 백분율 값을 사용하면 어떻게 되는지입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;html {
  font-size: 62.5%; /* 62.5% of what? */
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;67&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 경우에는 이 질문의 &lt;a href=&quot;https://stackoverflow.com/questions/19503196/what-does-font-size-100-on-the-html-element-do&quot; papago-id=&quot;67-1&quot;&gt;&quot;중복&quot;&lt;/a&gt;을 참조하십시오.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;TLDR: 루트 요소의 백분율은 사용자마다 다를 수 있는 브라우저 기본 글꼴 크기를 나타냅니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;68&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;참조:&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.w3.org/TR/CSS1/#font-size&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;69&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;CSS 1 사양 (1996)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.w3.org/TR/CSS2/fonts.html#propdef-font-size&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;70&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;CSS 2.1 사양 (2011)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.w3.org/TR/css-fonts-3/#percentage-size-value&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;71&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;CSS 글꼴 레벨 3 사양 (2013)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://drafts.csswg.org/css-fonts/#length-percentage-size-value&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;72&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;CSS 폰트 레벨 3 편집자 초안 (2017)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt;&lt;p papago-id=&quot;73&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;해당 글꼴에 정의된 기본 크기에 상대적입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;74&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;누군가 웹 브라우저에서 페이지를 열면 사용하는 기본 글꼴과 글꼴 크기가 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;75&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;글꼴 패밀리와 글꼴 크기의 값을 달리하여 내용을 조정할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 컨텐츠를 확장할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;글꼴 크기 상속 문제의 경우 요소에 대한 특정 글꼴 크기를 지정하여 항상 재정의할 수 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;76&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/6803016/css-100-font-size-100-of-what&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>css</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1320</guid>
      <comments>https://bestprogram.tistory.com/1320#entry1320comment</comments>
      <pubDate>Tue, 24 Oct 2023 21:30:54 +0900</pubDate>
    </item>
    <item>
      <title>XML 네임스페이스의 용도는 무엇입니까?</title>
      <link>https://bestprogram.tistory.com/1319</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;XML 네임스페이스의 용도는 무엇입니까?&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 제가 항상 다른 사람들에게 설명하기 어려운 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;XML 네임스페이스가 존재하는 이유는 무엇입니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;우리는 언제 그것들을 사용해야 하고 언제 사용하지 말아야 합니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;XML에서 네임스페이스로 작업할 때 일반적으로 발생하는 문제점은 무엇입니까?&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 XML 스키마와 어떤 관계가 있습니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;XSD 스키마를 항상 네임스페이스와 연결해야 합니까?&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;요소와 속성 이름의 충돌에 대한 걱정 없이 여러 마크업 언어를 결합할 수 있도록 하기 위한 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어, XSLT 코드의 임의의 부분을 살펴본 다음 네임스페이스를 사용하지 않고 출력에 &quot;템플릿&quot;, &quot;각각&quot; 등의 요소가 포함되어야 하는 XSLT를 작성하려고 하면 어떻게 되는지 생각해 보십시오.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;구문 오류, 그게 뭐죠?&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;나보다 더 경험이 많은 사람들에게 조언과 함정을 맡기겠습니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;em papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;XML 네임스페이스가 존재하는 이유는 무엇입니까?&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;왜냐하면, 1997년에, W3C의 매우 영향력 있는 몇몇 사람들은 그들을 원했고, &lt;a href=&quot;http://mailman.ic.ac.uk/pipermail/xml-dev/1999-September/015411.html&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;7-1&quot;&gt;거절을 대답으로 받아들이려&lt;/a&gt; 하지 않았기 때문입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것이 증명되었을 때에도, 저는 감히 결론적으로, 그들이 가지고 있다고 생각했던 &quot;문제&quot;를 해결하기 위한 더 나은 방법들이 있다고 말할 수 있지만, 그들은 여전히 그들의 욕망을 W3C 추천서에 기록하기 위해 영향력을 행사했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;현재 XML 네임스페이스를 둘러싼 광범위한 신화에서 가장 큰 반향을 일으키고 있는 것은 이들에게 기술적인 장점이 있다는 것입니다. (이것은 단순히 존재하는 권장사항의 하류 효과이며, 따라서 마음의 공간을 점유하고 있다는 것입니다.) &quot;이런, (좋은) 이유가 있을 거야!&quot;라는 것이지, 잊어버릴 수 있는 각주는 아닙니다.)&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://www.nyct.net/%7Earay/sgo/bogosity.txt&quot; papago-id=&quot;9-0&quot; rel=&quot;nofollow noreferrer&quot;&gt;많은&lt;/a&gt; 고통을 겪었지만 &lt;a href=&quot;http://www.nyct.net/%7Earay/sgo/bogosity.txt&quot; papago-id=&quot;9-0&quot; rel=&quot;nofollow noreferrer&quot;&gt;얻는&lt;/a&gt; 것은 &lt;a href=&quot;http://www.nyct.net/%7Earay/sgo/bogosity.txt&quot; papago-id=&quot;9-0&quot; rel=&quot;nofollow noreferrer&quot;&gt;없었습니다&lt;/a&gt;.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;우리는 언제 그것들을 사용해야 하고 언제 사용하지 말아야 합니까?&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;어쩔 수 없다면 절대 사용해서는 안됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;유감스럽게도 이해 관계자들이 이 BAD[*] 장치를 끊임없이 홍보하면서 오늘날 XML 네임스페이스와 씨름할 필요가 없는 사양 클러스터가 형성되었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 XML 네임스페이스를 직접 피하더라도 모든 방향에서 네임스페이스로 둘러싸인 크루드가 사용자에게 제공되지 않는 한 작업을 거부하는 툴셋을 발견할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;XML에서 네임스페이스로 작업할 때 일반적으로 발생하는 문제점은 무엇입니까?&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;네임스페이스가 &quot;기본값&quot;으로 설정된 문서에 Xpath 식을 사용하는 것이 가장 일반적인 함정입니다. 즉, 네임스페이스는 식에 명시적이어야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;또 다른 문제는 문서를 작성할 때 &quot;올바른&quot; 방법으로 문서를 사용하는 것입니다. 즉, 이&lt;a href=&quot;http://lists.xml.org/archives/xml-dev/200210/msg00824.html&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;13-1&quot;&gt; 문서들은 허공에서 문제를 발생&lt;/a&gt;시킵니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 XML 스키마와 어떤 관계가 있습니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;XSD 스키마를 항상 네임스페이스와 연결해야 합니까?&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;XSD 스키마 사양은 위원회의 거의 모든 사람들이 XML 네임스페이스를 물고 있던 시기에 개발된 것 외에는 필요한 관계가 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 그들은 가능한 한 깊이 연구했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그럼에도 불구하고 이름 공간 없이 XSD 스키마를 사용하는 것은 가능하지만, XSD 스키마를 지원하는 거의 모든 툴셋에서 이름 공간을 사용하는 것을 &quot;원하게&quot; 가정하기 때문에 가파른 오르막길입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;[*] BAD = 파손된 상태 그대로&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;업데이트: &lt;a href=&quot;http://www.nyct.net/%7Earay/ns/ns.html&quot; papago-id=&quot;17-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;문제&lt;/a&gt;가 아닌 &lt;a href=&quot;http://www.nyct.net/%7Earay/ns/ns.html&quot; papago-id=&quot;17-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;문제에 대한&lt;/a&gt; 이 &lt;a href=&quot;http://www.nyct.net/%7Earay/ns/ns.html&quot; papago-id=&quot;17-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;해결책에 대한 오래된 에세이&lt;/a&gt;.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이는 &quot;Java/C#에 패키지를 사용하는 이유&quot;를 묻는 것과 거의 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;19-0&quot;&gt;재사용&lt;/strong&gt; 가능성:&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;여러 종류의 xml 문서에서 정의한 태그/속성 집합을 재사용할 수 있습니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;20-0&quot;&gt;모듈화&lt;/strong&gt;:&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;XML에 &quot;양상&quot;을 추가해야 하는 경우, XML 문서에 네임스페이스를 추가하는 것이 전체 XML 스키마 정의를 변경하는 것보다 간단합니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;21-0&quot;&gt;&quot;메인&quot;&lt;/strong&gt; 네임스페이스를 &lt;strong papago-id=&quot;21-0&quot;&gt;오염시키지 않도록&lt;/strong&gt; 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;구문 분석기가 거대한 스키마 정의로 작동하도록 강요하지 않고 필요한 네임스페이스만 사용합니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt;&lt;p papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;IMHO의 가장 큰 함정은 XML 문서를 처리하기 위한 코드를 개발하기 위해 문서를 해석하는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;문서 구문 분석의 정보 결과보다 문서의 문자 그대로 표현에 초점을 맞추는 것은 너무 쉽습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어 다음 노드들&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;a xmlns=&quot;uri:foo&quot;/&amp;gt;
&amp;lt;foo:a xmlns:foo=&quot;uri:foo&quot;/&amp;gt;
&amp;lt;bar:a xmlns:bar=&quot;uri:foo&quot;/&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모두 의미론적으로 동일하지만 순진한 눈과는 매우 다릅니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;첫 번째 예제에서는 XPath를 개발하는 데 매우 일반적인 실수가 발생합니다. - &quot;a&quot;가 네임스페이스에 있다는 사실을 놓쳤기 때문에 //a는 일치하는 것이 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;(아니면 다른 네임스페이스에 있는 노드가 여전히 일치하는 경우도 있습니다!)&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;세 번째 예는 접두사 텍스트가 의미론적으로 중요하다는 것을 이해하는 데 또 다른 결점을 열어줍니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;XPATH로 문서를 구문 분석할 때 uri가 문서의 uri와 일치하는 한 일치하는 접두사를 선언할 수 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;요소 유형의 성으로 생각해 보세요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;둘 다 밥이라고 부르는 친구가 있는데 그 친구 중 한 명에 대해 이야기하고 있다면 누군가가 어떤 밥을 이야기하고 있는지 물어볼 수도 있을 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;밥&quot;이라고 말하는 것은 별로 도움이 되지 않기 때문에, 당신은 &quot;밥 스미스&quot;, 즉 &quot;밥 존스&quot;라고 말합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;28&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Element Type도 마찬가지입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;때때로 다른 사람들이 같은 이름을 고를 수 있기 때문에 짧은 이름으로는 충분하지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 당신은 URI를 &quot;성&quot;으로 포함시켜, 다른 봅들을 구별합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;29&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;XML은 상위 언어로, XML 기반 언어의 기초가 된다는 것을 의미합니다(말이 되지 않습니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;XML은 어떤 문장이든, 어떤 언어로도 쓸 수 있는 펜이라고 생각하세요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;모든 것은 작가에게 달려 있고, 가급적이면 그 언어를 독자에게 알려야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;30&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;XML &lt;strong papago-id=&quot;30-1&quot;&gt;네임스페이스&lt;/strong&gt;는 기본적으로 &quot;영어&quot; 또는 &quot;עברית&quot;와 같이 언어의 이름입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;나는 XML 문서의 수신자가 문서를 파싱하고 내부의 정보를 추출하는 것을 돕습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;31&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내가 가구 공장을 가지고 있고 당신이 가구점을 가지고 있다고 가정해 보겠습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신의 스토리지 애플리케이션과 나의 공급 애플리케이션은 완전히 관련이 없지만, 그것들이 XML 메시지들을 통해 의사소통할 때, 메시지들은 이해할 수 있고 양쪽 모두에 의해 쉽게 파싱될 수 있어야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;32&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 두 시스템 모두 언어 구문과 합의된 제한을 정의하는 &lt;strong papago-id=&quot;32-1&quot;&gt;스키마&lt;/strong&gt;를 알아야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;스키마를 사전과 문법 교과서라고 생각하세요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;스키마는 두 시스템이 모두 알아야 할 문서이며, 각 시스템에서 구문 분석 코드를 작성하는 사용자는 반드시 알아야 하며, 네임스페이스 선언이 포함되어 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;33&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;각 네임스페이스는 URI로 명명되며, 대부분의 경우 URI를 정의하는 스키마 문서의 위치입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;34&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;물론 모든 XML 문서에 네임스페이스가 필요한 것은 아닙니다. 특히 원격 시스템에 정보를 전달하는 데 사용되지 않는 경우에는 더욱 그렇습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어 데이터베이스에 지속하기 위해 개체를 XML로 직렬화할 때입니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;35&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;우리는 이름공간을 사용합니다. 왜냐하면 사람들이 자신의 개인 아이다호에서 같은 단어를 다른 의미로 사용하기를 원하기 때문입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;일반적으로 맥락에 따라 사람의 의미를 결정할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;인사 데이터베이스에서 XML은 인사 기록입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;XML은 차량 레지스트리 데이터베이스에서 차량 레지스트리 레코드입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;36&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;둘 다 &quot;위치&quot;라는 이름의 태그를 유지하지만, 태그는 각각 다른 것을 의미하고 다른 필드를 포함합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;37&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;멋지네요. 하지만 XML을 둘 다 동일한 데이터베이스에 저장해야 하거나 저장하고 싶다면 어떻게 해야 할까요?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;더 흥미로운 것은 두 데이터베이스 모두 다른 공통 데이터베이스(예: Accounts 데이터베이스)에서 XML 청크를 저장하려는 경우입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;38&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;XML 네임스페이스는 각 XML 태그 URI와 연결되어 태그 이름 앞에 URL이 있고 태그 이름의 일부입니다(물론 실제 XML 문서에서는 축약기를 사용하여 이렇게 함).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URI를 신중하게 선택함으로써 태그 이름이 충돌하지 않을 것이라는 확신을 가지기 쉬우며, 이는 마치 두 위치 태그의 이름이 완전히 다르게 지어졌기 때문에 혼동이 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;추가적으로, 완전히 다른 두 위치 태그에는 계정 데이터베이스의 내용이 포함될 수 있으며, 동일한 내용에 대해 이야기하고 있음을 명시적으로 명시할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;39&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 모든 것을 유용하게 만드는 것은 XPATH입니다.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;위의 내용을 사용하면 다음과 같은 XPATH 표현을 작성할 수 있습니다: find me any&lt;/font&gt;&lt;/font&gt;&lt;code&gt;accounts:account overdue&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 xml의 모든 섹션.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;오어: 나 좀 찾아줘요.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;accounts:warning message&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 XML의 특정 청크의 어디에나 있는 항목들, 여기서 경고 메시지는 a의 하위 노드(심도는 아니지만)입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;personnel:payment&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;결절 또는 결절&lt;/font&gt;&lt;/font&gt;&lt;code&gt;vehicle:status&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;마디마디&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;45&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 XPATH 표현식은 XML을 XHTML 또는 XPDF로 변환하여 표시하는 XSLT 문서의 어딘가에서 사용될 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;46&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;보수는 얼마입니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;왜 그럴까요?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;XML 로그 파일을 검색할 수 있기 때문에 다른 &lt;em papago-id=&quot;46-1&quot;&gt;시스템에서 생성된 &quot;메시지&quot; 태그와 혼동&lt;/em&gt;하지 않고 &lt;em papago-id=&quot;46-1&quot;&gt;모든&lt;/em&gt; 계정의 기한이 지난 메시지를 어디에서나 꺼내 xhtml로 변환한 다음 css 태그를 통해 굵은 빨간색으로 표시합니다. &lt;strong papago-id=&quot;46-3&quot;&gt;절차 코드&lt;/strong&gt;를 한 &lt;strong papago-id=&quot;46-3&quot;&gt;방울도 작성하지 않고 모두&lt;/strong&gt; 표시합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;47&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://www.xml.com/pub/a/1999/01/namespaces.html&quot; papago-id=&quot;47-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;예&lt;/a&gt;: 예제별 &lt;a href=&quot;http://www.xml.com/pub/a/1999/01/namespaces.html&quot; papago-id=&quot;47-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;XML 네임스페이스&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;48&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내 말을 빌리자면:&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;외부 회사(예: )에 대해 일부 XML 형식을 사용해야 하고 XML 문서에 동일한 이름의 일부 정보를 제공해야 하는 경우 네임스페이스가 필요합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;sampleDoc&amp;gt;
   &amp;lt;header title=&quot;Hello world!&quot;&amp;gt;
      &amp;lt;items&amp;gt;
         &amp;lt;item name=&quot;Volvo&quot; color=&quot;Blue&quot;/&amp;gt;
      &amp;lt;/items&amp;gt;
   &amp;lt;/header&amp;gt;
&amp;lt;/sampleDoc&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;49&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이름은 같지만 다른 의미(따라서 값)인 일부 데이터를 이 문서에 병합하려면 네임스페이스를 사용해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;sampleDoc&amp;gt;
   &amp;lt;header title=&quot;Hello world!&quot;&amp;gt;
      &amp;lt;items&amp;gt;
         &amp;lt;item name=&quot;Volvo&quot; color=&quot;White&quot; my_unique_namespace:color=&quot;#FFFFFF&quot;/&amp;gt;
      &amp;lt;/items&amp;gt;
   &amp;lt;/header&amp;gt;
&amp;lt;/sampleDoc&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;50&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;물론입니다 - 특성 이름을 변경할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어 &quot;my_unique_color&quot;입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다른 문서에 버드, 같은 이름의 속성이 다시 있을 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 고유한 네임스페이스(예를 들어, 웹 도메인)를 사용하는 경우 항상 문제없이 동일한 이름의 요소 및/또는 속성을 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;51&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://www.w3.org/TR/REC-xml-names/&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;51-1&quot;&gt;W3 권장사항&lt;/a&gt; 중에...&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;52&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;XML 네임스페이스는 Extensible Markup Language 문서에서 사용되는 요소와 속성 이름을 URI 참조로 식별된 네임스페이스와 연결하여 한정하는 간단한 방법을 제공합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt;&lt;p papago-id=&quot;53&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이름공간은 문서 내에서 사용하는 이름을 명확하게 구분하는 데 사용됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 이름 공간에 짧은 이름을 바인딩할 수 있으며, 이를 통해 원격 요소 또는 속성을 참조할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이름 공간 자체는 문서에서 사용하는 요소와 속성을 정의하는 위치를 나타냅니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;더 알아야 할 것이 많지만, 그것이 그 핵심입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://www.w3.org/TR/REC-xml-names/#concepts&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;53-1&quot;&gt;여기&lt;/a&gt;에 더 많은 정보가 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;54&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/128389/what-are-xml-namespaces-for&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>XML</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1319</guid>
      <comments>https://bestprogram.tistory.com/1319#entry1319comment</comments>
      <pubDate>Tue, 24 Oct 2023 21:30:46 +0900</pubDate>
    </item>
    <item>
      <title>복잡한 MySQL 쿼리</title>
      <link>https://bestprogram.tistory.com/1318</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;복잡한 MySQL 쿼리&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 워드프레스로 텔레비전 프로그램에 대한 정보를 저장하는 사이트를 만들고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;각 게시물을 선택하기 위해 사용자 지정 필드를 사용하고 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그 테이블은 이렇게 생겼습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;+----+---------+----------+------------+
| id | post_id | meta_key | meta_value |
+----+---------+----------+------------+
| 1  |    1    |   name   | Smallville |
| 2  |    1    |  season  |     1      |
| 3  |    1    |  episode |     1      |
| 4  |    2    |   name   | Smallville |
| 5  |    2    |  season  |     1      |
| 6  |    2    |  episode |     2      |
+----+---------+----------+------------+
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기본적으로 제가 해야 할 일은 '스몰빌'이라는 이름을 가진 모든 TV 프로그램을 선택해서 시즌별, 에피소드별로 분류하는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;꽤 간단할 거라고 생각했는데 제가 시도한 것은 아무것도 돌려주지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 어떻게 해야 하는지 설명해주시겠습니까?&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음과 같은 작업을 수행할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SELECT 
    t1.post_id, 
    t1.meta_value AS name, 
    t2.meta_value AS season, 
    t3.meta_value AS episode
FROM
    (
    SELECT *
    FROM the_table
    WHERE meta_key = 'name'
    ) t1
INNER JOIN
    (
    SELECT *
    FROM the_table
    WHERE meta_key = 'season'
    ) t2 ON t1.post_id = t2.post_id
INNER JOIN
    (
    SELECT *
    FROM the_table
    WHERE meta_key = 'episode'
    ) t3 ON t1.post_id = t3.post_id
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이렇게 하면 다음과 같은 결과를 얻을 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;| post_id | name       | season | episode |
-------------------------------------------
|    1    | Smallville | 1      | 1       |
|    2    | Smallville | 1      | 2       |
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이러한 형태로 작업을 수행하는 것이 훨씬 더 쉽습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;추가해야 할 사항은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;WHERE name = 'Smallville'
ORDER BY season, episode
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;자기 결합을 이용해 열을 결합하면 됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SELECT      *
FROM        yourtable name
INNER JOIN  yourtable season 
            on season.post_id = name.post_id
            and season.meta_key = 'season'
INNER JOIN  yourtable episode
            on episode.post_id = name.post_id
            and episode.meta_key = 'episode'
WHERE       name.meta_key = 'name'
            and name.meta_value = 'Smallville'
ORDER BY    season.meta_value, episode.meta_value
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;보다 일반적인 경우: 형식에서 보다 일반적인 관계형 DB 형식으로의 변환:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SELECT (SELECT meta_value FROM data t1 WHERE t1.post_id = t0.post_id AND meta_key = &quot;season&quot;) AS season,
   (SELECT meta_value FROM data t1 WHERE t1.post_id = t0.post_id AND meta_key = &quot;episode&quot;) AS episode
FROM data t0 WHERE meta_key = &quot;name&quot; AND meta_value = &quot;Smallville&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;실제 정렬의 경우 시즌/에피소드 값(정렬 중에 아직 할당되지 않음)을 재사용할 수 없으므로 하위 쿼리를 ORDER BY 절에 복사/붙여넣어야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;ORDER BY (SELECT ... &quot;season&quot;) ASC, (SELECT ... &quot;episode&quot;) ASC, 
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;직접 SQL을 수행할 필요가 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;WP_Query 개체를 통해 SQL 쿼리에 액세스할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;WP_Query 객체의 where 절(where 절)을 둘러싼 필터를 확인하고 기본 WP_Query 부분을 연결하기 전에 수정하기만 하면 됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;postmeta key &amp;amp; postmeta 값으로 모든 게시물을 얻는 WP_Query 객체를 설정하는 것부터 시작하여 where 절에 조금 더 붙여서 추가 조건을 수행합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;SQL 쿼리의 주문 섹션을 얻을 수 있는 다른 필터가 있으므로 수정할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기서 SQL을 직접 작성할 필요는 없고, 이미 구축된 내용만 수정하면 됩니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 아이디어는 주어진 meta_key에 대해 행을 취하는 테이블을 자신에게 3번 결합하는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SELECT t1.meta_value name, t2.meta_value season, t3.meta_value episode
FROM table t1
JOIN table t2 on t1.post_id = t2.post_id and t2.meta_key = 'season'
JOIN table t3 on t1.post_id = t3.post_id and t3.meta_key = 'episode'
WHERE t1.meta_key = 'name'
  AND t1.meta_value = 'Smallville'
ORDER BY t2.meta_value, t3.meta_value
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/1690762/complicated-mysql-query&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>Wordpress</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1318</guid>
      <comments>https://bestprogram.tistory.com/1318#entry1318comment</comments>
      <pubDate>Tue, 24 Oct 2023 21:30:38 +0900</pubDate>
    </item>
    <item>
      <title>Android에서 RxJava를 사용할 시기 및 Android Architectural Components의 LiveData를 사용할 시기는?</title>
      <link>https://bestprogram.tistory.com/1317</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Android에서 RxJava를 사용할 시기 및 Android Architectural Components의 LiveData를 사용할 시기는?&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;안드로이드에서 RxJava를 사용하고 Android Architectural Components에서 LiveData를 사용해야 할 이유가 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;양쪽의 사용 사례와 차이점을 설명하는 코드 형식으로 샘플 예시와 함께 설명해주시면 정말 도움이 될 것 같습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;원래 질문에 대해서는 RxJava와 LiveData 둘 다 서로 정말 잘 보완합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;LiveData&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Android 라이프사이클과 긴밀하게 통합된 ViewModel 계층에서 빛을 발합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ViewModel&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;RxJava&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;@Bob Dalgleish에서 언급한 바와 같이 변환에 더 많은 기능을 제공합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;현재 저희가 사용하고 있는 것은&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;RxJava&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;데이터 소스 및 저장소 계층에 포함되며,&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;LiveData&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 사용)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;LiveDataReactiveStreams&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;View Models(활동/파편에 데이터를 노출하기 전) - 이 접근 방식에 상당히 만족합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Android LiveData는 원래 관찰자 패턴의 변형으로, 활성/비활성 전환이 추가되었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이와 같이, 그것은 그 범위에 있어서 매우 제한적입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://developer.android.com/topic/libraries/architecture/livedata.html&quot; papago-id=&quot;11-1&quot; rel=&quot;noreferrer&quot;&gt;Android&lt;/a&gt; LiveData(안드로이드 &lt;a href=&quot;https://developer.android.com/topic/libraries/architecture/livedata.html&quot; papago-id=&quot;11-1&quot; rel=&quot;noreferrer&quot;&gt;라이브데이터&lt;/a&gt;)에 설명된 예를 사용하여 위치 데이터를 모니터링하고 응용프로그램 상태에 따라 등록 및 등록 취소할 수 있는 클래스가 생성됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;RxJava는 훨씬 더 일반화된 연산자를 제공합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 관측 자료가 위치 데이터를 제공한다고 가정해 보겠습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Observable&amp;lt;LocationData&amp;gt; locationObservable;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음을 사용하여 관측 가능한 것의 구현을 구축할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Observable.create()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;콜백 작업을 매핑할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;관찰자가 가입되면 콜백이 등록되고, 가입 해제되면 콜백이 등록 해제됩니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;구현은 예제에 제공된 코드와 매우 유사합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 응용 프로그램이 활성 상태일 때 true를 나타내는 관측치가 있다고 가정합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Observable&amp;lt;Boolean&amp;gt; isActive;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러면 다음을 통해 LiveData의 모든 기능을 제공할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Observable&amp;lt;LocationData&amp;gt; liveLocation =
  isActive
    .switchMap( active -&amp;gt; active ? locationObservable : Observable.never() );
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;switchMap()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;연산자는 현재 위치를 스트림으로 제공하거나 응용프로그램이 활성화되지 않은 경우 아무 것도 제공하지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;일단 당신이 그것을 가지면.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;liveLocation&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;관찰 가능합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; RxJava 연산자를 사용하여 할 수 있는 많은 일들이 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내가 가장 좋아하는 예는:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;liveLocation.distinctUntilChanged()
  .filter( location -&amp;gt; isLocationInAreaOfInterest( location ) )
  .subscribe( location -&amp;gt; doSomethingWithNewLocation( location ) );
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이는 위치가 변경되고 위치가 흥미로울 때만 동작을 수행합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;시간 연산자를 결합하여 속도를 결정하는 유사한 연산을 만들 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;더 중요한 것은 RxJava 연산자를 사용하여 메인 스레드에서 작업이 발생하는지, 백그라운드 스레드에서 발생하는지, 또는 다중 스레드에서 작업이 발생하는지 여부를 세부적으로 제어할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;RxJava의 요점은 라이브러리에서 제공되는 작업 또는 제공하는 사용자 지정 작업을 사용하여 제어 및 타이밍을 하나의 우주로 통합한다는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;LiveData는 우주의 작은 부분만을 다루고 있으며, 이는 곧 시스템을 구축하는 것과 맞먹습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;liveLocation&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;LiveData와 RxJava 사이에는 많은 차이점이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;라이브 데이터는 &lt;strong papago-id=&quot;25-1&quot;&gt;스트림&lt;/strong&gt;이 아닌 반면 RxJava에서는 모든 것(말 그대로 모든 것)이 &lt;strong papago-id=&quot;25-3&quot;&gt;스트림&lt;/strong&gt;입니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;LiveData는 관측 가능한 데이터 홀더 클래스입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;일반적으로 관찰할 수 있는 것과 달리 LiveData는 라이프사이클을 인식하기 때문에 활동, 조각, 서비스와 같은 다른 앱 구성요소의 라이프사이클을 존중합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이러한 인식을 통해 LiveData는 활성 수명 주기 상태에 있는 앱 구성 요소 관찰자만 업데이트합니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;LiveData는 &lt;strong papago-id=&quot;27-1&quot;&gt;동기식&lt;/strong&gt;이므로 RxJava와 같이 LiveData만으로 비동기적으로 코드 덩어리(네트워크 호출, 데이터베이스 조작 등)를 실행할 수 없습니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;28&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 2인조를 최대한 활용하기 위해 최선의 방법은 비즈니스 로직(네트워크 호출, &lt;strong papago-id=&quot;28-1&quot;&gt;데이터&lt;/strong&gt; 조작 등)에 RxJava를 사용하고 프레젠테이션 계층에 LiveData를 사용하는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이를 통해 비즈니스 로직에 대한 변환 및 스트림 기능과 UI에 대한 라이프사이클 인식 작업을 얻을 수 있습니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;29&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;29-0&quot;&gt;LiveData와 RxJava&lt;/strong&gt;를 함께 사용하면 서로 &lt;strong papago-id=&quot;29-0&quot;&gt;보완&lt;/strong&gt;합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;내 말은, RxJava로 모든 것을 하고 UI를 업데이트하고 싶을 때 마지막에, 아래에 주어진 코드와 같은 작업을 하여 Observable을 LiveData로 변경하라는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 뷰(UI)는 LiveData in ViewModel에서 LiveData를 관찰합니다. 여기서 LiveData는 가변형이 아닌 가변형 LiveData(또는 가변형 LiveData)에 불과합니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;30&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;30-0&quot;&gt;그렇다면 여기서 질문은, 왜 처음부터 LiveData를 사용해야 하느냐는 것입니다.&lt;/strong&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;아래 코드에서 볼 수 있듯이 RxJava에서 MutableLiveData(또는 LiveData)로의 응답을 저장하고 LiveData는 라이프사이클을 인식하므로 데이터가 라이프사이클을 인식하게 됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이제 데이터 자체가 UI를 업데이트할 때와 그렇지 않은 때를 알 수 있는 가능성을 상상해 보십시오.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;31&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;LiveData에는 기록이 없습니다(현재 상태만 있음).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 채팅 어플리케이션에 라이브 데이터를 사용해서는 안 됩니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;32&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;RxJava와 함께 LiveData를 사용할 때 &lt;strong papago-id=&quot;32-1&quot;&gt;MediatorLiveData&lt;/strong&gt;, &lt;strong papago-id=&quot;32-3&quot;&gt;SwitchMap&lt;/strong&gt; 등이 필요 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;스트림 제어 도구이며 RxJava가 여러 번 더 잘합니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;33&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;LiveData를 데이터 보유자로 간주하고 다른 것은 제외합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 LiveData는 라이프사이클을 인식하는 소비자라고 할 수 있습니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;hr&gt; 
&lt;pre&gt;&lt;code&gt;    public class RegistrationViewModel extends ViewModel {
        Disposable disposable;

        private RegistrationRepo registrationRepo;
        private MutableLiveData&amp;lt;RegistrationResponse&amp;gt; modelMutableLiveData =
                new MutableLiveData&amp;lt;&amp;gt;();

        public RegistrationViewModel() {
        }

        public RegistrationViewModel(RegistrationRepo registrationRepo) {
            this.registrationRepo = registrationRepo;
        }

        public void init(RegistrationModel registrationModel) {
            disposable = registrationRepo.loginForUser(registrationModel)
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(new Consumer&amp;lt;Response&amp;lt;RegistrationResponse&amp;gt;&amp;gt;() {
                        @Override
                        public void accept(Response&amp;lt;RegistrationResponse&amp;gt;
                                                   registrationModelResponse) throws Exception {

                            modelMutableLiveData.setValue(registrationModelResponse.body());
                        }
                    });
        }

        public LiveData&amp;lt;RegistrationResponse&amp;gt; getModelLiveData() {
            return modelMutableLiveData;
        }

       @Override
       protected void onCleared() {
                super.onCleared();
            disposable.dispose();
         }
    }
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; .&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;LiveData&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;에 대해 본질적으로 다른 도구는 아닙니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;RxJava&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 그래서 왜 그것이 건축 구성요소로 도입되었습니까?&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;RxJava&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;관측 자료에 대한 모든 구독을 저장함으로써 라이프사이클을 쉽게 관리할 수 있었습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;CompositeDispoable&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;물건을 집어넣고 그 다음에 그것들을 처리합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;onDestroy()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Activity&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;20&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;아니면&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;onDestroyView()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;21&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Fragment&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;한 줄의 코드만 사용한다고요?&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;43&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 이 질문에 RxJava를 이용하여 한번 영화 검색 앱을 만든 후 &lt;a href=&quot;http://www.digigene.com/android-architecture-part-5-mvvm-with-livedata-wolfkcats&quot; rel=&quot;noreferrer&quot; papago-id=&quot;43-1&quot;&gt;여기&lt;/a&gt;서 LiveData를 이용하여 충분히 답했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;44&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 간단히 말해, 그럴 수도 있겠지만, 이는 기본적인 라이프사이클 지식을 갖추는 것 외에 관련 라이프사이클 방법을 우선적으로 고려해야 할 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://youtu.be/pErTyQpA390&quot; papago-id=&quot;44-1&quot; rel=&quot;noreferrer&quot;&gt;그러나&lt;/a&gt; Google I&lt;a href=&quot;https://youtu.be/pErTyQpA390&quot; papago-id=&quot;44-1&quot; rel=&quot;noreferrer&quot;&gt;/O 2018의 Jetpack 세션&lt;/a&gt; 중 하나에 따르면 많은 개발자가 라이프사이클 관리가 복잡하다고 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;라이프사이클 의존성을 처리하지 않음으로써 발생하는 충돌 오류는 일부 개발자들이 라이프사이클을 잘 알고 있더라도 앱에서 사용하는 모든 액티비티/프래그먼트에서 이를 처리하는 것을 잊어버리는 또 다른 징후일 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;대형 앱에서는 생산성에 부정적인 영향을 미칠 수 있음에도 불구하고 문제가 될 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;결론은 소개를 해서.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;LiveData&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;24&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 더 많은 수의 개발자들이 라이프사이클 관리, 메모리 유출 및 크래시를 이해할 필요도 없이 MVVM을 채택할 것으로 예상됩니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;나는 그것을 의심하지 않지만,&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;LiveData&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;25&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;와 비교할 수 없습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;RxJava&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;26&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;능력과 개발자에게 주는 힘, 반응형 프로그래밍 및&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;RxJava&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;27&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;많은 사람들에게 이해하기 어려운 개념이자 도구입니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그 반대로, 나는 생각하지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;LiveData&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;28&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;의 대체품이 될 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;RxJava&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;29&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이는 많은 개발자가 경험한 논란의 여지가 있는 광범위한 문제를 처리하기 위한 매우 간단한 도구일 뿐입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;52&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;** 업데이트 ** LiveData를 잘못 사용하면 예상치 못한 결과를 초래하는 방법을 설명하는 &lt;a href=&quot;http://www.digigene.com/android-architecture-part-7-viewmodel-livedata-rxjava-mvvm-wolfrevokcats&quot; rel=&quot;noreferrer&quot; papago-id=&quot;52-1&quot;&gt;기사&lt;/a&gt;를 새로 추가했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이러한 상황에서 RxJava가 구하러 올 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;hr&gt;&lt;p papago-id=&quot;53&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;반응형 생태계에서는 데이터를 방출하는 관측 가능한 &lt;strong papago-id=&quot;53-1&quot;&gt;관측&lt;/strong&gt; 가능한 관측 &lt;strong papago-id=&quot;53-3&quot;&gt;가능&lt;/strong&gt;한 관측 가능한 관측 가능한 관측 가능한 관측 가능한 관측 가능한 관측 가능한 관측 가능한 관측 가능한 관측 가능한 관측 가능한 관측 가능한 관측 가능한 관측 가능한 관측 가능한 관측 가능한 관측 가능한 관측 가능한 관측 가능한 관측 가능한 관측 가능한 관측 가능한 관측 가능한 관측 가능한 관측 가능한 관측 가능한 관측 가능한&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Observable이 무언가를 &quot;외친다&quot;면 Observator는 Observable이 주어진 순간에 무언가를 외친다는 통지를 받습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;30&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;생각하기&lt;/font&gt;&lt;/font&gt;&lt;code&gt;LiveData&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;31&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;관리할 수 있는 Observatorable로 사용자가 관리할 수 있는 Observatorable.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;active&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;32&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;주(state). 다른 말로 하면&lt;/font&gt;&lt;/font&gt;&lt;code&gt;LiveData&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;33&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;는 단순한 관찰 가능하지만 &lt;strong papago-id=&quot;33-1&quot;&gt;수명&lt;/strong&gt; 주기도 &lt;strong papago-id=&quot;33-1&quot;&gt;담당&lt;/strong&gt;합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;58&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 요청하신 두 가지 코드 케이스를 살펴보겠습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;59&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;A) 실시간 데이터&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;60&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;B) RX자바&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;61&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;A)&lt;strong papago-id=&quot;61-1&quot;&gt;이&lt;/strong&gt;는 LiveData의 &lt;strong papago-id=&quot;61-1&quot;&gt;기본 구현&lt;/strong&gt;입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;62&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;1) 일반적으로 방향 변경을 유지하기 위해 ViewModel에서 LiveData를 인스턴스화합니다(읽기 전용인 LiveData 또는 쓰기 가능한 MutableLiveData가 있을 수 있으므로 일반적으로 LiveData 클래스 외부로 노출).&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;34&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;2) 에&lt;/font&gt;&lt;/font&gt;&lt;code&gt;OnCreate&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;35&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;35-1&quot;&gt;기본&lt;/strong&gt; 활동의 메서드(ViewModel이 아닌) Observer 개체를 &quot;가입&quot;합니다(일반적으로 on Changed 메서드).&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;65&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;3) 방법 관찰을 시작하여 링크를 설정합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;36&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;첫번째로&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ViewModel&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;37&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(비즈니스 논리 owns)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;class ViewModel : ViewModel() { //Point 1

    var liveData: MutableLiveData&amp;lt;Int&amp;gt; = MutableLiveData()

}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;38&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 이게.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;MainActivity&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;39&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(최대한 바보같음)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val ViewModelProvider= ViewModelProviders.of(this).get(ViewModel::class.java)

        ViewModelProvider.observe(this, Observer {//Points 2 and 3
            //what you want to observe
        })


        }
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;70&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;B)&lt;strong papago-id=&quot;70-1&quot;&gt;이것이 RXJava의 기본 구현&lt;/strong&gt;입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;71&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;1) 당신은 관측 가능한 것을 선언합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;72&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;2) 당신은 옵저버를 선언합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;73&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;3) 관찰자와 함께 관찰자를 구독합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Observable.just(1, 2, 3, 4, 5, 6) // Point 1

   .subscribe(new Subscriber() {    //Points 2 &amp;amp; 3
       @Override
       public void onCompleted() {
           System.out.println(&quot;Complete!&quot;);
       }

       @Override
       public void onError(Throwable e) {
       }

       @Override
       public void onNext(Double value) {
           System.out.println(&quot;onNext: &quot; + value);
       }
    });
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;40&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;특히&lt;/font&gt;&lt;/font&gt;&lt;code&gt;LiveData&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;41&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;와 함께 사용됩니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Lifecycle&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;42&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 종종 와 함께&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ViewModel&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;43&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(앞서 살펴보았듯이) 아키텍처 구성 요소.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;사실 언제&lt;/font&gt;&lt;/font&gt;&lt;code&gt;LiveData&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;44&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;ViewModel과 결합하면 &lt;strong papago-id=&quot;44-1&quot;&gt;Observer에서 변경할 때마다 실시간으로 업데이트&lt;/strong&gt;할 수 &lt;strong papago-id=&quot;44-1&quot;&gt;있으므로&lt;/strong&gt; 필요한&lt;strong papago-id=&quot;44-1&quot;&gt; &lt;/strong&gt;곳에서 이벤트를 실시간으로 관리할 수 &lt;strong papago-id=&quot;44-1&quot;&gt;있습니다&lt;/strong&gt;.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용방법&lt;/font&gt;&lt;/font&gt;&lt;code&gt;LiveData&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;45&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://developer.android.com/topic/libraries/architecture/lifecycle&quot; rel=&quot;noreferrer&quot; papago-id=&quot;45-1&quot;&gt;라이프사이클&lt;/a&gt;의 개념과 상대적인 개체인 &lt;a href=&quot;https://developer.android.com/reference/android/arch/lifecycle/Lifecycle&quot; rel=&quot;noreferrer&quot; papago-id=&quot;45-3&quot;&gt;LifeCycleOwner/LifeCycle&lt;/a&gt;에 대해 알고 있는 것이 좋습니다. 또한 구현을 원한다면 &lt;a href=&quot;https://developer.android.com/reference/android/arch/lifecycle/Transformations&quot; rel=&quot;noreferrer&quot; papago-id=&quot;45-5&quot;&gt;Transformations&lt;/a&gt;를 살펴보시기를 권합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;LiveData&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;46&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;실제 시나리오에서는.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기서 당신은 위대한 &lt;a href=&quot;https://commonsware.com/AndroidArch/previews/livedata-transformations&quot; rel=&quot;noreferrer&quot; papago-id=&quot;46-1&quot;&gt;커먼웨어&lt;/a&gt;에서 몇 가지 사용 사례를 찾아볼 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;47&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;47-0&quot;&gt;&lt;em papago-id=&quot;47-0-0&quot;&gt;기본적으로 정리하자면&lt;/em&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;LiveData&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;48&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;단순화된&lt;/font&gt;&lt;/font&gt;&lt;code&gt;RXJava&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;49&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 구성 요소 간에 소위 종속성 규칙이라고 불리는 명확한 규칙을 만들지 않고 여러 구성 요소 간의 변경 사항을 관찰하여 코드를 훨씬 쉽게 테스트하고 읽기 쉽게 만들 수 있는 우아한 방법입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;RXJava는 LiveData 등의 작업을 수행할 수 있게 해줍니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;RXJava의 기능이 확장되었기 때문에 간단한 경우에 LiveData를 사용하거나 RXJava의 모든 기능을 활용할 수 있습니다. Android Architecture 구성 요소를 &lt;a href=&quot;https://developer.android.com/topic/libraries/architecture/viewmodel&quot; rel=&quot;noreferrer&quot; papago-id=&quot;49-1&quot;&gt;ViewModel&lt;/a&gt;로 계속 사용하는 것은 물론 다음을 의미합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;RXJava&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;50&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;스위치 맵과 실시간 데이터의 맵 대신 수백 개의 연산자가 있다고 생각하면 훨씬 복잡해질 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;85&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;RXJava 버전 2는 Object Oriented 패러다임을 혁신한 라이브러리로, 프로그램의 흐름을 관리하는 소위 기능적인 방법을 추가했습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;86&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;라이브 데이터는 안드로이드 팀이 개발한 안드로이드 아키텍처 구성 요소의 하위 집합입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;87&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;라이브 데이터 및 기타 아키텍처 구성 요소를 사용하면 메모리 유출 및 기타 유사한 문제를 아키텍처 구성 요소에서 처리할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;안드로이드 팀에서 개발한 제품이기 때문에 안드로이드용으로는 최고입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 안드로이드의 새로운 버전을 처리하는 업데이트도 제공합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;88&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Android 앱 개발에만 사용하고 싶다면 Android 아키텍처 구성 요소를 사용해 보십시오.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그렇지 않으면 웹 앱, 데스크톱 앱 등 다른 자바 앱을 사용하려면 RxJava를 사용합니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;LiveData&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;51&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;데이터 보유자로서 다른 것은 없습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 LiveData는 라이프사이클을 인식하는 소비자라고 할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;LiveData&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;52&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;라이프사이클의 개념과 상대적인 객체인 LifeCycleOwner/LifeCycle에 대해 알고 비즈니스 로직에 대한 변환 및 스트림 기능을 얻고 UI에 대한 라이프사이클 인식 작업을 수행하는 것이 좋습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;91&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Rx는 우아한 선언 스타일로 문제를 해결할 수 있는 강력한 도구입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;비즈니스 측면 옵션 또는 Service Api 작업을 처리합니다.&lt;/font&gt;&lt;/p&gt;&lt;ul&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;92&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;LiveData가 부분적으로 Rx Subject 또는 SharedRxObservable과 동일함&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;93&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;LiveData는 구독 라이프사이클을 관리하지만 Rx Subject 구독은 수동으로 생성하고 폐기해야 합니다.&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;94&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;LiveData에 종료 상태가 없지만 Rx Subject에 OnError 및 OnCompleted가 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
&lt;/ul&gt;&lt;p papago-id=&quot;95&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;라이브 데이터와 RxJava를 비교하는 것은 사과와 과일 샐러드를 비교하는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;96&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;LiveData와 ContentOver를 비교하면 사과와 사과를 비교하는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;LiveData는 ContentObserver의 라이프사이클 인식 기능을 효과적으로 대체합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;97&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;RxJava를 AsyncTask 또는 다른 쓰레드 도구와 비교하는 것은 과일 샐러드를 오렌지와 비교하는 것입니다. RxJava는 단순히 쓰레드를 하는 것 이상의 것을 도와주기 때문입니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;98&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제 간단한 대답은 RxJava를 사용하지 않는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것은 지나치게 복잡하고 남용되고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;RxJava를 사용하는 모든 프로젝트의 경우 유지보수가 어렵고 디버그가 어렵습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;RxJava는 요청을 발송하기 위해 스레드를 사용하여 비동기적으로 작업을 수행합니다. 일반적으로 이 작업은 전혀 필요하지 않으며, 필요한 경우 Kotlin coroutine이 99%의 시간 내에 더 나은 작업을 수행합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;99&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/46312937/when-to-use-rxjava-in-android-and-when-to-use-livedata-from-android-architectura&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>Android</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1317</guid>
      <comments>https://bestprogram.tistory.com/1317#entry1317comment</comments>
      <pubDate>Tue, 24 Oct 2023 21:30:30 +0900</pubDate>
    </item>
    <item>
      <title>&amp;quot;IIS Express 웹 서버를 시작할 수 없습니다&amp;quot; 오류</title>
      <link>https://bestprogram.tistory.com/1316</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;IIS Express 웹 서버를 시작할 수 없습니다&quot; 오류&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;로컬 호스트가 아닌 다른 주소를 수신하도록 구성된 프로젝트로 Visual Studio에서 IIS Express를 시작하려고 하면 이 오류가 발생합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Visual Studio가 약 30초 동안 정지된 후 &quot;IIS Express 웹 서버를 시작할 수 없습니다&quot;라는 오류가 나타납니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;유사한 질문에 게시된 모든 솔루션을 시도해 보았는데 모든 것을 올바르게 수행한 것 같습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 취한 조치는 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;HTTP에 다음 예약을 추가합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;SYS:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;code&gt;netsh http add urlacl url=http://+:36899/ user=Everyone&lt;/code&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Visual Studio 2012를 관리자로 실행합니다(기술적으로는 HTTP를 설정한 이후로 그럴 필요도 없을 것 같습니다).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;수동으로 SYS).&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Windows 방화벽을 비활성화합니다.&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내 문서 폴더에서 IIS Express 폴더를 삭제하여 기본 설정을 확인합니다.&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Visual Studio에서 내 웹 프로젝트의 applicationhost.config에 항목을 만들 수 있도록 허용합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 수동으로 구성 파일을 편집하여 변경&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;localhost&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;192.168.0.100&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제 로컬 IP입니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 Visual Studio의 프로젝트 속성으로 돌아가서 localhost를 IP로 변경하고 프로젝트를 저장하여 이제 내 프로젝트가 다음과 같이 설정되도록 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;http://192.168.0.100:36899&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;혹시라도 포트가 사용되고 있을 경우를 대비하여 포트를 변경하고 위의 단계를 반복해 보았습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;원격 테스트를 위해 인터넷의 IP에서 IIS Express 개발자 인스턴스에 액세스할 수 있도록 하고 싶습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;VS2015를 사용하는 경우 솔루션을 닫고 다음 파일을 삭제한 후 솔루션을 다시 엽니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;&amp;lt;path_to_solution_folder&amp;gt;&amp;gt;\.vs\config\applicationhost.config
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.vs 폴더가 숨겨져 있을 수 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 문제를 해결해 준 한 가지는 의 다음 줄을 사용한 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&amp;lt;bindings&amp;gt;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;나의 사이트를 위한 섹션.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;applicationhost.config&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;일:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;bindings&amp;gt;
    &amp;lt;binding protocol=&quot;http&quot; bindingInformation=&quot;*:8099:&quot; /&amp;gt;
&amp;lt;/bindings&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;핵심은 단순히 로컬 호스트를 제거하는 것이었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;별표로 대체하지 말고, IP나 컴퓨터 이름으로 대체하지 마세요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;대장 뒤에 빈칸으로 해주세요.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이렇게 하면 Visual Studio를 관리자로 실행할 필요가 없고 프로젝트 속성의 Project Url을 로컬 IP 또는 컴퓨터 이름으로 자유롭게 변경할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 포트 포워딩을 설정했고 인터넷에 접속할 수 있었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;편집:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;IIS Express가 외부 요청을 적절하게 처리하는 데 중요한 한 가지 이상한 점을 발견했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Visual Studio를 실행하는 경우/&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;IIS Express는 관리자이므로 HTTP에 예약을 &lt;strong papago-id=&quot;22-1&quot;&gt;추가해서&lt;/strong&gt;는 안 됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;netsh http add urlacl...&quot; 명령을 사용하는 SYS.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이렇게 하면 HTTP 503 Service Unavailable 오류가 발생합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URLACL에서 예약한 내용을 삭제하여 이 문제를 해결합니다.&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Visual Studio를 실행하지 &lt;strong papago-id=&quot;23-1&quot;&gt;않는&lt;/strong&gt; 경우/&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;IIS Express는 관리자로서 URLACL에 예약을 추가해야 &lt;strong papago-id=&quot;23-3&quot;&gt;합니다&lt;/strong&gt;.&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
&lt;/ol&gt;&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저도 똑같은 문제가 있었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;모든 걸 시도했지만 결국 한 가지 속임수가 통했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;내 문서&quot;에서 IIS Express 폴더 삭제&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;프로젝트를 다시 로드하면 업데이트된 구성으로 II Express 폴더가 다시 생성됩니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;II Express 폴더에 구성 파일을 읽기-쓰기할 수 있는 충분한 권한이 있는지 확인합니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;28&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;프로젝트를 다시 로드하고 II Express를 실행합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그건 작동할 거야.&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&gt;&lt;ol&gt; 
 &lt;li papago-id=&quot;29&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;프로젝트를 닫습니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;30&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;폴더 설정으로 이동하여 숨겨진 폴더 표시 옵션을 선택합니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;응용프로그램이 있는 폴더를 엽니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신은 보게 될 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.vs&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;폴더.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;open &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.vs&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;폴더, 당신은 볼 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;config&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;폴더 안에.&lt;/font&gt; &lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;을 삭제합니다&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;해당 내용을 삭제합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;관리 모드에서 Visual Studio를 실행합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;에서 솔루션을 엽니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;File&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;메뉴판&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;38&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;솔루션을 정리합니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;39&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;지으세요.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;40&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;빨리 달려서 화내!&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p papago-id=&quot;41&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;IIS Express 폴더를 삭제하거나 그 안의 구성 파일을 엉망으로 만드는 것은 권장하지 않습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;42&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;웹 서버가 실행되지 않고 특정 포트에 대한 액세스 거부 오류를 표시하는 이 항목을 변경하는 중이었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;bindings&amp;gt;
   &amp;lt;binding protocol=&quot;http&quot; bindingInformation=&quot;*:61235:localhost&quot; /&amp;gt;
&amp;lt;/bindings&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;43&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;&lt;em papago-id=&quot;43-3&quot;&gt;문서&quot;&lt;/em&gt;의 &quot;&lt;em papago-id=&quot;43-1&quot;&gt;applicationhost.config&lt;/em&gt;&quot;에서&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;em papago-id=&quot;43-3&quot;&gt;IISExpress\config&lt;/em&gt;&quot;는 특정 웹 애플리케이션의 경우 웹 애플리케이션을 시작할 때마다 Visual Studio 2012에서 기본 포트로 다시 덮어씁니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 나는 아무것도 하지 않고 문제를 해결했습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;applicationhost.config&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&amp;gt;  했습니다. &quot;Project Properties&quot; &amp;gt; &quot;web&quot; &amp;gt; &quot;project url&quot; 했습니다를 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;http://localhost:62135/&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;http://localhost:47279/&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(컴퓨터 depends) 그리고 저한테는 효과가 있었습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;48&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;시도해 보기:&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li papago-id=&quot;49&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;솔루션의 속성 열기&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;50&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;웹으로 이동&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;51&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;LOCAL IIS에서 작성된 포트 번호를 다른 포트 번호로 변경하고 새 가상 디렉터리를 만듭니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&gt;&lt;p papago-id=&quot;52&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Visual Studio를 &lt;strong papago-id=&quot;52-1&quot;&gt;관리자로 실행&lt;/strong&gt;으로 시작하기만 하면 됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;53&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;감사해요.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;54&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저도 같은 문제가 있었지만, 다른 사람들에게 도움이 될 수 있는 다른 원인을 가지고 있었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;55&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;관리 모드에서 명령 프롬프트를 사용합니다. - TYPE: netsh http show iplisten IP 항목이 있는 경우: - TYPE: netsh http delete iplisten 목록이 비어 있을 때까지 반복합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;IIS Express가 지금 시작되는지 확인합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;56&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이게 도움이 되길 바래, 닐스&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;57&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;applicationhost.config 파일에서 불필요한 사이트 항목을 삭제하면 문제가 해결되었습니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;나에게는 그것이.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;applicationhost.config&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;줄을 지어 들어오다&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.vs&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;20&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내 프로젝트 솔루션 폴더의 폴더(&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.vs&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;21&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;폴더는 기본적으로 숨겨집니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 프로젝트를 종료하고 삭제했습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.vs&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;폴더(vs는 프로젝트를 열면 다시 재생성됩니다)를 클릭한 다음 프로젝트를 다시 열고 실행합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;63&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제 경우에는 이 문제를 해결하기 위해 여러 가지를 수행하려고 했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;64&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;내 문서&quot;에서 iispress 폴더 삭제&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;65&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;솔루션 탐색기로 이동 --&amp;gt; 프로젝트에서 마우스 오른쪽 단추를 클릭합니다. --&amp;gt; 속성으로 이동 --&amp;gt; 웹 탭으로 이동 --&amp;gt; 서버 보기 --&amp;gt; 라디오 버튼을 클릭합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;비주얼 스튜디오 개발 서버 사용&quot;&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p papago-id=&quot;66&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것이 당신에게 도움이 되기를 바랍니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;67&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음 단계로 수정했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li papago-id=&quot;68&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;비주얼 스튜디오 닫기&lt;/font&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 실행.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;netsh http show urlacl&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;24&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;응용 프로그램 http address/port가 나열되어 있는지 확인합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;25&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 실행.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;netsh http delete urlacl url=[ADDRESS]&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;26&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;교체하기&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;[ADDRESS]&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;27&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이전 명령에 의해 표시된 &lt;strong papago-id=&quot;27-1&quot;&gt;Reserved URL&lt;/strong&gt;로 표시됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를들면&lt;/font&gt;&lt;/font&gt;&lt;code&gt;http://+:17560/&lt;/code&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;74&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;VS를 다시 실행하고(관리자로) 웹 프로젝트의 &lt;strong papago-id=&quot;74-1&quot;&gt;속성&lt;/strong&gt; -&amp;gt; &lt;strong papago-id=&quot;74-3&quot;&gt;웹&lt;/strong&gt;으로 이동한 다음 가상 &lt;strong papago-id=&quot;74-5&quot;&gt;디렉터리 만들기&lt;/strong&gt; 단추를 클릭합니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;75&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이제 웹 프로젝트를 실행할 수 있습니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt;&lt;p papago-id=&quot;76&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;디버그 &amp;gt; 웹 사이트 속성에서 입력합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;77&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;프로젝트 URL의 포트 번호를 가장 가까운 값으로 변경하고 저장&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://i.stack.imgur.com/cydaq.png&quot; rel=&quot;nofollow noreferrer&quot;&gt;&lt;img src=&quot;https://i.stack.imgur.com/cydaq.png&quot; alt=&quot;enter image description here&quot;&gt;&lt;/a&gt;&lt;/p&gt;&lt;p papago-id=&quot;78&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;위에 언급한 모든 레시피를 시도하는 데 1시간이 걸렸습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 갑자기 컴퓨터를 다시 시작하고 다시 시도했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 지금은 모든게 괜찮아요.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;79&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 위에 언급한 모든 해결책을 시도하기 전에 컴퓨터를 다시 시작해 보십시오.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;도움이 될 것 같다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;80&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Visual Studio 2012에도 같은 문제가 있었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;C에서 제거하여 해결할 수 있었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;\프로그램 파일(x86)\&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;IIS Express\AppServer\applicationhost.config 경로가 불필요한 사이트 항목입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;관리자로서 VS2012를 실행할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;도움이 되길 바랍니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;81&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;처음에 방화벽을 사용하지 않도록 설정합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;도움이 됐어요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;에셋 스마트 시큐리티 5가 이를 차단했습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;82&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;며칠 전에 이런 문제가 있었는데 위의 모든 아이템들이 도움이 되지 않았습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;상호작용 모드에서 작동하는 SONY VAIO 노트북에 ESET Smart Security 5.0이 있습니다!&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;드디어 문제를 발견했어요, &lt;strong papago-id=&quot;82-1&quot;&gt;&lt;em papago-id=&quot;82-1-0&quot;&gt;ESET가 VS2012를 차단&lt;/em&gt;&lt;/strong&gt;하고 있었어요&lt;strong papago-id=&quot;82-1&quot;&gt;&lt;em papago-id=&quot;82-1-0&quot;&gt;!&lt;/em&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이전에 ESET은 VS2012가 Microsoft와 통신할 수 있도록 허용해 달라고 요청했고, 저는 &quot;액세스 거부&quot;를 선택했고, ESET은 VS2012를 거부하는 규칙을 만들었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;ESET rules zone&quot;에서 이 규칙을 누락하여 문제가 해결되었습니다!&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;83&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내 문서 폴더에서 IIS Express 폴더를 삭제하여 기본 설정을 확인하거나 정상적으로 작동할 때 이전 버전으로 복원합니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;28&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기본 웹 사이트를 제거합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&amp;lt;sites&amp;gt; &amp;lt;/sites&amp;gt;&lt;/code&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;site name=&quot;WebSite1&quot; id=&quot;1&quot; serverAutoStart=&quot;true&quot;&amp;gt;
    &amp;lt;application path=&quot;/&quot;&amp;gt;
        &amp;lt;virtualDirectory path=&quot;/&quot; physicalPath=&quot;%IIS_SITES_HOME%\WebSite1&quot; /&amp;gt;
    &amp;lt;/application&amp;gt;
    &amp;lt;bindings&amp;gt;
        &amp;lt;binding protocol=&quot;http&quot; bindingInformation=&quot;:8080:localhost&quot; /&amp;gt;
    &amp;lt;/bindings&amp;gt;
&amp;lt;/site&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;29&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 당신 자신의&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&amp;lt;site&amp;gt; &amp;lt;/site&amp;gt;&lt;/code&gt; &lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;30&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 달리다&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&quot;C:\Program Files\IIS Express\iisexpress.exe&quot;&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;http://www.iis.net/learn/extensions/using-iis-express/running-iis-express-from-the-command-line&quot; rel=&quot;nofollow&quot; papago-id=&quot;87&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;http://www.iis.net/learn/extensions/using-iis-express/running-iis-express-from-the-command-line&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p papago-id=&quot;88&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;VS 2013에서 내 문서에 Google 문서 동기화를 설정한 후 이 오류가 발생했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;읽기 전용이 아니며 문제가 해결되도록 사용 권한이 업데이트되었습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;89&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;명령 프롬프트를 관리자로 열고 다음 명령을 실행합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;netsh http show urlacl
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;90&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이제 이전에 추가한 url이 표시됩니다. 이 명령을 실행해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;netsh http delete urlacl url=http://+:36899/ user=Everyone
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;91&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음을 사용할 때 목록에서 URL을 확인하십시오.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;92&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(netsh http show urlacl)&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt;&lt;p papago-id=&quot;93&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 문제가 발생합니다. 웹 프로젝트 속성 -&amp;gt; 웹 -&amp;gt; 프로젝트 URL에서 &quot;가상 디렉터리 만들기&quot;를 클릭하여 문제가 해결되었습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;94&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;컴퓨터에 윈도우 업데이트가 많이 되는 문제가 있었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;95&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;운이 좋게도 위의 답변을 사용하여 문제를 해결하기 위해 몇 시간을 보냈습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;96&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이전에는 &lt;strong papago-id=&quot;96-1&quot;&gt;안티바이러스&lt;/strong&gt;로 인해 애플리케이션이 차단되어 여러 가지 문제가 발생했기 때문에 이를 &lt;strong papago-id=&quot;96-3&quot;&gt;비활성화&lt;/strong&gt;하여 시도해 보려고 했습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;97&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 모든 솔루션을 시도한 후 PC에서 &quot;One Drive&quot;를 제거하면 문제가 해결됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;98&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;N.B:&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li papago-id=&quot;99&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 .net core 웹 어플리케이션을 실행하려고 했습니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;100&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Visual Studio 2017 버전 15.9.5&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;101&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;윈도우 10 프로, 64비트&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt;&lt;p papago-id=&quot;102&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Solution(솔루션)을 클릭하고 F4를 누릅니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 마우스 오른쪽 버튼을 클릭한 솔루션에서 포트를 일치시키고 웹 탭 포트에 속성을 선택합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;포트 no는 케이스 F4 및 Properties 모두 동일합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;103&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;IIS Express 폴더 삭제를 시도하고 포트를 변경하고 VS와 PC를 다시 시작했지만 작동하지 않았습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 &lt;strong papago-id=&quot;103-1&quot;&gt;아이에스프레스&lt;/strong&gt;를 죽이고 나서 효과가 있었습니다&lt;strong papago-id=&quot;103-1&quot;&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;103-1&quot;&gt;군복무&lt;/strong&gt;를 마칩니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;104&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;레지스트리에서 매개 변수 변경&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;31&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;매개변수&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Start&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;32&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;4시부터 3시까지 재부팅합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;107&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/18454751/unable-to-launch-the-iis-express-web-server-error&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>ASP.NET</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1316</guid>
      <comments>https://bestprogram.tistory.com/1316#entry1316comment</comments>
      <pubDate>Tue, 24 Oct 2023 21:30:21 +0900</pubDate>
    </item>
    <item>
      <title>비AJAX jQuery POST 요청</title>
      <link>https://bestprogram.tistory.com/1315</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;비AJAX jQuery POST 요청&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;jQuery POST 기능을 사용하려고 하는데 AJAX 스타일로 요청을 처리하고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;내 말은 실제로 내가 지시하는 페이지로 가는 것이 아니라는 뜻입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;#see_comments&quot;).click(function() {
    $.post(
        &quot;comments.php&quot;, 
        {aid: imgnum}, 
        function (data) {

        }
    );
});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 기능은 &lt;em papago-id=&quot;2-1&quot;&gt;댓글&lt;/em&gt;로 이동해야 합니다&lt;em papago-id=&quot;2-1&quot;&gt;.&lt;/em&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;원조 값이 수중에 있는 &lt;em papago-id=&quot;2-1&quot;&gt;php&lt;/em&gt; 페이지.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;게시는 잘되지만 &lt;em papago-id=&quot;2-3&quot;&gt;댓글&lt;/em&gt;로 리디렉션되지 않습니다&lt;em papago-id=&quot;2-3&quot;&gt;.php&lt;/em&gt;.&lt;/font&gt;&lt;/p&gt; 
&lt;hr&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;3-0&quot;&gt;@Doug Neiner&lt;/strong&gt; 해명:&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;링크(이미지)가 15개 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;링크를 클릭하면 자바스크립트가 로드됩니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;대본이 뭘 알아요?&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;imgnum&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;열었어요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;imgnum&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;em papago-id=&quot;6-1&quot;&gt;댓글로.php.&lt;/em&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 이 자바스크립트를 사용해야 하는데 다른 수단으로는 그 방법을 사용할 수 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;자바스크립트는 필수 사항입니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;방법이 지원 값을 성공적으로 게시합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;em papago-id=&quot;7-1&quot;&gt;근데&lt;/em&gt; 댓글로&lt;em papago-id=&quot;7-1&quot;&gt;.&lt;/em&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;em papago-id=&quot;7-1&quot;&gt;php&lt;/em&gt;는 내가 그 값을 에코하려고 할 때 아무것도 표시되지 않습니다.&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;파이어버그를 사용하고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;콘솔에는 제가 (2) 단계에서 수행한 에코 요청이 성공적으로 표시됩니다.&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
&lt;/ol&gt;&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신이 무엇을 하려고 하는지는 알지만, 당신이 원하는 것은 아닙니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;첫째, 서버에서 데이터를 &lt;em papago-id=&quot;10-1&quot;&gt;변경&lt;/em&gt;하지 않는 한 a를 사용하지 마십시오.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;POST&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;부탁한다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그냥 가지세요&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;#see_comments&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;보통 사람입니다&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&amp;lt;a href='/comments.php?aid=1'&amp;gt;...&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;em papago-id=&quot;13-1&quot;&gt;사용&lt;/em&gt;해야 할 경우&lt;/font&gt;&lt;/font&gt;&lt;code&gt;POST&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 그런 다음 이 작업을 수행하여 페이지가 전화를 따르도록 하십시오.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;#see_comments&quot;).click(function() {
  $('&amp;lt;form action=&quot;comments.php&quot; method=&quot;POST&quot;&amp;gt;' + 
    '&amp;lt;input type=&quot;hidden&quot; name=&quot;aid&quot; value=&quot;' + imgnum + '&quot;&amp;gt;' +
    '&amp;lt;/form&amp;gt;').submit();
});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이게 실제로 어떻게 작동하는지.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;첫번째&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;$.post&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;AJAX 메서드일 &lt;em papago-id=&quot;17-1&quot;&gt;뿐&lt;/em&gt;이며 기존 메서드를 수행하는 데 사용할 수 없습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;form&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신이 설명하는 것처럼 제출하세요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 값을 &lt;em papago-id=&quot;18-1&quot;&gt;게시&lt;/em&gt;하고 새 페이지로 이동할 수 있도록 시뮬레이션해야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;form&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;포스트.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 흐름은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이미지를 클릭하면 JS 코드가&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;imgnum&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그 다음에 누군가가 클릭을 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;#see_comments&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;우리는 임시적인 것을 만듭니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;form&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;와 함께&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;imgnum&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그 속에 숨은 분야로서 가치.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;26&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;우리는 그 양식을 제출합니다. 그 양식은 가치를 &lt;em papago-id=&quot;26-1&quot;&gt;게시&lt;/em&gt;하고 로딩합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;comments.php&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;페이지입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신의.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;comments.php&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;20&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;페이지는 게시된 변수에 액세스할 수 있습니다(즉, PHP에서).&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;$_POST['aid']&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;21&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&gt;&lt;pre&gt;&lt;code&gt;$(&quot;#see_comments&quot;).click(function () {
    $('&amp;lt;form action=&quot;comments.php&quot; method=&quot;POST&quot;/&amp;gt;')
        .append($('&amp;lt;input type=&quot;hidden&quot; name=&quot;aid&quot;&amp;gt;').val(imgnum))
        .appendTo($(document.body)) //it has to be added somewhere into the &amp;lt;body&amp;gt;
        .submit();
});
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;31&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Doug Neiner의 솔루션은 정확할 뿐만 아니라 가장 포괄적으로 설명된 솔루션이지만, 한 가지 큰 문제가 있습니다. 크롬에서만 작동하는 것처럼 보인다는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;나는 해결책을 찾으려고 한동안 안절부절못하다가 두 번째 답을 우연히 발견했습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;유일한 차이점은 추가 코드입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;appendTo($(document.body))&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;33&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;. 그리고 &lt;strong papago-id=&quot;33-1&quot;&gt;파이어폭스&lt;/strong&gt;에서 테스트해봤는데 매력적이었어요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;파이어폭스와 IE는 DOM Body 어딘가에 임시 양식을 첨부해야 한다고 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;24&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Symfony2 프로젝트를 위해 이 구현을 해야 했습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 왜냐하면 내부에 경로 생성기가 있기 때문입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.twig&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;25&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;템플릿은 다음과만 작동합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;GET&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;26&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;매개 변수와 쿼리 문자열을 엉망으로 만드는 것은 앱의 보안을 파괴하고 있었습니다. (BTW, POST 매개 변수가 있는 페이지를 호출하기 위해 .twig 템플릿을 얻는 방법을 아는 사람이 있다면 댓글로 알려주세요.)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;27&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제 생각엔 당신이 요구하는 것은 'comments'로 가는 것 같습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;php'와 posting&lt;/font&gt;&lt;/font&gt;&lt;code&gt;aid&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;28&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;가치 있게&lt;/font&gt;&lt;/font&gt;&lt;code&gt;imgnum&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;29&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;. 이 방법은 양식과 함께 이 값을 제출하는 것뿐입니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;40&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 이 양식을 숨긴 상태로 만들고 jquery가 있는 곳에서 임의 클릭으로 제출할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;41&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;html nequal(페이지의 아무 곳에나 배치):&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;form id='see_comments_form' action='comments.php' action='POST'&amp;gt;
    &amp;lt;input id='see_comments_aid' type='hidden' name='aid' value=''&amp;gt;
&amp;lt;/form&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;42&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;js 필수:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;#see_comments&quot;).click(function(){
    $('#see_comments_aid').val(imgnum);
    $('#see_comments_form').submit();
);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;30&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러면 ' comments'로 리디렉션됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;php'와 적절한 값을 보냅니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;imgnum&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;31&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(다른 곳에서 얻은 것으로 추정됩니다.)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;32&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;정말로.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;$.post()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;33&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;일부 데이터를 서버로 보냅니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;POST 요청을 처리하는 서버 사이드 코드에서 하지 않으면 리디렉션이 발생하지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음 두 가지 해결책을 제안할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;34&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;댓글 페이지로 이동하시려면 JQuery post 대신 '앵커' 태그를 이용하시면 됩니다 -&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&amp;lt;a href=&quot;comments.php?aid=1&quot;&amp;gt;Show Comments&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;35&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;36&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또는 JQuery를 진행하려면 다음 코드 스니펫을 사용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;$(location).attr(&quot;href&quot;, &quot;comments.php?aid=1&quot;);&lt;/code&gt;&lt;/li&gt; 
&lt;/ol&gt;&lt;p papago-id=&quot;50&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;정확하게 문제를 해결하지 못했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 문제를 해결할 수 있었습니다. 이 문제를 해결하기 위해 JS를 많이 수정해야 했지만, 이 문제의 핵심 문제는 이렇게 함으로써 해결되었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;    $(&quot;#see_comments&quot;).attr({href: &quot;comments.php?aid='&quot;+imgnum+&quot;'&quot;});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;51&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;@Doug Neiner가 처음에 제안한 대로 URL에 지원 값을 추가했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;더그, 수고 많으셨습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;정말 감사합니다. +1 그리고 노력에 대한 답변을 받아들이겠습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;52&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/2054705/non-ajax-jquery-post-request&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>jquery</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1315</guid>
      <comments>https://bestprogram.tistory.com/1315#entry1315comment</comments>
      <pubDate>Tue, 24 Oct 2023 21:30:12 +0900</pubDate>
    </item>
    <item>
      <title>xml.etree를 사용하여 XML 선언을 작성하는 방법요소나무</title>
      <link>https://bestprogram.tistory.com/1314</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;xml.etree를 사용하여 XML 선언을 작성하는 방법&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;요소&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;나무&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;나는 파이썬에서 를 사용하여 XML 문서를 생성하고 있지만,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;tostring&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;함수는 평문으로 변환할 때 &lt;a href=&quot;http://xmlwriter.net/xml_guide/xml_declaration.shtml&quot; rel=&quot;noreferrer&quot; papago-id=&quot;1-1&quot;&gt;XML 선언&lt;/a&gt;을 포함하지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-python prettyprint-override&quot;&gt;&lt;code&gt;from xml.etree.ElementTree import Element, tostring

document = Element('outer')
node = SubElement(document, 'inner')
node.NewValue = 1
print tostring(document)  # Outputs &quot;&amp;lt;outer&amp;gt;&amp;lt;inner /&amp;gt;&amp;lt;/outer&amp;gt;&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음 XML 선언을 포함하려면 문자열이 필요합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot; ?&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 이를 수행하는 어떠한 문서화된 방법도 없는 것 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;XML 선언을 렌더링하기 위한 적절한 방법이 있습니까?&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ElementTree&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;?&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;나는 그것에 대한 방법이 없는 것을 발견한 것에 놀랬습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ElementTree.tostring()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;. 그러나 사용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ElementTree.ElementTree.write()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;XML 문서를 가짜 파일에 쓰는 방법:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;from io import BytesIO
from xml.etree import ElementTree as ET

document = ET.Element('outer')
node = ET.SubElement(document, 'inner')
et = ET.ElementTree(document)

f = BytesIO()
et.write(f, encoding='utf-8', xml_declaration=True) 
print(f.getvalue())  # your XML file, encoded as UTF-8
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/4997848/emitting-namespace-specifications-with-elementtree-in-python&quot; papago-id=&quot;10-1&quot;&gt;이 질문&lt;/a&gt;을 보세요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그 때도 '독립형' 속성은 스스로 붙여서 쓰지 않고는 얻을 수 없다고 생각합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;lxml을 사용합니다(http://lxml.de/api.html) 참조).&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러면 다음을 수행할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;from lxml import etree
document = etree.Element('outer')
node = etree.SubElement(document, 'inner')
print(etree.tostring(document, xml_declaration=True))
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://bugs.launchpad.net/lxml/+bug/1470809&quot; papago-id=&quot;13-0&quot; rel=&quot;noreferrer&quot;&gt;를 포함하면 XML 헤더를 얻을&lt;/a&gt; 수 &lt;a href=&quot;https://bugs.launchpad.net/lxml/+bug/1470809&quot; papago-id=&quot;13-0&quot; rel=&quot;noreferrer&quot;&gt;있습니다.&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;xml.etree.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;ElementTree.tostring은 encoding='utf8'을 사용하여 XML 인코딩 선언을 씁니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;샘플 파이썬 코드(파이썬 2 및 3과 함께 작동):&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import xml.etree.ElementTree as ElementTree

tree = ElementTree.ElementTree(
    ElementTree.fromstring('&amp;lt;xml&amp;gt;&amp;lt;test&amp;gt;123&amp;lt;/test&amp;gt;&amp;lt;/xml&amp;gt;')
)
root = tree.getroot()

print('without:')
print(ElementTree.tostring(root, method='xml'))
print('')
print('with:')
print(ElementTree.tostring(root, encoding='utf8', method='xml'))
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Python 2 출력:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$ python2 example.py
without:
&amp;lt;xml&amp;gt;&amp;lt;test&amp;gt;123&amp;lt;/test&amp;gt;&amp;lt;/xml&amp;gt;

with:
&amp;lt;?xml version='1.0' encoding='utf8'?&amp;gt;
&amp;lt;xml&amp;gt;&amp;lt;test&amp;gt;123&amp;lt;/test&amp;gt;&amp;lt;/xml&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;파이썬 3의 경우 바이트 리터럴이 반환됨을 나타내는 &lt;a href=&quot;https://stackoverflow.com/questions/6269765/what-does-the-b-character-do-in-front-of-a-string-literal&quot; papago-id=&quot;17-1&quot;&gt;접두사&lt;/a&gt;(Python 2의 경우와 마찬가지로)가 표시됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$ python3 example.py
without:
b'&amp;lt;xml&amp;gt;&amp;lt;test&amp;gt;123&amp;lt;/test&amp;gt;&amp;lt;/xml&amp;gt;'

with:
b&quot;&amp;lt;?xml version='1.0' encoding='utf8'?&amp;gt;\n&amp;lt;xml&amp;gt;&amp;lt;test&amp;gt;123&amp;lt;/test&amp;gt;&amp;lt;/xml&amp;gt;&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;xml_declaration 인수&lt;/font&gt;&lt;/h2&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;ElementTree에서 XML 선언을 렌더링하는 적절한 방법이 있습니까?&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;20&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예, 그리고 사용할 필요가 없습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.tostring&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기능.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://docs.python.org/3.2/library/xml.etree.elementtree.html#module-xml.etree.ElementTree&quot; papago-id=&quot;8-1&quot; rel=&quot;noreferrer&quot;&gt;요소&lt;/a&gt;에 따라&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://docs.python.org/3.2/library/xml.etree.elementtree.html#module-xml.etree.ElementTree&quot; papago-id=&quot;8-1&quot; rel=&quot;noreferrer&quot;&gt;트리 설명서&lt;/a&gt;, &lt;strong papago-id=&quot;8-3&quot;&gt;요소&lt;/strong&gt;를 작성해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;8-3&quot;&gt;트리 개체&lt;/strong&gt;, Element and SubElements 만들기, &lt;strong papago-id=&quot;8-5&quot;&gt;트리의 루트 설정&lt;/strong&gt;, 그리고 마지막으로 사용&lt;/font&gt;&lt;/font&gt;&lt;code&gt;xml_declaration&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;의 논쟁.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.write&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;function, 그래서 declaration line은 출력 파일에 포함됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이렇게 할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import xml.etree.ElementTree as ET

tree = ET.ElementTree(&quot;tree&quot;)

document = ET.Element(&quot;outer&quot;)
node1 = ET.SubElement(document, &quot;inner&quot;)
node1.text = &quot;text&quot;

tree._setroot(document)
tree.write(&quot;./output.xml&quot;, encoding = &quot;UTF-8&quot;, xml_declaration = True)  
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;출력 파일은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version='1.0' encoding='UTF-8'?&amp;gt;
&amp;lt;outer&amp;gt;&amp;lt;inner&amp;gt;text&amp;lt;/inner&amp;gt;&amp;lt;/outer&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;26&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;최근에 이 문제가 발생했는데, 코드를 좀 파헤친 후에 다음 코드 조각이 함수의 정의라는 것을 알게 되었습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ElementTree.write&lt;/code&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;def write(self, file, encoding=&quot;us-ascii&quot;):
    assert self._root is not None
    if not hasattr(file, &quot;write&quot;):
        file = open(file, &quot;wb&quot;)
    if not encoding:
        encoding = &quot;us-ascii&quot;
    elif encoding != &quot;utf-8&quot; and encoding != &quot;us-ascii&quot;:
        file.write(&quot;&amp;lt;?xml version='1.0' encoding='%s'?&amp;gt;\n&quot; % 
     encoding)
    self._write(file, self._root, encoding, {})
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;27&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 답은 만약 당신이 XML 헤더를 당신의 파일에 쓸 필요가 있다면, 설정하는 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;encoding&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;28&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이외의 논쟁&lt;/font&gt;&lt;/font&gt;&lt;code&gt;utf-8&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;29&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;아니면&lt;/font&gt;&lt;/font&gt;&lt;code&gt;us-ascii&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;30&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;,예.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;UTF-8&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;strong papago-id=&quot;31&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;만만하다&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;32&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Python 2와 3에 대한 샘플(&lt;strong papago-id=&quot;32-1&quot;&gt;인코딩&lt;/strong&gt; 매개 변수는 &lt;strong papago-id=&quot;32-3&quot;&gt;utf8&lt;/strong&gt;이어야 함):&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import xml.etree.ElementTree as ElementTree

tree = ElementTree.ElementTree(ElementTree.fromstring('&amp;lt;xml&amp;gt;&amp;lt;test&amp;gt;123&amp;lt;/test&amp;gt;&amp;lt;/xml&amp;gt;'))
root = tree.getroot()
print(ElementTree.tostring(root, encoding='utf8', method='xml'))
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;33&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Python 3.8부터는 &lt;strong papago-id=&quot;33-1&quot;&gt;xml_declaration&lt;/strong&gt; 매개 변수가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;34&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;버전 3.8의 새로운 기능: xml_declaration 및 default_namespace 매개 변수입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;35&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;xml.etree.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;ElementTree.tostring(element, encoding=&quot;us-ascii&quot;, method=&quot;xml&quot;, *, xml_declaration=none, default_namespace=none, short_empty_elements=True) 모든 하위 요소를 포함하는 XML 요소의 문자열 표현을 생성합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;element는 Element 인스턴스입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;encoding 1은 출력 encoding(기본값은 US-ASCII).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;encoding=&quot; unicode&quot;를 사용하여 유니코드 문자열을 생성합니다(otherwise, 바이트 문자열이 생성됨).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;메서드는 &quot;xml&quot;, &quot;html&quot; 또는 &quot;text&quot;입니다(기본값은 &quot;xml&quot;입니다).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;xml_declaration, default_namespace 및 short_empty_elements의 의미는 ElementTree와 동일합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;글을 쓰다&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;XML 데이터가 들어 있는 (선택적으로) 인코딩된 문자열을 반환합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;36&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Python 3.8 이상용 샘플:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import xml.etree.ElementTree as ElementTree

tree = ElementTree.ElementTree(ElementTree.fromstring('&amp;lt;xml&amp;gt;&amp;lt;test&amp;gt;123&amp;lt;/test&amp;gt;&amp;lt;/xml&amp;gt;'))
root = tree.getroot()
print(ElementTree.tostring(root, encoding='unicode', method='xml', xml_declaration=True))
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음과 같은 최소 작동 예제&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ElementTree&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;패키지 사용량:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import xml.etree.ElementTree as ET

document = ET.Element('outer')
node = ET.SubElement(document, 'inner')
node.text = '1'
res = ET.tostring(document, encoding='utf8', method='xml').decode()
print(res)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;39&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;출력은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version='1.0' encoding='utf8'?&amp;gt;
&amp;lt;outer&amp;gt;&amp;lt;inner&amp;gt;1&amp;lt;/inner&amp;gt;&amp;lt;/outer&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;40&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또 다른 꽤 간단한 옵션은 원하는 헤더를 다음과 같이 xml 문자열에 연결하는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;xml = (bytes('&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;\n', encoding='utf-8') + ET.tostring(root))
xml = xml.decode('utf-8')
with open('invoice.xml', 'w+') as f:
    f.write(xml)
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;41&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://docs.python.org/2/library/xml.etree.elementtree.html&quot; rel=&quot;nofollow&quot; papago-id=&quot;41-1&quot;&gt;ET&lt;/a&gt;를 사용합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;try:
    from lxml import etree
    print(&quot;running with lxml.etree&quot;)
except ImportError:
    try:
        # Python 2.5
        import xml.etree.cElementTree as etree
        print(&quot;running with cElementTree on Python 2.5+&quot;)
    except ImportError:
        try:
            # Python 2.5
            import xml.etree.ElementTree as etree
            print(&quot;running with ElementTree on Python 2.5+&quot;)
        except ImportError:
            try:
                # normal cElementTree install
                import cElementTree as etree
                print(&quot;running with cElementTree&quot;)
            except ImportError:
               try:
                   # normal ElementTree install
                   import elementtree.ElementTree as etree
                   print(&quot;running with ElementTree&quot;)
               except ImportError:
                   print(&quot;Failed to import ElementTree from any known place&quot;)

document = etree.Element('outer')
node = etree.SubElement(document, 'inner')
print(etree.tostring(document, encoding='UTF-8', xml_declaration=True))
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;42&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 인쇄만 하고자 할 때 효과가 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;파일로 보내려고 할 때 오류가 발생하는...&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import xml.dom.minidom as minidom
import xml.etree.ElementTree as ET
from xml.etree.ElementTree import Element, SubElement, Comment, tostring

def prettify(elem):
    rough_string = ET.tostring(elem, 'utf-8')
    reparsed = minidom.parseString(rough_string)
    return reparsed.toprettyxml(indent=&quot;  &quot;)
&lt;/code&gt;&lt;/pre&gt;&lt;h1 papago-id=&quot;43&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;선언문에 '독립 실행형' 포함&lt;/font&gt;&lt;/h1&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;추가할 수 있는 대안을 찾지 못했습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;standalone&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;문서에서 논쟁을 해서 나는 그것을 각색했습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ET.tosting&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;20&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것을 논쟁으로 받아들이는 함수.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;from xml.etree import ElementTree as ET

# Sample
document = ET.Element('outer')
node = ET.SubElement(document, 'inner')
et = ET.ElementTree(document)

 # Function that you need   
 def tostring(element, declaration, encoding=None, method=None,):
     class dummy:
         pass
     data = []
     data.append(declaration+&quot;\n&quot;)
     file = dummy()
     file.write = data.append
     ET.ElementTree(element).write(file, encoding, method=method)
     return &quot;&quot;.join(data)
# Working example
xdec = &quot;&quot;&quot;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot; ?&amp;gt;&quot;&quot;&quot;    
xml = tostring(document, encoding='utf-8', declaration=xdec)
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;47&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/15356641/how-to-write-xml-declaration-using-xml-etree-elementtree&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>XML</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1314</guid>
      <comments>https://bestprogram.tistory.com/1314#entry1314comment</comments>
      <pubDate>Tue, 24 Oct 2023 21:30:05 +0900</pubDate>
    </item>
    <item>
      <title>jquery select 옵션 클릭 처리기</title>
      <link>https://bestprogram.tistory.com/1313</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;jquery select 옵션 클릭 처리기&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;주어진:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;select id=&quot;mySelect&quot;&amp;gt;
  &amp;lt;option&amp;gt;..&amp;lt;/option&amp;gt;
  ...
&amp;lt;/select&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;선택 ID를 사용하여 옵션 중 하나에서 클릭 이벤트를 트리거하려면 어떻게 해야 합니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이벤트를 선택 항목에 직접 연결하려고 했지만 선택 항목을 클릭할 때마다 이벤트가 트리거됩니다(옵션이 없더라도).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;아, 그리고 그것은 다중 선택입니다 (그것은 중요하지 않다고 생각하지만).&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이벤트 핸들러를 '클릭' 대신 '변경'하려고 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$('#mySelect').change(function(){ 
    var value = $(this).val();
});
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;
&lt;div class=&quot;snippet&quot; data-lang=&quot;js&quot; data-hide=&quot;false&quot; data-console=&quot;false&quot; data-babel=&quot;false&quot;&gt; 
 &lt;div class=&quot;snippet-code&quot;&gt; 
  &lt;pre class=&quot;snippet-code-js lang-js prettyprint-override&quot;&gt;&lt;code&gt;$('#mySelect').on('change', function() {
  var value = $(this).val();
  alert(value);
});&lt;/code&gt;&lt;/pre&gt; 
  &lt;pre class=&quot;snippet-code-html lang-html prettyprint-override&quot;&gt;&lt;code&gt;&amp;lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;select id=&quot;mySelect&quot;&amp;gt;
  &amp;lt;option value='1'&amp;gt;1&amp;lt;/option&amp;gt;
  &amp;lt;option value='2'&amp;gt;2&amp;lt;/option&amp;gt;
  &amp;lt;option value='3'&amp;gt;3&amp;lt;/option&amp;gt;
  &amp;lt;option value='4'&amp;gt;4&amp;lt;/option&amp;gt;
  &amp;lt;option value='5'&amp;gt;5&amp;lt;/option&amp;gt;
  &amp;lt;option value='6'&amp;gt;6&amp;lt;/option&amp;gt;
  &amp;lt;option value='7'&amp;gt;7&amp;lt;/option&amp;gt;
  &amp;lt;option value='8'&amp;gt;8&amp;lt;/option&amp;gt;
&amp;lt;/select&amp;gt;&lt;/code&gt;&lt;/pre&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;/p&gt; 
&lt;hr&gt; 
&lt;p&gt;&lt;a href=&quot;http://jsfiddle.net/Ivoss/kjyneeqw/&quot; rel=&quot;noreferrer&quot;&gt;&lt;strong papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;선택할 포커스 이벤트를 첨부할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$('#select_id').focus(function() {
    console.log('Handler for .focus() called.');
});
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내가 가지고 있던 문제는&lt;/font&gt;&lt;/font&gt;&lt;code&gt;change&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;핸들러는 그것이 내가 위아래로 스크롤하는 모든 키 누름에서 트리거되었다는 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&amp;lt;select&amp;gt;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;옵션을 클릭할 때마다 또는 이벤트를 받고 싶었습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;enter&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;원하는 옵션을 눌렀습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이렇게 하게 됐습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;let blockChange = false;

$element.keydown(function (e) {

    const keycode = (e.keyCode ? e.keyCode : e.which);

    // prevents select opening when enter is pressed
    if (keycode === 13) {
        e.preventDefault();
    }

    // lets the change event know that these keypresses are to be ignored
    if([38, 40].indexOf(keycode) &amp;gt; -1){
        blockChange = true;
    }

});

$element.keyup(function(e) {

    const keycode = (e.keyCode ? e.keyCode : e.which);
    // handle enter press
    if(keycode === 13) {
        doSomething();
    }

});

$element.change(function(e) {

    // this effective handles the click only as preventDefault was used on enter
    if(!blockChange) {
        doSomething();
    }
    blockChange = false;

});
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이전의 선택 값과 클릭된 값을 가져오려면 이 방법을 사용할 수도 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;HTML&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;select name=&quot;status&quot;&amp;gt;
    &amp;lt;option value=&quot;confirmed&quot;&amp;gt;confirmed&amp;lt;/option&amp;gt;
    &amp;lt;option value=&quot;packed&quot;&amp;gt;packed&amp;lt;/option&amp;gt;
    &amp;lt;option value=&quot;shiped&quot;&amp;gt;shiped&amp;lt;/option&amp;gt;
    &amp;lt;option value=&quot;delivered&quot;&amp;gt;delivered&amp;lt;/option&amp;gt;
&amp;lt;/select&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;대본&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;
    var previous;

    $(&quot;select[name=status]&quot;).focus(function () {
        previous = this.value;
    }).change(function() {
        var next = $(this).val()
        
        alert(&quot;previous: &quot;+previous+ &quot; and Next: &quot;+ next)
        
        previous = this.value;
    });


&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;select name=&quot;data&quot; id = 'cohort' class=&quot;form-control&quot; style = &quot;width:215px; margin-left:20px; margin-bottom:8px ; height:30px&quot; &amp;gt;
    &amp;lt;option value = 0&amp;gt;All&amp;lt;/option&amp;gt;
    &amp;lt;option value = 1&amp;gt;Diseases&amp;lt;/option&amp;gt;
    &amp;lt;option value = 2&amp;gt;Drugs&amp;lt;/option&amp;gt;
    &amp;lt;option value = 3&amp;gt;Procedures&amp;lt;/option&amp;gt;
    &amp;lt;/select&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code&gt;const element = document.getElementById(&quot;cohort&quot;);
const event = new MouseEvent(&quot;mousedown&quot;);
element.dispatchEvent(event);
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 상황에서 수행한 작업은 OnClick 이벤트에 다음과 같은 옵션 요소를 넣었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;option onClick=&quot;something();&quot;&amp;gt;Option Name&amp;lt;/option&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러면 다음과 같은 스크립트 기능을 생성합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;function something(){
    alert(&quot;Hello&quot;); 
    }
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;업데이트: 안타깝게도 댓글을 달 수 없어서 여기서 업데이트합니다.&lt;/font&gt;&lt;/font&gt;&lt;br&gt; &lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;6-0&quot;&gt;TrueBlueAussie&lt;/strong&gt; 분명히 &lt;strong papago-id=&quot;6-2&quot;&gt;&lt;em papago-id=&quot;6-2-0&quot;&gt;jsfiddle&lt;/em&gt;&lt;/strong&gt;에 문제가 있습니다. 작동하는지 여부는 여기에서 확인하십시오. &lt;strong papago-id=&quot;6-0&quot;&gt;http://js.do/code/klm&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것은 나에게 통합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;select name=&quot;&quot; id=&quot;select&quot;&amp;gt;
    &amp;lt;option value=&quot;1&quot;&amp;gt;&amp;lt;/option&amp;gt;
    &amp;lt;option value=&quot;2&quot;&amp;gt;&amp;lt;/option&amp;gt;
    &amp;lt;option value=&quot;3&quot;&amp;gt;&amp;lt;/option&amp;gt;
&amp;lt;/select&amp;gt;

&amp;lt;script&amp;gt;
    $(&quot;#select &amp;gt; option&quot;).on(&quot;click&quot;, function () {
       alert(1)
    })
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;한 가지 가능한 해결책은 모든 옵션에 클래스를 추가하는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;select name=&quot;export_type&quot; id=&quot;export_type&quot;&amp;gt;
    &amp;lt;option class=&quot;export_option&quot; value=&quot;pdf&quot;&amp;gt;PDF&amp;lt;/option&amp;gt;
    &amp;lt;option class=&quot;export_option&quot; value=&quot;xlsx&quot;&amp;gt;Excel&amp;lt;/option&amp;gt;
    &amp;lt;option class=&quot;export_option&quot; value=&quot;docx&quot;&amp;gt;DocX&amp;lt;/option&amp;gt;
&amp;lt;/select&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 클릭 핸들러를 이 클래스에 사용합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(document).ready(function () {

    $(&quot;.export_option&quot;).click(function (e) {
        //alert('click');
    });

});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;21-0&quot;&gt;업데이트:&lt;/strong&gt; 코드는 FF, IE, 오페라에서는 작동하지만 크롬에서는 작동하지 않는 것으로 보입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;사양을 보면 http://www.w3.org/TR/html401/interact/forms.html#h-17.6 크롬의 버그라고 할 수 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/5749597/jquery-select-option-click-handler&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>jquery</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1313</guid>
      <comments>https://bestprogram.tistory.com/1313#entry1313comment</comments>
      <pubDate>Tue, 24 Oct 2023 21:29:55 +0900</pubDate>
    </item>
    <item>
      <title>구조물의 크기를 확인하려면 어떻게 해야 합니까?</title>
      <link>https://bestprogram.tistory.com/1312</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;구조물의 크기를 확인하려면 어떻게 해야 합니까?&lt;/font&gt;&lt;/h2&gt;
&lt;div&gt; 
 &lt;aside class=&quot;s-notice s-notice__info post-notice js-post-notice mb16&quot; role=&quot;status&quot;&gt; 
  &lt;div class=&quot;d-flex fd-column fw-nowrap&quot;&gt; 
   &lt;div class=&quot;d-flex fw-nowrap&quot;&gt; 
    &lt;div class=&quot;flex--item mr8&quot;&gt; 
     &lt;svg aria-hidden=&quot;true&quot; class=&quot;svg-icon iconLightbulb&quot; width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 18 18&quot;&gt;
      &lt;path d=&quot;M15 6.38A6.48 6.48 0 0 0 7.78.04h-.02A6.49 6.49 0 0 0 2.05 5.6a6.31 6.31 0 0 0 2.39 5.75c.49.39.76.93.76 1.5v.24c0 1.07.89 1.9 1.92 1.9h2.75c1.04 0 1.92-.83 1.92-1.9v-.2c0-.6.26-1.15.7-1.48A6.32 6.32 0 0 0 15 6.37ZM4.03 5.85A4.49 4.49 0 0 1 8 2.02a4.48 4.48 0 0 1 5 4.36 4.3 4.3 0 0 1-1.72 3.44c-.98.74-1.5 1.9-1.5 3.08v.1H7.2v-.14c0-1.23-.6-2.34-1.53-3.07a4.32 4.32 0 0 1-1.64-3.94ZM10 18a1 1 0 0 0 0-2H7a1 1 0 1 0 0 2h3Z&quot;&gt;&lt;/path&gt;
     &lt;/svg&gt; 
    &lt;/div&gt; 
    &lt;div class=&quot;flex--item wmn0 fl1 lh-lg&quot;&gt; 
     &lt;div class=&quot;flex--item fl1 lh-lg&quot;&gt; 
      &lt;div papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;
&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 질문은 미래의 방문객들에게 도움이 될 것 같지는 않습니다; 그것은 단지 작은 지리적 지역, 특정한 시간, 또는 인터넷의 전세계 사용자들에게 일반적으로 적용될 수 없는 매우 좁은 상황에만 관련이 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 질문을 보다 광범위하게 적용할 수 있도록 도움을 주려면,&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;/help/reopen-questions&quot; papago-id=&quot;1-1&quot;&gt;헬프 센터&lt;/a&gt;를 방문합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;      &lt;/font&gt;&lt;/div&gt; 
     &lt;/div&gt; 
    &lt;/div&gt; 
   &lt;/div&gt; 
   &lt;div class=&quot;flex--item mb0 mt8&quot; papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;
&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;닫힘&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;span class=&quot;relativetime&quot; papago-id=&quot;2-1&quot; title=&quot;2012-08-31 13:58:43Z&quot; papago-attr-id=&quot;1&quot;&gt;11년 전&lt;/span&gt;에.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;   &lt;/font&gt;&lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/aside&gt; 
&lt;/div&gt; 
&lt;pre&gt;&lt;code&gt;struct a
{
    char *c;
    char b;
};
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;크기가 어떻게 됩니까?&lt;/font&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;

typedef struct { char* c; char b; } a;

int main()
{
    printf(&quot;sizeof(a) == %d&quot;, sizeof(a));
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;32비트 기계에서 &quot;(a) == 8의 크기&quot;를 받습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;구조물의 전체 크기는 패킹에 따라 달라집니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제 경우에는 기본 패킹이 4이므로 'c'는 4바이트, 'b'는 1바이트, 패딩 바이트는 3바이트를 남겨서 4:8의 다음 배수가 됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 패킹을 변경하려면 대부분의 컴파일러에서 MSVC와 같은 방식으로 변경할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;#pragma pack(1)
typedef struct { char* c; char b; } a;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;크기는 (a) == 5 입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이렇게 하는 경우 라이브러리 헤더보다 패킹을 먼저 재설정하도록 주의하십시오!&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다른 답변들 중 일부가 말한 것과는 달리, 대부분의 시스템에서 프래그마나 컴파일러 옵션이 없다면 구조의 크기는 최소 6바이트가 될 것이고, 대부분의 32비트 시스템에서는 8바이트가 될 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;64비트 시스템의 경우 크기가 16바이트가 될 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;항상 정렬이 작용합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;단일 구조의 크기는 해당 크기의 배열을 할당할 수 있어야 하며, 배열의 개별 구성원이 해당 프로세서에 맞게 충분히 정렬되어야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;결과적으로, 다른 사람들이 가정한 것처럼 구조의 크기가 5인 경우, 그러한 두 구조의 배열은 10바이트 길이가 될 것이고, 두 번째 배열 부재의 문자 포인터는 홀수 바이트로 정렬될 것이고, 이는 (대부분의 프로세서에서) 성능에 큰 병목 현상을 일으킬 것입니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;수동으로 셀 경우 구조물의 크기는 선형을 고려한 후 각 데이터 멤버의 크기입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;구조물에는 마법의 오버헤드 바이트가 없습니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;정확한 값은 (&lt;em papago-id=&quot;0-1&quot;&gt;a)&lt;/em&gt;의 크기입니다&lt;em papago-id=&quot;0-1&quot;&gt;.&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 위험을 무릅쓰고 이 경우에는 2 이상이고 16 이하라고 가정할 수도 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이는 아키텍처 및 기본 데이터 유형을 처리하는 방식에 따라 달라집니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 시스템에 자연적인 정렬이 필요한지 여부에 따라 달라집니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;엄격하지 않고 struct를 의미한다고 가정하지만 32비트 시스템에서는 컴파일러가 struct를 패딩하는지에 따라 5바이트 또는 8바이트가 됩니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;'엄격'이 아니라 '구조'를, '차'가 아닌 '차'를 의미하는 것 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;크기는 구현에 따라 달라집니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;대부분의 32비트 시스템에서는 포인터의 경우 5-4바이트, 문자의 경우 1바이트가 될 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 정렬이 여기서 효과를 발휘하지 못할 것이라고 생각하지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 'c'와 'b'를 교환하면 크기가 8바이트로 커질 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;네, 시험해봤는데 (g++ 4.2.3, -g 옵션 포함) 8개가 나옵니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;구조의 크기가 2의 배수가 되도록 32비트 시스템에서 구조의 크기는 8바이트여야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이렇게 하면 구조 배열이 선언될 때 올바른 바이트 경계에서 개별 구조를 사용할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 마지막에 3바이트로 구조를 패딩함으로써 달성됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;구조체에 포인터가 문자 뒤에 선언되어 있다면 크기는 여전히 8바이트가 되지만 포인터(4바이트 요소)를 4바이트 주소 경계에 정렬하기 위해 3바이트 패딩이 추가되었을 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;경험칙에 따르면 요소는 바이트 크기의 배수인 오프셋에 있어야 하며 구조 자체는 2의 배수인 크기여야 합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/143025/how-do-i-find-the-size-of-a-struct&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>c</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1312</guid>
      <comments>https://bestprogram.tistory.com/1312#entry1312comment</comments>
      <pubDate>Tue, 24 Oct 2023 21:29:47 +0900</pubDate>
    </item>
    <item>
      <title>워드프레스 아이디로 발췌하기</title>
      <link>https://bestprogram.tistory.com/1311</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;워드프레스 아이디로 발췌하기&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://wptheming.com/options-framework-plugin/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;1-1&quot;&gt;옵션 프레임워크&lt;/a&gt;를 사용하고 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이게 왜 안 되는지 알 수가 없네요&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$x = of_get_option('post_number');
$content_post = get_post($x);
echo $content_post-&amp;gt;post_excerpt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것은 매우 이상합니다 왜냐하면&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;echo of_get_option('post_number');
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;완벽하게 작동하고 숫자를 출력합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://codex.wordpress.org/Function_Reference/get_post&quot; rel=&quot;noreferrer&quot; papago-id=&quot;5-1&quot;&gt;get_post&lt;/a&gt;에 따르면 내 코드는 작동하지만 에코는 아무것도 생성하지 않으며 오류 메시지도 생성하지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 나는 get_post ()를 어떻게든 잘못 처리하고 있을 것입니다. 단서가 있습니까?&lt;/font&gt;&lt;/p&gt; 
&lt;hr&gt; 
&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;편집&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;vardump http://pastebin.com/ZEgQ5WPn 에서 post_content는 가득 찼지만 post_ excerpt는 비어 있음을 나타냄&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;발췌문을 재생성하려면 어떻게 해야 합니까?&lt;/font&gt;&lt;/p&gt; 
&lt;hr&gt; 
&lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;EDIT [해결]&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;발췌문을 수동으로 덮어쓰기로 결정했지만 옵션이 누락되어 &lt;a href=&quot;http://wordpress.org/support/topic/just-upgraded-to-31-and-post-excerpt-field-in-admin-disappeared#post-2342181&quot; rel=&quot;noreferrer&quot; papago-id=&quot;11-1&quot;&gt;이&lt;/a&gt;를 찾았습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;중고의&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;add_post_type_support( 'page', 'excerpt' );
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;발췌문을 수동으로 쓰다&lt;/font&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$text = apply_filters('the_excerpt', get_post_field('post_excerpt', $post_id));
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;post_content를 가져다가 발췌한 내용을 만듭니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;post_content를 코드의 다른 문자열로 대체할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;55를 다른 숫자로 변경하면 반환되는 단어의 양이 늘어납니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$excerpt = wp_trim_words ( strip_shortcodes( $recent[&quot;post_content&quot;], 55 ) );
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://codex.wordpress.org/Function_Reference/get_post&quot; rel=&quot;nofollow&quot; papago-id=&quot;15-1&quot;&gt;get_post()&lt;/a&gt;를 이렇게 사용할 수 있어야 하는데, 이는 거의 모든 내장된 포스트 속성을 포스트 객체의 일부로 &lt;a href=&quot;http://codex.wordpress.org/Function_Reference/get_post#Return&quot; rel=&quot;nofollow&quot; papago-id=&quot;15-3&quot;&gt;반환&lt;/a&gt;합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;?php
  $my_id = 7;
  $my_post = get_post( $my_id ); 
  $my_excerpt = $my_post-&amp;gt;post_excerpt;
  var_dump( $my_excerpt );
?&amp;gt; 
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;만약 그것이 실패한다면(그렇지 않아야 하지만, 아마도 당신은 그것의 소리를 듣고 시도해봤을지도 모릅니다) &lt;a href=&quot;http://codex.wordpress.org/Class_Reference/WP_Query&quot; rel=&quot;nofollow&quot; papago-id=&quot;0-1&quot;&gt;WP_Query&lt;/a&gt;를 확인하고 통과할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&quot;p=$my_id&quot;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;매개변수로서&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;어쨌든 get_post 후드 아래에 사용된 기능일 가능성이 높습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;?php
  $my_id = 7;
  $my_posts = new WP_Query( &quot;p=$my_id&quot; ); 
  var_dump( $my_posts );
?&amp;gt; 
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/11370599/wordpress-get-excerpt-by-id&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>Wordpress</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1311</guid>
      <comments>https://bestprogram.tistory.com/1311#entry1311comment</comments>
      <pubDate>Tue, 24 Oct 2023 21:29:40 +0900</pubDate>
    </item>
    <item>
      <title>jQuery로 요소 위를 맴도는 IF 탐지</title>
      <link>https://bestprogram.tistory.com/1310</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;jQuery로 요소 위를 맴도는 IF 탐지&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 호버링할 &lt;em papago-id=&quot;1-1&quot;&gt;때&lt;/em&gt; 호출할 작업이 아니라 요소가 현재 호버링 중인지 &lt;em papago-id=&quot;1-3&quot;&gt;여부&lt;/em&gt;를 알 수 있는 방법을 찾고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$('#elem').mouseIsOver(); // returns true or false
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이를 수행하는 jQuery 방법이 있습니까?&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;strong papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;원래(및 정답) 답변:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용가능&lt;/font&gt;&lt;/font&gt;&lt;code&gt;is()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;셀렉터를 확인합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;:hover&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var isHovered = $('#elem').is(&quot;:hover&quot;); // returns true or false
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예: http://jsfiddle.net/Meligy/2kyaJ/3/&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(선택기가 ONE element max와 일치할 경우에만 작동합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;자세한 내용은 편집 3 참조)&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;10-0&quot;&gt;Edit&lt;/strong&gt; 1 &lt;strong papago-id=&quot;10-0&quot;&gt;(2013년 6월&lt;/strong&gt; 29일&lt;strong papago-id=&quot;10-0&quot;&gt;):&lt;/strong&gt; (jQuery 1.9.x에만 해당, 1.10+에서 작동하므로 다음 Edit 2 참조)&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 답변은 질문에 대한 답변 당시 최고의 해결책이었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 ':hover' 셀렉터는 다음과 함께 제거되었습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.hover()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;jQuery 1.9.x에서 메서드 제거.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;흥미롭게도 &quot;allicarn&quot;이 최근에 한 대답은 사용이 가능하다는 것을 보여줍니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;:hover&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;CSS 셀렉터(vs)로서&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;선택기로 접두사를 붙이면 지글지글)&lt;/font&gt;&lt;/font&gt;&lt;code&gt;$($(this).selector + &quot;:hover&quot;).length &amp;gt; 0&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 효과가 있는 것 같습니다!&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 다른 답변에 언급된 &lt;a href=&quot;http://cherne.net/brian/resources/jquery.hoverIntent.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;16-1&quot;&gt;hoverIntent&lt;/a&gt; 플러그인도 매우 좋아 보입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;편집 2 (2013년 9월 21일):&lt;/font&gt;&lt;/strong&gt; &lt;code&gt;.is(&quot;:hover&quot;)&lt;/code&gt; &lt;strong papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;작동하다&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 원래 게시했던 방식을 본 또 다른 댓글을 토대로,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.is(&quot;:hover&quot;)&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 사실 jQuery에서 아직도 일하고 있어요.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;jQuery 1.7.x에서 작동했습니다.&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;1.9.1.에 작동이 멈췄고, 누군가 나에게 보고했을 때, 그리고 우리는 모두 그것이 jQuery가 그것을 제거하는 것과 관련이 있다고 생각했습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;hover&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;해당 버전의 이벤트 처리에 대한 별칭입니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;jQuery 1.10.1과 2.0.2(아마도 2.0.x)에서 다시 작동했는데, 이는 1.9.x의 장애가 이전 시점에서 생각했던 것처럼 의도적인 동작이 아니었거나 버그였기 때문임을 시사합니다.&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이를 특정 jQuery 버전에서 테스트하려면 이 답변의 처음에 JSFidle 예제를 열고 원하는 jQuery 버전으로 변경한 후 &quot;Run&quot;을 클릭하면 됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;호버에서 색상이 바뀌면 작동합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/p&gt; 
&lt;h3 papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;편집 3 (2014년 3월 9일):&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;jQuery 시퀀스에 단일 요소가 포함된 경우에만 작동합니다.&lt;/font&gt;&lt;/h3&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;@Wilmer가 댓글로 보여준 것처럼, 그는 jQuery 버전에 대해서도 작동하지 않는 피들을 가지고 있고 여기 있는 다른 사람들도 그것을 테스트했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 그의 사건에 대해 특별한 점이 무엇인지 찾으려 했을 때, 저는 그가 여러 요소를 한 번에 확인하려고 한다는 것을 알아차렸습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이거 던지더라고요.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Uncaught Error: Syntax error, unrecognized expression: unsupported pseudo: hover&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;30&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러니까, 그의 바이올린으로 작업하면, 이것은 작동하지 &lt;strong papago-id=&quot;30-1&quot;&gt;않습니다&lt;/strong&gt;.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var isHovered = !!$('#up, #down').filter(&quot;:hover&quot;).length;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;31&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;31-1&quot;&gt;이것&lt;/strong&gt;이 작동하는 동안:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var isHovered = !!$('#up,#down').
                    filter(function() { return $(this).is(&quot;:hover&quot;); }).length;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 원래 선택기가 하나의 요소만 일치하는 경우 또는 호출한 경우와 같이 단일 요소를 포함하는 jQuery 시퀀스에서도 작동합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.first()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;결과 등에 관하여&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;34&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 또한 &lt;a href=&quot;http://gurustop.net&quot; papago-id=&quot;34-1&quot; rel=&quot;noreferrer&quot;&gt;나&lt;/a&gt;의 자바스크립트 +&lt;a href=&quot;http://gurustop.net&quot; papago-id=&quot;34-1&quot; rel=&quot;noreferrer&quot;&gt; 웹 개발 팁 &lt;/a&gt;&amp;amp; &lt;a href=&quot;http://gurustop.net&quot; papago-id=&quot;34-1&quot; rel=&quot;noreferrer&quot;&gt;리소스 뉴스레터&lt;/a&gt;에서도 참조할 수 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;35&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;용도:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var hovered = $(&quot;#parent&quot;).find(&quot;#element:hover&quot;).length;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;36&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;jQuery 1.9+&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;37&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;jQuery 1.9에서는 작동하지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;user2444818의 답변을 바탕으로 이 플러그인을 만들었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;jQuery.fn.mouseIsOver = function () {
    return $(this).parent().find($(this).selector + &quot;:hover&quot;).length &amp;gt; 0;
}; 
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;a href=&quot;http://jsfiddle.net/Wp2v4/1/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;38&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;http://jsfiddle.net/Wp2v4/1/&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;JQuery 2.x에서 수락된 답변이 제게 맞지 않았습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.is(&quot;:hover&quot;)&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모든 호출에 대해 false를 반환합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;41&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;결국 다음과 같은 효과가 있는 간단한 솔루션을 사용하게 되었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;function isHovered(selector) {

    return $(selector+&quot;:hover&quot;).length &amp;gt; 0

}
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;42&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;호버에 플래그 설정:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var over = false;
$('#elem').hover(function() {
  over = true;
},
function () {
  over = false;
});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;43&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그럼 깃발만 확인해주세요.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;44&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 주제에 대해 잠시 작업한 후 추가할 몇 가지 업데이트:&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li papago-id=&quot;45&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;jQuery 1.9.1에서 .is(&quot;:hover&quot;) 브레이크가 있는 모든 솔루션&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;46&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;마우스가 요소 위에 여전히 있는지 확인하는 가장 가능성 있는 이유는 이벤트가 서로 발생하지 않도록 시도하기 위해서입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어, 마우스 입력 이벤트가 완료되기도 전에 마우스 휴가가 트리거되고 완료되는 문제가 있었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;물론 이것은 쥐의 빠른 움직임 때문이었습니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p papago-id=&quot;47&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;우리는 hoverIntent https://github.com/briancherne/jquery-hoverIntent 을 사용하여 이 문제를 해결했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;기본적으로 마우스 움직임이 더 의도적인 경우 트리거합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;(한 가지 주의할 점은 요소에 들어가는 마우스와 나가는 마우스 모두에서 트리거된다는 것입니다. - 한 개의 패스 컨스트럭터만 사용하려면 빈 함수를 사용합니다.)&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;48&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모든 주변 요소에서 요소를 필터링할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;문제 코드:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;element.filter(':hover')
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;49&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;코드 저장:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;jQuery(':hover').filter(element)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;50&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;부울을 반환하는 방법:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;jQuery(':hover').filter(element).length===0
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;51&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;@모하메드의 답변을 확대합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;em papago-id=&quot;51-1&quot;&gt;약간&lt;/em&gt;의 캡슐화를 사용할 수도 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;52&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음과 같은 경우:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;jQuery.fn.mouseIsOver = function () {
    if($(this[0]).is(&quot;:hover&quot;))
    {
        return true;
    }
    return false;
}; 
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;53&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음과 같이 사용:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;#elem&quot;).mouseIsOver();//returns true or false
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;54&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Forked the fiddle: http://jsfiddle.net/cgWdF/1/&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;55&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;첫 반응은 좋은데 저한테는 이상합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;마우스의 페이지 로드 직후를 확인하려고 할 때, 마우스가 작동하려면 최소 500밀리초 이상의 지연 시간을 두어야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(window).on('load', function() {
    setTimeout(function() {
        $('img:hover').fadeOut().fadeIn();
    }, 500);
});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;a href=&quot;http://codepen.io/molokoloco/pen/Grvkx/&quot; rel=&quot;nofollow&quot; papago-id=&quot;56&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;http://codepen.io/molokoloco/pen/Grvkx/&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://api.jquery.com/hover/&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;57&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;https://api.jquery.com/hover/&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;58&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;38행의 비동기 함수:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$( &quot;.class#id&quot; ).hover(function() {
  Your javascript
});
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;59&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;키나쿠타의 답에 따라 깃발을 설정하는 것은 합리적인 것 같습니다. 듣는 사람을 몸에 올려 특정 순간에 떠다니는 요소가 있는지 확인할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;60&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 하위 노드를 어떻게 처리하길 원하십니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;요소가 현재 맴도는 요소의 상위 요소인지 확인해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;script&amp;gt;

var isOver = (function() {
  var overElement;
  return {

    // Set the &quot;over&quot; element
    set: function(e) {
      overElement = e.target || e.srcElement;
    },

    // Return the current &quot;over&quot; element
    get: function() {
      return overElement;    
    },

    // Check if element is the current &quot;over&quot; element
    check: function(element) {
      return element == overElement;
    },

    // Check if element is, or an ancestor of, the 
    // current &quot;over&quot; element
    checkAll: function(element) {
      while (overElement.parentNode) {
         if (element == overElement) return true;
         overElement = overElement.parentNode;
      }
      return false;
    }
  };
}());


// Check every second if p0 is being hovered over
window.setInterval( function() {
  var el = document.getElementById('p0');
  document.getElementById('msg').innerHTML = isOver.checkAll(el);
}, 1000);


&amp;lt;/script&amp;gt;

&amp;lt;body onmouseover=&quot;isOver.set(event);&quot;&amp;gt;
  &amp;lt;div&amp;gt;Here is a div
    &amp;lt;p id=&quot;p0&quot;&amp;gt;Here is a p in the div&amp;lt;span&amp;gt; here is a span in the p&amp;lt;/span&amp;gt; foo bar &amp;lt;/p&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;div id=&quot;msg&quot;&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;There're so many ways this can be achieved. I personally don't like styling elements directly, I'd rather add the style from css, makes things easier when trying to override or change them.

&amp;lt;style type=&quot;text/css&quot;&amp;gt;.red-bg { background: red; }&amp;lt;/style&amp;gt;

$('#my_element').hover(function() {
    $(this).parent().toggleClass('red-bg');
});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;61&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;오어&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$('#my_element').hover(function() {
    $(this).parent().addClass('red-bg');
}, function() {
    $(this).parent().removeClass('red-bg');
});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;62&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또는 마우스 입력 및 마우스 이탈을 사용합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(document).on('mouseenter', '#my_element', function() {
    $(this).parent().addClass('red-bg');
});

$(document).on('mouseenter', '#my_element', function() {
    $(this).parent().removeClass('red-bg');
});
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;63&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/8981463/detect-if-hovering-over-element-with-jquery&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>jquery</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1310</guid>
      <comments>https://bestprogram.tistory.com/1310#entry1310comment</comments>
      <pubDate>Tue, 24 Oct 2023 21:29:33 +0900</pubDate>
    </item>
    <item>
      <title>jQuery를 사용하여 미립자 링크 클릭 시 부트스트랩 탐색 탭의 특정 탭을 여는 방법?</title>
      <link>https://bestprogram.tistory.com/1309</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;jQuery를 사용하여 미립자 링크 클릭 시 부트스트랩 탐색 탭의 특정 탭을 여는 방법?&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 jquery와 bootstrap을 처음 접하니까, 제 실수를 고려해주세요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;로그인 및 등록을 위한 부트스트랩 모드를 만들었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기에는 로그인 및 등록이라고 하는 두 개의 nav-tab이 포함되어 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;동일한 Modal 창이 팝업되되 Modal 창 안에 다른 탭을 표시하는 두 개의 버튼이 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;각 탭에는 다수의 입력이 포함된 양식이 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;내 문제는 '로그인' 버튼을 클릭하면 모드에서 로그인 탭이 열리고 페이지에서 '등록' 버튼을 클릭하면 등록 탭이 열리는 모드에서 팝업이 표시되는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모달이 열리는 링크는 2개입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;div class=&quot;header-login-li&quot; style=&quot;background-color:gray;float:left;width:100px;height:60px;&quot;&amp;gt;
&amp;lt;a data-toggle=&quot;modal&quot; href=&quot;#regestration&quot; class=&quot;header-register-a&quot; &amp;gt;
&amp;lt;big&amp;gt;
&amp;lt;font color=&quot;white&quot; class=&quot;header-register-font&quot;&amp;gt;&amp;lt;center style=&quot;margin-top:20px;&quot;&amp;gt;Login &amp;lt;i class=&quot;icon-chevron-down&quot; style=&quot;font-size:20px&quot;&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;
&amp;lt;/big&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;

&amp;lt;div class=&quot;header-register-li&quot; style=&quot;background-color:green;float:right;margin-right:-15px;width:130px;height:60px;&quot;&amp;gt;
&amp;lt;a data-toggle=&quot;modal&quot; href=&quot;#regestration&quot; class=&quot;header-register-a&quot; &amp;gt;
&amp;lt;big&amp;gt;
&amp;lt;font color=&quot;white&quot; class=&quot;header-register-font&quot;&amp;gt;&amp;lt;center style=&quot;margin-top:20px;&quot;&amp;gt;Register&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;
&amp;lt;/big&amp;gt;&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;탭 코드와 그 내용은 다음과 같습니다(여기서는 불필요한 코드를 피하고 있습니다).&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; &amp;lt;div class=&quot;tabbable&quot; &amp;gt;
      &amp;lt;ul class=&quot;nav nav-tabs&quot; &amp;gt;&amp;lt;!--tabs--&amp;gt;
        &amp;lt;li class=&quot;active&quot; style=&quot;position:absolute;margin-left:0px;&quot; id=&quot;logintab&quot;&amp;gt;
        &amp;lt;a href=&quot;#pane_login&quot; data-toggle=&quot;tab&quot;&amp;gt;Login&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
        &amp;lt;li style=&quot;margin-left:70px;&quot; id=&quot;reg_tab&quot; &amp;gt;&amp;lt;a href=&quot;#pane_reg&quot; data-toggle=&quot;tab&quot;&amp;gt;Registration&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;

      &amp;lt;/ul&amp;gt;
      &amp;lt;div class=&quot;tab-content&quot;&amp;gt;&amp;lt;!--login tab content--&amp;gt;
         &amp;lt;div id=&quot;pane_login&quot; class=&quot;tab-pane active&quot;&amp;gt;
             &amp;lt;form id=&quot;login-form&quot; target=&quot;login-signup-iframe&quot; method=&quot;post&quot; action=&quot;#&quot; name=&quot;login-form&quot;&amp;gt;

              &amp;lt;/form&amp;gt;

        &amp;lt;/div&amp;gt;&amp;lt;!--/pane_login--&amp;gt;

        &amp;lt;div id=&quot;pane_reg&quot; class=&quot;tab-pane&quot;&amp;gt;&amp;lt;!--registration tab content--&amp;gt;
           &amp;lt;form id=&quot;regestration-form&quot; target=&quot;login-signup-iframe&quot; method=&quot;post&quot; action=&quot;#&quot; name=&quot;regestration-form&quot;&amp;gt;

            &amp;lt;/form&amp;gt;
         &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;&amp;lt;!-- /.tab-content --&amp;gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- /.tabbable --&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 jquery를 통해서 쉽게 할 수 있다고 생각합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 나는 그것을 정확히 어떻게 하는지 모릅니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러니 누구든 제 문제를 해결할 수 있도록 도와주세요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;미리 감사드립니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.nav-tabs에서 셀렉터를 적용하면 작동하는 것 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;6-0&quot;&gt;HTML은&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;ul class=&quot;nav nav-tabs&quot;&amp;gt;
    &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#aaa&quot; data-toggle=&quot;tab&quot;&amp;gt;AAA&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
    &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#bbb&quot; data-toggle=&quot;tab&quot;&amp;gt;BBB&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
    &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#ccc&quot; data-toggle=&quot;tab&quot;&amp;gt;CCC&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;div class=&quot;tab-content&quot; id=&quot;tabs&quot;&amp;gt;
    &amp;lt;div class=&quot;tab-pane&quot; id=&quot;aaa&quot;&amp;gt;...Content...&amp;lt;/div&amp;gt;
    &amp;lt;div class=&quot;tab-pane&quot; id=&quot;bbb&quot;&amp;gt;...Content...&amp;lt;/div&amp;gt;
    &amp;lt;div class=&quot;tab-pane&quot; id=&quot;ccc&quot;&amp;gt;...Content...&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;7-0&quot;&gt;대본은&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-js prettyprint-override&quot;&gt;&lt;code&gt;$(document).ready(function(){
  activaTab('aaa');
});

function activaTab(tab){
  $('.nav-tabs a[href=&quot;#' + tab + '&quot;]').tab('show');
};
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;a href=&quot;http://jsfiddle.net/pThn6/80/&quot; papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;http://jsfiddle.net/pThn6/80/&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;b papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;HTML:&lt;/font&gt;&lt;/b&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;a href=&quot;PageName.php#tabID&quot;&amp;gt;link to other page tab&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;b papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;자바스크립트:&lt;/font&gt;&lt;/b&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;window.onload = function(){  

    var url = document.location.toString();
    if (url.match('#')) {
        $('.nav-tabs a[href=&quot;#' + url.split('#')[1] + '&quot;]').tab('show');
    }

    //Change hash for page-reload
    $('.nav-tabs a[href=&quot;#' + url.split('#')[1] + '&quot;]').on('shown', function (e) {
        window.location.hash = e.target.hash;
    }); 
} 
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;탭 ID를 통해서도 접근할 수 있지만, 해당 ID는 동일한 페이지에 대해 고유합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기에 동일한 예가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$('#product_detail').tab('show');
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;위의 예에서&lt;/font&gt;&lt;/font&gt;&lt;code&gt;#product_details&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;가&lt;/font&gt;&lt;/font&gt;&lt;code&gt;nav&lt;/code&gt; &lt;code&gt;tab&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이드&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;안녕하세요, 이거 해보세요!&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;/p&gt;
&lt;div class=&quot;snippet&quot; data-lang=&quot;js&quot; data-hide=&quot;false&quot; data-console=&quot;true&quot; data-babel=&quot;false&quot;&gt; 
 &lt;div class=&quot;snippet-code&quot;&gt; 
  &lt;pre class=&quot;snippet-code-js lang-js prettyprint-override&quot;&gt;&lt;code&gt;$('a[data-toggle=&quot;tab&quot;]').on('shown.bs.tab', function(e) {
  // save current clicked tab in local storage does not work in Stacksnippets
  // localStorage.setItem('lastActiveTab', $(this).attr('href'));
});
//get last active tab from local storage
var lastTab = &quot;#profile&quot;; // localStorage.getItem('lastActiveTab');
console.log(lastTab + &quot;tab was last active&quot;)
if (lastTab) {
  $('[href=&quot;' + lastTab + '&quot;]').tab('show');
}&lt;/code&gt;&lt;/pre&gt; 
  &lt;pre class=&quot;snippet-code-html lang-html prettyprint-override&quot;&gt;&lt;code&gt;&amp;lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css&quot;&amp;gt;
&amp;lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;

&amp;lt;div class=&quot;container&quot;&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;!-- Nav tabs --&amp;gt;
    &amp;lt;ul class=&quot;nav nav-tabs&quot; role=&quot;tablist&quot;&amp;gt;
      &amp;lt;li role=&quot;presentation&quot; class=&quot;active&quot;&amp;gt;&amp;lt;a href=&quot;#home&quot; aria-controls=&quot;home&quot; role=&quot;tab&quot; data-toggle=&quot;tab&quot;&amp;gt;Home&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
      &amp;lt;li role=&quot;presentation&quot;&amp;gt;&amp;lt;a href=&quot;#profile&quot; aria-controls=&quot;profile&quot; role=&quot;tab&quot; data-toggle=&quot;tab&quot;&amp;gt;Profile&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
      &amp;lt;li role=&quot;presentation&quot;&amp;gt;&amp;lt;a href=&quot;#messages&quot; aria-controls=&quot;messages&quot; role=&quot;tab&quot; data-toggle=&quot;tab&quot;&amp;gt;Messages&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
      &amp;lt;li role=&quot;presentation&quot;&amp;gt;&amp;lt;a href=&quot;#settings&quot; aria-controls=&quot;settings&quot; role=&quot;tab&quot; data-toggle=&quot;tab&quot;&amp;gt;Settings&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
    &amp;lt;/ul&amp;gt;

    &amp;lt;!-- Tab panes --&amp;gt;
    &amp;lt;div class=&quot;tab-content&quot;&amp;gt;
      &amp;lt;div role=&quot;tabpanel&quot; class=&quot;tab-pane active&quot; id=&quot;home&quot;&amp;gt;Home&amp;lt;/div&amp;gt;
      &amp;lt;div role=&quot;tabpanel&quot; class=&quot;tab-pane&quot; id=&quot;profile&quot;&amp;gt;Profile&amp;lt;/div&amp;gt;
      &amp;lt;div role=&quot;tabpanel&quot; class=&quot;tab-pane&quot; id=&quot;messages&quot;&amp;gt;Message&amp;lt;/div&amp;gt;
      &amp;lt;div role=&quot;tabpanel&quot; class=&quot;tab-pane&quot; id=&quot;settings&quot;&amp;gt;Settings&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;

  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;/p&gt;&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;위의 답변에 감사드립니다. 여기 지금 작동하는 제 jQuery 코드가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;      $(&quot;.header-login-li&quot;).click(function(){
        activaTab('pane_login');                
      });

      $(&quot;.header-register-li&quot;).click(function(){
        activaTab('pane_reg');
        $(&quot;#reg_log_modal_header_text&quot;).css()
      });

      function activaTab(tab){
        $('.nav-tabs a[href=&quot;#' + tab + '&quot;]').tab('show');
      };
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;    function updateURL(url_params) {
        if (history.pushState) {
        var newurl = window.location.protocol + &quot;//&quot; + window.location.host + window.location.pathname + '?' + url_params;
        window.history.replaceState({path:newurl},'',newurl);
        }
    }

    function setActiveTab(tab) {
        $('.nav-tabs li').removeClass('active');
        $('.tab-content .tab-pane').removeClass('active');

        $('a[href=&quot;#tab-' + tab + '&quot;]').closest('li').addClass('active');
        $('#tab-' + tab).addClass('active');
    }

    // Set active tab
    $url_params = new URLSearchParams(window.location.search);


    // Get active tab and remember it
    $('a[data-toggle=&quot;tab&quot;]')
        .on('click', function() {
        $href = $(this).attr('href')
        $active_tab = $href.replace('#tab-', '');

        $url_params.set('tab', $active_tab);
        updateURL($url_params.toString());
    });

    if ($url_params.has('tab')) {
        $tab = $url_params.get('tab');
        $tab = '#tab-' + $tab;
        $myTab = JSON.stringify($tab);
        $thisTab = $('.nav-tabs a[href=' + $myTab  +']');
        $('.nav-tabs a[href=' + $myTab  +']').tab('show');
    }
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 제 사이트에서 사용했던 php+css 솔루션을 제안해도 될까요?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;간단하지만 문제가 없습니다 :)&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;url to page:&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&amp;lt;a href=&quot;page.php?tab=menu1&quot;&amp;gt;link to menu1&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;?
$tab = $_GET['tab'];
?&amp;gt;
&amp;lt;ul class=&quot;nav nav-tabs&quot;&amp;gt;
  &amp;lt;li class=&quot;&amp;lt;? if ($tab=='menu1' OR $tab=='menu2') 
{
echo &quot;&quot;;
} 
else {
echo &quot;active&quot;;
}
?&amp;gt;&quot;&amp;gt;&amp;lt;a data-toggle=&quot;tab&quot; href=&quot;#home&quot;&amp;gt;Prodotti&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
  &amp;lt;li class=&quot;&amp;lt;? if ($tab=='menu1') 
{
echo &quot;active&quot;;
} 
?&amp;gt;&quot;&amp;gt;&amp;lt;a data-toggle=&quot;tab&quot; href=&quot;#menu1&quot;&amp;gt;News&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
  &amp;lt;li class=&quot;&amp;lt;? if ($tab=='menu2') 
{
echo &quot;active&quot;;
} 
?&amp;gt;&quot;&amp;gt;&amp;lt;a data-toggle=&quot;tab&quot; href=&quot;#menu2&quot;&amp;gt;Gallery&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;

&amp;lt;div class=&quot;tab-content&quot;&amp;gt;
  &amp;lt;div id=&quot;home&quot; class=&quot;tab-pane fade &amp;lt;? if ($tab=='menu1' OR $tab=='menu2') 
{
echo &quot;&quot;;
} 
else {
echo &quot;in active&quot;;
}
?&amp;gt;
&quot;&amp;gt;
    &amp;lt;h3&amp;gt;Prodotti&amp;lt;/h3&amp;gt;
    &amp;lt;p&amp;gt;Contenuto della pagina, zona prodotti&amp;lt;/p&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;div id=&quot;menu1&quot; class=&quot;tab-pane fade &amp;lt;? if ($tab=='menu1') 
{
echo &quot;in active&quot;;
} 
?&amp;gt;&quot;&amp;gt;
    &amp;lt;h3&amp;gt;News&amp;lt;/h3&amp;gt;
    &amp;lt;p&amp;gt;Qui ci saranno le news.&amp;lt;/p&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;div id=&quot;menu2&quot; class=&quot;tab-pane fade &amp;lt;? if ($tab=='menu2') 
{
echo &quot;in active&quot;;
} 
?&amp;gt;&quot;&amp;gt;
    &amp;lt;h3&amp;gt;Gallery&amp;lt;/h3&amp;gt;
    &amp;lt;p&amp;gt;Qui ci sarà la gallery&amp;lt;/p&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 이 사건을 처리하기 위해 사용해온 이 토막글을 썼습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;평이한 자바스크립트로 되어 있어 jQuery가 없는 bootsrap5와 같은 경우에도 적합합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;script type='text/javascript'&amp;gt;
    window.onhashchange=hashTriggerTab;
    window.onload=hashTriggerTab;
    
    function hashTriggerTab(){
        var current_hash=window.location.hash;
        if(current_hash.substring(0,1)=='#')current_hash=current_hash.substring(1);
        if(current_hash!=''){
            var trigger=document.querySelector('.nav-tabs a[href=&quot;#'+current_hash+'&quot;]');
            if(trigger)trigger.click();
        }
    }
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 기능을 사용하면 다음과 같이 두 가지를 모두 동일한 페이지에 연결할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;a href='#tabId'&amp;gt;Link Any Tab&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또는 다음과 같은 외부 페이지에서:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;a href='newpage.php#tabId'&amp;gt;Link From External&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제대로 이해했는지는 모르겠지만 &lt;strong papago-id=&quot;23-1&quot;&gt;부트스트랩 &lt;/strong&gt;탭&lt;strong papago-id=&quot;23-1&quot;&gt; 메뉴에서 링크를 여는&lt;/strong&gt; 데 사용하는 토막글은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;h2 papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;HTML&lt;/font&gt;&lt;/h2&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;ul class=&quot;nav nav-tabs&quot;&amp;gt;
  &amp;lt;li class=&quot;active&quot;&amp;gt;&amp;lt;a href=&quot;#foo&quot; data-toggle=&quot;tab&quot;&amp;gt;Foo&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#bar&quot; data-toggle=&quot;tab&quot;&amp;gt;Bar&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;&amp;lt;a href=&quot;baz.html&quot; class=&quot;external&quot;&amp;gt;Baz&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;

&amp;lt;div class=&quot;tab-content&quot;&amp;gt;
  &amp;lt;div class=&quot;tab-pane active&quot; id=&quot;foo&quot;&amp;gt;Foo&amp;lt;/div&amp;gt;
  &amp;lt;div class=&quot;tab-pane&quot; id=&quot;bar&quot;&amp;gt;Bar&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2 papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;자바스크립트&lt;/font&gt;&lt;/h2&gt; 
&lt;pre&gt;&lt;code&gt;$('.nav a:not(&quot;.external&quot;)').click(function (e) {
  e.preventDefault()
  $(this).tab('show')
})
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/19589053/how-to-open-specific-tab-of-bootstrap-nav-tabs-on-click-of-a-particuler-link-usi&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>jquery</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1309</guid>
      <comments>https://bestprogram.tistory.com/1309#entry1309comment</comments>
      <pubDate>Tue, 24 Oct 2023 21:29:24 +0900</pubDate>
    </item>
    <item>
      <title>excel xml 셀 속성 값은 무엇을 의미합니까?</title>
      <link>https://bestprogram.tistory.com/1308</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;excel xml 셀 속성 값은 무엇을 의미합니까?&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Excel 스프레드시트의 xml을 보면 sheetData/row 아래에 다음 셀이 표시됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;c r=&quot;T1&quot; s=&quot;23&quot; t=&quot;s&quot;&amp;gt;&amp;lt;v&amp;gt;17&amp;lt;/v&amp;gt;&amp;lt;/c&amp;gt;
&amp;lt;c r=&quot;AP1&quot; s=&quot;98&quot;&amp;gt;&amp;lt;v&amp;gt;28&amp;lt;/v&amp;gt;&amp;lt;/c&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;스프레드시트를 보면 첫 번째 셀이 문자열이고(공유 문자열 파일에서 찾을 수 있음), 두 번째 셀이 &quot;28&quot; 값이라는 것을 알 수 있습니다. 여기서 셀이 속성을 가진 경우 가정합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;t=&quot;s&quot;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 문자열입니다. 그렇지 않으면 값입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이거 맞는건가요?&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;r, s, t는 'row', 'style', 'type'의 약자라고 추측하지만, 누가 그들의 의미와 가능한 가치가 무엇인지 설명해 줄 수 있을까요?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어, t=&quot;str&quot;이라는 속성을 가진 일부 셀이 보이는데, 그것은 &quot;s&quot;와 같은 것입니까, 아니면 특별한 것을 의미합니까?&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;excel xml 파일에 대한 설명서나 사양을 찾을 수가 없어서 그런 것이 있다면 그 방향을 가리키는 것이 도움이 될 것 같습니다.&lt;/font&gt;&lt;/p&gt;&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;r&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;= 참조&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;s&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;= 스타일 색인&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;t&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;= 셀 데이터 유형&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;에 대한 문서.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Cell&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;수업이 &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/office/documentformat.openxml.spreadsheet.cell.aspx&quot; rel=&quot;noreferrer&quot; papago-id=&quot;6-1&quot;&gt;있습니다&lt;/a&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;가능한 셀 데이터 유형은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;b&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;- 부울의&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;d&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;- ISO8601 형식의 날짜&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;e&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;- 오류를&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;inlineStr&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;- 공유 문자열 테이블을 사용하지 않는 문자열&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;n&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;- 수를&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;s&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;- 공유 문자열&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;str&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;- 공식 문자열&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 값은 &lt;a href=&quot;http://www.ecma-international.org/publications/standards/Ecma-376.htm&quot; rel=&quot;noreferrer&quot; papago-id=&quot;19-1&quot;&gt;여기&lt;/a&gt;에서 확인할 수 있는 ECMA-376 표준의 섹션 18.18.11에 있습니다(특히 ECMA-376 4판 파트 1 다운로드의 PDF 파일 2442-2443 페이지에 있음).&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;20&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;해당 PDF 파일(페이지 3912, 라인 2301)에서 XML 스키마를 나중에 보면,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;t&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;21&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;속성은 선택 사항이며 기본값은&lt;/font&gt;&lt;/font&gt;&lt;code&gt;n&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;- 수, 즉 수&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;hr&gt; 
&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;2016년 ECMA-476 사양의 제5판 1부가 출시되었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제 5판의 동등한 페이지 참조: ST_CellType 문서에 대한 2451페이지 및 XML 스키마의 ST_CellType 항목에 대한 3928페이지, 2301줄&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://learn.microsoft.com/en-us/office/open-xml/open-xml-sdk&quot; papago-id=&quot;24-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;Open XML SDK&lt;/a&gt;를 살펴보십시오&lt;a href=&quot;https://learn.microsoft.com/en-us/office/open-xml/open-xml-sdk&quot; papago-id=&quot;24-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;.&lt;/a&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것은 당신이 찾고 있는 것을 위한 좋은 출발점입니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/18334314/what-do-excel-xml-cell-attribute-values-mean&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>Excel</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1308</guid>
      <comments>https://bestprogram.tistory.com/1308#entry1308comment</comments>
      <pubDate>Tue, 24 Oct 2023 21:29:14 +0900</pubDate>
    </item>
    <item>
      <title>MySQL 5.7.27에서 REGEXP_REFACE() 대안 찾기</title>
      <link>https://bestprogram.tistory.com/1307</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;MySQL 5.7.27에서 REGEXP_REFACE() 대안 찾기&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;작업 중인 프로젝트 중 하나에 대해 다음과 같은 질문을 &lt;strong papago-id=&quot;1-1&quot;&gt;했습니다(On MariaDB&lt;/strong&gt; 10.1&lt;strong papago-id=&quot;1-1&quot;&gt;.37&lt;/strong&gt;).&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SELECT * FROM table WHERE REGEXP_REPLACE(substring_index(product,' ',1), '[^a-zA-Z ]', '')='VALUE'
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;목표는 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;1) from value select part to first space: 예제&lt;/font&gt;&lt;/font&gt;&lt;code&gt;VALUE1 SOME OTHER&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;갖기 위해&lt;/font&gt;&lt;/font&gt;&lt;code&gt;VALUE1&lt;/code&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;2) 숫자와 다른 기호를 제거하려면: 예제&lt;/font&gt;&lt;/font&gt;&lt;code&gt;VALUE1&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;갖기 위해&lt;/font&gt;&lt;/font&gt;&lt;code&gt;VALUE&lt;/code&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 위의 쿼리는 필요에 따라 효과를 발휘합니다!&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;문제는 클라이언트 측에 &lt;strong papago-id=&quot;8-1&quot;&gt;MySQL 5.7.27&lt;/strong&gt;이 있고 우리가 알고 있듯이 &lt;strong papago-id=&quot;8-3&quot;&gt;REGEXP_REFACE()&lt;/strong&gt;가 8+ 버전의 MySQL에 들어왔다는 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;지금은 클라이언트를 MySQL 8+로 업그레이드하거나 MariaBD로 마이그레이션할 수 있는 옵션이 &lt;strong papago-id=&quot;9-1&quot;&gt;없으므로 MySQL 5.7&lt;/strong&gt;.27에서 동일한 결과를 어떻게 얻을 수 있는지가 문제입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;나는 검색을 시도했고 시도했습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;WHERE substring_index(product,' ',1) REGEXP '^a-zA-Z' = 'VALUE'&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 REGEXP는 1 또는 0을 반환하며, 가치가 필요하기 때문에 제게 적합한 것은 아닙니다. …&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;도와줄 사람?&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;미리 감사드립니다!&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제 동료들이 MYSQL 5.5에 있기 때문에 REGEXP_REFACE()도 없기 때문에 해결책을 찾고 있었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;stackOverFlow에서 한 개의 char만 교체할 수 있는 솔루션을 쉽게 찾을 수 있지만 문자열을 찾을 수 없어 이 코드를 만들었습니다. 누군가에게 도움이 될 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SET @string = 'I love shop it is a terrific shop, I love eveything about it';
SET @shop_code = 'shop';

SET @shop_date = CONCAT(@shop_code, '__', DATE_FORMAT(NOW(), '%Y_%m_%d__%Hh%im%ss'));

SET @part1 = SUBSTRING_INDEX(@string, @shop_code, 1);

SET @shop_nb = ROUND( (LENGTH(@string) - LENGTH(REPLACE(@string, @shop_code,''))) / LENGTH(@shop_code) );

SET @part2 = SUBSTRING_INDEX(@string, @shop_code, -@shop_nb);

SET @string = CONCAT(@part1, @shop_date, @part2);

SELECT @string;

&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 최종적인 답변이 아니며, 만약 누군가가 제가 질문한 것에 대한 좋은 또는 더 가까운 예를 가지고 있다면, 먼저 가서 답변을 게시하세요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 그것을!&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 한 것은 그냥 사용한 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;LIKE&lt;/code&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SELECT * FROM table WHERE substring_index(product,' ',1) LIKE 'VALUE%'
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;어떤 경우에는 잘못된 데이터를 보여줄 수도 있다는 것을 알고 있지만, 제가 필요로 하는 이 방법은 받아들일 수 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;MySQL 5.7에서 작동합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음 예는 URL의 쿼리 문자열에서 UTM_Source 매개 변수 값을 추출하는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; case when url like '%utm_source%' then
       substring(
       url,
      locate('utm_source=',url)+char_length('utm_source='),
      case when locate('&amp;amp;',url,locate('utm_source=',url)) = 0 then char_length(url)+1 else locate('&amp;amp;',url,locate('utm_source=',url)) end - (locate('utm_source=',url)+char_length('utm_source=')) 
      ) else NULL end utm_source; 
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/59319704/looking-for-regexp-replace-alternative-on-mysql-5-7-27&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>mariadb</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1307</guid>
      <comments>https://bestprogram.tistory.com/1307#entry1307comment</comments>
      <pubDate>Tue, 24 Oct 2023 21:29:07 +0900</pubDate>
    </item>
    <item>
      <title>Resttemplate getForEntity - 헤더 전달</title>
      <link>https://bestprogram.tistory.com/1306</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Resttemplate getForEntity - 헤더 전달&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;getForEntity 메서드의 일부로 헤더를 설정할 수 있습니까? 아니면 교환을 사용해야 합니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;getForEntity 호출의 일부로 oauth 헤더를 설정하려고 합니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용가능&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.exchange&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;ResponseEntity&amp;lt;YourResponseObj&amp;gt; entity = new TestRestTemplate().exchange(
                &quot;http://localhost:&quot; + port + &quot;/youruri&quot;, HttpMethod.GET, new HttpEntity&amp;lt;Object&amp;gt;(headers),
                YourResponseObj.class);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;전체 주닛 샘플:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class ReferenceTablesControllerTests {

    @LocalServerPort
    private int port;

    @Test
    public void getXxxx() throws Exception {
        MultiValueMap&amp;lt;String, String&amp;gt; headers = new LinkedMultiValueMap&amp;lt;&amp;gt;();
        headers.add(&quot;Content-Type&quot;, &quot;application/json&quot;);
        headers.add(&quot;Authorization&quot;, &quot;tokenxxx&quot;);
        ResponseEntity&amp;lt;YourResponseObj&amp;gt; entity = new TestRestTemplate().exchange(
                &quot;http://localhost:&quot; + port + &quot;/youruri&quot;, HttpMethod.GET, new HttpEntity&amp;lt;Object&amp;gt;(headers),
                YourResponseObj.class);
        Assert.assertEquals(HttpStatus.OK, entity.getStatusCode());
        Assert.assertEquals(&quot;foo&quot;, entity.getBody().getFoo());
    }

}
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/43900699/resttemplate-getforentity-pass-headers&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>Spring</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1306</guid>
      <comments>https://bestprogram.tistory.com/1306#entry1306comment</comments>
      <pubDate>Tue, 24 Oct 2023 21:29:00 +0900</pubDate>
    </item>
    <item>
      <title>WordPress - 오류 로그 타임스탬프 시간대를 로컬로 설정하려면 어떻게 해야 합니까?</title>
      <link>https://bestprogram.tistory.com/1305</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;WordPress - 오류 로그 타임스탬프 시간대를 로컬로 설정하려면 어떻게 해야 합니까?&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;WordPress는 PHP 오류 로그의 모든 타임스탬프에 UTC/GMT를 사용합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;로컬 서버 시간대의 타임스탬프를 받고 싶습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;WP 설정에서 시간대를 변경해도 시간 표시에는 영향을 미치지만 오류 로그의 타임스탬프에는 영향을 주지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(wp_설정에 줄이 있다는 것을 알고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것을 설정하는 php 파일과 UTC를 사용하기 위해 하드코딩된 WP 코드의 일부를 변경하는 것에 대해 이해할 수 있습니다.)&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;시간을 파싱하고 교체하기 위해 PHP error_log 함수를 재정의하는 것을 검토했지만, 발견한 두 가지 방법(APD 또는 Runkit)은 추가 설치가 필요했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 알기로는, 이것들은 DEV 환경만을 위한 것이기 때문에, 저는 그것들을 엉망으로 만들고 싶지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;WP가 오류 로그에 현지 시간대 스탬프를 쓰도록 하는 방법에 대한 제안이 있습니까?&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;UTC에 시간을 기록하는 이유가 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;많은 시간대가 &lt;a href=&quot;https://stackoverflow.com/tags/dst/info&quot; papago-id=&quot;5-1&quot;&gt;일광 절약 시간&lt;/a&gt;을 사용합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;해당 구역의 경우 봄에는 한 시간이, 가을에는 한 시간이 중복됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;만약 당신이 현지 시간을 사용하여 로그를 기록한다면, 중복된 값들 사이를 명확하게 할 수 있는 쉬운 방법은 없을 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어 미국 동부 표준시()&lt;a href=&quot;http://www.timeanddate.com/time/change/usa/new-york&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;6-1&quot;&gt;&lt;code papago-id=&quot;6-1-0&quot;&gt;&quot;America/New_York&quot;&lt;/code&gt;&lt;/a&gt;에 있고 현지 시간을 사용하여 기록한 경우 2014-11-02 01:30:00과 같은 값은 동부 일광 시간으로 1:30 또는 동부 표준시로 1:30을 의미할 수 있습니다. - 한 시간 후입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;충분히 자주 로그를 기록하는 경우 주변 로그 항목에 있는 다른 항목의 타임스탬프를 비교하여 이를 탐지할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 일반적으로 이는 가끔만 로그를 기록하거나 한 번에 두 개 이상의 로그 항목을 분석하는 오버헤드를 원하지 않을 수 있기 때문에 좋은 해결책은 아닙니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;일광 절약 시간 외에도 여러 서버에서 로그 파일을 가져올 경우 이를 균일하게 비교할 수 있어야 한다는 문제도 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;아마도 저는 미국 동해안과 서해안에 웹서버를 가지고 있고, 유럽에 하나, 그리고 일본에 하나가 있을 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;전 세계 트래픽이 급증하면 시간대를 변환하여 줄을 세울 필요가 없습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;현지 시간으로 로그인해야 하는 경우 UTC로부터의 오프셋을 타임스탬프와 함께 포함하는 것을 고려합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;일부 언어에서는 &quot;DateTimeOffset&quot;이라고도 하며 ISO-8601 표준의 일부이기도 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를들면,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&quot;2014-06-20T01:23:45-07:00&quot;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;. 이렇게 함으로써 최소한 UTC로의 변환을 허용하고 일광 절약 시간으로 인한 모호성을 제거할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;WordPress나 PHP를 이런 식으로 로그에 기록할 수 있는 구체적인 방법이 있는지는 모르겠지만, 아마 다른 사람이 그것을 별도의 답변으로 제공할 수 있을 것입니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;원하는 시간대를 설정하기만 하면 됩니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;functions.php&lt;/code&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;date_default_timezone_set('Asia/Kolkata'); 
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;바꾸다&lt;/font&gt;&lt;/font&gt;&lt;code&gt;'Asia/Kolkata'&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신이 원하는 시간대와 함께.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://www.php.net/manual/en/timezones.php&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;4-1&quot;&gt;PHP 공식 시간대&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://i.stack.imgur.com/1HyN6.png&quot; rel=&quot;nofollow noreferrer&quot;&gt;&lt;img src=&quot;https://i.stack.imgur.com/1HyN6.png&quot; alt=&quot;Before &amp;amp; after of changes&quot;&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기능에서 변경된 내용을 보존하려면 어린이 &lt;strong papago-id=&quot;15-1&quot;&gt;테마&lt;/strong&gt;를 사용하는 것이 좋습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;테마가 업데이트 된 후에도 php.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/24336302/wordpress-how-do-i-set-error-log-timestamp-timezone-to-local&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>Wordpress</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1305</guid>
      <comments>https://bestprogram.tistory.com/1305#entry1305comment</comments>
      <pubDate>Tue, 24 Oct 2023 21:28:54 +0900</pubDate>
    </item>
    <item>
      <title>노드 MySQL 이스케이프 LIKE 문</title>
      <link>https://bestprogram.tistory.com/1304</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;노드 MySQL 이스케이프 LIKE 문&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;노드-mysql에서 MySQL LIKE 문을 탈출하려면 어떻게 해야 합니까?&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;어떤 일이 일어날 때마다&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&quot;SELECT * FROM card WHERE name LIKE '%&quot; + connection.escape(req.body.search) + &quot;%'&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;결과:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;'SELECT * FROM card WHERE name LIKE \'%\'hello\'%\''
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것은 구문 오류입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음의 대체 구문을 사용하는 경우&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;connection.query(&quot;SELECT * FROM card WHERE name LIKE '%?%'&quot;, req.body.search, function () {});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;유사한 구문 오류가 발생합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저도 노력했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;connection.query(&quot;SELECT * FROM card WHERE name LIKE ?&quot;, '%' + req.body.search + '%', function () {});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;결국 '%' 기호를 벗어나는 것입니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;왜 도망치는지 확실하지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;%&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신의 마지막 예에서, 그것은 나에게 잘 통하기 때문입니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;// lifted from my code:
var value = 'ee20e966289cd7';
connection.query('SELECT * from django_session where session_key like ?', '%' + value + '%', ...)

// Result:
[ { session_key: '713ee20e966289cd71b936084a1e613e', ... } ]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;드라이버에서 디버깅을 켤 때(통과)&lt;/font&gt;&lt;/font&gt;&lt;code&gt;debug:true&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;의 논거로&lt;/font&gt;&lt;/font&gt;&lt;code&gt;mysql.createConnection&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;), % 기호를 벗어나지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;{ command: 3,
  sql: 'SELECT * from django_session where session_key like \'%ee20e966289cd7%\'' }
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(단 하나의 인용문은 &lt;em papago-id=&quot;12-1&quot;&gt;제외&lt;/em&gt;되지만, 표시 목적으로만 사용됩니다.)&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(사용)&lt;/font&gt;&lt;/font&gt;&lt;code&gt;mysql@2.0.0-alpha8&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;나는 이런 것으로 성공을 거둔 적이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&quot;SELECT * FROM card WHERE name LIKE &quot; + connection.escape('%'+req.body.search+'%')
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;어때.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;mysql.format(&quot;SELECT * FROM card WHERE name LIKE CONCAT('%', ?,  '%')&quot;, req.body.search)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;?&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신은 언제든지 할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;variable = '%${variable}%'
&quot;SELECT * FROM 'table' WHERE ('foo' LIKE ?);&quot;, 
[variable], callback =&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저도 같은 문제가 있어서 이렇게 해결했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;function search(searchTerm) {

    let replacement = `'%${searchTerm}%'`;

    let sqlStatement = `SELECT * from  clients where firstName LIKE ${replacement}`;

    const [rows, fields, error] = connection.query(sqlStatement);

    return rows;

}
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;간단하고 쉬운 방법:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;`SELECT * FROM card WHERE name LIKE ` + connection.escape(`%${req.body.search}%`)
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/17922587/node-mysql-escape-like-statement&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>MYSQL</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1304</guid>
      <comments>https://bestprogram.tistory.com/1304#entry1304comment</comments>
      <pubDate>Tue, 24 Oct 2023 21:28:47 +0900</pubDate>
    </item>
    <item>
      <title>맨 왼쪽 테이블의 모든 행에 대해 맨 오른쪽 테이블에서 하나의 행만 반환</title>
      <link>https://bestprogram.tistory.com/1303</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;맨 왼쪽 테이블의 모든 행에 대해 맨 오른쪽 테이블에서 하나의 행만 반환&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;테이블이 두 개 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;가장 왼쪽 테이블의 각 레코드마다 오른쪽 테이블의 레코드가 하나씩만 반환되는 방식으로 그들과 함께 하고 싶습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;아래에 예시를 넣었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;실제 데이터가 약 4M 행이므로 서브쿼리와 임시 테이블은 피하고 싶습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 가장 오른쪽 테이블의 레코드가 일치하는 경우에는 상관이 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;감사합니다!&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;테이블 사용자:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;-------------
| id | name |
-------------
| 1  | mike |
| 2  | john |
| 3  | bill |
-------------
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;테이블 트랜잭션:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;---------------
| uid | spent | 
---------------
| 1   | 5.00  |
| 1   | 5.00  |
| 2   | 5.00  |
| 3   | 5.00  |
| 3   | 10.00 |
---------------
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예상 출력:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;---------------------
| id | name | spent |
---------------------
| 1  | mike | 5.00  |
| 2  | john | 5.00  |
| 3  | bill | 5.00  |
---------------------
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;용도:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;  SELECT u.id,
         u.name,
         MIN(t.spent) AS spent
    FROM USERS u
    JOIN TRANSACTIONS t ON t.uid = u.id
GROUP BY u.id, u.name
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 적어도 하나의 트랜잭션 기록을 가지고 있는 사용자만 반환합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;지원 기록이 없는 사용자뿐만 아니라 지원 기록이 없는 사용자를 보려면 다음을 사용합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;   SELECT u.id,
          u.name,
          COALESCE(MIN(t.spent), 0) AS spent
     FROM USERS u
LEFT JOIN TRANSACTIONS t ON t.uid = u.id
 GROUP BY u.id, u.name
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;반환되는 특정 행에 관심이 없는 경우.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;select id, name, spent
from users
left join transactions on users.id = transactions.uid
group by id
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이렇게 하면 사용자당 하나의 행이 반환됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것은 첫번째 일치된 거래가 될 것입니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것이 실제로 당신의 질문에 대답하지 않는다면 죄송합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;어떤 사용자가 적어도 하나 이상의 트랜잭션을 가지고 있는지 확인하려는 것 같습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 과정에서 각 사용자가 다음과 같은 작업을 수행하여 지출한 금액을 확인할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;선택한다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;u.id ,&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;u.name ,&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;합계(t.spent)&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;부터&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용자 u&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;내부 결합 트랜잭션 t&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;On t.uid = u.id&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그룹화 기준&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;u.id&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;, u.name&lt;/font&gt;&lt;/pre&gt;&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/3313614/return-only-one-row-from-the-right-most-table-for-every-row-in-the-left-most-tab&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>MYSQL</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1303</guid>
      <comments>https://bestprogram.tistory.com/1303#entry1303comment</comments>
      <pubDate>Tue, 24 Oct 2023 21:28:41 +0900</pubDate>
    </item>
    <item>
      <title>문자열 비교 시 악센트가 있는 문자 무시</title>
      <link>https://bestprogram.tistory.com/1302</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;문자열 비교 시 악센트가 있는 문자 무시&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;C#의 문자열 두 개를 비교해서 악센트가 없는 글자와 동일하게 취급해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어,&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;string s1 = &quot;hello&quot;;
string s2 = &quot;héllo&quot;;

s1.Equals(s2, StringComparison.InvariantCultureIgnoreCase);
s1.Equals(s2, StringComparison.OrdinalIgnoreCase);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 두 문자열은 (애플리케이션에 관한 한) 동일해야 하지만, 이 두 문장 모두 거짓으로 평가됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;C#에서 이것을 할 수 있는 방법이 있습니까?&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;em papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;FWIW, &lt;a href=&quot;https://stackoverflow.com/a/7720903/12379&quot; papago-id=&quot;3-1&quot;&gt;knightfor&lt;/a&gt;의 아래 &lt;a href=&quot;https://stackoverflow.com/a/7720903/12379&quot; papago-id=&quot;3-1&quot;&gt;답변(&lt;/a&gt;이 글을 쓰는 현재)이 수용된 답변이어야 합니다.&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;문자열에서 분음 부호를 제거하는 기능은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;static string RemoveDiacritics(string text)
{
  string formD = text.Normalize(NormalizationForm.FormD);
  StringBuilder sb = new StringBuilder();

  foreach (char ch in formD)
  {
    UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(ch);
    if (uc != UnicodeCategory.NonSpacingMark)
    {
      sb.Append(ch);
    }
  }

  return sb.ToString().Normalize(NormalizationForm.FormC);
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://www.siao2.com/2007/05/14/2629747.aspx&quot; papago-id=&quot;5-1&quot; rel=&quot;noreferrer&quot;&gt;MichKap의 블로그&lt;/a&gt;(&lt;a href=&quot;http://www.siao2.com/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;5-3&quot;&gt;RIP...)&lt;/a&gt;에 &lt;a href=&quot;http://www.siao2.com/2007/05/14/2629747.aspx&quot; papago-id=&quot;5-1&quot; rel=&quot;noreferrer&quot;&gt;대한&lt;/a&gt; 자세한 내용&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;원리는 '에'를 2개의 연속문자 '에'로 바꾼다는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 문자를 반복하고 분음 부호를 생략합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;hello&quot;는 &quot;he&amp;lt;acute&amp;gt;lo&quot;가 되고, 다시 &quot;hello&quot;가 됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Debug.Assert(&quot;hello&quot;==RemoveDiacritics(&quot;héllo&quot;));
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;참고: 여기 좀 더 콤팩트한 것이 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;동일한 기능의 NET4+ 친근한 버전:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;static string RemoveDiacritics(string text)
{
  return string.Concat( 
      text.Normalize(NormalizationForm.FormD)
      .Where(ch =&amp;gt; CharUnicodeInfo.GetUnicodeCategory(ch)!=
                                    UnicodeCategory.NonSpacingMark)
    ).Normalize(NormalizationForm.FormC);
}
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;문자열을 변환할 필요가 없고 동일성을 확인하려는 경우 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;string s1 = &quot;hello&quot;;
string s2 = &quot;héllo&quot;;

if (String.Compare(s1, s2, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace) == 0)
{
    // both strings are equal
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;비교가 대소문자 구분 없이 수행되도록 하려면&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;string s1 = &quot;HEllO&quot;;
string s2 = &quot;héLLo&quot;;

if (String.Compare(s1, s2, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase) == 0)
{
    // both strings are equal
}
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 비슷한 작업을 해야 했지만 StartsWith 방법을 사용했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기 @Serge - appTranslator에서 파생된 간단한 솔루션이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;확장 방법은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;    public static bool StartsWith(this string str, string value, CultureInfo culture, CompareOptions options)
    {
        if (str.Length &amp;gt;= value.Length)
            return string.Compare(str.Substring(0, value.Length), value, culture, options) == 0;
        else
            return false;            
    }
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 하나의 라이너에 대해서는 기괴합니다 ;)&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;    public static bool StartsWith(this string str, string value, CultureInfo culture, CompareOptions options)
    {
        return str.Length &amp;gt;= value.Length &amp;amp;&amp;amp; string.Compare(str.Substring(0, value.Length), value, culture, options) == 0;
    }
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;악센트는 둔감하고 대소문자는 둔감 시작&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;With는 이렇게 부를 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;value.ToString().StartsWith(str, CultureInfo.InvariantCulture, CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음 방법&lt;/font&gt;&lt;/font&gt;&lt;code&gt;CompareIgnoreAccents(...)&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;는 예제 데이터에서 작동합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 배경 정보를 얻은 기사는 다음과 같습니다. http://www.codeproject.com/KB/cs/EncodingAccents.aspx&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;private static bool CompareIgnoreAccents(string s1, string s2)
{
    return string.Compare(
        RemoveAccents(s1), RemoveAccents(s2), StringComparison.InvariantCultureIgnoreCase) == 0;
}

private static string RemoveAccents(string s)
{
    Encoding destEncoding = Encoding.GetEncoding(&quot;iso-8859-8&quot;);

    return destEncoding.GetString(
        Encoding.Convert(Encoding.UTF8, destEncoding, Encoding.UTF8.GetBytes(s)));
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;확장 방법이 더 좋을 것 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;public static string RemoveAccents(this string s)
{
    Encoding destEncoding = Encoding.GetEncoding(&quot;iso-8859-8&quot;);

    return destEncoding.GetString(
        Encoding.Convert(Encoding.UTF8, destEncoding, Encoding.UTF8.GetBytes(s)));
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그렇다면 다음과 같은 용도가 사용됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;if(string.Compare(s1.RemoveAccents(), s2.RemoveAccents(), true) == 0) {
   ...
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;악센트를 없애는 보다 간단한 방법:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;    Dim source As String = &quot;áéíóúç&quot;
    Dim result As String

    Dim bytes As Byte() = Encoding.GetEncoding(&quot;Cyrillic&quot;).GetBytes(source)
    result = Encoding.ASCII.GetString(bytes)
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;String에 이 오버로드를 시도해 봅니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;방법 비교.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;String.비교 메서드(String, String, Boolean, CultureInfo)&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;culture info를 포함한 비교 연산을 기반으로 int 값을 산출합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;페이지의 예는 en-US와 en-CZ의 &quot;Change&quot;를 비교합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;중국어-CZ는 하나의 &quot;글자&quot;입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;링크에서 예제&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;using System;
using System.Globalization;

class Sample {
    public static void Main() {
    String str1 = &quot;change&quot;;
    String str2 = &quot;dollar&quot;;
    String relation = null;

    relation = symbol( String.Compare(str1, str2, false, new CultureInfo(&quot;en-US&quot;)) );
    Console.WriteLine(&quot;For en-US: {0} {1} {2}&quot;, str1, relation, str2);

    relation = symbol( String.Compare(str1, str2, false, new CultureInfo(&quot;cs-CZ&quot;)) );
    Console.WriteLine(&quot;For cs-CZ: {0} {1} {2}&quot;, str1, relation, str2);
    }

    private static String symbol(int r) {
    String s = &quot;=&quot;;
    if      (r &amp;lt; 0) s = &quot;&amp;lt;&quot;;
    else if (r &amp;gt; 0) s = &quot;&amp;gt;&quot;;
    return s;
    }
}
/*
This example produces the following results.
For en-US: change &amp;lt; dollar
For cs-CZ: change &amp;gt; dollar
*/
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러므로 억양이 있는 언어들에 대해서 당신은 그 문화를 얻고 그것에 기초하여 문자열을 테스트할 필요가 있을 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/hyxc48dt.aspx&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;http://msdn.microsoft.com/en-us/library/hyxc48dt.aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/359827/ignoring-accented-letters-in-string-comparison&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <category>String</category>
      <author>bestprogram</author>
      <guid isPermaLink="true">https://bestprogram.tistory.com/1302</guid>
      <comments>https://bestprogram.tistory.com/1302#entry1302comment</comments>
      <pubDate>Tue, 24 Oct 2023 21:28:34 +0900</pubDate>
    </item>
  </channel>
</rss>