<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>itgroup</title>
    <link>https://itgroup.tistory.com/</link>
    <description>각종 프로그래밍 정보를 다루는 블로그입니다.</description>
    <language>ko</language>
    <pubDate>Tue, 12 May 2026 22:21:59 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>itgroup</managingEditor>
    <item>
      <title>아래 내용에 접근할 수 있도록 중복 디브를 &amp;quot;클릭 불가&amp;quot;로 설정하시겠습니까?</title>
      <link>https://itgroup.tistory.com/1036</link>
      <description>&lt;h2&gt;&lt;font papago-translate=&quot;translated&quot;&gt;아래 내용에 접근할 수 있도록 중복 디브를 &quot;클릭 불가&quot;로 설정하시겠습니까?&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;저는 효과에 대해 불투명도가 감소된 JPG 오버레이를 사용하고 있지만, 효과로만 사용하고 해당 div의 아래 내용을 클릭할 수 있도록 하고 싶습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;가능할까요, 감사합니다 :)&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;댓글 달아주셔서 감사합니다 여러분.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;JPEG가 전체 페이지를 다루고 있어서 다른 생각을 해야 할 것 같아요 :)&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;음, 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;pointer-events:none;&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;다만&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&lt;strike&gt;  몇 개의 브라우저&lt;/strike&gt;&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&lt;strike&gt; &lt;/strike&gt; 현대 브라우저(및 IE11)는 이를 지원합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://developer.mozilla.org/en/CSS/pointer-events&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;https://developer.mozilla.org/en/CSS/pointer-events&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;네, 가능합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;사용하다&lt;/font&gt;&lt;/font&gt;&lt;code&gt;pointer-events: none&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;IE11용 CSS의 조건문과 함께 (IE10 이하에서는 작동하지 않기 때문에) 이를 달성하기 위한 교차 브라우저 호환 솔루션을 얻을 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;사용.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;AlphaImageLoader&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;, 당신은 심지어 투명하게 넣을 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.PNG/.GIF&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;오버레이에서 s&lt;/font&gt;&lt;/font&gt;&lt;code&gt;div&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;클릭을 통해 아래에 있는 요소로 전파됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;CSS:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;pointer-events: none;
background: url('your_transparent.png');
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;IE11 조건:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='your_transparent.png', sizingMethod='scale');
background: none !important;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;여기 모든 코드가 포함된 &lt;a href=&quot;http://www.searchlawrence.com/click-through-a-div-to-underlying-elements.html&quot; rel=&quot;noreferrer&quot;&gt;기본 예시 페이지&lt;/a&gt;가 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;아니야.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;오버레이 요소는 항상 클릭을 가로채게 됩니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;하나의 가능한 해결책은 다음과 같이 묶는 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;click&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이벤트를 오버레이 요소에 적용한 다음 현재 마우스 위치를 가져와 아래 요소의 위치와 비교하여 해당 요소가 클릭을 등록해야 하는지 여부를 결정합니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;하지만 이를 달성하는 데는 훨씬 더 좋은 방법이 있을 가능성이 높습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;하지만 당신의 코드를 보지 않고서는 알 방법이 없습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;제가 발견한 하나의 간단한 트릭은 비록 매우 w3c는 아니지만, div를 스판으로 캡슐화하고 그 스판 클래스를 사용하여 오버레이를 만드는 것입니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;그렇게 하면 전체가 클릭이 가능해지고 디브는 디브처럼 행동할 것입니다&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;언급&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;URL : https://stackoverflow.com/questions/7700051/make-overlapping-div-not-clickable-so-that-content-below-can-be-accessed&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>jQuery</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1036</guid>
      <comments>https://itgroup.tistory.com/1036#entry1036comment</comments>
      <pubDate>Sat, 4 Nov 2023 10:36:03 +0900</pubDate>
    </item>
    <item>
      <title>.append 뒤의 jQuery 함수</title>
      <link>https://itgroup.tistory.com/1035</link>
      <description>&lt;h2&gt;&lt;font papago-translate=&quot;translated&quot;&gt;.append 뒤의 jQuery 함수&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;jQuery 후 함수 호출하는 방법&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.append&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;다 끝났습니까?&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;예는 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;#root&quot;).append(child, function(){
   // Action after append is completly done
});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이슈:&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;복잡한 DOM 구조를 추가하면 추가 함수 콜백 내의 루트 요소의 새 크기 계산이 잘못됩니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;DOM이 여전히 완전히 로드되지 않고 추가된 복합 DOM의 첫 번째 자식만 로드된다는 가정입니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;여기에는 타당한 답이 많이 있지만, 그 중 어떤 것도 왜 그렇게 작동하는지에 대해 알려주지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;자바스크립트 명령어는 타임아웃이나 인터벌을 사용하여 비동기화되도록 명시적으로 지시하지 않는 한 오는 순서대로 한 번에 하나씩 실행됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이 말은 당신의&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.append&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;메서드가 실행되고 해당 메서드가 작업을 완료할 때까지 다른 어떤 것도 실행되지 않습니다(존재할 수 있는 시간 초과 또는 간격을 disregard).&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;요약하자면, 다음과 같은 이유로 콜백이 필요 없습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.append&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;동기적으로 실행됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;부록의 동기성에 대해서는 Marcus Ekwall이 전적으로 옳지만, 이상한 상황에서는 다음 줄의 코드가 실행될 때 브라우저에 의해 DOM이 완전히 렌더링되지 않는 경우가 있다는 것도 발견했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이 시나리오에서 섀도 다이버 솔루션은 .ready를 사용하여 올바른 줄을 따라 있지만 호출을 원래 추가로 연결하는 것이 훨씬 더 복잡합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$('#root')
  .append(html)
  .ready(function () {
    // enter code here
  });
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;사이즈 재계산에도 똑같은 문제가 있는데 몇 시간 동안 머리가 아프면 동의하지 않을 수 없습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.append()&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;철저하게 동기화된 행동을 합니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;글쎄, 적어도 구글 크롬에서는.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;다음 코드 참조.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var input = $( '&amp;lt;input /&amp;gt;' );
input.append( arbitraryElement );
input.css( 'padding-left' );
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;padding-left 속성은 Firefox에서는 올바르게 검색되지만 Chrome에서는 비어 있습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;다른 CSS 속성들처럼 말입니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;몇 가지 실험 후에 저는 CSS 'getter'를 다음으로 포장하는 것으로 만족해야 했습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;setTimeout()&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;10ms 지연으로, 내가 알기로는 아주 못생겼지만 유일하게 크롬에서 작동하는 것입니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이 문제를 더 잘 해결할 수 있는 방법을 알고 계신 분이 있다면 정말 감사하겠습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;여기 있는 모든 답들이 놀랍네요...&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;시도해 보기:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;window.setTimeout(function() { /* your stuff */ }, 0);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;0 타임아웃을 기록합니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;임의의 숫자가 아니라...&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;제가 알기로는 (이해가 조금 흔들릴 수도 있지만) 매크로 이벤트용과 마이크로 이벤트용의 자바스크립트 이벤트 큐가 두 개 있습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&quot;큰&quot; 범위의 대기열은 UI(및 DOM)를 업데이트하는 작업을 보유하고, 마이크로 대기열은 빠른 작업 유형 작업을 수행합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;또한 타임아웃을 설정한다고 해서 코드가 지정된 값으로 정확하게 수행되는 것은 아니라는 것을 깨달아야 합니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이 작업은 기본적으로 상위 큐(UI/DOM을 처리하는 큐)에 함수를 넣고 지정된 시간 이전에는 함수를 실행하지 않는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이는 시간 초과를 0으로 설정하면 다음 기회에 실행되도록 javascript의 이벤트 큐의 UI/DOM-부분에 해당 시간을 입력함을 의미합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이는 DOM이 이전의 모든 대기열 항목(예: 삽입 경로)으로 업데이트됨을 의미합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;$.append(...);&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;, 코드가 실행되면 DOM을 완전히 사용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;(p.s. - &lt;em&gt;자바스크립트 닌자의 시크렉츠&lt;/em&gt;에게 배운 책 - 훌륭한 책: https://www.manning.com/books/secrets-of-the-javascript-ninja )&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;같은 문제를 발견하고 간단한 해결책을 찾았습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;append 함수를 문서 준비 완료라고 부른 후 추가합니다.&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;&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;$(&quot;#root&quot;).append(child);
$(document).ready(function () {
    // Action after append is completly done
});&lt;/code&gt;&lt;/pre&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;누군가에게 유용할 수 있는 또 다른 변형이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$('&amp;lt;img src=&quot;http://example.com/someresource.jpg&quot;&amp;gt;').load(function() {
    $('#login').submit();
}).appendTo(&quot;body&quot;);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;를 사용하면 jQuery에 대한 콜백과 같은 역할을 할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;append&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;방법:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;다른 &lt;a href=&quot;https://stackoverflow.com/a/14570614/104380&quot;&gt;질문&lt;/a&gt;에서 설명했는데, 이번에는 현대 브라우저의 예만 들어보겠습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;// Somewhere in your app:
var observeDOM = (() =&amp;gt; {
    var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;

    return function(obj, callback){
        if( MutationObserver ){
            // define a new observer
            var obs = new MutationObserver(function(mutations, observer){
                if( mutations[0].addedNodes.length || mutations[0].removedNodes.length )
                    callback(mutations);
            });
            // have the observer observe foo for changes in children
            obs.observe( obj, { childList:true, subtree:true });

            return obs;
        }
    }
})();

//////////////////
// Your code:

// setup the DOM observer (on the appended content's parent) before appending anything
observeDOM( document.body, ()=&amp;gt;{
    // something was added/removed
}).disconnect(); // don't listen to any more changes

// append something
$('body').append('&amp;lt;p&amp;gt;foo&amp;lt;/p&amp;gt;');
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;저는 이것이 좋은 답변이라고 생각하지만 이것은 &quot;subChild_with_&quot;을 다루는 것에 좀 더 구체적입니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;SIZE&quot;(부모가 제공하는 것이지만 해당 위치에서 조정할 수 있는 경우)&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;#root&quot;).append(
    $('&amp;lt;div /&amp;gt;',{
        'id': 'child'
    })
)
.children()
.last()
.each(function() {
    $(this).append(
        $('&amp;lt;div /&amp;gt;',{
            'id': $(this).parent().width()
        })
    );
});
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;JQuery append 함수는 jQuery 객체를 반환하므로 메소드를 끝에 태그할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;#root&quot;).append(child).anotherJqueryMethod();
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;$.when($('#root').append(child)).then(anotherMethod());&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;영상 및 기타 소스의 경우 다음을 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(el).one('load', function(){
    // completed
}).each(function() {
    if (this.complete)
        $(this).load();
});
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;가장 깨끗한 방법은 차근차근 하는 것입니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;각 기능을 사용하여 각 요소를 반복합니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;해당 요소를 추가하는 즉시 해당 요소를 다음 함수로 전달하여 해당 요소를 처리합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-js prettyprint-override&quot;&gt;&lt;code&gt;    function processAppended(el){
        //process appended element
    }

    var remove = '&amp;lt;a href=&quot;#&quot;&amp;gt;remove&amp;lt;/a&amp;gt;' ;
    $('li').each(function(){
        $(this).append(remove);   
        processAppended(this);    
    });​
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;모바일용 HTML5를 코딩하는 과정에서 이 문제가 발생했습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;.append() 메서드가 DOM의 변경 사항을 즉시 반영하지 않아 일부 브라우저/장치 조합에서 오류가 발생했습니다(JS 실패 원인).&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이러한 상황에 대한 신속한 해결책은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var appint = setInterval(function(){
    if ( $('#foobar').length &amp;gt; 0 ) {
        //now you can be sure append is ready
        //$('#foobar').remove(); if elem is just for checking
        //clearInterval(appint)
    }
}, 100);
$(body).append('&amp;lt;div&amp;gt;...&amp;lt;/div&amp;gt;&amp;lt;div id=&quot;foobar&quot;&amp;gt;&amp;lt;/div&amp;gt;');
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;예, DOM 삽입에 &lt;strong&gt;콜백&lt;/strong&gt; 기능을 추가할 수 &lt;strong&gt;있습니다&lt;/strong&gt;.&lt;/font&gt;&lt;/font&gt;&lt;br&gt; &lt;code&gt;$myDiv.append( function(index_myDiv, HTML_myDiv){ //.... return child })&lt;/code&gt;&lt;br&gt; &lt;br&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;JQuery 문서 확인 : http://api.jquery.com/append/&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이와 유사한 실질적인 예는 다음과 같습니다. http://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_html_prepend_func&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;저는 최근에 비슷한 문제에 부딪혔습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;저에게 해결책은 콜렉션을 다시 만드는 것이었습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;다음을 시연해 보겠습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var $element = $(selector);
$element.append(content);

// This Doesn't work, because $element still contains old structure:
$element.fooBar();    

// This should work: the collection is re-created with the new content:
$(selector).fooBar();
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;도움이 되길 바랍니다!&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;최선의 해결책이 아니라 최선의 방법이라는 것을 알고 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;#root&quot;).append(child);

setTimeout(function(){
  // Action after append
},100);
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;$('#root').append(child);
// do your work here
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;Add에는 콜백이 없으며, 이 코드는 동기적으로 실행되는 코드입니다. 실행되지 않을 위험이 없습니다.&lt;/font&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$('#root').append(child).anotherMethod();
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;언급&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;URL : https://stackoverflow.com/questions/6068955/jquery-function-after-append&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>jQuery</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1035</guid>
      <comments>https://itgroup.tistory.com/1035#entry1035comment</comments>
      <pubDate>Sat, 4 Nov 2023 10:35:57 +0900</pubDate>
    </item>
    <item>
      <title>모바일 기기의 배경 이미지에 재생 버튼이 나타납니다.</title>
      <link>https://itgroup.tistory.com/1034</link>
      <description>&lt;h2&gt;&lt;font papago-translate=&quot;translated&quot;&gt;모바일 기기의 배경 이미지에 재생 버튼이 나타납니다.&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;그래서 방문자가 배경 동영상을 표시할지 여부를 결정하기 위해 모바일 장치를 사용하는지 바탕 화면을 사용하는지 확인하는 스크립트를 작성했습니다(모바일 장치일 경우 출력은 정적 이미지가 됩니다).&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;어떤 이유에서인지 모바일 레이아웃에 배경 이미지를 겹쳐 놓은 가운데 재생 버튼이 나타납니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이것이 코드입니다. (참고: 사이트는 WP를 기반으로 하며 사용합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;wp_is_mobile()&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;장치를 결정하는 기능) -&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;section class=&quot;hero&quot;&amp;gt;
        &amp;lt;?php
    /*
    Display background image
    */
    if ( (get_field( 'hero_display' ) == 'image') || (wp_is_mobile()) ) :
    $hero_image = get_field('hero_image');
    ?&amp;gt;
    &amp;lt;div class=&quot;background-image&quot; data-sm=&quot;&amp;lt;?php echo $hero_image['sizes']['sm']; ?&amp;gt;&quot; data-md=&quot;&amp;lt;?php echo $hero_image['sizes']['md']; ?&amp;gt;&quot; data-lg=&quot;&amp;lt;?php echo $hero_image['sizes']['lg']; ?&amp;gt;&quot;&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;?php endif; ?&amp;gt;

    &amp;lt;?php
    /*
    Display background video
    */
    if ( (get_field( 'hero_display' ) == 'video') &amp;amp;&amp;amp; (!wp_is_mobile()) ) :
    ?&amp;gt;
    &amp;lt;div class=&quot;background-video&quot;&amp;gt;
        &amp;lt;video autoplay=&quot;autoplay&quot; preload=&quot;auto&quot; poster=&quot;&amp;lt;?php the_field( 'hero_capture' ); ?&amp;gt;&quot; loop=&quot;loop&quot; muted=&quot;true&quot; class=&quot;background-video&quot;&amp;gt;
            &amp;lt;source src=&quot;&amp;lt;?php the_field( 'hero_source' ); ?&amp;gt;&quot; type=&quot;video/mp4&quot;&amp;gt;
        &amp;lt;/video&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;?php endif; ?&amp;gt;
&amp;lt;/section&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;진행중인 작업을 보실 수 있습니다 - &lt;a href=&quot;http://52.17.182.78&quot;&gt;http://52.17.182.78&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;어떤 도움이나 방법이라도 대단히 감사합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;편집: 해결됨!&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;iOS7+에서 모든 것이 올바르게 표시되기 위해서는 몇 가지 요령이 필요합니다(Android 장치에서도 가능). 이 기사를 참조하십시오 - https://css-tricks.com/custom-controls-in-html5-video-full-screen/ .&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;반대로 해보는 건 어떨까요?&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이미지를 기본값으로 설정하고 모바일에 없는 경우 비디오를 사용해 보십시오 ;)&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;비디오 태그에 controls=&quot; false&quot; 속성을 추가해 봅니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;언급&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;URL : https://stackoverflow.com/questions/30938798/play-button-shows-up-on-background-image-on-mobile-devices&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>WordPress</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1034</guid>
      <comments>https://itgroup.tistory.com/1034#entry1034comment</comments>
      <pubDate>Sat, 4 Nov 2023 10:35:48 +0900</pubDate>
    </item>
    <item>
      <title>다음을 통해 $(이것)을 제외한 모든 항목 숨기기:jQuery 선택기에 없음</title>
      <link>https://itgroup.tistory.com/1033</link>
      <description>&lt;h2&gt;&lt;font papago-translate=&quot;translated&quot;&gt;다음을 통해 $(이것)을 제외한 모든 항목 숨기기:jQuery 선택기에 없음&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;고급 제목, 간단한 질문:&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;jQuery에서 다음 작업을 수행하려면 어떻게 해야 합니까(다음을 제외하고 모두 숨깁니다).&lt;/font&gt;&lt;/font&gt;&lt;code&gt;$(this)&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;)?&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;table tr&quot;).click(function() {
    $(&quot;table tr:not(&quot; + $(this) + &quot;)&quot;).hide();
    // $(this) is only to illustrate my problem

    $(&quot;table tr&quot;).show();
});
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;$(this).siblings().hide();
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;a href=&quot;http://docs.jquery.com/Traversing/siblings&quot; rel=&quot;noreferrer&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;횡단/자매&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$(&quot;table.tr&quot;).not(this).hide();
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;별론으로, 당신이 의미하는 것은&lt;/font&gt;&lt;/font&gt;&lt;code&gt;$(&quot;table tr&quot;)&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;(점 대신 공백이 있음).)&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;당신이 가지고 있는 방식으로, 그것은 다음과 같은 클래스가 있는 모든 테이블을 선택합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;tr&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;(예:&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&amp;lt;table class=&quot;tr&quot;&amp;gt;&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;), 아마도 당신이 원하는 것이 아닐 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;자세한 내용은 &lt;a href=&quot;http://docs.jquery.com/Selectors&quot; rel=&quot;noreferrer&quot;&gt;설명서&lt;/a&gt;를 참조하십시오.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;not()을 다른 선택기와 결합하려면 add()를 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$('a').click(function(e){
  $('a').not(this).add('#someID, .someClass, #someOtherID').animate({'opacity':0}, 800);
});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이렇게 하면 클릭한 링크를 제외한 다른 모든 링크가 사라지고 선택한 ID와 클래스도 사라집니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;해결책은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;table.tr&quot;).click(function() {
    $(&quot;table.tr:not(&quot; + $(this).attr(&quot;id&quot;) + &quot;&quot;).hide(); // $(this) is only to illustrate my problem
    $(this).show();
})
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;--댓글에 대한 EDIT:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;table.tr&quot;).click(function() {
    $(&quot;table.tr:not(#&quot; + $(this).attr(&quot;id&quot;) + &quot;)&quot;).hide(); // $(this) is only to illustrate my problem
    $(this).show();
})
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;언급&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;URL : https://stackoverflow.com/questions/1328314/hide-all-but-this-via-not-in-jquery-selector&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>jQuery</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1033</guid>
      <comments>https://itgroup.tistory.com/1033#entry1033comment</comments>
      <pubDate>Sat, 4 Nov 2023 10:35:42 +0900</pubDate>
    </item>
    <item>
      <title>CSS div 높이를 100% 마이너스 nPx로 설정하는 방법</title>
      <link>https://itgroup.tistory.com/1032</link>
      <description>&lt;h2&gt;&lt;font papago-translate=&quot;translated&quot;&gt;CSS div 높이를 100% 마이너스 nPx로 설정하는 방법&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&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&lt;b&gt;이 질문에는 이미 다음&lt;/b&gt;과 같은 &lt;b&gt;답변이 있습니다&lt;/b&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/2434602/setting-width-height-as-percentage-minus-pixels&quot; dir=&quot;ltr&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;너비/높이를 백분율에서 픽셀을 뺀 값으로 설정&lt;/font&gt;&lt;/a&gt; 
    &lt;span class=&quot;question-originals-answer-count&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;(11개 답변)&lt;/font&gt;&lt;/span&gt; 
   &lt;/div&gt; 
   &lt;div class=&quot;flex--item mb0 mt8&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;닫힘&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&lt;span class=&quot;relativetime&quot; title=&quot;2020-12-28 20:45:58Z&quot; papago-attr-id=&quot;1&quot;&gt;2년 전&lt;/span&gt;에.&lt;/font&gt;&lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/aside&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;저는 옆에 2개의 디브가 들어있는 포장지 디브가 있습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이 컨테이너 위에 머리말이 들어있는 디브가 있습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;래퍼 div는 헤더의 높이에서 100%를 뺀 값이어야 합니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;헤더는 60px 정도 됩니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이거 고쳤어요.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;그래서 제 질문은 어떻게 하면 제 래퍼 디브의 높이를 100%에서 60px를 뺀 값으로 설정할 수 있을까요?&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;div id=&quot;header&quot;&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;div id=&quot;wrapper&quot;&amp;gt;
  &amp;lt;div id=&quot;left&quot;&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;div id=&quot;right&quot;&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;CSS3에서 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;height: calc(100% - 60px);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;여기 Firefox/IE7/Safari/Chrome/Opera에서 테스트된 작동하는 CSS가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;* {margin:0px;padding:0px;overflow:hidden}
div {position:absolute}
div#header {top:0px;left:0px;right:0px;height:60px}
div#wrapper {top:60px;left:0px;right:0px;bottom:0px;}
div#left {top:0px;bottom:0px;left:0px;width:50%;overflow-y:auto}
div#right {top:0px;bottom:0px;right:0px;width:50%;overflow-y:auto}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&quot;overflow-y&quot;는 w3c 인증을 받지는 않지만, 모든 주요 브라우저가 이를 지원합니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;두 디브 #left와 #right는 내용물이 너무 높으면 세로 스크롤 막대를 표시합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;IE7에서 작동하려면 DOCTYPE을 추가하여 표준 준수 모드를 트리거해야 합니다.&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;false&quot; data-babel=&quot;false&quot;&gt; 
 &lt;div class=&quot;snippet-code&quot;&gt; 
  &lt;pre class=&quot;snippet-code-html lang-html prettyprint-override&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01//EN&quot;
            &quot;http://www.w3.org/TR/html4/strict.dtd&quot;&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;
&amp;lt;style type=&quot;text/css&quot;&amp;gt;
	*{margin:0px;padding:0px;overflow:hidden}
	div{position:absolute}
	div#header{top:0px;left:0px;right:0px;height:60px}
	div#wrapper{top:60px;left:0px;right:0px;bottom:0px;}
	div#left{top:0px;bottom:0px;left:0px;width:50%;overflow-y:auto}
	div#right{top:0px;bottom:0px;right:0px;width:50%;overflow-y:auto}
&amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;div id=&quot;header&quot;&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;div id=&quot;wrapper&quot;&amp;gt;
  &amp;lt;div id=&quot;left&quot;&amp;gt;&amp;lt;div style=&quot;height:1000px&quot;&amp;gt;high content&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;div id=&quot;right&quot;&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;&lt;/code&gt;&lt;/pre&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;IE6를 지원해야 하는 경우에는 자바스크립트를 사용하여 래퍼 div의 크기를 관리합니다(창 크기를 읽은 후 요소의 위치를 픽셀 단위로 설정).&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;자바스크립트를 사용하지 않으려면 이 작업을 수행할 수 없습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;해결 방법이 있지만 1~2주일 정도면 모든 경우와 모든 브라우저에서 작동할 수 있을 것으로 예상됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;다른 최신 브라우저의 경우 다음 CSS를 사용합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;position: absolute;
top: 60px;
bottom: 0px;
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;div {
    height: 100%;
    height: -webkit-calc(100% - 60px);
    height: -moz-calc(100% - 60px);
    height: calc(100% - 60px);
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;적게 사용하면서 확인합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;height: ~calc(100% - 60px);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;그렇지 않으면 less는 정확하게 컴파일하지 못합니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;멋진 녀석...&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이제 %를 사용하지 않게 되었습니다 히히히히히히히히히히...&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;다음과 같은 주 컨테이너를 제외합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;div id=&quot;divContainer&quot;&amp;gt;
    &amp;lt;div id=&quot;divHeader&quot;&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div id=&quot;divContentArea&quot;&amp;gt;
        &amp;lt;div id=&quot;divContentLeft&quot;&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;div id=&quot;divContentRight&quot;&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div id=&quot;divFooter&quot;&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;여기 CSS가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;#divContainer {
    width: 100%;
    height: 100%;
}
#divHeader {
    position: absolute;
    left: 0px;
    top: 0px;
    right: 0px;
    height: 28px;
}
#divContentArea {
    position: absolute;
    left: 0px;
    top: 30px;
    right: 0px;
    bottom: 30px;
}
#divContentLeft {
    position: absolute;
    top: 0px;
    left: 0px;
    width: 250px;
    bottom: 0px;
}
#divContentRight {
    position: absolute;
    top: 0px;
    left: 254px;
    right: 0px;
    bottom: 0px;
}
#divFooter {
    position: absolute;
    height: 28px;
    left: 0px;
    bottom: 0px;
    right: 0px;
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;나는 이것을 모든 알려진 브라우저에서 테스트했고 잘 작동하고 있습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이런 식으로 사용하면 단점이 있습니까?&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&lt;em&gt;높이: Calc(100%&lt;/em&gt; -&lt;em&gt; nPx),&lt;/em&gt; 높이: &lt;em&gt;Calc(100%&lt;/em&gt; - nPx), 예를 들어 &lt;em&gt;높이:&lt;/em&gt; Calc(100% - &lt;em&gt;70px),&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이것은 질문에 정확히 대답하지는 않지만, 여러분이 달성하려고 하는 것과 같은 시각적 효과를 만들어냅니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;style&amp;gt;

body {
  border:0;
  padding:0;
  margin:0;
  padding-top:60px;
}

#header {
  position:absolute;
  top:0;
  height:60px;
  width:100%;
}

#wrapper {
  height:100%;
  width:100%;
}
&amp;lt;/style&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이 예제에서는 여러 영역을 식별할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;html&amp;gt;
&amp;lt;style&amp;gt;
#divContainer {
    width: 100%;
    height: 100%;
}
#divHeader {
    position: absolute;
    left: 0px;
    top: 0px;
    right: 0px;
    height: 28px;
    background-color:blue;
}
#divContentArea {
    position: absolute;
    left: 0px;
    top: 30px;
    right: 0px;
    bottom: 30px;
}
#divContentLeft {
    position: absolute;
    top: 0px;
    left: 0px;
    width: 200px;
    bottom: 0px;
    background-color:red;
}
#divContentCenter {
    position: absolute;
    top: 0px;
    left: 200px;
    bottom: 0px;
    right:200px;
    background-color:yellow;
}
#divContentRight {
    position: absolute;
    top: 0px;
    right: 0px;
    bottom: 0px;
    width:200px;
    background-color:red;
}
#divFooter {
    position: absolute;
    height: 28px;
    left: 0px;
    bottom: 0px;
    right: 0px;
    background-color:blue;
}
&amp;lt;/style&amp;gt;
&amp;lt;body &amp;gt;

&amp;lt;div id=&quot;divContainer&quot;&amp;gt;
    &amp;lt;div id=&quot;divHeader&quot;&amp;gt; top
    &amp;lt;/div&amp;gt;
    &amp;lt;div id=&quot;divContentArea&quot;&amp;gt;
        &amp;lt;div id=&quot;divContentLeft&quot;&amp;gt;left
        &amp;lt;/div&amp;gt;
        &amp;lt;div id=&quot;divContentCenter&quot;&amp;gt;center
        &amp;lt;/div&amp;gt;
        &amp;lt;div id=&quot;divContentRight&quot;&amp;gt;right
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div id=&quot;divFooter&quot;&amp;gt;bottom
    &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이런 글은 아직 본 적이 없지만, 저는 그것을 밖에 내놓아야겠다고 생각했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;div class=&quot;main&quot;&amp;gt;
&amp;lt;header&amp;gt;Header&amp;lt;/header&amp;gt;
&amp;lt;div class=&quot;content&quot;&amp;gt;Content&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;그러면 CSS:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;body, html {
    height: 100%;
    margin: 0;
    padding: 0;
}

.main {
    height: 100%;
    padding-top: 50px;
    box-sizing: border-box;
}

header {
    height: 50px;
    margin-top: -50px;
    width: 100%;
    background-color: #5078a5;
}

.content {
    height: 100%;
    background-color: #999999;
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;여기 일하는 &lt;a href=&quot;https://jsfiddle.net/g1Ljvwy8/&quot; rel=&quot;nofollow&quot;&gt;jsfiddle&lt;/a&gt;이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;참고: 이것에 대한 브라우저 호환성이 무엇인지 전혀 모르겠습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;대체 솔루션을 가지고 놀고 있었는데 잘 작동하는 것 같았습니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;외부 포장지 디브를 100%로 설정한 다음 내부 포장지 디브를 100%로 설정합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;나는 이것이 나에게 효과가 있다고 확실히 생각했지만, 분명히 그렇지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;html&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;div id=&quot;outerwrapper&quot; style=&quot;border : 1px solid red ; height : 100%&quot;&amp;gt;
&amp;lt;div id=&quot;header&quot; style=&quot;border : 1px solid blue ; height : 60px&quot;&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;div id=&quot;wrapper&quot;  style=&quot;border : 1px solid green ; height : 100% ; overflow : scroll ;&quot;&amp;gt;
  &amp;lt;div id=&quot;left&quot; style=&quot;height : 100% ; width : 50% ; overflow : scroll; float : left ; clear : left ;&quot;&amp;gt;Some text 

on the left&amp;lt;/div&amp;gt;
  &amp;lt;div id=&quot;right&quot; style=&quot;height : 100% ; width 50% ; overflow : scroll; float : left ;&quot;&amp;gt;Some Text on the 

right&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;절대 위치 지정과 재즈를 사용하고 싶지 않다면, 여기에 제가 사용하고 싶은 수정사항이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;html:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;body&amp;gt;    
   &amp;lt;div id=&quot;header&quot;&amp;gt;&amp;lt;/div&amp;gt;
   &amp;lt;div id=&quot;wrapper&quot;&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;당신의 CSS:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;body {
     height:100%;
     padding-top:60px;
}
#header {
     margin-top:60px;
     height:60px;
}
#wrapper {
     height:100%;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;언급&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;URL : https://stackoverflow.com/questions/1192783/css-how-to-set-div-height-100-minus-npx&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>CSS</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1032</guid>
      <comments>https://itgroup.tistory.com/1032#entry1032comment</comments>
      <pubDate>Sat, 4 Nov 2023 10:35:35 +0900</pubDate>
    </item>
    <item>
      <title>오라클에서 xmltable을 사용하는 방법?</title>
      <link>https://itgroup.tistory.com/1031</link>
      <description>&lt;h2&gt;&lt;font papago-translate=&quot;translated&quot;&gt;오라클에서 xmltable을 사용하는 방법?&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;저는 Oracle의 XML DB를 사용하여 사용자 프로파일을 작성하고 있습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;사용자 프로파일을 테이블의 다른 관계 열(id, 사용자 이름, 암호)과 함께 단일 XMLTYPE 열에 저장했습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;XML 형식은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;profile&amp;gt;
&amp;lt;subject&amp;gt;I
       &amp;lt;action&amp;gt;like
           &amp;lt;object&amp;gt;sports&amp;lt;/object&amp;gt;
               ...
           &amp;lt;object&amp;gt;music&amp;lt;/object
       &amp;lt;/action&amp;gt;
    &amp;lt;/subject&amp;gt;
&amp;lt;/profile&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;저는 다음 쿼리를 사용했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SELECT *
FROM user,
XMLTABLE(
 '//profile'
 PASSING user.profile
 return COLUMNS action VARCHAR2(20) PATH '/subject/action',
         object VARCHAR2(30) PATH '/subject/action/object'
);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;아무 것도 아닌걸요&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;어떻게 하면 이걸 작동시킬 수 있을까요?&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;action&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;그리고.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;object&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;예에서는 같은 수준이 아니므로 쿼리에서 추가 단계를 수행해야 합니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;예는 다음과 같습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SQL&amp;gt; create table users (id number, profile xmltype);

Table created.

SQL&amp;gt; insert into users values (1, XMLTYPE('&amp;lt;profile&amp;gt;
  2      &amp;lt;subject&amp;gt;I
  3         &amp;lt;action&amp;gt;like
  4             &amp;lt;object&amp;gt;sports&amp;lt;/object&amp;gt;
  5             &amp;lt;object&amp;gt;music&amp;lt;/object&amp;gt;
  6         &amp;lt;/action&amp;gt;
  7      &amp;lt;/subject&amp;gt;
  8  &amp;lt;/profile&amp;gt;'));

1 row created.

SQL&amp;gt; select u.id, x.action, x.object.getStringVal()
  2    from users u,
  3         XMLTABLE('/profile/subject/action'
  4                  passing u.profile
  5                  columns action VARCHAR2(30) PATH 'text()',
  6                          object XMLTYPE PATH 'object') x;

ID  ACTION  X.OBJECT.GETSTRINGVAL()
--- ------- --------------------------------------------------
1   like    &amp;lt;object&amp;gt;sports&amp;lt;/object&amp;gt; &amp;lt;object&amp;gt;music&amp;lt;/object&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;보시다시피 노드를 확보했습니다. 원하는 것이 아니기 때문에 추가합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;XMLTABLE&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SQL&amp;gt; select u.id, x.action, y.object
  2    from users u,
  3         XMLTABLE('/profile/subject/action'
  4                  passing u.profile
  5                  columns action VARCHAR2(30) PATH 'text()',
  6                          object XMLTYPE PATH 'object') x,
  7         XMLTABLE('/object'
  8                  passing x.object
  9                  columns object VARCHAR2(30) PATH '.') y;

ID  ACTION  OBJECT
--- ------- -------
1   like    sports
1   like    music
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;언급&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;URL : https://stackoverflow.com/questions/12690868/how-to-use-xmltable-in-oracle&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>oracle</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1031</guid>
      <comments>https://itgroup.tistory.com/1031#entry1031comment</comments>
      <pubDate>Sat, 4 Nov 2023 10:35:24 +0900</pubDate>
    </item>
    <item>
      <title>Oracle SQL Analytic 쿼리 - 재귀적 스프레드시트와 같은 실행 합계</title>
      <link>https://itgroup.tistory.com/1030</link>
      <description>&lt;h2&gt;&lt;font papago-translate=&quot;translated&quot;&gt;Oracle SQL Analytic 쿼리 - 재귀적 스프레드시트와 같은 실행 합계&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;나는 다음과 같은 데이터를 가지고 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;A&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;value, 순서:&lt;/font&gt;&lt;/font&gt;&lt;code&gt;MM&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;(월).&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;그&lt;/font&gt;&lt;/font&gt;&lt;code&gt;B&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;열은 다음과 같이 계산됩니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;GREATEST(current value of A + previous value of B, 0)&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;스프레드시트식으로&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;계산은 어떻게 하나요?&lt;/font&gt;&lt;/font&gt;&lt;code&gt;B&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;SQL 쿼리를 사용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot;&gt;분석 함수를 사용해 보았지만 성공하지 못했습니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&lt;a href=&quot;http://docs.oracle.com/cd/B19306_01/server.102/b14223/sqlmodel.htm&quot; rel=&quot;noreferrer&quot;&gt;모델 조항&lt;/a&gt;이 있다는 것을 알고 있습니다. &lt;a href=&quot;http://www.orafaq.com/forum/mv/msg/180678/551890/156078/#msg_551890&quot; rel=&quot;noreferrer&quot;&gt;비슷한 예&lt;/a&gt;를 찾았지만 어디서부터 시작해야 할지 모르겠습니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;저는 오라클 10g을 사용하고 있어서 재귀적 쿼리를 사용할 수 없습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;hr&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;테스트 데이터는 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;MM         | A      | B
-----------+--------+------
2012-01-01 |    800 |  800
2012-02-01 |   1900 | 2700
2012-03-01 |   1750 | 4450
2012-04-01 | -20000 |    0
2012-05-01 |    900 |  900
2012-06-01 |   3900 | 4800
2012-07-01 |  -2600 | 2200
2012-08-01 |  -2600 |    0
2012-09-01 |   2100 | 2100
2012-10-01 |  -2400 |    0
2012-11-01 |   1100 | 1100
2012-12-01 |   1300 | 2400
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;여기 &quot;테이블 정의&quot;가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;select t.* from (
  select date'2012-01-01' as mm, 800 as a from dual union all
  select date'2012-02-01' as mm, 1900 as a from dual union all
  select date'2012-03-01' as mm, 1750 as a from dual union all
  select date'2012-04-01' as mm, -20000 as a from dual union all
  select date'2012-05-01' as mm, 900 as a from dual union all
  select date'2012-06-01' as mm, 3900 as a from dual union all
  select date'2012-07-01' as mm, -2600 as a from dual union all
  select date'2012-08-01' as mm, -2600 as a from dual union all
  select date'2012-09-01' as mm, 2100 as a from dual union all
  select date'2012-10-01' as mm, -2400 as a from dual union all
  select date'2012-11-01' as mm, 1100 as a from dual union all
  select date'2012-12-01' as mm, 1300 as a from dual
) t;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;자, 그럼 이제.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;MODEL&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이 문제에 대한 조항(미스테리가 오직 그 힘에 의해서만 초과되는 장치):&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;with data as (
  select date'2012-01-01' as mm,    800 as a from dual union all
  select date'2012-02-01' as mm,   1900 as a from dual union all
  select date'2012-03-01' as mm,   1750 as a from dual union all
  select date'2012-04-01' as mm, -20000 as a from dual union all
  select date'2012-05-01' as mm,    900 as a from dual union all
  select date'2012-06-01' as mm,   3900 as a from dual union all
  select date'2012-07-01' as mm,  -2600 as a from dual union all
  select date'2012-08-01' as mm,  -2600 as a from dual union all
  select date'2012-09-01' as mm,   2100 as a from dual union all
  select date'2012-10-01' as mm,  -2400 as a from dual union all
  select date'2012-11-01' as mm,   1100 as a from dual union all
  select date'2012-12-01' as mm,   1300 as a from dual
)
select mm, a, b
from (
  -- Add a dummy value for b, making it available to the MODEL clause
  select mm, a, 0 b
  from data
)
      -- Generate a ROW_NUMBER() dimension, in order to access rows by RN
model dimension by (row_number() over (order by mm) rn)
      -- Spreadsheet values / measures involved in calculations are mm, a, b
      measures (mm, a, b)
      -- A single rule will do. Any value of B should be calculated according to
      -- GREATEST([previous value of B] + [current value of A], 0)
      rules (
        b[any] = greatest(nvl(b[cv(rn) - 1], 0) + a[cv(rn)], 0)
      )
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;위의 결과는 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;MM              A     B
01.01.2012    800   800
01.02.2012   1900  2700
01.03.2012   1750  4450
01.04.2012 -20000     0
01.05.2012    900   900
01.06.2012   3900  4800
01.07.2012  -2600  2200
01.08.2012  -2600     0
01.09.2012   2100  2100
01.10.2012  -2400     0
01.11.2012   1100  1100
01.12.2012   1300  2400
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;사용자 정의 애그리게이트 함수를 생각해 냈습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;create or replace type tsum1 as object
  (
  total number,

  static function ODCIAggregateInitialize(nctx IN OUT tsum1 )
       return number,

  member function ODCIAggregateIterate(self IN OUT tsum1 ,
                                       value IN number )
       return number,

  member function ODCIAggregateTerminate(self IN tsum1,
                              retVal OUT  number,
                              flags IN number)
       return number,

  member function ODCIAggregateMerge(self IN OUT tsum1,
                          ctx2 IN tsum1)
       return number
)
/

create or replace type body tsum1
 is

 static function ODCIAggregateInitialize(nctx IN OUT tsum1)
 return number
 is
 begin
   nctx := tsum1(0);
   return ODCIConst.Success;
 end;

 member function ODCIAggregateIterate(self IN OUT tsum1,
                                    value IN number )
 return number
 is
 begin
   self.total := self.total + value;
     if (self.total &amp;lt; 0) then
       self.total := 0;
     end if;
   return ODCIConst.Success;
 end;

 member function ODCIAggregateTerminate(self IN tsum1,
                                        retVal OUT number,
                                        flags IN number)
 return number
 is
 begin
   retVal := self.total;
   return ODCIConst.Success;
 end;

 member function ODCIAggregateMerge(self IN OUT tsum1,
                                    ctx2 IN tsum1)
 return number
 is
 begin
   self.total := self.total + ctx2.total;
   return ODCIConst.Success;
 end;
 end;
 /

CREATE OR REPLACE FUNCTION sum1(input number)
RETURN number
PARALLEL_ENABLE AGGREGATE USING tsum1;
/
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;문의 내용은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;with T1 as(
   select date'2012-01-01' as mm, 800 as a from dual union all
   select date'2012-02-01' as mm, 1900 as a from dual union all
   select date'2012-03-01' as mm, 1750 as a from dual union all
   select date'2012-04-01' as mm, -20000 as a from dual union all
   select date'2012-05-01' as mm, 900 as a from dual union all
   select date'2012-06-01' as mm, 3900 as a from dual union all
   select date'2012-07-01' as mm, -2600 as a from dual union all
   select date'2012-08-01' as mm, -2600 as a from dual union all
   select date'2012-09-01' as mm, 2100 as a from dual union all
   select date'2012-10-01' as mm, -2400 as a from dual union all
   select date'2012-11-01' as mm, 1100 as a from dual union all
   select date'2012-12-01' as mm, 1300 as a from dual
 )

 select mm
      , a
      , sum1(a) over(order by mm) as b
  from t1

    Mm         a      b
 ----------------------------  
 01.01.2012    800    800  
 01.02.2012    1900   2700  
 01.03.2012    1750   4450  
 01.04.2012   -20000  0  
 01.05.2012    900    900  
 01.06.2012    3900   4800  
 01.07.2012   -2600   2200  
 01.08.2012   -2600   0  
 01.09.2012    2100   2100  
 01.10.2012   -2400   0  
 01.11.2012    1100   1100  
 01.12.2012    1300   2400
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;with sample_data as (
  select date'2012-01-01' as mm, 800 as a from dual union all
  select date'2012-02-01' as mm, 1900 as a from dual union all
  select date'2012-03-01' as mm, 1750 as a from dual union all
  select date'2012-04-01' as mm, -20000 as a from dual union all
  select date'2012-05-01' as mm, 900 as a from dual union all
  select date'2012-06-01' as mm, 3900 as a from dual union all
  select date'2012-07-01' as mm, -2600 as a from dual union all
  select date'2012-08-01' as mm, -2600 as a from dual union all
  select date'2012-09-01' as mm, 2100 as a from dual union all
  select date'2012-10-01' as mm, -2400 as a from dual union all
  select date'2012-11-01' as mm, 1100 as a from dual union all
  select date'2012-12-01' as mm, 1300 as a from dual
) 
select mm, 
       a, 
       greatest(nvl(a,0) + lag(a,1,0) over (order by mm), 0) as b
from sample_data;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;그러나 다음과 같은 라인은 &lt;strong&gt;생성&lt;/strong&gt;하지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;font papago-translate=&quot;translated&quot;&gt;2012-05-01 |    900 |  900&lt;/font&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;그 행에서 900에서 20000을 계산하고 그 결과보다 0이 더 크기 때문입니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;만약 당신이 그것을 사용한다면 당신은 그것을 &quot;고칠 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;abs&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;계산에서 부정적인 값을 제거하는 함수.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;Oracle 버전의 질문과 관련하여 주제에서 벗어난 경우 죄송합니다. 이제 SQL:2016 MATCH_RECOMIZE 절을 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;select * from t
match_recognize(
  order by mm
  measures case classifier() when 'POS' then sum(a) else 0 end as b
  all rows per match
  pattern (pos* neg{0,1})
  define pos as sum(a) &amp;gt; 0
);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;언급&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;URL : https://stackoverflow.com/questions/12243488/oracle-sql-analytic-query-recursive-spreadsheet-like-running-total&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>oracle</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1030</guid>
      <comments>https://itgroup.tistory.com/1030#entry1030comment</comments>
      <pubDate>Sat, 4 Nov 2023 10:35:17 +0900</pubDate>
    </item>
    <item>
      <title>div 요소에서 크기 조정</title>
      <link>https://itgroup.tistory.com/1029</link>
      <description>&lt;h2&gt;&lt;font papago-translate=&quot;translated&quot;&gt;div 요소에서 크기 조정&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;jQuery는.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;resize()&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;- 이벤트, 하지만 윈도우에서만 작동합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;jQuery(window).resize(function() { /* What ever */ });
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이 정도면 문제없습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;하지만 디브 요소에 이벤트를 추가하고 싶을 때는 작동이 되지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;예.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;jQuery('div').resize(function() { /* What ever */ });
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;나는 분할 요소의 크기가 바뀌었을 때 콜백을 시작하고 싶습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;크기 조정 가능한 이벤트를 시작하고 싶지 않습니다. 단지 div 요소의 크기가 변경되었는지 확인하는 이벤트일 뿐입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이것을 해결할 수 있는 방법이 있습니까?&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;DIV&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;발사하지 않음&lt;/font&gt;&lt;/font&gt;&lt;code&gt;resize&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이벤트는 코드화한 것을 정확하게 수행할 수는 없지만 &lt;a href=&quot;http://james.padolsey.com/javascript/monitoring-dom-properties/&quot; rel=&quot;noreferrer&quot;&gt;DOM 속성 모니터링&lt;/a&gt;을 조사할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;만약 당신이 실제로 리사이저블과 같은 것으로 작업하고 있고, 그것이 디브의 크기를 바꿀 수 있는 유일한 방법이라면, 당신의 리사이저블 플러그인은 아마도 독자적인 콜백을 구현할 것입니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;저는 요소의 폭이 변경될 때(높이는 상관 없음) 트리거에만 관심이 있었기 때문에 보이지 않는 iframe 요소를 사용하여 바로 그렇게 하는 jquery 이벤트를 만들었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$.event.special.widthChanged = {
  remove: function() {
      $(this).children('iframe.width-changed').remove();
  },
  add: function () {
      var elm = $(this);
      var iframe = elm.children('iframe.width-changed');
      if (!iframe.length) {
          iframe = $('&amp;lt;iframe/&amp;gt;').addClass('width-changed').prependTo(this);
      }
      var oldWidth = elm.width();
      function elmResized() {
          var width = elm.width();
          if (oldWidth != width) {
              elm.trigger('widthChanged', [width, oldWidth]);
              oldWidth = width;
          }
      }

      var timer = 0;
      var ielm = iframe[0];
      (ielm.contentWindow || ielm).onresize = function() {
          clearTimeout(timer);
          timer = setTimeout(elmResized, 20);
      };
  }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;다음과 같은 CSS가 필요합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;iframe.width-changed {
    width: 100%;
    display: block;
    border: 0;
    height: 0;
    margin: 0;
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;당신은 여기서 그것을 &lt;a href=&quot;http://jsfiddle.net/333gu11u/&quot;&gt;실제로&lt;/a&gt; 볼 수 있습니다 width&lt;/font&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;// this is a Jquery plugin function that fires an event when the size of an element is changed
// usage: $().sizeChanged(function(){})

(function ($) {

$.fn.sizeChanged = function (handleFunction) {
    var element = this;
    var lastWidth = element.width();
    var lastHeight = element.height();

    setInterval(function () {
        if (lastWidth === element.width()&amp;amp;&amp;amp;lastHeight === element.height())
            return;
        if (typeof (handleFunction) == 'function') {
            handleFunction({ width: lastWidth, height: lastHeight },
                           { width: element.width(), height: element.height() });
            lastWidth = element.width();
            lastHeight = element.height();
        }
    }, 100);


    return element;
};

}(jQuery));
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;jquery 플러그인 &lt;a href=&quot;https://github.com/jcubic/jquery.resize&quot; rel=&quot;nofollow noreferrer&quot;&gt;jquery를 만들었습니다&lt;/a&gt;.resize는 지원되는 경우 resizeObserver를 사용하거나 &lt;a href=&quot;https://github.com/marcj/css-element-querie&quot; rel=&quot;nofollow noreferrer&quot;&gt;marcj/css-element-query&lt;/a&gt; 스크롤 이벤트에 기반한 솔루션을 사용합니다. setTimeout/set은 없습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;간격.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;당신은 그냥.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; jQuery('div').on('resize', function() { /* What ever */ });
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;또는 resizer plugin으로서&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;jQuery('div').resizer(function() { /* What ever */ });
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;jQuery Terminal용으로 이것을 만들고 분리된 repo와 npm 패키지로 추출했지만, 그동안 iframe 안에 요소가 있으면 크기를 조정하는 데 문제가 있어서 hidden iframe으로 전환했습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;그에 따라 플러그인을 업데이트 할 수 있습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&lt;a href=&quot;https://github.com/jcubic/jquery.terminal/blob/44b4febe232f42dedaa9ea0fda0258905d17075e/js/jquery.terminal-src.js#L743&quot; rel=&quot;nofollow noreferrer&quot;&gt;iframe 기반 리사이저 플러그인은 jQuery Terminal 소스 코드&lt;/a&gt;에서 확인할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&lt;strong&gt;편집&lt;/strong&gt;: 페이지가 iframe 안에 있을 때 이전 솔루션이 작동하지 않았기 때문에 새 버전은 iframe을 사용하고 창 개체의 크기를 조정합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&lt;strong&gt;EDIT2&lt;/strong&gt;: 폴백은 폼컨트롤이나 이미지와 함께 사용할 수 없는 프레임이므로 래퍼 요소에 추가해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&lt;strong&gt;EDIT3::&lt;/strong&gt; 돌연변이 관찰자(ResignizeObserver가 지원되지 않는 경우)를 사용하고 IE에서도 작동하는 &lt;a href=&quot;https://www.npmjs.com/package/resize-observer-polyfill&quot; rel=&quot;nofollow noreferrer&quot;&gt;resignizeObserver 폴리필&lt;/a&gt;을 사용하는 것이 더 나은 솔루션입니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;TypeScript 타이핑 기능도 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;올해 출시된 기본 자바스크립트와 jQuery용으로 정말 멋지고 사용하기 쉬운 경량(탐지를 위해 네이티브 브라우저 이벤트 사용) 플러그인이 있습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;완벽하게 작동합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/sdecima/javascript-detect-element-resize&quot; rel=&quot;noreferrer&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;https://github.com/sdecima/javascript-detect-element-resize&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이것은 어떻습니까?&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;divH = divW = 0;
jQuery(document).ready(function(){
    divW = jQuery(&quot;div&quot;).width();
    divH = jQuery(&quot;div&quot;).height();
});
function checkResize(){
    var w = jQuery(&quot;div&quot;).width();
    var h = jQuery(&quot;div&quot;).height();
    if (w != divW || h != divH) {
        /*what ever*/
        divH = h;
        divW = w;
    }
}
jQuery(window).resize(checkResize);
var timer = setInterval(checkResize, 1000);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;그건 그렇고 디브에 id를 추가하고 $(&quot;div&quot;)를 $(&quot;#yourid&quot;)로 변경하는 것을 제안합니다. 더 빨라질 것이고 나중에 다른 디브를 추가해도 깨지지 않습니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver&quot; rel=&quot;nofollow noreferrer&quot;&gt;관찰자 크기&lt;/a&gt; 조정 기능이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;다음과 같이 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;const resizeObserver = new ResizeObserver((entries) =&amp;gt; {
  entries.forEach(console.log);
})
resizeObserver.observe(document.getElementById(&quot;ExampleElement&quot;));
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;창만 지원됩니다. yes(예). 그러나 플러그인을 사용할 수 있습니다. http://benalman.com/projects/jquery-resize-plugin/&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;구글 지도 통합을 위해 나는 디브의 크기가 언제 변했는지를 감지하는 방법을 찾고 있었습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;구글 맵은 항상 제대로 렌더링하기 위해 폭과 높이 등의 적절한 치수가 필요하기 때문입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;제가 생각해낸 해결책은 이벤트의 위임입니다. 탭 클릭의 경우입니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;물론 창 크기가 조정될 수도 있지만, 아이디어는 그대로입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;if (parent.is(':visible')) {
    w = parent.outerWidth(false);
    h = w * mapRatio /*9/16*/;
    this.map.css({ width: w, height: h });
} else {
    this.map.closest('.tab').one('click', function() {
        this.activate();
    }.bind(this));
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;code&gt;this.map&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이 경우는 제 지도 디브입니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;로드 시 부모님이 보이지 않기 때문에 계산된 너비와 높이가 0이거나 일치하지 않습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;사용함으로써&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.bind(this)&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;스크립트 실행을 위임할 수 있습니다(&lt;/font&gt;&lt;/font&gt;&lt;code&gt;this.activate&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이벤트에()&lt;/font&gt;&lt;/font&gt;&lt;code&gt;click&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;).&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이제 이벤트 크기 조정에도 동일하게 적용된다고 확신합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(window).one('resize', function() {
    this.div.css({ /*whatever*/ });
}.bind(this));
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;누구에게나 도움이 되길 바랍니다!&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;화면 크기: HTML에 따라 텍스트 또는 내용 또는 속성을 변경할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;p class=&quot;change&quot;&amp;gt;Frequently Asked Questions (FAQ)&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;change&quot;&amp;gt;Frequently Asked Questions &amp;lt;/p&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;자바스크립트:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;script&amp;gt;
const changeText = document.querySelector('.change');
function resize() {
  if((window.innerWidth&amp;lt;500)&amp;amp;&amp;amp;(changeText.textContent=&quot;Frequently Asked Questions (FAQ)&quot;)){
    changeText.textContent=&quot;FAQ&quot;;
  } else {
    changeText.textContent=&quot;Frequently Asked Questions (FAQ)&quot;;
  }
}
window.onresize = resize;
&amp;lt;/script&amp;gt;
&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;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;document.addEventListener('transitionend', function(e) {
  if ($(e.target).is(&quot;div&quot;)) {
    $(&quot;div&quot;).text(&quot;width: &quot;+$(&quot;div&quot;).width());
  }
});
$(&quot;div&quot;).css({&quot;width&quot;:&quot;150px&quot;});&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://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;div style=&quot;width: 100px;transition-delay: 0.000000001s;&quot;&amp;gt;width: 100&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&gt;&lt;font papago-translate=&quot;translated&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-html lang-html prettyprint-override&quot;&gt;&lt;code&gt;    &amp;lt;script&amp;gt;
    var move = function(e) {
        if ((e.w &amp;amp;&amp;amp; e.w !== e.offsetWidth) || (e.h &amp;amp;&amp;amp; e.h !== e.offsetHeight)) {
            new Function(e.getAttribute('onresize')).call(e);
        }
        e.w = e.offsetWidth;
        e.h = e.offsetHeight;
    }
    var resize = function() {
        console.log('Resized')
    }
    &amp;lt;/script&amp;gt;

    &amp;lt;style&amp;gt;
    .resizable {
        resize: both;
        overflow: auto;
        width: 200px;
        border: 1px solid black;
        padding: 20px;
    }
    &amp;lt;/style&amp;gt;

    &amp;lt;div class='resizable' onresize=&quot;resize(this)&quot; onmousemove=&quot;move(this)&quot;&amp;gt;
      Pure vanilla implementation
    &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&gt;&lt;font papago-translate=&quot;translated&quot;&gt;div 자체의 크기를 조정하려면 css 스타일로 지정해야 합니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&lt;strong&gt;오버플로&lt;/strong&gt;를 추가하고 &lt;strong&gt;속성 크기&lt;/strong&gt;를 조정해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;아래는 나의 코드 스니펫입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;#div1 {
        width: 90%;
        height: 350px;
        padding: 10px;
        border: 1px solid #aaaaaa;
        overflow: auto;
        resize: both;
    }

&amp;lt;div id=&quot;div1&quot;&amp;gt;

&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;언급&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;URL : https://stackoverflow.com/questions/10086693/resize-on-div-element&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>jQuery</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1029</guid>
      <comments>https://itgroup.tistory.com/1029#entry1029comment</comments>
      <pubDate>Sat, 4 Nov 2023 10:35:07 +0900</pubDate>
    </item>
    <item>
      <title>각진 문자열에 배열제이에스 앤 로다시</title>
      <link>https://itgroup.tistory.com/1028</link>
      <description>&lt;h2&gt;&lt;font papago-translate=&quot;translated&quot;&gt;각진 문자열에 배열&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;제이에스 앤 로다시&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;다음과 같은 배열($scope.paxlist)이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;[
   {&quot;name&quot;:&quot;Maria&quot;,&quot;chosen&quot;:false},
   {&quot;name&quot;:&quot;Jenny&quot;,&quot;chosen&quot;:false},
   {&quot;name&quot;:&quot;Ben&quot;,&quot;chosen&quot;:false},
   {&quot;name&quot;:&quot;Morris&quot;,&quot;chosen&quot;:false}
]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;값만 가져오면 됩니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;name&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;ng-CSV를 제대로 사용할 수 있도록 문자열로 변환합니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;원하는 출력은 다음과 같습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$scope.var = &quot;Maria, Jenny, Ben, Morris&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;Angular와 Lodash가 이미 로드되어 있음을 고려할 때, 누가 이 작업을 고통 없이 수행할 수 있는 도구를 이미 가지고 있는지 지적해 줄 수 있습니까?&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;자바스크립트의 &lt;strong&gt;네이티브&lt;/strong&gt; 맵을 이용하면 아래와 같이 할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var data = [
   {&quot;name&quot;:&quot;Maria&quot;,&quot;chosen&quot;:false},
   {&quot;name&quot;:&quot;Jenny&quot;,&quot;chosen&quot;:false},
   {&quot;name&quot;:&quot;Ben&quot;,&quot;chosen&quot;:false},
   {&quot;name&quot;:&quot;Morris&quot;,&quot;chosen&quot;:false}
];

data.map(function(obj){return obj.name;}).join(', '); // returns the expected output.
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;&lt;font papago-translate=&quot;translated&quot;&gt;Lodash 사용하기&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;_.map(data,'name').join(', ')
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;Lodash는 개체 목록에서 속성을 추출할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$scope.var = _.pluck($scope.paxlist, 'name').join(', ');
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&lt;a href=&quot;https://lodash.com/docs#map&quot; rel=&quot;nofollow&quot;&gt;_.map&lt;/a&gt; 또는 &lt;a href=&quot;https://lodash.com/docs#pluck&quot; rel=&quot;nofollow&quot;&gt;_.pluck&lt;/a&gt;을 이렇게 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$scope.var = _.map($scope.paxlist, 'name').join(', ');
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;아니면&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$scope.var = _.pluck($scope.paxlist, 'name').join(', ');
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;Mrtyunjay의 답변을 사용하여 문자열 배열을 문자열로 변환하는 다른 버전의 답변입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;const _ = require('lodash');
const data = ['abc','xyz','123'];
const translated = _.map(data).join(', ');
console.log(`result: ${translated}`);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;언급&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;URL : https://stackoverflow.com/questions/27605014/array-to-string-with-angularjs-and-lodash&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>AngularJS</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1028</guid>
      <comments>https://itgroup.tistory.com/1028#entry1028comment</comments>
      <pubDate>Sat, 4 Nov 2023 10:34:57 +0900</pubDate>
    </item>
    <item>
      <title>XDocument를 XmlDocument로 변환하거나 그 반대의 경우</title>
      <link>https://itgroup.tistory.com/1027</link>
      <description>&lt;h2&gt;&lt;font papago-translate=&quot;translated&quot;&gt;XDocument를 XmlDocument로 변환하거나 그 반대의 경우&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;제가 가지고 있는 아주 간단한 문제입니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;저는 XML 파일을 생성하기 위해 XDocument를 사용합니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;그럼 XmlDocument 클래스로 반품하고 싶습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;그리고 XmlDocument 변수를 추가하기 위해 XDocument로 다시 변환해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;그렇다면 XDocument와 XmlDocument 간에 XML을 변환하는 &lt;em&gt;가장 효율적&lt;/em&gt;인 방법은 무엇일까요? (파일에 임시 저장소를 사용하지 않고)&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;내장된 xDocument를 사용할 수 있습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;Reader()와 XmlNodeReader를 만들어 앞뒤로 변환합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;작업하기 쉽도록 Extension 메서드에 추가합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;using System;
using System.Xml;
using System.Xml.Linq;

namespace MyTest
{
    internal class Program
    {
        private static void Main(string[] args)
        {

            var xmlDocument = new XmlDocument();
            xmlDocument.LoadXml(&quot;&amp;lt;Root&amp;gt;&amp;lt;Child&amp;gt;Test&amp;lt;/Child&amp;gt;&amp;lt;/Root&amp;gt;&quot;);

            var xDocument = xmlDocument.ToXDocument();
            var newXmlDocument = xDocument.ToXmlDocument();
            Console.ReadLine();
        }
    }

    public static class DocumentExtensions
    {
        public static XmlDocument ToXmlDocument(this XDocument xDocument)
        {
            var xmlDocument = new XmlDocument();
            using(var xmlReader = xDocument.CreateReader())
            {
                xmlDocument.Load(xmlReader);
            }
            return xmlDocument;
        }

        public static XDocument ToXDocument(this XmlDocument xmlDocument)
        {
            using (var nodeReader = new XmlNodeReader(xmlDocument))
            {
                nodeReader.MoveToContent();
                return XDocument.Load(nodeReader);
            }
        }
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;출처:&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/bb356384.aspx&quot; rel=&quot;nofollow noreferrer&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;http://msdn.microsoft.com/en-us/library/bb356384.aspx&lt;/font&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://web.archive.org/web/20170115010337/http://geekswithblogs.net/aspringer/archive/2009/07/01/xdocument-extension.aspx&quot; rel=&quot;nofollow noreferrer&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;링크&lt;/font&gt;&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;저에게 이 한 줄 솔루션은 매우 잘 작동합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;XDocument y = XDocument.Parse(pXmldoc.OuterXml); // where pXmldoc is of type XMLDocument
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;시스템 인스턴스를 변환해야 하는 경우.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;Xml.Linq.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;시스템 인스턴스에 X 문서화.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;Xml.XmlDocument이 확장 방법은 결과적인 XmlDocument 인스턴스에서 &lt;strong&gt;XML&lt;/strong&gt; 선언을 &lt;strong&gt;잃지 않도록 도와줍니다&lt;/strong&gt;.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;using System.Xml; 
using System.Xml.Linq;

namespace www.dimaka.com
{ 
    internal static class LinqHelper 
    { 
        public static XmlDocument ToXmlDocument(this XDocument xDocument) 
        { 
            var xmlDocument = new XmlDocument(); 
            using (var reader = xDocument.CreateReader()) 
            { 
                xmlDocument.Load(reader); 
            }

            var xDeclaration = xDocument.Declaration; 
            if (xDeclaration != null) 
            { 
                var xmlDeclaration = xmlDocument.CreateXmlDeclaration( 
                    xDeclaration.Version, 
                    xDeclaration.Encoding, 
                    xDeclaration.Standalone);

                xmlDocument.InsertBefore(xmlDeclaration, xmlDocument.FirstChild); 
            }

            return xmlDocument; 
        } 
    } 
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;도움이 되기를 바랍니다!&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;XmlDocument용 XmlReader에 연결된 XmlWriter에 XDocument를 작성해 볼 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;개념을 제대로 이해하면 직접적인 변환이 불가능합니다(XDocument로 내부 구조가 다르거나 단순화됨).&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;하지만, 내가 틀렸을지도..&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;http://blogs.msdn.com/marcelolr/archive/2009/03/13/fast-way-to-convert-xmldocument-into-xdocument.aspx 에서 토론이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&lt;strong&gt;XmlNodeReader&lt;/strong&gt;를 통해 XD 문서를 읽는 것이 가장 빠른 방법인 것 같습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;자세한 내용은 블로그를 참고하세요.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;Win 10 UWP 호환 버전이 필요한 경우:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;using DomXmlDocument = Windows.Data.Xml.Dom.XmlDocument;

    public static class DocumentExtensions
    {
        public static XmlDocument ToXmlDocument(this XDocument xDocument)
        {
            var xmlDocument = new XmlDocument();
            using (var xmlReader = xDocument.CreateReader())
            {
                xmlDocument.Load(xmlReader);
            }
            return xmlDocument;
        }

        public static DomXmlDocument ToDomXmlDocument(this XDocument xDocument)
        {
            var xmlDocument = new DomXmlDocument();
            using (var xmlReader = xDocument.CreateReader())
            {
                xmlDocument.LoadXml(xmlReader.ReadOuterXml());
            }
            return xmlDocument;
        }

        public static XDocument ToXDocument(this XmlDocument xmlDocument)
        {
            using (var memStream = new MemoryStream())
            {
                using (var w = XmlWriter.Create(memStream))
                {
                    xmlDocument.WriteContentTo(w);
                }
                memStream.Seek(0, SeekOrigin.Begin);
                using (var r = XmlReader.Create(memStream))
                {
                    return XDocument.Load(r);
                }
            }
        }

        public static XDocument ToXDocument(this DomXmlDocument xmlDocument)
        {
            using (var memStream = new MemoryStream())
            {
                using (var w = XmlWriter.Create(memStream))
                {
                    w.WriteRaw(xmlDocument.GetXml());
                }
                memStream.Seek(0, SeekOrigin.Begin);
                using (var r = XmlReader.Create(memStream))
                {
                    return XDocument.Load(r);
                }
            }
        }
    }
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;언급&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;URL : https://stackoverflow.com/questions/1508572/converting-xdocument-to-xmldocument-and-vice-versa&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>xml</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1027</guid>
      <comments>https://itgroup.tistory.com/1027#entry1027comment</comments>
      <pubDate>Sat, 4 Nov 2023 10:34:51 +0900</pubDate>
    </item>
    <item>
      <title>개체가 클래스 유형인지 확인합니다.</title>
      <link>https://itgroup.tistory.com/1026</link>
      <description>&lt;h2&gt;&lt;font papago-translate=&quot;translated&quot;&gt;개체가 클래스 유형인지 확인합니다.&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;나는 a를 받는 방법이 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;NSArray&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;의&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Class&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;물건들과 모든 물건들이&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Class&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;아래 코드와 함께 생성된 유형:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;NSMutableArray *arr = [[NSMutableArray alloc] init];

[arr addObject:[NSObject class]];
[arr addObject:[NSValue class]];
[arr addObject:[NSNumber class]];
[arr addObject:[NSPredicate class]];
[arr addObject:@&quot;not a class object&quot;];
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;문제는.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Class&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;objective-c 클래스가 아니라 struct이므로 그냥 사용할 수 없습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;    for (int i; i&amp;lt;[arr count]; i++) {
        Class obj = [arr objectAtIndex:i];

        if([obj isKindOfClass: [Class class]]) {
            //do sth
        }
    }
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;그래서, 제가 확인해 봐야 해요.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;obj&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;변수는 a.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Class&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;타이프, 아마 안에 있을 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;C&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;직접적으로, 하지만 어떻게 해야 할까요?&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;답변에서 배열의 항목이 다음 항목인지 확인할 수 있는 방법도 제시한다면 이점이 될 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;NSObject&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;, 예제 코드의 항목으로서,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;NSPredicate&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;또한&lt;/font&gt;&lt;/font&gt;&lt;code&gt;true&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;를 위해&lt;/font&gt;&lt;/font&gt;&lt;code&gt;NSObject&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;확인.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&quot;객체&quot;가 클래스인지 인스턴스인지 확인하려면 2단계 프로세스에서 &lt;a href=&quot;http://cocoawithlove.com/2010/01/what-is-meta-class-in-objective-c.html&quot; rel=&quot;noreferrer&quot;&gt;메타 클래스&lt;/a&gt;인지 확인해야 합니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;먼저 전화를 걸어 메타 클래스인지 확인합니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;당신은 필요할 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;#import &amp;lt;objc/runtime.h&amp;gt;&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;NSObject *object = [[NSObject alloc] init];
Class class = [NSObject class];

BOOL yup = class_isMetaClass(object_getClass(class));
BOOL nope = class_isMetaClass(object_getClass(object));
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;둘다요.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Class&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;그리고.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;*id&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;동일한 구조 레이아웃(&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Class isa&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;), 따라서 객체로 행세할 수 있으며 둘 다 메시지를 수신할 수 있으므로 어떤 것이 어떤 것인지 결정하기가 어렵습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이것이 제가 일관된 결과를 얻을 수 있었던 유일한 방법인 것 같습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;font papago-translate=&quot;translated&quot;&gt;편집:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;다음은 수표의 원래 예입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;NSMutableArray *arr = [[NSMutableArray alloc] init];

[arr addObject:[NSObject class]];
[arr addObject:[NSValue class]];
[arr addObject:[NSNumber class]];
[arr addObject:[NSPredicate class]];
[arr addObject:@&quot;not a class object&quot;];

for (int i; i&amp;lt;[arr count]; i++) {
    id obj = [arr objectAtIndex:i];

    if(class_isMetaClass(object_getClass(obj)))
    {
        //do sth
        NSLog(@&quot;Class: %@&quot;, obj);
    }
    else
    {
        NSLog(@&quot;Instance: %@&quot;, obj);
    }
}

[arr release];
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;그리고 출력:&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;클래스: NSObject&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;클래스: NSValue&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;클래스: NSNumber&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;클래스: NS 술어&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;인스턴스: 클래스 개체가 아님&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&lt;strong&gt;업데이트:&lt;/strong&gt; iOS 8+ 또는 OS X 10.10+에서는 다음 작업을 수행할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;object_isClass(obj)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;(필요할 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;#import &amp;lt;objc/runtime.h&amp;gt;&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;.)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;조의 대답은 좋습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;대부분의 상황에서 작동하는 간단한 대안은 개체가 응답하여 자신을 반환하는지 확인하는 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;class&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;if ([obj class] == obj) { … }
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이것은 효과가 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;NSObject&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;메타 클래스 재정의&lt;/font&gt;&lt;/font&gt;&lt;code&gt;class&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;클래스 개체(자체)를 반환합니다. &lt;a href=&quot;https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/index.html#//apple_ref/occ/clm/NSObject/class&quot; rel=&quot;noreferrer&quot;&gt;NSObject Class Reference&lt;/a&gt;를 참조하십시오.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;런타임 헤더가 필요하지는 않지만 개체가 다음의 하위 클래스라고 가정합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;NSObject&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;그리고 오버라이드 하지 마세요.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;-class&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;아니면&lt;/font&gt;&lt;/font&gt;&lt;code&gt;+class&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;특이한 일을 할 겁니다&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;hr&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;질문의 입력을 사용하면 결과는 Joe의 결과와 동일합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;NSMutableArray *arr = [[NSMutableArray alloc] init];

[arr addObject:[NSObject class]];
[arr addObject:[NSValue class]];
[arr addObject:[NSNumber class]];
[arr addObject:[NSPredicate class]];
[arr addObject:@&quot;not a class object&quot;];

for (id&amp;lt;NSObject&amp;gt; obj in arr) {

    if ([obj class] == obj) {
        NSLog(@&quot;Class: %@&quot;, obj);
    }
    else {
        NSLog(@&quot;Instance: %@&quot;, obj);
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;클래스: NSObject&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;클래스: NSValue&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;클래스: NSNumber&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;클래스: NS 술어&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;인스턴스: 클래스 개체가 아님&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt;&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;배열의 개체가 다음 개체인지 확인해야 하는 경우&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Class&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;object 그러면 클래스 메소드에 응답하는지 확인할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;for ( id obj in arr ) {
    if (([obj respondsToSelector:@selector(isSubclassOfClass:)])
          &amp;amp;&amp;amp; (obj == [NSObject class]) ) {
        NSLog(@&quot;%@&quot;, obj);
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;일단 당신이 그것이 a라는 것을 알게되면.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Class&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;개체가 응답하는지 확인하여 개체&lt;/font&gt;&lt;/font&gt;&lt;code&gt;isSubclassOfClass:&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;그러면 당신은 당신과 직접적인 동등함을 확인할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;[NSObject class]&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;문제될 것이 없습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;if([NSStringFromClass([obj class]) isEqualToString:@&quot;Class&quot;]){
    NSLog(@&quot;It is type of Class&quot;);
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;&lt;font papago-translate=&quot;translated&quot;&gt;편집&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;또는 Class가 프로토콜을 준수하도록 할 수도 있습니다. 그리고 배열에서 얻은 obj가 이 프로토콜을 준수하는지 확인할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;if([obj conformsToProtocol:@protocol(MyClassProtocol)])
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;&lt;font papago-translate=&quot;translated&quot;&gt;편집&lt;/font&gt;&lt;/strong&gt; &lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;또는 배열에서 가져온 것이 NSObjectComplement인지 확인할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;if ([object conformsToProtocol:@protocol(NSObject)]) {
    // Do something
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;언급&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;URL : https://stackoverflow.com/questions/6536244/check-if-object-is-class-type&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>C</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1026</guid>
      <comments>https://itgroup.tistory.com/1026#entry1026comment</comments>
      <pubDate>Sat, 4 Nov 2023 10:34:42 +0900</pubDate>
    </item>
    <item>
      <title>케이크 pp에서 아약스 요청을 확인하는 방법은?</title>
      <link>https://itgroup.tistory.com/1025</link>
      <description>&lt;h2&gt;&lt;font papago-translate=&quot;translated&quot;&gt;케이크 pp에서 아약스 요청을 확인하는 방법은?&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;케이크 pp에서 아약스 요청을 확인하는 방법은?&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;케이크의 버전에 따라 다릅니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;1.3.x:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$this-&amp;gt;RequestHandler-&amp;gt;isAjax();
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;2.x || 3.x&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$this-&amp;gt;request-&amp;gt;is('ajax');
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot;&gt;RequestHandler 구성 요소를 활성화해야 합니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;code&gt;var $components = array('RequestHandler');&lt;/code&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot;&gt;그런 다음 다음 컨트롤러에서 ajax 요청인지 확인합니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;code&gt;$this-&amp;gt;RequestHandler-&amp;gt;isAjax()&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&lt;a href=&quot;http://book.cakephp.org/view/350/Obtaining-Request-Information&quot; rel=&quot;nofollow noreferrer&quot;&gt;RequestHandler 구성&lt;/a&gt; 요소에 대한 자세한 정보는 &lt;a href=&quot;http://book.cakephp.org/view/350/Obtaining-Request-Information&quot; rel=&quot;nofollow noreferrer&quot;&gt;여기&lt;/a&gt;에서 확인할 수 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이 질문은 오래된 질문이지만 만약 누군가가 나처럼 이런 것을 발견하고 CakePHP 2를 사용할 경우를 대비합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;RequestHandler::isAjax()&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;더 이상 사용되지 않습니다. 요청 개체를 사용합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;$this-&amp;gt;request-&amp;gt;is('ajax');&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;자세한 내용은 &lt;a href=&quot;http://book.cakephp.org/2.0/en/controllers/request-response.html#inspecting-the-request&quot; rel=&quot;noreferrer&quot;&gt;여기에&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;구성 요소를 사용하지 않아도 다음과 같은 것을 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;font papago-translate=&quot;translated&quot;&gt;$this-&amp;gt;params['Is Ajax'];&lt;/font&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이렇게 하면 불티나게 됩니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이것이 휘쉬가 의사라고 묘사되는 방법입니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;저는 cakephp를 사용하기 시작했을 때부터 사용해왔습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;if($this-&amp;gt;RequestHandler-&amp;gt;isAjax()){
//
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;단순히 php 측면의 기능을 확인하고 싶다면 다음을 시도해 보십시오.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$this-&amp;gt;log('some debug',LOG_DEBUG);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;app/tmp/ logs/ debug.log를 확인합니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;언급&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;URL : https://stackoverflow.com/questions/2114832/how-to-check-an-ajax-request-in-cakephp&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>Ajax</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1025</guid>
      <comments>https://itgroup.tistory.com/1025#entry1025comment</comments>
      <pubDate>Sat, 4 Nov 2023 10:34:34 +0900</pubDate>
    </item>
    <item>
      <title>워드프레스:게시물의 특정 URL 자동 변경</title>
      <link>https://itgroup.tistory.com/1024</link>
      <description>&lt;h2&gt;&lt;font papago-translate=&quot;translated&quot;&gt;워드프레스:&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;게시물의 특정 URL 자동 변경&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;제 워드프레스 테마에서 링크를 변경할 수 있는 해결책을 찾았지만 내용의 링크는 변경할 수 없었습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;컨텐츠에 있는 URL을 어떻게 얻을 수 있는데 변경도 가능합니까?&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;사용할 필요가 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;the content&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;거름망을 치다&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;그런데 어떻게 apple.com/test/ apple.com/test-123/, apple.com, microsoft.com, microsoft.com/test/ 같은 URL을 바꿀 수 있을까요?&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;또한 이 기능은 컨텐츠에 일치하는 URL마다 올바르게 변경되어야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;add_filter('the_content ', 'function_name');
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;불행하게도 &lt;a href=&quot;https://wordpress.stackexchange.com/questions/357790/change-links-automatically-to-affiliate-links&quot;&gt;비슷한 질문의 답&lt;/a&gt;은 통하지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이것은 링크를 변경하는 제 작업 솔루션이지만 내용의 링크는 변경하지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-php prettyprint-override&quot;&gt;&lt;code&gt;add_filter('rh_post_offer_url_filter', 'link_change_custom');
function link_change_custom($offer_post_url){

$shops= array(
        array('shop'=&amp;gt;'apple.com','id'=&amp;gt;'1234'),
        array('shop'=&amp;gt;'microsoft.com','id'=&amp;gt;'5678'),
        array('shop'=&amp;gt;'dell.com','id'=&amp;gt;'9876'), 
    );
    foreach( $shops as $rule ) {
        if (!empty($offer_post_url) &amp;amp;&amp;amp; strpos($offer_post_url, $rule['shop']) !== false) {      
            $offer_post_url = 'https://www.network.com/promotion/click/id='.$rule['id'].'-yxz?param0='.rawurlencode($offer_post_url);
}    
    }
$shops2= array(
        array('shop'=&amp;gt;'example.com','id'=&amp;gt;'1234'),
        array('shop'=&amp;gt;'domain2.com','id'=&amp;gt;'5678'),
        array('shop'=&amp;gt;'domain3','id'=&amp;gt;'9876'),  
    );
    foreach( $shops2 as $rule ) {
        if (!empty($offer_post_url) &amp;amp;&amp;amp; strpos($offer_post_url, $rule['shop']) !== false) {      
            $offer_post_url = 'https://www.second-network.com/promotion/click/id='.$rule['id'].'-yxz?param0='.rawurlencode($offer_post_url);
}    
    }

        return $offer_post_url; 
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;내가 당신을 제대로 이해했다면, 그것이 당신에게 필요한 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;add_filter( 'the_content', 'replace_links_by_promotions' );
function replace_links_by_promotions( $content ) {
    $shop_ids = array(
        'apple.com'     =&amp;gt; '1234',
        'microsoft.com' =&amp;gt; '5678',
        'dell.com'      =&amp;gt; '9876',
    );

    preg_match_all( '/https?:\/\/(www\.)?([-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6})\b([-a-zA-Z0-9()@:%_\+.~#?&amp;amp;\/=]*)/', $content, $matches, PREG_OFFSET_CAPTURE );

    foreach ( $matches[2] as $index =&amp;gt; $match ) {
        if ( ! isset( $shop_ids[ $match[0] ] ) ) {
            continue;
        }

        $offer_post_url = 'https://www.network.com/promotion/click/id=' . $shop_ids[ $match[0] ] . '-yxz?param0=' . rawurlencode( $matches[0][ $index ][0] );
        $content        = substr_replace( $content, $offer_post_url, $matches[0][ $index ][1], strlen( $matches[0][ $index ][0] ) );
    }

    return $content;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이거 되는 것 같아요.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;작성된 대로 모든 &quot;apple&quot;, &quot;dell.&quot; 및 &quot;microsoft.&quot; 링크는 게시물, 페이지, 발췌물, 많은 사용자 지정 게시물 유형 등 콘텐츠 필터를 사용하는 모든 유형의 콘텐츠와 일치합니다. 따라서, 만약 여러분이 그것을 정말 원하지 않고, 잘 원하지 않을 수도 있다면, 주 대체 기능은 조건부화되어야 하고, regex 기능은 조건부화되어야 합니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;더 정확하게 목표물로 삼으면 복잡해질 수 있습니다&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;(그리고 생각해보니, Regex에서 찾은 앵커 태그의 인용문이 특별한 처리가 필요할지 잘 모르겠습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;만약 이것이 안된다면, 우리도 그것을 볼 수 있습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;아니면 DOM 구문 분석기로 전환할 수도 있습니다. 처음부터 시작했어야 했는데...)&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;/** INITIATE FILTER FUNCTION **/
add_filter( 'the_content', 'wpso_change_urls' ) ;

/**
 * PREG CALLBACK FUNCTION
 * Match Matches to id #s
 * and return replacement urls enclosed in quotes (as found)
 */ 
function wpso_found_urls( $matches ) { 

  //someone else probably has a v clever parsimonious way to do this next part
  //but at least this makes what's happening easy to read
  if ( strpos( $matches[0], 'apple' ) ) {

      $id = '1234' ;

  } 

  if ( strpos( $matches[0], 'microsoft' ) ) {

      $id = '5678' ;

  } 

  if ( strpos( $matches[0], 'dell' ) ) {

      $id = '9876' ;

  } 

  $raw_url = trim( $matches[0], '&quot;' ) ;

  return '&quot;https://www.network.com/promotion/click/id='. $id .'-yxz?param0='.rawurlencode( $raw_url) . '&quot;' ; 

}

/** ENDURING A DREADFUL FATE USING REGEX TO PARSE HTML **/
function wpso_change_urls( $content ) { 

    $find_urls = array( 
        '/&quot;+(http|https)(\:\/\/\S*apple.\S*&quot;)/',
        '/&quot;+(http|https)(\:\/\/\S*microsoft.\S*&quot;)/',
        '/&quot;+(http|https)(\:\/\/\S*dell.\S*&quot;)/',
    );

    return preg_replace_callback( $find_urls, 'wpso_found_urls', $content ) ; 

}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;반환(참고: 인코딩 전 &quot;raw URL&quot;에서 따옴표를 자르기 전 예):&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://i.stack.imgur.com/67SJR.jpg&quot; rel=&quot;nofollow noreferrer&quot;&gt;&lt;img src=&quot;https://i.stack.imgur.com/67SJR.jpg&quot; alt=&quot;Converted Links&quot;&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;...원본(포스트 에디터) 콘텐츠에서 다음과 같은 내용이 제공됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://i.stack.imgur.com/dL7N1.jpg&quot; rel=&quot;nofollow noreferrer&quot;&gt;&lt;img src=&quot;https://i.stack.imgur.com/dL7N1.jpg&quot; alt=&quot;enter image description here&quot;&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;다음과 같은 것을 사용해 볼 수도 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;the_content&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이 작업을 수행하기 위해 필터:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;add_filter('the_content', function($content){

  // filter $content and replace urls
  $content = str_replace('http://old-url', 'http://new-url', $content);

  return $content;
});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;자세한 내용: https://developer.wordpress.org/reference/hooks/the_content/&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;언급&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;URL : https://stackoverflow.com/questions/60829912/wordpress-automatically-change-specific-urls-in-posts&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>WordPress</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1024</guid>
      <comments>https://itgroup.tistory.com/1024#entry1024comment</comments>
      <pubDate>Sat, 4 Nov 2023 10:34:28 +0900</pubDate>
    </item>
    <item>
      <title>어떤 컴파일러가 실행 파일을 컴파일하는 데 사용되었는지 결정하는 방법은 무엇입니까?</title>
      <link>https://itgroup.tistory.com/1023</link>
      <description>&lt;h2&gt;&lt;font papago-translate=&quot;translated&quot;&gt;어떤 컴파일러가 실행 파일을 컴파일하는 데 사용되었는지 결정하는 방법은 무엇입니까?&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;컴파일된 파일에서 어떤 컴파일러가 파일을 생성하는데 사용되었는지 알 수 있습니까?&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;또한 오래된 '끈'의 유용성도 있습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이진에서 찾은 모든 아스키-ish 모양 문자열을 덤프합니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;컴파일러마다 생성하는 바이너리에 서로 다른 양의 정보를 포함시키지만 실제로는 많은 컴파일러가 문자열을 식별하는 것을 포함합니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;많은 컴파일러/링커들이 A를 삽입합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.comment&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;출력 파일의 섹션을 참조하여 식별할 수 있습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;컴파일러 지문을 생성할 수 있는 몇 가지 미묘한 동작도 있지만, 이를 위한 기존 도구는 없습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;소스가 있는 경우 바이트 단위로 일치하는 바이너리를 얻을 때까지 해당 컴파일러를 사용하여 컴파일을 시도하는 것이 가장 쉬운 해결책입니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;경우에 따라 실행할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ldd&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;바이너리에 접속해서 어떤 표준 라이브러리와 연결되어 있는지 알아보세요.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;예를 들어 Solaris gcc vs Sun CC vs what.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;C++ 코드의 경우, 일부 기호를 덤프하고 망글 함수 이름을 찾은 다음 어떤 디맨글러가 올바른 원래 이름을 생성하는지 확인할 수도 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;실행 파일을 구축하는 데 사용되는 라이브러리와 도구를 식별하는 &lt;a href=&quot;http://www.hex-rays.com/idapro/idadownfreeware.htm&quot; rel=&quot;nofollow&quot;&gt;IDA Pro&lt;/a&gt;를 시도해 보십시오.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;저는 블루팀 웹사이트에서 퀴즈를 맞추는데 문제였습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;나는 그 해결책을 &quot;라는 도구를 사용해서 찾았습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;PE Detective&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;, 그는 EXE에서 서명을 찾고 있고, 정말 잘 작동합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.softpedia.com/get/System/File-Management/PE-Detective.shtml&quot; rel=&quot;nofollow noreferrer&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;https://www.softpedia.com/get/System/File-Management/PE-Detective.shtml&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;언급&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;URL : https://stackoverflow.com/questions/4554510/how-to-determine-which-compiler-has-been-used-to-compile-an-executable&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>C</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1023</guid>
      <comments>https://itgroup.tistory.com/1023#entry1023comment</comments>
      <pubDate>Sat, 4 Nov 2023 10:34:19 +0900</pubDate>
    </item>
    <item>
      <title>jQuery 클릭 / 두 함수 간 전환</title>
      <link>https://itgroup.tistory.com/1022</link>
      <description>&lt;h2&gt;&lt;font papago-translate=&quot;translated&quot;&gt;jQuery 클릭 / 두 함수 간 전환&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;저는 어떤 것을 클릭했을 때 두 개의 별개의 작업/기능/&quot;코드 블록&quot;을 실행하고 같은 것을 다시 클릭했을 때 완전히 다른 블록을 실행하는 방법을 찾고 있습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이것을 합쳤습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;좀 더 효율적인/우아한 방법이 없을까 해서요.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;jQuery &lt;a href=&quot;http://api.jquery.com/toggle&quot; rel=&quot;nofollow noreferrer&quot;&gt;.toggle()&lt;/a&gt;에 대해 알고 있지만 원하는 대로 작동하지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;여기서 일하기: http://jsfiddle.net/reggi/FcvaD/1/&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var count = 0;
$(&quot;#time&quot;).click(function() {
    count++;
    //even odd click detect 
    var isEven = function(someNumber) {
        return (someNumber % 2 === 0) ? true : false;
    };
    // on odd clicks do this
    if (isEven(count) === false) {
        $(this).animate({
            width: &quot;260px&quot;
        }, 1500);
    }
    // on even clicks do this
    else if (isEven(count) === true) {
        $(this).animate({
            width: &quot;30px&quot;
        }, 1500);
    }
});
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;jQuery에는 두가지 방법이 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.toggle()&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;. &lt;a href=&quot;http://api.jquery.com/toggle-event/&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;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&lt;strong&gt;참고:&lt;/strong&gt; 적어도 &lt;strong&gt;jQuery 1.7&lt;/strong&gt; 이후로 이 버전은&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.toggle&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;는 더 &lt;strong&gt;이상&lt;/strong&gt; 사용되지 않습니다. 아마도 바로 그 이유로, 즉 두 가지 버전이 존재합니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;사용.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.toggle&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;요소의 가시성을 변경하는 것은 더 일반적인 사용법일 뿐입니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이 메서드는 &lt;strong&gt;jQuery 1.9에서 제거&lt;/strong&gt;되었습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;아래는 플러그인과 동일한 기능을 구현할 수 있는 방법의 예입니다(그러나 아마도 내장 버전과 동일한 문제를 노출할 수 있습니다).&lt;/font&gt;&lt;/p&gt; 
&lt;hr&gt; 
&lt;pre&gt;&lt;code&gt;(function($) {
    $.fn.clickToggle = function(func1, func2) {
        var funcs = [func1, func2];
        this.data('toggleclicked', 0);
        this.click(function() {
            var data = $(this).data();
            var tc = data.toggleclicked;
            $.proxy(funcs[tc], this)();
            data.toggleclicked = (tc + 1) % 2;
        });
        return this;
    };
}(jQuery));
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;a href=&quot;http://jsfiddle.net/npwAz/1/&quot; rel=&quot;noreferrer&quot;&gt;&lt;strong&gt;&lt;font papago-translate=&quot;translated&quot;&gt;데모&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;&lt;font papago-translate=&quot;translated&quot;&gt;(거부자:&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이것이 최선의 구현이라고 말하지는 않습니다!&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;성능 측면에서 개선될 수 있을 것이라 확신합니다.)&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;그런 다음에 전화를 걸겠습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$('#test').clickToggle(function() {   
    $(this).animate({
        width: &quot;260px&quot;
    }, 1500);
},
function() {
    $(this).animate({
        width: &quot;30px&quot;
    }, 1500);
});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;&lt;font papago-translate=&quot;translated&quot;&gt;업데이트 2:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;그동안 이에 적합한 플러그인을 개발했습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;임의 수의 함수를 허용하며 모든 이벤트에 사용할 수 있습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&lt;a href=&quot;https://github.com/fkling/jQuery-Function-Toggle-Plugin&quot; rel=&quot;noreferrer&quot;&gt;깃허브에서 만나볼&lt;/a&gt; 수 &lt;a href=&quot;https://github.com/fkling/jQuery-Function-Toggle-Plugin&quot; rel=&quot;noreferrer&quot;&gt;있습니다&lt;/a&gt;.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://jsfiddle.net/cse_tushar/npwAz/81/&quot;&gt;&lt;strong&gt;&lt;font papago-translate=&quot;translated&quot;&gt;데모&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&lt;a href=&quot;http://api.jquery.com/one/&quot;&gt;.하나의 ()&lt;/a&gt; 문서.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;답변이 많이 늦었지만 가장 짧은 코드라 도움이 될 것 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;function handler1() {
    alert('First handler: ' + $(this).text());
    $(this).one(&quot;click&quot;, handler2);
}
function handler2() {
    alert('Second handler: ' + $(this).text());
    $(this).one(&quot;click&quot;, handler1);
}
$(&quot;div&quot;).one(&quot;click&quot;, handler1);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;a href=&quot;http://jsfiddle.net/cse_tushar/FcvaD/83/&quot;&gt;&lt;strong&gt;&lt;font papago-translate=&quot;translated&quot;&gt;작업 코드가 포함된 데모&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;function handler1() {
    $(this).animate({
        width: &quot;260px&quot;
    }, 1500);
    $(this).one(&quot;click&quot;, handler2);
}

function handler2() {
    $(this).animate({
        width: &quot;30px&quot;
    }, 1500);
    $(this).one(&quot;click&quot;, handler1);
}
$(&quot;#time&quot;).one(&quot;click&quot;, handler1);
&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;&lt;font papago-translate=&quot;translated&quot;&gt;마이크로 jQuery 플러그인&lt;/font&gt;&lt;/h2&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;체인으로 연결할 수 있는 자신만의 &lt;strong&gt;클릭Toggle&lt;/strong&gt; jQuery Method를 원하는 경우 다음과 같이 수행할 수 있습니다.&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;jQuery.fn.clickToggle = function(a, b) {
  return this.on(&quot;click&quot;, function(ev) { [b, a][this.$_io ^= 1].call(this, ev) })
};

// TEST:
$('button').clickToggle(function(ev) {
  $(this).text(&quot;B&quot;); 
}, function(ev) {
  $(this).text(&quot;A&quot;);
});&lt;/code&gt;&lt;/pre&gt; 
  &lt;pre class=&quot;snippet-code-html lang-html prettyprint-override&quot;&gt;&lt;code&gt;&amp;lt;button&amp;gt;A&amp;lt;/button&amp;gt;
&amp;lt;button&amp;gt;A&amp;lt;/button&amp;gt;
&amp;lt;button&amp;gt;A&amp;lt;/button&amp;gt;

&amp;lt;script src=&quot;//code.jquery.com/jquery-3.3.1.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;/p&gt; 
&lt;hr&gt; 
&lt;h2&gt;&lt;font papago-translate=&quot;translated&quot;&gt;단순 함수 토글러&lt;/font&gt;&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://jsbin.com/ohOZEYI/1/edit&quot; rel=&quot;noreferrer&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;라이브 데모&lt;/font&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;function a(){ console.log('a'); }
function b(){ console.log('b'); }

$(&quot;selector&quot;).click(function() { 
  return (this.tog = !this.tog) ? a() : b();
});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt; &lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;더 짧게 하고 싶다면(왜&lt;em&gt; 그런 거죠?!)&lt;/em&gt; 다음과 같이 &lt;a href=&quot;https://stackoverflow.com/a/22061240/383904&quot;&gt;Bitwise XOR&lt;/a&gt;&lt;sup&gt;&lt;a href=&quot;https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Bitwise_XOR&quot; rel=&quot;noreferrer&quot;&gt;*Docs&lt;/a&gt;&lt;/sup&gt; 연산자를 사용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;br&gt; &lt;font papago-translate=&quot;splitted&quot;&gt;&lt;a href=&quot;http://jsbin.com/ohOZEYI/5/edit&quot; rel=&quot;noreferrer&quot;&gt;&lt;strong&gt;&lt;font papago-translate=&quot;translated&quot;&gt;데모&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;  return (this.tog^=1) ? a() : b();
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;&lt;font papago-translate=&quot;translated&quot;&gt;그게 전부입니다.&lt;/font&gt;&lt;/strong&gt;&lt;br&gt; &lt;sub&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;방법은 다음과 같이 설정하는 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;this&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;오브젝트 a&lt;/font&gt;&lt;/font&gt;&lt;code&gt;boolean&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;소유물&lt;/font&gt;&lt;/font&gt;&lt;code&gt;tog&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;, &lt;em&gt;negative&lt;/em&gt;()를 사용하여 토글합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;tog = !tog&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;)&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;필요한 함수 호출을 &lt;em&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator&quot; rel=&quot;noreferrer&quot;&gt;조건부 연산자&lt;/a&gt;&lt;/em&gt;에 입력합니다.&lt;/font&gt;&lt;/font&gt; &lt;code&gt;?:&lt;/code&gt;&lt;/sub&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt; 
&lt;hr&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;OP의 예에서 (여러 요소가 있더라도) 다음과 같이 보일 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;function a(el){ $(el).animate({width: 260}, 1500); }
function b(el){ $(el).animate({width: 30}, 1500);  }

$(&quot;selector&quot;).click(function() {
  var el = this;
  return (el.t = !el.t) ? a(el) : b(el);
}); 
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&lt;strong&gt;&lt;em&gt;또한&lt;/em&gt;:&lt;/strong&gt; 다음과 같이 저장 &lt;strong&gt;토글할&lt;/strong&gt; 수도 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;br&gt; &lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&lt;a href=&quot;http://jsbin.com/farolo/1/edit?html,js,output&quot; rel=&quot;noreferrer&quot;&gt;&lt;strong&gt;데모&lt;/strong&gt;&lt;/a&gt;:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;selector&quot;).click(function() {
  $(this).animate({width: (this.tog ^= 1) ? 260 : 30 });
}); 
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;sub&gt;&lt;font papago-translate=&quot;translated&quot;&gt;하지만 OP의 정확한 요청은 아니었습니다&lt;/font&gt;&lt;/sub&gt;&lt;/p&gt; 
&lt;hr&gt; 
&lt;h2&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse&quot; rel=&quot;noreferrer&quot;&gt;Array.prototype.reverse&lt;/a&gt; 사용:&lt;/font&gt;&lt;/h2&gt; 
&lt;p&gt;&lt;sub&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&lt;strong&gt;참고&lt;/strong&gt;: 이렇게 하면 현재 Toggle 상태가 저장되지 않고 Array의 함수 위치를 반대로 저장합니다(사용 용도가 있습니다...).&lt;/font&gt;&lt;/sub&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&lt;em&gt;단순히&lt;/em&gt; 배열 안에 a&lt;em&gt;,b&lt;/em&gt; 함수를 저장하고 &lt;em&gt;클릭&lt;/em&gt;하면 배열 순서를 뒤집고 실행할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;array[1]&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;함수:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://jsbin.com/wisuju/1/edit&quot; rel=&quot;noreferrer&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;라이브 데모&lt;/font&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;function a(){ console.log(&quot;a&quot;); }
function b(){ console.log(&quot;b&quot;); }
var ab = [a,b];

$(&quot;selector&quot;).click(function(){
  ab.reverse()[1](); // Reverse and Execute! // &amp;gt;&amp;gt; &quot;a&quot;,&quot;b&quot;,&quot;a&quot;,&quot;b&quot;...
});
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr&gt; 
&lt;h2&gt;&lt;font papago-translate=&quot;translated&quot;&gt;약간의 매쉬업!&lt;/font&gt;&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://jsbin.com/farolo/3/edit&quot; rel=&quot;noreferrer&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;jQuery DEMO&lt;/font&gt;&lt;/a&gt;&lt;/strong&gt;&lt;br&gt; &lt;strong&gt;&lt;a href=&quot;http://jsfiddle.net/zzeqp6w2/&quot; rel=&quot;noreferrer&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;자바스크립트 데모&lt;/font&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;좋은 함수 만들기&lt;/font&gt;&lt;/font&gt;&lt;code&gt;toggleAB()&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;두 개의 함수를 포함하고 &lt;strong&gt;어레이에 배치&lt;/strong&gt;하면 어레이의 끝에서 간단히 함수를 실행할 수 있습니다 [&lt;/font&gt;&lt;/font&gt;&lt;code&gt;0 // 1&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;] 에 따라 각각&lt;/font&gt;&lt;/font&gt;&lt;code&gt;tog&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;에서 함수로 전달되는 속성&lt;/font&gt;&lt;/font&gt;&lt;code&gt;this&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;참조:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;function toggleAB(){
  var el = this; // `this` is the &quot;button&quot; Element Obj reference`
  return [
    function() { console.log(&quot;b&quot;); },
    function() { console.log(&quot;a&quot;); }
  ][el.tog^=1]();
}

$(&quot;selector&quot;).click( toggleAB );
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;만약 당신이 값을 바꾸기만 하면 된다면, 당신이 보여준 코드에 대해 나는 이와 같은 것을 할 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var oddClick = true;
$(&quot;#time&quot;).click(function() {
    $(this).animate({
        width: oddClick ? 260 : 30
    },1500);
    oddClick = !oddClick;
});
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이것을 이용해 두 기능 사이에 토글 효과를 만들었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var x = false;
$(element).on('click', function(){
 if (!x){
  //function
  x = true;
 }
 else {
  //function
  x = false;
 }
});
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;jQuery 1.9에서 삭제된 이유가 있기 때문에 토글 방식을 실행하면 안 될 것 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;jQuery에서 완전히 지원하는 toggleClass를 대신 사용해 보십시오.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;function a(){...}
function b(){...}   
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;예를 들어 이벤트 트리거가 on click(클릭 시)에 있다고 가정해 보겠습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;첫번째 옵션:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$('#test').on('click', function (event) {

    $(this).toggleClass('toggled');

    if ($(this).hasClass('toggled')) {
        a();
    } else{
        b();
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;핸들러 기능을 매개 변수로 보낼 수도 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;두 번째 옵션:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$('#test').on('click',{handler1: a, handler2: b}, function (event) {

    $(this).toggleClass('toggled');

    if ($(this).hasClass('toggled')) {
        event.data.handler1();
    } else{
        event.data.handler2();
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;만약 당신이 하는 일이 부울을 유지하는 것뿐이라면,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;isEven&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;수업이 있는지 확인해 볼 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;isEven&lt;/code&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;요소에서 해당 클래스를 전환합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;카운트와 같은 공유 변수를 사용하는 것은 일종의 나쁜 관행입니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;해당 변수의 범위가 무엇인지 자문해 보십시오. 페이지에서 전환하고 싶은 항목이 10개 있다면 10개의 변수를 생성하시겠습니까, 아니면 해당 상태를 저장할 배열이나 변수를 생성하시겠습니까?&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;아마 아닐 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;편집:&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;splitted&quot;&gt;&lt;font papago-translate=&quot;translated&quot;&gt;jQuery에는 hasClass와 결합하면 정의한 두 너비 사이에서 애니메이션을 생성할 수 있는 &lt;a href=&quot;http://docs.jquery.com/UI/Effects/switchClass&quot; rel=&quot;nofollow&quot;&gt;switchClass&lt;/a&gt; 메서드가 있습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;이는 스타일시트의 나중에 크기를 변경하거나 배경색 또는 여백과 같은 다른 매개변수를 전환에 추가할 수 있기 때문에 유용합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;몇 가지 함수와 부울을 사용합니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;전체 코드가 아닌 패턴이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; var state = false,
     oddONes = function () {...},
     evenOnes = function() {...};

 $(&quot;#time&quot;).click(function(){
     if(!state){
        evenOnes();
     } else {
        oddOnes();
     }
     state = !state;
  });
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;아니면&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;  var cases[] = {
      function evenOnes(){...},  // these could even be anonymous functions
      function oddOnes(){...}    // function(){...}
  };

  var idx = 0; // should always be 0 or 1

  $(&quot;#time&quot;).click(function(idx){cases[idx = ((idx+1)%2)]()}); // corrected
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;(참고로 두 번째는 제 머리에서 벗어나 언어를 많이 섞기 때문에 정확한 구문은 보장되지 않습니다.&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;통해 실제 자바스크립트에 근접해야 함.)&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;n개의 함수 간에 전환할 수 있는 첫 번째 답을 수정합니다.&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-html lang-html prettyprint-override&quot;&gt;&lt;code&gt;&amp;lt;!doctype html&amp;gt;
&amp;lt;html lang=&quot;en&quot;&amp;gt;
 &amp;lt;head&amp;gt;
  &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
  &amp;lt;meta name=&quot;Generator&quot; content=&quot;EditPlus.com®&quot;&amp;gt;
&amp;lt;!-- &amp;lt;script src=&quot;../js/jquery.js&quot;&amp;gt;&amp;lt;/script&amp;gt; --&amp;gt;
&amp;lt;script src=&quot;https://code.jquery.com/jquery-2.2.4.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;title&amp;gt;my stupid example&amp;lt;/title&amp;gt;

 &amp;lt;/head&amp;gt;
 &amp;lt;body&amp;gt;
 &amp;lt;nav&amp;gt;
 &amp;lt;div&amp;gt;b&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;div&amp;gt;b&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;div&amp;gt;b&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;!-- .......... --&amp;gt;
&amp;lt;div&amp;gt;b&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;/nav&amp;gt;
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
&amp;lt;!--
$(document).ready(function() {
	(function($) {
        $.fn.clickToggle = function() {
          var ta=arguments;
	        this.data('toggleclicked', 0);
          this.click(function() {
				    id= $(this).index();console.log( id );
            var data = $(this).data();
            var tc = data.toggleclicked;
            $.proxy(ta[id], this)();
            data.toggleclicked = id
          });
          return this;
        };
   }(jQuery));

    
	$('nav div').clickToggle(
	    function() {alert('First handler');}, 
        function() {alert('Second handler');},
        function() {alert('Third handler');}
		//...........how manny parameters you want.....
		,function() {alert('the `n handler');}
	);

});
//--&amp;gt;
&amp;lt;/script&amp;gt;
 &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;&lt;strong&gt;한&lt;/strong&gt; 줄 &lt;strong&gt;솔루션:&lt;/strong&gt; 기본 아이디어:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$('sth').click(function () {
    let COND = $(this).propery == 'cond1' ? 'cond2' : 'cond1';
    doSomeThing(COND);
})
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;a href=&quot;https://jsfiddle.net/ashkan_codecman/u5z4srnf/32/&quot; rel=&quot;nofollow noreferrer&quot;&gt;&lt;strong&gt;&lt;font papago-translate=&quot;translated&quot;&gt;jsfiddle의 예제&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;예제 1, 내부 변경&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;토글 모드에서 요소의 HTML:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$('#clickTest1').click(function () {
    $(this).html($(this).html() == 'click Me' ? 'clicked' : 'click Me');
});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;예 2: &quot;none&quot;와 &quot;inline-블록&quot; 사이를 토글링하여 표시합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$('#clickTest2, #clickTest2 &amp;gt; span').click(function () {
    $(this).children().css('display', $(this).children().css('display') == 'inline-block' ? 'none' : 'inline-block');
});
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot;&gt;언급&lt;/font&gt;&lt;font papago-translate=&quot;translated&quot;&gt;URL : https://stackoverflow.com/questions/4911577/jquery-click-toggle-between-two-functions&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>jQuery</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1022</guid>
      <comments>https://itgroup.tistory.com/1022#entry1022comment</comments>
      <pubDate>Sat, 4 Nov 2023 10:34:13 +0900</pubDate>
    </item>
    <item>
      <title>HttpContext.현재의.라우팅 요청 시 세션이 null입니다.</title>
      <link>https://itgroup.tistory.com/1021</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;HttpContext.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;현재의.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;라우팅 요청 시 세션이 null입니다.&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;HttpContext.Current.Session&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;StateServer&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 class=&quot;papago-parent&quot;&gt;제가 요청을 전달할 때,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;HttpContext.Current.Session&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;null&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 class=&quot;papago-parent&quot;&gt;MVC 미리보기가 없는 IIS 7.0의 NET 3.5 sp1.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;는 것으로 보입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;AcquireRequestState&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;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Session 변수에 액세스하려고 하면 다음과 같은 오류가 나타납니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;base {System.Runtime.InteropServices.ExternalException} = {&quot;Session state can only be used when enableSessionState is set to true, either in a configuration file or in the Page directive. Please also make sure that System.Web.SessionStateModule or a custom session state module is included in the &amp;lt;configuration&amp;gt;.&lt;/code&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;HttpContext.Current.Session&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;10&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;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;나의&lt;/font&gt;&lt;/font&gt;&lt;code&gt;web.config&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;pre&gt;&lt;code&gt;&amp;lt;configuration&amp;gt;
  ...
  &amp;lt;system.web&amp;gt;
    &amp;lt;pages enableSessionState=&quot;true&quot;&amp;gt;
      &amp;lt;controls&amp;gt;
        ...
      &amp;lt;/controls&amp;gt;
    &amp;lt;/pages&amp;gt;
    ...
  &amp;lt;/system.web&amp;gt;
  &amp;lt;sessionState cookieless=&quot;AutoDetect&quot; mode=&quot;StateServer&quot; timeout=&quot;22&quot; /&amp;gt;
  ...
&amp;lt;/configuration&amp;gt;
&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;IRouteHandler 구현 내용은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;public class WebPageRouteHandler : IRouteHandler, IRequiresSessionState
{
    public string m_VirtualPath { get; private set; }
    public bool m_CheckPhysicalUrlAccess { get; set; }

    public WebPageRouteHandler(string virtualPath) : this(virtualPath, false)
    {
    }
    public WebPageRouteHandler(string virtualPath, bool checkPhysicalUrlAccess)
    {
        m_VirtualPath = virtualPath;
        m_CheckPhysicalUrlAccess = checkPhysicalUrlAccess;
    }

    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        if (m_CheckPhysicalUrlAccess
            &amp;amp;&amp;amp; !UrlAuthorizationModule.CheckUrlAccessForPrincipal(
                   m_VirtualPath,
                   requestContext.HttpContext.User,
                   requestContext.HttpContext.Request.HttpMethod))
        {
            throw new SecurityException();
        }

        string var = String.Empty;
        foreach (var value in requestContext.RouteData.Values)
        {
            requestContext.HttpContext.Items[value.Key] = value.Value;
        }

        Page page = BuildManager.CreateInstanceFromVirtualPath(
                        m_VirtualPath, 
                        typeof(Page)) as Page;// IHttpHandler;

        if (page != null)
        {
            return page;
        }
        return page;
    }
}
&lt;/code&gt;&lt;/pre&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;EnableSessionState=&quot;True&quot;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;aspx 페이지 상단에 있지만 여전히 아무것도 없습니다.&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&gt;&lt;font class=&quot;papago-parent&quot;&gt;다른 글을 써야 할까요?&lt;/font&gt;&lt;/font&gt;&lt;code&gt;HttpRequestHandler&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;IRequiresSessionState&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;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;알았어요, 사실 꽤 바보같군요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;SessionState Module을 제거하고 추가한 후에는 다음과 같이 작동했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;configuration&amp;gt;
  ...
  &amp;lt;system.webServer&amp;gt;
    ...
    &amp;lt;modules&amp;gt;
      &amp;lt;remove name=&quot;Session&quot; /&amp;gt;
      &amp;lt;add name=&quot;Session&quot; type=&quot;System.Web.SessionState.SessionStateModule&quot;/&amp;gt;
      ...
    &amp;lt;/modules&amp;gt;
  &amp;lt;/system.webServer&amp;gt;
&amp;lt;/configuration&amp;gt;
&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;&quot;Session&quot;이 이미 정의되어 있어야 했기 때문에 단순히 추가하는 것은 효과가 없을 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;machine.config&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 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;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;runAllManagedModulesForAllRequests=&quot;true&quot;&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;system.webServer\modules&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;web.config에서.&lt;/font&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;이 속성은 MVC 및 Dynamic Data 프로젝트에서 기본적으로 활성화됩니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;runAllManagedModulesForAllRequests=true&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 class=&quot;papago-parent&quot;&gt;이로 인해 애플리케이션 로드 시간이 200% 증가했습니다.&lt;/font&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;21&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;global.asax.cs&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;세션이 null이 아니었습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;protected void Application_PostAuthorizeRequest()
{
    HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required);
}
&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;@Bogdan Maxim이 한 말.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;또는 외부 세션 상태 서버를 사용하지 않는 경우 InProc를 사용하도록 변경합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;sessionState mode=&quot;InProc&quot; timeout=&quot;20&quot; cookieless=&quot;AutoDetect&quot; /&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;a href=&quot;http://msdn.microsoft.com/en-us/library/h6bb9cz9.aspx&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;32-1&quot;&gt;참조&lt;/a&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;잘했어요!&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;그러나 그것은 HttpContext에 의해 다시 돌아오지 않았습니다.&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;Auth module 그리고 확실히, 그것은 해냈습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;remove name=&quot;FormsAuthentication&quot; /&amp;gt;
&amp;lt;add name=&quot;FormsAuthentication&quot; type=&quot;System.Web.Security.FormsAuthenticationModule&quot;/&amp;gt;
&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;a href=&quot;http://msdn.microsoft.com/en-us/library/ms972429.aspx&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;34-1&quot;&gt;구성&lt;/a&gt; 파일에 상태 서버 주소를 추가하는 것을 잊어버린 것 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; &amp;lt;sessionstate mode=&quot;StateServer&quot; timeout=&quot;20&quot; server=&quot;127.0.0.1&quot; port=&quot;42424&quot; /&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;font class=&quot;papago-parent&quot;&gt;제안된 다른 구성을 시도해 보았지만 여전히 문제가 있습니다.&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;라우팅 없이 작동하기 때문에 Session provider에 문제가 있는 것은 아닌지 의심됩니다.&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;코드의 이 부분이 문맥에 변화를 준다고 생각합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; Page page = BuildManager.CreateInstanceFromVirtualPath(
                        m_VirtualPath, 
                        typeof(Page)) as Page;// IHttpHandler;
&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;/p&gt; 
&lt;pre&gt;&lt;code&gt; if (page != null)
 {
     return page;
 }
 return page;
&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;항상 페이지가 null인지 아닌지를 반환합니다.&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;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;세션 어댑터에서 web.mvc dll을 추가하여 문제를 해결했습니다.&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;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;/p&gt; 
&lt;p papago-id=&quot;43&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;runAllManagedModulesForAllRequest는 세션 모듈을 제거하고 다시 삽입하는 것과 관련하여 현명한 작업입니다.&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;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/218057/httpcontext-current-session-is-null-when-routing-requests&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>ASP.NET</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1021</guid>
      <comments>https://itgroup.tistory.com/1021#entry1021comment</comments>
      <pubDate>Mon, 30 Oct 2023 20:54:40 +0900</pubDate>
    </item>
    <item>
      <title>텍스트 열을 고유 키로 만들기</title>
      <link>https://itgroup.tistory.com/1020</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;MySQL&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;mediumtext&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;UNIQUE KEY&lt;/code&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;CREATE TABLE `parts` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` mediumtext NOT NULL,
      `display_status` int(11) NOT NULL,
       UNIQUE KEY `name` (`name`),
       PRIMARY KEY (`id`)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
&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;    BLOB/TEXT column 'name' used in key specification without a key length
&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;&quot;이름&quot;의 유형을 varchar로 변경할 때..&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;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신은 내가 텍스트 칼럼을 만들수 있는지 알수있습니까?&lt;/font&gt;&lt;/font&gt;&lt;code&gt;UNIQUE KEY&lt;/code&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;Text&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;UNIQUE&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 class=&quot;papago-parent&quot;&gt;자, 자.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;hashing&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;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;varchar 길이에 대한 255의 제한이 더 이상 적용되지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/en/char.html&quot; papago-id=&quot;11-1&quot;&gt;설명서&lt;/a&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;VARCHAR 열의 값은 가변 길이 문자열입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;길이는 MySQL 5.0.3 이전의 0 ~ 255, 5.0.3 이상 버전에서는 0 ~ 65,535의 값으로 지정할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;고유 인덱스는 알려진 최대 길이를 가져야 합니다(내부 구현으로 인해 mysql 요구 사항). 따라서 가장 긴 기대 값에 적합하도록 충분히 큰 값을 가진 varchar를 사용합니다(예:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;...
`name` varchar(65535) NOT NULL, -- for example 
...
&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;이것이 매우 오래된 것은 알지만 다른 사람이 원하는 경우에는 varchar 또는 텍스트 열을 고유하게 만들 수 있습니다. 테이블 작성 후에 수행하면 됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; DROP TABLE IF EXISTS meeting;
CREATE TABLE meeting (
    meeting_id int(11) UNSIGNED UNIQUE NOT NULL PRIMARY KEY AUTO_INCREMENT,
    meeting_name varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL
);
CREATE UNIQUE INDEX meeting ON meeting(meeting_name);
&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;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/14033378/make-text-column-as-unique-key&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>MySQL</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1020</guid>
      <comments>https://itgroup.tistory.com/1020#entry1020comment</comments>
      <pubDate>Mon, 30 Oct 2023 20:54:32 +0900</pubDate>
    </item>
    <item>
      <title>풀 후 이전 버전과 변경된 파일을 어떻게 다릅니까?</title>
      <link>https://itgroup.tistory.com/1019</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;&quot;git pull&quot;을 실행할 때 파일의 마지막 버전과 새 버전 사이에 무엇이 바뀌었는지 알고 싶을 때가 많습니다.&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 papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;커밋 x 대 커밋에 대한 일부 매개 변수가 있는 &quot;git diff&quot;라고 가정하지만 구문을 파악할 수 없는 것 같습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 또한 &quot;git log&quot;가 조금 헷갈리고 제 최신 버전의 파일과 새 파일의 커밋 ID를 어디서 구해야 할지 잘 모르겠습니다.&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;a href=&quot;http://www.kernel.org/pub/software/scm/git/docs/git-rev-parse.html#_specifying_revisions&quot; papago-id=&quot;4-1&quot; rel=&quot;noreferrer&quot;&gt;수정사항 지정&lt;/a&gt; 섹션을 참조하십시오.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;man git-rev-parse&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;/p&gt; 
&lt;pre&gt;&lt;code&gt;git diff HEAD@{1}
&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 class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;@{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 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&gt;&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;HEAD&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&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;내 최신 버전의 파일의 커밋 ID&quot;로 무엇을 요구하는지 잘 모르겠습니다. 커밋 &quot;ID&quot;(SHA1 해시)는 git 로그 출력의 모든 항목 맨 위에 있는 40자의 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;/p&gt; 
&lt;pre&gt;&lt;code&gt;git diff HEAD@{1} filename
&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;이것은 일반적인 것입니다. 주어진 커밋에서 파일의 상태를 알고 싶다면, 해당 파일에 특정한 ID/해시가 아니라 커밋과 파일을 지정합니다.&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;pre&gt;&lt;code&gt;git diff HEAD^
&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;pre&gt;&lt;code&gt;git diff HEAD^ -- /foo/bar/baz.txt
&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;스트레이트를 하면.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;git pull&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;그러면 '빠른 forwarded' 상태가 되거나 원격 저장소에서 알 수 없는 수의 커밋을 병합하게 됩니다.&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;HEAD@{1}&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&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;git diff HEAD@{1}
&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;git fetch&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&gt;&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;git fetch

git log HEAD..origin/master

 # looks good, lets merge

git merge origin/master
&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;명령어를 사용하여 마지막 버전과 비교할 수 있습니다.&lt;/font&gt;&lt;/p&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;gitdiff HEAD@{1} 파일 이름&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;gitdiff HEAD@{1} -- 경로/파일 이름&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&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;--&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;/font&gt;&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;fatal: 모호한 인수 'path/filename': 알 수 없는 리비전 또는 path가 작업 트리에 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;'--'를 사용하여 수정본에서 경로를 구분합니다. 'git [...] -- [...&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;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/2428270/how-to-diff-changed-files-versus-previous-versions-after-a-pull&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>git</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1019</guid>
      <comments>https://itgroup.tistory.com/1019#entry1019comment</comments>
      <pubDate>Mon, 30 Oct 2023 20:54:26 +0900</pubDate>
    </item>
    <item>
      <title>How can I use a MySql User Defined Variable in a .NET MySqlCommand?</title>
      <link>https://itgroup.tistory.com/1018</link>
      <description>&lt;h2 papago-id=&quot;0&quot;&gt;How can I use a MySql User Defined Variable in a .NET MySqlCommand?&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot;&gt;I simply want to execute the following Mysql statement &lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SET @a = 1;SELECT @a;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;2&quot;&gt;with MySql.Data.MySqlClient&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;[System.Reflection.Assembly]::LoadWithPartialName(&quot;MySql.Data&quot;)

$password = 'mypassword'

$sql = &quot;SET @a = 1;SELECT @a;&quot;

$server = 'localhost'
$port = 3306
$database = 'test'
$User = 'root'


$conn=new-object MySql.Data.MySqlClient.MySqlConnection
$connectionstring =  &quot;Server=$Server;Port=$port;Database=$DataBase;Uid=$User;Pwd=$Password;allow zero datetime=yes&quot;
$conn.ConnectionString = $connectionstring 
$conn.Open() 

$cmd=new-object MySql.Data.MySqlClient.MySqlCommand($sql,$conn)
$ds=New-Object system.Data.DataSet
$da=New-Object MySql.Data.MySqlClient.MySqlDataAdapter($cmd)
$da.fill($ds) 
$conn.close()
$ds.tables[0]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;3&quot;&gt;I get a fatal error.&lt;/p&gt; 
&lt;p papago-id=&quot;4&quot;&gt;When I replace $sql by either&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$sql = &quot;SELECT DATABASE();&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;5&quot;&gt;or&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$sql = &quot;SELECT 1;&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;6&quot;&gt;I get the expected result.&lt;/p&gt; 
&lt;p papago-id=&quot;7&quot;&gt;I found this &lt;a href=&quot;https://stackoverflow.com/questions/958953/is-it-possible-to-use-a-mysql-user-defined-variable-in-a-net-mysqlcommand&quot; papago-id=&quot;7-1&quot;&gt;question&lt;/a&gt;, but it doesn't solve my problem.&lt;/p&gt; 
&lt;p papago-id=&quot;8&quot;&gt;I'm trying to port SQLIse (a part of the &lt;a href=&quot;http://sqlpsx.codeplex.com/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;8-1&quot;&gt;SQLPSX project&lt;/a&gt; ) to the MySQL version MySQLIse.&lt;/p&gt; 
&lt;p papago-id=&quot;9&quot;&gt;I want to process any simple valid mysql statements.&lt;/p&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;10&quot;&gt;EDIT:&lt;/strong&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;11&quot;&gt;I was trying to run parts of the &lt;a href=&quot;http://dev.mysql.com/doc/sakila/en/sakila.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;11-1&quot;&gt;sakila-schema.sql&lt;/a&gt; the mysql demo database install script which runs by something like&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;12&quot;&gt;mysql&amp;gt; SOURCE C:/temp/sakila-db/sakila-schema.sql;&lt;/p&gt; 
&lt;/blockquote&gt;&lt;p papago-id=&quot;13&quot;&gt;I found the solution in this &lt;a href=&quot;http://blog.tjitjing.com/index.php/2009/05/mysqldatamysqlclientmysqlexception-parameter-id-must-be-defined.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;13-1&quot;&gt;blog&lt;/a&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;14&quot;&gt;I have to add&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;;Allow User Variables=True
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;15&quot;&gt;to the connection string:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$connectionstring = &quot;Server=$Server;Port=$port;Database=$DataBase;Uid=$User;Pwd=$Password;allow zero datetime=yes;Allow User Variables=True&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;작동합니다. 버전 6.3.6.0으로 테스트했습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;MySql.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 papago-id=&quot;18&quot;&gt;ReferenceURL : &lt;a href=&quot;https://stackoverflow.com/questions/5524632/how-can-i-use-a-mysql-user-defined-variable-in-a-net-mysqlcommand&quot; target=&quot;_blank&quot; papago-id=&quot;18-1&quot;&gt;https://stackoverflow.com/questions/5524632/how-can-i-use-a-mysql-user-defined-variable-in-a-net-mysqlcommand&lt;/a&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>powershell</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1018</guid>
      <comments>https://itgroup.tistory.com/1018#entry1018comment</comments>
      <pubDate>Mon, 30 Oct 2023 20:54:20 +0900</pubDate>
    </item>
    <item>
      <title>jQuery에서 특정 폼 요소를 선택하는 방법은?</title>
      <link>https://itgroup.tistory.com/1017</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;저는 다음과 같은 두 가지 양식이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;form id='form1' name='form1'&amp;gt;
  &amp;lt;input name='name' id='name'&amp;gt;
  &amp;lt;input name='name2' id='name2'&amp;gt;
&amp;lt;/form&amp;gt;

&amp;lt;form id='form2' name='form2'&amp;gt;
  &amp;lt;input name='name' id='name'&amp;gt;
  &amp;lt;input name='name2' id='name2'&amp;gt;
&amp;lt;/form&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;이제 양식 &lt;strong papago-id=&quot;2-3&quot;&gt;2&lt;/strong&gt;의 &lt;strong papago-id=&quot;2-1&quot;&gt;이름&lt;/strong&gt; 필드에 텍스트를 삽입합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 &lt;a href=&quot;http://jsfiddle.net/BNXuw/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;2-5&quot;&gt;아래의 jQuery 코드&lt;/a&gt;를 사용하고 있는데 양식 &lt;strong papago-id=&quot;2-9&quot;&gt;1&lt;/strong&gt;의 &lt;strong papago-id=&quot;2-7&quot;&gt;이름&lt;/strong&gt; 필드를 채웁니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;#name&quot;).val('Hello World!');
&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;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;#name&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 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;$(&quot;#form2 input&quot;).val('Hello World!');
&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;$(&quot;#form2 input[name=name]&quot;).val('Hello World!');
&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;#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;s, ID에서 속성 선택기를 사용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;input[id=name]&quot;).val('Hello World!');
&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;나는 당신의 #form2의 id descent selector를 다음과 같이 선호합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;#form2 #name&quot;).val(&quot;Hello World!&quot;);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;a href=&quot;http://api.jquery.com/descendant-selector/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;http://api.jquery.com/descendant-selector/&lt;/font&gt;&lt;/a&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;잘못된 html이지만 선택기 컨텍스트를 사용하여 사용자의 경우 선택기를 제한할 경우 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;$(&quot;input[name='name']&quot; , &quot;#form2&quot;).val(&quot;Hello World! &quot;);&lt;/code&gt; &lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;http://api.jquery.com/jquery/#selector-context&quot; rel=&quot;noreferrer&quot; papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;http://api.jquery.com/jquery/ #selector-&lt;/font&gt;&lt;/a&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;ID 속성이 설정된 양식(예: frm1)이 있고 ID가 설정되지 않고 이름 속성이 설정된 특정 콤보 상자(예: district)를 설정하려는 경우 다음을 사용합니다.&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;$(&quot;#frm1 select[name='district'] option[value='NWFP']&quot;).attr('selected', true);&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/3.2.1/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;form id=&quot;frm1&quot;&amp;gt;
        &amp;lt;select name=&quot;district&quot;&amp;gt;
            &amp;lt;option value=&quot;&quot; disabled=&quot;&quot; selected=&quot;&quot; hidden=&quot;&quot;&amp;gt;Area ...&amp;lt;/option&amp;gt;
            &amp;lt;option value=&quot;NWFP&quot;&amp;gt;NWFP&amp;lt;/option&amp;gt;
            &amp;lt;option value=&quot;FATA&quot;&amp;gt;FATA&amp;lt;/option&amp;gt;
        &amp;lt;/select&amp;gt;
    &amp;lt;/form&amp;gt;&lt;/code&gt;&lt;/pre&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$(&quot;#name&quot;, '#form2').val(&quot;Hello World&quot;)
&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;URL : https://stackoverflow.com/questions/4387319/how-to-select-specific-form-element-in-jquery&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>jQuery</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1017</guid>
      <comments>https://itgroup.tistory.com/1017#entry1017comment</comments>
      <pubDate>Mon, 30 Oct 2023 20:54:13 +0900</pubDate>
    </item>
    <item>
      <title>WooCommerce 아카이브 페이지의 상품 제목 아래에 사용자 정의 필드 값 추가</title>
      <link>https://itgroup.tistory.com/1016</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;/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;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;아래 제목의 제품을 확인할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;img src=&quot;https://i.stack.imgur.com/SZOC2.png&quot; alt=&quot;you can see the products with their title below&quot;&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;img src=&quot;https://i.stack.imgur.com/HyqpL.png&quot; alt=&quot;(below every product, marked with blue pen)&quot;&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;저는 제품의 페이지에서 사용자 정의 필드를 추가하기 위한 사용자 정의 php 코드를 찾을 수 있었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://i.stack.imgur.com/RvIxn.png&quot; alt=&quot;in the image here&quot;&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;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;    // Display Fields
add_action('woocommerce_product_options_general_product_data', 'woocommerce_product_custom_fields');

// Save Fields
add_action('woocommerce_process_product_meta', 'woocommerce_product_custom_fields_save');

function woocommerce_product_custom_fields()
{
    global $woocommerce, $post;
    echo '&amp;lt;div class=&quot;product_custom_field&quot;&amp;gt;';
    // Custom Product Text Field
    woocommerce_wp_text_input(
        array(
            'id' =&amp;gt; '_custom_product_text_field',
            'placeholder' =&amp;gt; 'Custom Product Text Field',
            'label' =&amp;gt; __('Custom Product Text Field', 'woocommerce'),
            'desc_tip' =&amp;gt; 'true'
        )
    );

}

function woocommerce_product_custom_fields_save($post_id)
{
    // Custom Product Text Field
    $woocommerce_custom_product_text_field = $_POST['_custom_product_text_field'];
    if (!empty($woocommerce_custom_product_text_field))
        update_post_meta($post_id, '_custom_product_text_field', esc_attr($woocommerce_custom_product_text_field));
}
&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;/font&gt;&lt;/p&gt;&lt;p&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;/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;pre&gt;&lt;code&gt;add_action( 'woocommerce_after_shop_loop_item_title', 'custom_field_display_below_title', 2 );
function custom_field_display_below_title(){
    global $product;

    // Get the custom field value
    $custom_field = get_post_meta( $product-&amp;gt;get_id(), '_custom_product_text_field', true );

    // Display
    if( ! empty($custom_field) ){
        echo '&amp;lt;p class=&quot;my-custom-field&quot;&amp;gt;'.$custom_field.'&amp;lt;/p&amp;gt;';
    }
}
&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;font class=&quot;papago-parent&quot;&gt;활성 하위 테마(또는 활성 테마)의 php 파일입니다.&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;이를 구현하려는 모든 사용자의 경우 wocommerce_product_custom_fields() 함수에서 클로징 디브가 누락되었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;echo ''를 추가합니다. 닫힘 컬괄호 앞에 제품 설정의 다른 모든 제품 데이터 탭이 비어 있습니다.&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;code&gt;echo '&amp;lt;/div&amp;gt;';&lt;/code&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;echo '&amp;lt;div class=&quot;product_custom_field&quot;&amp;gt;';&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/48444564/add-a-custom-field-value-below-product-title-in-woocommerce-archives-pages&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>WordPress</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1016</guid>
      <comments>https://itgroup.tistory.com/1016#entry1016comment</comments>
      <pubDate>Mon, 30 Oct 2023 20:54:07 +0900</pubDate>
    </item>
    <item>
      <title>mysql에서 방금 삭제된 행을 복구하는 방법?</title>
      <link>https://itgroup.tistory.com/1015</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;/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;mysqlbinlog&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;sql 파일을 생성합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;mysqlbinlog binary_log_file &amp;gt; query_log.sql
&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;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;phpMyAdmin을 사용하여 한 행을 너무 많이 삭제했습니다.&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;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저보다 pphMyAdmin에 대해 더 잘 아는 사람이 설정을 알고 있을 수도 있습니다. 그러면 삭제 확인 메시지에 대한 더 완벽한 에코를 얻을 수 있습니다.&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;(PS 이 앱은 레코드를 만드는 제출 메일도 보냅니다.&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;다만, 사용하는 상황이나 DB 서버에 따라 손실된 데이터를 부분적으로 추출할 수도 있습니다.&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;/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;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;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;InnoDB 테이블의 경우 &lt;a href=&quot;http://www.mysqlperformanceblog.com/2012/02/20/how-to-recover-deleted-rows-from-an-innodb-tablespace/&quot; papago-id=&quot;12-1&quot; rel=&quot;nofollow&quot;&gt;Percona에 도움&lt;/a&gt;이 될 수 &lt;a href=&quot;http://www.mysqlperformanceblog.com/2012/02/20/how-to-recover-deleted-rows-from-an-innodb-tablespace/&quot; papago-id=&quot;12-1&quot; rel=&quot;nofollow&quot;&gt;있는 복구 도구가 있습니다&lt;/a&gt;.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;페일 세이프나 완벽과는 거리가 멀며 실수로 삭제한 후 MySQL 서버를 얼마나 빨리 중지했는지가 큰 영향을 미칩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;변경 사항은 많은 데이터를 복구할 수 있지만 &lt;em papago-id=&quot;12-3&quot;&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;물론 적절한 일일 백업, binlog, 그리고 실수로 삭제하는 데는 도움이 되지 않지만 하드웨어 장애가 발생할 경우에는 도움이 되는 복제 슬레이브를 사용하는 것도 방법이지만, 이 도구를 사용하면 &lt;em papago-id=&quot;13-1&quot;&gt;데이터&lt;/em&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;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;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;em papago-id=&quot;15-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;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(또는 사용자 정의 프론트엔드를 통해 데이터를 삭제한 경우 프론트엔드가 실제로 DELETE를 발행하지 않을 가능성이 높습니다. 많은 테이블이 다음과 같습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;is_deleted&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 class=&quot;papago-parent&quot;&gt;이는 프론트엔드 앱에 구현된 &quot;소프트 삭제&quot;라는 점에 유의하십시오. 이 경우 데이터는 실제로 삭제되지 않습니다. 실제로 데이터를 발급한 경우&lt;/font&gt;&lt;/font&gt;&lt;code&gt;DELETE&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;TRUNCATE&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또는 유사한 SQL 명령어는 해당되지 않습니다.)&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;My &lt;strong papago-id=&quot;20-1&quot;&gt;ISAM&lt;/strong&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-1&quot;&gt;mysql/data/[your_db]/[your_table].MYD&lt;/strong&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;/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;URL : https://stackoverflow.com/questions/6924823/how-to-recover-just-deleted-rows-in-mysql&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>MySQL</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1015</guid>
      <comments>https://itgroup.tistory.com/1015#entry1015comment</comments>
      <pubDate>Mon, 30 Oct 2023 20:53:59 +0900</pubDate>
    </item>
    <item>
      <title>Oracle 실행 계획의 액세스 및 필터 술어</title>
      <link>https://itgroup.tistory.com/1014</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Oracle 실행 계획의 액세스 및 필터 술어&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 실행 계획에서 Access와 Filter 술어의 차이점은 무엇입니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 제대로 이해했다면, 어떤 데이터 블록을 읽어야 하는지 결정하기 위해 &quot;access&quot;를 사용하고, 블록을 읽은 후에는 &quot;filter&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;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;10 - access(&quot;DOMAIN_CODE&quot;='BLCOLLSTS' AND &quot;CURRENT_VERSION_IND&quot;='Y')
     filter(&quot;CURRENT_VERSION_IND&quot;='Y')
&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;액세스 및 필터 섹션에서 모두 &quot;CURRENT_VERSION_IND&quot;가 반복되는 이유는 무엇입니까?&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;해당 작업은 INDEX RANGE 스캔 온 인덱스로 필드(DOMAIN_CODE, CODE_VALUE, CURRENT_VERSION_IND, DECODE_DISPLAY)에 정의됩니다.&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;CURRENT_VERSION_IND가 인덱스의 두 번째 열이 아니기 때문에 Access 단계에서 Oracle이 이 열을 사용할 수 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 DOMAIN_CODE 열로 인덱스에 액세스하여 모든 블록을 가져온 다음 CURRENT_VERSION_IND로 필터링합니다.&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;DOMAIN_CODE&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;CURRENT_VERSION_IND&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;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;CODE_VALUE&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;CURRENT_VERSION_IND&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;s)아, 아.&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&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&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;라는 대답도 있습니다. 필터 술어 &quot;10&quot;이 테이블 액세스가 아니라 인덱스 액세스에 있다고 하셨고, 어쨌든 Oracle이 필터를 평가할 수 없는 이유는 없습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;CURRENT_VERSION_IND&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;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Oracle이 무엇을 하고 있는지에 대한 평가는 맞지만 필터 단계(또는 다른 옵티마이저 선택)가 항상 &quot;악&quot;하다고 말하는 것은 틀립니다.&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;그러나 이 경우 인덱스의 두 번째 열로 CURRENT_VERSION_IND를 추가하면 자주 실행되는 쿼리의 성능이 크게 향상되고 &lt;strong papago-id=&quot;16-1&quot;&gt;다른&lt;/strong&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/1464469/access-and-filter-predicates-in-oracle-execution-plan&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>oracle</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1014</guid>
      <comments>https://itgroup.tistory.com/1014#entry1014comment</comments>
      <pubDate>Mon, 30 Oct 2023 20:53:52 +0900</pubDate>
    </item>
    <item>
      <title>자바스크립트에서 '정의'란 무엇에 쓰이는가?</title>
      <link>https://itgroup.tistory.com/1013</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;/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 papago-id=&quot;3&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;define( [
    'aloha/core',
    'aloha/jquery',
    'aloha/selection'
], function (Aloha, jQuery, Selection, Plugin) {
&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;/font&gt;&lt;/font&gt;&lt;code&gt;vars&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;proptotypes&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 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;a href=&quot;http://requirejs.org/docs/api.html#define&quot; papago-id=&quot;8-1&quot; rel=&quot;noreferrer&quot;&gt;RequireJS&lt;/a&gt;, 특히 해당 함수의 &quot;&lt;a href=&quot;http://requirejs.org/docs/api.html#defdep&quot; rel=&quot;noreferrer&quot; papago-id=&quot;8-3&quot;&gt;의존성 정의&lt;/a&gt;&quot; &lt;a href=&quot;http://requirejs.org/docs/api.html#define&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;/font&gt;&lt;/p&gt; 
&lt;blockquote&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;/blockquote&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;그리고 &quot;의존성을 가진 정의&quot; 형태의&lt;/font&gt;&lt;/font&gt;&lt;code&gt;define&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;blockquote&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;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;함수는 모듈을 정의하는 개체를 반환해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt;&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 모듈을 쓰기 위한 AMD 패턴입니다. AMD는 일반적인 것이 아니라 기본적으로 모듈을 비동기식으로 가져와야 할 때를 의미합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;JS.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;define(['module1', 'module2'], function(module1, module2) {
  console.log(module1.sayHi());
});
&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;Define(정의)은 종속성 배열을 사용하고 모든 종속성이 비차단 방식으로 백그라운드(비동기)에 로드되면, 인수(이 경우 종속성)를 수락하는 콜백을 정의합니다.&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;또 한 가지 유의할 점은 각 모듈은 &quot;defin&quot; 키워드를 사용하여 정의해야 한다는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어 module1은 다음과 같이 정의됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;define([], function() {

  return {
    sayHi: function() {
      console.log('Hi Hi');
    },
  };
});
&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;이러한 모듈(AMD) 작성 방식을 사용하면 노드에서와 같이 브라우저 호환성을 염두에 두고 작성할 수 있습니다(필요 없음).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;JS) 및 객체, JSON 등을 포함한 많은 형식을 정의할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;JS는 객체가 되기 위해 모듈이 필요합니다.&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;AMD는 자체적인 문제점을 가지고 있습니다.&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;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/10331305/what-is-define-used-for-in-javascript-aside-from-the-obvious&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>JavaScript</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1013</guid>
      <comments>https://itgroup.tistory.com/1013#entry1013comment</comments>
      <pubDate>Mon, 30 Oct 2023 20:53:46 +0900</pubDate>
    </item>
    <item>
      <title>Memcpy(&amp;amp;a + 1, &amp;amp;b + 1, 0)가 C11에 정의되어 있습니까?</title>
      <link>https://itgroup.tistory.com/1012</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Memcpy(&amp;amp;a + 1, &amp;amp;b + 1, 0)가 C11에 정의되어 있습니까?&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;a href=&quot;https://stackoverflow.com/questions/5243012/is-it-guaranteed-to-be-safe-to-perform-memcpy0-0-0&quot; papago-id=&quot;1-1&quot;&gt;이전 질문&lt;/a&gt;에 이어집니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;memcpy(0, 0, 0)&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;/p&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;연결된 질문에서 알 수 있듯이 답은 C11의 조항 7.1.4:1의 내용에 달려 있습니다.&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;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;함수에 대한 인수의 값(예: 함수의 도메인 외부의 값, 프로그램의 주소 공간 외부의 포인터 또는 널 포인터)이 잘못된 경우 […] 동작은 정의되지 않습니다. […]&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&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&gt;&lt;code&gt;memcpy()&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;void&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;const void&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;void *memcpy(void * restrict s1, const void * restrict s2, size_t n);
&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;표준에는 &quot;유효한&quot; 포인터라는 두 가지 개념이 있기 때문에 질문할 가치가 있습니다: 포인터 산술을 통해 유효하게 얻을 수 있는 포인터와 유효하게 비교할 수 있는 포인터가 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&amp;lt;&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;&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 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;이전 클래스는 다음과 같은 &quot;1-past&quot; 포인터를 포함합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&amp;amp;a + 1&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;&amp;amp;b + 1&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&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;char a;
const char b = '7';
memcpy(&amp;amp;a + 1, &amp;amp;b + 1, 0);
&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 class=&quot;papago-parent&quot;&gt;위의 토막글이 정의된 행동으로 간주되어야 하는가, 의 주장에 비추어 볼 때.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;memcpy()&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;void&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 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;&amp;amp;a + 1&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;&amp;amp;b + 1&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;&quot;프로그램의 주소 공간 outside&quot;로 간주됩니까?&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;sub&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;저는 표준 C 기능의 효과를 공식화하는 과정에 있기 때문에 이 문제가 중요합니다.&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;memcpy()&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;requires \valid(s1+(0 .. n-1));&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;21&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;GCC 4.9가 위 수식에 표현된 것 이상으로 그러한 라이브러리 함수 호출을 &lt;a href=&quot;https://github.com/plt/racket/commit/df375daef43ce363920c4d3f147c911574341f11&quot; papago-id=&quot;21-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;공격적&lt;/a&gt;으로 최적화하기 시작했다는 것이 알려지기 전까지(&lt;a href=&quot;http://pastebin.com/raw.php?i=fRbGfQ6p&quot; papago-id=&quot;21-3&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&gt;&lt;code&gt;\valid(s1+(0 .. n-1))&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;true&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;n&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;0&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;, 그리고 GCC 4.9가 최적화하기 위해 의존하는 정의되지 않은 동작을 포착하지 못합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/sub&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;C11은 다음과 같이 말합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(C11, 7.24.2.1p2) &quot;memcpy 함수는 s2가 가리키는 객체에서 s1이 가리키는 객체로 n개의 문자를 복사합니다.&quot;&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;&lt;code&gt;&amp;amp;a + 1&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;&amp;amp;a + 1&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;p papago-id=&quot;30&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;표준에 따른 &quot;올바른&quot; 답은 일치하지 않는 것처럼 보이지만, int[6]; int[6]; 모두 뒤에 오는 것이 솔직하지 않다는 것을 알 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;memcpy(a+0, b+0, 6);
memcpy(a+1, b+1, 5);
memcpy(a+2, b+2, 4);
memcpy(a+3, b+3, 3);
memcpy(a+4, b+4, 2);
memcpy(a+5, b+5, 1);
&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;memcpy(a+6, b+6, 0);
&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;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;개인적으로, memcpy(0,0,0)도 유효하다고 정의하고 싶지만(유효한 포인터만 요구하고 객체는 요구하지 않는 이론적 근거가 있음), 적어도 &quot;배열의 끝&quot;의 경우는 배열의 끝에 있는 영역을 복사하기 위한 일반적인 패턴에 대한 실제 예외인 반면, 단 하나의 경우입니다.&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;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/25390577/is-memcpya-1-b-1-0-defined-in-c11&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>C</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1012</guid>
      <comments>https://itgroup.tistory.com/1012#entry1012comment</comments>
      <pubDate>Mon, 30 Oct 2023 20:53:40 +0900</pubDate>
    </item>
    <item>
      <title>C 언어의 새 행 문자는 무엇입니까?\r 또는 \n?</title>
      <link>https://itgroup.tistory.com/1011</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;C 언어의 새 행 문자는 무엇입니까?\r 또는 \n?&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;OS마다 줄 끝 캐릭터가 다른 것은 알지만, C라인 캐릭터로 번역됩니다.&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&gt;&lt;/font&gt;&lt;code&gt;\n&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;. 텍스트 모드 파일을 읽거나 쓸 때, 또는 stdin/stdout 등을 사용해야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;\n&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&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;/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;C 언어의 새 행 문자는 무엇입니까?\r 또는 \n?&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&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;em papago-id=&quot;3-1&quot;&gt;약간의&lt;/em&gt;&lt;/font&gt;&lt;/font&gt; &lt;code&gt;char&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;'\n'&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;. C11 5.2.1&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;이 C 새 라인은 세 곳으로 나뉩니다: C 소스 코드, 하나로.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;char&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;em papago-id=&quot;7-1&quot;&gt;텍스트&lt;/em&gt; 모드일 때 파일 I/O의 끝 부분으로 사용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;많은 컴파일러가 소스 텍스트를 ASCII로 처리합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 경우 코드 10, 때로는 13, 때로는 13, 때로는 13,10을 소스 코드의 새 줄로 페어링합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;소스 코드가 다른 문자 집합에 있는 경우 다른 코드를 사용할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 새 줄은 일반적으로 소스 코드 줄의 끝을 표시합니다(사실 여기서는 좀 더 복잡합니다). // comment 및 # 디렉티브.&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;12&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;13&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;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;대표적인&lt;/font&gt;&lt;/font&gt;&lt;code&gt;char&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;\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;. ASCII를 사용하는 경우,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;char&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;10의 값을 가질 것입니다.&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;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;파일 I/O, &lt;em papago-id=&quot;14-1&quot;&gt;텍스트 모드&lt;/em&gt;에서 입력 파일(및 stdin)의 바이트를 읽을 때 &lt;em papago-id=&quot;14-3&quot;&gt;환경에 따라&lt;/em&gt; 값이 10(Unix), &lt;em papago-id=&quot;14-5&quot;&gt;13, 10&lt;/em&gt;, (*1)(Windows), 13(Old Mac??) 및 기타 변형된 바이트가 '\n'으로 변환됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;파일(또는 stdout)을 작성하면 역번역이 발생합니다.&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;참고: 바이너리 모드의 파일 I/O는 변환할 수 없습니다.&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;20&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그&lt;/font&gt;&lt;/font&gt;&lt;code&gt;'\r'&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;char&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;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(*1) 단독 &lt;em papago-id=&quot;19-1&quot;&gt;13&lt;/em&gt; 및/또는 &lt;em papago-id=&quot;19-3&quot;&gt;10&lt;/em&gt;은 다음과 같이 번역될 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;\n&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;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;newline 문자&lt;/strong&gt;를 의미하는 경우,&lt;strong papago-id=&quot;25-3&quot;&gt; newline&lt;/strong&gt; &lt;strong papago-id=&quot;25-5&quot;&gt;문자는 &lt;/strong&gt;\n이고 \r은 &lt;strong papago-id=&quot;25-7&quot;&gt;반송파 반송파 문자&lt;/strong&gt;이지만 newline을 의미하는 경우에는 운영 체제에 따라 달라집니다. DOS는 반송파 반송파와 line feed&lt;strong papago-id=&quot;25-9&quot;&gt;(&quot;\r\n&quot;)&lt;/strong&gt;를 line ending으로 사용하고 유닉스는 line feed&lt;strong papago-id=&quot;25-11&quot;&gt;(&quot;\n&quot;)&lt;/strong&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;'\r' = 캐리지 리턴 및 '\n' = 라인 피드.&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에서 사용할 때 몇 가지 다른 동작이 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;유닉스에서는 '\n'이지만, 윈도우에서는 '\r'\n'입니다.&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/18379848/what-is-the-newline-character-in-the-c-language-r-or-n&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>C</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1011</guid>
      <comments>https://itgroup.tistory.com/1011#entry1011comment</comments>
      <pubDate>Mon, 30 Oct 2023 20:53:33 +0900</pubDate>
    </item>
    <item>
      <title>will IF SIGNAL SQLSTATE in mariadb exit stored procedure?</title>
      <link>https://itgroup.tistory.com/1010</link>
      <description>&lt;h2 papago-id=&quot;0&quot;&gt;will IF SIGNAL SQLSTATE in mariadb exit stored procedure?&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot;&gt;I don't quite understand how MariaDB signals work.&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 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;SIGNAL SQLSTATE '......' SET MESAGE_TEXT='......'&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;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;IF...THEN&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;CREATE PROCEDURE `testP`()
BEGIN
IF testStringSecurity('he;llo world') != 0 THEN
  SELECT 'INVALID CHARACTERS';
END IF;
SELECT 'GOOD TO GO'; 
END;
&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;/font&gt;&lt;/font&gt;&lt;code&gt;GOOD TO GO&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;IF ... THEN ... ELSE&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;pre&gt;&lt;code&gt;CREATE PROCEDURE `testP`()
BEGIN
IF testStringSecurity('he;llo') != 0 THEN
  SELECT 'INVALID CHARACTERS';
ELSE
  SELECT 'GOOD TO GO';
END IF;
END
&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;A를 사용.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;SIGNAL&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;CREATE PROCEDURE `testP`()
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
GET DIAGNOSTICS CONDITION 1 @sqlstate = RETURNED_SQLSTATE, 
      @errno = MYSQL_ERRNO, @text = MESSAGE_TEXT; 
        SET @full_error = CONCAT(&quot;ERROR &quot;, @errno, &quot; (&quot;, @sqlstate, &quot;): &quot;, @text); 
        SELECT @full_error;
END;
DECLARE EXIT HANDLER FOR NOT FOUND
BEGIN
  SELECT CONCAT('ERROR: ',@str,' RETRUNED NOT FOUND EXCEPTION.');
END;
IF testStringSecurity('he;llo') != 0 THEN
    SIGNAL SQLSTATE '42000'
      SET MESSAGE_TEXT = 'ERROR: Invalid string';
END IF;

SELECT 'GOOD TO GO';
END
&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;'ERROR 1644 (42000): ERROR: Invalid string'&lt;/code&gt;&lt;/p&gt;&lt;p papago-id=&quot;12&quot;&gt;ReferenceURL : &lt;a href=&quot;https://stackoverflow.com/questions/45677080/will-if-signal-sqlstate-in-mariadb-exit-stored-procedure&quot; target=&quot;_blank&quot; papago-id=&quot;12-1&quot;&gt;https://stackoverflow.com/questions/45677080/will-if-signal-sqlstate-in-mariadb-exit-stored-procedure&lt;/a&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>MariaDB</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1010</guid>
      <comments>https://itgroup.tistory.com/1010#entry1010comment</comments>
      <pubDate>Mon, 30 Oct 2023 20:53:27 +0900</pubDate>
    </item>
    <item>
      <title>약한 연결의 실용적인 응용은 무엇입니까?</title>
      <link>https://itgroup.tistory.com/1009</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;em papago-id=&quot;1-1&quot;&gt;약하다고&lt;/em&gt; 선언될 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Weak_symbol&quot; rel=&quot;noreferrer&quot; papago-id=&quot;1-3&quot;&gt;위키피디아에 의하면&lt;/a&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;weak symbol은 객체 파일이나 동적 라이브러리에서 다른 심볼 정의에 의해 무시될 수 있는 심볼 정의입니다.&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;어떤 시나리오 또는 어떤 애플리케이션에 약한 기호가 필요합니까?&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;p papago-id=&quot;6&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;7&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;static void placeholder_isr(void)
{
}

/* Introduce properly-named function pointers, with weak linking.
 * NOTE: This syntax is completely fictional as far as I know.
*/
void (*timer1_isr)() = placeholder_isr __attribute(&quot;weak linking&quot;);
void (*timer2_isr)() = placeholder_isr __attribute(&quot;weak linking&quot;);
void (*usart1_isr)() = placeholder_isr __attribute(&quot;weak linking&quot;);
void (*usart2_isr)() = placeholder_isr __attribute(&quot;weak linking&quot;);
void (*dma1_isr)() = placeholder_isr __attribute(&quot;weak linking&quot;);
void (*dma1_isr)() = placeholder_isr __attribute(&quot;weak linking&quot;);

/* Declare the table of interrupt handlers. */
static void (*isr_table)[] = {
  timer1_isr,
  timer2_isr,
  usart1_isr,
  usart2_isr,
  dma1_isr,
  dma2_isr,
} __attribute(&quot;isr vector&quot;); /* Attribute to place it where it needs to go. */
&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;pre&gt;&lt;code&gt;void timer1_isr(void)
{
  /* Handler ISR from timer1. */
}
&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;다른 것을 바꿀 필요 없이 &quot;그냥&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;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;약한 링크의 한 가지 용도는 C++ 표준에서 &lt;em papago-id=&quot;10-1&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;void *operator new(std::size_t);
void *operator new(std::size_t, std::nothrow_t const &amp;amp;) noexcept;
void *operator new[](std::size_t);
void *operator new[](std::size_t, const std::nothrow_t&amp;amp;) noexcept;
void operator delete(void *) noexcept;
void operator delete(void *, std::nothrow_t const &amp;amp;) noexcept;
void operator delete[](void *) noexcept;
void operator delete[](void *, std::nothrow_t const &amp;amp;) noexcept;
&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;이는 약한 연동을 통해 쉽게 구현할 수 있습니다.&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&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;g++ -shared -fPIC&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;extern void a();

inline void foo() { a(); }

void bar() { foo(); }
void baz() { foo(); }
&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;기호 bar와 baz는 다음과 같이 T(정규값)로 표시됩니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;nm&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 foo는 W - weak로 표시됩니다.&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;mn -C ./a.out&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;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;인라인 함수와 템플릿은 헤더에 정의될 수 있으며 보통 소스의 다른 부분에서 여러 번 정의되고 마지막으로 하나만 활성 상태로 유지됩니다.&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;Waken으로 표시되지 않으면 여러 &quot;foo&quot; 기호가 충돌하거나 컴파일러가 인라인을 비활성화할 수 없습니다.&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;&lt;a href=&quot;http://gcc.gnu.org/onlinedocs/gcc-4.1.1/gcc/Function-Attributes.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;22-0&quot;&gt;weak&lt;/a&gt; 속성으로 인해 선언이 전역이 아닌 weak 심볼로 표시됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 사용자 코드에서 무시할 수 있는 라이브러리 함수를 정의할 때 주로 유용하지만, 비함수 선언과 함께 사용할 수도 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;취약 기호는 ELF 대상과 GNU 어셈블러 및 링커를 사용할 때 a.out 대상에 대해서도 지원됩니다.&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;a href=&quot;http://www.cs.virginia.edu/~wh5a/blog/The%20weak%20attribute%20of%20gcc.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;23-0&quot;&gt;취약 속성 예제&lt;/a&gt;:&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;&lt;strong papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;약한&lt;/font&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;extern void foo() __attribute__((weak));

int main() {
if (foo) foo();
} 
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;em&gt;&lt;strong papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;축구의&lt;/font&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;void foo() {
printf(&quot;in foo.\n&quot;);
} 
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;em&gt;&lt;strong papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;힘이 센&lt;/font&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;extern void foo() ;

int main() {
if (foo) foo();
} 
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;em&gt;&lt;strong papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;컴파일링&lt;/font&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$ cc weak.c // Compiles OK
$ cc strong.c // undefined reference to `foo'
&lt;/code&gt;&lt;/pre&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;&quot;foo&quot;가 약하다고 선언되면, 그 정의는 생략될 수도 있고, 다른 라이브러리로 대체될 수도 있으며, 일종의 &quot;링크-타임 바인딩&quot;을 특징으로 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;링크기는 정의되지 않은 약한 기호에 대해 0을 채웁니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&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;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;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/15525537/what-are-practical-applications-of-weak-linking&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>C</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1009</guid>
      <comments>https://itgroup.tistory.com/1009#entry1009comment</comments>
      <pubDate>Mon, 30 Oct 2023 20:53:21 +0900</pubDate>
    </item>
    <item>
      <title>How do you Unit Test Python DataFrames</title>
      <link>https://itgroup.tistory.com/1008</link>
      <description>&lt;h2 papago-id=&quot;0&quot;&gt;How do you Unit Test Python DataFrames&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot;&gt;How do I unit test Python dataframes?&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot;&gt;I have functions that have an input and output as dataframes. Almost every function I have does this. Now if I want to unit test this what is the best method of doing it? It seems a bit of an effort to create a new dataframe (with values populated) for every function?&lt;/p&gt; 
&lt;p papago-id=&quot;3&quot;&gt;Are there any materials you can refer me to? Should you write unit tests for these functions?&lt;/p&gt;&lt;p papago-id=&quot;4&quot;&gt;While Pandas' test functions are primarily used for internal testing, NumPy includes a very useful set of testing functions that are documented here: &lt;a href=&quot;https://docs.scipy.org/doc/numpy/reference/routines.testing.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;4-1&quot;&gt;NumPy Test Support&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;이 함수들은 NumPy 배열을 비교하지만, Pandas DataFrame의 기본이 되는 배열은&lt;/font&gt;&lt;/font&gt;&lt;code&gt;values&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;간단한 DataFrame을 정의하고 기능이 원하는 것과 비교할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;7&quot;&gt;One technique you can use is to define one set of test data for a number of functions. That way, you can use &lt;a href=&quot;https://doc.pytest.org/en/latest/explanation/fixtures.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;7-1&quot;&gt;Pytest Fixtures&lt;/a&gt; to define that DataFrame once, and use it in multiple tests.&lt;/p&gt; 
&lt;p papago-id=&quot;8&quot;&gt;In terms of resources, I found this article on &lt;a href=&quot;https://penandpants.com/2014/10/07/testing-with-numpy-and-pandas/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;8-1&quot;&gt;Testing with NumPy and Pandas&lt;/a&gt; to be very useful. I also did a short presentation about data analysis testing at PyCon Canada 2016: &lt;a href=&quot;https://www.youtube.com/watch?v=ovvU41ve1FQ&quot; rel=&quot;noreferrer&quot; papago-id=&quot;8-3&quot;&gt;Automate Your Data Analysis Testing&lt;/a&gt;.&lt;/p&gt;&lt;p papago-id=&quot;9&quot;&gt;you can use pandas testing functions:&lt;/p&gt; 
&lt;p papago-id=&quot;10&quot;&gt;It will give more flexbile to compare your result with computed result in different ways.&lt;/p&gt; 
&lt;p papago-id=&quot;11&quot;&gt;For example:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;df1=pd.DataFrame({'a':[1,2,3,4,5]})
df2=pd.DataFrame({'a':[6,7,8,9,10]})

expected_res=pd.Series([7,9,11,13,15])
pd.testing.assert_series_equal((df1['a']+df2['a']),expected_res,check_names=False)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;12&quot;&gt;For more details refer this &lt;a href=&quot;https://pandas.pydata.org/pandas-docs/version/0.22.0/api.html#testing-functions&quot; rel=&quot;noreferrer&quot; papago-id=&quot;12-1&quot;&gt;link&lt;/a&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;pytest를 사용하는 경우,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;pandasSnapshot&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;# use with pytest
import pandas as pd
from snapshottest_ext.dataframe import PandasSnapshot

def test_format(snapshot):
    df = pd.DataFrame([['a', 'b'], ['c', 'd']],
                      columns=['col 1', 'col 2'])
    snapshot.assert_match(PandasSnapshot(df))
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;15&quot;&gt;One big cons is that the snapshot is not readable anymore. (store the content as csv is more readable, but it is problematic.&lt;/p&gt; 
&lt;p papago-id=&quot;16&quot;&gt;PS: I am the author of pytest snapshot extension.&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;code&gt;snapshottest&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;pre class=&quot;lang-py prettyprint-override&quot;&gt;&lt;code&gt;def test_something_works(snapshot): # snapshot is a pytest fixture from snapshottest
    data_frame = calc_something_and_return_pandas_dataframe()
    snapshot.assert_match(data_frame.to_csv(index=False), 'some_module_level_unique_name_for_the_snapshot')
&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;그러면 업데이트할 수 있는 csv 출력이 포함된 파일이 있는 스냅샷 폴더가 생성됩니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;--snapshot-update&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;data_frame&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 papago-id=&quot;23&quot;&gt;Might be worth mentioning that your snapshots should be checked in to source control.&lt;/p&gt;&lt;p papago-id=&quot;24&quot;&gt;I don't think it's hard to create small DataFrames for unit testing?&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import pandas as pd
from nose.tools import assert_dict_equal

input_df = pd.DataFrame.from_dict({
    'field_1': [some, values],
    'field_2': [other, values]
})
expected = {
    'result': [...]
}
assert_dict_equal(expected, my_func(input_df).to_dict(), &quot;oops, there's a bug...&quot;)
&lt;/code&gt;&lt;/pre&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;값을 문서 문자열에 CSV로 기록하고(혹은 크기가 큰 경우 별도의 파일로 기록하는 것을 제안합니다), 이를 사용하여 구문 분석하는 방법을 제안합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;pd.read_csv()&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;. CSV의 예상 출력도 구문 분석하여 비교하거나 사용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;df.to_csv()&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;CSV를 작성하고 분할합니다.&lt;/font&gt;&lt;/font&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://github.com/MrPowers/beavis&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;28-1&quot;&gt;beavis&lt;/a&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;pre class=&quot;lang-py prettyprint-override&quot;&gt;&lt;code&gt;df = pd.DataFrame({&quot;col1&quot;: [1042, 2, 9, 6], &quot;col2&quot;: [5, 2, 7, 6]})
pd.testing.assert_series_equal(df[&quot;col1&quot;], df[&quot;col2&quot;])
&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;
&amp;gt;   ???
E   AssertionError: Series are different
E
E   Series values are different (50.0 %)
E   [index]: [0, 1, 2, 3]
E   [left]:  [1042, 2, 9, 6]
E   [right]: [5, 2, 7, 6]
&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;p papago-id=&quot;32&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;beavis로 동일한 테스트를 작성하는 방법은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-py prettyprint-override&quot;&gt;&lt;code&gt;import beavis

beavis.assert_pd_column_equality(df, &quot;col1&quot;, &quot;col2&quot;)
&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;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://i.stack.imgur.com/fDqPS.png&quot; rel=&quot;nofollow noreferrer&quot;&gt;&lt;img src=&quot;https://i.stack.imgur.com/fDqPS.png&quot; alt=&quot;Columns not equal error&quot;&gt;&lt;/a&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; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;assert_frame_equal&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 class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;DataFrame의 동등성과 beavis를 비교할 수 있는 방법은 다음과 같습니다.&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;df1 = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]})
df2 = pd.DataFrame({'col1': [5, 2], 'col2': [3, 4]})
beavis.assert_pd_equality(df1, df2)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;a href=&quot;https://i.stack.imgur.com/CGkAB.png&quot; rel=&quot;nofollow noreferrer&quot;&gt;&lt;img src=&quot;https://i.stack.imgur.com/CGkAB.png&quot; alt=&quot;Beavis DataFrame equality&quot;&gt;&lt;/a&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;a href=&quot;https://github.com/InvestmentSystems/frame-fixtures&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;36-1&quot;&gt;장치&lt;/a&gt; Python 패키지는 유닛 또는 성능 테스트를 위해 &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;예를 들어 숫자 인덱스가 있는 Float 및 문자열의 DataFrame에 대해 테스트하려는 경우 압축 문자열 선언을 사용하여 DataFrame을 생성할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-py prettyprint-override&quot;&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; ff.Fixture.to_frame('i(I,int)|v(float,str)|s(4,2)').to_pandas()
              0     1
 34715  1930.40  zaji
-3648  -1760.34  zJnC
 91301  1857.34  zDdR
 30205  1699.34  zuVU

&amp;gt;&amp;gt;&amp;gt; ff.Fixture.to_frame('i(I,int)|v(float,str)|s(8,3)').to_pandas()
               0     1        2
 34715   1930.40  zaji   694.30
-3648   -1760.34  zJnC   -72.96
 91301   1857.34  zDdR  1826.02
 30205   1699.34  zuVU   604.10
 54020    268.96  zKka  1080.40
 129017  3511.58  zJXD  2580.34
 35021   1175.36  zPAQ   700.42
 166924  2925.68  zyps  3338.48

&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;URL : https://stackoverflow.com/questions/41852686/how-do-you-unit-test-python-dataframes&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>dataframe</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1008</guid>
      <comments>https://itgroup.tistory.com/1008#entry1008comment</comments>
      <pubDate>Mon, 30 Oct 2023 20:53:13 +0900</pubDate>
    </item>
    <item>
      <title>부트스트랩 4, 버튼을 중앙 정렬하려면 어떻게 해야 합니까?</title>
      <link>https://itgroup.tistory.com/1007</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;부트스트랩 4, 버튼을 중앙 정렬하려면 어떻게 해야 합니까?&lt;/font&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;div class=&quot;container&quot;&amp;gt;
  &amp;lt;div class=&quot;row&quot;&amp;gt;
    &amp;lt;div class=&quot;col-xs-12 col-sm-12 col-md-8&quot;&amp;gt;
      &amp;lt;div v-for=&quot;job in job&quot;&amp;gt;
        &amp;lt;div class=&quot;text-center&quot;&amp;gt;
          &amp;lt;h1&amp;gt;{{ job.job_title }}&amp;lt;/h1&amp;gt;
          &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Google Inc. &amp;lt;/strong&amp;gt; - {{ job.location }}&amp;lt;/p&amp;gt;
          &amp;lt;h2&amp;gt;&amp;lt;u&amp;gt;Job Description&amp;lt;/u&amp;gt;&amp;lt;/h2&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;p v-html=&quot;desc&quot;&amp;gt;&amp;lt;/p&amp;gt;
        &amp;lt;p class=&quot;text-center&quot;&amp;gt;Posted: {{ formatDate(job.date_created) }}&amp;lt;/p&amp;gt;
        &amp;lt;button v-on:click=&quot;applyResume()&quot; id=&quot;apply-btn&quot; class=&quot;btn btn-primary&quot;&amp;gt;{{ buttonText }}&amp;lt;/button&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div class=&quot;hidden-sm-down col-md-4&quot;&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&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;BS 3에서는 그냥 센터 블록을 사용하지만 BS4에서는 옵션이 아닙니다.&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;부트스트랩 4에서는 다음을 사용해야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;text-center&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;strong papago-id=&quot;3-1&quot;&gt;&lt;em papago-id=&quot;3-1-0&quot;&gt;블록&lt;/em&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;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;참고:&lt;/font&gt;&lt;/font&gt;&lt;code&gt;text-align:center;&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;code&gt;.text-center&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&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-html lang-html prettyprint-override&quot;&gt;&lt;code&gt;&amp;lt;link rel=&quot;stylesheet&quot; href=&quot;https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css&quot;&amp;gt;

&amp;lt;div class=&quot;container&quot;&amp;gt;
  &amp;lt;div class=&quot;row&quot;&amp;gt;
    &amp;lt;div class=&quot;col text-center&quot;&amp;gt;
      &amp;lt;button class=&quot;btn btn-default&quot;&amp;gt;Centered button&amp;lt;/button&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;hr&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;strong papago-id=&quot;7-1&quot;&gt;&lt;em papago-id=&quot;7-1-0&quot;&gt;블록&lt;/em&gt;&lt;/strong&gt; 또는 &lt;strong papago-id=&quot;7-3&quot;&gt;&lt;em papago-id=&quot;7-3-0&quot;&gt;플렉스&lt;/em&gt;&lt;/strong&gt;인 경우(그렇지 않음)&lt;/font&gt;&lt;/font&gt;&lt;code&gt;inline-&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, flexbox를 사용하여 센터링을 수행할 수 있습니다.&lt;/font&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-html lang-html prettyprint-override&quot;&gt;&lt;code&gt;&amp;lt;link rel=&quot;stylesheet&quot; href=&quot;https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css&quot;&amp;gt;

&amp;lt;div class=&quot;d-flex justify-content-center&quot;&amp;gt;
  &amp;lt;button class=&quot;btn btn-default&quot;&amp;gt;Centered button&amp;lt;/button&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&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;display: flex; justify-content: center&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;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;11-0&quot;&gt;참고:&lt;/strong&gt; 사용하지 않음&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.row.justify-content-center&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;.d-flex.justify-content-center&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;.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;특정 반응 구간에 음의 여백을 적용하여 예기치 않은 수평 스크롤 막대가 생성됩니다(단, 예외).&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.row&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;.container&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;.row&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;.m-0.p-0&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;.d-flex&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&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;20&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;두 번째 솔루션은 중심이 되는 내용(버튼)이 부모의 폭()을 초과하는 경우 문제가 됩니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.d-flex&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;br&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;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;h3 papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;코드:&lt;/font&gt;&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;div class=&quot;row justify-content-center&quot;&amp;gt;
  &amp;lt;button type=&quot;submit&quot; class=&quot;btn btn-primary&quot;&amp;gt;btnText&amp;lt;/button&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&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&gt;&lt;a href=&quot;https://getbootstrap.com/docs/4.1/layout/grid/#variable-width-content&quot; rel=&quot;noreferrer&quot; papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;https://getbootstrap.com/docs/4.1/layout/grid/ # variable폭-내용&lt;/font&gt;&lt;/a&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;부트스트랩 4 유틸리티를 사용하면 수평 여백을 '자동'으로 설정하여 요소 자체의 수평 중심을 잡을 수 있습니다.&lt;/font&gt;&lt;/p&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;mx-auto&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;m&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;x&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;24&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;x축(좌+우)을 참조하고&lt;/font&gt;&lt;/font&gt;&lt;code&gt;auto&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 class=&quot;papago-parent&quot;&gt;브라우저는 마진을 동일하게 계산하고 요소의 중심을 맞춥니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 설정은 block 요소에서만 작동하므로 display:block을 추가해야 하며 부트스트랩 유틸리티를 사용하면 다음과 같은 작업을 수행할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;d-block&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;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;button type=&quot;submit&quot; class=&quot;btn btn-primary mx-auto d-block&quot;&amp;gt;Submit&amp;lt;/button&amp;gt;
&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;a href=&quot;https://stackoverflow.com/questions/36521797/browser-support-for-margin-auto&quot; papago-id=&quot;34-1&quot;&gt;브라우저&lt;/a&gt;에서 마진:&lt;a href=&quot;https://stackoverflow.com/questions/36521797/browser-support-for-margin-auto&quot; papago-id=&quot;34-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;27&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;부트스트랩 4반&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;text-center&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 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;37&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;폼 그룹을 닫은 후 Bootsrap 형식으로 버튼별로 센터링하는 데 사용하는 전체 HTML은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;div class=&quot;form-row text-center&quot;&amp;gt;
    &amp;lt;div class=&quot;col-12&quot;&amp;gt;
        &amp;lt;button type=&quot;submit&quot; class=&quot;btn btn-primary&quot;&amp;gt;Submit&amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;
 &amp;lt;/div&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 class=&quot;papago-parent&quot;&gt;사용하다&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;text-center&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;부트스트랩 4에 대한 상위 컨테이너의 클래스&lt;/font&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;붕괴된 navbar의 버튼에 대해서는 위의 어떤 것도 나에게 작동하지 않았습니다. 그래서 나는 내 css 파일에서..&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;.navbar button {
    margin:auto;
}
&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;/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;div class=&quot;text-center&quot;&amp;gt;
              &amp;lt;a href=&quot;./templatemo_558_klassy_cafe/index.html&quot; class=&quot;btn btn- 
   outline-light me-5 &quot;&amp;gt;Lavande Restaurant PH&amp;lt;/a&amp;gt;`
             &amp;lt;/div&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;css/style.css&quot;를 당신의 css 경로에 적응시키는 것)이었습니다.&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;헤드 HTML:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; &amp;lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/style.css&quot; media=&quot;screen&quot; /&amp;gt;
&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;본문 HTML:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; &amp;lt;div class=&quot;container&quot;&amp;gt;
  &amp;lt;div class=&quot;row&quot;&amp;gt;
    &amp;lt;div class=&quot;mycentered-text&quot;&amp;gt;
      &amp;lt;button class=&quot;btn btn-default&quot;&amp;gt; Login &amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&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;CSS:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;.mycentered-text {
    text-align:center
}
&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;텍스트 센터 속성을 가진 H 클래스 또는 P 클래스로 랩핑할 수도 있습니다.&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;pre&gt;&lt;code&gt;&amp;lt;div class=&quot;align-self-center mx-auto&quot;&amp;gt;
              &amp;lt;button type=&quot;button&quot; class=&quot;btn btn-primary&quot;&amp;gt;
                  Click Me!
              &amp;lt;/button&amp;gt;
 &amp;lt;/div&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;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/41664991/bootstrap-4-how-do-i-center-align-a-button&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>CSS</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1007</guid>
      <comments>https://itgroup.tistory.com/1007#entry1007comment</comments>
      <pubDate>Mon, 30 Oct 2023 20:53:05 +0900</pubDate>
    </item>
    <item>
      <title>C에서 특정 권한으로 유닉스 도메인 소켓을 만드는 방법?</title>
      <link>https://itgroup.tistory.com/1006</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;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;간단한 코드가 있어요 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;sockaddr_un address;
address.sun_family = AF_UNIX;
strcpy(address.sun_path, path);
unlink(path);

int fd = socket(AF_UNIX, SOCK_STREAM, 0);
bind(fd, (sockaddr*)(&amp;amp;address), sizeof(address));
listen(fd, 100);
&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;다음과 같이 특정 권한을 가진 Unix Domain Socket 파일을 &lt;strong papago-id=&quot;2-1&quot;&gt;원자적&lt;/strong&gt;으로 생성하고자 합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;0777&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;umask&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 class=&quot;papago-parent&quot;&gt;심지어, 만약에.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;umask&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;소켓 파일에 영향을 미치므로 다중 threaded 프로그램에서는 원자 방식이 아닙니다.&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&gt;&lt;code&gt;umask()&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;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;// Create a directory with the proper permissions
mkdir(path, 0700);
// Append the name of the socket
strcat(path, &quot;/socket_name&quot;);

// Create the socket normally
sockaddr_un address;
address.sun_family = AF_UNIX;
strcpy(address.sun_path, path);
int fd = socket(AF_UNIX, SOCK_STREAM, 0);
bind(fd, (sockaddr*)(&amp;amp;address), sizeof(address));
listen(fd, 100);
&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;chmod()&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;fchmod()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;호출 후 Unix 도메인 소켓의 파일 이름 사용&lt;/font&gt;&lt;/font&gt;&lt;code&gt;socket()&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;bind()&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;listen()&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;  int return_value;
  const char *sock_path;
  struct sockaddr_un local;

  sock_path = &quot;/tmp/mysocket&quot;;

  sockfd = socket(AF_UNIX, SOCK_STREAM, 0);
  if (sockfd == -1)
  {
    perror(&quot;socket&quot;);
    exit(-1);
  }

  local.sun_family = AF_UNIX; 
  strcpy(local.sun_path, sock_path);
  unlink(local.sun_path);
  len = strlen(local.sun_path) + sizeof(local.sun_family);
  bind(sockfd, (struct sockaddr *)&amp;amp;local, len);

  chmod(sock_path, 0777);

  retval = listen(sockfd, BACKLOG);
  if (retval == -1)
  {
    perror(&quot;listen&quot;);
    exit(-1);
  }
&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&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;umask&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;fd&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;/p&gt; 
&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;더 큰 문제는 사용 권한에 의존하는 것이 휴대용이 아니라는 것입니다. 많은 BSD 파생 소켓 스택은 단순히 엔클로저 디렉토리 및/또는 소켓 자체의 사용 권한을 무시합니다.&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;GNU/리눅스 시스템에서는 다음을 호출하여 작업할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;fchmod()&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;fd&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;code&gt;socket()&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;bind()&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;/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/20171747/how-to-create-unix-domain-socket-with-a-specific-permissions-in-c&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>C</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1006</guid>
      <comments>https://itgroup.tistory.com/1006#entry1006comment</comments>
      <pubDate>Wed, 25 Oct 2023 23:16:47 +0900</pubDate>
    </item>
    <item>
      <title>MySQL 인덱싱 및 파일 정렬 사용</title>
      <link>https://itgroup.tistory.com/1005</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&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/questions/32922983/mysql-indexes-what-are-the-best-practices-according-to-this-table-and-queries&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&gt;&lt;code&gt;views_point&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;(100번의 보기마다 increment) 및 날짜에 게시하기 위한 것&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;publishedon_hourly&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&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;CREATE TABLE IF NOT EXISTS `listings` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `type` tinyint(1) NOT NULL DEFAULT '1',
  `hash` char(32) NOT NULL,
  `source_id` int(10) unsigned NOT NULL,
  `link` varchar(255) NOT NULL,
  `short_link` varchar(255) NOT NULL,
  `cat_id` mediumint(5) NOT NULL,
  `title` mediumtext NOT NULL,
  `description` mediumtext,
  `content` mediumtext,
  `images` mediumtext,
  `videos` mediumtext,
  `views` int(10) unsigned NOT NULL DEFAULT '0',
  `views_point` int(10) unsigned NOT NULL DEFAULT '0',
  `comments` int(11) DEFAULT '0',
  `comments_update` int(11) NOT NULL DEFAULT '0',
  `editor_id` int(11) NOT NULL DEFAULT '0',
  `auther_name` varchar(255) DEFAULT NULL,
  `createdby_id` int(10) NOT NULL,
  `createdon` int(20) NOT NULL,
  `editedby_id` int(10) NOT NULL,
  `editedon` int(20) NOT NULL,
  `deleted` tinyint(1) NOT NULL,
  `deletedon` int(20) NOT NULL,
  `deletedby_id` int(10) NOT NULL,
  `deletedfor` varchar(255) NOT NULL,
  `published` tinyint(1) NOT NULL DEFAULT '1',
  `publishedon` int(11) unsigned NOT NULL,
  `publishedon_hourly` int(10) unsigned NOT NULL DEFAULT '0',
  `publishedby_id` int(10) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `hash` (`hash`),
  KEY `views_point` (`views_point`),
  KEY `listings` (`publishedon_hourly`,`published`,`cat_id`,`source_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED AUTO_INCREMENT=365513 ;
&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 *
FROM listings
WHERE (`publishedon_hourly` BETWEEN
       UNIX_TIMESTAMP( '2015-09-5 00:00:00' )
       AND UNIX_TIMESTAMP( '2015-10-5 12:00:00' ))
  AND (published =1)
  AND cat_id IN ( 1, 2, 3, 4, 5 )
ORDER BY by `views_point` DESC
LIMIT 10 
&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 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 *
FROM listings
WHERE (`publishedon_hourly` BETWEEN
       UNIX_TIMESTAMP( '2015-09-5 00:00:00' )
       AND UNIX_TIMESTAMP( '2015-09-5 12:00:00' ))
  AND (published =1)
  AND cat_id IN ( 1, 2, 3, 4, 5 )
  ORDER BY `views_point` DESC
  LIMIT 10 
&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;/p&gt; 
&lt;pre&gt;&lt;code&gt;INSERT INTO `listings` (`id`, `type`, `hash`, `source_id`, `link`, `short_link`, `cat_id`, `title`, `description`, `content`, `images`, `videos`, `views`, `views_point`, `comments`, `comments_update`, `editor_id`, `auther_name`, `createdby_id`, `createdon`, `editedby_id`, `editedon`, `deleted`, `deletedon`, `deletedby_id`, `deletedfor`, `published`, `publishedon`, `publishedon_hourly`, `publishedby_id`) VALUES
(94189, 1, '44a46d128ce730c72927b19c445ab26e', 8, 'http://Larkin.com/sapiente-laboriosam-omnis-tempore-aliquam-qui-nobis', '', 5, 'And Alice was more and.', 'So they got settled down again very sadly and quietly, and.', 'Dormouse. ''Fourteenth of March, I think it so quickly that the Gryphon only answered ''Come on!'' and ran the faster, while more and more sounds of broken glass, from which she concluded that it was looking down at them, and then a voice sometimes choked with sobs, to sing this:-- ''Beautiful Soup, so rich and green, Waiting in a natural way. ''I thought you did,'' said the Dormouse, without considering at all what had become of it; and as it.', NULL, '', 200, 19700, 0, 0, 0, 'Max', 0, 1441442729, 0, 0, 0, 0, 0, '', 1, 1441442729, 1441440000, 0),
(19030, 1, '3438f6a555f2ce7fdfe03cee7a52882a', 3, 'http://Romaguera.com/voluptatem-rerum-quia-sed', '', 2, 'Dodo said, ''EVERYBODY.', 'I wish I hadn''t to bring but one; Bill''s got the.', 'I wonder what they''ll do well enough; don''t be particular--Here, Bill! catch hold of this remark, and thought to herself. (Alice had no idea what Latitude or Longitude I''ve got to the confused clamour of the other queer noises, would change to dull reality--the grass would be offended again. ''Mine is a long way. So she went on. ''I do,'' Alice said nothing; she had succeeded in curving it down ''important,'' and some were birds,) ''I suppose so,''.', NULL, '', 800, 19400, 0, 0, 0, 'Antonio', 0, 1441447567, 0, 0, 0, 0, 0, '', 1, 1441447567, 1441447200, 0),
(129247, 4, '87d2029a300d8b4314508786eb620a24', 10, 'http://Ledner.com/', '', 4, 'I ever saw one that.', 'The Cat seemed to be a person of authority among them,.', 'I BEG your pardon!'' she exclaimed in a natural way again. ''I wonder what was the same height as herself; and when she looked down at her feet as the question was evidently meant for her. ''I can tell you my history, and you''ll understand why it is I hate cats and dogs.'' It was all dark overhead; before her was another long passage, and the blades of grass, but she had sat down a very little! Besides, SHE''S she, and I''m sure I have dropped them, I wonder?'' As she said to herself; ''his eyes are so VERY tired of being all alone here!'' As she said to itself ''Then I''ll go round a deal.', NULL, '', 1000, 19100, 0, 0, 0, 'Drake', 0, 1441409756, 0, 0, 0, 0, 0, '', 1, 1441409756, 1441407600, 0),
(264582, 2, '5e44fe417f284f42c3b10bccd9c89b14', 8, 'http://www.Dietrich.info/laboriosam-quae-eaque-aut-dolorem', '', 2, 'Alice asked in a very.', 'THINK; or is it directed to?'' said the Mock Turtle,.', 'I can listen all day to such stuff? Be off, or I''ll have you executed.'' The miserable Hatter dropped his teacup and bread-and-butter, and then unrolled the parchment scroll, and read as follows:-- ''The Queen will hear you! You see, she came upon a little of the players to be lost, as she spoke--fancy CURTSEYING as you''re falling through the wood. ''It''s the stupidest tea-party I.', NULL, '', 800, 18700, 0, 0, 0, 'Kevin', 0, 1441441192, 0, 0, 0, 0, 0, '', 1, 1441441192, 1441440000, 0),
(44798, 1, '567cc77ba88c05a4a805dc667816a30c', 14, 'http://www.Hintz.com/distinctio-nulla-quia-incidunt-facere-reprehenderit-sapiente-sint.html', '', 5, 'The Cat seemed to Alice.', 'And the moral of that is--&quot;Be what you mean,'' said Alice..', 'Alice very politely; but she felt very lonely and low-spirited. In a little faster?&quot; said a sleepy voice behind her. ''Collar that Dormouse,'' the Queen said severely ''Who is it directed to?'' said the Footman, and began staring at the Footman''s head: it just at first, but, after watching it a violent blow underneath her chin: it had no pictures or conversations in it, ''and what is the capital of Paris, and Paris is the same thing, you know.'' ''I DON''T.', NULL, '', 300, 17600, 0, 0, 0, 'Rocio', 0, 1441442557, 0, 0, 0, 0, 0, '', 1, 1441442557, 1441440000, 0),
(184472, 1, 'f852e3ed401c7c72c5a9609687385f65', 14, 'https://www.Schumm.biz/voluptatum-iure-qui-dicta-modi-est', '', 4, 'Alice replied, so.', 'I should have liked teaching it tricks very much, if--if.', 'NEVER come to the Dormouse, not choosing to notice this question, but hurriedly went on, ''What''s your name, child?'' ''My name is Alice, so please your Majesty,'' said Two, in a great thistle, to keep back the wandering hair that WOULD always get into her face. ''Wake up, Alice dear!'' said her sister; ''Why, what a dear quiet thing,'' Alice went on, spreading out the answer to shillings and pence. ''Take off your hat,'' the King had said that day. ''No, no!'' said the Gryphon. ''They can''t have anything to say, she simply bowed, and took the watch and looked at it again: but he could.', NULL, '', 900, 17600, 0, 0, 0, 'Billy', 0, 1441407837, 0, 0, 0, 0, 0, '', 1, 1441407837, 1441407600, 0),
(344246, 2, '09dc73287ff642cfa2c97977dc42bc64', 6, 'http://www.Cole.com/sit-maiores-et-quam-vitae-ut-fugiat', '', 1, 'IS the use of a.', 'And when I learn music.'' ''Ah! that accounts for it,'' said.', 'Gryphon answered, very nearly carried it out loud. ''Thinking again?'' the Duchess by this time.) ''You''re nothing but a pack of cards, after all. I needn''t be so stingy about it, you know--'' ''But, it goes on &quot;THEY ALL RETURNED FROM HIM TO YOU,&quot;'' said Alice. ''Call it what you mean,'' the March Hare, ''that &quot;I breathe when I breathe&quot;!'' ''It IS the same side of WHAT? The other guests had taken his watch out of it, and talking over its head. ''Very uncomfortable for the first to speak. ''What size do you like to go and get.', NULL, '', 600, 16900, 0, 0, 0, 'Enrico', 0, 1441406107, 0, 0, 0, 0, 0, '', 1, 1441406107, 1441404000, 0),
(19169, 1, '116c443b5709e870248c93358f9a328e', 12, 'http://www.Gleason.com/et-vero-optio-exercitationem-aliquid-optio-consectetur', '', 4, 'Let this be a lesson to.', 'Sir, With no jury or judge, would be very likely to eat.', 'I wonder who will put on your head-- Do you think I can find them.'' As she said this, she was quite out of sight before the end of every line: ''Speak roughly to your little boy, And beat him when he sneezes; For he can EVEN finish, if he had never heard of such a subject! Our family always HATED cats: nasty, low, vulgar things! Don''t let him know she liked them best, For this must ever be A secret, kept from all the creatures wouldn''t be so kind,'' Alice replied, so eagerly that the way I want to get very tired of being upset, and their curls got entangled together. Alice was not a regular rule: you invented it just grazed his nose, you know?'' ''It''s the thing Mock Turtle would be only.', NULL, '', 700, 16800, 0, 0, 0, 'Unique', 0, 1441407961, 0, 0, 0, 0, 0, '', 1, 1441407961, 1441407600, 0),
(192679, 1, '06a33747b5c95799034630e578e53dc5', 10, 'http://www.Pouros.com/qui-id-molestias-non-dolores-non', '', 5, 'Rabbit just under the.', 'KNOW IT TO BE TRUE--&quot; that''s the jury-box,'' thought Alice,.', 'Mock Turtle, who looked at Two. Two began in a hoarse, feeble voice: ''I heard every word you fellows were saying.'' ''Tell us a story.'' ''I''m afraid I can''t tell you how it was too dark to see what I should say &quot;With what porpoise?&quot;'' ''Don''t you mean by that?'' said the King; and as it was indeed: she was now more than Alice could not make out exactly what they WILL do next! As for pulling me out of court! Suppress him! Pinch him! Off with his head!&quot;'' ''How dreadfully savage!'' exclaimed Alice. ''That''s the first witness,'' said the Duchess. ''Everything''s got a moral, if only you can find it.'' And she squeezed herself up and ran the faster, while more and more faintly came, carried on the end of every line:.', NULL, '', 800, 15900, 0, 0, 0, 'Gene', 0, 1441414720, 0, 0, 0, 0, 0, '', 1, 1441414720, 1441411200, 0),
(251878, 4, '3eafacc53f86c8492c309ca2772fbfe9', 5, 'http://www.Schinner.info/tempora-et-est-qui-nulla', '', 2, 'NOT!'' cried the Mouse,.', 'Twinkle, twinkle--&quot;'' Here the Queen till she heard the.', 'Alice and all of them even when they hit her; and the sounds will take care of the gloves, and she dropped it hastily, just in time to begin at HIS time of life. The King''s argument was, that she had forgotten the Duchess to play croquet with the Dormouse. ''Write that down,'' the King added in an undertone to the fifth bend, I think?'' ''I had NOT!'' cried the Mouse, sharply and very neatly and simply arranged; the only difficulty was, that if something wasn''t done about it in less than a pig, my dear,'' said Alice, a little wider. ''Come, it''s pleased so far,'' said the Gryphon. ''Do you play croquet with the glass table and the King hastily said, and went by without noticing her. Then followed the Knave ''Turn them over!'' The Knave of.', NULL, '', 500, 15900, 0, 0, 0, 'Demarcus', 0, 1441414681, 0, 0, 0, 0, 0, '', 1, 1441414681, 1441411200, 0);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;a href=&quot;https://i.stack.imgur.com/rsfvt.png&quot; rel=&quot;nofollow noreferrer&quot;&gt;&lt;img src=&quot;https://i.stack.imgur.com/rsfvt.png&quot; alt=&quot;enter image description here&quot;&gt;&lt;/a&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;첫 번째 쿼리에서 ORDER BY는 다음을 사용하여 수행됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;views_point&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;INDEX. 쿼리의 WHERE 부분에서 사용되었기 때문에 MySQL에서 정렬에 사용할 수 있습니다.&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;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;두 번째 쿼리에서 MySQL은 다른 인덱스를 사용하여 WHERE 부분을 해결합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;listing_pcs&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; 조건별 ORDER를 만족시키는 데 사용할 수 없습니다.&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;MySQL은 대신 filsort를 사용하는데 인덱스를 사용할 수 없는 경우 가장 좋은 옵션입니다.&lt;/font&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;MySQL은 인덱스를 사용하여 인덱스가 WHERE 조건에서 사용된 것과 동일한지 여부만 정렬합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.6/en/order-by-optimization.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;14-1&quot;&gt;설명서&lt;/a&gt;의 의미는 다음과 같습니다.&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;MySQL은 인덱스를 사용하여 WHERE 절과 일치하는 행을 찾지만 인덱스를 사용하여 ORDER BY를 해결할 수 없는 경우도 있습니다.&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;행을 가져오는 데 사용된 키가 ORDER BY에 사용된 키와 같지 않습니다.&lt;/font&gt;&lt;/p&gt; 
 &lt;pre&gt;&lt;code&gt;SELECT * FROM t1 WHERE key2=constant ORDER BY key1;
&lt;/code&gt;&lt;/pre&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;그럼 할 수 있는 일은?&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;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;sort_buffer_size&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;파일 정렬을 가능한 한 효과적으로 만드는 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 class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;정렬 버퍼에 비해 너무 큰 결과는 MySQL이 정렬을 더 느린 청크로 분해하게 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;MySQL에서 다른 인덱스를 선택하도록 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;MySQL 버전마다 기본 인덱스를 다르게 선택한다는 점에 유의할 필요가 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어 버전 5.1은 이 릴리스를 위해 쿼리 옵티마이저가 대대적으로 다시 작성되었고 많은 개선이 필요했기 때문에 상당히 좋지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;버전 5.6은 꽤 좋습니다.&lt;/font&gt;&lt;/p&gt; &lt;pre&gt;&lt;code&gt;SELECT *
FROM listings
FORCE INDEX (views_point)
WHERE (`publishedon_hourly` BETWEEN
       UNIX_TIMESTAMP( '2015-09-5 00:00:00' )
       AND UNIX_TIMESTAMP( '2015-09-5 12:00:00' ))
  AND (published =1)
  AND cat_id IN ( 1, 2, 3, 4, 5 )
ORDER BY `views_point` DESC
LIMIT 10
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt; 
&lt;/ol&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;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;ul&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;strong papago-id=&quot;26-1&quot;&gt;목록&lt;/strong&gt; 테이블에 추가&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;  &lt;/font&gt;&lt;/font&gt;&lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;publishedmonth&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;되지 않은  tinyint(2)은 NULL DEFAULT '0'&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;publishedyear&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;되지 않은  tinyint(2)은 NULL DEFAULT '0'&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;publishedminute&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;되지 않은 mediumint(6)은 NULL DEFAULT '0'&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
  &lt;/ul&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;목록 테이블에 이 &lt;strong papago-id=&quot;27-1&quot;&gt;인덱싱&lt;/strong&gt; 키 추가&lt;/font&gt;&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;ADD KEY published_month (publishedmonth,publishedyear,publishedminute)&lt;/code&gt;&lt;/li&gt; 
  &lt;/ul&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;28&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;삽입하는 동안 PHP 코드에서 이 값들을 사용합니다.&lt;/font&gt;&lt;/p&gt; 
  &lt;ul&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;date('n')&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;date('y')&lt;/code&gt;&lt;/li&gt; 
   &lt;li&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;date('jHi')&lt;/code&gt;&lt;/li&gt; 
  &lt;/ul&gt;&lt;/li&gt; 
&lt;/ul&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;SELECT * FROM listings WHERE publishedmonth = 2 AND publishedyear = 17 ORDER BY publishedminute
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt; 
 &lt;li&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;EXPLAIN&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;listings_pcs&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;SHOW CREATE TABLE&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 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;/li&gt; 
 &lt;li&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;SELECT *&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;TEXT&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;columns는 쿼리 중 한 가지 형태의 성능 속도 향상을 방지합니다.&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;40&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;쿼리의 일부를 해결하기 위한 하위 쿼리는 &lt;em papago-id=&quot;40-1&quot;&gt;일반적&lt;/em&gt;으로 상황을 보여줍니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만, 당신의 경우에는 (많은&lt;/font&gt;&lt;/font&gt;&lt;code&gt;MEDIUMTEXT&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;code&gt;LIMIT&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;), 먼저 ID를 서브쿼리로 가져온 다음 부피가 큰 열을 가져오는 것이 효율적일 수 있습니다. (&quot;Lazy eval.&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;font class=&quot;papago-parent&quot;&gt;()&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;publishedon_hourly&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;/li&gt; 
 &lt;li&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;=&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;code&gt;published&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;/li&gt; 
 &lt;li&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;Optimizer(옵티마이저)가 때로는 잘못 선택하여 다음 항목에 초점을 맞춥니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ORDER BY&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&gt;&lt;code&gt;WHERE&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&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;INDEX(published, views_point)&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;em papago-id=&quot;51-0&quot;&gt;있습니다&lt;/em&gt;.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;WHERE&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;깃발을 가지는 것(&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;published&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&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;BETWEEN&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;포괄적이므로 두 번째 쿼리는 실제로 12시간과 1초를 스캔합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;56&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;39&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;sort_buffer_size&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;40&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;RAM의 1%보다 큽니다.&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;li&gt;&lt;code&gt;FORCE INDEX&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 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;/li&gt; 
 &lt;li papago-id=&quot;60&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;종종 &quot;click_count&quot;, &quot;like&quot; 또는 &quot;upvote&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;/li&gt; 
 &lt;li papago-id=&quot;61&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;42&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;filesort&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 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;44&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;EXPLAIN FORMAT=JSON SELECT ...&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;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 papago-id=&quot;66&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;귀하의 발견은 bugs.mysql.com 에서 버그를 메우는 것을 보증하기에 충분히 이상합니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p papago-id=&quot;67&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;em papago-id=&quot;67-1&quot;&gt;주어진 순서대로 열을 사용&lt;/em&gt;하여 인덱스를 추가하고 Optimizer가 선택하는 항목을 확인합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;INDEX(published, views_point)  -- aiming at the ORDER BY, plus picking up '='
INDEX(published, cat_id, publishedon_hourly) -- possibly the best for WHERE
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;68&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;아니면, 어쩌면, &quot;게으른 평가&quot;.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SELECT  L.*
    FROM  listings AS L
    JOIN (
        SELECT  id
            FROM  listings
            WHERE  `publishedon_hourly` BETWEEN UNIX_TIMESTAMP(...)
                                            AND UNIX_TIMESTAMP(...) 
              AND  published = 1
              AND  cat_id IN ( 1, 2, 3, 4, 5 )
            ORDER BY  `views_point` DESC
            LIMIT  10
         ) AS s  ON L.id = s.id
ORDER BY views_point DESC

-- with
INDEX(published, cat_id, publishedon_hourly, views_point, id)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;69&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;70&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;하위 쿼리는 &quot;색인 사용&quot; 즉, 색인이 포함됩니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;71&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;/ul&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;46&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;views_point&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;47&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;MySQL에서 사용할 인덱스 힌트를 제공할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;views_point&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 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;SELECT * FROM listings
  USE INDEX FOR ORDER BY (`views_point`)
WHERE
  (
    `publishedon_hourly` BETWEEN UNIX_TIMESTAMP( '2015-09-5 00:00:00' )
    AND UNIX_TIMESTAMP( '2015-09-5 12:00:00' )
  )
  AND (published =1)
  AND cat_id IN ( 1, 2, 3, 4, 5 )
ORDER BY `views_point` DESC LIMIT 10
&lt;/code&gt;&lt;/pre&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;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;기다리지 않고 listing_pcs 인덱스를 변경할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;source_id가 있지만 사용하고 있지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그렇다면 view_points로 대체하는 것은 어떨까요?&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;KEY `listings` (`publishedon_hourly`,`published`,`point`,`cat_id`)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;49&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;또한 작은 int(1)를 사용하여 속도를 높이거나 공간을 절약하는 데 많이 사용되지 않습니다.&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;아직 1바이트가 필요합니다.&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;그리고 같은 mediumint(5)는 3바이트가 걸립니다.&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;deleted&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&gt;&lt;code&gt;type&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&gt;&lt;code&gt;catid&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&gt;&lt;code&gt;published&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;53&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;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;URL : https://stackoverflow.com/questions/32952051/mysql-indexing-and-using-filesort&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>MySQL</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1005</guid>
      <comments>https://itgroup.tistory.com/1005#entry1005comment</comments>
      <pubDate>Wed, 25 Oct 2023 23:16:40 +0900</pubDate>
    </item>
    <item>
      <title>다중 인덱스 DataFrame의 인덱스를 하나만 선택합니다.</title>
      <link>https://itgroup.tistory.com/1004</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다중 인덱스 DataFrame의 인덱스를 하나만 선택합니다.&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;다중 인덱스 DataFrame에서 하나의 인덱스만을 사용하여 새로운 DataFrame을 생성하려고 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;                   A         B         C
first second                              
bar   one     0.895717  0.410835 -1.413681
      two     0.805244  0.813850  1.607920
baz   one    -1.206412  0.132003  1.024180
      two     2.565646 -0.827317  0.569605
foo   one     1.431256 -0.076467  0.875906
      two     1.340309 -1.187678 -2.211372
qux   one    -1.170299  1.130127  0.974466
      two    -0.226169 -1.436737 -2.006747
&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;In: df.ix[level=&quot;first&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;Out:

               A         B         C
first                               
bar        0.895717  0.410835 -1.413681
           0.805244  0.813850  1.607920
baz       -1.206412  0.132003  1.024180
           2.565646 -0.827317  0.569605
foo        1.431256 -0.076467  0.875906
           1.340309 -1.187678 -2.211372
qux       -1.170299  1.130127  0.974466
          -0.226169 -1.436737 -2.006747
`
&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;/font&gt;&lt;/font&gt;&lt;code&gt;first&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;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;df.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;원하는 수준의 MultiIndex를 선택할 수 있습니다.&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;df.index = df.index.get_level_values('first')
&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;pre&gt;&lt;code&gt;df.index = df.index.get_level_values(0)
&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;MultiIndex의 다른 모든 수준은 여기서 사라집니다.&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;pre&gt;&lt;code&gt;In [88]: df.xs('bar', level='first')
Out[88]:
Second  Third
one     A       -2.315312
        B        0.497769
        C        0.108523
two     A       -0.778303
        B       -1.555389
        C       -2.625022
dtype: float64
&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;In [89]: df.xs(('bar', 'A'), level=('First', 'Third'))
Out[89]:
Second
one   -2.315312
two   -0.778303
dtype: float64
&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;pre&gt;&lt;code&gt;import pandas as pd
import numpy as np
arrays = [
    np.array(['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux']),
    np.array(['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two'])
]
index = pd.MultiIndex.from_tuples(list(zip(*arrays)), names=['first', 'second'])
df = pd.DataFrame(np.random.randn(3, 8), index=['A', 'B', 'C'], columns=index)
df.index.names = pd.core.indexes.frozen.FrozenList(['First', 'Second', 'Third'])
df = df.unstack()
&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;get_level_values(0)를 이용하여 다중 인덱스 그룹의 첫 번째 레벨 인덱스를 구하여 인코딩된 값의 집계 값과 기술 사전 값을 포함하는 데이터 프레임을 구축하였습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그룹의 &quot;airline_enc&quot; 값에 대한 인덱스를 다음과 같이 얻습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;def getAirlineByGrouped(grouped,dictGeneric):
    mylist=[]
    for key in grouped.index.get_level_values(0):
        item=dictGeneric.get(key)
        mylist.append(item)
    return mylist

encoder=LabelEncoder()
df['airline_enc']=encoder.fit_transform(df['airline'])

dictAirline=   df[['airline_enc','airline']].set_index('airline_enc').to_dict()
grouped=results.groupby(['airline_enc','rating'])['recommended'].count()

#print(grouped)
airlines=getAirlineByGrouped(grouped, dictAirline['airline'])

result_df=pd.DataFrame({'index': grouped.index.get_level_values(0),'value':grouped.values,'airline':airlines})
result_df.plot(x='airline',y='value')
plt.xticks(rotation=90)
&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&gt;&lt;/font&gt;&lt;code&gt;pandas.DataFrame.droplevel&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 class=&quot;papago-parent&quot;&gt;예제의 유일한 단점은 인덱스 값이 더 이상 고유하지 않다는 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;In: df.droplevel('second')
Out:

                    A           B           C  
  first                                        
  bar        0.895717    0.410835   -1.413681   
  bar        0.805244    0.813850    1.607920   
  baz       -1.206412    0.132003    1.024180   
  baz        2.565646   -0.827317    0.569605  
  foo        1.431256   -0.076467    0.875906  
  foo        1.340309   -1.187678   -2.211372  
  qux       -1.170299    1.130127    0.974466  
  qux       -0.226169   -1.436737   -2.006747  
&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;URL : https://stackoverflow.com/questions/28140771/select-only-one-index-of-multiindex-dataframe&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>dataframe</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1004</guid>
      <comments>https://itgroup.tistory.com/1004#entry1004comment</comments>
      <pubDate>Wed, 25 Oct 2023 23:16:31 +0900</pubDate>
    </item>
    <item>
      <title>반응형 CSS 배경 이미지</title>
      <link>https://itgroup.tistory.com/1003</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;저는 웹사이트(g-floors.eu )를 가지고 있고 배경(css에서 콘텐츠에 대한 bg-이미지를 정의했습니다)도 응답할 수 있도록 만들고 싶습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;유감스럽게도 한 가지 생각나는 것 외에는 어떻게 해야 할지 전혀 모르겠습니다만, 상당히 해결할 수 있는 방법입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;여러 이미지를 생성한 후 CSS 화면 크기를 사용하여 이미지를 변경하는 것이지만 이를 달성하기 위해 더 실용적인 방법이 있는지 알고 싶습니다.&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;기본적으로 제가 이루고 싶은 것은 ('G'라는 워터마크가 있는) 이미지가 더 적게 표시되지 않고 자동으로 크기가 조정된다는 것입니다.&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;링크 : g-floors.eu&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 class=&quot;lang-css prettyprint-override&quot;&gt;&lt;code&gt;#content {
  background-image: url('../images/bg.png');
  background-repeat: no-repeat;
  position: relative;
  width: 85%;
  height: 610px;
  margin-left: auto;
  margin-right: auto;
}
&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;background-image:url('../images/bg.png');
background-repeat:no-repeat;
background-size:contain;
background-position:center;
&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 papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;편집: 너비, 높이 또는 여백을 설정하지 않는 것에 대한 이전의 선은 윈도우 크기로 스케일링하는 것에 대한 OP의 원래 질문을 말합니다.&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;background-repeat:no-repeat;
-webkit-background-size:cover;
-moz-background-size:cover;
-o-background-size:cover;
background-size:cover;
background-position:center;
&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;background-image: url(_images/bg.png);
background-repeat: no-repeat;
background-position: center center;
background-attachment: fixed;
background-size: cover;
&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;CSS:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;background-size: 100%;
&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;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 class=&quot;papago-parent&quot;&gt;모든 제품에 적용 가능합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;block&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;물론 일반 CSS에서도 동일하게 작동할 수 있습니다. 계산만 하면 됩니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;padding&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;@mixin responsive-bg-image($image-width, $image-height) {
  background-size: 100%;
  height: 0;
  padding-bottom: percentage($image-height / $image-width);
  display: block;
}


.my-element {
  background: url(&quot;images/my-image.png&quot;) no-repeat;

  // substitute for your image dimensions
  @include responsive-bg-image(204, 81);
}
&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;예: http://jsfiddle.net/XbEdW/1/&lt;/font&gt;&lt;/p&gt;&lt;h2 papago-id=&quot;16&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;body {
    background-image: url(http://domains.com/photo.jpeg);
    background-position: center center;
    background-repeat: no-repeat;
    background-attachment: fixed;
    background-size: cover;
}
&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;a href=&quot;https://jsfiddle.net/omarjuvera/2raxtxqr/15/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;17-1&quot;&gt;&lt;strong papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;jsFiddle id&lt;/font&gt;&lt;/strong&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;이것이 제가 얻은 최선의 방법입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;#content   {
    background-image:url('smiley.gif');
    background-repeat:no-repeat;
    background-size:cover;
}
&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;w3 &lt;a href=&quot;http://www.w3schools.com/cssref/playit.asp?filename=playcss_background-size&amp;amp;preval=auto&quot; papago-id=&quot;19-1&quot;&gt;학교&lt;/a&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;pre&gt;&lt;code&gt;background-size: auto|length|cover|contain|initial|inherit;
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;#container {
    background-image: url(&quot;../images/layout/bg.png&quot;);
    background-repeat: no-repeat;
    background-size: 100% 100%;
    height: 100vh;
    margin: 3px auto 0;
    position: relative;
}
&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;#content {
  width: 100%;
  height: 500px;
  background-size: cover;
  background-position: center top;
}
&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;하단 이미지 높이/폭 x 100 = 패딩-하단 %에 패딩을 추가하여 반응하는 웹사이트:&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;http://www.outsidethebracket.com/responsive-web-design-fluid-background-images/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;http://www.outsidethebracket.com/responsive-web-design-fluid-background-images/&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;hr&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&gt;&lt;a href=&quot;http://voormedia.com/blog/2012/11/responsive-background-images-with-fixed-or-fluid-aspect-ratios&quot; rel=&quot;noreferrer&quot; papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;http://voormedia.com/blog/2012/11/responsive-background-images-with-fixed-or-fluid-aspect-ratios&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;hr&gt; 
&lt;p papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;마법의 멋진 스크립트를 보려면 배경 equ Firefox Ctrl + M 크기를 조정해 보십시오. 가장 좋은 것 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;http://www.minimit.com/demos/fullscreen-backgrounds-with-centered-content&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://www.minimit.com/demos/fullscreen-backgrounds-with-centered-content&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;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;테스트해 보았는데 100% 정확하게 작동합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;background-image:url('../images/bg.png'); 
background-repeat:no-repeat;
background-size:100%;
background-position:center;
&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;이 Screen Size Simulator: http://www.infobyip.com/testwebsiteresolution.php 에서 반응성을 가지고 웹사이트를 테스트할 수 있습니다.&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;/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;다른 사이트/URL에서 이미지를 사용하고 싶은 경우 다음과 같습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;background-image:url('../images/bg.png');&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&gt;&lt;/font&gt;&lt;code&gt;background-image: url(http://173.254.28.15/~brettedm/wp-content/uploads/Brett-Edmonds-Photography-14.jpg) ;&lt;/code&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;/font&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;style&amp;gt; 
         * {
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}

#res_img {
  background: url(&quot;https://s15.postimg.org/ve2qzi01n/image_slider_1.jpg&quot;);
  width: 100%;
  height: 500px;
  background-repeat: no-repeat;
  background-size: 100% 100%;
  background-position: center;
  border: 1px solid red;
}

@media screen and (min-width:300px) and (max-width:500px) {
  #res_img {
    width: 100%;
    height: 200px;
  }
}

    &amp;lt;/style&amp;gt;

&amp;lt;div id=&quot;res_img&quot;&amp;gt;
&amp;lt;/div&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;background-image:url('../images/bg.png');
background-repeat:no-repeat;
background-size:100% 100%;
background-position:center;
&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;background:url(&quot;img/content-bg.jpg&quot;) no-repeat;
background-position:center; 
background-size:cover;
&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;background-size:100%;
&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;/p&gt; 
&lt;pre&gt;&lt;code&gt;#content {
  background-image: url('../images/bg.png');
  background-size: cover;
}
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;background: url(/static/media/group3x.6bb50026.jpg);
background-size: contain;
background-repeat: no-repeat;
background-position: top;
&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;필요에 따라 상단 하단과 중앙을 정렬하기 위해 위치 속성을 사용할 수 있으며 배경 크기는 중앙 크롭(커버) 또는 전체 이미지(컨테이너 또는 100%)에 사용할 수 있습니다.&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;pre&gt;&lt;code&gt;var Height = $(window).height();
var Width = $(window).width();
var HW = Width/Height;

if(HW&amp;lt;1){
      $(&quot;.background&quot;).css(&quot;background-size&quot;,&quot;auto 100%&quot;);
    }
    else if(HW&amp;gt;1){
      $(&quot;.background&quot;).css(&quot;background-size&quot;,&quot;100% auto&quot;);
    }
&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;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;body {
    font-family: Arial,Verdana,sans-serif;
    background:url(&quot;/images/image.jpg&quot;) no-repeat fixed bottom right transparent;
}
&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;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;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;사용해보기&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;background-size&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;strong papago-id=&quot;46-1&quot;&gt;개&lt;/strong&gt;의 인수를 사용합니다. 하나는 너비이고 다른 하나는 높이입니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;background-image:url('../images/bg.png'); 
background-repeat:no-repeat;
background-size: 100% 100%; // Here the first argument will be the width 
// and the second will be the height.
background-position:center;
&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/12609110/responsive-css-background-images&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>CSS</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1003</guid>
      <comments>https://itgroup.tistory.com/1003#entry1003comment</comments>
      <pubDate>Wed, 25 Oct 2023 23:16:23 +0900</pubDate>
    </item>
    <item>
      <title>connect/expressjs에서 &amp;quot;서명된&amp;quot; 쿠키란 무엇입니까?</title>
      <link>https://itgroup.tistory.com/1002</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;connect/expressjs에서 &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;font class=&quot;papago-parent&quot;&gt;인터넷에 별것도 없고, 이걸 해보면요.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;app.use(express.cookieParser('A secret'));
&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;브라우저에서 쿠키는 여전히 100% 정상이며, 여기에 &quot;서명된&quot; 것이 무엇인지 잘 모르겠습니다(&quot;비밀&quot;을 소금으로 사용하여 암호화된 데이터와 같은 이상한 점을 클라이언트에서 &quot;보기&quot;를 원했습니다).&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;설명서에는 다음과 같이 나와 있습니다(https://github.com/expressjs/cookie-parser) :&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&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;쿠키&lt;/em&gt; 헤더 구문 분석 및 채우기&lt;/font&gt;&lt;/font&gt;&lt;code&gt;req.cookies&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&gt;&lt;code&gt;secret&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;req.secret&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;/blockquote&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;/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;값(현재 쿠키)의 &lt;a href=&quot;https://en.wikipedia.org/wiki/HMAC&quot; rel=&quot;noreferrer&quot; papago-id=&quot;11-1&quot;&gt;HMAC&lt;/a&gt;를 생성하고 base64에서 인코딩하여 작동합니다.&lt;/font&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;/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;미들웨어가 이미 나와 있는지 없는지 잘 모르겠습니다.&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;그리고 서명된 쿠키를 만들기 위해서는&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;res.cookie('name', 'value', {signed: 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&gt;&lt;/font&gt;&lt;code&gt;signedCookies&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;code&gt;req&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;req.signedCookies['name']
&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;이 둘을 구분하기 위해 다른 개체(req.signedCookies)에 배치되어 개발자가 의도를 나타낼 수 있습니다.&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;20&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;cookie-signature&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;cookie-parser&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;code&gt;val&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;secret&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;cookie-parser&lt;/code&gt; &lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/visionmedia/node-cookie-signature/blob/master/index.js#L16&quot; papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;https://github.com/visionmedia/node-cookie-signature/blob/master/index.js#L16&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;쿠키파서 1.4.4 버전을 사용했습니다.&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;그러면 이 쿠키(크롬 플러그인)는 쿠키-파서가 외부 변경을 감지한 다음 false를 값으로 설정합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;response.cookie('userId',401,{signed: true})
&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;pre&gt;&lt;code&gt;Set-Cookie: empId=s%3A101.US2oSV4TSvfkvvEQ5fj1sXsjj8rNxx2ph4VdHNTuKX8; Path=/
&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;request.signedCookies
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;a href=&quot;https://gist.github.com/dineshbalaji/607d166f0240f932a5cb02099b0ece4c&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;30&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;https://gist.github.com/dineshbalaji/607d166f0240f932a5cb02099b0ece4c&lt;/font&gt;&lt;/a&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;URL : https://stackoverflow.com/questions/11897965/what-are-signed-cookies-in-connect-expressjs&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>node.js</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1002</guid>
      <comments>https://itgroup.tistory.com/1002#entry1002comment</comments>
      <pubDate>Wed, 25 Oct 2023 23:16:14 +0900</pubDate>
    </item>
    <item>
      <title>ASP의 다른 페이지로 리디렉션합니다.자바스크립트/jQuery를 이용한 NET MVC</title>
      <link>https://itgroup.tistory.com/1001</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;ASP의 다른 페이지로 리디렉션합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;자바스크립트/jQuery를 이용한 NET MVC&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;ASP의 한 페이지에서 다른 페이지로 리디렉션합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;자바스크립트/jQuery/Ajax를 사용하는 NET MVC 3.0&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;버튼 클릭 이벤트 아래와 같이 자바스크립트 코드를 작성하였습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;function foo(id)
{
    $.post('/Branch/Details/' + id);
}
&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;public ViewResult Details(Guid id)
{
     Branch branch = db.Branches.Single(b =&amp;gt; b.Id == id);
     return View(branch);
}
&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;버튼을 클릭하면 BranchController 내부의 Details 작업이 호출되지만 Details 보기로 돌아가지 않습니다.&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;a href=&quot;http://en.wikipedia.org/wiki/Firebug_%28software%29&quot; papago-id=&quot;4-1&quot;&gt;파이어버그&lt;/a&gt;에서 상태 200 OK를 표시하고 있습니다.&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;$.post AJAX 콜에서 성공 콜백에 가입하지 않았습니다.&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;$.post('/Branch/Details/' + id, function(result) {
    // Do something with the result like for example inject it into
    // some placeholder and update the DOM.
    // This obviously assumes that your controller action returns
    // a partial view otherwise you will break your markup
});
&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;반면에 리디렉션을 원할 경우 AJAX는 절대 필요하지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;AJAX는 동일한 페이지에 머물면서 일부만 업데이트하려는 경우에만 사용합니다.&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;function foo(id) {
    window.location.href = '/Branch/Details/' + 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;이런 URL을 하드코딩하면 절대 안됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;ASP에서 URL을 처리할 때는 항상 URL 도우미를 사용해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;NET MVC 응용 프로그램.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;function foo(id) {
    var url = '@Url.Action(&quot;Details&quot;, &quot;Branch&quot;, new { id = &quot;__id__&quot; })';
    window.location.href = url.replace('__id__', id);
}
&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;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;@Html.Hidden(&quot;RedirectTo&quot;, Url.Action(&quot;ActionName&quot;, &quot;ControllerName&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;이제 자바스크립트 파일에서 이를 다음과 같이 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; var url = $(&quot;#RedirectTo&quot;).val();
 location.href = url;
&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;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;window.location.href = '/Branch/Details/' + 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;그러나 당신의 Ajax 코드는 성공이나 오류 함수가 없으면 불완전합니다.&lt;/font&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;// in the HTML code I used some razor
@Html.Hidden(&quot;RedirectTo&quot;, Url.Action(&quot;Action&quot;, &quot;Controller&quot;));

// now down in the script I do this
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;

var url = $(&quot;#RedirectTo&quot;).val();

$(document).ready(function () {
    $.ajax({
        dataType: 'json',
        type: 'POST',
        url: '/Controller/Action',
        success: function (result) {
            if (result.UserFriendlyErrMsg === 'Some Message') {
                // display a prompt
                alert(&quot;Message: &quot; + result.UserFriendlyErrMsg);
                // redirect us to the new page
                location.href = url;
            }
            $('#friendlyMsg').html(result.UserFriendlyErrMsg);
        }
    });
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
    function lnkLogout_Confirm()
    {
        var bResponse = confirm('Are you sure you want to exit?');

        if (bResponse === true) {
            ////console.log(&quot;lnkLogout_Confirm clciked.&quot;);
            var url = '@Url.Action(&quot;Login&quot;, &quot;Login&quot;)';
            window.location.href = url;
        }
        return bResponse;
    }

&amp;lt;/script&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;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
  window.opener.location.href = '@Url.Action(&quot;Action&quot;, &quot;EventstController&quot;)', window.close();
&amp;lt;/script&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;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/8148632/redirecting-to-another-page-in-asp-net-mvc-using-javascript-jquery&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>jQuery</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1001</guid>
      <comments>https://itgroup.tistory.com/1001#entry1001comment</comments>
      <pubDate>Wed, 25 Oct 2023 23:16:07 +0900</pubDate>
    </item>
    <item>
      <title>Android: 뷰에 max Height가 없는 이유는 무엇입니까?</title>
      <link>https://itgroup.tistory.com/1000</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Android: 뷰에 max Height가 없는 이유는 무엇입니까?&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;a href=&quot;http://developer.android.com/reference/android/view/View.html#attr_android:minHeight&quot; papago-id=&quot;1-0&quot; rel=&quot;noreferrer&quot;&gt;뷰에는 뭔가&lt;/a&gt;가 있지만 뭔가 부족합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;maxHeight&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;/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&gt;&lt;code&gt;ScrollView&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; 1 명일 &lt;/font&gt;때.3 직접&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;제가 직접 전시하고 싶은 물건은 3가지입니다.&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;ScrollView&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;1, 2 또는 3 아이템의 높이를 갖습니다.&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;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;4개 이상의 물건이 있을때 나는 그것을 원합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ScrollView&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;확장을 멈추다 (thus a)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;maxHeight&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&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;maxHeight&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;ScrollView&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;WRAP_CONTENT&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;1명이 있을 때..&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;3개의 아이템과 높이를 설정합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;3*sizeOf(View)&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;4개 이상일 때.&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;왜 그런 일이 없는지 설명해 줄 수 있는 사람?&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;maxHeight&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;minHeight&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&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;(BTW: 일부 보기들은, 예를 들어,&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ImageView&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;maxHeight&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 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;font class=&quot;papago-parent&quot;&gt;ScrollView에서 onMeasure 메소드만 덮어썼습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    heightMeasureSpec = MeasureSpec.makeMeasureSpec(300, MeasureSpec.AT_MOST);
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
&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;그리고 그것은 또한 마두의 코멘트를 다루고 있습니다.&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;스크롤 뷰 아래에 일부 레이아웃이 있는 경우 이 트릭은 작동하지 않습니다 – madhu Mar 5 4:36&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&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 class=&quot;papago-parent&quot;&gt;A를 만들기 위해서는&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ScrollView&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;ListView&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;maxHeight를 사용하면 maxHeight를 원하는 높이로 주변에 투명 선형 배치를 만들기만 하면 됩니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 ScrollView(스크롤뷰)의 높이를&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;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;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이를 통해 xml에서 사용자 정의할 수 있게 되었습니다.&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;MaxHeightScrollView.java:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;public class MaxHeightScrollView extends ScrollView {

private int maxHeight;
private final int defaultHeight = 200;

public MaxHeightScrollView(Context context) {
    super(context);
}

public MaxHeightScrollView(Context context, AttributeSet attrs) {
    super(context, attrs);
    if (!isInEditMode()) {
        init(context, attrs);
    }
}

public MaxHeightScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    if (!isInEditMode()) {
        init(context, attrs);
    }
}

@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public MaxHeightScrollView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
    super(context, attrs, defStyleAttr, defStyleRes);
    if (!isInEditMode()) {
        init(context, attrs);
    }
}

private void init(Context context, AttributeSet attrs) {
    if (attrs != null) {
        TypedArray styledAttrs = context.obtainStyledAttributes(attrs, R.styleable.MaxHeightScrollView);
        //200 is a defualt value
        maxHeight = styledAttrs.getDimensionPixelSize(R.styleable.MaxHeightScrollView_maxHeight, defaultHeight);

        styledAttrs.recycle();
    }
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    heightMeasureSpec = MeasureSpec.makeMeasureSpec(maxHeight, MeasureSpec.AT_MOST);
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
&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;attr.xml&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;declare-styleable name=&quot;MaxHeightScrollView&quot;&amp;gt;
        &amp;lt;attr name=&quot;maxHeight&quot; format=&quot;dimension&quot; /&amp;gt;
    &amp;lt;/declare-styleable&amp;gt;
&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;&amp;lt;blah.blah.MaxHeightScrollView android:layout_weight=&quot;1&quot;
                app:maxHeight=&quot;90dp&quot;
                android:layout_width=&quot;fill_parent&quot;
                android:layout_height=&quot;wrap_content&quot;&amp;gt;
                &amp;lt;EditText android:id=&quot;@+id/commentField&quot;
                    android:hint=&quot;Say Something&quot;
                    android:background=&quot;#FFFFFF&quot;
                    android:paddingLeft=&quot;8dp&quot;
                    android:paddingRight=&quot;8dp&quot;
                    android:gravity=&quot;center_vertical&quot;
                    android:maxLines=&quot;500&quot;
                    android:minHeight=&quot;36dp&quot;
                    android:layout_width=&quot;fill_parent&quot;
                    android:layout_height=&quot;wrap_content&quot; /&amp;gt;
            &amp;lt;/blah.blah.MaxHeightScrollView&amp;gt;
&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;(이것이 질문에 직접 답하는 것은 아니지만 maxHeight 기능을 찾는 다른 사람들에게 도움이 될 수 있습니다.)&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;ConstraintLayout은 다음을 통해 자녀에게 최대 높이를 제공합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;app:layout_constraintHeight_max=&quot;300dp&quot;
app:layout_constrainedHeight=&quot;true&quot; 
&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;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;app:layout_constraintWidth_max=&quot;300dp&quot;
app:layout_constrainedWidth=&quot;true&quot; 
&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;a href=&quot;https://stackoverflow.com/questions/42694355/how-to-set-recyclerview-max-height/48970129#48970129&quot; papago-id=&quot;34-1&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;가능하다면 휘즐의 답변에 대해 언급하고 싶지만 안드로이드 N의 멀티 윈도우 모드에서 이 문제를 해결하기 위해서는 코드를 다음과 같이 약간 변경해야 한다는 점에 유의해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    if(MeasureSpec.getSize(heightMeasureSpec) &amp;gt; maxHeight) {
        heightMeasureSpec = MeasureSpec.makeMeasureSpec(maxHeight, MeasureSpec.AT_MOST);
    }
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
&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 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;RelativeLayout&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;code&gt;ScrollView&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;MaxHeightRelativeLayout&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 class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;화면의 전체 높이를 확장하지 않으며 안드로이드 N의 멀티 윈도우에서 가장 작은 과부 크기 내로 축소됩니다.&lt;/font&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;위에서 언급한 바와 같이 ConstraintLayout은 다음을 통해 어린이에게 최대 높이를 제공합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;app:layout_constraintHeight_max=&quot;300dp&quot;
app:layout_constrainedHeight=&quot;true&quot;
&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;또한 App을 실행할 때까지 ConstraintLayout 한 개의 자녀에 대한 최대 키가 불확실한 경우에도 이 자녀가 수직 체인의 어디에 배치되었든 자동으로 가변 키를 조정할 수 있는 방법이 있습니다.&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;예를 들어 가변 헤더 TextView, 가변 스크롤View 및 가변 바닥글 TextView가 있는 하단 대화상자를 표시해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;총 높이가 320dp에 도달하지 않았을 때 대화상자의 최대 높이는 320dp ，이며 ScrollView가 wrap_content로 작동하고, 총 높이가 ScrollView를 초과할 때 &quot;maxHeight=320dp - header height - footer height&quot;로 작동합니다.&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;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;?&amp;gt;
&amp;lt;android.support.constraint.ConstraintLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;320dp&quot;&amp;gt;

    &amp;lt;TextView
        android:id=&quot;@+id/tv_header&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:background=&quot;@color/black_10&quot;
        android:gravity=&quot;center&quot;
        android:padding=&quot;10dp&quot;
        app:layout_constraintBottom_toTopOf=&quot;@id/scroll_view&quot;
        app:layout_constraintStart_toStartOf=&quot;parent&quot;
        app:layout_constraintTop_toTopOf=&quot;parent&quot;
        app:layout_constraintVertical_bias=&quot;1&quot;
        app:layout_constraintVertical_chainStyle=&quot;packed&quot;
        tools:text=&quot;header&quot; /&amp;gt;

    &amp;lt;ScrollView
        android:id=&quot;@+id/scroll_view&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:background=&quot;@color/black_30&quot;
        app:layout_constrainedHeight=&quot;true&quot;
        app:layout_constraintBottom_toTopOf=&quot;@id/tv_footer&quot;
        app:layout_constraintHeight_max=&quot;300dp&quot;
        app:layout_constraintStart_toStartOf=&quot;parent&quot;
        app:layout_constraintTop_toBottomOf=&quot;@id/tv_header&quot;&amp;gt;

        &amp;lt;LinearLayout
            android:id=&quot;@+id/ll_container&quot;
            android:layout_width=&quot;match_parent&quot;
            android:layout_height=&quot;wrap_content&quot;
            android:orientation=&quot;vertical&quot;&amp;gt;

            &amp;lt;TextView
                android:id=&quot;@+id/tv_sub1&quot;
                android:layout_width=&quot;match_parent&quot;
                android:layout_height=&quot;160dp&quot;
                android:gravity=&quot;center&quot;
                android:textColor=&quot;@color/orange_light&quot;
                tools:text=&quot;sub1&quot; /&amp;gt;

            &amp;lt;TextView
                android:id=&quot;@+id/tv_sub2&quot;
                android:layout_width=&quot;match_parent&quot;
                android:layout_height=&quot;160dp&quot;
                android:gravity=&quot;center&quot;
                android:textColor=&quot;@color/orange_light&quot;
                tools:text=&quot;sub2&quot; /&amp;gt;

        &amp;lt;/LinearLayout&amp;gt;
    &amp;lt;/ScrollView&amp;gt;

    &amp;lt;TextView
        android:id=&quot;@+id/tv_footer&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:background=&quot;@color/black_50&quot;
        android:gravity=&quot;center&quot;
        android:padding=&quot;10dp&quot;
        app:layout_constraintBottom_toBottomOf=&quot;parent&quot;
        app:layout_constraintStart_toStartOf=&quot;parent&quot;
        app:layout_constraintTop_toBottomOf=&quot;@id/scroll_view&quot;
        tools:text=&quot;footer&quot; /&amp;gt;
&amp;lt;/android.support.constraint.ConstraintLayout&amp;gt;
&lt;/code&gt;&lt;/pre&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;app:layout_constraintVertical_bias=&quot;1&quot;
app:layout_constraintVertical_chainStyle=&quot;packed&quot;

app:layout_constrainedHeight=&quot;true&quot;
&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;Horizontal maxWidth 사용량은 상당히 동일합니다.&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;max Height는 설정할 수 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&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;그러려면 View를 스크롤하는 각 항목의 높이를 검색해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 스크롤 보기 높이를 NumberOfItens * heightOfItem으로 설정합니다.&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;pre&gt;&lt;code&gt;View item = adapter.getView(0, null, scrollView);
item.measure(0, 0);
int heightOfItem = item.getMeasuredHeight();
&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;// if the scrollView already has a layoutParams:
scrollView.getLayoutParams().height = heightOfItem * numberOfItens;
// or
// if the layoutParams is null, then create a new one.
scrollView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, heightOfItem * numberOfItens));
&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;&lt;font class=&quot;papago-parent&quot;&gt;포장해주세요.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ScrollView&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;LinearLayout&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;layout_height=&quot;max_height&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;사실, 저는 지난 5년간 이슈가 전혀 없었던 이 코드를 생산하고 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;LinearLayout
        android:id=&quot;@+id/subsParent&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;150dp&quot;
        android:gravity=&quot;bottom|center_horizontal&quot;
        android:orientation=&quot;vertical&quot;&amp;gt;

        &amp;lt;ScrollView
            android:id=&quot;@+id/subsScroll&quot;
            android:layout_width=&quot;wrap_content&quot;
            android:layout_height=&quot;wrap_content&quot;
            android:layout_marginBottom=&quot;10dp&quot;
            android:layout_marginEnd=&quot;15dp&quot;
            android:layout_marginStart=&quot;15dp&quot;&amp;gt;

            &amp;lt;TextView
                android:id=&quot;@+id/subsTv&quot;
                android:layout_width=&quot;wrap_content&quot;
                android:layout_height=&quot;wrap_content&quot;
                android:text=&quot;@string/longText&quot;
                android:visibility=&quot;visible&quot; /&amp;gt;

        &amp;lt;/ScrollView&amp;gt;
    &amp;lt;/LinearLayout&amp;gt;
&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;&lt;font class=&quot;papago-parent&quot;&gt;나의&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;MaxHeightScrollView&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&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;public class MaxHeightScrollView extends ScrollView {
    private int maxHeight;

    public MaxHeightScrollView(Context context) {
        this(context, null);
    }

    public MaxHeightScrollView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public MaxHeightScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init(context, attrs);
    }

    private void init(Context context, AttributeSet attrs) {
        TypedArray styledAttrs =
                context.obtainStyledAttributes(attrs, R.styleable.MaxHeightScrollView);
        try {
            maxHeight = styledAttrs.getDimensionPixelSize(R.styleable.MaxHeightScrollView_mhs_maxHeight, 0);
        } finally {
            styledAttrs.recycle();
        }
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        if (maxHeight &amp;gt; 0) {
            heightMeasureSpec = MeasureSpec.makeMeasureSpec(maxHeight, MeasureSpec.AT_MOST);
        }
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;55&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;style.xml&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;declare-styleable name=&quot;MaxHeightScrollView&quot;&amp;gt;
    &amp;lt;attr name=&quot;mhs_maxHeight&quot; format=&quot;dimension&quot; /&amp;gt;
&amp;lt;/declare-styleable&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;56&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;&amp;lt;....MaxHeightScrollView
    android:layout_width=&quot;wrap_content&quot;
    android:layout_height=&quot;wrap_content&quot;
    app:mhs_maxHeight=&quot;100dp&quot;
    &amp;gt;

    ...

&amp;lt;/....MaxHeightScrollView&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;57&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://stackoverflow.com/a/29178364/1148784&quot; papago-id=&quot;58&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;https://stackoverflow.com/a/29178364/1148784&lt;/font&gt;&lt;/a&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;ScrollView를 확장하는 새 클래스를 만들고 해당 클래스를 재정의합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;onMeasure&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&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        if (maxHeight &amp;gt; 0){
            int hSize = MeasureSpec.getSize(heightMeasureSpec);
            int hMode = MeasureSpec.getMode(heightMeasureSpec);

            switch (hMode){
                case MeasureSpec.AT_MOST:
                    heightMeasureSpec = MeasureSpec.makeMeasureSpec(Math.min(hSize, maxHeight), MeasureSpec.AT_MOST);
                    break;
                case MeasureSpec.UNSPECIFIED:
                    heightMeasureSpec = MeasureSpec.makeMeasureSpec(maxHeight, MeasureSpec.AT_MOST);
                    break;
                case MeasureSpec.EXACTLY:
                    heightMeasureSpec = MeasureSpec.makeMeasureSpec(Math.min(hSize, maxHeight), MeasureSpec.EXACTLY);
                    break;
            }
        }

        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }
&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;app:layout_constraintHeight_max=&quot;300dp&quot;
&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;뷰(제약 조건 레이아웃 내부)를 최대 높이로 300dp로 강제 설정합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;프로그래밍 방식으로 이 작업을 수행하려는 사람들은 다음과 같이 수행합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;val totalScreenHeight = displayMetrics.heightPixels
val layoutParams: ConstraintLayout.LayoutParams = viewThatIsInsideAConstraintLayout.layoutParams as ConstraintLayout.LayoutParams
        layoutParams.matchConstraintMaxHeight = totalScreenHeight/2
viewThatIsInsideAConstraintLayout.layoutParams = layoutParams
&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;a href=&quot;http://developer.android.com/intl/de/reference/android/widget/LinearLayout.LayoutParams.html#attr_android%3alayout_weight&quot; rel=&quot;nofollow&quot; papago-id=&quot;63-1&quot;&gt;layout_weight 값&lt;/a&gt;을 사용해보셨습니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;하나를 0보다 큰 값으로 설정하면 해당 보기가 사용 가능한 남은 공간으로 확장됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;64&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;65&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 두 개의 뷰를 모두 layout_weight 값 1로 설정한 경우, 둘 다 공간을 채우기 위해 늘어나지만 둘 다 동일한 공간으로 늘어나게 됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;둘 중 하나를 2 값으로 설정하면 다른 보기보다 두 배 더 늘어납니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;http://developer.android.com/intl/de/guide/topics/ui/layout-objects.html&quot; rel=&quot;nofollow&quot; papago-id=&quot;66&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&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;34&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;한가지 아이템에 대해서만 런타임에 높이를 설정할 수 있을 것 같습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;scrollView.setHeight(200px)&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;35&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 2개에 대하여&lt;/font&gt;&lt;/font&gt;&lt;code&gt;scrollView.setheight(400px)&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;36&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;3인 이상&lt;/font&gt;&lt;/font&gt;&lt;code&gt;scrollView.setHeight(600px)&lt;/code&gt;&lt;/p&gt;&lt;p papago-id=&quot;70&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;71&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;72&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;73&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그건 그렇고, min Height는 보장되지 않습니다 (그리고 아마도 존재하지 않아야 할 것입니다).&lt;/font&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;LayoutParams에 정확한 값을 사용하는 것을 고려하고 있는 사람이 있다면 예를 들어.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;setLayoutParams(new LayoutParams(Y, X );
&lt;/code&gt;&lt;/pre&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;/p&gt; 
&lt;pre&gt;&lt;code&gt;Display display = getWindowManager().getDefaultDisplay();
DisplayMetrics d = new DisplayMetrics();
display.getMetrics(d);
setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, (int)(50*d.density) ));
&lt;/code&gt;&lt;/pre&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;/p&gt; 
&lt;pre&gt;&lt;code&gt;View rowItem = adapter.getView(0, null, scrollView);   
rowItem.measure(0, 0);    
int heightOfItem = rowItem.getMeasuredHeight();
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;77&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;Display display = getWindowManager().getDefaultDisplay();    
DisplayMetrics displayMetrics = new DisplayMetrics();    
display.getMetrics(displayMetrics);    
scrollView.getLayoutParams().height = (int)((heightOfItem * 3)*displayMetrics .density);
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;78&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;ScrollView
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;wrap_content&quot;
    android:layout_above=&quot;@+id/topview&quot;
    android:layout_below=&quot;@+id/bottomview&quot; &amp;gt;
&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;나는 코틀린에서 만든 &lt;a href=&quot;https://gist.github.com/Mariovc/48fc96da662b08e8e02cd36e08380390&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;37-1&quot;&gt;커스텀 스크롤뷰&lt;/a&gt;를 사용했습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;maxHeight&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&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;com.antena3.atresplayer.tv.ui.widget.ScrollViewWithMaxHeight
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;wrap_content&quot;
    android:maxHeight=&quot;100dp&quot;&amp;gt;

    &amp;lt;LinearLayout
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;&amp;gt;

        &amp;lt;TextView
            android:layout_width=&quot;wrap_content&quot;
            android:layout_height=&quot;wrap_content&quot;/&amp;gt;
&amp;lt;/com.antena3.atresplayer.tv.ui.widget.ScrollViewWithMaxHeight&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&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;code&gt;ScrollViewWidthMaxHeight&lt;/code&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;/p&gt; 
&lt;pre&gt;&lt;code&gt;import android.content.Context
import android.util.AttributeSet
import android.widget.ScrollView
import timber.log.Timber

class ScrollViewWithMaxHeight @JvmOverloads constructor(
    context: Context,
    attrs: AttributeSet? = null,
    defStyleAttr: Int = 0
) : ScrollView(context, attrs, defStyleAttr) {

companion object {
    var WITHOUT_MAX_HEIGHT_VALUE = -1
}

private var maxHeight = WITHOUT_MAX_HEIGHT_VALUE

init {
    val a = context.obtainStyledAttributes(
        attrs, R.styleable.ScrollViewWithMaxHeight,
        defStyleAttr, 0
    )
    try {
        maxHeight = a.getDimension(
            R.styleable.ScrollViewWithMaxHeight_android_maxHeight,
            WITHOUT_MAX_HEIGHT_VALUE.toFloat()
        ).toInt()
    } finally {
        a.recycle()
    }
}

override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
    var heightMeasure = heightMeasureSpec
    try {
        var heightSize = MeasureSpec.getSize(heightMeasureSpec)
        if (maxHeight != WITHOUT_MAX_HEIGHT_VALUE) {
            heightSize = maxHeight
            heightMeasure = MeasureSpec.makeMeasureSpec(heightSize, MeasureSpec.AT_MOST)
        } else {
            heightMeasure = MeasureSpec.makeMeasureSpec(heightSize, MeasureSpec.UNSPECIFIED)
        }
        layoutParams.height = heightSize
    } catch (e: Exception) {
        Timber.e(e, &quot;Error forcing height&quot;)
    } finally {
        super.onMeasure(widthMeasureSpec, heightMeasure)
    }
}

fun setMaxHeight(maxHeight: Int) {
    this.maxHeight = maxHeight
}
}
&lt;/code&gt;&lt;/pre&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;또한 이 선언이 필요합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;values/attrs.xml&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;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;resources&amp;gt;
&amp;lt;declare-styleable name=&quot;ScrollViewWithMaxHeight&quot;&amp;gt;
        &amp;lt;attr name=&quot;android:maxHeight&quot; /&amp;gt;
    &amp;lt;/declare-styleable&amp;gt;
&amp;lt;/resources&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;85&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/4054567/android-why-is-there-no-maxheight-for-a-view&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>android</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/1000</guid>
      <comments>https://itgroup.tistory.com/1000#entry1000comment</comments>
      <pubDate>Wed, 25 Oct 2023 23:16:00 +0900</pubDate>
    </item>
    <item>
      <title>Swift에서 type def를 선언하려면 어떻게 해야 합니까?</title>
      <link>https://itgroup.tistory.com/999</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Swift에서 type def를 선언하려면 어떻게 해야 합니까?&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;typedef&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 어떻게 하죠? (닫힘 구문 유형의 def와 같은 것)&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&gt;&lt;/font&gt;&lt;code&gt;typealias&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;typedef&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;pre class=&quot;lang-swift prettyprint-override&quot;&gt;&lt;code&gt;typealias CustomType = String
var customString: CustomType = &quot;Test String&quot;
&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;strong papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;typealias&quot;는 typedef와 유사한 기능을 수행하는 swift로 사용되는 키워드입니다.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;    /*defines a block that has 
     no input param and with 
     void return and the type is given 
     the name voidInputVoidReturnBlock*/        
    typealias voidInputVoidReturnBlock = () -&amp;gt; Void

    var blockVariable :voidInputVoidReturnBlock = {

       println(&quot; this is a block that has no input param and with void return&quot;)

    } 
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;입력 매개변수를 사용하여 typedef를 만들려면 구문은 다음과 같습니다.&lt;/font&gt;&lt;/strong&gt; &lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;    /*defines a block that has 
     input params NSString, NSError!
    and with void return and the type 
    is given the name completionBlockType*/ 
    typealias completionBlockType = (NSString, NSError!) -&amp;gt;Void

    var test:completionBlockType = {(string:NSString, error:NSError!) -&amp;gt;Void in
        println(&quot;\(string)&quot;)

    }
    test(&quot;helloooooooo test&quot;,nil);
    /*OUTPUTS &quot;helloooooooo test&quot; IN CONSOLE */
&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;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/24077428/how-do-i-declare-typedef-in-swift&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>SWIFT</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/999</guid>
      <comments>https://itgroup.tistory.com/999#entry999comment</comments>
      <pubDate>Wed, 25 Oct 2023 23:15:46 +0900</pubDate>
    </item>
    <item>
      <title>엔티티 프레임워크에서 네임스페이스 변경</title>
      <link>https://itgroup.tistory.com/998</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;Entity Framework Generator에서 사용하는 클래스의 네임스페이스를 변경하려고 합니다.&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;My Entity의 설계자인 Model.edmx를 클릭하면 네임스페이스를 변경할 수 있는 곳이 표시됩니다.&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;Conceptual EntityModel 속성 아래에 있습니다.&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&gt;&lt;a href=&quot;http://weblogs.asp.net/zeeshanhirani/struggling-through-namespace-in-entity-framework&quot; rel=&quot;noreferrer&quot; papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;http://weblogs.asp.net/zeeshanhirani/struggling-through-namespace-in-entity-framework&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;부동산을 바꿔야 한다고 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;6-1&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;다행이네요, 콘솔 애플리케이션에서 .edmx 속성을 클릭하면 속성이 있습니다.&lt;/font&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;&lt;strong papago-id=&quot;7-3&quot;&gt;웹 파일 속성&lt;/strong&gt;이라는 속성 파일은 3가지 속성만 있습니다.&lt;/font&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;사용자 지정 도구&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;파일 이름&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;전체 경로&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&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;strong papago-id=&quot;12-0&quot;&gt;그&lt;/strong&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;*.edmx&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;strong papago-id=&quot;1-0&quot;&gt;사용자&lt;/strong&gt; 지정 &lt;strong papago-id=&quot;1-0&quot;&gt;도구 네임스페이스&lt;/strong&gt; 속성 - 도움이 되지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;br&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;*.Context.tt&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;br&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;Custom Tool Namespace&lt;/strong&gt; 속성을 설정할 때&lt;/font&gt;&lt;/font&gt;&lt;code&gt;*.tt&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;file (파일 우클릭 -&amp;gt; Properties) - 이전에 생성된 모든 클래스에 대해 네임스페이스가 자동으로 설정되었습니다.&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;먼저 edmx 파일을 열고 F4를 누르거나 속성 창을 클릭합니다.&lt;/font&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;제 경우에는 프로젝트 내에 폴더를 만들고, (솔루션 탐색기를 사용하여) .edmx 파일을 제가 만든 폴더로 이동했을 뿐이고, 모든 것이 자동으로 네임스페이스를 변경했습니다.&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;EDMX 디자이너에서 네임스페이스가 올바른지 확인한 후 프로젝트를 마우스 오른쪽 버튼으로 클릭하여 속성을 열고 기본 네임스페이스와 어셈블리 이름을 업데이트하면 문제가 없습니다.&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/26856399/changing-namespaces-in-entity-framework&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>ASP.NET</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/998</guid>
      <comments>https://itgroup.tistory.com/998#entry998comment</comments>
      <pubDate>Wed, 25 Oct 2023 23:15:39 +0900</pubDate>
    </item>
    <item>
      <title>&amp;quot;SELECT FROM&amp;quot; 쿼리를 Node.js의 Mariadb에 보냅니다.</title>
      <link>https://itgroup.tistory.com/997</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;SELECT FROM&quot; 쿼리를 Node.js의 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;&quot;select from&quot;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;mariadb에 문의하고 여기 제 코드가 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var mariadb = require('mariadb');

router.get('/redirect', auth.required, (req, res, next) =&amp;gt; {
    const { payload: { id } } = req;

    console.log(&quot;in redirection function, id &quot; + id);



const pool = mariadb.createPool({
        host: 'localhost',
        port: 3307,
        user: 'root',
        password: 'abc',
        database: 'db',
    });
    pool.getConnection()
        .then(conn =&amp;gt; {

            var query = 'select id from user_credentials where id=&quot;'+id+'&quot;';
            console.log(&quot;query is &quot; + query + &quot;   : end&quot;);
            conn.query(query, function (err, rows) {

                if (err) {
                    console.log(&quot;Error&quot;);
                    throw err;
                } else {

                }

                return res.json({'resule':rows});

            });


        }).catch(err =&amp;gt; {
            console.log(&quot;error 2&quot; + err);
            conn.close();
        });



    console.log(&quot;nothing happened&quot;)
    return res.json({'resule':'test'});

});
&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; console.log(&quot;query is &quot; + query + &quot;   : end&quot;);
&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;이후 &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&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;return res.json({'resule':rows});&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;pre&gt;&lt;code&gt;console.log(res.json({'resule':rows}));
&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;font class=&quot;papago-parent&quot;&gt;그러면 문제는 어떻게 결과를 도출할 것인가 하는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;콜백 및 약속과 같은 &lt;a href=&quot;https://medium.com/codebuddies/getting-to-know-asynchronous-javascript-callbacks-promises-and-async-await-17e0673281ee&quot; papago-id=&quot;7-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;비동기식 자바스크립트&lt;/a&gt;에 대해 &lt;a href=&quot;https://medium.com/codebuddies/getting-to-know-asynchronous-javascript-callbacks-promises-and-async-await-17e0673281ee&quot; papago-id=&quot;7-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;알아가는&lt;/a&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;URL : https://stackoverflow.com/questions/52847727/select-from-query-to-mariadb-in-node-js&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>MariaDB</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/997</guid>
      <comments>https://itgroup.tistory.com/997#entry997comment</comments>
      <pubDate>Wed, 25 Oct 2023 23:15:33 +0900</pubDate>
    </item>
    <item>
      <title>골랑 문자열에 있는 문자를 색인하는 방법은?</title>
      <link>https://itgroup.tistory.com/996</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;69가 아닌 &quot;E&quot; 출력을 얻는 방법은?&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;package main

import &quot;fmt&quot;

func main() {
    fmt.Print(&quot;HELLO&quot;[1])
}
&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;해석된 문자열 리터럴은 개별 문자의 UTF-8 인코딩을 사용하는 큰따옴표 &quot; 사이의 문자 시퀀스입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;UTF-8에서 ASCII 문자는 처음 128개의 유니코드 문자에 해당하는 단일 바이트입니다.&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;pre&gt;&lt;code&gt;package main

import &quot;fmt&quot;

func main() {
    fmt.Println(string(&quot;Hello&quot;[1]))              // ASCII only
    fmt.Println(string([]rune(&quot;Hello, 世界&quot;)[1])) // UTF-8
    fmt.Println(string([]rune(&quot;Hello, 世界&quot;)[8])) // UTF-8
}
&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;e
e
界
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr&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 papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://golang.org/ref/spec#Conversions&quot; rel=&quot;noreferrer&quot; papago-id=&quot;6-2&quot;&gt;변환&lt;/a&gt;에 대한 &lt;a href=&quot;http://golang.org/ref/spec&quot; papago-id=&quot;6-0&quot; rel=&quot;noreferrer&quot;&gt;프로그래밍 언어 사양&lt;/a&gt; 섹션으로 &lt;a href=&quot;http://golang.org/ref/spec&quot; papago-id=&quot;6-0&quot; rel=&quot;noreferrer&quot;&gt;이동&lt;/a&gt;합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://blog.golang.org/strings&quot; rel=&quot;noreferrer&quot; papago-id=&quot;7&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;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://play.golang.org/p/LXo0XFKfoE&quot; rel=&quot;noreferrer&quot; papago-id=&quot;8-1&quot;&gt;이거&lt;/a&gt; 어때요?&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;fmt.Printf(&quot;%c&quot;,&quot;HELLO&quot;[1])
&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;피터가 지적한 것처럼, ASC 이상을 허용하는 것은&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;II:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;fmt.Printf(&quot;%c&quot;, []rune(&quot;HELLO&quot;)[1])
&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;package main

import &quot;fmt&quot;

func main() {
    fmt.Print(&quot;HELLO&quot;[1:2])
}
&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;strong papago-id=&quot;11-0&quot;&gt;참고:&lt;/strong&gt; 이 솔루션은 ASCII 문자에만 적용됩니다.&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;package main

import &quot;fmt&quot;

func main() {
    fmt.Println(string(&quot;Hello&quot;[1]))
}
&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;Go에는 이런 문자 유형이 없습니다. 바이트는 종종 ASCII 문자에 사용되고 룬은 유니코드 문자에 사용되지만 둘 다 정수 유형(uint8 및 int32)에 대한 별칭일 뿐입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 숫자 대신 문자로 인쇄하도록 강제하려면 다음을 사용해야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Printf(&quot;%c&quot;, x)&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;%c&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;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;string(&quot;HELLO&quot;[1])&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;/p&gt;&lt;p&gt;&lt;strong papago-id=&quot;19&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;package main

import (
      &quot;fmt&quot;
      &quot;strings&quot;
)

func main() {
   str := strings.Split(&quot;HELLO&quot;,&quot;&quot;)
    fmt.Print(str[1])
}
&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&gt;&lt;code&gt;fmt.Print(string(&quot;HELLO&quot;[1]))&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;/p&gt; 
&lt;pre&gt;&lt;code&gt;package main
import &quot;fmt&quot;

   func main() {
        var word string = &quot;ZbjTS&quot;

       // P R I N T 
       fmt.Println(word)
       yo := string([]rune(word)[0])
       fmt.Println(yo)

       //I N D E X 
       x :=0
       for x &amp;lt; len(word){
           yo := string([]rune(word)[x])
           fmt.Println(yo)
           x+=1
       }

}
&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;fmt.Println(string([]rune(sArray[0])[0]))
&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;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; package main

 import &quot;fmt&quot;

func main() {
  str := &quot;HELLO&quot;
  string(str[0])//H
  string(str[1])//E
  string(str[2])//L
  string(str[3])//L
  string(str[4])//O
}
&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;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/15018545/how-to-index-characters-in-a-golang-string&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>string</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/996</guid>
      <comments>https://itgroup.tistory.com/996#entry996comment</comments>
      <pubDate>Wed, 25 Oct 2023 23:15:26 +0900</pubDate>
    </item>
    <item>
      <title>클로저스크립트에서 아약스 호출 구현</title>
      <link>https://itgroup.tistory.com/995</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;/p&gt;&lt;p&gt;&lt;strong papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;2016년 1월 22일 업데이트&lt;/font&gt;&lt;/strong&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;여전히 작동하지만, 원래의 답은 기여자가 1명 이상인 ClojureScript 솔루션이 일반적으로 부족했던 때의 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;XhrIo를 직접적으로 활용하는 것보다, 아래의 Mikhail D가 제안한 &lt;a href=&quot;https://github.com/JulianBirch/cljs-ajax&quot; rel=&quot;nofollow&quot; papago-id=&quot;3-1&quot;&gt;cljs-ajax&lt;/a&gt;처럼 대신 포장하는 잘 유지되고 기능이 풍부한 솔루션을 사용하는 것을 확실히 고려해보세요!&lt;/font&gt;&lt;/p&gt; 
&lt;hr&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 Closurescript가 Google의 Closure 자바스크립트 라이브러리를 활용하는 것을 고려하면, Closure Documentation을 빠르게 검색한 결과 xhrIo가 AJAX 호출을 생성하는 적절한 방법으로 나타났습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://developers.google.com/closure/library/docs/xhrio&quot; rel=&quot;nofollow&quot; papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;XhrIo와 함께 Closure의 비동기 XMLHttp Requests 사용 예제&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;goog.net.XhrIo.send(url, opt_callback, opt_method, opt_content,
     opt_headers, opt_timeoutInterval)
&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;a href=&quot;https://github.com/clojure/clojurescript/blob/master/src/cljs/clojure/browser/net.cljs&quot; rel=&quot;nofollow&quot; papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;clojure/clojure 스크립트의 src/cljs/clojure/browser/net.cljs에서 시작됨&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;(defn xhr-connection
  &quot;Returns an XhrIo connection&quot;
  []
  (goog.net.XhrIo.))
&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;pre&gt;&lt;code&gt;(def xhr xhr-connection)

(defn myCallback [replyValue] 
  ... Do Something with replyValue
  ... for example: (someJsonFunc (.getResponseJson (.target replyValue))))

(defn ajax-json [url]
   (.send xhr url myCallback))
&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;JSONP의 경우 goog.net 을 사용하여 유사한 작업을 수행할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Jsonp. 자세한 내용은 링크 참조:&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;http://closure-library.googlecode.com/svn/docs/class_goog_net_Jsonp.html&quot; rel=&quot;nofollow&quot; papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;JSONP Closure API&lt;/font&gt;&lt;/a&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;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또 다른 실행 가능한 옵션은 https://github.com/JulianBirch/cljs-ajax 일 수 있습니다.&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;ClojureScript용으로 설계되었기 때문에 구문이 더 명확하고 간단해 보입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 다양한 기능을 즉시 지원합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;transit&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;edn&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;json&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 papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;README의 몇 가지 예:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;(ns foo
  (:require [ajax.core :refer [GET POST]]))

...

(GET &quot;/hello&quot; {:handler handler
               :error-handler error-handler})

(POST &quot;/send-message&quot;
    {:params {:message &quot;Hello World&quot;
              :user    &quot;Bob&quot;}
     :handler handler
     :error-handler error-handler})
&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;마크가 답변에서 제시한 방식이 왜 저에게 안 맞았는지 모르겠습니다.&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;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용했습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;goog.net.XhrIo&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;xhr-connection&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;/p&gt; 
&lt;pre&gt;&lt;code&gt;(defn callback [reply]
    (let [v (js-&amp;gt;clj (.getResponseJson (.-target reply)))] ;v is a Clojure data structure
        (your-function-here v)))

(.send goog.net.XhrIo url callback)
&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;.-target&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;호출하는 대신 JSON 개체의 속성을 가져옵니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;target&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;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&gt;&lt;/font&gt;&lt;code&gt;v&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;26&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;JSON 개체에서 생성된 키는 키워드가 아닌 문자열로 키를 지정합니다.&lt;/font&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;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/8554745/implementing-an-ajax-call-in-clojurescript&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>Ajax</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/995</guid>
      <comments>https://itgroup.tistory.com/995#entry995comment</comments>
      <pubDate>Wed, 25 Oct 2023 23:15:18 +0900</pubDate>
    </item>
    <item>
      <title>Chrome이 오리진 헤더를 동일 오리진 요청에 추가함</title>
      <link>https://itgroup.tistory.com/994</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Chrome이 오리진 헤더를 동일 오리진 요청에 추가함&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;우리는 AJAX 요청을 로컬에서 실행되는 서버에 게시하고 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;xhr.open(&quot;POST&quot;, &quot;http://localhost:9000/context/request&quot;);
xhr.addHeader(someCustomHeaders);
xhr.send(someData);
&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;이 javascript가 실행중인 페이지는 localhost:9000에서도 제공되고 있습니다. 즉, 완전히 동일한 오리진 요청처럼 보입니다.&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;그러나 어떤 이유에서인지 Google Chrome은 항상 결과 요청에 오리진 헤더를 설정하여 CORS 요청이라는 잘못된 가정 하에 서버가 요청을 차단하게 됩니다.&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;Firefox에서는 이런 일이 발생하지 않습니다.&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;또한 Firefox와 Chrome 모두 OPSONSE 사전 비행 요청을 보내지 않아 혼란스럽습니다. 서버에서 오리진 및 사용자 지정 헤더가 허용되는지 확인하기 위해 먼저 사전 비행하지 않고 오리진 헤더를 설정하는 이유는 무엇입니까?&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;우리가 CORS 사양을 오해하고 있는 것입니까?&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;Chrome과 Safari는 다음을 포함합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Origin&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;동일한 오리진 POST/PUT/DEELET 요청에 대한 헤더(동일한 오리진 GET 요청에는 오리진 헤더가 없음).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Firefox에 포함되지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Origin&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;동일한 origin 요청에 대한 헤더입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;브라우저는 동일한 오리진 요청에 CORS 응답 헤더를 예상하지 않으므로 CORS 헤더가 있는지 여부에 관계없이 동일한 오리진 요청에 대한 응답이 사용자에게 전송됩니다.&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;Host&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;Origin&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;헤더, 요청을 CORS로 취급하지 마십시오.&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;Host: example.com
Origin: http://example.com
&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;Origin&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;는 스킴(https/http), 도메인 및 포트를 갖지만,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Host&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 papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;16-1&quot;&gt;RFC 6454&lt;/strong&gt; - 웹&lt;strong papago-id=&quot;16-3&quot;&gt; 오리진&lt;/strong&gt; 개념에 따르면 &lt;strong papago-id=&quot;16-3&quot;&gt;오리진&lt;/strong&gt;의 존재는 동일한 오리진 요청을 포함한 모든 HTTP 요청에 대해 실제로 합법적입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc6454#section-7.3&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;https://www.rfc-editor.org/rfc/rfc6454#section-7.3&lt;/font&gt;&lt;/a&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;&quot;사용자 에이전트는 HTTP 요청에 오리진 헤더 필드를 포함할 수 있습니다.&quot;&lt;/font&gt;&lt;/p&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;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/15512331/chrome-adding-origin-header-to-same-origin-request&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>Ajax</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/994</guid>
      <comments>https://itgroup.tistory.com/994#entry994comment</comments>
      <pubDate>Wed, 25 Oct 2023 23:15:11 +0900</pubDate>
    </item>
    <item>
      <title>Apache가 MariaDB(PERL)와 함께 cnf 파일을 읽거나 사용하지 않음</title>
      <link>https://itgroup.tistory.com/993</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Apache가 MariaDB(PERL)와 함께 cnf 파일을 읽거나 사용하지 않음&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;마이 OS: CentOS 7&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;MariaDB: 10.0.21&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;cnf 파일을 사용하는 데 문제가 있었습니다(이전에는 다른 시스템에서 문제없이 사용했지만).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;쿼리에서 다음과 같은 유형의 오류가 계속 나타납니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;failed: Access denied for user 'apache'@'localhost' (using password: NO)
&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;my $dsn = &quot;dbi:mysql:databaseA;&quot; . &quot;mysql_read_default_file=/var/path/dbA.cnf;&quot; ;

my $dbh = DBI-&amp;gt;connect($dsn, undef, undef, 
                    {RaiseError =&amp;gt; 1, AutoCommit =&amp;gt; 0}) or die $DBI::errstr;
&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;하지만 cnf 파일을 사용하지 않고 dbh 라인에 사용자 이름을 수동으로 입력하면 잘 됩니다.&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;내 cnf 파일은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;[client]
host = localhost
database = databaseA
user = MyAdmin
password = Mypassword
&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;느슨하게 보면 왜 아파치는 cnf 파일에 주어진 크레딧 대신 자체 크레딧을 사용하여 연결을 시도합니까(명령줄에서도 작동합니다)?&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;그리고 네 저는 cnf 파일에 550, 500, 600, 650 권한을 부여하려고 노력했습니다.&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;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/32998534/apache-not-reading-or-using-cnf-files-with-mariadb-perl&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>MariaDB</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/993</guid>
      <comments>https://itgroup.tistory.com/993#entry993comment</comments>
      <pubDate>Wed, 25 Oct 2023 23:15:05 +0900</pubDate>
    </item>
    <item>
      <title>UI 테스트 텍스트 필드의 텍스트 삭제</title>
      <link>https://itgroup.tistory.com/992</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;UI 테스트 텍스트 필드의 텍스트 삭제&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;pre&gt;&lt;code&gt;let textField = app.textFields
textField.tap()
// delete &quot;Old value&quot;
textField.typeText(&quot;New value&quot;)
&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;소프트웨어 키보드로 동일한 작업을 수행한 후 다음과 같은 결과를 얻었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;let key = app.keys[&quot;Usuń&quot;] // Polish name for the key
key.tap()
key.tap() 
... // x times
&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;app.keys[&quot;Usuń&quot;].pressForDuration(1.5)
&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;extension XCUIElementQuery {
    var deleteKey: XCUIElement {
        get {
            // Polish name for the key
            if self[&quot;Usuń&quot;].exists {
                return self[&quot;Usuń&quot;]
            } else {
                return self[&quot;Delete&quot;]
            }
        }
    }
}
&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;app.keys.deleteKey.pressForDuration(1.5)
&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 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;Toggle software keyboard&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 class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제 솔루션은 CI 테스트와 잘 맞지 않습니다.&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;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;extension XCUIElement {
    /**
     Removes any current text in the field before typing in the new value
     - Parameter text: the text to enter into the field
     */
    func clearAndEnterText(text: String) {
        guard let stringValue = self.value as? String else {
            XCTFail(&quot;Tried to clear and enter text into a non string value&quot;)
            return
        }

        self.tap()

        let deleteString = String(repeating: XCUIKeyboardKey.delete.rawValue, count: stringValue.count)

        self.typeText(deleteString)
        self.typeText(text)
    }
}
&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 class=&quot;papago-parent&quot;&gt;그런 다음 이 기능을 쉽게 사용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;app.textFields[&quot;Email&quot;].clearAndEnterText(&quot;newemail@domain.example&quot;)&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;텍스트 필드 및 텍스트 보기에 적합합니다.&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;strong papago-id=&quot;11-1&quot;&gt;SWIFT 3용&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;extension XCUIElement {
    func clearText() {
        guard let stringValue = self.value as? String else {
            return
        }

        var deleteString = String()
        for _ in stringValue {
            deleteString += XCUIKeyboardKeyDelete
        }
        self.typeText(deleteString)
    }
}
&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;strong papago-id=&quot;12-1&quot;&gt;SWIFT 4&lt;/strong&gt;, &lt;strong papago-id=&quot;12-3&quot;&gt;SWIFT 5&lt;/strong&gt;의 경우&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;extension XCUIElement {
    func clearText() {
        guard let stringValue = self.value as? String else {
            return
        }

        var deleteString = String()
        for _ in stringValue {
            deleteString += XCUIKeyboardKey.delete.rawValue
        }
        typeText(deleteString)
    }
}
&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;업데이트 XCODE 9&lt;/font&gt;&lt;/strong&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;a href=&quot;https://github.com/lionheart/openradar-mirror/issues/18410&quot; rel=&quot;noreferrer&quot; papago-id=&quot;14-1&quot;&gt;텍스트&lt;/a&gt; 필드가 비어 있으면 값과 자리 표시자 값이 같은 애플 버그가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;extension XCUIElement {
    func clearText() {
        guard let stringValue = self.value as? String else {
            return
        }
        // workaround for apple bug
        if let placeholderString = self.placeholderValue, placeholderString == stringValue {
            return
        }

        var deleteString = String()
        for _ in stringValue {
            deleteString += XCUIKeyboardKey.delete.rawValue
        }
        typeText(deleteString)
    }
}
&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;질문에 대한 설명에서 지역화된 삭제 키 이름 문제를 수정했으므로 &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;아래 코드를 사용하면 필드의 내용을 확실하게 삭제할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-swift prettyprint-override&quot;&gt;&lt;code&gt;while (textField.value as! String).characters.count &amp;gt; 0 {
    app.keys[&quot;Delete&quot;].tap()
}
&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;또는 Swift 4+:&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-swift prettyprint-override&quot;&gt;&lt;code&gt;while !(textView.value as! String).isEmpty {
    app.keys[&quot;Delete&quot;].tap()
}
&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 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;Clear button&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&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;스토리보드를 열고 특성 검사자에서 &quot;지우기 단추&quot;를 찾은 후 원하는 옵션(예: 항상 표시됨)으로 설정한 텍스트 필드를 선택합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://i.stack.imgur.com/xyLkq.png&quot; rel=&quot;nofollow noreferrer&quot;&gt;&lt;img src=&quot;https://i.stack.imgur.com/xyLkq.png&quot; alt=&quot;Clear button selection&quot;&gt;&lt;/a&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;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://i.stack.imgur.com/nc5l8.png&quot; rel=&quot;nofollow noreferrer&quot;&gt;&lt;img src=&quot;https://i.stack.imgur.com/nc5l8.png&quot; alt=&quot;Clear button&quot;&gt;&lt;/a&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;또는 UI 테스트에서:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;textField.buttons[&quot;Clear text&quot;].tap()
&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;let myTextView = app.textViews[&quot;some_selector&quot;]
myTextView.pressForDuration(1.2)
app.menuItems[&quot;Select All&quot;].tap()
app.typeText(&quot;New text you want to enter&quot;) 
// or use app.keys[&quot;delete&quot;].tap() if you have keyboard enabled
&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;텍스트 필드를 길게 누르면 &quot;모두 선택&quot; 버튼을 누를 수 있는 메뉴가 열립니다.&lt;/font&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&gt;&lt;em papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Xcode 9, 스위프트 4&lt;/font&gt;&lt;/em&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;제가 사용한 접근 방식은 @oliverfrost가 &lt;a href=&quot;https://stackoverflow.com/a/35292690/853389&quot; papago-id=&quot;26-1&quot;&gt;여기&lt;/a&gt;서 설명한 것이지만, 문제를 해결하고 깔끔하게 확장하여 결합하기 위해 몇 가지 터치를 추가했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;누군가에게 유용하게 쓰일 수 있었으면 좋겠습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-swift prettyprint-override&quot;&gt;&lt;code&gt;extension XCUIElement {
    func clearText(andReplaceWith newText:String? = nil) {
        tap()
        tap() //When there is some text, its parts can be selected on the first tap, the second tap clears the selection
        press(forDuration: 1.0)
        let selectAll = XCUIApplication().menuItems[&quot;Select All&quot;]
        //For empty fields there will be no &quot;Select All&quot;, so we need to check
        if selectAll.waitForExistence(timeout: 0.5), selectAll.exists {
            selectAll.tap()
            typeText(String(XCUIKeyboardKey.delete.rawValue))
        }
        if let newVal = newText { typeText(newVal) }
    }
}
&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;pre class=&quot;lang-swift prettyprint-override&quot;&gt;&lt;code&gt;let app = XCUIApplication()
//Just clear text
app.textFields[&quot;field1&quot;].clearText() 
//Replace text    
app.secureTextFields[&quot;field2&quot;].clearText(andReplaceWith: &quot;Some Other Text&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;&lt;font class=&quot;papago-parent&quot;&gt;사용가능&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;doubleTap&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;pre class=&quot;lang-swift prettyprint-override&quot;&gt;&lt;code&gt;extension XCUIElement {
  func typeNewText(_ text: String) {
    if let existingText = value as? String, !existingText.isEmpty {
      if existingText != text {
        doubleTap()
      } else {
        return
      }
    }

    typeText(text)
  }
}
&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 class=&quot;lang-swift prettyprint-override&quot;&gt;&lt;code&gt;textField.typeNewText(&quot;New Text&quot;)
&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;p papago-id=&quot;32&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;33&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;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;    class func clearTextField(textField : XCUIElement!) -&amp;gt; Bool {

        guard textField.elementType != .TextField else {
            return false
        }

        let TextFieldClearButton = textField.buttons.elementBoundByIndex(0)

        guard TextFieldClearButton.exists else {
            return false
        }

        TextFieldClearButton.tap()

        return true
    }
&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;텍스트 필드 전체를 여러 번 두드려 선택하는 iOS 기능을 사용하는 솔루션을 찾았습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 문자를 입력하거나 삭제를 눌러 텍스트 필드를 삭제합니다(키보드가 활성화된 경우).&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;let myTextView = app.textViews[&quot;some_selector&quot;]
myTextView.tap(withNumberOfTaps: 2, numberOfTouches: 1)
app.typeText(&quot;New text you want to enter&quot;) 
// or use app.keys[&quot;delete&quot;].tap() if you have keyboard enabled
&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;font class=&quot;papago-parent&quot;&gt;iOS 16과 Xcode 14에서 테스트를 받았습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-swift prettyprint-override&quot;&gt;&lt;code&gt;extension XCUIElement {
    /// Removes any current text in the field before typing in the new value and submitting
    /// Based on: https://stackoverflow.com/a/32894080
    func clear() {
        if self.value as? String == nil {
            XCTFail(&quot;Tried to clear and enter text into a non string value&quot;)
            return
        }

        // Repeatedly delete text as long as there is something in the text field.
        // This is required to clear text that does not fit in to the textfield and is partially hidden initally.
        // Important to check for placeholder value, otherwise it gets into an infinite loop.
        while let stringValue = self.value as? String, !stringValue.isEmpty, stringValue != self.placeholderValue {
            // Move the cursor to the end of the text field
            let lowerRightCorner = self.coordinate(withNormalizedOffset: CGVector(dx: 0.9, dy: 0.9))
            lowerRightCorner.tap()
            let delete = String(repeating: XCUIKeyboardKey.delete.rawValue, count: stringValue.count)
            self.typeText(delete)
        }
    }

    func clearAndEnterText(text: String) {
        self.clear()
        // new line at end submits
        self.typeText(&quot;\(text)\n&quot;)
    }
}

&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;p papago-id=&quot;38&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;//이 변수 let textIn에서 텍스트 상자 값 읽기&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;  let characterCount: Int = textInTextField.count
  for _ in 0..&amp;lt;characterCount {
    textFields[0].typeText(XCUIKeyboardKey.delete.rawValue)
  }
&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;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;swift 4.2&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;/p&gt; 
&lt;pre&gt;&lt;code&gt;extension XCUIElement {
    /**
     Removes any current text in the field before typing in the new value
     - Parameter text: the text to enter into the field
     */
    func clearAndEnterText(text: String) {
        guard let stringValue = self.value as? String else {
            XCTFail(&quot;Tried to clear and enter text into a non string value&quot;)
            return
        }

        self.tap()
        for _ in 0..&amp;lt;stringValue.count {
            self.typeText(XCUIKeyboardKey.delete.rawValue)
        }

        self.typeText(text)
    }
}
&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;Objective-C를 아직 사용 중인 사용자의 경우&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;@implementation XCUIElement (Extensions)

-(void)clearText{
    if (!self){
        return;
    }
    if (![self.value isKindOfClass:[NSString class]]){
        return;
    }
    NSString* stringValue = (NSString*)self.value;
    for (int i=0; i&amp;lt;stringValue.length ; i++) {
        [self typeText:XCUIKeyboardKeyDelete];
    }
}

@end
&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;커서가 텍스트 앞에 놓이고 그 다음부터는 거꾸로 작동합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 삭제하기 전에 텍스트 필드에 텍스트가 있는지 확인하고 싶었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음은 https://stackoverflow.com/users/482361/bay-phillips 에서 작성한 확장자에서 영감을 얻은 제 솔루션입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;삭제 키를 두드리는 것은 시간이 오래 걸릴 수 있으며 .pressForDuration으로 대체할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;func clearAndEnterText(element: XCUIElement, text: String) -&amp;gt; Void
    {
        guard let stringValue = element.value as? String else {
            XCTFail(&quot;Tried to clear and enter text into a non string value&quot;)
            return
        }

        element.tap()

        guard stringValue.characters.count &amp;gt; 0 else
        {
            app.typeText(text)
            return
        }

       for _ in stringValue.characters
        {
            app.keys[&quot;delete&quot;].tap()
        }
        app.typeText(text)
    }
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;44&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;iOS로 UI 테스트를 하는 것은 처음이지만 간단한 해결책으로 텍스트 필드를 지울 수 있었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Xcode8과 함께 작업 중이며 곧 리팩토링 작업을 진행할 계획입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;func testLoginWithCorrectUsernamePassword() {
      //Usually this will be completed by Xcode
    let app = XCUIApplication()
      //Set the text field as a constant
    let usernameTextField = app.textFields[&quot;User name&quot;]
      //Set the delete key to a constant
    let deleteKey = app.keys[&quot;delete&quot;]
      //Tap the username text field to toggle the keyboard
    usernameTextField.tap()
      //Set the time to clear the field.  generally 4 seconds works
    deleteKey.press(forDuration: 4.0);
      //Enter your code below...
}
&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;@oliverfrost님이 설명해주신 내용을 사용했는데 아이폰XR에서 작동이 안되서 개인용도로 조금 바꿨습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;extension XCUIElement {
func clearText(andReplaceWith newText:String? = nil) {
    tap()
    tap() //When there is some text, its parts can be selected on the first tap, the second tap clears the selection
    press(forDuration: 1.0)
    let select = XCUIApplication().menuItems[&quot;Select&quot;]
    //For empty fields there will be no &quot;Select All&quot;, so we need to check
    if select.waitForExistence(timeout: 0.5), select.exists {
        select.tap()
        typeText(String(XCUIKeyboardKey.delete.rawValue))
    }
    if let newVal = newText { typeText(newVal) }
}
}
&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;@zysoft가 말한 대로 다음과 같이 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;let app = XCUIApplication()
//Just clear text
app.textFields[&quot;field1&quot;].clearText() 
//Replace text    
app.secureTextFields[&quot;field2&quot;].clearText(andReplaceWith: &quot;Some Other Text&quot;)
&lt;/code&gt;&lt;/pre&gt;&lt;h2 papago-id=&quot;47&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;스위프트 5&lt;/font&gt;&lt;/h2&gt; 
&lt;p papago-id=&quot;48&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;@Bay Phillips 답변을 토대로,&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-swift prettyprint-override&quot;&gt;&lt;code&gt;extension XCUIElement {

    func clearAndEnterText(text: String) {
        guard let stringValue = self.value as? String else {
            XCTFail(&quot;Tried to clear and enter text into a non string value&quot;)
            return
        }

        self.tap()

        let deleteString = stringValue.map { _ in &quot;\u{8}&quot; }.joined(separator: &quot;&quot;)

        self.typeText(deleteString)
        self.typeText(text)
    }

}
&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;a href=&quot;https://stackoverflow.com/a/73847504/191463&quot; papago-id=&quot;49-1&quot;&gt;아고스트 &lt;/a&gt;비로의 &lt;a href=&quot;https://stackoverflow.com/a/73847504/191463&quot; papago-id=&quot;49-1&quot;&gt;대답&lt;/a&gt;에 근거한 나의 해결책입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;maxAttempts 매개 변수를 추가하여 테스트가 여러 번 시도했지만 클리어되지 않은 경우 무한 루프 대신 테스트가 실패합니다. (새로운 iOS 버전과 같이 무언가를 적용하는 것이 잘못되었거나 클리어 로직을 업데이트해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;어떤 이유로 많은 삭제가 필요한 특정 텍스트 필드가 있는 경우.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러면 maxAttempts 파라미터를 늘릴 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-swift prettyprint-override&quot;&gt;&lt;code&gt;extension XCUIElement {
    func clearValue(maxAttempts: Int = 3) {
        for attempt in 0...maxAttempts {
            if attempt == maxAttempts {
                XCTFail(&quot;Couldn't clear value of element: \(self)&quot;)
                break // In case XCTestCase.continueAfterFailure == true
            }
            // If the text field is empty, then value returns the placeholderValue. So if they are equal then it can be considered cleared.
            if let value = value as? String, !value.isEmpty &amp;amp;&amp;amp; value != placeholderValue {
                // Move the cursor to the end of the text field
                let lowerRightCorner = coordinate(withNormalizedOffset: CGVector(dx: 0.9, dy: 0.8))
                lowerRightCorner.tap()
                typeText(NSString().padding(toLength: value.count, withPad: XCUIKeyboardKey.delete.rawValue, startingAt: 0))
            } else {
                break
            }
        }
    }
}
&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;원래 질문에서 이것이 &quot;약해지기 쉬운&quot; 것으로 표시되었다는 것을 알고 있지만, 요즘에는 이것이 가장 쉬운 해결책인 것 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;myTextView.press(forDuration: 1.2)
app.menuItems[&quot;Select All&quot;].tap()
app.menuItems[&quot;Cut&quot;].tap()
&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;URL : https://stackoverflow.com/questions/32821880/ui-test-deleting-text-in-text-field&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>SWIFT</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/992</guid>
      <comments>https://itgroup.tistory.com/992#entry992comment</comments>
      <pubDate>Wed, 25 Oct 2023 23:14:58 +0900</pubDate>
    </item>
    <item>
      <title>워드프레스의 카테고리 슬러그에서 카테고리 이름을 얻는 방법은?</title>
      <link>https://itgroup.tistory.com/991</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;/p&gt; 
&lt;p&gt;&lt;a href=&quot;http://localhost/rajab/product-category/pvc-hose/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;http://localhost/ rajab/ 제품- category/ pvc- hose/&lt;/font&gt;&lt;/a&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;pvc-hose&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;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;a href=&quot;https://codex.wordpress.org/Function_Reference/get_category_by_slug&quot; rel=&quot;noreferrer&quot; papago-id=&quot;4-1&quot;&gt;get_category_by_slug&lt;/a&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;?php
$catObj = get_category_by_slug('category-slug'); 
$catName = $catObj-&amp;gt;name;
?&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;$cat = get_term_by( 'slug', 'aeroplane', 'category');
echo $cat-&amp;gt;name;
&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&gt;&lt;/font&gt;&lt;code&gt;category name&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;category slug&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;category ID&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;get_term_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;/p&gt; 
&lt;pre&gt;&lt;code&gt;// Get term by name ''news'' in Categories taxonomy.
$category = get_term_by('name', 'news', 'category')

// Get term by name ''news'' in Tags taxonomy.
$tag = get_term_by('name', 'news', 'post_tag')

// Get term by name ''news'' in Custom taxonomy.
$term = get_term_by('name', 'news', 'my_custom_taxonomy')

// Get term by name ''Default Menu'' from theme's nav menus.
// (Alternative to using wp_get_nav_menu_items)
$menu = get_term_by('name', 'Default Menu', 'nav_menu');
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;a href=&quot;https://codex.wordpress.org/Function_Reference/get_term_by&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;10&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;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/35576054/how-to-get-the-category-name-from-category-slug-in-wordpress&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>WordPress</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/991</guid>
      <comments>https://itgroup.tistory.com/991#entry991comment</comments>
      <pubDate>Fri, 20 Oct 2023 13:35:22 +0900</pubDate>
    </item>
    <item>
      <title>jQuery로 IE 8을 탐지하려면 어떻게 해야 합니까?</title>
      <link>https://itgroup.tistory.com/990</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;jQuery로 IE 8을 탐지하려면 어떻게 해야 합니까?&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를 이용해서 감지해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;대부분 IE 8인지 아닌지 알아봐야 합니다.&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 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;if (jQuery.browser.version &amp;gt;= 8.0) {
dosomething}
&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;버전 8.123.45.6에서 작동할지 아니면 작동할지 확신할 수 없습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;편집: JQuery 2+가 IE8 이하에 대한 지원을 중단했기 때문에 IE8을 탐지하는 데 더 이상 사용할 수 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;현재 버전의 JQuery를 사용하는 경우 Non-JQuery 솔루션을 사용해야 합니다.&lt;/font&gt;&lt;/strong&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;HTML5 보일러 플레이트에서:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;!--[if lt IE 7]&amp;gt; &amp;lt;html lang=&quot;en-us&quot; class=&quot;no-js ie6 oldie&quot;&amp;gt; &amp;lt;![endif]--&amp;gt;
&amp;lt;!--[if IE 7]&amp;gt;    &amp;lt;html lang=&quot;en-us&quot; class=&quot;no-js ie7 oldie&quot;&amp;gt; &amp;lt;![endif]--&amp;gt;
&amp;lt;!--[if IE 8]&amp;gt;    &amp;lt;html lang=&quot;en-us&quot; class=&quot;no-js ie8 oldie&quot;&amp;gt; &amp;lt;![endif]--&amp;gt;
&amp;lt;!--[if gt IE 8]&amp;gt;&amp;lt;!--&amp;gt; &amp;lt;html lang=&quot;en-us&quot; class=&quot;no-js&quot;&amp;gt; &amp;lt;!--&amp;lt;![endif]--&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;JS:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;if( $(&quot;html&quot;).hasClass(&quot;ie8&quot;) ) { /* do your things */ };
&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;특히 jQuery 1.9+에서 삭제된 이후로.&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;이는 모든 IE8 마이너 버전에서 작동해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;if ($.browser.msie  &amp;amp;&amp;amp; parseInt($.browser.version, 10) === 8) {
  alert('IE8'); 
} else {
  alert('Non IE8');
}
&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;a href=&quot;http://api.jquery.com/jQuery.browser/&quot; papago-id=&quot;12-1&quot;&gt;$.browser&lt;/a&gt;는 &lt;a href=&quot;http://jquery.com/upgrade-guide/1.9/#jquery-browser-removed&quot; papago-id=&quot;12-3&quot;&gt;jQuery 1.9에서 제거되었음&lt;/a&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;a href=&quot;http://api.jquery.com/jQuery.browser/&quot; papago-id=&quot;13-1&quot; rel=&quot;noreferrer&quot;&gt;jQuery API Documentation&lt;/a&gt;에 문서화되어 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음을 사용하여 Internet Explorer 확인&lt;/font&gt;&lt;/font&gt;&lt;code&gt;$.browser.msie&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;$.browser.version&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;/p&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;a href=&quot;http://jquery.com/upgrade-guide/1.9/#jquery-browser-removed&quot; rel=&quot;noreferrer&quot; papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;$.browser는 jQuery 1.9에서 제거됨&lt;/font&gt;&lt;/a&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;jQuery.browser() 메서드는 jQuery 1.3 이후로 더 이상 사용되지 않으며 1.9에서 제거됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;18-1&quot;&gt;필요한 경우 jQuery Migrate 플러그인의 일부로 사용할 수 있습니다.&lt;/strong&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;18-1&quot;&gt; Modernizr와 같은 라이브러리와 함께 특징 탐지를 사용하는 것이 좋습니다.&lt;/strong&gt;&lt;/font&gt;&lt;/p&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;HTML을 사용하여 IE8을 탐지할 수도 있다는 것을 잊지 마십시오.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;!--[if IE 8]&amp;gt;
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
    ie = 8;
&amp;lt;/script&amp;gt;
&amp;lt;![endif]--&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;스크립트를 모두 사용하기 전에 이를 사용하면 &quot;즉&quot; 변수를 확인할 수 있습니다.&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;document.documentMode&lt;/strong&gt;는 브라우저가 IE8이 아닌 경우 정의되지 않습니다.&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;표준 모드의 경우 8을 반환하고 'IE7과 호환'의 경우 7을 반환합니다.&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;IE7로 실행 중이라면 지원되지 않는 CSS와 돔 기능이 많습니다.&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;ul&gt; 
 &lt;li papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;...이전 버전의 IE에서 스타일을 올바르게 보이도록(그렇지 않으면 기능 감지 사용) 원하는 것은 이전 버전의 IE의 크런치 &lt;strong papago-id=&quot;25-1&quot;&gt;렌더링 엔진&lt;/strong&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;strong papago-id=&quot;26-1&quot;&gt;HTML에 조건부 코멘트만 추가할 &lt;/strong&gt;수 &lt;strong papago-id=&quot;26-1&quot;&gt;없다는&lt;/strong&gt; 것 - 예를 들어 모든 페이지에 적용할 수 있는 JS 플러그인(그렇지 않으면 조건부 클래스의 속임수를 수행합니다)&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&amp;lt;body&amp;gt;&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;&amp;lt;html&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;/li&gt; 
&lt;/ul&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://stackoverflow.com/a/10965203/568458&quot; papago-id=&quot;29-1&quot;&gt;비jQuery, 약간&lt;/a&gt; 덜 &lt;a href=&quot;https://stackoverflow.com/a/10965203/568458&quot; papago-id=&quot;29-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&gt;&lt;em papago-id=&quot;30&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(IE10+ '표준 모드'에서는 조건부 코멘트가 무시되지만, IE10+ '표준 모드'에는 미친 렌더링 엔진이 없기 때문에 괜찮습니다!)&lt;/font&gt;&lt;/em&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;/p&gt; 
&lt;pre&gt;&lt;code&gt;function isIE( version, comparison ){
    var $div = $('&amp;lt;div style=&quot;display:none;&quot;/&amp;gt;');

    // Don't chain these, in IE8 chaining stops some versions of jQuery writing the conditional comment properly
    $div.appendTo($('body'));
    $div.html('&amp;lt;!--[if '+(comparison||'')+' IE '+(version||'')+']&amp;gt;&amp;lt;a&amp;gt;&amp;amp;nbsp;&amp;lt;/a&amp;gt;&amp;lt;![endif]--&amp;gt;');

    var ieTest = $div.find('a').length;
    $div.remove();
    return ieTest;
}
&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;if(isIE()){ /* runs in all versions of IE after 4 before standards-mode 10 */ }

if(isIE(8)){ /* runs in IE8 */ }

if(isIE(9)){ /* runs in IE9 */ }

if(isIE(8,'lte')){ /* runs in IE8 or below */ }

if(isIE(6,'lte')){ /* if you need this, I pity you... */ }
&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 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;(comparison||'')+' IE '+(version||'')&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&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;p papago-id=&quot;36&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;1) $.browser는 jQuery 1.9+에서 삭제된 것으로 보입니다(Mandeep Jain이 언급함).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;대신 &lt;a href=&quot;http://api.jquery.com/jQuery.support/&quot; papago-id=&quot;36-3&quot;&gt;.support&lt;/a&gt;를 사용하는 것이 &lt;a href=&quot;http://api.jquery.com/jQuery.browser/&quot; papago-id=&quot;36-1&quot;&gt;좋습니다&lt;/a&gt;.&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;2) browser&lt;a href=&quot;http://api.jquery.com/jQuery.browser/&quot; papago-id=&quot;37-1&quot;&gt; &lt;/a&gt;달러입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://api.jquery.com/jQuery.browser/&quot; papago-id=&quot;37-1&quot;&gt;버전&lt;/a&gt;은 브라우저가 &quot;호환성&quot; 모드일 때 IE &amp;gt;7에서 &quot;7&quot;을 반환할 수 있습니다.&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;3) IE 10 시점에서 &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ie/hh801214%28v=vs.85%29.aspx&quot; papago-id=&quot;38-1&quot;&gt;조건부 코멘트&lt;/a&gt;는 더 이상 작동하지 않습니다.&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;4) jQuery 2.0+는 &lt;a href=&quot;http://blog.jquery.com/2012/06/28/jquery-core-version-1-9-and-beyond/&quot; papago-id=&quot;39-1&quot;&gt;IE 6/7/8에 대한 지원&lt;/a&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;5) document.documentMode는 Internet Explorer 8+ &lt;strong papago-id=&quot;40-1&quot;&gt;브라우저&lt;/strong&gt;에서만 정의되는 것으로 보입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;반환된 값은 Internet Explorer(인터넷 익스플로러)가 실행 중인 &quot;호환성&quot; 모드를 알려줍니다.&lt;/font&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;여러 가지 .support() 옵션을 시도해 보았지만 IE 브라우저(9+)가 호환 모드일 때 IE 7처럼 간단히 동작하는 것 같습니다. :(&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 papago-id=&quot;43&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;documentMode가 정의되어 있지 않고 htmlSerialize 및 oppacity가 지원되지 않는 경우 IE &amp;lt;8...&amp;gt;을 볼 가능성이 매우 높습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;if(!document.documentMode &amp;amp;&amp;amp; !$.support.htmlSerialize &amp;amp;&amp;amp; !$.support.opacity) 
{
    // IE 6/7 code
}
&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 class=&quot;papago-parent&quot;&gt;당신은 혼자서 그것을 실행하고 싶지 않을 겁니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 여러분은 폴 아이리쉬와 다른 똑똑한 사람들이 만든 &lt;a href=&quot;http://modernizr.com/&quot; rel=&quot;nofollow&quot; papago-id=&quot;8-1&quot;&gt;모더니즈&lt;/a&gt;를 만들 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;브라우저가 실제로 할 수 &lt;em papago-id=&quot;8-3&quot;&gt;있는&lt;/em&gt; 것을 감지하고 적절한 클래스를 입력합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&amp;lt;html&amp;gt;&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 class=&quot;papago-parent&quot;&gt;그러나 &lt;a href=&quot;http://modernizr.com/&quot; rel=&quot;nofollow&quot; papago-id=&quot;9-1&quot;&gt;Modernizr&lt;/a&gt;를 사용하면 다음과 같이 IE 버전을 테스트할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$('html.lt-ie9').each() {
    // this will execute if browser is IE 8 or less
}
&lt;/code&gt;&lt;/pre&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;.lt-ie8&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;.lt-ie7&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;/p&gt;&lt;p papago-id=&quot;49&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://api.jquery.com/jQuery.support/&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;49-1&quot;&gt;jQuery.support&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;50&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;$(document).ready(function()
{
 if ( $.browser.msie ){
    if($.browser.version == '6.0')
    {   $('html').addClass('ie6');
    }
    else if($.browser.version == '7.0')
    {   $('html').addClass('ie7');
    }
    else if($.browser.version == '8.0')
    {   $('html').addClass('ie8');
    }
    else if($.browser.version == '9.0')
    {   $('html').addClass('ie9');
    }
 }
 else if ( $.browser.webkit )
 { $('html').addClass('webkit');
 }
 else if ( $.browser.mozilla )
 { $('html').addClass('mozilla');
 }
 else if ( $.browser.opera )
 { $('html').addClass('opera');
 }
});
&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;a href=&quot;http://jquery.thewikies.com/browser/jquery.browser.min.js&quot; rel=&quot;nofollow&quot; papago-id=&quot;51-0&quot;&gt;다음&lt;/a&gt;은 브라우저/os 탐지를 식별하기 위한 Jquery 브라우저 탐지 플러그인입니다.&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;$(&quot;html&quot;).addClass($.os.name);
$(&quot;body&quot;).addClass($.browser.className);
$(&quot;body&quot;).addClass($.browser.name);
&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;$.browser를 사용하여 브라우저 이름을 탐지할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;가능한 값은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li papago-id=&quot;54&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;웹킷 (jQuery 1.4 기준)&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;55&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사파리 (deprec)&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;56&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;57&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;58&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;59&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또는 부울 플래그를 가져옵니다. 브라우저가 MSIE이면 $.browser.msie가 true가 됩니다.&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;버전 번호는 주 릴리스 번호에만 관심이 있는 경우 parseInt($.browser)를 사용할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;버전, 10). $. browser를 파싱할 필요가 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;버전 문자열을 입력합니다.&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;어쨌든 $.support 속성은 $.browser에 의존하지 않고 특정 기능에 대한 지원을 탐지할 수 있습니다.&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;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/2202305/how-do-i-detect-ie-8-with-jquery&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>jQuery</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/990</guid>
      <comments>https://itgroup.tistory.com/990#entry990comment</comments>
      <pubDate>Fri, 20 Oct 2023 13:35:16 +0900</pubDate>
    </item>
    <item>
      <title>(도커에 있는) 매리아드데이터베이스 수정 또는 재설정?</title>
      <link>https://itgroup.tistory.com/989</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;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;공식 mariadb docker 이미지를 사용하고 있으며 최신 버전(10.5.8)으로 업데이트한 후 손상에 대한 오류가 발생하기 시작했습니다(아래 로그 참조).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이전 mariadb 버전으로 다운그레이드 할 때도 이런 현상이 지속되니 데이터베이스 손상이 아닐까요?&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;수정할 방법이 있습니까? 만약 없다면 데이터베이스를 재설정하는 방법은 무엇입니까? (데이터베이스에서 데이터가 손실되는 것은 세상의 끝이 아니라 mariadb 컨테이너가 작동하지 않는 경우입니다.)&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 class=&quot;lang-sh prettyprint-override&quot;&gt;&lt;code&gt;2020-11-18 15:45:35+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 1:10.5.8+maria~focal started.
2020-11-18 15:45:35+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2020-11-18 15:45:35+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 1:10.5.8+maria~focal started.
2020-11-18 15:45:36 0 [Note] mysqld (mysqld 10.5.8-MariaDB-1:10.5.8+maria~focal) starting as process 1 ...
2020-11-18 15:45:36 0 [Note] InnoDB: Using Linux native AIO
2020-11-18 15:45:36 0 [Note] InnoDB: Uses event mutexes
2020-11-18 15:45:36 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2020-11-18 15:45:36 0 [Note] InnoDB: Number of pools: 1
2020-11-18 15:45:36 0 [Note] InnoDB: Using SSE4.2 crc32 instructions
2020-11-18 15:45:36 0 [Note] mysqld: O_TMPFILE is not supported on /tmp (disabling future attempts)
2020-11-18 15:45:36 0 [Note] InnoDB: Initializing buffer pool, total size = 134217728, chunk size = 134217728
2020-11-18 15:45:36 0 [Note] InnoDB: Completed initialization of buffer pool
2020-11-18 15:45:36 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
2020-11-18 15:45:36 0 [Note] InnoDB: Starting crash recovery from checkpoint LSN=20174219501,20174219501
2020-11-18 15:45:36 0 [Note] InnoDB: Starting final batch to recover 3205 pages from redo log.
2020-11-18 15:45:36 0 [ERROR] InnoDB: Not applying INSERT_REUSE_REDUNDANT due to corruption on [page id: space=0, page number=2062]
2020-11-18 15:45:36 0 [ERROR] InnoDB: Set innodb_force_recovery=1 to ignore corruption.
2020-11-18 15:45:36 0 [ERROR] InnoDB: Not applying INSERT_REUSE_REDUNDANT due to corruption on [page id: space=0, page number=2062]
2020-11-18 15:45:36 0 [ERROR] InnoDB: Set innodb_force_recovery=1 to ignore corruption.
2020-11-18 15:45:36 0 [ERROR] InnoDB: Not applying INSERT_REUSE_REDUNDANT due to corruption on [page id: space=0, page number=2062]
2020-11-18 15:45:36 0 [ERROR] InnoDB: Set innodb_force_recovery=1 to ignore corruption.
2020-11-18 15:45:36 0 [ERROR] InnoDB: Not applying INSERT_REUSE_REDUNDANT due to corruption on [page id: space=0, page number=2062]
2020-11-18 15:45:36 0 [ERROR] InnoDB: Set innodb_force_recovery=1 to ignore corruption.
2020-11-18 15:45:36 0 [ERROR] InnoDB: Plugin initialization aborted with error Data structure corruption
2020-11-18 15:45:36 0 [Note] InnoDB: Starting shutdown...
2020-11-18 15:45:37 0 [ERROR] Plugin 'InnoDB' init function returned error.
2020-11-18 15:45:37 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2020-11-18 15:45:37 0 [Note] Plugin 'FEEDBACK' is disabled.
2020-11-18 15:45:37 0 [ERROR] Unknown/unsupported storage engine: InnoDB
2020-11-18 15:45:37 0 [ERROR] Aborting
&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;yaml:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;  hass_db:
    image: mariadb:latest
    # image: mariadb:10.5.4
    # image: mariadb:10.4.14
    container_name: hass_db
    environment:
      MYSQL_ROOT_PASSWORD: Maria4sud0
      MYSQL_DATABASE: homeassistant
      MYSQL_USER: homeassistant
      MYSQL_PASSWORD: Maria4HAss
    restart: on-failure
    volumes:
      - /mnt/data/docker/hass_db:/var/lib/mysql
    networks:
      mynet:
        ipv4_address: 172.11.0.7
&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/64896543/mariadb-in-docker-corruption-fix-or-reset-database&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>MariaDB</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/989</guid>
      <comments>https://itgroup.tistory.com/989#entry989comment</comments>
      <pubDate>Fri, 20 Oct 2023 13:35:07 +0900</pubDate>
    </item>
    <item>
      <title>게시된 사용자 지정 게시글 수에 따라 워드프레스 작성자 순서 가져오기</title>
      <link>https://itgroup.tistory.com/988</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;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내 WordPress v5.8.1에서 사용자 지정 게시물에 게시하는 작성자 목록이 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;song&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;poem&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; $authors = get_users(array(
        'who' =&amp;gt; 'authors',
        'has_published_posts' =&amp;gt; array('song','poem'),
        'orderby' =&amp;gt; 'post_count',
        'order' =&amp;gt; 'DESC',
        'number' =&amp;gt; '15'
 ));
&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;foreach ($authors as $user) {
   $name = $user-&amp;gt;first_name . ' ' . $user-&amp;gt;last_name;
   $songs = count_user_posts($user-&amp;gt;ID, $post_type = &quot;song&quot;);
   $poems = count_user_posts($user-&amp;gt;ID, $post_type = &quot;poem&quot;);
   echo $name.' has '. $songs .' songs, and '. $poems .' poems;
}
&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;'orderby' =&amp;gt; 'post_count'&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;post_counts&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;ID&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 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;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$authors = get_users(array(
    'who' =&amp;gt; 'authors',
    'has_published_posts' =&amp;gt; array('song','poem'),
    'orderby' =&amp;gt; 'post_count',
    'order' =&amp;gt; 'DESC',
    'number' =&amp;gt; '15'
));
&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&gt;&lt;/font&gt;&lt;code&gt;array&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;$author_posts = array();

foreach ($authors as $user) {
    $name = $user-&amp;gt;first_name . ' ' . $user-&amp;gt;last_name;
    $songs = count_user_posts($user-&amp;gt;ID, $post_type = &quot;song&quot;);
    $poems = count_user_posts($user-&amp;gt;ID, $post_type = &quot;poem&quot;);
    $author_posts[] = array(
        'total' =&amp;gt; $songs+$poems,
        'label' =&amp;gt; $name.' has '. $songs .' songs, and '. $poems .' poems'
    );
}
&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;이제 'usort를 사용하여 배열을 합계로 정렬합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;usort($author_posts, function($a, $b) {
    if($a['total']==$b['total']) return 0;
    return $a['total'] &amp;lt; $b['total']?1:-1;
}); 
&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;foreach ( $author_posts as $key =&amp;gt; $author_post ) {
    echo $author_post['label'].&quot;&amp;lt;/br&amp;gt;&quot;;
}
&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;pre&gt;&lt;code&gt;$authors = get_users(array(
    'who' =&amp;gt; 'authors',
    'has_published_posts' =&amp;gt; array('song','poem'),
    'orderby' =&amp;gt; 'post_count',
    'order' =&amp;gt; 'DESC',
    'number' =&amp;gt; '15'
));

$author_posts = array();

foreach ($authors as $user) {
    $name = $user-&amp;gt;first_name . ' ' . $user-&amp;gt;last_name;
    $songs = count_user_posts($user-&amp;gt;ID, $post_type = &quot;song&quot;);
    $poems = count_user_posts($user-&amp;gt;ID, $post_type = &quot;poem&quot;);
    $author_posts[] = array(
        'total' =&amp;gt; $songs+$poems,
        'label' =&amp;gt; $name.' has '. $songs .' songs, and '. $poems .' poems'
    );
}

usort($author_posts, function($a, $b) {
    if($a['total']==$b['total']) return 0;
    return $a['total'] &amp;lt; $b['total']?1:-1;
}); 

foreach ( $author_posts as $key =&amp;gt; $author_post ) {
    echo $author_post['label'].&quot;&amp;lt;/br&amp;gt;&quot;;
}
&lt;/code&gt;&lt;/pre&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;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;먼저 함수 &lt;em papago-id=&quot;17-3&quot;&gt;get_users()&lt;/em&gt;의 인수에 &lt;em papago-id=&quot;17-1&quot;&gt;의한&lt;/em&gt; 순서는 &lt;em papago-id=&quot;17-5&quot;&gt;post_count&lt;/em&gt;와 함께 작동하지만 모든 포스트 유형(여기서는 &lt;em papago-id=&quot;17-7&quot;&gt;시&lt;/em&gt;, &lt;em papago-id=&quot;17-9&quot;&gt;노래&lt;/em&gt; 및 &lt;em papago-id=&quot;17-11&quot;&gt;포스트&lt;/em&gt; 또는 페이지와 같은 &lt;em papago-id=&quot;17-13&quot;&gt;다른&lt;/em&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;a href=&quot;https://developer.wordpress.org/reference/classes/wpdb/&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;18-1&quot;&gt;wpdb&lt;/a&gt; 클래스를 사용하여 자신의 요청을 설계하는 것을 추천합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이렇게 하면 한 번의 요청으로 원하는 정확한 결과를 얻을 수 있으며, 이후에 결과를 정렬할 &lt;em papago-id=&quot;18-3&quot;&gt;때&lt;/em&gt;마다 for를 사용할 필요가 없습니다.&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;/p&gt; 
&lt;pre&gt;&lt;code&gt;$authors = $wpdb-&amp;gt;get_results(
    &quot;SELECT
        $wpdb-&amp;gt;users.ID AS author_id,
        $wpdb-&amp;gt;users.display_name AS author_name,
        COUNT($wpdb-&amp;gt;posts.ID) AS published_songs_and_poems,
        COUNT(CASE WHEN $wpdb-&amp;gt;posts.post_type = 'song' THEN $wpdb-&amp;gt;posts.ID ELSE NULL END) as published_songs,
        COUNT(CASE WHEN $wpdb-&amp;gt;posts.post_type = 'poem' THEN $wpdb-&amp;gt;posts.ID ELSE NULL END) as published_poems
    FROM $wpdb-&amp;gt;users
    JOIN $wpdb-&amp;gt;posts
        ON $wpdb-&amp;gt;posts.post_author = $wpdb-&amp;gt;users.ID
        AND $wpdb-&amp;gt;posts.post_type IN('song', 'poem') AND $wpdb-&amp;gt;posts.post_status = 'publish'
    GROUP BY author_id
    ORDER BY published_songs_and_poems DESC&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;이 요청은 출판된 노래와 시의 총량에 따라 저자별, 순서별로 그룹화된 결과를 가진 개체를 반환합니다.&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;pre&gt;&lt;code&gt;array_walk($authors, function($author) {
    echo $author-&amp;gt;author_name.&quot; has published &quot;.$author-&amp;gt;published_songs.&quot; song(s) and &quot;.$author-&amp;gt;published_poems.&quot; poem(s).&amp;lt;br/&amp;gt;&quot;;
});
&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;em papago-id=&quot;22-1&quot;&gt;순서&lt;/em&gt;를 총 post_count로 반환하는 방법에 초점을 두었기 때문에 이 답변을 편집했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 @the King에 의해 언급되었을 때 명확히 밝혀졌습니다.&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;foreach&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;foreach ($authors as $user) {
   $name = $user-&amp;gt;first_name . ' ' . $user-&amp;gt;last_name;
   $songs = count_user_posts($user-&amp;gt;ID, &quot;songs&quot;);
   echo $name.' has '. $songs .' songs ';
}
&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;$post_type = &quot;songs&quot;&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;&quot;songs&quot;&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;a href=&quot;https://developer.wordpress.org/reference/functions/count_user_posts/&quot; papago-id=&quot;27-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;설명서&lt;/a&gt;를 참조하십시오.&lt;/font&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;strong papago-id=&quot;28-0&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;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;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;&amp;lt;?php wp_list_authors( $args ); ?&amp;gt; 



&amp;lt;?php $args = array(
'post_type'     =&amp;gt; 'custom_post_type',
'orderby'       =&amp;gt; 'post_count', 
'order'         =&amp;gt; 'DESC', 
'number'        =&amp;gt; null,
'optioncount'   =&amp;gt; false, 
'exclude_admin' =&amp;gt; true, 
'show_fullname' =&amp;gt; false,
'hide_empty'    =&amp;gt; true,
'echo'          =&amp;gt; true,
'style'         =&amp;gt; 'list',
'html'          =&amp;gt; true ); ?&amp;gt; 
&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;a href=&quot;https://wordpress.org/plugins/query-monitor/&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;30-1&quot;&gt;나&lt;/a&gt;는 쿼리 모니터 플러그인을 사용해서 이것을 공격할 것입니다.&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;하나는 다른 플러그인에 의해 쿼리가 변경되고 있다는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다른 하나는 쿼리는 괜찮지만 post_count가 사용자가 예상하는 것이 아니라는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&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;/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;/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;쿼리가 변경된 경우 범인을 찾을 때까지 플러그인 비활성화를 시작합니다.&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;쿼리가 올바른 경우 복사한 후 데이터베이스(phpmyadmin 또는 사용하는 모든 것)로 이동하여 직접 실행합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&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;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/64699249/get-wordpress-authors-in-order-by-the-number-of-custom-posts-published&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>WordPress</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/988</guid>
      <comments>https://itgroup.tistory.com/988#entry988comment</comments>
      <pubDate>Fri, 20 Oct 2023 13:35:00 +0900</pubDate>
    </item>
    <item>
      <title>MySQL - 표의 id 필드에 상대가 없는 숫자 목록에서 선택</title>
      <link>https://itgroup.tistory.com/987</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;MySQL - 표의 id 필드에 상대가 없는 숫자 목록에서 선택&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;숫자 목록이 있어요, 예를 들어 {2,4,5,6,7} 테이블, 푸스, 푸스가 있어요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;{1,2,3,4,8,9}과 같은 ID&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;제 번호 목록을 가져가서 제 표의 ID 필드에서 상대방이 없는 번호를 찾고 싶습니다.&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;이를 달성하기 위한 한 가지 방법은 ID 필드에 {2,4,5,6,7}이(가) 로드된 테이블 막대를 만드는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러면 저는.&lt;/font&gt;&lt;/p&gt; 
&lt;pre 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;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;ID가 NULL입니다.&lt;/font&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;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;font class=&quot;papago-parent&quot;&gt;이 문제에 대한 SQL 솔루션은 상당히 어색합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;파생된 표를 사용한 한 가지 예:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SELECT n.id
FROM
  (SELECT 2 AS id 
   UNION SELECT 3 
   UNION SELECT 4 
   UNION SELECT 5 
   UNION SELECT 6 
   UNION SELECT 7) AS n
  LEFT OUTER JOIN foos USING (id)
WHERE foos.id IS NULL;
&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 class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 6개가 아니라 많은 값을 가질 수 있기 때문에 이는 확장성이 좋지 않습니다.&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;UNION&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;10&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;CREATE TABLE num (i int);
INSERT INTO num (i) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);

SELECT n.id
FROM 
  (SELECT n1.i + n10.i*10 AS id
   FROM num AS n1 CROSS JOIN num AS n10
   WHERE n1.i + n10.i*10 IN (2, 3, 4, 5, 6, 7)) AS n
  LEFT OUTER JOIN foos USING (id)
WHERE foos.id IS NULL;
&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 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;0에서 값을 생성하는 내부 쿼리를 보여 줍니다.&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;99 이것이 이 사건에 필요하지는 않지만요.&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;그러나 목록에서 10보다 큰 값을 가질 수도 있습니다.&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;num&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;UNION&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 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;/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;SELECT bars.* FROM bars WHERE bars.ID NOT IN (SELECT ID FROM foos)
&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;SELECT * FROM foos WHERE foos.ID NOT IN (2, 4, 5, 6, 7)
&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;p papago-id=&quot;17&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;SELECT ID FROM foos WHERE foos.ID IN (2, 4, 5, 6, 7)
&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;PHP의 array_diff() 함수를 이용하여 원하는 결과로 변환할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;만약 당신의 리스트(2,4,5,6,7)가 $list라고 불리는 배열에 있고 위의 쿼리의 결과가 배열 $result에 있다면,&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$no_counterparts = array_diff($list, $result);
&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;이 솔루션이 쿼리 내에서 전체 작업을 수행하는 것은 아니지만 PHP에서 수행해야 하는 후처리는 원하는 작업을 수행하기에 최소한이며 임시 테이블을 생성할 필요가 없도록 하는 것이 가치가 있을 수 있습니다.&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 class=&quot;papago-parent&quot;&gt;자동 증가 기본 키에 누락된 값이 있는 범위가 있어서 먼저 몇 개인지 알아냈습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;select count(*) from node where nid &amp;gt; 1962&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;code&gt;select n2.nid from node n1 right join node n2 on n1.nid = (n2.nid - 1) where n1.nid is null and n2.nid &amp;gt; 1962&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 class=&quot;papago-parent&quot;&gt;연속된 것은 표시되지 않으며, ON 절을 위도가 더 높을 수 있도록 변경하는 것 외에 어떻게 해야 할지 완전히 확신할 수 없습니다(JOIN 테이블이 상당히 커짐).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;어쨌든 이로써 총 7명의 실종자 중 5명의 결과가 나왔고, 나머지 2명은 5명 중 적어도 1명 다음으로 보장되었습니다.&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;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Alnitak의 (그리고 당신의) 솔루션은 효과가 있을 것이고, SQL 언어로만 작동할 수 있는 다른 것에 대해서는 저는 아무것도 할 수 없습니다.&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;이런 종류의 조작에 더 적합한 언어로 사용될 수 있는, 즉 ID를 요청하고 콜링 코드에서 비교하는 것이 더 낫지 않습니까?&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 class=&quot;papago-parent&quot;&gt;이전 게시물은 MySQL 8 이전 게시물입니다. MySQL은&lt;/font&gt;&lt;/font&gt;&lt;code&gt;value&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;버전 8.0.19 이후로 질문은 매우 우아하게 해결될 수 있습니다.&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;code&gt;CTE&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;MySQL 8.0 이후에도 사용 가능합니다.&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;strong papago-id=&quot;12-0&quot;&gt;1단계&lt;/strong&gt;: CTE와 value statement를 결합하여 표와 비교할 필요가 있는 값으로 행 집합을 만듭니다(여기서 표는&lt;/font&gt;&lt;/font&gt;&lt;code&gt;foo&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;pre&gt;&lt;code&gt;with MyValues(val) as
(
  values row(2),row(4),row(5),row(6),row(7)
)
&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;strong papago-id=&quot;14-0&quot;&gt;2단계&lt;/strong&gt;: 외부에서 테이블과 함께 CTE를 결합합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;foo&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;외부 조인 후 CTE에서 null 값을 가지는 행을 필터링합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;foo&lt;/code&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;WITH myvalues(val)
     AS (VALUES ROW(2), ROW(4), ROW(5), ROW(6), ROW(7))
SELECT f.id
FROM   foo f
       LEFT OUTER JOIN myvalues m
                    ON f.id = m.val
WHERE  m.val IS NULL; 
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;33&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;mysql&amp;gt; WITH myvalues(val)
    -&amp;gt;      AS (VALUES ROW(2), ROW(4), ROW(5), ROW(6), ROW(7))
    -&amp;gt; SELECT f.id
    -&amp;gt; FROM   foo f
    -&amp;gt;        LEFT OUTER JOIN myvalues m
    -&amp;gt;                     ON f.id = m.val
    -&amp;gt; WHERE  m.val IS NULL;
+------+
| id   |
+------+
|    1 |
|    3 |
|    8 |
|    9 |
+------+
4 rows in set (0.00 sec)

&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;또는 IN 절을 사용합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;mysql&amp;gt; WITH myvalues(val)
    -&amp;gt;      AS (VALUES ROW(2), ROW(4), ROW(5), ROW(6), ROW(7))
    -&amp;gt; SELECT f.id
    -&amp;gt; FROM   foo f
    -&amp;gt; WHERE  id NOT IN (SELECT val
    -&amp;gt;                   FROM   myvalues);
+------+
| id   |
+------+
|    1 |
|    3 |
|    8 |
|    9 |
+------+
4 rows in set (0.00 sec)
&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;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/273623/mysql-select-from-a-list-of-numbers-those-without-a-counterpart-in-the-id-fiel&lt;/font&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <category>MySQL</category>
      <author>itgroup</author>
      <guid isPermaLink="true">https://itgroup.tistory.com/987</guid>
      <comments>https://itgroup.tistory.com/987#entry987comment</comments>
      <pubDate>Fri, 20 Oct 2023 13:34:52 +0900</pubDate>
    </item>
  </channel>
</rss>