<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>copysource</title>
    <link>https://copysource.tistory.com/</link>
    <description>각종 프로그래밍 정보를 다루는 블로그입니다.</description>
    <language>ko</language>
    <pubDate>Sat, 27 Jun 2026 09:40:36 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>copysource</managingEditor>
    <item>
      <title>jQuery .load() / .ajax()가 추가된 후 반환된 HTML에서 Javascript를 실행하지 않음</title>
      <link>https://copysource.tistory.com/462</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;jQuery .load() / .ajax()가 추가된 후 반환된 HTML에서 Javascript를 실행하지 않음&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;.load()&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;$.ajax&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;컨테이너에 추가해야 하는 HTML을 가져오지만 요소에 추가할 때 반환된 HTML 내의 Javascript가 실행되지 않습니다.&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;.load()&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;pre&gt;&lt;code&gt;$('#new_content').load(url+' #content &amp;gt; *',function() {
    alert('returned');
});
&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;저도 $.Ajax 전화로 바꿔봤어요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 반환된 HTML에서 스크립트를 추출한 후 컨테이너에 추가했지만 같은 문제로 JS가 실행되지 않거나 심지어 추가되지도 않고 있으며, 제가 이해하는 대로 추가하려고 합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;눈살을 찌푸리게 하는 DOM 요소에?&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;$.ajax&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;$.ajax({ url: url }).done(function(response) {
    var source  = $(&quot;&amp;lt;div&amp;gt;&quot;).html(response).find('#overview_script').html();
    var content = $(&quot;&amp;lt;div&amp;gt;&quot;).html(response).find('#content').html();

    $('#new_content').html(content);
    $('&amp;lt;script&amp;gt;').appendTo('#new_content').text(source).html();

});
&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;HTML을 추가한 후 콜백에서 이 Javascript를 실행하는 것이 이상적이지만 변수는 컨트롤러에서 반환되는 값으로 설정됩니다.&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;그래서 요약하자면, 저는 그 HTML이 추가된 후에 실행되어야 하는 JS가 포함된 HTML을 얻으려고 노력하고 있지만, 저는 사용할 수 없었습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.load()&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;$.ajax()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;반환된 HTML의 스크립트가 추가될 때 사라지거나 전혀 실행되지 않기 때문입니다.&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&gt;&lt;code&gt;load()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;fragment selector와 함께 사용하면 fragment가 추가되기 전에 스크립트 요소가 제거되므로 &lt;a href=&quot;http://plnkr.co/edit/Hj0cyTUV44BPrxiOvPpW?p=preview&quot; papago-id=&quot;15-1&quot;&gt;스크립트가 실행되지 않습니다&lt;/a&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;접미사가 붙은 선택기 식을 사용하지 않고 URL을 사용하여 .load()를 호출하면 스크립트가 제거되기 전에 내용이 .html()로 전달됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이렇게 하면 스크립트 블록이 삭제되기 전에 실행됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 URL에 선택기 식을 추가하여 .load()를 호출하면 DOM이 업데이트되기 전에 스크립트가 제거되므로 실행되지 않습니다.&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;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;소트라이&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$.get('partial.html', function(result){
    $result = $(result);

    $result.find('#content').appendTo('#new_content');
    $result.find('script').appendTo('#new_content');
}, 'html');
&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;a href=&quot;http://plnkr.co/edit/Hj0cyTUV44BPrxiOvPpW?p=preview&quot; papago-id=&quot;18-1&quot;&gt;피들&lt;/a&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;실행할 스크립트가 무엇인지 알고 있으면 다른 곳에서 Ajax 응답으로 스크립트를 정의한 다음 콜백에서 호출할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 대신에:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$('#new_content').load(url+' #content &amp;gt; *',function() {alert('returned');});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$('#new_content').load(url+' #content &amp;gt; *',function() {my_function(my_param);});
&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;$('#new_content').append($('&amp;lt;script&amp;gt;').html(source));
&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;$.getScript(&quot;url to js file&quot;);
&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;eval(source); 
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/16352371/&lt;a href=&quot;https://stackoverflow.com/questions/16352371/jquery-load-ajax-not-executing-javascript-in-returned-html-after-appende&quot; target=&quot;_blank&quot; papago-id=&quot;24-1&quot;&gt;jquery-load-ajax-not-executing-javascript-in-returned-html-after-appende&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/462</guid>
      <comments>https://copysource.tistory.com/462#entry462comment</comments>
      <pubDate>Wed, 23 Aug 2023 23:58:41 +0900</pubDate>
    </item>
    <item>
      <title>MariaDB SQL 쿼리가 select 문에서 잘린 숫자를 반환합니다.</title>
      <link>https://copysource.tistory.com/461</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;MariaDB SQL 쿼리가 select 문에서 잘린 숫자를 반환합니다.&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Maria DB에서 데이터를 가져오려고 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;스키마의 데이터 유형은 DECIMAL(12, 8)입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음 쿼리를 사용하여 쿼리할 때 프로그램에 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;소수점 이하 4자리(또는 3자리)까지 자르기도 하고 반올림하기도 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;select CAST(FORMAT(latitude, 100) AS FLOAT) latitude from mytable
&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;36.173을 반환합니다. DB에는 36.17298200으로 저장되어 있습니다. 저는 36.172982로 반환하기를 원합니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;계산에 숫자를 사용하려면 숫자를 사용하면 됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;변환 안 함, 안 함&lt;/font&gt;&lt;/font&gt;&lt;code&gt;CAST&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;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;소수점 이하 6자리로 &lt;em papago-id=&quot;2-1&quot;&gt;표시&lt;/em&gt;하려면 다음을 수행합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;SELECTing&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;pre&gt;&lt;code&gt;SELECT FORMAT(latitude, 6) ...
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;code&gt;FORMAT(..., 100)&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;code&gt;FLOAT&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;소수점 이하의 유의한 자리 수가 6개 또는 &lt;em papago-id=&quot;5-1&quot;&gt;7개&lt;/em&gt; 이상인지 구별하기에 충분한 정밀도를 가지고 있지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;즉, 여기에 있는 첫 번째와 세 번째 숫자는 에서 가장 가까운 대표 가능한 숫자입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;FLOAT&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;x4210b122 --&amp;gt; 36.172981262207
              36.17298200
x4210b123 --&amp;gt; 36.172985076904
&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;x40421624463065f9 --&amp;gt; 36.1729819999999975
&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;FLOAT  has a resolution of 1.7 m or 5.6 ft -- good enough for Vehicles
DECIMAL(8,6)               16 cm    1/2 ft -- Friends in a mall
&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;공식 MySQL 문서에 따르면:&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;DECTION 및 NUMBERICAL 유형에는 정확한 숫자 데이터 값이 저장됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이러한 유형은 화폐 데이터와 같이 정확한 정확성을 유지하는 것이 중요할 때 사용됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;MySQL에서는 NUMERICAL이 DECTICAL로 구현되므로 DECTICAL에 대한 다음 설명은 NUMERICAL에도 동일하게 적용됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;&lt;a href=&quot;https://dev.mysql.com/doc/refman/8.0/en/fixed-point-types.html&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;부동 소수점 유형(대략 값) - FLOAT, DOUBLE&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 다음과 유사한 내용을 작성해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;select CAST(FORMAT(latitude, 100) AS DECIMAL(8,6)) latitude from mytable
&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;8은 총 자릿수이고 6은 정밀도입니다.&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/64037536/&lt;a href=&quot;https://stackoverflow.com/questions/64037536/mariadb-sql-query-returns-truncated-numbers-from-select-statement&quot; target=&quot;_blank&quot; papago-id=&quot;17-1&quot;&gt;mariadb-sql-query-returns-truncated-numbers-from-select-statement&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/461</guid>
      <comments>https://copysource.tistory.com/461#entry461comment</comments>
      <pubDate>Wed, 23 Aug 2023 23:57:10 +0900</pubDate>
    </item>
    <item>
      <title>Spring Cloud - SQS - 이 wsdl 버전에 대해 지정한 대기열이 없습니다.</title>
      <link>https://copysource.tistory.com/460</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Spring Cloud - SQS - 이 wsdl 버전에 대해 지정한 대기열이 없습니다.&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;나는 자동 구성을 사용하여 메시지로 스프링 클라우드를 작동시키려고 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내 속성 파일에는 다음이 포함됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;cloud.aws.credentials.accessKey=xxxxxxxxxx
cloud.aws.credentials.secretKey=xxxxxxxxxx

cloud.aws.region.static=us-west-2
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내 구성 클래스는 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;@EnableSqs
@ComponentScan
@EnableAutoConfiguration
public class Application {


public static void main(String[] args) throws Exception {
    SpringApplication.run(Application.class, args);
  }
}
&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;@RestController
public class OrderListener {

    @MessageMapping(&quot;orderQueue&quot;)
    public void orderListener(Order order){

        System.out.println(&quot;Order Name &quot; + order.getName());
        System.out.println(&quot;Order Url&quot; + order.getUrl());

    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만, 제가 이걸 실행할 때는.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음 오류가 발생합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;org.springframework.context.ApplicationContextException: Failed to start bean        'simpleMessageListenerContainer'; nested exception is     org.springframework.messaging.core.DestinationResolutionException: The specified queue does not exist for this wsdl version. (Service: AmazonSQS; Status Code: 400; Error Code: AWS.SimpleQueueService.NonExistentQueue; Request ID: cc8cb199-be88-5993-bd58-fca3c9f17110); nested exception is com.amazonaws.services.sqs.model.QueueDoesNotExistException: The specified queue does not exist for this wsdl version. (Service: AmazonSQS; Status Code: 400; Error Code: AWS.SimpleQueueService.NonExistentQueue; Request ID: cc8cb199-be88-5993-bd58-fca3c9f17110)
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:176)
at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:51)
at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:346)
at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:149)
at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:112)
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:770)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:140)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:483)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:691)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:321)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:961)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:950)
at com.releasebot.processor.Application.main(Application.java:40)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

Caused by: org.springframework.messaging.core.DestinationResolutionException: The specified queue does not exist for this wsdl version. (Service: AmazonSQS; Status Code: 400; Error Code: AWS.SimpleQueueService.NonExistentQueue; Request ID: cc8cb199-be88-5993-bd58-fca3c9f17110); nested exception is com.amazonaws.services.sqs.model.QueueDoesNotExistException: The specified queue does not exist for this wsdl version. (Service: AmazonSQS; Status Code: 400; Error Code: AWS.SimpleQueueService.NonExistentQueue; Request ID: cc8cb199-be88-5993-bd58-fca3c9f17110)
at org.springframework.cloud.aws.messaging.support.destination.DynamicQueueUrlDestinationResolver.resolveDestination(DynamicQueueUrlDestinationResolver.java:81)
at org.springframework.cloud.aws.messaging.support.destination.DynamicQueueUrlDestinationResolver.resolveDestination(DynamicQueueUrlDestinationResolver.java:37)
at org.springframework.messaging.core.CachingDestinationResolverProxy.resolveDestination(CachingDestinationResolverProxy.java:88)
at org.springframework.cloud.aws.messaging.listener.AbstractMessageListenerContainer.start(AbstractMessageListenerContainer.java:300)
at org.springframework.cloud.aws.messaging.listener.SimpleMessageListenerContainer.start(SimpleMessageListenerContainer.java:38)
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:173)
... 18 common frames omitted
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다른 사람이 이걸 발견했나요?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;어떤 도움이라도 주시면 대단히 감사하겠습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 오류는 지정된 대기열 &lt;em papago-id=&quot;7-1&quot;&gt;순서&lt;/em&gt; 큐가 &lt;em papago-id=&quot;7-3&quot;&gt;us-west-2&lt;/em&gt; 영역에 없음을 의미합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그냥 만들면 됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그나저나, 추가할 필요가 없습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;_@EnableSqs_&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;_@EnableAutoConfiguration_&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 papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이름 대신 대기열의 URL을 사용해 보십시오.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;알랭의 대답은 정확합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 오류는 us-west-2 영역에 큐가 없음을 나타냅니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;AWS Java SDK에서 us-east-1을 기본 영역으로 사용하기 때문일 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;AWS 설명서 http://docs.aws.amazon.com/java-sdk/latest/developer-guide/&lt;a href=&quot;http://docs.aws.amazon.com/java-sdk/latest/developer-guide/java-dg-region-selection.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;12-1&quot;&gt;java-dg-region-selection&lt;/a&gt;.html 에서 확인할 수 있습니다.&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;코드에 영역을 지정하지 않으면 Java용 AWS SDK에서 us-east-1을 기본 영역으로 사용합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 AWS 관리 콘솔은 us-west-2를 기본값으로 사용합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 개발과 함께 AWS Management Console을 사용할 때는 코드와 콘솔 모두에서 동일한 영역을 지정해야 합니다.&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;/font&gt;&lt;/font&gt;&lt;code&gt;setRegion()&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;setEndpoint()&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;AmazonSQSClient&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;a href=&quot;http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/sqs/AmazonSQS.html#setEndpoint-java.lang.String-&quot; papago-id=&quot;17-1&quot; rel=&quot;noreferrer&quot;&gt;object&lt;/a&gt;. http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/sqs/AmazonSQS.html#setEndpoint-java.lang.String- 를 참조하십시오.&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;a href=&quot;http://docs.aws.amazon.com/general/latest/gr/rande.html#sqs_region&quot; rel=&quot;noreferrer&quot; papago-id=&quot;18-1&quot;&gt;지역&lt;/a&gt; 및 엔드포인트 목록은 http://docs.aws.amazon.com/general/latest/gr/rande.html#sqs_region 을 참조하십시오.&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;올바른 AWS 프로파일을 사용하고 있는지 확인합니다.&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;cat ~/.aws/credentials
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 다른 프로필을 설정할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;export AWS_PROFILE=&amp;lt;profile_name&amp;gt;
&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;default&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 papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;명령줄을 사용하여 &lt;em papago-id=&quot;23-1&quot;&gt;queue-url&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; A client error (AWS.SimpleQueueService.NonExistentQueue) occurred when calling the GetQueueUrl operation: The specified queue does not exist for this wsdl version.
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;실행해야 하는 항목:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$aws configure
&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;그리고 'Default region name[...]:' 프롬프트에서 내 큐가 속한 영역보다 더 많은 영역이 입력되었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 오류가 사라졌습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;구성을 다시 확인하십시오 ;)&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;같은 이름의 큐를 다시 만든 후에도 이 오류가 발생했습니다. 새 ARN이 연결될 때까지 얼마나 걸릴지 몰랐기 때문에 새 큐를 만드는 것이 즉시 해결책이었습니다.&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 class=&quot;papago-parent&quot;&gt;이 &quot;&quot; &quot; &quot; &quot; &quot; &quot; &quot; 를 하십시오.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;aws configure&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;지역을 us-east-1로 설정합니다.&lt;/font&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;제 경우에는 대기열 이름이 존재했지만 영역이 us-east-2로 설정되었기 때문에 여전히 해당 오류를 토하고 있었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;왜 그런지는 모르겠지만 지역을 us-east-1로 바꾸고 기본 지역으로 고쳐준 것 같습니다.&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;URL : https://stackoverflow.com/questions/28081182/&lt;a href=&quot;https://stackoverflow.com/questions/28081182/spring-cloud-sqs-the-specified-queue-does-not-exist-for-this-wsdl-version&quot; target=&quot;_blank&quot; papago-id=&quot;31-1&quot;&gt;spring-cloud-sqs-the-specified-queue-does-not-exist-for-this-wsdl-version&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/460</guid>
      <comments>https://copysource.tistory.com/460#entry460comment</comments>
      <pubDate>Wed, 23 Aug 2023 23:56:22 +0900</pubDate>
    </item>
    <item>
      <title>null을 확인하기 위한 select 문에서 MYSQL Case</title>
      <link>https://copysource.tistory.com/459</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;null을 확인하기 위한 select 문에서 MYSQL Case&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;MySQL 쿼리에서 통과할 경우:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;  case guides.Gud_Publish_Date 
     when null then &quot;Unscheduled&quot; 
     else &quot;Forth Coming Titles&quot; 
  end
&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;그러면 Gud_Publish_Date에도 값이 있더라도 모두 null로 간주됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;전체 SQL 문은&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SELECT guides.Gud_Id
    , guides.Gud_Image
    , guides.Gud_SubEditor
    , guides.Gud_Reprint_Status
    , guides.Gud_Publish_Date
    , guides.Gud_Img_Chk
    , guides.Gud_Published
    , guides.Gud_View
    , (
        CASE guides.Gud_Publish_Date
            WHEN NULL
                THEN &quot;Unscheduled&quot;
            ELSE &quot;Forth Coming Titles&quot;
            END
        ) AS Schedules
FROM guides
&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;IF&lt;/code&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SELECT guides.Gud_Id
    , guides.Gud_Image
    , guides.Gud_SubEditor
    , guides.Gud_Reprint_Status
    , guides.Gud_Publish_Date
    , guides.Gud_Img_Chk
    , guides.Gud_Published
    , guides.Gud_View
    , IF(guides.Gud_Publish_Date IS NULL,'Unscheduled','Forth Coming Titles') 
             AS Schedules
FROM guides
&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;CASE&lt;/code&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SELECT guides.Gud_Id
    , guides.Gud_Image
    , guides.Gud_SubEditor
    , guides.Gud_Reprint_Status
    , guides.Gud_Publish_Date
    , guides.Gud_Img_Chk
    , guides.Gud_Published
    , guides.Gud_View
    , (
        CASE 
            WHEN guides.Gud_Publish_Date IS NULL
            THEN 'Unscheduled'
            ELSE 'Forth Coming Titles'
        END
      ) AS Schedules
FROM guides
&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 class=&quot;papago-parent&quot;&gt;사용.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;COALESCE&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;pre&gt;&lt;code&gt;SELECT guides.Gud_Id
    , guides.Gud_Image
    , guides.Gud_SubEditor
    , guides.Gud_Reprint_Status
    , guides.Gud_Publish_Date
    , guides.Gud_Img_Chk
    , guides.Gud_Published
    , guides.Gud_View
    , CASE COALESCE(guides.Gud_Publish_Date, 0)
          WHEN 0 THEN 'Unscheduled'
                 ELSE 'Forth Coming Titles'
          END  AS Schedules
FROM guides
&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;guides.Gud_Publish_Date&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;날짜이기 때문에 할 수 있는 0 값을 사용할 수 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그렇지 않다면 0을 취할 수 없는 다른 값으로 변경할 수 있습니다. 아마도 당신이 가장 좋아하는 플로트는 다음과 같습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;3.1415&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또는 null 식별자&lt;/font&gt;&lt;/font&gt;&lt;code&gt;'null'&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;SELECT guides.Gud_Id
    , guides.Gud_Image
    , guides.Gud_SubEditor
    , guides.Gud_Reprint_Status
    , guides.Gud_Publish_Date
    , guides.Gud_Img_Chk
    , guides.Gud_Published
    , guides.Gud_View
    , (
        CASE WHEN guides.Gud_Publish_Date IS NULL
            THEN &quot;Unscheduled&quot;
            ELSE &quot;Forth Coming Titles&quot;
            END
        ) AS Schedules
FROM guides
&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;SELECT guides.Gud_Id
    , guides.Gud_Image
    , guides.Gud_SubEditor
    , guides.Gud_Reprint_Status
    , guides.Gud_Publish_Date
    , guides.Gud_Img_Chk
    , guides.Gud_Published
    , guides.Gud_View
    , coalesce((
        CASE guides.Gud_Publish_Date
            WHEN NULL
                THEN 'Unscheduled'
            ELSE 'Forth Coming Titles'
            END
        ), 'Unscheduled') AS Schedules
FROM guides
&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;URL : https://stackoverflow.com/questions/13339551/&lt;a href=&quot;https://stackoverflow.com/questions/13339551/mysql-case-in-select-statement-for-checking-null&quot; target=&quot;_blank&quot; papago-id=&quot;12-1&quot;&gt;mysql-case-in-select-statement-for-checking-null&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/459</guid>
      <comments>https://copysource.tistory.com/459#entry459comment</comments>
      <pubDate>Wed, 23 Aug 2023 23:55:09 +0900</pubDate>
    </item>
    <item>
      <title>R 프로그래밍 언어에서 ~ (틸드) 사용</title>
      <link>https://copysource.tistory.com/458</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;R 프로그래밍 언어에서 ~ (틸드) 사용&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;회귀 모델링에 대한 튜토리얼에서 다음 명령을 보았습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;myFormula &amp;lt;- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
&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;~&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(틸데) 사령부에서?&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&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;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;~&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;~&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;그래서 여러분은 영어로 &quot;&lt;em papago-id=&quot;5-1&quot;&gt;종은 세팔&lt;/em&gt; 길이,&lt;em papago-id=&quot;5-1&quot;&gt; 세팔 &lt;/em&gt;너비, &lt;em papago-id=&quot;5-1&quot;&gt;꽃잎 길이와 꽃잎 &lt;/em&gt;너비에 &lt;em papago-id=&quot;5-1&quot;&gt;달려&lt;/em&gt; 있다&quot;와 같은 말을 할 것입니다.&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;myFormula &amp;lt;-&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그 선의 일부는 공식을 저장합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;myFormula&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;R 코드의 다른 부분에서 사용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;hr&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;R에서 공식 객체의 다른 일반적인 용도&lt;/font&gt;&lt;/strong&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;lattice&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;a href=&quot;https://www.rdocumentation.org/packages/lattice/topics/B_00_xyplot&quot; rel=&quot;noreferrer&quot; papago-id=&quot;10-1&quot;&gt;사용하여 표시할 변수&lt;/a&gt;를 지정합니다.&lt;/font&gt;&lt;/font&gt;&lt;br&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;ggplot2&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;a href=&quot;https://www.rdocumentation.org/packages/ggplot2/topics/facet_wrap&quot; rel=&quot;noreferrer&quot; papago-id=&quot;12-1&quot;&gt;사용하여 표시할 패널을 지정&lt;/a&gt;합니다.&lt;/font&gt;&lt;/font&gt;&lt;br&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;dplyr&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;a href=&quot;https://cran.r-project.org/web/packages/lazyeval/vignettes/lazyeval.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;14-1&quot;&gt;비표준&lt;/a&gt; 평가에 사용합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;R은 다음을 정의합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;~&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 class=&quot;papago-parent&quot;&gt;공식에는 다양한 용도가 있지만 가장 일반적인 것은 회귀 분석일 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;library(datasets)
lm( myFormula, data=iris)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;code&gt;help(&quot;~&quot;)&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;help(&quot;formula&quot;)&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;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;그것이 어떻게 작동하는지 의논해 봅시다.&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;strong papago-id=&quot;23-1&quot;&gt;함수에 대한 바로&lt;/strong&gt; 가기라는 점에 유의하십시오.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;gt; `~`(lhs,rhs)
lhs ~ rhs
&amp;gt; lhs ~ rhs
lhs ~ rhs
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;24&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이는 예를 들어 사용할 때 유용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;apply&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;25&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;가문의 명령&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;둘째, &lt;strong papago-id=&quot;26-1&quot;&gt;공식을 텍스트&lt;/strong&gt;로 조작할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;oldform &amp;lt;- as.character(myFormula) # Get components
myFormula &amp;lt;- as.formula( paste( oldform[2], &quot;Sepal.Length&quot;, sep=&quot;~&quot; ) )
&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;strong papago-id=&quot;27-1&quot;&gt;목록&lt;/strong&gt;으로 조작할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;myFormula[[2]]
myFormula[[3]]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;28&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;마지막으로 공식을 사용하여 몇 가지 유용한 트릭이 있습니다(참조).&lt;/font&gt;&lt;/font&gt;&lt;code&gt;help(&quot;formula&quot;)&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;29&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;자세한 내용):&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;myFormula &amp;lt;- Species ~ . 
&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;예를 들어, 점은 &quot;아직 사용되지 않은 모든 변수&quot;를 의미하므로 위의 버전은 원래 버전과 동일합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 최종 모델 호출에 사용하는 data.frame을 살펴보고, data.frame에 존재하지만 공식에 명시적으로 언급되지 않은 변수를 확인하고, 점을 결측 변수로 바꿉니다.&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;code&gt;The tilde&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&gt;&lt;/font&gt;&lt;code&gt; separates the left side of a formula with the right side of the formula.&lt;/code&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;예를 들어, 선형 함수에서는 종속 변수와 독립 변수를 분리하고 &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;wages ~ years_of_education
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;34&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기서,&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;35&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그 말은,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Species&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;Sepal Length, Sepal Width, Petal Length and Petal Width&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;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/14976331/&lt;a href=&quot;https://stackoverflow.com/questions/14976331/use-of-tilde-in-r-programming-language&quot; target=&quot;_blank&quot; papago-id=&quot;38-1&quot;&gt;use-of-tilde-in-r-programming-language&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/458</guid>
      <comments>https://copysource.tistory.com/458#entry458comment</comments>
      <pubDate>Wed, 23 Aug 2023 23:53:18 +0900</pubDate>
    </item>
    <item>
      <title>변경 시 AJAX에서 Wicket 텍스트 상자 값 가져오기</title>
      <link>https://copysource.tistory.com/457</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;변경 시 AJAX에서 Wicket 텍스트 상자 값 가져오기&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;때 AJAX에 입력된 해야 .&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;onchange&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&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;component.getDefaultModelObject()&lt;/code&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;add(new TextField&amp;lt;String&amp;gt;(id, someModel)
    .add(new OnChangeAjaxBehavior(){

        private static final long serialVersionUID =
            2462233190993745889L;

        @Override
        protected void onUpdate(final AjaxRequestTarget target){

            // Maybe you want to update some components here?

            // Access the updated model object:
            final Object value = getComponent().getDefaultModelObject();
            // or:
            final String valueAsString =
                ((TextField&amp;lt;String&amp;gt;) getComponent()).getModelObject();
        }
    }));
&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&gt;&lt;code&gt;OnChangeAjaxBehavior&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;new AjaxFormComponentUpdatingBehavior(&quot;onchange&quot;){...}&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신이 단지 원한다면, 똑같이 작동할 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;onchange&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이벤트&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;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/5564634/&lt;a href=&quot;https://stackoverflow.com/questions/5564634/getting-a-wicket-text-boxs-value-in-an-ajax-onchange-event&quot; target=&quot;_blank&quot; papago-id=&quot;8-1&quot;&gt;getting-a-wicket-text-boxs-value-in-an-ajax-onchange-event&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/457</guid>
      <comments>https://copysource.tistory.com/457#entry457comment</comments>
      <pubDate>Wed, 23 Aug 2023 23:49:54 +0900</pubDate>
    </item>
    <item>
      <title>FileStreamResult가 스트림을 닫습니까?</title>
      <link>https://copysource.tistory.com/456</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;FileStreamResult가 스트림을 닫습니까?&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;a href=&quot;https://stackoverflow.com/questions/2129428/does-file-in-asp-net-mvc-close-the-stream&quot; papago-id=&quot;1-1&quot;&gt;asp.net 의 파일() mvc가 스트림을 닫습니까?&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 C# MVC 4에 다음과 같은 내용을 가지고 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;FileStream fs = new FileStream(pathToFileOnDisk, FileMode.Open);
FileStreamResult fsResult = new FileStreamResult(fs, &quot;Text&quot;);
return fsResult;
&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;fs&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;FileStreamResult&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;using&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;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음은 의 내부 &lt;a href=&quot;https://github.com/aspnet/AspNetWebStack/blob/master/src/System.Web.Mvc/FileStreamResult.cs&quot; rel=&quot;noreferrer&quot; papago-id=&quot;5-1&quot;&gt;구현&lt;/a&gt;입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;FileStreamResult&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;WriteFile 메서드:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;protected override void WriteFile(HttpResponseBase response)
{
    // grab chunks of data and write to the output stream
    Stream outputStream = response.OutputStream;
    using (FileStream)
    {
        byte[] buffer = new byte[BufferSize];

        while (true)
        {
            int bytesRead = FileStream.Read(buffer, 0, BufferSize);
            if (bytesRead == 0)
            {
                // no more data
                break;
            }

            outputStream.Write(buffer, 0, bytesRead);
        }
    }
}
&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;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/26275764/&lt;a href=&quot;https://stackoverflow.com/questions/26275764/does-filestreamresult-close-stream&quot; target=&quot;_blank&quot; papago-id=&quot;10-1&quot;&gt;does-filestreamresult-close-stream&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/456</guid>
      <comments>https://copysource.tistory.com/456#entry456comment</comments>
      <pubDate>Wed, 23 Aug 2023 23:46:40 +0900</pubDate>
    </item>
    <item>
      <title>배열의 항목을 PHP에서 쉼표로 구분된 문자열로 변환하는 방법은 무엇입니까?</title>
      <link>https://copysource.tistory.com/455</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;배열의 항목을 PHP에서 쉼표로 구분된 문자열로 변환하는 방법은 무엇입니까?&lt;/font&gt;&lt;/h2&gt;
&lt;div&gt; 
 &lt;aside class=&quot;s-notice s-notice__info post-notice js-post-notice mb16&quot; role=&quot;status&quot;&gt; 
  &lt;div class=&quot;d-flex fd-column fw-nowrap&quot;&gt; 
   &lt;div class=&quot;d-flex fw-nowrap&quot;&gt; 
    &lt;div class=&quot;flex--item wmn0 fl1 lh-lg&quot;&gt; 
     &lt;div class=&quot;flex--item fl1 lh-lg&quot;&gt; 
      &lt;div papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;
&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;b papago-id=&quot;1-1&quot;&gt;이 질문에는 이미 다음&lt;/b&gt;과 같은 답이 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;      &lt;/font&gt;&lt;/div&gt; 
     &lt;/div&gt; 
    &lt;/div&gt; 
   &lt;/div&gt; 
   &lt;div class=&quot;flex--item mb0 mt8&quot; papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;
&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;마감됨&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;span class=&quot;relativetime&quot; papago-id=&quot;2-1&quot; title=&quot;2013-01-30 23:25:59Z&quot; papago-attr-id=&quot;1&quot;&gt;10년 전&lt;/span&gt;에.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;   &lt;/font&gt;&lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/aside&gt; 
&lt;/div&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;중복 가능성:&lt;/font&gt;&lt;/strong&gt;&lt;br&gt; &lt;a href=&quot;https://stackoverflow.com/questions/2435216/how-to-create-comma-separated-list-from-array-in-php&quot; papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;PHP에서 배열에서 쉼표로 구분된 목록을 만드는 방법은 무엇입니까?&lt;/font&gt;&lt;/a&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;이 배열이 지정된 경우:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$tags = array('tag1','tag2','tag3','tag4','...');
&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;PHP를 사용하여 이 문자열을 생성하는 방법:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$tags = 'tag1, tag2, tag3, tag4, ...';
&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;a href=&quot;http://php.net/implode&quot; rel=&quot;noreferrer&quot; papago-id=&quot;7-1&quot;&gt;inplode&lt;/a&gt; 사용:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; $tags = implode(', ', array('tag1','tag2','tag3','tag4'));
&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;a href=&quot;http://uk.php.net/manual/en/function.implode.php&quot; papago-id=&quot;8-1&quot;&gt;예&lt;/a&gt;, 인플로드를 사용하여 이 작업을 수행할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$string = implode(', ', $tags);
&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;a href=&quot;http://uk.php.net/manual/en/function.join.php&quot; papago-id=&quot;9-3&quot;&gt;불리는&lt;/a&gt; &lt;em papago-id=&quot;9-1&quot;&gt;내폭&lt;/em&gt;의 별칭이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$string = join(', ', $tags);
&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;em papago-id=&quot;10-1&quot;&gt;이름&lt;/em&gt;을 가지고 있기 때문에 나는 폭발보다는 join을 더 많이 사용하는 경향이 있습니다 (더 자기 설명적인 이름 :D )&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;배열에 PHP &lt;a href=&quot;http://php.net/manual/en/function.implode.php&quot; papago-id=&quot;11-1&quot;&gt;함수&lt;/a&gt; 인플로데를 사용&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$mystring = implode(', ',$tags)
&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;$tags = implode(&quot;, &quot;, $tags);
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/10936059/&lt;a href=&quot;https://stackoverflow.com/questions/10936059/how-to-convert-items-in-array-to-a-comma-separated-string-in-php&quot; target=&quot;_blank&quot; papago-id=&quot;13-1&quot;&gt;how-to-convert-items-in-array-to-a-comma-separated-string-in-php&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/455</guid>
      <comments>https://copysource.tistory.com/455#entry455comment</comments>
      <pubDate>Wed, 23 Aug 2023 23:43:33 +0900</pubDate>
    </item>
    <item>
      <title>제한이 있는 수많은 쿼리의 &amp;quot;교차&amp;quot;를 가져오기 위한 MySQL 쿼리</title>
      <link>https://copysource.tistory.com/453</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제한이 있는 수많은 쿼리의 &quot;교차&quot;를 가져오기 위한 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;다음 필드가 있는 단일 mySQL 테이블(사용자)이 있다고 가정합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;userid  
gender  
region  
age  
ethnicity  
income
&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;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;가장 단순한 예에서, 그들은 1,000개의 레코드를 요구할 수 있습니다. 여기서 600개의 레코드는 성별 = '남성'이고 400개의 레코드는 성별 = '여성'입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것은 충분히 간단합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;자, 이제 한 걸음 더 나아가세요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이제 지역을 지정하려고 한다고 가정합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;GENDER  
    Male:   600 records  
    Female: 400 records  

REGION  
    North:  100 records  
    South:  200 records  
    East:   300 records  
    West:   400 records
&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;다시 1000개의 기록만 반환해야 하지만, 결국에는 남자 600명, 여자 400명, 북부 100명, 남부 200명, 동부 300명, 서부 400명이 되어야 합니다.&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;SQL 코드는 제가 하려는 일을 설명해 줍니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;(SELECT * FROM users WHERE gender = 'Male' LIMIT 600  
UNION  
SELECT * FROM users WHERE gender = 'Female' LIMIT 400)

INTERSECT

(SELECT * FROM users WHERE region = 'North' LIMIT 100  
UNION  
SELECT * FROM users WHERE region = 'South' LIMIT 200  
UNION  
SELECT * FROM users WHERE region = 'East' LIMIT 300  
UNION  
SELECT * FROM users WHERE region = 'West' LIMIT 400)
&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;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;상황을 더 복잡하게 만들려면 이제 기준을 더 추가합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 연령, 민족 및 소득이 각각 그룹별로 설정된 레코드 수와 위에 추가된 추가 코드가 있을 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;INTERSECT

(SELECT * FROM users WHERE age &amp;gt;= 18 and age &amp;lt;= 24 LIMIT 300  
UNION  
SELECT * FROM users WHERE age &amp;gt;= 25 and age &amp;lt;= 36 LIMIT 200  
UNION  
SELECT * FROM users WHERE age &amp;gt;= 37 and age &amp;lt;= 54 LIMIT 200  
UNION  
SELECT * FROM users WHERE age &amp;gt;= 55 LIMIT 300)  

INTERSECT

etc.
&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;h2 papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기준 완화&lt;/font&gt;&lt;/h2&gt; 
&lt;hr&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;img src=&quot;https://i.stack.imgur.com/nIid7.png&quot; alt=&quot;enter image description here&quot;&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;(SELECT * FROM users WHERE gender = 'Male' AND region = 'North' LIMIT 40) UNION ALL
(SELECT * FROM users WHERE gender = 'Male' AND region = 'South' LIMIT 80) UNION ALL
(SELECT * FROM users WHERE gender = 'Male' AND region = 'East' LIMIT 120) UNION ALL
(SELECT * FROM users WHERE gender = 'Male' AND region = 'West' LIMIT 160) UNION ALL
(SELECT * FROM users WHERE gender = 'Female' AND region = 'North' LIMIT 60) UNION ALL
(SELECT * FROM users WHERE gender = 'Female' AND region = 'South' LIMIT 120) UNION ALL
(SELECT * FROM users WHERE gender = 'Female' AND region = 'East' LIMIT 180) UNION ALL
(SELECT * FROM users WHERE gender = 'Female' AND region = 'West' LIMIT 240)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;문제&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li 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;예를 들어, 북쪽에서 온 남성 사용자가 40명 미만인 경우 쿼리는 1,000개 미만의 레코드를 반환합니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr&gt; 
&lt;h2 papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기준 조정&lt;/font&gt;&lt;/h2&gt; 
&lt;hr&gt; 
&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;남성과 북부 출신의 사용자가 40명 미만이라고 가정해 보겠습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 &quot;남성&quot;과 &quot;북부&quot;의 누락된 수량을 커버할 수 있도록 다른 기준 수량을 조정해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 bare SQL로는 불가능하다고 생각합니다.&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;conditions.add({ gender: 'Male',   region: 'North', limit: 40  })
conditions.add({ gender: 'Male',   region: 'South', limit: 80  })
conditions.add({ gender: 'Female', region: 'North', limit: 60  })
conditions.add({ gender: 'Female', region: 'South', limit: 120  })

foreach(conditions as condition) {
    temp = getResultFromDatabaseByCondition(condition)
    conditions.remove(condition)

    // there is not enough result for this condition,
    // increase other condition quantity
    if (temp.length &amp;lt; condition.limit) {
        adjust(...);
    }
}
&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;북부 남성이 30명밖에 없다고 치자.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 우리는 +10 수컷과 +10 북쪽을 조정해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;To Adjust
---------------------------------------------------
Male        +10
North       +10

Remain Conditions
----------------------------------------------------
{ gender: 'Male',   region: 'South', limit: 80 }
{ gender: 'Female', region: 'North', limit: 60  }
{ gender: 'Female', region: 'South', limit: 120  }
&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;+10만큼 증가시키고 &quot;잔류 조건&quot; 목록에서 제거합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;우리가 남쪽을 늘렸기 때문에 다른 조건에서 다시 줄여야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 &quot;남부&quot; 조건을 &quot;조정할&quot; 목록에 추가합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;To Adjust
---------------------------------------------------
South       -10
North       +10

Remain Conditions
----------------------------------------------------
{ gender: 'Female', region: 'North', limit: 60  }
{ gender: 'Female', region: 'South', limit: 120  }

Final Conditions
----------------------------------------------------
{ gender: 'Male',   region: 'South', limit: 90 }
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;'남쪽'과 일치하는 조건을 찾고 동일한 프로세스를 반복합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;To Adjust
---------------------------------------------------
Female      +10
North       +10

Remain Conditions
----------------------------------------------------
{ gender: 'Female', region: 'North', limit: 60  }

Final Conditions
----------------------------------------------------
{ gender: 'Female', region: 'South', limit: 110  }
{ gender: 'Male',   region: 'South', limit: 90 }
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 마지막으로&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;{ gender: 'Female', region: 'North', limit: 70  }
{ gender: 'Female', region: 'South', limit: 110  }
{ gender: 'Male',   region: 'South', limit: 90 }
&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;font class=&quot;papago-parent&quot;&gt;구현 방법을 알게 되면 업데이트하겠습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신이 설명하는 문제는 다차원 모델링 문제입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;특히 여러 차원을 따라 계층화된 표본을 동시에 얻으려고 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것의 핵심은 가장 작은 수준의 세분화로 내려가서 거기서 샘플을 구축하는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 당신이 모든 수준에서 표본이 대표적이기를 원한다고 생각합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;즉, &quot;North&quot;의 모든 사용자가 여성인 것은 아닙니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;아니면 모든 &quot;남성&quot;이 &quot;서부&quot; 출신일 수도 있습니다. 비록 그것이 최종 기준을 충족하더라도 말입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;각 차원의 총 레코드 수, 차원 및 할당에 대해 생각하는 것으로 시작합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어, 첫 번째 샘플의 경우 다음과 같이 생각합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;1000개의 레코드&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;2차원: 성별, 지역&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;성별 분할: 60%, 40%&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;28&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;지역 분할: 10%, 20%, 30%, 40%&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;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;숫자는 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li papago-id=&quot;30&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;북쪽, 수컷: 60&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;31&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;북, 여: 40&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;32&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;남, 남: 120&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;33&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;남,여:80&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;34&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;동쪽, 수컷: 180&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;35&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;동쪽, 여자: 120&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;36&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;서쪽, 남자: 240&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;37&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;서, 여: 160&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&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;p papago-id=&quot;39&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;각 셀의 숫자 계산은 매우 쉽습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;백분율에 총계를 곱한 값입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 &quot;동쪽, 여자&quot;는 30%*40%*1000%... Voila!&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;값은 120입니다.&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;/p&gt; 
&lt;ol&gt; 
 &lt;li papago-id=&quot;41&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;각 차원의 입력을 전체의 &lt;em papago-id=&quot;41-1&quot;&gt;백분율&lt;/em&gt;로 사용합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 각 차원을 따라 최대 100%까지 추가해야 합니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;42&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;각 셀에 대한 예상 백분율 표를 만듭니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 각 차원에 따른 백분율의 곱입니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;43&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예상 백분율에 전체 합계를 곱합니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;44&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;최종 쿼리는 아래에 요약되어 있습니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&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;cells&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;users&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;pre&gt;&lt;code&gt;select enumerated.*
from (select u.*,
             (@rn := if(@dims = concat_ws(':', dim1, dim2, dim3), @rn + 1,
                        if(@dims := concat_ws(':', dim1, dim2, dim3), 1, 1)
                       )
             ) as seqnum
      from users u cross join
           (select @dims = '', @rn := '') vars
      order by dim1, dim2, dim3, rand()
     ) enumerated join
     cells
     on enumerated.dims = cells.dims
where enuemrated.seqnum &amp;lt;= cells.expectedcount;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;48&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 솔루션의 개요입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&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;/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;실제로 이러한 유형의 다차원 계층화 표본 추출을 수행할 때 셀이 비어 있거나 너무 작을 위험이 있습니다.&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;font class=&quot;papago-parent&quot;&gt;추가할 레코드는 가장 필요한 치수에 따라 필요한 값과 일치하는 레코드입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 이 솔루션은 단순히 기준을 충족하기에 충분한 데이터가 있다고 가정합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;51&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;귀하의 요청의 문제는 제안된 숫자를 달성하는 데 사용할 수 있는 옵션이 엄청나게 많다는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-none prettyprint-override&quot;&gt;&lt;code&gt;       Male    Female    Sum
-----------------------------
North:  100         0    100      
South:  200         0    200
East:   300         0    300 
West:     0       400    400 
Sum:    600       400
-----------------------------
North:   99         1    100      
South:  200         0    200
East:   300         0    300 
West:     1       399    400 
Sum:    600       400
-----------------------------
....
-----------------------------
North:    0       100    100      
South:  200         0    200
East:     0       300    300 
West:   400         0    400 
Sum:    600       400
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;52&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;북쪽, 동쪽, 서쪽(남쪽은 항상 남성: 200)을 결합하는 것만으로도 제안된 숫자를 달성하는 방법에 대한 400가지 가능성을 얻을 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 각 &quot;클래스&quot;(&lt;em papago-id=&quot;52-1&quot;&gt;남성&lt;/em&gt;/북부 = &quot;&lt;em papago-id=&quot;52-3&quot;&gt;클래스&lt;/em&gt;&quot;)당 레코드 수가 제한적일 때는 더욱 복잡해집니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 최필요경이 할 수 .&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;MIN(COUNT(gender), COUNT(location))&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;위 표의 모든 셀에 대한 레코드입니다(상대 셀이 0인 경우).&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;55&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이는 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-none prettyprint-override&quot;&gt;&lt;code&gt;       Male    Female    
---------------------
North:  100       100      
South:  200       200
East:   300       300 
West:   400       400 
&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;AVAILABLE(gender, location)&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;58&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;특정 적합치를 찾는 것은 &lt;em papago-id=&quot;58-1&quot;&gt;반마법&lt;/em&gt; 제곱&lt;a href=&quot;https://en.wikipedia.org/w/index.php?title=Magic_square&amp;amp;oldid=636817947#Different_constraints&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;58-2&quot;&gt;[1][&lt;/a&gt;&lt;a href=&quot;https://mathworld.wolfram.com/SemimagicSquare.html&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;58-3&quot;&gt;2]&lt;/a&gt;에 가깝습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;59&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;math.stackexchange.com 에는 이에 대한 몇 가지 질문이 있습니다 [&lt;a href=&quot;https://math.stackexchange.com/a/316104/198607&quot; papago-id=&quot;59-1&quot;&gt;3][&lt;/a&gt;&lt;a href=&quot;https://math.stackexchange.com/a/69019/198607&quot; papago-id=&quot;59-2&quot;&gt;4].&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;60&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 이것들을 어떻게 구성할 &lt;a href=&quot;https://doi.org/10.1214/aos/1033066199&quot; papago-id=&quot;60-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;것인지&lt;/a&gt;에 대한 &lt;a href=&quot;https://doi.org/10.1214/aos/1033066199&quot; papago-id=&quot;60-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;논문&lt;/a&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;레코드가 충분하지만 이런 상황이 발생하지 않을 경우:&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-none prettyprint-override&quot;&gt;&lt;code&gt;       Male    Female    
---------------------
North:  100         0      
South:  200       200
East:   300         0 
West:   200       200 
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;62&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 반복적인 수조 위치를 선택하고 각 단계에서 비례적인 수의 남성/여성을 추가할 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li papago-id=&quot;63&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;M: 100(16%);&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;F: 0(0%)&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;64&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;M: 100(16%), F: 200(50%)&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;65&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;M: 400(66%), F: 200(50%)&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;M: 600(100%);&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;F: 400(100%)&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p papago-id=&quot;67&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 대략적인 결과만 제공되며, 이러한 결과를 검증한 후에는 결과를 몇 번 반복하고 각 범주의 카운트를 &quot;&lt;em papago-id=&quot;67-1&quot;&gt;충분히&lt;/em&gt; 양호&quot;&lt;em papago-id=&quot;67-1&quot;&gt;하도록&lt;/em&gt; 조정할 수 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;68&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 데이터베이스의 분포 지도를 만들고 샘플링 논리를 구현하는 데 사용할 것입니다.&lt;/font&gt;&lt;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;69&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;JSON을 사용하면 다음과 같이 보일 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;{&quot;gender&quot;:{
  &quot;Male&quot;:{
    &quot;amount&quot;:35600,
    &quot;region&quot;:{
      &quot;North&quot;:{
        &quot;amount&quot;:25000,
        &quot;age&quot;:{
          &quot;18&quot;:{
            &quot;amount&quot;:2400,
            &quot;ethnicity&quot;:{
              ...
              &quot;income&quot;:{
                ...
              }
            },
            &quot;income&quot;:{
              ...
              &quot;ethnicity&quot;:{
                ...
              }
            }
          },
          &quot;19&quot;:{
            ...
          },
          ...
          &quot;120&quot;:{
            ...
          }
        },
        &quot;ethnicity&quot;:{
          ...
        },
        &quot;income&quot;:{
          ...
        }
      },
      &quot;South&quot;:{
        ...
      },
      ...
    }
    &quot;age&quot;:{
      ...
    }
    &quot;ethnicity&quot;:{
      ...
    },
    &quot;income&quot;:{
      ...
    }
  },
  &quot;Female&quot;:{
    ...
  }
},
&quot;region&quot;:{
  ...
},
&quot;age&quot;:{
  ...
},
&quot;ethnicity&quot;:{
  ...
},
&quot;income&quot;:{
  ...
}}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;70&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 사용자는 선택합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;total 1000
   600 Male
   400 Female

   100 North
   200 South
   300 East
   400 West

   300 &amp;lt;20 years old
   300 21-29 years old
   400 &amp;gt;=30 years old
&lt;/code&gt;&lt;/pre&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;/p&gt; 
&lt;pre&gt;&lt;code&gt;male-north-u20: 1000*0.6*0.1*0.3=18
male-north-21to29: 18
male-north-o29: 24 (keep a track of rounding errors)
etc
&lt;/code&gt;&lt;/pre&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;/p&gt; 
&lt;pre&gt;&lt;code&gt;tmp.male.north.u20=getSumUnder(JSON.gender.Male.region.North.age,20) // == 10
tmp.male.north.f21to29=getSumBetween(JSON.gender.Male.region.North.age,21,29) // == 29
tmp.male.north.o29=getSumOver(JSON.gender.Male.region.north.age,29) // == 200
etc
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font 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; 것 (를 들어 남성..north) , 에 대해 에서 29male.north.u20에 대해 하게 사용하게 됩니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;첫 번째 실행 후 다른 영역에서 누락된 각 기준을 조정합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 래서처럼.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;tmp.male.south.u20+=8;tmp.male.south.f21to29-=8;&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&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;75&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것을 맞추는 것은 꽤 지루합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;76&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;결국 사소한 SQL 쿼리를 구성하는 데 사용할 수 있는 올바른 배포를 갖게 됩니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;77&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;첫 번째 단계에서 우리는 8개 변수의 방정식 시스템을 푼 다음 1단계에서 발견된 솔루션에 의해 제한된 8개 선택 문의 분리된 결합을 취합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;모든 행에는 8개의 가능성만 있습니다.&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;X1 equal the number of rows that are male and from the north, 
X2 equal the number of rows that are male and from the south,
X3 equal the number of rows that are male and from the east,
X4 equal then number that are male and from the west 
X5 equal the number of rows that are female and from the north, 
X6 equal the number of rows that are female and from the south,
X7 equal the number of rows that are female and from the east,
X8 equal then number that are female and from the west 
&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; X1+X2+X3+X4=600
 X5+X6+X7+X8=400
 X1+X5=100
 X2+X6=200
 X3+X7=300
 X4+X8=400
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;79&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이제 X1, X2에 대해 해결합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;위의 X8.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;여러 가지 솔루션이 있습니다(잠시 후에 해결 방법을 설명하겠습니다). 솔루션은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;X1=60, X2=120, X3=180,X4=240,X5=40,X6=80,X7=120,X8=160.
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;80&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이제 8개의 선택 항목을 조합하여 결과를 얻을 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;(select * from user where  gender='m' and region=&quot;north&quot; limit 60)
union distinct(select * from user where  gender='m' and region='south' limit 120)
union distinct(select * from user where  gender='m' and region='east' limit 180)
union distinct(select * from user where  gender='m' and region='west' limit 240)
union distinct(select * from user where  gender='f' and region='north' limit 40)
union distinct(select * from user where  gender='f' and region='south' limit 80)
union distinct(select * from user where  gender='f' and region='east' limit 120)
union distinct(select * from user where  gender='f' and region='west' limit 160);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;81&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;데이터베이스에 60개의 행이 없는 경우 위의 첫 번째 선택을 충족하면 지정된 특정 솔루션이 작동하지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 우리는 다른 제약을 추가해야 합니다, LT:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;0&amp;lt;X1 &amp;lt;= (select count(*) from user where  from user where  gender='m' and region=&quot;north&quot;)
0&amp;lt;X2 &amp;lt;= (select count(*) from user where  gender='m' and region='south')
0&amp;lt;X3 &amp;lt;= (select count(*) from user where  gender='m' and region='east' )
0&amp;lt;X4 &amp;lt;= (select count(*) from user where  gender='m' and region='west')
0&amp;lt;X5 &amp;lt;= (select count(*) from user where  gender='f' and region='north' )
0&amp;lt;X6 &amp;lt;= (select count(*) from user where  gender='f' and region='south')
0&amp;lt;X7 &amp;lt;= (select count(*) from user where  gender='f' and region='east' )
0&amp;lt;X8 &amp;lt;= (select count(*) from user where  gender='f' and region='west');
&lt;/code&gt;&lt;/pre&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;방정식은 E:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; X1+X2+X3+X4=n1
 X5+X6+X7+X8=n2
 X1+X5=m1
 X2+X6=m2
 X3+X7=m3
 X4+X8=m4
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;83&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;n1, n2, m1, m2, m3, m4는 주어지고 n1+n2=(m1+m2+m3+m4)을 만족합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 우리는 위의 방정식 LT와 E를 푸는 것으로 문제를 줄였습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 단순한 선형 프로그래밍 문제이며 simplex 방법 또는 다른 방법을 사용하여 해결할 수 있습니다.&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;Xi를 위해 해결하면 최종 해결책은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;(select * from user where  gender='m' and region=&quot;north&quot; limit :X1)
union distinct(select * from user where  gender='m' and region='south' limit :X2)
union distinct(select * from user where  gender='m' and region='east' limit :X3)
union distinct(select * from user where  gender='m' and region='west' limit :X4)
union distinct(select * from user where  gender='f' and region='north' limit :X5)
union distinct(select * from user where  gender='f' and region='south' limit :X6)
union distinct(select * from user where  gender='f' and region='east' limit :X7)
union distinct(select * from user where  gender='f' and region='west' limit :X8);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;84&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;n개의 가능성을 갖는 차원 D를 D:n으로 표시합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;D1:n1, D2:n2, ...가 있다고 가정합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;DM:nM 치수.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러면 n1*n2*가 생성됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;nM 변수.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;생성된 방정식의 수는 n1+n2+...&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;nM. 대신 일반적인 방법을 정의합니다. 3차원, 4차원 및 2차원의 다른 경우를 예로 들겠습니다. D1의 가능한 값을 d11, d12, d13, D2는 d21, d22, d23, d24, D3 값은 d31, d32입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;변수는 24개가 될 것이며 방정식은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; X1 + X2 + ...X8=n11
 X9 + X10 + ..X16=n12
 X17+X18 + ...X24=n13
 X1+X2+X9+x10+x17+x18=n21
 X3+X4+X11+x12+x19+x20=n22
 X5+X6+X13+x14+x21+x22=n23
 X7+X8+X15+x116+x23+x24=n24
 X1+X3+X5+...X23=n31
 X2+X4+......X24=n32
&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;/p&gt; 
&lt;pre&gt;&lt;code&gt;X1 equals number with D1=d11  and  D2=d21 and D3=d31
X2 equals number with D1=d11 and D2=d21 and D3 = d31
....
X24 equals number with D1=D13 and D2=d24, and D3=d32.
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;86&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제약 조건을 더 적게 추가합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 X1, X2, X24에 대해 해결합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;24개의 선택 문을 만들고 분리된 결합을 취합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;우리는 어떤 차원에서도 비슷하게 풀 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;87&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 요약하자면: 주어진 차원 D1:n1, D2:n2, ...&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;DM:nM은 위에서 설명한 n1*n2*에 해당하는 선형 프로그래밍 문제를 해결할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;nM 변수를 사용한 다음 n1*n2*에 대한 분리 결합을 취하여 솔루션을 생성합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;nM select 문.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예, 선택된 문을 통해 솔루션을 생성할 수 있지만 먼저 방정식을 풀고 각 n1*n2*에 대한 카운트를 구하여 한계를 결정해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;nM 변수.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;88&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;현상금은 끝났지만 당신이 관심 있는 사람들을 위해 조금 더 추가할 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 여기서 해결책이 있다면 어떻게 해결해야 하는지를 완전히 보여줬다고 주장합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;89&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내 접근 방식을 명확히 하기 위해서야&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;3차원의 경우, 나이를 3가지 가능성 중 하나로 나눈다고 가정해 보겠습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 질문과 같이 성별과 지역을 잘 사용합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;각 사용자는 해당 범주에 속하는 위치에 따라 24개의 서로 다른 가능성이 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Xi가 최종 결과에서 각 가능성의 수가 되도록 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;각 행이 각 가능성 중 하나를 나타내는 행렬을 작성하겠습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;각 사용자는 최대 1에서 f까지, 1에서 북쪽, 남쪽, 동쪽 또는 서쪽, 1에서 연령 범주에 기여합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 사용자에게 주어진 가능성은 24개뿐입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;행렬을 보여드리겠습니다. (abc) 3세, (nsew) 부위 및 (mf) 남성 또는 여성: a는 10세 이하, b는 11세에서 30세, c는 31세에서 50세 사이입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;     abc nsew mf
X1   100 1000 10
X2   100 1000 01
X3   100 0100 10
X4   100 0100 01
X5   100 0010 10
X6   100 0010 01
X7   100 0001 10
X8   100 0001 01

X9   010 1000 10
X10  010 1000 01
X11  010 0100 10
X12  010 0100 01
X13  010 0010 10
X14  010 0010 01
X15  010 0001 10
X16  010 0001 01

X17   001 1000 10
X18   001 1000 01
X19   001 0100 10
X20   001 0100 01
X21   001 0010 10
X22   001 0010 01
X23   001 0001 10
X24   001 0001 01
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font 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;예를 들어, 첫 번째 행에는 a에 대해 1, n에 대해 1, 폼에 대해 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 class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Xi는 최종 결과에서 그러한 종류의 행의 수를 나타냅니다.&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;X1이 10이라고 가정해보죠.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 이는 최종 결과가 10개라는 것을 의미합니다. 이 결과들은 모두 북쪽에서 온 것이고, 남성이고, 10보다 작거나 같습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, .&quot;, 이제우리모것합을야산해합니다든자는▁ok합,니다야합해자산.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 8은 8입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;X1+X2+X3+X4+X5+X6+X7+X8&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;모든 행의 수명이 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 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;다음 두 세트의 8도 마찬가지입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;92&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;지금까지 우리는 방정식을 얻습니다. (na는 10세 미만의 숫자, nb는 10세에서 20세 사이의 숫자, nc는 50세 미만의 숫자입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;X1+X2+X3+X4+X5+X6+X7+X8 =  na
X9+X10+X11 + .... X16 = nb
X17+X18+X19+...           X24=nc
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;93&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것들은 나이 차이입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이제 지역 분할을 살펴보겠습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;n&quot;열에 있는 변수를 더하면 됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;X1+X2+X9+X10+X17+X18 = nn
X3+X4+X11+X12+X19+20=ns
...
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;94&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;등. 열을 아래로 내려다보는 것만으로 어떻게 방정식을 얻을 수 있는지 알 수 있습니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;총 3+4+2 방정식을 제시하면서 w와 mf를 계속합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 여기서 한 일은 아주 간단합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 당신이 선택한 행이 각각의 3차원에 1개씩 기여하고 24개의 가능성만 있다고 생각합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 Xi를 각 가능성의 숫자로 지정하면 해결해야 할 방정식을 얻을 수 있습니다.&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;95&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://www.math.&lt;a href=&quot;https://www.math.uwaterloo.ca/~wgilbert/Research/GilbertPathria.pdf&quot; papago-id=&quot;95-1&quot; rel=&quot;nofollow&quot;&gt;uwaterloo&lt;/a&gt;.ca/ &lt;a href=&quot;https://www.math.uwaterloo.ca/~wgilbert/Research/GilbertPathria.pdf&quot; papago-id=&quot;95-1&quot; rel=&quot;nofollow&quot;&gt;~wgilbert/Research/GilbertPathria.pdf&lt;/a&gt;를 해결하는 방법을 설명하는 논문에 대한 링크가 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;96&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;SQL에서 비즈니스 로직을 구성하는 것은 사소한 변경사항도 흡수하는 능력을 방해하기 때문에 결코 좋은 생각이 아닙니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;97&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;ORM에서 이 작업을 수행하고 SQL에서 비즈니스 로직을 추상화하는 것이 좋습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;98&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어 &lt;strong papago-id=&quot;98-1&quot;&gt;Django&lt;/strong&gt;를 사용하는 경우:&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;99&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모델의 모양은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;class User(models.Model):
    GENDER_CHOICES = (
      ('M', 'Male'),
      ('F','Female')
    )       
    gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
    REGION_CHOICES = (
      ('E', 'East'),
      ('W','West'),
      ('N','North'),
      ('S','South')
    )
    region = models.CharField(max_length=1, choices=REGION_CHOICES)
    age = models.IntegerField()
    ETHNICITY_CHOICES = (
      .......
    ) 
    ethnicity = models.CharField(max_length=1, choices=ETHNICITY_CHOICES)
    income = models.FloatField()
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;100&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;# gender_limits is a dict like {'M':400, 'F':600}
# region_limits is a dict like {'N':100, 'E':200, 'W':300, 'S':400}
def get_users_by_gender_and_region(gender_limits,region_limits):
    for gender in gender_limits:
        gender_queryset = gender_queryset | User.objects.filter(gender=gender)[:gender_limits[gender]]
    for region in region_limits:
        region_queryset = region_queryset | User.objects.filter(region=region)[:region_limits[region]]
    return gender_queryset &amp;amp; region_queryset
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;101&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;102&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다른 ORM을 사용하는 경우, 좋은 ORM이 결합 및 교차로 추상화를 갖는 것과 동일한 아이디어가 그것으로 변환될 수 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;103&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;SQL 문을 생성하기 위해 프로그래밍 언어를 사용하지만 아래는 순수 mySQL의 솔루션입니다.&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;104&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;MySQL은 또한 변수를 허용함으로써 이 기능을 어느 정도 제공합니다.&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;105&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 @male=600;
set @female=400;
set @north=100;
set @south=200;
set @east=300;
set @west=400;
set @north_male=@north*(@male/(@male+@female));
set @south_male=@south*(@male/(@male+@female));
set @east_male =@east *(@male/(@male+@female));
set @west_male =@west *(@male/(@male+@female));
set @north_female=@north*(@female/(@male+@female));
set @south_female=@south*(@female/(@male+@female));
set @east_female =@east *(@female/(@male+@female));
set @west_female =@west *(@female/(@male+@female));

select gender, region, count(*) 
from (
          select * from (select @north_male  :=@north_male-1   as row, userid, gender, region from users where gender = 'Male' and region = 'North' ) mn where row&amp;gt;=0 
union all select * from (select @south_male  :=@south_male-1   as row, userid, gender, region from users where gender = 'Male' and region = 'South' ) ms where row&amp;gt;=0
union all select * from (select @east_male   :=@east_male-1    as row, userid, gender, region from users where gender = 'Male' and region = 'East'  ) me where row&amp;gt;=0
union all select * from (select @west_male   :=@west_male-1    as row, userid, gender, region from users where gender = 'Male' and region = 'West'  ) mw where row&amp;gt;=0
union all select * from (select @north_female:=@north_female-1 as row, userid, gender, region from users where gender = 'Female' and region = 'North' ) fn where row&amp;gt;=0 
union all select * from (select @south_female:=@south_female-1 as row, userid, gender, region from users where gender = 'Female' and region = 'South' ) fs where row&amp;gt;=0
union all select * from (select @east_female :=@east_female-1  as row, userid, gender, region from users where gender = 'Female' and region = 'East'  ) fe where row&amp;gt;=0
union all select * from (select @west_female :=@west_female-1  as row, userid, gender, region from users where gender = 'Female' and region = 'West'  ) fw where row&amp;gt;=0
) a
group by gender, region
order by gender, region;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;106&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;Female  East   120
Female  North   40
Female  South   80
Female  West   160
Male    East   180
Male    North   60
Male    South  120
Male    West   240
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;107&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;외부 부분을 제거하여 실제 레코드를 가져옵니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;set @male=600;
set @female=400;
set @north=100;
set @south=200;
set @east=300;
set @west=400;
set @north_male=@north*(@male/(@male+@female));
set @south_male=@south*(@male/(@male+@female));
set @east_male =@east *(@male/(@male+@female));
set @west_male =@west *(@male/(@male+@female));
set @north_female=@north*(@female/(@male+@female));
set @south_female=@south*(@female/(@male+@female));
set @east_female =@east *(@female/(@male+@female));
set @west_female =@west *(@female/(@male+@female));
          select * from (select @north_male  :=@north_male-1   as row, userid, gender, region from users where gender = 'Male' and region = 'North' ) mn where row&amp;gt;=0 
union all select * from (select @south_male  :=@south_male-1   as row, userid, gender, region from users where gender = 'Male' and region = 'South' ) ms where row&amp;gt;=0
union all select * from (select @east_male   :=@east_male-1    as row, userid, gender, region from users where gender = 'Male' and region = 'East'  ) me where row&amp;gt;=0
union all select * from (select @west_male   :=@west_male-1    as row, userid, gender, region from users where gender = 'Male' and region = 'West'  ) mw where row&amp;gt;=0
union all select * from (select @north_female:=@north_female-1 as row, userid, gender, region from users where gender = 'Female' and region = 'North' ) fn where row&amp;gt;=0 
union all select * from (select @south_female:=@south_female-1 as row, userid, gender, region from users where gender = 'Female' and region = 'South' ) fs where row&amp;gt;=0
union all select * from (select @east_female :=@east_female-1  as row, userid, gender, region from users where gender = 'Female' and region = 'East'  ) fe where row&amp;gt;=0
union all select * from (select @west_female :=@west_female-1  as row, userid, gender, region from users where gender = 'Female' and region = 'West'  ) fw where row&amp;gt;=0
;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;108&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;테스트를 위해 10000개의 샘플 레코드를 완전히 무작위로 생성하는 절차를 작성했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;use test;
drop table if exists users;
create table users (userid int not null auto_increment, gender VARCHAR (20), region varchar(20), primary key (userid) );
drop procedure if exists load_users_table;
delimiter #
create procedure load_users_table()
begin
    declare l_max int unsigned default 10000;
    declare l_cnt int unsigned default 0;
    declare l_gender varchar(20);
    declare l_region varchar(20);
    declare l_rnd smallint;
    truncate table users;
    start transaction;
    WHILE l_cnt &amp;lt; l_max DO
        set l_rnd = floor( 0 + (rand()*2) );
        if l_rnd = 0 then
            set l_gender = 'Male';
        else
            set l_gender = 'Female';
        end if;
        set l_rnd=floor(0+(rand()*4));
        if l_rnd = 0 then
            set l_region = 'North';
        elseif l_rnd=1 then
            set l_region = 'South';
        elseif l_rnd=2 then
            set l_region = 'East';
        elseif l_rnd=3 then
            set l_region = 'West';
        end if;
        insert into users (gender, region) values (l_gender, l_region);
        set l_cnt=l_cnt+1;
    end while;
    commit;
end #
delimiter ;
call load_users_table();

select gender, region, count(*) 
from users
group by gender, region
order by gender, region;
&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 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;code&gt;UNION ALL&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;LIMIT&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;112&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;글쎄요, 저는 모든 지역에서 60/40의 비율이 아니라 무작위로 기록을 얻는 것이 문제라고 생각합니다.&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;    Declare @Mlimit bigint
    Declare @Flimit bigint
    Declare @Northlimit bigint
    Declare @Southlimit bigint 
    Declare @Eastlimit bigint
    Declare @Westlimit bigint  

    Set @Mlimit= 600
    Set @Flimit=400
    Set @Northlimit= 100
    Set @Southlimit=200
    Set @Eastlimit=300
    Set @Westlimit=400

    CREATE TABLE #Users(
        [UserId] [int]  NOT NULL,
        [gender] [varchar](10) NULL,
        [region] [varchar](10) NULL,
        [age] [int] NULL,
        [ethnicity] [varchar](50) NULL,
        [income] [bigint] NULL

    )
      Declare @MnorthCnt bigint
      Declare @MsouthCnt bigint
      Declare @MeastCnt bigint
      Declare @MwestCnt bigint

       Declare @FnorthCnt bigint
      Declare @FsouthCnt bigint
      Declare @FeastCnt bigint
      Declare @FwestCnt bigint

      Select @MnorthCnt=COUNT(*) from users where gender='male' and region='north' 
      Select @FnorthCnt=COUNT(*) from users where gender='female' and region='north' 

      Select @MsouthCnt=COUNT(*) from users where gender='male' and region='south' 
      Select @FsouthCnt=COUNT(*) from users where gender='female' and region='south' 

      Select @MeastCnt=COUNT(*) from users where gender='male' and region='east' 
      Select @FeastCnt=COUNT(*) from users where gender='female' and region='east' 
      Select @MwestCnt=COUNT(*) from users where gender='male' and region='west' 
      Select @FwestCnt=COUNT(*) from users where gender='female' and region='west' 

    If (@Northlimit=@MnorthCnt+@FnorthCnt)
    begin
     Insert into #Users select * from Users where region='north' 
    set @Northlimit=0
    set @Mlimit-=@MnorthCnt
    set @Flimit-=@FnorthCnt
    set @MnorthCnt=0 
    set @FnorthCnt=0
    end

    If (@Southlimit=@MSouthCnt+@FSouthCnt)
    begin
     Insert into #Users select * from Users where region='South' 
    set @Southlimit=0
    set @Mlimit-=@MSouthCnt
    set @Flimit-=@FSouthCnt
    set @MsouthCnt=0
    set @FsouthCnt=0
    end

    If (@Eastlimit=@MEastCnt+@FEastCnt)
    begin
     Insert into #Users select * from Users where region='East' 
    set @Eastlimit=0
    set @Mlimit-=@MEastCnt
    set @Flimit-=@FEastCnt
    set @MeastCnt=0
    set @FeastCnt=0
    end

    If (@Westlimit=@MWestCnt+@FWestCnt)
    begin
     Insert into #Users select * from Users where region='West' 
    set @Westlimit=0
    set @Mlimit-=@MWestCnt
    set @Flimit-=@FWestCnt
    set @MwestCnt=0
    set @FwestCnt=0
    end 

If @MnorthCnt&amp;lt;@Northlimit
 Begin
 insert into #Users select top (@Northlimit-@MnorthCnt) * from Users where gender='female' and region='north'
 and userid not in (select userid from #users)
 set @Flimit-=(@Northlimit-@MnorthCnt)
 set @FNorthCnt-=(@Northlimit-@MnorthCnt)
 set @Northlimit-=(@Northlimit-@MnorthCnt)
 End

 If @FnorthCnt&amp;lt;@Northlimit
 Begin
 insert into #Users select top (@Northlimit-@FnorthCnt) * from Users where gender='male' and region='north'
 and userid not in (select userid from #users)
 set @Mlimit-=(@Northlimit-@FnorthCnt)
 set @MNorthCnt-=(@Northlimit-@FnorthCnt)
 set @Northlimit-=(@Northlimit-@FnorthCnt)
 End

 if @MsouthCnt&amp;lt;@southlimit
 Begin
 insert into #Users select top (@southlimit-@MsouthCnt) * from Users where gender='female' and region='south'
 and userid not in (select userid from #users)
 set @Flimit-=(@southlimit-@MsouthCnt)
 set @FSouthCnt-=(@southlimit-@MsouthCnt)
 set @southlimit-=(@southlimit-@MsouthCnt)
 End

 if @FsouthCnt&amp;lt;@southlimit
 Begin
 insert into #Users select top (@southlimit-@FsouthCnt) * from Users where gender='male' and region='south'
 and userid not in (select userid from #users)
 set @Mlimit-=(@southlimit-@FsouthCnt)
 set @MSouthCnt-=(@southlimit-@FsouthCnt)
 set @southlimit-=(@southlimit-@FsouthCnt)
 End

if @MeastCnt&amp;lt;@eastlimit
 Begin
 insert into #Users select top (@eastlimit-@MeastCnt) * from Users where gender='female' and region='east'
 and userid not in (select userid from #users)
 set @Flimit-=(@eastlimit-@MeastCnt)
 set @FEastCnt-=(@eastlimit-@MeastCnt)
 set @eastlimit-=(@eastlimit-@MeastCnt)
 End

if @FeastCnt&amp;lt;@eastlimit
 Begin
 insert into #Users select top (@eastlimit-@FeastCnt) * from Users where gender='male' and region='east'
 and userid not in (select userid from #users)
 set @Mlimit-=(@eastlimit-@FeastCnt)
 set @MEastCnt-=(@eastlimit-@FeastCnt)
 set @eastlimit-=(@eastlimit-@FeastCnt)
End

if @MwestCnt&amp;lt;@westlimit
 Begin
 insert into #Users select top (@westlimit-@MwestCnt) * from Users where gender='female' and region='west'
 and userid not in (select userid from #users)
 set @Flimit-=(@westlimit-@MwestCnt)
 set @FWestCnt-=(@westlimit-@MwestCnt)
 set @westlimit-=(@westlimit-@MwestCnt)
 End

if @FwestCnt&amp;lt;@westlimit
 Begin
 insert into #Users select top (@westlimit-@FwestCnt) * from Users where gender='male' and region='west'
 and userid not in (select userid from #users)
 set @Mlimit-=(@westlimit-@FwestCnt)
 set @MWestCnt-=(@westlimit-@FwestCnt)
 set @westlimit-=(@westlimit-@FwestCnt)
 End     


    IF (@MnorthCnt&amp;gt;=@Northlimit and @FnorthCnt&amp;gt;=@Northlimit and @MsouthCnt&amp;gt;=@southlimit and @FsouthCnt&amp;gt;=@southlimit and @MeastCnt&amp;gt;=@eastlimit and @FeastCnt&amp;gt;=@eastlimit and @MwestCnt&amp;gt;=@westlimit and @FwestCnt&amp;gt;=@westlimit and not(@Mlimit=0 and @Flimit=0))
    Begin

    ---Create Cursor
    DECLARE UC CURSOR FAST_forward
    FOR
    SELECT *
    FROM Users
    where userid not in (select userid from #users) 

    Declare @UserId [int]  ,
        @gender [varchar](10) ,
        @region [varchar](10) ,
        @age [int] ,
        @ethnicity [varchar](50) ,
        @income [bigint]   
    OPEN UC

    FETCH NEXT FROM UC
    INTO @UserId ,@gender, @region, @age, @ethnicity, @income

    WHILE @@FETCH_STATUS = 0 and not (@Mlimit=0 and @Flimit=0) 
    BEGIN
    If @gender='male' and @region='north' and @Northlimit&amp;gt;0 AND @Mlimit&amp;gt;0
    begin
    insert into #Users values (@UserId ,@gender, @region, @age, @ethnicity, @income)
    set @Mlimit-=1
    set @MNorthCnt-=1
    set @Northlimit-=1
    end  
    If @gender='male' and @region='south' and @southlimit&amp;gt;0 AND @Mlimit&amp;gt;0
    begin
    insert into #Users values (@UserId ,@gender, @region, @age, @ethnicity, @income)
    set @Mlimit-=1
    set @MsouthCnt-=1
    set @Southlimit-=1
    end 
    If @gender='male' and @region='east' and @eastlimit&amp;gt;0 AND @Mlimit&amp;gt;0
    begin
    insert into #Users values (@UserId ,@gender, @region, @age, @ethnicity, @income)
    set @Mlimit-=1
    set @MeastCnt-=1
    set @eastlimit-=1
    end  
    If @gender='male' and @region='west' and @westlimit&amp;gt;0 AND @Mlimit&amp;gt;0
    begin
    insert into #Users values (@UserId ,@gender, @region, @age, @ethnicity, @income)
    set @Mlimit-=1
    set @MwestCnt-=1
    set @westlimit-=1
    end 

    If @gender='female' and @region='north' and @Northlimit&amp;gt;0 AND @flimit&amp;gt;0
    begin
    insert into #Users values (@UserId ,@gender, @region, @age, @ethnicity, @income)
    set @Flimit-=1
    set @FNorthCnt-=1
    set @Northlimit-=1
    end  
    If @gender='female' and @region='south' and @southlimit&amp;gt;0 AND @flimit&amp;gt;0
    begin
    insert into #Users values (@UserId ,@gender, @region, @age, @ethnicity, @income)
    set @Flimit-=1
    set @FsouthCnt-=1
    set @Southlimit-=1
    end 
    If @gender='female' and @region='east' and @eastlimit&amp;gt;0 AND @flimit&amp;gt;0
    begin
    insert into #Users values (@UserId ,@gender, @region, @age, @ethnicity, @income)
    set @flimit-=1
    set @feastCnt-=1
    set @eastlimit-=1
    end  
    If @gender='female' and @region='west' and @westlimit&amp;gt;0 AND @flimit&amp;gt;0
    begin
    insert into #Users values (@UserId ,@gender, @region, @age, @ethnicity, @income)
    set @flimit-=1
    set @fwestCnt-=1
    set @westlimit-=1
    end   
    FETCH NEXT FROM UC
    INTO @UserId ,@gender, @region, @age, @ethnicity, @income
    END

    CLOSE UC

    DEALLOCATE UC

    end

    Select * from #Users

    SELECT GENDER, REGION, COUNT(*) AS COUNT FROM #USERS 
    GROUP BY GENDER, REGION
    DROP TABLE #Users
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;113&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;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&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 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;116&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;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;{F1, F2, ... Fn}&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;각 값의 그룹과 해당 값 사이에 분포되어야 하는 백분율을 가집니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;를 들어, 은 두 %, = %)을 성별일 수  필요한 총 입니다. (이것을 F1V1 = 60%, F1V2 = 40%라고 .)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;X&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;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 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;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;EG: 2개의 필터, F1: 성별, {F1V1 = 남성: 60%, F1V2 = 여성: 40%, F2: 지역, {F2V1 = 북쪽: 50%, F2V2 = 남쪽: 50%}, 총 샘플이 필요한 X = 10명이라고 가정합니다.&lt;/font&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 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명이 남성이고, 4명이 여성이고, 5명은 북쪽에서, 5명은 남쪽에서 오기를 원합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;122&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그럼 우리는.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;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;F1의 각 값에 대한 sql 스텁을 생성합니다.&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;ul&gt; 
   &lt;li&gt;&lt;code&gt;WHERE gender = 'Male'&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;: 0.6,&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;WHERE gender = 'Female'&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;: 0.4 )&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
  &lt;/ul&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 class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;F2의 각 항목에 대해 - 위의 단계의 모든 항목에서 새 sql 스텁을 생성합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 필터는 이제 F1 값과 F2 값이 되고 관련 분수는 두 분수의 곱이 됩니다.&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;이제 2 x 2 = 4개의 항목이 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;WHERE gender = 'Male' AND region = 'North'&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;: 0.6 * 0.5 = 0.3,&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;WHERE gender = 'Female' AND region = 'North'&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;: 0.4 * 0.5 = 0.2,&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;WHERE gender = 'Male' AND region = 'South'&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;: 0.6*0.5 = 0.3,&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;WHERE gender = 'Female' AND region = 'South'&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;: 0.4*0.5 = 0.2&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
  &lt;/ul&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;131&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모든 추가 필터 F3 - Fn에 대해 위의 2단계를 반복합니다(예에서는 필터가 2개뿐이므로 이미 완료되었습니다).&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;132&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;각 SQL 스텁에 대한 제한을 [스텁과 연결됨] * X = 총 필요한 샘플 크기로 계산합니다(따라서 이 예에서는 수컷/북쪽의 경우 0.3 * 10 = 3, 암컷/북쪽의 경우 0.2 * 10 = 2 등).&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;133&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;마지막으로 모든 SQL 스텁에 대해 - 완전한 SQL 문으로 변환하고 제한을 추가합니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;134&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;135&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;순수 동적 SQL에서 이를 시도하는 것은 매우 까다로울 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;136&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;137&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;// This is an example of a public class you could use to hold one of your filters
// For example - if you wanted 60% male / 40% female, you could have an item with 
//    item1 = {Fraction: 0.6, ValueExact: 'Male', RangeStart: null, RangeEnd: null}
//  &amp;amp; item2 = {Fraction: 0.4, ValueExact: 'Female', RangeStart: null, RangeEnd: null}
public class FilterItem{
    public decimal Fraction {get; set;}
    public string ValueExact {get; set;}
    public int? RangeStart {get; set;}
    public int? RangeEnd {get; set;}
}

// This is an example of a public method you could call to build your SQL 
// - passing in a generic list of desired filter
// for example the dictionary entry for the above filter would be 
// {Key: &quot;gender&quot;, Value: new List&amp;lt;FilterItem&amp;gt;(){item1, item2}}
public string BuildSQL(Dictionary&amp;lt;string, List&amp;lt;FilterItem&amp;gt;&amp;gt; filters, int TotalItems)
{
    // we want to build up a list of SQL stubs that can be unioned together.
    var sqlStubItems = new List&amp;lt;SqlItem&amp;gt;();
    foreach(var entry in filters)
    {
        AddFilter(entry.Key, entry.Value, sqlStubItems);
    }
    // ok - now just combine all of the sql stubs into one big union.
    var result = &quot;&quot;; // Id use a stringbuilder for this normally, 
                     // but this is probably more cross-language readable.
    int limitSum = 0;
    for(int i = 0; i &amp;lt; sqlStubItems.Count; i++) // string.Join() would be more succinct!
    {
       var item = sqlStubItems[i];
       if (i &amp;gt; 0)
       {
           result  += &quot; UNION &quot;;
       }
       int limit = (int)Math.Round(TotalItems * item.Fraction, 0);
       limitSum+= limit;
       if (i == sqlStubItems.Count - 1 &amp;amp;&amp;amp; limitSum != TotalItems)
       {
          //may need to adjust one of the rounded items to account 
          //for rounding errors making a total that is not the 
          //originally required total limit.
          limit += (TotalItems - limitSum);
       }
       result +=  item.Sql + &quot; LIMIT &quot; 
              + Convert.ToString(limit);

    }
    return result;
}

// This method expands the number of SQL stubs for every filter that has been added.
// each existing filter is split by the number of items in the newly added filter.
private void AddFilter(string filterType, 
                       List&amp;lt;FilterItem&amp;gt; filterValues, 
                       List&amp;lt;SqlItem&amp;gt; SqlItems)
{
   var newItems = new List&amp;lt;SqlItem&amp;gt;();

   foreach(var filterItem in filterValues)
   {
       string filterAddon; 
       if (filterItem.RangeStart.HasValue &amp;amp;&amp;amp; filterItem.RangeEnd.HasValue){
           filterAddon = filterType + &quot; &amp;gt;= &quot; + filterItem.RangeStart.ToString() 
                       + &quot; AND &quot; + filterType + &quot; &amp;lt;= &quot; + filterItem.RangeEnd.ToString();
       } else {
           filterAddon = filterType + &quot; = '&quot; 
                         + filterItem.ValueExact.Replace(&quot;'&quot;,&quot;''&quot;) + &quot;'&quot;; 
                         //beware of SQL injection. (hence the .Replace() above)
       }
       if(SqlItems.Count() == 0)
       {
           newItems.Add(new SqlItem(){Sql = &quot;Select * FROM users WHERE &quot; 
                                      + filterAddon, Fraction = filterItem.Fraction});
       } else {
           foreach(var existingItem in SqlItems)
           {
               newItems.Add(new SqlItem()
               {
                 Sql = existingItem +  &quot; AND &quot; + filterAddon, 
                 Fraction = existingItem.Fraction * filterItem.Fraction
               });
           }
       }
   }
   SqlItems.Clear();
   SqlItems.AddRange(newItems);
}



// this class is for part-built SQL strings, with the fraction
private class SqlItem{
  public string Sql { get; set;}
  public decimal Fraction{get; set;}
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;138&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;138-0&quot;&gt;참고사항&lt;/strong&gt;(사인별 설명에 따름)&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li papago-id=&quot;139&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;반올림 오차는 많은 수의 필터를 적용할 때 목표로 했던 600/400 분할을 정확하게 얻지 못한다는 것을 의미할 수 있지만 근접해야 합니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;140&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;이 방법은 필터 간에 균등한 분포가 필요합니다(따라서 총 10명, 남자 6명, 여자 4명, 북쪽에서 5명, 남쪽에서 5명, 북쪽에서 남자 3명, 여자 2명, 남쪽에서 여자 2명).&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;141&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;랜덤으로 선택하려면 ORDER BY RAND()와 같은 것을 추가해야 합니다(단, 매우 비효율적이어서는 안 됩니다).&lt;/font&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;29&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;SQL 주입에 주의합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;입력을  따옴표를 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;'&lt;/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;s.s.s.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;144&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;145&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;146&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 stub의 플랫 리스트는 더 이상 삭제되지 않을 것이기 때문입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;대신 SQL 스텁의 차원 매트릭스를 구축해야 합니다(모든 필터 F1 - n에 대한 차원 추가). 위의 4단계가 완료된 후(각 SQL 스텁 항목에 대해 원하는 숫자가 있지만 반드시 가능한 것은 아님).&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li papago-id=&quot;147&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;SQL을 생성하여 결합된 모든 SQL WHERE 스텁의 개수를 선택합니다.&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;&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 class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;ul&gt; 
   &lt;li papago-id=&quot;148&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;149&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;/li&gt; 
   &lt;li papago-id=&quot;150&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;151&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;추가 차원 tn마다 교차점 사이의 교차점에 대해 위의 단계를 반복합니다(단, 매번 음과 양 사이의 조정을 전환합니다).&lt;/font&gt;&lt;/li&gt; 
  &lt;/ul&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;32&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font 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;br&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;수컷/북쪽 = 3, 암컷/북쪽 = 2, 수컷/남쪽 = 3, 암컷/남쪽 = 2, 그러나 북쪽에는 수컷이 2마리밖에 없습니다(그러나 우리가 선택할 수 있는 다른 그룹에는 많은 사람들이 있습니다).&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li papago-id=&quot;155&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;수컷/북쪽을 2(-1)로 조정합니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;156&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;암컷/북쪽은 3(+1), 수컷/남쪽은 4(+1)로 조정합니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;157&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;교차하는 암/남쪽을 1(-1)로 조정합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Voila! (기준/차원이 2개밖에 없어서 추가 차원은 없습니다.)&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p papago-id=&quot;158&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 그림은 교차 항목을 더 높은 차원으로 조정할 때 도움이 될 수 있습니다(최대 4차원만 표시되지만 수행해야 할 작업을 그림으로 그리는 데 도움이 될 것입니다!&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;각 점은 n차원 행렬에서 SQL 스텁 항목 중 하나를 나타냅니다(관련된 제한 번호 포함). 선은 공통 기준 값(성별 = 남성)을 나타냅니다.&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;위의 예제에서는 빨간색 점, 오른쪽 위의 주황색 점 2개로 구성된 정사각형, NE로 구성된 녹색 점 1개로 사각형을 완성합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://i.stack.imgur.com/K1JDi.png&quot; alt=&quot;adjustments&quot;&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 class=&quot;papago-parent&quot;&gt; 하겠습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;GROUP BY&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;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;/p&gt; 
&lt;p&gt;&lt;code&gt;SELECT gender,region,count(*) FROM users GROUP BY gender,region&lt;/code&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;+----------------------+
|gender|region|count(*)|
+----------------------+
|f     |E     |     129|
|f     |N     |      43|
|f     |S     |      84|
|f     |W     |     144|
|m     |E     |     171|
|m     |N     |      57|
|m     |S     |     116|
|m     |W     |     256|
+----------------------+
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;161&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;남성 600명, 여성 400명, 북부 100명, 남부 200명, 동부 300명, 서부 400명을 확인할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;162&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;163&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
  gender,
  region,
  case when age &amp;lt; 30 then 'Young'
       when age between 30 and 59 then 'Middle aged'
       else 'Old' end as age_range,
  count(*)
FROM users
GROUP BY gender,region, age_range
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;164&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;+----------------------------------+
|gender|region|age        |count(*)|
+----------------------------------+
|f     |E     |Middle aged|      56|
|f     |E     |Old        |      31|
|f     |E     |Young      |      42|
|f     |N     |Middle aged|      14|
|f     |N     |Old        |      11|
|f     |N     |Young      |      18|
|f     |S     |Middle aged|      40|
|f     |S     |Old        |      23|
|f     |S     |Young      |      21|
|f     |W     |Middle aged|      67|
|f     |W     |Old        |      42|
|f     |W     |Young      |      35|
|m     |E     |Middle aged|      77|
|m     |E     |Old        |      56|
|m     |E     |Young      |      38|
|m     |N     |Middle aged|      13|
|m     |N     |Old        |      25|
|m     |N     |Young      |      19|
|m     |S     |Middle aged|      46|
|m     |S     |Old        |      39|
|m     |S     |Young      |      31|
|m     |W     |Middle aged|     103|
|m     |W     |Old        |      66|
|m     |W     |Young      |      87|
+----------------------------------+
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;165&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/27160122/&lt;a href=&quot;https://stackoverflow.com/questions/27160122/mysql-query-to-get-intersection-of-numerous-queries-with-limits&quot; target=&quot;_blank&quot; papago-id=&quot;165-1&quot;&gt;mysql-query-to-get-intersection-of-numerous-queries-with-limits&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/453</guid>
      <comments>https://copysource.tistory.com/453#entry453comment</comments>
      <pubDate>Wed, 23 Aug 2023 23:39:10 +0900</pubDate>
    </item>
    <item>
      <title>ASP.NET에서 파일 경로를 URL로 변환하는 방법</title>
      <link>https://copysource.tistory.com/452</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;ASP.NET에서 파일 경로를 URL로 변환하는 방법&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;기본적으로 특정 디렉터리를 확인하여 이미지가 있는지 확인하고 이미지에 대한 URL을 ImageControl에 할당하고자 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;if (System.IO.Directory.Exists(photosLocation))
{
    string[] files = System.IO.Directory.GetFiles(photosLocation, &quot;*.jpg&quot;);
    if (files.Length &amp;gt; 0)
    {
        // TODO: return the url of the first file found;
    }
}
&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;private string MapURL(string path)
{
    string appPath = Server.MapPath(&quot;/&quot;).ToLower();
    return string.Format(&quot;/{0}&quot;, path.ToLower().Replace(appPath, &quot;&quot;).Replace(@&quot;\&quot;, &quot;/&quot;));
 }
&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 class=&quot;papago-parent&quot;&gt;저장할 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;photosLocation&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;&quot;~/Images/&quot;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이렇게 하면 MapPath를 사용하여 실제 위치를 가져올 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ResolveUrl&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL을 얻다 (로부터 약간의 도움을 받아)&lt;/font&gt;&lt;/font&gt;&lt;code&gt;System.IO.Path&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;pre&gt;&lt;code&gt;string photosLocationPath = HttpContext.Current.Server.MapPath(photosLocation);
if (Directory.Exists(photosLocationPath))
{
    string[] files = Directory.GetFiles(photosLocationPath, &quot;*.jpg&quot;);
    if (files.Length &amp;gt; 0)
    {
        string filenameRelative = photosLocation +  Path.GetFilename(files[0])   
        return Page.ResolveUrl(filenameRelative);
    }
}
&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;pre&gt;&lt;code&gt;Site named &quot;tempuri.com/&quot; rooted at c:\domains\site
virtual directory &quot;~/files&quot; at c:\data\files
virtual directory &quot;~/files/vip&quot; at c:\data\VIPcust\files
&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;Server.MapPath(&quot;~/files/vip/readme.txt&quot;) 
  = &quot;c:\data\VIPcust\files\readme.txt&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;em papago-id=&quot;11-1&quot;&gt;수행&lt;/em&gt;할 방법은 없습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;MagicResolve(&quot;c:\data\VIPcust\files\readme.txt&quot;) 
   = &quot;http://tempuri.com/files/vip/readme.txt&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;전체 가상 디렉터리 목록을 가져올 방법이 없기 때문입니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 Fredriks의 답변을 수락했습니다. 최소의 노력으로 문제를 해결하는 것처럼 보이지만 Request 개체에 ResolveUrl 메서드가 포함되어 있지 않은 것처럼 보이기 때문입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;페이지 개체 또는 이미지 제어 개체를 통해 액세스할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;myImage.ImageUrl = Page.ResolveUrl(photoURL);
myImage.ImageUrl = myImage.ResolveUrl(photoURL);
&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;나처럼 정적 클래스를 사용하는 경우 VirtualPath Utility를 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;myImage.ImageUrl = VirtualPathUtility.ToAbsolute(photoURL);
&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;HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + HttpRuntime.AppDomainAppVirtualPath + &quot;ImageName&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;/p&gt; 
&lt;pre&gt;&lt;code&gt;// Here is your path
String p = photosLocation + &quot;whatever.jpg&quot;;

// Here is the page address
String pa = Page.Request.Url.AbsoluteUri;

// Take the page name    
String pn = Page.Request.Url.LocalPath;

// Here is the server address    
String sa = pa.Replace(pn, &quot;&quot;);

// Take the physical location of the page    
String pl = Page.Request.PhysicalPath;

// Replace the backslash with slash in your path    
pl = pl.Replace(&quot;\\&quot;, &quot;/&quot;);    
p = p.Replace(&quot;\\&quot;, &quot;/&quot;);

// Root path     
String rp = pl.Replace(pn, &quot;&quot;);

// Take out same path    
String final = p.Replace(rp, &quot;&quot;);

// So your picture's address is    
String path = sa + final;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;편집: 네, 도움이 안 된다고 표시된 사람이 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;몇 가지 설명: 현재 페이지의 물리적 경로를 사용하여 서버와 디렉터리(예: c:\inetpub\whatever.com \http)와 페이지 이름(예: /Whating.aspx)의 두 부분으로 분할합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이미지의 물리적 경로는 서버의 경로를 포함해야 하므로 서버의 경로에 상대적인 이미지의 경로만 남겨두면서 서버의 경로를 &quot;감산&quot;해야 합니다(예: \design\picture.jpg).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;백슬래시를 슬래시로 바꾸고 서버의 URL에 추가합니다.&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;http://msdn.microsoft.com/en-us/library/ms524632.aspx&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;18-1&quot;&gt;아마도&lt;/a&gt; MapPath의 역방향을 찾고 있었을 것입니다).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 기능이 있는지 알고 싶습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그 전까지는 GetFiles에서 반환한 파일 이름을 가져와서 경로를 제거하고 URL 루트 앞에 추가했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 작업은 일반적으로 수행할 수 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;간단한 해결책은 웹 사이트 내에 URL로 쉽게 액세스할 수 있는 임시 위치를 둔 다음 저장해야 할 때 파일을 실제 위치로 이동할 수 있습니다.&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;URL의 왼쪽 부분을 잊어버립니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;?HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority)
&quot;http://localhost:1714&quot;
&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;?HttpRuntime.AppDomainAppVirtualPath
&quot;/&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;이렇게 하면 전체 URL을 얻은 후 상대 경로를 추가할 수 있습니다.&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;font class=&quot;papago-parent&quot;&gt;그것들이 필요한지 아닌지 확실하지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;string url = Request.ApplicationPath + &quot;/&quot; + photosLocation + &quot;/&quot; + files[0];
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/16007/&lt;a href=&quot;https://stackoverflow.com/questions/16007/how-do-i-convert-a-file-path-to-a-url-in-asp-net&quot; target=&quot;_blank&quot; papago-id=&quot;24-1&quot;&gt;how-do-i-convert-a-file-path-to-a-url-in-asp-net&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/452</guid>
      <comments>https://copysource.tistory.com/452#entry452comment</comments>
      <pubDate>Wed, 23 Aug 2023 23:38:13 +0900</pubDate>
    </item>
    <item>
      <title>Mariadb 쿼리 utf8 이스케이프 문자열</title>
      <link>https://copysource.tistory.com/451</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Mariadb 쿼리 utf8 이스케이프 문자열&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;5.5.65-MariaDB MariaDB Server를 사용하고 있습니다.&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;json 문자열을 저장하는 &quot;remoteData&quot;라는 이름의 중간 텍스트 열이 있는 테이블이 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 json 문자열의 문자열 값은 이스케이프 utf8 시퀀스로 저장됩니다(예:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&quot;patientFirstName&quot;:&quot;\u0395\u039b\u0395\u03a5\u0398\u0395\u03a1\u0399\u039f\u03a3&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;위의 값은 그리스어 이름 &quot;εευθριςοελ&quot;.&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;쿼리를 사용하여 이 열을 검색하려고 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Select * from sync_details where remoteData like &quot;%ΛΕΥΘΕΡ%&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;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;편집: 쿼리는 php를 통해 실행되므로 php 함수가 포함된 솔루션을 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;잘 부탁드립니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;크리스토포로스&lt;/font&gt;&lt;/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;CHARACTER SET utf8&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 a&lt;/font&gt;&lt;/font&gt;&lt;code&gt;utf8_general_ci&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;조합은 다음과 같이 작동해야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;CREATE DATABASE IF NOT EXISTS `test` CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE `test`.`sync_details` (`remoteData` MEDIUMTEXT);
INSERT INTO `test`.`sync_details` (`remoteData`) VALUES ('{&quot;patientFirstName&quot;:&quot;\\u0395\\u039b\\u0395\\u03a5\\u0398\\u0395\\u03a1\\u0399\\u039f\\u03a3&quot;}');
SELECT `remoteData` FROM `test`.`sync_details` WHERE `remoteData` LIKE '%ΛΕΥΘΕΡ%';
+----------------------------------------------+
| remoteData                                   |
+----------------------------------------------+
| {&quot;patientFirstName&quot;: &quot;ΕΛΕΥΘΕΡΙΟΣ&quot;}           |
+----------------------------------------------+
1 row in set (0,00 sec)
&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;JSON_EXTRACT&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저장된 JSON 개체에서 구조화된 데이터를 가져옵니다.&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;SELECT JSON_EXTRACT(`remoteData`, &quot;$.patientFirstName&quot;) 
FROM `test`.`sync_details` 
WHERE JSON_EXTRACT(`remoteData`, &quot;$.patientFirstName&quot;) 
LIKE '%ΛΕΥΘΕΡ%';
+--------------------------------------------------+
| JSON_EXTRACT(`remoteData`, &quot;$.patientFirstName&quot;) |
+--------------------------------------------------+
| &quot;ΕΛΕΥΘΕΡΙΟΣ&quot;                                     |
+--------------------------------------------------+
1 row in set (0,00 sec)
&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;JSON 개체의 데이터를 인덱싱하려면 다음을 사용하여 테이블에 &quot;생성된 열&quot;을 추가할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;GENERATED ALWAYS&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;pre&gt;&lt;code&gt;ALTER TABLE `test`.`sync_details` ADD COLUMN `firstName` VARCHAR(100) GENERATED ALWAYS AS (`remoteData` -&amp;gt;&amp;gt; '$.patientFirstName');
CREATE INDEX `firstnames_idx` ON `test`.`sync_details`(`firstName`);
SELECT `firstName` FROM `test`.`sync_details` WHERE `firstName` LIKE '%ΛΕΥΘΕΡ%';
+----------------------+
| firstName            |
+----------------------+
| ΕΛΕΥΘΕΡΙΟΣ           |
+----------------------+
1 row in set (0,00 sec)
&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;이것은 MariaDB &amp;gt;= 10.2 및 autf8 인코딩 db 및 autf8_general_ci colation에서만 작동합니다.&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/63751446/&lt;a href=&quot;https://stackoverflow.com/questions/63751446/mariadb-query-utf8-escaped-string&quot; target=&quot;_blank&quot; papago-id=&quot;18-1&quot;&gt;mariadb-query-utf8-escaped-string&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/451</guid>
      <comments>https://copysource.tistory.com/451#entry451comment</comments>
      <pubDate>Wed, 23 Aug 2023 23:36:38 +0900</pubDate>
    </item>
    <item>
      <title>Python의 TypeHinting 튜플</title>
      <link>https://copysource.tistory.com/450</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Python의 TypeHinting 튜플&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;다음과 같이 Python에서 튜플을 입력하고 싶을 때:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;def func(var: tuple[int, int]):
    # do something

func((1, 2))    # would be fine
func((1, 2, 3)) # would throw an error
&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;def func(var: list[int]):
    # do something

func([1])       # would be fine
func([1, 2])    # would also be fine
func([1, 2, 3]) # would also be fine
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것은 결과적으로, 어떤 면에서, 튜플의 종류 때문입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것들은 변경되지 않도록 설계되었기 때문에, 당신은 그 안에 있는 항목의 양을 하드 코딩해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 제 질문은 튜플 타입 힌트의 항목 수를 유연하게 만드는 방법이 있을까요?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 그런 것을 시도했지만 효과가 없었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;def func(var: tuple[*int]):
&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;em papago-id=&quot;5-1&quot;&gt;예&lt;/em&gt;, &lt;em papago-id=&quot;5-1&quot;&gt;튜플 유형 힌트의 항목 수&lt;/em&gt;를 유연하게 &lt;em papago-id=&quot;5-1&quot;&gt;설정&lt;/em&gt;할 수 &lt;em papago-id=&quot;5-1&quot;&gt;있습니다&lt;/em&gt;.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;from typing import Tuple

def func(var: Tuple[int, ...]):
    pass
&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;a href=&quot;https://docs.python.org/3/library/typing.html#typing.Tuple&quot; rel=&quot;noreferrer&quot; papago-id=&quot;6-1&quot;&gt;문서에서:&lt;/a&gt; https://docs.python.org/3/library/typing.html#typing.Tuple&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;/font&gt;&lt;/font&gt;&lt;code&gt;Tuple[int, ...]&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;Tuple&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;Tuple[Any, ...]&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;tuple&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;/blockquote&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;PEP &lt;a href=&quot;https://www.python.org/dev/peps/pep-0585/&quot; papago-id=&quot;12-1&quot; rel=&quot;noreferrer&quot;&gt;585&lt;/a&gt;부터는 내장 타이핑을 사용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;typing&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모듈, 그러니까 파이썬 3.9부터 시작해서,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Tuple[...]&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;tuple[...]&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 class=&quot;lang-py prettyprint-override&quot;&gt;&lt;code&gt;def func(var: tuple[int, ...]):
    pass
&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/47533787/&lt;a href=&quot;https://stackoverflow.com/questions/47533787/typehinting-tuples-in-python&quot; target=&quot;_blank&quot; papago-id=&quot;16-1&quot;&gt;typehinting-tuples-in-python&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/450</guid>
      <comments>https://copysource.tistory.com/450#entry450comment</comments>
      <pubDate>Wed, 23 Aug 2023 23:35:21 +0900</pubDate>
    </item>
    <item>
      <title>JS를 통해 트윗 다시 렌더링 버튼</title>
      <link>https://copysource.tistory.com/449</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;JS를 통해 트윗 다시 렌더링 버튼&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://forrst.com/posts/Render_Tweet_Button_in_AJAX_Loaded_Content-7cx&quot; papago-id=&quot;1-1&quot; rel=&quot;noreferrer&quot;&gt;저&lt;/a&gt;는 이 스니펫을 &lt;a href=&quot;http://forrst.com/posts/Render_Tweet_Button_in_AJAX_Loaded_Content-7cx&quot; papago-id=&quot;1-1&quot; rel=&quot;noreferrer&quot;&gt;사용&lt;/a&gt;하여 트윗 단추를 다시 렌더링하곤 했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var tweetButton = new twttr.TweetButton(twitterScript);
twttr.render();
&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;하지만 widgets.&lt;a href=&quot;http://platform.twitter.com/widgets.js&quot; rel=&quot;noreferrer&quot; papago-id=&quot;2-1&quot;&gt;js(&lt;/a&gt;http://platform.twitter.com/widgets.js) 는 soottr 수정되었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;TweetButton은 더 이상 생성자가 아닙니다.&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;저는 &lt;a href=&quot;http://www.ovaistariq.net/447/how-to-dynamically-create-twitters-tweet-button-and-facebooks-like-button/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;4-1&quot;&gt;웹&lt;/a&gt;에서 답을 찾았습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;트위터 자바스크립트 파일을 재요청하는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;캐시되니까 다운로드 오버헤드가 없습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$.ajax({ url: 'http://platform.twitter.com/widgets.js', dataType: 'script', cache:true});
&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;이 문제에 발이 걸려 넘어지는 사람을 위해 새롭고 쉬운 방법이 있습니다(이전에는 아니더라도 5/28/12 시점).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;설명서에서 간단히 찾을 수는 없지만 다음 작업을 수행할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;twttr.widgets.load()&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;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://dev.twitter.com/docs/intents&quot; papago-id=&quot;7-1&quot;&gt;이&lt;/a&gt; 페이지의 &quot;최적화&quot; 섹션을 &lt;a href=&quot;https://dev.twitter.com/docs/intents&quot; papago-id=&quot;7-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;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신은 그냥 전화하면 됩니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;twttr.widgets.load()&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;/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;twttr.TweetButton&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;생성자는 지원되지 않았으며, 마지막 API 업데이트 이후에는 더 이상 작동하지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;http://groups.google.com/group/twitter-development-talk/browse_thread/thread/bcda486acdf4ab42/6a557050f850ccf2?lnk=gst&amp;amp;q=+twttr.TweetButton#6a557050f850ccf2&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;http://groups.google.com/group/twitter-development-talk/browse_thread/thread/bcda486acdf4ab42/6a557050f850ccf2?lnk=gst&amp;amp;q=+twttr.TweetButton#6a557050f850ccf2&lt;/font&gt;&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&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;iframe&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;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;http://dev.twitter.com/pages/tweet_button#using-an-iframe&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;http://dev.twitter.com/pages/tweet_button#using-an-iframe&lt;/font&gt;&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;업데이트된 정보에 대한 &lt;a href=&quot;https://stackoverflow.com/a/10789374/20578&quot; papago-id=&quot;16-1&quot;&gt;@RunningSkull의 답변을 &lt;/a&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;먼저 문서 머리에 jQuery가 포함되어 있는지 확인합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;script type=&quot;text/javascript&quot; src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 최종 트윗 단추와 동일한 URL을 가진 링크를 만들고 단추가 렌더링될 빈 div를 만듭니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;a href=&quot;http://www.my-site-to-tweet-about.com&quot; id=&quot;tlink&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;div id=&quot;tbutton&quot;&amp;gt;&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;페이지 하단의 /body 태그 바로 위에는 Twitter의 Javascript와 버튼을 렌더링하는 기능, 원하는 이벤트가 발생할 때 기능을 활성화하는 청취자가 포함되어 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
//async script, twitter button fashiolista.com style
    (function() {
    var s = document.createElement('SCRIPT');
    var c = document.getElementsByTagName('script')[0];
    s.type = 'text/javascript';
    s.defer = &quot;defer&quot;;
    s.async = true;
    s.src = 'http://platform.twitter.com/widgets.js';
    c.parentNode.insertBefore(s, c);
    })();

function renderTweetButton(tbutton,tlink){
    var href = $(&quot;#&quot;+tlink).attr('href'),
        $target = $(&quot;#&quot;+tbutton),
        qstring = $.param({ url: href, count: &quot;vertical&quot; }),
        toinsert = '&amp;lt;iframe allowtransparency=&quot;true&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;http://platform.twitter.com/widgets/tweet_button.html?'+qstring+'&quot; style=&quot;width:57px; height:70px;&quot;&amp;gt;&amp;lt;/iframe&amp;gt;';
    $target.html(toinsert);
}

$(&quot;#hoverlink&quot;).mouseenter(function() {
    renderTweetButton(&quot;tbutton&quot;,&quot;tlink&quot;);
});
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;마지막으로 일부 이벤트를 기반으로 위의 기능을 활성화할 링크를 페이지에 추가합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;a href=&quot;#&quot; id=&quot;hoverlink&quot;&amp;gt;Hover here to render a tweet button to div#tbutton.&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;바로 그겁니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;22&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;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&amp;gt;
&amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot; /&amp;gt;
&amp;lt;title&amp;gt;jQuery Twitter Button Render Test&amp;lt;/title&amp;gt;

&amp;lt;script type=&quot;text/javascript&quot; src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;

&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;

&amp;lt;a href=&quot;http://www.my-site-to-tweet-about.com&quot; id=&quot;tlink&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;div id=&quot;tbutton&quot;&amp;gt;&amp;lt;/div&amp;gt;

&amp;lt;a href=&quot;#&quot; id=&quot;hoverlink&quot;&amp;gt;Hover here to render a tweet button to div#tbutton.&amp;lt;/a&amp;gt;


&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
//async script, twitter button fashiolista.com style
    (function() {
    var s = document.createElement('SCRIPT');
    var c = document.getElementsByTagName('script')[0];
    s.type = 'text/javascript';
    s.defer = &quot;defer&quot;;
    s.async = true;
    s.src = 'http://platform.twitter.com/widgets.js';
    c.parentNode.insertBefore(s, c);
    })();

function renderTweetButton(tbutton,tlink){
    var href = $(&quot;#&quot;+tlink).attr('href'),
        $target = $(&quot;#&quot;+tbutton),
        qstring = $.param({ url: href, count: &quot;vertical&quot; }),
        toinsert = '&amp;lt;iframe allowtransparency=&quot;true&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;http://platform.twitter.com/widgets/tweet_button.html?'+qstring+'&quot; style=&quot;width:57px; height:70px;&quot;&amp;gt;&amp;lt;/iframe&amp;gt;';
    $target.html(toinsert);
}

$(&quot;#hoverlink&quot;).mouseenter(function() {
    renderTweetButton(&quot;tbutton&quot;,&quot;tlink&quot;);
});

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

&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저도 같은 문제가 있었습니다. JQuery에서 작동합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$.getScript('http://platform.twitter.com/widgets.js');
&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;@Anywhere 라이브러리를 사용해 보십시오.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;샘플 js 코드:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;twttr.anywhere(function (T) {
        T(&quot;#tweetbox&quot;).tweetBox({
        counter: false,
        defaultContent: &quot;Default text in a Tweet box...&quot;,
        label: &quot;Share this page on Twitter&quot;
});
&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/6206471/&lt;a href=&quot;https://stackoverflow.com/questions/6206471/re-render-tweet-button-via-js&quot; target=&quot;_blank&quot; papago-id=&quot;25-1&quot;&gt;re-render-tweet-button-via-js&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/449</guid>
      <comments>https://copysource.tistory.com/449#entry449comment</comments>
      <pubDate>Wed, 23 Aug 2023 23:34:00 +0900</pubDate>
    </item>
    <item>
      <title>잔가지 템플릿에서 모든 변수를 검색하는 방법은 무엇입니까?</title>
      <link>https://copysource.tistory.com/448</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;PHP로 Twig 템플릿 내의 모든 변수를 검색할 수 있습니까?&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;예: 일부 Template.twig.php:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Hello {{&amp;nbsp;name }}, 
your new email is {{&amp;nbsp;email }}
&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;$template = $twig-&amp;gt;loadTemplate('someTemplate');
$variables = $template-&amp;gt;getVariables();
&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;$dll에는 이제 &quot;이름&quot;과 &quot;이메일&quot;이 포함되어야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 이것을 하고 싶은 이유는 사용자가 제 잔가지 템플릿과 변수를 동적으로 설정하고 API를 통해 변수를 채우는 CMS 시스템에서 일하고 있기 때문입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기본값을 설정하지 않은 변수로 설정하고 싶으므로 템플릿 내에 존재하는 모든 변수의 목록이 필요합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 기능은 현재 컨텍스트에서 사용할 수 있는 모든 최상위 키를 가져오는 데 유용합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;ol&amp;gt;
    {% for key, value in _context  %}
      &amp;lt;li&amp;gt;{{ key }}&amp;lt;/li&amp;gt;
    {% endfor %}
&amp;lt;/ol&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;https://www.drupal.org/node/&lt;a href=&quot;https://www.drupal.org/node/1906780&quot; papago-id=&quot;8-1&quot;&gt;1906780 &lt;/a&gt;덕분입니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;strong papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;2019년 업데이트&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;비록 ~일지라도&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;{{ dump() }}&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;는 작동하며, 일부 상황에서는 PHP에서 너무 많은 정보를 생성할 경우(예: 재귀로 인해) &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;{{ dump(_context|keys) }}&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&gt;&lt;strong papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;2017년 업데이트&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;를 사용하면 가능합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;{{ dump() }}&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&gt;&lt;font 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;hr&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;/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;|default('your_value')&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 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;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;script&amp;gt;console.log({{ _context | json_encode | raw }});&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 DevTools를 사용하여 콘솔을 확인합니다.&lt;/font&gt;&lt;/p&gt;&lt;h2 papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;2015년 답변 추가&lt;/font&gt;&lt;/h2&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;그러나 버전 1.5 dump&lt;a href=&quot;http://twig.sensiolabs.org/doc/functions/dump.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;23-1&quot;&gt;()&lt;/a&gt; 기능이 추가되었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 매개 변수 없이 현재 컨텍스트 호출 dump()에서 모든 변수를 가져올 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;pre&amp;gt;
    {{ dump(user) }}
&amp;lt;/pre&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;24&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 Twig 환경을 생성할 때 &lt;a href=&quot;http://twig.sensiolabs.org/api/master/Twig_Extension_Debug.html&quot; papago-id=&quot;24-1&quot; rel=&quot;noreferrer&quot;&gt;Twig_Extension_Debug&lt;/a&gt; 확장을 명시적으로 추가해야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;dump()&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;$twig = new Twig_Environment($loader, array(
    'debug' =&amp;gt; true,
    // ...
));
$twig-&amp;gt;addExtension(new Twig_Extension_Debug());
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;했다면, 심니포등, 스사왔해다면용을, 실렉사▁sym,.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;dump()&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;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;http://twig.sensiolabs.org/doc/functions/dump.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;28&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;잔가지 함수&lt;/font&gt;&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2 papago-id=&quot;29&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;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;dump()&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;_context&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 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;a href=&quot;http://twig.sensiolabs.org/doc/templates.html#global-variables&quot; rel=&quot;noreferrer&quot; papago-id=&quot;33&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Twig 설명서에서 몇 가지 추가 정보를 찾을 수 있습니다.&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font 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;custom_variables&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;뭐 그런 거.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;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;{{ dump () }}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;em papago-id=&quot;37&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;출처: https://www.drupal.org/docs/8/theming/twig/&lt;a href=&quot;https://www.drupal.org/docs/8/theming/twig/discovering-and-inspecting-variables-in-twig-templates&quot; rel=&quot;noreferrer&quot; papago-id=&quot;37-1&quot;&gt;discovering-and-inspecting-variables-in-twig-templates&lt;/a&gt;&lt;/font&gt;&lt;/em&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;텍스트 내부에 모든 Twig 요소가 필요한 경우 다음을 사용합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;preg_match_all('/\{\%\s*(.*)\s*\%\}|\{\{(?!%)\s*((?:[^\s])*)\s*(?&amp;lt;!%)\}\}/i', $text, $matches);
&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;WSIWYG 에디터가 Twig 변수 안에 HTML 태그를 넣는 문제가 있었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음을 사용하여 필터링:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;public function cleanHTML($text)
{
    preg_match_all('/\{\%\s*(.*)\s*\%\}|\{\{(?!%)\s*((?:[^\s])*)\s*(?&amp;lt;!%)\}\}/i', $text, $matches);

    if (isset($matches[0]) &amp;amp;&amp;amp; count($matches[0])) {
        foreach ($matches[0] as $match) {
            $clean_match = strip_tags($match);

            $text = str_replace($match, $clean_match, $text);
        }
    }

    return $text;
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;40&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;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;preg_match_all('/\{\%\s*([^\%\}]*)\s*\%\}|\{\{\s*([^\}\}]*)\s*\}\}/i', $text, $matches);
&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;저는 19 Gerhard85의 답변이 꽤 좋다고 생각합니다. 비록 그것이 저에게 빈 문자열과 일치했기 때문에 약간의 수정이 필요할지도 모릅니다.&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;/**
 * @param $twigTemplateName
 * @return array
 */
public function getRequiredKeys($twigTemplateName)
{
    $twig = $this-&amp;gt;twig;
    $source = $twig-&amp;gt;getLoader()-&amp;gt;getSource($twigTemplateName);
    $tokens = $twig-&amp;gt;tokenize($source);
    $parsed = $twig-&amp;gt;getParser()-&amp;gt;parse($tokens);
    $collected = [];
    $this-&amp;gt;collectNodes($parsed, $collected);

    return array_keys($collected);
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;43&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 그것의 유일한 사용자 지정 부분은 특정 유형의 노드만 수집하는 재귀 함수입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;/**
 * @param \Twig_Node[] $nodes
 * @param array $collected
 */
private function collectNodes($nodes, array &amp;amp;$collected)
{
    foreach ($nodes as $node) {
        $childNodes = $node-&amp;gt;getIterator()-&amp;gt;getArrayCopy();
        if (!empty($childNodes)) {
            $this-&amp;gt;collectNodes($childNodes, $collected); // recursion
        } elseif ($node instanceof \Twig_Node_Expression_Name) {
            $name = $node-&amp;gt;getAttribute('name');
            $collected[$name] = $node; // ensure unique values
        }
    }
}
&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;Duncan의 대답을 꽤 오랫동안 사용한 후에 저는 마침내 템플릿의 모든 가지 변수를 덤프하는 &quot;올바른&quot; 방법을 찾았습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;{% dump %}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font 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;템플릿에서 사용할 수 있는 모든 변수는 다음과 같이 HTML의 중간이 아닌 프로파일러의 덤프 섹션에 덤프됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;{{ dump() }}&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;의 ,&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;dump()&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&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;{% set d = dump() %}
&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;당신은 모든 변수를 얻을 수 있지만 &quot;html 준비 완료&quot; html에서는 그것을 구문 분석하는 것이 어려울 것입니다.&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;도움이 되길 바랍니다.&lt;/font&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$loader1 = new Twig_Loader_Array([
    'blub.html' =&amp;gt; '{{ twig.template.code }}',
]);
$twig = new Twig_Environment($loader1);
$tokens = $twig-&amp;gt;tokenize($loader1-&amp;gt;getSource('blub.html'));
$nodes = $twig-&amp;gt;getParser()-&amp;gt;parse($tokens);

var_dump($this-&amp;gt;getTwigVariableNames($nodes));


function getTwigVariableNames($nodes): array
{
    $variables = [];
    foreach ($nodes as $node) {
        if ($node instanceof \Twig_Node_Expression_Name) {
            $name = $node-&amp;gt;getAttribute('name');
            $variables[$name] = $name;
        } elseif ($node instanceof \Twig_Node_Expression_Constant &amp;amp;&amp;amp; $nodes instanceof \Twig_Node_Expression_GetAttr) {
            $value = $node-&amp;gt;getAttribute('value');
            if (!empty($value) &amp;amp;&amp;amp; is_string($value)) {
                $variables[$value] = $value;
            }
        } elseif ($node instanceof \Twig_Node_Expression_GetAttr) {
            $path = implode('.', $this-&amp;gt;getTwigVariableNames($node));
            if (!empty($path)) {
                $variables[$path] = $path;
            }
        } elseif ($node instanceof \Twig_Node) {
            $variables += $this-&amp;gt;getTwigVariableNames($node);
        }
    }
    return $variables;
}
&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;/p&gt;&lt;p papago-id=&quot;52&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;템플릿을 구문 분석하고 반환되는 AST를 통과해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$loaded = $twig-&amp;gt;getLoader()-&amp;gt;getSource($template);
var_dump(extractVars($twig-&amp;gt;parse($twig-&amp;gt;tokenize($loaded))));

function extractVars($node)
{
    if (!$node instanceof Traversable) return array();

    $vars = array();
    foreach ($node as $cur)
    {
        if (get_class($cur) != 'Twig_Node_Expression_Name')
        {
            $vars = array_merge($vars, call_user_func(__FUNCTION__, $cur));
        }
        else if ($cur-&amp;gt;getAttribute('always_defined') == false)
        {
            // List only predefined variables expected by template, 
            // filtering out `v` and leaving `arr` from `{% for v in arr%}`
            $vars[] = $cur-&amp;gt;getAttribute('name');
        }
    }

    return $vars;
}
&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;Twig2Schema 클래스를 구축하여 Twig AST에서 변수를 추론했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;문서에서 변수를 가져오려면 Twig AST를 재귀적으로 &quot;걸어서&quot; 처리하고 특정 유형의 언어 노드가 발생할 때 규칙을 설정해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;54&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 클래스는 변수 이름이 항상 정의되지 않은 경우 노드에서 변수 이름을 추출하고 ForLoopNodes 및 IfStatement에 사용된 값에서 변수를 가져옵니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;20&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용하려면 전화를 걸어 주십시오.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;infer&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; 전체해에음을 합 템 플 릿 다 사 용 합 니 대 다 집 하 위 또 트 의 리 는 ▁for 니 합 ▁using 다 , 용 ▁tree 사 ▁of ▁the ▁a 전 ▁or ▁subset&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;inferFromAst&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&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-php prettyprint-override&quot;&gt;&lt;code&gt;&amp;lt;?php

class Twig2Schema
{
    /**
     * @param \Twig\Environment $twig - A twig environment containing loaded templates
     * @param $twigTemplateName - The name of the template to infer variables from
     * @param $config - A configuration object for this function
     * @return array
     */
    public function infer(\Twig\Environment $twig, $twigTemplateName)
    {
        $source = $twig-&amp;gt;getLoader()-&amp;gt;getSourceContext($twigTemplateName);
        $tokens = $twig-&amp;gt;tokenize($source);
        $ast = $twig-&amp;gt;parse($tokens);
        return $this-&amp;gt;inferFromAst($ast);
    }

    /**
     * @param \Twig\Node\ModuleNode $ast - An abstract syntax tree parsed from Twig
     * @return array - The variables used in the Twig template
     */
    public function inferFromAst(\Twig\Node\ModuleNode $ast)
    {
        $keys = $this-&amp;gt;visit($ast);

        foreach ($keys as $key =&amp;gt; $value) {
            if ($value['always_defined'] || $key === '_self') {
                unset($keys[$key]);
            }
        }

        return $keys;
    }

    /**
     * @param \Twig\Node\Node $ast - The tree to traverse and extract variables
     * @return array - The variables found in this tree
     */
    private function visit(\Twig\Node\Node $ast)
    {
        $vars = [];
        switch (get_class($ast)) {
            case \Twig\Node\Expression\AssignNameExpression::class:
            case \Twig\Node\Expression\NameExpression::class:
                $vars[$ast-&amp;gt;getAttribute('name')] = [
                    'type' =&amp;gt; get_class($ast),
                    'always_defined' =&amp;gt; $ast-&amp;gt;getAttribute('always_defined'),
                    'is_defined_test' =&amp;gt; $ast-&amp;gt;getAttribute('is_defined_test'),
                    'ignore_strict_check' =&amp;gt; $ast-&amp;gt;getAttribute('ignore_strict_check')
                ];
                break;
            case \Twig\Node\ForNode::class:
                foreach ($ast as $key =&amp;gt; $node) {
                    switch ($key) {
                        case 'value_target':
                            $vars[$node-&amp;gt;getAttribute('name')] = [
                                'for_loop_target' =&amp;gt; true,
                                'always_defined' =&amp;gt; $node-&amp;gt;getAttribute('always_defined')
                            ];
                            break;
                        case 'body':
                            $vars = array_merge($vars, $this-&amp;gt;visit($node));
                            break;
                        default:
                            break;
                    }
                }
                break;
            case \Twig\Node\IfNode::class:
                foreach ($ast-&amp;gt;getNode('tests') as $key =&amp;gt; $test) {
                    $vars = array_merge($vars, $this-&amp;gt;visit($test));
                }
                foreach ($ast-&amp;gt;getNode('else') as $key =&amp;gt; $else) {
                    $vars = array_merge($vars, $this-&amp;gt;visit($else));
                }
                break;
            default:
                if ($ast-&amp;gt;count()) {
                    foreach ($ast as $key =&amp;gt; $node) {
                        $vars = array_merge($vars, $this-&amp;gt;visit($node));
                    }
                }
                break;
        }
        return $vars;
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;58&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 위의 모든 답변을 시도하면서 꽤 하룻밤을 보낸 후, 저는 예상치 못한 이유로 regexps가 제 단순한 템플릿에서 전혀 작동하지 않는다는 것을 깨달았습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;정크 또는 부분 정보를 반환했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 저는 태그 ^_^을 세는 대신 태그 사이의 모든 내용을 지우는 것으로 가기로 결정했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내 말은, 만약 템플릿이&lt;/font&gt;&lt;/font&gt;&lt;code&gt;'AAA {{BB}} CC {{DD}} {{BB}} SS'&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;'}}'&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;25&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;템플릿의 시작 부분과&lt;/font&gt;&lt;/font&gt;&lt;code&gt;'{{&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&gt;&lt;/font&gt;&lt;code&gt;}}&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;27&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;{{&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;28&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그냥 옷을 벗고 중간에 콤마를 넣겠습니다 =&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;}}{{BB,}}{{DD,}}{{BB,}}{{&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;29&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러면 - 그냥 지우기&lt;/font&gt;&lt;/font&gt;&lt;code&gt;}}&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;30&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;{{&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;31&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;68&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;글을 쓰고 테스트하는 데 약 15분이 걸렸지만 정규식을 사용하여 약 5시간을 보냈지만 성공하지 못했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;/**
 * deletes ALL the string contents between all the designated characters
 * @param $start - pattern start 
 * @param $end   - pattern end
 * @param $string - input string, 
 * @return mixed - string
 */
 function auxDeleteAllBetween($start, $end, $string) {
    // it helps to assembte comma dilimited strings
    $string = strtr($start. $string . $end, array($start =&amp;gt; ','.$start, $end =&amp;gt; chr(2)));
    $startPos  = 0;
    $endPos = strlen($string);
    while( $startPos !== false &amp;amp;&amp;amp; $endPos !== false){
        $startPos = strpos($string, $start);
        $endPos = strpos($string, $end);
        if ($startPos === false || $endPos === false) {
            return $string;
        }
        $textToDelete = substr($string, $startPos, ($endPos + strlen($end)) - $startPos);
        $string = str_replace($textToDelete, '', $string);
    }
    return $string;
}

/**
 * This function is intended to replace
 * //preg_match_all('/\{\%\s*([^\%\}]*)\s*\%\}|\{\{\s*([^\}\}]*)\s*\}\}/i', 
 * which did not give intended results for some reason.
 *
 * @param $inputTpl
 * @return array
 */
private function auxGetAllTags($inputTpl){
   $inputTpl = strtr($inputTpl, array('}}' =&amp;gt; ','.chr(1), '{{' =&amp;gt; chr(2)));
   return explode(',',$this-&amp;gt;auxDeleteAllBetween(chr(1),chr(2),$inputTpl));
}


$template = '&amp;lt;style&amp;gt;
td{border-bottom:1px solid #eee;}&amp;lt;/style&amp;gt;
&amp;lt;p&amp;gt;Dear {{jedi}},&amp;lt;br&amp;gt;New {{padawan}} is waiting for your approval: &amp;lt;/p&amp;gt;
&amp;lt;table border=&quot;0&quot;&amp;gt;
&amp;lt;tbody&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;strong&amp;gt;Register as&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;{{register_as}}, user-{{level}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;strong&amp;gt;Name&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;{{first_name}} {{last_name}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;...';

print_r($this-&amp;gt;auxGetAllTags($template));
&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;p papago-id=&quot;70&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;twig 컴파일 프로세스를 보면 twig 컴파일 프로세스에 ignore_strict_check라는 매개 변수가 있다는 것을 알 수 있습니다. twig/src/Node/Expression/NameExpression 파일이 누락된 변수를 null로 대체하지만, false 컴파일이 실행 시간 오류를 발생시킬 경우 파일 twig/src/Node/Node/Expression/NameExpression을 확인합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Symphony의 php line 63 당신은 twig 패키지 구성 strict_false: false를 통해 이 매개 변수를 설정할 수 있습니다.&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;Twig_Extension을 만들고 &lt;strong papago-id=&quot;71-1&quot;&gt;needs_context&lt;/strong&gt; 플래그를 사용하여 함수를 추가합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;class MyTwigExtension extends Twig_Extension{
   public function getFunctions()
    {
        return array(
            new \Twig_SimpleFunction('myTwigFunction', array($this, 'myTwigFunction'), array('needs_context' =&amp;gt; true)),
        );
    }

    public function myTwigFunction($context)
    {
        var_dump($context);
        return '';
    }
}
&lt;/code&gt;&lt;/pre&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;/p&gt; 
&lt;p papago-id=&quot;73&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Twig 템플릿에서 해당 함수를 호출하기만 하면 됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;{{myTwigFunction()}}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;74&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Twig Extension을 만드는 데 도움이 필요한 경우 다음 문서를 참조하십시오.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;http://twig.sensiolabs.org/doc/2.x/advanced.html&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;75&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;http://twig.sensiolabs.org/doc/2.x/advanced.html&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p papago-id=&quot;76&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 질문은 &lt;a href=&quot;https://stackoverflow.com/questions/16757993/get-all-variables-used-in-a-twig-template-file?answertab=oldest#tab-top&quot; papago-id=&quot;76-1&quot;&gt;중복&lt;/a&gt;됩니다. &lt;a href=&quot;https://stackoverflow.com/questions/16757993/get-all-variables-used-in-a-twig-template-file?answertab=oldest#tab-top&quot; papago-id=&quot;76-1&quot;&gt;위&lt;/a&gt;의 질문보다 유용하고 강력한 RegEX를 발견했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 좀 더 정확하게 일치하도록 개선되었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;\{\{(?!%)\s* # Starts with {{ not followed by % followed by 0 or more spaces
  ((?:(?!\.)[^\s])*?) # Match anything without a point or space in it
  (\|(?:(?!\.)[^\s])*)? # Match filter within variable
\s*(?&amp;lt;!%)\}\} # Ends with 0 or more spaces not followed by % ending with }}
| # Or
\{%\s* # Starts with {% followed by 0 or more spaces
  (?:\s(?!endfor)|(endif)|(else)(\w+))+ # Match the last word which can not be endfor, endif or else
\s*%\} # Ends with 0 or more spaces followed by %}
# Flags: i: case insensitive matching | x: Turn on free-spacing mode to ignore whitespace between regex tokens, and allow # comments.
&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;Twig 3.0에 대한 실제 솔루션을 준비합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-php prettyprint-override&quot;&gt;&lt;code&gt;function visit(\Twig\Node\Node $node, &amp;amp;$variables)
{
    // @see https://github.com/twigphp/Twig/issues/2340 for details about NodeCaptureInterface
    if ($node instanceof \Twig\Node\NodeCaptureInterface) {
        return;
    }

    if ($node instanceof \Twig\Node\Expression\NameExpression
        &amp;amp;&amp;amp; false === $node-&amp;gt;getAttribute('always_defined') // ignore scoped names as (key, value) in for loop 
    ) {
        $variables[$node-&amp;gt;getAttribute('name')] = null;

        return;
    }

    foreach ($node as $child) {
        visit($child, $variables);
    }
}

// @var Twig\Environment $twig

// create template from string
$template = 'my template {{ var }}';
$source = new \Twig\Source($template, 'template');
// or get from loader
// $source = $twig-&amp;gt;getLoader()-&amp;gt;getSourceContext('template.twig.html');

// tokenize and par
$tokens = $twig-&amp;gt;tokenize($source);
$nodes = $twig-&amp;gt;parse($tokens);

$variables = [];
visit($nodes, $variables);

var_dump(array_keys($variables));
&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;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/12799094/&lt;a href=&quot;https://stackoverflow.com/questions/12799094/how-to-retrieve-all-variables-from-a-twig-template&quot; target=&quot;_blank&quot; papago-id=&quot;78-1&quot;&gt;how-to-retrieve-all-variables-from-a-twig-template&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/448</guid>
      <comments>https://copysource.tistory.com/448#entry448comment</comments>
      <pubDate>Wed, 23 Aug 2023 23:28:09 +0900</pubDate>
    </item>
    <item>
      <title>어떻게 &amp;quot;순서별&amp;quot; 필터링 순서</title>
      <link>https://copysource.tistory.com/447</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;어떻게 &quot;순서별&quot; 필터링 순서&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;SQL 쿼리를 입력하는 ID에 따라 순서를 지정하기 위해 수행할 수 있는 트릭은 무엇입니까?&lt;/font&gt;&lt;/font&gt;&lt;code&gt;in&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;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;select oh.orderID, oh.orderType, oh.state, oh.orderDateTime
from orderHeaders oh 
where oh.orderID in (
47185154,
47185121,
47184971,
47863101)
&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;orderID&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;47184971...
47863101...
47185121...
47185154...
&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;WHERE IN (...)&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;field()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;select oh.orderID, oh.orderType, oh.state, oh.orderDateTime
from orderHeaders oh 
where oh.orderID in (47185154, 47185121, 47184971, 47863101)
order by field(oh.orderID, 47185154, 47185121, 47184971, 47863101);
&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;ORDER BY
CASE oh.OrderID 
WHEN '47185154' THEN 1
WHEN '47185121' THEN 2
WHEN '47184971' THEN 3
WHEN '47863101' THEN 4
ELSE 5
END
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/42854487/&lt;a href=&quot;https://stackoverflow.com/questions/42854487/how-do-we-order-by-filtering-order&quot; target=&quot;_blank&quot; papago-id=&quot;11-1&quot;&gt;how-do-we-order-by-filtering-order&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/447</guid>
      <comments>https://copysource.tistory.com/447#entry447comment</comments>
      <pubDate>Wed, 23 Aug 2023 23:24:14 +0900</pubDate>
    </item>
    <item>
      <title>데이터 사전 mariadb에서 참조 테이블을 찾을 수 없습니다.</title>
      <link>https://copysource.tistory.com/446</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;데이터 사전 mariadb에서 참조 테이블을 찾을 수 없습니다.&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 저는 이 Mariadb 코드를 과제에 대한 해결책으로 작성하여 HeidiSQL에서 실행하고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이론적으로는 작동하지만 SQL 오류(1005)라는 오류 메시지가 표시됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;bestellung.arbetetin 테이블을 만들 수 없습니다(errno: 150 &quot;외부 키 제약 조건이 잘못 형성되었습니다&quot;).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;show warning을 사용하면 프로그램은 &quot;참조 테이블 bestellung.arbetitin이 데이터 사전에서 찾을 수 없음&quot;을 자세히 설명합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;궁금한 게 있는데, 코드에 무슨 문제가 있나요?&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Datum date not NULL,
Abholtermin DATE,
Kostenstelle int not NULL,
Abteilung char(5) not NULL,
Mitarbeiter int not NULL,
Telefon int not NULL,
primary key (Bestellnummer)
);

create table enthaelt (
FK_Bestellnummer int not NULL,
FK_Artikelnummer char(10) not NULL,
Menge int not NULL,
unique key (FK_Bestellnummer, FK_Artikelnummer)
);

alter table enthaelt ADD
constraint FK_ArtikelNr
foreign key (FK_Artikelnummer)
references Artikel (Artikelnummer);

alter table enthaelt ADD
constraint FK_BestellNr
foreign key (FK_Bestellnummer)
references Bestellung (Bestellnummer);

create table arbeitetin
(
FK_PersNr int not NULL,
FK_ProjektNr int not NULL,
unique key(FK_PersNr, FK_ProjektNr)
);

alter table arbeitetin ADD 
    constraint FK_ARBEITETIN_MITARBEITER1 
        FOREIGN KEY (FK_PersNr) 
            REFERENCES Mitarbeiter (PersNr);

alter table arbeitetin ADD
    constraint FK_ARBEITETIN_PROJEKT
        foreign key (FK_ProjektNr)
            references Projekt (ProjektNr);

alter table Mitarbeiter ADD
    constraint FK_MITARBEITER_ABTEILUNG
        foreign key (FK_Abkuerzung)
            references Abteilung (Abkuerzung); ``` 
&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;URL : https://stackoverflow.com/questions/69274183/&lt;a href=&quot;https://stackoverflow.com/questions/69274183/referenced-table-not-found-in-the-data-dictionary-mariadb&quot; target=&quot;_blank&quot; papago-id=&quot;2-1&quot;&gt;referenced-table-not-found-in-the-data-dictionary-mariadb&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/446</guid>
      <comments>https://copysource.tistory.com/446#entry446comment</comments>
      <pubDate>Sun, 4 Jun 2023 18:36:52 +0900</pubDate>
    </item>
    <item>
      <title>새 활동을 시작하는 방법 버튼 클릭</title>
      <link>https://copysource.tistory.com/445</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;Android 응용 프로그램에서 다른 활동의 단추를 클릭할 때 새 활동(GUI)을 시작하는 방법과 이 두 활동 간에 데이터를 전달하는 방법은 무엇입니까?&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;Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
myIntent.putExtra(&quot;key&quot;, value); //Optional parameters
CurrentActivity.this.startActivity(myIntent);
&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;@Override
protected void onCreate(Bundle savedInstanceState) {
    Intent intent = getIntent();
    String value = intent.getStringExtra(&quot;key&quot;); //if it's a string you stored.
}
&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;AndroidManifest.xml에 새 활동을 추가하는 것을 잊지 마십시오.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;activity android:label=&quot;@string/app_name&quot; android:name=&quot;NextActivity&quot;/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;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;하는 방법은 세,  Android를 합니다. » » » » » » » » »&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Intent&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;class;&lt;a href=&quot;https://developer.android.com/reference/android/content/Intent.html&quot; papago-id=&quot;6-1&quot; rel=&quot;noreferrer&quot;&gt; 의도&lt;/a&gt; | &lt;a href=&quot;https://developer.android.com/reference/android/content/Intent.html&quot; papago-id=&quot;6-1&quot; rel=&quot;noreferrer&quot;&gt;안드로이드 개발자&lt;/a&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;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;onClick&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;버튼의 속성. (시작)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li&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;OnClickListener()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;익명의 수업을 통해.&lt;/font&gt;&lt;font 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;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 활범방법인스이터페위동는을  Wide &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;switch&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 class=&quot;papago-parent&quot;&gt;&lt;/font&gt; (&quot;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt; 아님) (&quot;&lt;font class=&quot;papago-parent&quot;&gt;Pro&quot;&lt;/font&gt; &lt;font class=&quot;papago-parent&quot;&gt;님)&lt;/font&gt;님)&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음은 당신이 따라가고 싶다면 제 예에 대한 &lt;a href=&quot;https://github.com/martinsing/ToNewActivityButtons&quot; rel=&quot;noreferrer&quot; papago-id=&quot;13-1&quot;&gt;링크&lt;/a&gt;입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&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;onClick&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&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;hr&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;onClick&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; 파일: .xml 파일:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;Button
    android:id=&quot;@+id/button1&quot;
    android:layout_width=&quot;wrap_content&quot;
    android:layout_height=&quot;wrap_content&quot;
    android:onClick=&quot;goToAnActivity&quot;
    android:text=&quot;to an activity&quot; /&amp;gt;

&amp;lt;Button
    android:id=&quot;@+id/button2&quot;
    android:layout_width=&quot;wrap_content&quot;
    android:layout_height=&quot;wrap_content&quot;
    android:onClick=&quot;goToAnotherActivity&quot;
    android:text=&quot;to another activity&quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Java 클래스:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);
}

public void goToAnActivity(View view) {
    Intent intent = new Intent(this, AnActivity.class);
    startActivity(intent);
}

public void goToAnotherActivity(View view) {
    Intent intent = new Intent(this, AnotherActivity.class);
    startActivity(intent);
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;19-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;onClick&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&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;단점&lt;/strong&gt;:&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;검토 시 가독성이 어렵습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol start=&quot;2&quot;&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;OnClickListener()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;익명의 수업을 통해.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;(중간)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;hr&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 이별도설경는우다니입정하로는을 입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;setOnClickListener()&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;button&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;onClick()&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&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;Java 클래스:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);

        Button button1 = (Button) findViewById(R.id.button1);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(view.getContext(), AnActivity.class);
                view.getContext().startActivity(intent);}
            });

        Button button2 = (Button) findViewById(R.id.button2);
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(view.getContext(), AnotherActivity.class);
                view.getContext().startActivity(intent);}
            });
&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;strong papago-id=&quot;29-0&quot;&gt;장점&lt;/strong&gt;:&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;즉석에서 쉽게 만들 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;30&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;30-0&quot;&gt;단점&lt;/strong&gt;:&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;익명 수업이 많아 복습 시 가독성이 어려워질 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol start=&quot;3&quot;&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; 활범방법인스이터페위동는을  Wide &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;switch&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 class=&quot;papago-parent&quot;&gt;&lt;/font&gt; (&quot;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt; 아님) (&quot;&lt;font class=&quot;papago-parent&quot;&gt;Pro&quot;&lt;/font&gt; &lt;font class=&quot;papago-parent&quot;&gt;님)&lt;/font&gt;님)&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;hr&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 당신이 사용할 때입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;switch&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;에서 사단대설명한추에 있는 &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;onClick()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;24&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모든 활동 단추를 관리하는 방법입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;36&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Java 클래스:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);

    Button button1 = (Button) findViewById(R.id.button1);
    Button button2 = (Button) findViewById(R.id.button2);
    button1.setOnClickListener(this);
    button2.setOnClickListener(this);
}

@Override
public void onClick(View view) {
    switch (view.getId()){
        case R.id.button1:
            Intent intent1 = new Intent(this, AnActivity.class);
            startActivity(intent1);
            break;
        case R.id.button2:
            Intent intent2 = new Intent(this, AnotherActivity.class);
            startActivity(intent2);
            break;
        default:
            break;
    }
&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;strong papago-id=&quot;37-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;onClick()&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;hr&gt; 
&lt;p papago-id=&quot;39&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;질문의 두 번째 부분인 데이터 전달은 Android&lt;a href=&quot;https://stackoverflow.com/questions/2091465/how-do-i-pass-data-between-activities-on-android&quot; papago-id=&quot;39-1&quot;&gt; 응용&lt;/a&gt; 프로그램에서 &lt;a href=&quot;https://stackoverflow.com/questions/2091465/how-do-i-pass-data-between-activities-on-android&quot; papago-id=&quot;39-1&quot;&gt;활동 간에 데이터를 전달하는 방법을 참조&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;편집: &quot;Pro&quot;가 아님&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;font class=&quot;papago-parent&quot;&gt;ID(예: 데이터베이스 조회).&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Intent i = new Intent(getBaseContext(), ViewPerson.class);                      
i.putExtra(&quot;PersonID&quot;, personID);
startActivity(i);
&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;그런 다음 View Person Activity에서 추가 데이터 번들을 가져와 null이 아닌지 확인한 다음(가끔 데이터를 전달하지 않는 경우) 데이터를 가져올 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Bundle extras = getIntent().getExtras();
if(extras !=null)
{
     personID = extras.getString(&quot;PersonID&quot;);
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;43&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이제 두 활동 간에 데이터를 공유해야 하는 경우 글로벌 싱글톤도 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;public class YourApplication extends Application 
{     
     public SomeDataClass data = new SomeDataClass();
}
&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;YourApplication appState = ((YourApplication)this.getApplication());
appState.data.CallSomeFunctionHere(); // Do whatever you need to with data here.  Could be setter/getter or some other type of logic
&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;사용자가 버튼을 클릭하면 XML 바로 안쪽에 다음과 같이 표시됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;Button
         android:id=&quot;@+id/button&quot;
         android:layout_width=&quot;wrap_content&quot;
         android:layout_height=&quot;wrap_content&quot;
         android:text=&quot;TextButton&quot;
         android:onClick=&quot;buttonClickFunction&quot;/&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;속성을 사용하여 상위 활동에 있어야 하는 메서드 이름을 선언합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 저는 우리의 활동 안에서 다음과 같은 방법을 만들어야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;public void buttonClickFunction(View v)
{
            Intent intent = new Intent(getApplicationContext(), Your_Next_Activity.class);
            startActivity(intent);
}
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;Intent iinent= new Intent(Homeactivity.this,secondactivity.class);
startActivity(iinent);
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;    Intent in = new Intent(getApplicationContext(),SecondaryScreen.class);    
    startActivity(in);

    This is an explicit intent to start secondscreen activity.
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;47&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;엠마누엘,&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;48&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;활동을 시작하기 전에 추가 정보를 입력해야 합니다. 그렇지 않으면 다음 활동의 onCreate 메서드에서 데이터에 액세스하는 경우 데이터를 아직 사용할 수 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);

myIntent.putExtra(&quot;key&quot;, value);

CurrentActivity.this.startActivity(myIntent);
&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;startActivity(new Intent(MainActivity.this, SecondActivity.class));
&lt;/code&gt;&lt;/pre&gt;&lt;h1 papago-id=&quot;50&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;코틀린&lt;/font&gt;&lt;/h1&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;51&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;startActivity(Intent(this, SecondActivity::class.java)
  .putExtra(&quot;key&quot;, &quot;value&quot;))
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;52&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;val value = getIntent().getStringExtra(&quot;key&quot;)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;53&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;54&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;companion object {
    val PUT_EXTRA_USER = &quot;user&quot;
}
startActivity(Intent(this, SecondActivity::class.java)
  .putExtra(PUT_EXTRA_USER, &quot;value&quot;))
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;55&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;보내는 활동에서 다음 코드를 시도합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;   //EXTRA_MESSAGE is our key and it's value is 'packagename.MESSAGE'
    public static final String EXTRA_MESSAGE = &quot;packageName.MESSAGE&quot;;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
       ....

        //Here we declare our send button
        Button sendButton = (Button) findViewById(R.id.send_button);
        sendButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //declare our intent object which takes two parameters, the context and the new activity name

                // the name of the receiving activity is declared in the Intent Constructor
                Intent intent = new Intent(getApplicationContext(), NameOfReceivingActivity.class);

                String sendMessage = &quot;hello world&quot;
                //put the text inside the intent and send it to another Activity
                intent.putExtra(EXTRA_MESSAGE, sendMessage);
                //start the activity
                startActivity(intent);

            }
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;56&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;수신 활동에서 다음 코드를 시도합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;   protected void onCreate(Bundle savedInstanceState) {
 //use the getIntent()method to receive the data from another activity
 Intent intent = getIntent();

//extract the string, with the getStringExtra method
String message = intent.getStringExtra(NewActivityName.EXTRA_MESSAGE);
&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;그런 다음 AndroidManifest.xml 파일에 다음 코드를 추가합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;  android:name=&quot;packagename.NameOfTheReceivingActivity&quot;
  android:label=&quot;Title of the Activity&quot;
  android:parentActivityName=&quot;packagename.NameOfSendingActivity&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;pre class=&quot;lang-java prettyprint-override&quot;&gt;&lt;code&gt;Intent i = new Intent(firstactivity.this, secondactivity.class);
startActivity(i);
&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 class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다른 활동에서 활동을 시작하는 것은 안드로이드 애플리케이션에서 매우 일반적인 시나리오입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;59&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;활동을 시작하려면 Intent &lt;a href=&quot;https://developer.android.com/reference/android/content/Intent&quot; papago-id=&quot;59-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;개체&lt;/a&gt;가 필요합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;h2 papago-id=&quot;60&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;61&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;의도 객체는 생성자에서 두 개의 매개 변수를 &lt;strong papago-id=&quot;61-1&quot;&gt;사용&lt;/strong&gt;합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong papago-id=&quot;62&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;맥락&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;63&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;63-0&quot;&gt;시작할 활동의 이름&lt;/strong&gt;입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;(또는 전체 패키지 이름)&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;blockquote&gt; 
 &lt;h3 papago-id=&quot;64&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예:&lt;/font&gt;&lt;/h3&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;&lt;a href=&quot;https://i.stack.imgur.com/N1tXo.png&quot; rel=&quot;nofollow noreferrer&quot;&gt;&lt;img src=&quot;https://i.stack.imgur.com/N1tXo.png&quot; alt=&quot;여기에 이미지 설명 입력&quot; papago-attr-id=&quot;1&quot;&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;29&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;를 들어,두 활동이 , 를 들어, 들어예를두한면, 만당신가 활다동을지이래그서약,ities한다▁activ▁so면▁say,&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;HomeActivity&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&gt;&lt;code&gt;DetailActivity&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;code&gt;DetailActivity&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;HomeActivity &lt;/code&gt; &lt;font papago-translate=&quot;splited&quot;&gt;&lt;strong papago-id=&quot;33&quot; papago-translate=&quot;translated&quot;&gt;&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;(홈 활동--&amp;gt;상세 활동).&lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&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;다음은 Detail Activity를 시작하는 방법을 보여주는 코드 조각입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&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;/p&gt; 
&lt;/blockquote&gt; 
&lt;pre&gt;&lt;code&gt;Intent i = new Intent(HomeActivity.this,DetailActivity.class);
startActivity(i);
&lt;/code&gt;&lt;/pre&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;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;73&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;버튼으로 되돌아와서 파트를 클릭합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;pre&gt;&lt;code&gt;Button button = (Button) findViewById(R.id.someid);

button.setOnClickListener(new View.OnClickListener() {
     
     @Override
     public void onClick(View view) {
         Intent i = new Intent(HomeActivity.this,DetailActivity.class);
         startActivity(i);  
      }

});
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;74&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;새로운 활동을 시작하는 방법은 의도를 브로드캐스트하는 것이며, 한 활동에서 다른 활동으로 데이터를 전달하는 데 사용할 수 있는 특정한 종류의 의도가 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 추천하는 것은 &lt;a href=&quot;http://developer.android.com/guide/topics/intents/intents-filters.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;74-1&quot;&gt;당신&lt;/a&gt;이 의도와 관련된 안드로이드 개발자 문서를 확인하는 것입니다. 그것은 그 주제에 대한 풍부한 정보이고 예시도 가지고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;75&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;Intent myIntent = new Intent();
FirstActivity.this.SecondActivity(myIntent);
&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;Intent intent = new Intent(getBaseContext(), YourActivity.class);
intent.putExtra(&quot;USER_NAME&quot;, &quot;xyz@gmail.com&quot;);
startActivity(intent);
&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;String s = getIntent().getStringExtra(&quot;USER_NAME&quot;);
&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;strong papago-id=&quot;78-1&quot;&gt;Kotlin&lt;/strong&gt;에서 /*로 할 수 있습니다. 첫 번째 활동에서 활동 레이아웃에 ID가 있는 단추가 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;한 활동에서 다른 활동으로 데이터를 문자열 유형으로 전달해야 한다고 가정합니다 */&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;     val btn = findViewById&amp;lt;Button&amp;gt;(R.id.button)
     btn.setOnClickListener {
        val intent = Intent(baseContext, SecondActivity::class.java).apply {
             putExtra(&quot;KEY&quot;, data)
        }
        startActivity(intent)
     }
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;79&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;두 번째 활동에서는 다음과 같이 다른 활동에서 데이터를 얻을 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; val name = intent.getStringExtra(&quot;KEY&quot;)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;80&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용자 지정 개체를 전달해야 하는 경우 이 개체를 구획할 수 있어야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;한 활동에서 다른 활동으로 전달해야 하는 클래스 콜라주 유형이 있음 */&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import android.os.Parcelable
import kotlinx.android.parcel.Parcelize

@Parcelize
class Collage(val name: String, val mobile: String, val email: String) : Parcelable
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;81&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;활동 먼저, 여기서 데이터가 콜라주 유형이라고 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다른 활동으로 넘어가야 합니다&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;*/&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;val btn = findViewById&amp;lt;Button&amp;gt;(R.id.button)
         btn.setOnClickListener {
            val intent = Intent(baseContext, SecondActivity::class.java).apply {
                 putExtra(&quot;KEY&quot;, data)
            }
            startActivity(intent)
         }
&lt;/code&gt;&lt;/pre&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;/p&gt; 
&lt;pre&gt;&lt;code&gt;val item = intent.extras?.getParcelable&amp;lt;Collage&amp;gt;(&quot;KEY&quot;)
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;Button button = findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(SplashActivity.this,HomeActivity.class);
            startActivity(intent);
        }
    });
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;83&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;ClickListener 인터페이스에서 onClick 메서드를 재정의합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;ImageView btnSearch;

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search1);
        ImageView btnSearch = (ImageView) findViewById(R.id.btnSearch);
        btnSearch.setOnClickListener(this);
    }

@Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btnSearch: {
                Intent intent = new Intent(Search.this,SearchFeedActivity.class);
                startActivity(intent);
                break;
            }
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;84&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;85&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;testActivityBtn1.setOnClickListener{
      val intent = Intent(applicationContext,MainActivity::class.java)
      startActivity(intent)

 }
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;86&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;버튼 클릭 시 활동을 여는 가장 간단한 방법은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;34&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;res 폴더 아래에 두 개의 활동을 만들고, 첫 번째 활동에 단추를 추가하고, 이름을 지정합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;onclick&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&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;89&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;각 활동에 대해 두 개의 Java 파일이 있어야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;90&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음은 코드입니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p papago-id=&quot;91&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기본 활동.java&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-java prettyprint-override&quot;&gt;&lt;code&gt;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.content.Intent;
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void goToAnotherActivity(View view) {
        Intent intent = new Intent(this, SecondActivity.class);
        startActivity(intent);
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;92&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;두 번째 활동.java&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-java prettyprint-override&quot;&gt;&lt;code&gt;package com.example.myapplication;
import android.app.Activity;
import android.os.Bundle;
public class SecondActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity1);
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;93&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;AndroidManifest.xml(이 코드 블록을 기존에 추가하기만 하면 됨)&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-xml prettyprint-override&quot;&gt;&lt;code&gt; &amp;lt;/activity&amp;gt;
        &amp;lt;activity android:name=&quot;.SecondActivity&quot;&amp;gt;
  &amp;lt;/activity&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;94&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;Button
        android:id=&quot;@+id/pre&quot;
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:background=&quot;@mipmap/ic_launcher&quot;
        android:text=&quot;Your Text&quot;
        /&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;95&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;단추를 귀 기울이도록 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; pre.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, SecondActivity.class);
            startActivity(intent);
        }
    });
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong papago-id=&quot;96&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;loginBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent= new Intent(getApplicationContext(), NextActivity.class);
        intent.putExtra(&quot;data&quot;, value); //pass data
        startActivity(intent);
    }
});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;36&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음에서 추가 데이터 수신&lt;/font&gt;&lt;/font&gt;&lt;code&gt;NextActivity.class&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&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Bundle extra = getIntent().getExtras();
if (extra != null){
    String str = (String) extra.get(&quot;data&quot;); // get a object
}
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;99&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;첫 번째 활동에서 코드를 작성합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {


Intent intent = new Intent(MainActivity.this, SecondAcitvity.class);
                       //You can use String ,arraylist ,integer ,float and all data type.
                       intent.putExtra(&quot;Key&quot;,&quot;value&quot;);
                       startActivity(intent);
                        finish();
            }
         });
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;100&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;두 번째 Activity.class에서&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;String name = getIntent().getStringExtra(&quot;Key&quot;);
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;101&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;Button
    android:id=&quot;@+id/button&quot;
    android:layout_width=&quot;wrap_content&quot;
    android:layout_height=&quot;wrap_content&quot;
    android:text=&quot;Button&quot;
/&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;102&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;103&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;In Activity On Create 메서드:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Button button =(Button) findViewById(R.id.button); 
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
       Intent intent = new 
            Intent(CurrentActivity.this,DesiredActivity.class);
            startActivity(intent);
    }
});
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;104&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;오래된 질문이지만 표시된 페이지를 전환하는 것이 목표라면 페이지를 전환할 때 한 가지 활동만 수행하고 ContentView()를 호출합니다(일반적으로 사용자가 단추를 클릭하면 응답함).&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;105&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;필요에 따라 setContentView()를 사용하여 전환합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;106&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Create()에 대한 유일한 기능은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    LayoutInflater layoutInflater = getLayoutInflater();

    final View mainPage = layoutInflater.inflate(R.layout.activity_main, null);
    setContentView (mainPage);
    Button openMenuButton = findViewById(R.id.openMenuButton);

    final View menuPage = layoutInflatter.inflate(R.layout.menu_page, null);
    Button someMenuButton = menuPage.findViewById(R.id.someMenuButton);

    openMenuButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            setContentView(menuPage);
        }
    });

    someMenuButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            do-something-interesting;
            setContentView(mainPage);
        }
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;107&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;앱을 종료하기 전에 Back(뒤로) 버튼을 사용하여 내부 페이지로 돌아가려면, 컨텐츠 뷰() 세트를 랩핑하여 페이지를 작은 페이지 스택에 저장하고 BackPressed() 핸들러에 해당 페이지를 팝합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;108&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;Button
    android:id=&quot;@+id/btn&quot;
    android:layout_width=&quot;wrap_content&quot;
    android:layout_height=&quot;wrap_content&quot;
    android:text=&quot;jump to activity b&quot;
    /&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;109&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;주 활동.java:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; Button btn=findViewVyId(R.id.btn);
btn.setOnClickListener(btnclick);
btnclick.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
               Intent intent=new Intent();
                intent.setClass(Mainactivity.this,b.class);
                startActivity(intent);
    }
});
&lt;/code&gt;&lt;/pre&gt;&lt;h1 papago-id=&quot;110&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;코틀린 2022&lt;/font&gt;&lt;/h1&gt; 
&lt;p papago-id=&quot;111&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-kotlin prettyprint-override&quot;&gt;&lt;code&gt;val a = Intent(this.context, BarcodeActivity::class.java)
        a.putExtra(&quot;barcode&quot;, barcode)
        startActivity(a)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;112&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-kotlin prettyprint-override&quot;&gt;&lt;code&gt;val intent: Intent = intent
var data = intent.getStringExtra(&quot;barcode&quot;)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;113&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기서 더 &lt;a href=&quot;https://stackoverflow.com/questions/45132729/get-string-extra-from-activity-kotlin&quot; papago-id=&quot;113-1&quot;&gt;읽기&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt; imageView.setOnClickListener(v -&amp;gt; {
// your code here
        });
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;114&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/4186021/&lt;a href=&quot;https://stackoverflow.com/questions/4186021/how-to-start-new-activity-on-button-click&quot; target=&quot;_blank&quot; papago-id=&quot;114-1&quot;&gt;how-to-start-new-activity-on-button-click&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/445</guid>
      <comments>https://copysource.tistory.com/445#entry445comment</comments>
      <pubDate>Sun, 4 Jun 2023 18:35:19 +0900</pubDate>
    </item>
    <item>
      <title>AppFabric이 다시 시작해도 제대로 복구되지 않음</title>
      <link>https://copysource.tistory.com/444</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;AppFabric이 다시 시작해도 제대로 복구되지 않음&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;blockquote&gt; 
 &lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;오류 코드 &amp;lt; ERRCA0017 &amp;gt;:SubStatus &amp;lt; ES0007 &amp;gt;:&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;일시적으로 오류가 발생했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;나중에 다시 시도하십시오.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;(서버가 제한된 상태이기 때문에 요청에 실패했습니다.)&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;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;이벤트 로그에서 Distributed CacheService를 찾았습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;exe가 가끔 다운되는 바람에 로컬 개발 환경에서 오류를 재현할 수 있는 간단한 방법이 생겼습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li 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;/li&gt; 
 &lt;li papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;AppFabric Caching Service&quot;를 다시 시작합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 저는 오류를 이해하기 시작합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/li&gt; 
&lt;/ul&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;Get-CacheClusterHealth&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;pre&gt;&lt;code&gt;NamedCache = MyCacheName
    Healthy              = 100,00
    UnderReconfiguration = 0,00
    NotPrimary           = 0,00
    NoWriteQuorum        = 0,00
    Throttled            = 0,00
&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;Unallocated named cache fractions
---------------------------------

NamedCache = MyCacheName
    Unallocated fraction     = 100,00
&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;Get-CacheClusterHealth&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;제가 알기로는 시간이 지나면(10분 이상) 저절로 고쳐지는 것 같습니다.&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;AppFabric을 더 빨리 복구할 수 있는 방법이 있습니까?&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;노드를 추가하면 클러스터를 다시 시작하는 데 걸리는 시간이 늘어남에 따라 노드 동기화 프로세스에 시간이 걸리는 것으로 판단됩니다.&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;예외적으로 appfabric 노드가 제한된 상태로 전환됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;노드에서 상한/낮은 워터마크를 설정하는 방법에 따라 조절된 상태로 전환됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 기본적으로 이 시간 이후에 캐시에 설정된 퇴거 정책에 따라 항목을 퇴거하기 시작하는 최고 수위가 90%라고 생각합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;일반적으로 LRU(최소한 최근에 사용됨)를 사용해야 하지만 캐시가 여전히 설정된 제한 내에서 실행될 수 없는 경우 서버가 다운되지 않도록 스스로 조절합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;귀하의 애플리케이션이 이러한 이벤트를 우아하게 처리할 수 있다면 도움이 될 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;앱의 클러스터 구성에 모든 노드가 나열되어 있는 경우 다음 번에 데이터를 가져올 때 앱이 다음 노드로 이동해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;우리는 일시적인 오류를 찾고 3번 재시도하는 재시도 루프를 사용합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;3번의 오류가 지속되면 로그를 기록하고 예외가 아닌 null을 반환합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이를 통해 응용 프로그램은 다른 노드에 액세스하거나 문제가 발생한 노드 시간을 복구할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; private object WithRetry(Func&amp;lt;object&amp;gt; method)
    {
        int tryCount = 0;
        bool done = false;
        object result = null;
        do
        {
            try
            {
                result = method();
                done = true;
            }
            catch (DataCacheException ex)
            {
                if (ex.ErrorCode == DataCacheErrorCode.KeyDoesNotExist)
                {
                    done = true;
                }
                else if ((ex.ErrorCode == DataCacheErrorCode.Timeout ||
                ex.ErrorCode == DataCacheErrorCode.RetryLater ||
                ex.ErrorCode == DataCacheErrorCode.ConnectionTerminated)
                &amp;amp;&amp;amp; tryCount &amp;lt; MaxTryCount)
                {                        
                    tryCount++;
                    LogRetryException(ex, tryCount);
                }
                else
                {
                    LogException(ex);
                    done = true;
                }
            }
        }
        while (!done);


 return result;
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이를 통해 다음과 같은 작업을 수행할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;private void AF_Put(string key, object value)
{
    WithRetry(() =&amp;gt; defaultCache.Put(key, value));
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또는:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;private object AF_Get(string key)
{
    return WithRetry(() =&amp;gt; defaultCache.Get(key));            
}
&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;2주 동안 머리를 긁적이며 WCF 서비스를 Azure에서 실행하기 위해 모든 것을 시도했지만 실패한 후 결국 Microsoft에 전화를 걸었습니다.&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;AppFabric의 상태+유지 관리를 수행하는 사이트의 런타임에서 실행되는 셸 스크립트...&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그 대본은 제가 애저 책에서 전혀 보지 못했던 것들을 가지고 있었지만, 그것은 일을 제대로 해냈습니다!&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;감사해요.&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/7483498/&lt;a href=&quot;https://stackoverflow.com/questions/7483498/appfabric-doesn-t-recover-well-from-restart&quot; target=&quot;_blank&quot; papago-id=&quot;22-1&quot;&gt;appfabric-doesn-t-recover-well-from-restart&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/444</guid>
      <comments>https://copysource.tistory.com/444#entry444comment</comments>
      <pubDate>Sun, 4 Jun 2023 18:33:47 +0900</pubDate>
    </item>
    <item>
      <title>다음 작업을 수행할 수 있습니까?각각의 루프를 거꾸로?</title>
      <link>https://copysource.tistory.com/443</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;저는 이것이 전통적인 방법으로 가능하다고 생각하지 않지만, 다음과 같은 장황한 코드입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;For Each s As String In myStringList Step -1
    //' Do stuff here
Next
&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;일반적인 For보다 먼저 myString 개체를 반전해야 할 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;각 루프 맞지요?&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;아래 Mike의 &lt;a href=&quot;https://stackoverflow.com/a/952156/4078718&quot; papago-id=&quot;3-1&quot;&gt;답변&lt;/a&gt;에 언급된 문서는 &lt;em papago-id=&quot;3-3&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;For Each&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;IEnumerable&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;/&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;IEnumerable&amp;lt;T&amp;gt;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;), 하지만 그것은 순서가 중요할 때 사용하면 안 된다고 말하는 것과 같지 &lt;em papago-id=&quot;6-1&quot;&gt;않습니다&lt;/em&gt;.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;많은 컬렉션(예: 어레이,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;List&amp;lt;T&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 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;/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;blockquote&gt; 
 &lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;9-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;다음 루프에서는 GetEnumerator 메서드에서 반환된 열거자 개체의 제어 하에 컬렉션의 트래버설이 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;통과 순서는 Visual Basic이 아니라 열거자 개체의 MoveNext 메서드에 의해 결정됩니다.&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;이는 신뢰할 수 없다고 말하는 것과 전혀 다릅니다.&lt;em papago-id=&quot;10-1&quot;&gt; 반복하는 컬렉션이 원하는 순서로 결과를 산출한다는 것&lt;/em&gt;을 알고 &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;font class=&quot;papago-parent&quot;&gt;다음과 같은 측면에서의 행동.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;IEnumerable&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;/&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;IEnumerable&amp;lt;T&amp;gt;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font 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;13&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 class=&quot;papago-parent&quot;&gt; 되리려면돌을을  하는 &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;IEnumerable&amp;lt;T&amp;gt;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용 - 위치별로 인덱싱된 컬렉션에 대해 역방향으로 반복해야 하는 경우(예: 배열 또는&lt;/font&gt;&lt;/font&gt;&lt;code&gt;List&amp;lt;T&amp;gt;&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;For&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;루프는 끝에서 시작하여 뒤로 작동합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&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;For i as integer = myStringList.Count-1 to 0 step -1
    dim s as string = myStringList.Item(i)
    ' Do your stuff with s
Next i
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 제가 알기로는 &quot;For...&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;각각의 &quot;뒤로&quot;, 하지만 그것은 몇몇 경우에는 좋을 것입니다.&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;a href=&quot;http://msdn.microsoft.com/en-us/library/5ebk1751(VS.80).aspx&quot; papago-id=&quot;20-1&quot; rel=&quot;noreferrer&quot;&gt;For&lt;/a&gt; Each의 &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/5ebk1751(VS.80).aspx&quot; papago-id=&quot;20-1&quot; rel=&quot;noreferrer&quot;&gt;MSDN 문서&lt;/a&gt;에는 반복 순서가 중요하지 않은 경우(순서가 없는 집합 등)에 For Each 구성이 명시적으로 존재한다고 명시되어 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 안타깝게도 순서가 정의되지 않았기 때문에 각각의 경우를 뒤집는 개념은 없습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;행운을 빕니다.&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;IEnuemrable(Of TSource)&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;열거 가능한 출처의 역순으로.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;프레임워크 4의 테스티그, 코드&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;For Each s As String In myStringList.Reverse
    //' Do stuff here
Next
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;작동하지 않았습니다. 올바른 방법은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;myStringList.Reverse() ' it is a method not a function
For Each s As String In myStringList
//' Do stuff here
Next
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;보기: &lt;a href=&quot;https://msdn.microsoft.com/en-us/library/d0td77tk(v=vs.110).aspx&quot; rel=&quot;noreferrer&quot; papago-id=&quot;26-1&quot;&gt;MSDN: 예약&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;For Each s As String In myStringList.Reverse
    //' Do stuff here
Next
&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;이 작업을 수행할 수 없는 이유는 기본 설계 피쳐로서 For Each가 마지막 요소 없이 열거형에 대해 또는 아직 알 수 없는 마지막 요소로 반복할 수 있기 때문입니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;28&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;효과:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Dim myArray() As String = {&quot;1&quot;, &quot;2&quot;, &quot;3&quot;, &quot;4&quot;, &quot;5&quot;}

For Each n As String In myArray.Reverse
    Debug.Print(n)
Next
&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;출력: 5 4 3 2 1&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;/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;Dim myArray() As String = {&quot;1&quot;, &quot;2&quot;, &quot;3&quot;, &quot;4&quot;, &quot;5&quot;}

For i As Integer = myArray.Length - 1 To 0 Step -1
    Debug.Print(myArray(i))
Next
&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;출력: 5 4 3 2 1&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;이전에 사용했던 각 어레이에 대해 를 사용하여 어레이를 생성한 다음 array.reverse를 사용하고 어레이에서 각 어레이에 대해 를 실행해야 합니다.&lt;/font&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;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;대신 At(개체,0)를 삽입합니다.&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;되돌리려는 클래스에 확장 함수를 추가할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;Serializable()&amp;gt; Public Class SomeCollection
    Inherits CollectionBase
    Public Sub New()
    End Sub

    Public Sub Add(ByVal Value As Something)
        Me.List.Add(Value)
    End Sub

    Public Sub Remove(ByVal Value As Something)
        Me.List.Remove(Value)
    End Sub

    Public Function Contains(ByVal Value As Something) As Boolean
        Return Me.List.Contains(Value)
    End Function

    Public Function Item(ByVal Index As Integer) As Something
        Return DirectCast(Me.List.Item(Index), Something)
    End Function

    Public Function Reverse() As SomeCollection
        Dim revList As SomeCollection = New SomeCollection()
        For index As Integer = (Me.List.Count - 1) To 0 Step -1
             revList.List.Add(Me.List.Item(index))
        Next
        Return revList
    End Function
End Class
&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;For Each s As Something In SomeCollection.Reverse

Next
&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;step -1 ..다음 문장.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 참조하십시오.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Dim ff As New List(Of Integer)
For Each rRow As DataRow In DeletedRows
Dim item As Integer
item = rRow.Table.Rows.IndexOf(rRow)
ff.Add(item)
Next
For i As Integer = ff.Count - 1 To 0 Step -1
dim item as integer=ff(i)
next i
&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 papago-id=&quot;40&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;승인된 답변은 그 이유를 설명하지만 키가 있는 컬렉션(SortedList, SortedDictionary, Dictionary 등)에 대해 다른 예제를 추가하면 다음과 같은 작업을 수행할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;For Each Id as Tkey in MyCollection.Keys.Reverse
   // The item in question is now available as MyCollection(Id)
Next
&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;dim revList as New List (of ToolStripItem)  
For each objItem as ToolStripItem in Menu.DropDownItems
    revList.Add(objItem)
next
revList.reverse ' reverse the order of that list
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;42&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;역순으로 나열된 목록을 단계별로&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;for each objItem as ToolStripItem in revList   
    ' do whatever (like removing your menu from an ArrayMenu)
next
&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;ToolStripItem 및 Menu를 바꿉니다.&lt;/font&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;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/952136/&lt;a href=&quot;https://stackoverflow.com/questions/952136/is-it-possible-to-do-a-for-each-loop-backwards&quot; target=&quot;_blank&quot; papago-id=&quot;44-1&quot;&gt;is-it-possible-to-do-a-for-each-loop-backwards&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/443</guid>
      <comments>https://copysource.tistory.com/443#entry443comment</comments>
      <pubDate>Sun, 4 Jun 2023 18:32:58 +0900</pubDate>
    </item>
    <item>
      <title>응용 프로그램이 메인 스레드에서 너무 많은 작업을 수행하고 있을 수 있습니다.</title>
      <link>https://copysource.tistory.com/442</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;안드로이드 SDK/API 환경은 처음입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래프/차트를 그리려고 하는 것은 처음입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 3개의 다른 무료 라이브러리를 사용하여 에뮬레이터에서 다른 종류의 샘플 코드를 실행하려고 했지만 레이아웃 화면에 아무것도 표시되지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;로그캣이 다음 메시지를 반복하고 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;트레이스 포함(1378):&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;nativeGetEnabledTags의 예기치 않은 값: 0&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;I/안무가(1378):&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;55 프레임 건너뛰기!&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;/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 papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;4-1&quot;&gt;&lt;a href=&quot;http://vaibhavtolia.wordpress.com/2013/10/03/79/&quot; papago-id=&quot;4-1-0&quot; rel=&quot;noreferrer&quot;&gt;taked&lt;/a&gt;&lt;/strong&gt; from : &lt;strong papago-id=&quot;4-1&quot;&gt;&lt;a href=&quot;http://vaibhavtolia.wordpress.com/2013/10/03/79/&quot; papago-id=&quot;4-1-0&quot; rel=&quot;noreferrer&quot;&gt;Android UI &lt;/a&gt;&lt;/strong&gt;:&lt;strong papago-id=&quot;4-1&quot;&gt;&lt;a href=&quot;http://vaibhavtolia.wordpress.com/2013/10/03/79/&quot; papago-id=&quot;4-1-0&quot; rel=&quot;noreferrer&quot;&gt; 건너뛴&lt;/a&gt;&lt;/strong&gt; 프레임 &lt;strong papago-id=&quot;4-1&quot;&gt;&lt;a href=&quot;http://vaibhavtolia.wordpress.com/2013/10/03/79/&quot; papago-id=&quot;4-1-0&quot; rel=&quot;noreferrer&quot;&gt;수정&lt;/a&gt;&lt;/strong&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;안드로이드 애플리케이션을 개발하기 시작하는 사람은 로그캣 &quot;안무가&lt;strong papago-id=&quot;5-1&quot;&gt;(abc):&lt;/strong&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;5-1&quot;&gt; xx 프레임을 건너뛰었습니다!&lt;/strong&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;5-1&quot;&gt; 애플리케이션이 메인 스레드에서 너무 많은 작업을 수행하고 있을 수 있습니다.&quot;&lt;/strong&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;strong papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 코드 처리에 시간이 오래 걸리고 프레임이 건너뛰는 것을 의미합니다. 응용프로그램이나 DB 액세스의 핵심에서 수행 중인 일부 과도한 처리 또는 스레드가 잠시 중지되는 다른 작업 때문일 수 있습니다.&lt;/font&gt;&lt;/strong&gt; &lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음은 더 자세한 설명입니다.&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;안무가는 앱이 직접 vSync에 연결하고 시간을 적절하게 조정하여 성능을 향상시킬 수 있도록 지원합니다.&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;Android View 애니메이션은 내부적으로 동일한 목적으로 Choorographer를 사용합니다. 즉, 애니메이션 시간을 적절하게 조정하고 성능을 향상시키기 위한 것입니다.&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;안무가는 모든 vSync 이벤트에 대해 알려주기 때문에 Choreographer.post * 아피스에 전달된 Runnables 중 하나가 한 프레임 내에 완료되지 않아 프레임을 건너뛸 수 있는지 알 수 있습니다.&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;/p&gt; 
  &lt;p papago-id=&quot;12&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;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;13-1&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/11266535/meaning-of-choreographer-messages-in-logcat&quot; papago-id=&quot;13-1-0&quot;&gt;source&lt;/a&gt;&lt;/strong&gt; : &lt;strong papago-id=&quot;13-1&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/11266535/meaning-of-choreographer-messages-in-logcat&quot; papago-id=&quot;13-1-0&quot;&gt;Logcat&lt;/a&gt;&lt;/strong&gt;에서 &lt;strong papago-id=&quot;13-1&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/11266535/meaning-of-choreographer-messages-in-logcat&quot; papago-id=&quot;13-1-0&quot;&gt;안무가 메시지의 의미&lt;/a&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; 
 &lt;/blockquote&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;이 메시지가 Android Emulator에 표시되고 건너뛴 프레임 수가 매우 적을 때(100 미만) 에뮬레이터가 느릴 것으로 예상할 수 있습니다. 이는 거의 항상 발생하는 일입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 건너뛴 프레임 수가 300개 이상인 경우 코드에 심각한 문제가 발생할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Android 장치는 ios 및 Windows 장치와 달리 다양한 하드웨어로 제공됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;RAM과 CPU는 다양하며 모든 장치에서 합리적인 성능과 사용자 환경을 원한다면 이를 수정해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;프레임을 건너뛸 때 UI가 느리고 느리기 때문에 바람직한 사용자 환경이 아닙니다.&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;/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;가장 좋은 방법은 메인 UI 스레드와 분리된 스레드에서 아무리 작거나 크더라도 모든 처리를 수행하는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;SQLite Database에서 데이터에 액세스하거나 하드코어 연산을 수행하거나 단순히 어레이를 정렬하는 등 다양한 작업을 수행할 수 있습니다. – 다른 스레드에서 수행하십시오.&lt;/font&gt;&lt;/p&gt; 
 &lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이제 이러한 작업을 수행하기 위한 새 스레드를 만들고 응용 프로그램을 실행하면 &quot;보기 계층 구조를 만든 원래 스레드만 해당 보기를 터치할 수 있습니다.&quot;라는 메시지가 표시됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;안드로이드의 UI는 메인 스레드나 UI 스레드로만 변경할 수 있다는 사실을 알아야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이를 시도하는 다른 스레드는 실패하고 이 오류와 함께 충돌합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신이 해야 할 일은 RunOnUiThread 내부에 새로운 Runnable을 만드는 것이고, 이 Runnable 내부에는 UI와 관련된 모든 작업을 수행해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기서 &lt;a href=&quot;https://stackoverflow.com/questions/11254523/android-runonuithread-explanation&quot; papago-id=&quot;18-1&quot;&gt;예&lt;/a&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;그럼 메인 스레드에서 데이터를 처리할 수 있는 스레드와 Runnable이 있는데, 다른 것은 무엇입니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Android에는 UI 스레드에서 장시간 프로세스를 수행할 수 있는 AsyncTask가 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 기능은 애플리케이션이 데이터 기반 또는 웹 API 기반이거나 캔버스를 사용하여 빌드하는 것과 같은 복잡한 UI를 사용할 때 가장 유용합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;AsyncTask의 장점은 백그라운드에서 작업을 수행할 수 있다는 것입니다. 처리가 완료되면 지연 효과 없이 UI에서 필요한 작업을 수행할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이는 비동기 작업이 활동의 UI 스레드에서 파생되기 때문에 가능합니다. 비동기 작업을 통해 UI에서 수행하는 모든 작업은 기본 UI 스레드와 다른 스레드이며 사용자 상호 작용에 지장이 없습니다.&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;/blockquote&gt;&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다른 사람들이 위에서 대답했듯이, &quot;55프레임 건너뛰기!&quot;는 애플리케이션에 일부 무거운 처리가 있다는 것을 의미합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저의 경우, 저의 지원서에는 무거운 과정이 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 모든 것을 두 번, 세 번 확인했고 제가 생각하기에 조금 무거운 과정들을 제거했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;골격만 남을 때까지 단편, 활동, 라이브러리를 제거했습니다.&lt;/font&gt;&lt;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;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 위의 답변 중 도움이 되지 않는 경우 리소스 파일 크기도 확인할 수 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;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&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&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;그 특정 이미지는 약 130kB였고 제 안드로이드 앱에서 스플래시 화면과 홈 페이지에서 사용되었습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;br&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;strong papago-id=&quot;27-0&quot;&gt;해결책&lt;/strong&gt; - 저는 방금 그 특정 이미지를 드로잉 가능한 xxx 폴더에서 드로잉 가능한 폴더로 전환했고 배경에 있는 많은 메모리를 확보할 수 있었고 건너뛰기 프레임은 더 이상 건너뛰지 않았습니다.&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;업데이트 배경 그리기 가능한 파일을 저장하기 위해 'nodp' 그리기 가능한 리소스 폴더를 &lt;strong papago-id=&quot;2-0&quot;&gt;사용&lt;/strong&gt;합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/font&gt;&lt;br&gt; &lt;font papago-translate=&quot;splited&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/24682094/will-a-density-qualified-drawable-folder-or-drawable-nodpi-take-precedence&quot; papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&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;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;UI 스레드에서 지연되는 또 다른 일반적인 원인은 Shared Preferences 액세스입니다.&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;PreferenceManager.getSharedPreferences&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;처음으로 유사한 메서드를 사용하는 경우에는 관련된 .xml 파일이 즉시 로드되고 &lt;em papago-id=&quot;5-1&quot;&gt;동일&lt;/em&gt;한 스레드에서 &lt;em papago-id=&quot;5-1&quot;&gt;구문&lt;/em&gt; 분석됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;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; 중  빨리 되는 첫 번째  것입니다( 이문해결좋는하예스방백가중드한능하한빨리시것공작다니입트는는하기되 거유리설로를본나정드는그라운제레를서법드에은예▁one▁frome,:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;onCreate&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;응용 프로그램 클래스)를 참조하십시오.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font 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 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;이러한 경우에도 다음을 사용하여 UI를 중지하지 않을 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;MessageQueue.IdleHandler&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 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;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저도 같은 문제가 있었습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Android Emulator는 Android &amp;lt; 6.0&amp;gt; 벽동작습니했다게완하서에▁android▁android다니습▁6▁&amp;lt;했▁em동작.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 50)를 했을 때 했습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;I/Choreographer: Skipped frames&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;통나무 속에&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이  파일을 변경하여 해결했습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;hardwareAccelerated&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;에 대한 선택권.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;true&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&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;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    package=&quot;com.example.myapplication&quot;&amp;gt;

    &amp;lt;application android:hardwareAccelerated=&quot;true&quot;&amp;gt;
        ...
    &amp;lt;/application&amp;gt;
&amp;lt;/manifest&amp;gt;
&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;strong papago-id=&quot;41-0&quot;&gt;2022년 1월 업데이트&lt;/strong&gt;.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;@M의 댓글에 의하면.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Ed: &amp;gt; = 14 API를 대상으로 하는 경우 하드웨어 가속이 기본적으로 &lt;a href=&quot;https://developer.android.com/guide/topics/graphics/hardware-accel&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;41-2&quot;&gt;활성화&lt;/a&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;ul&gt; 
 &lt;li papago-id=&quot;43&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;가능한 경우 멀티 스레드 프로그래밍을 사용합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;스마트폰에 코어가 하나(프로세서에 코어가 두 개 이상 있는 경우 스레드가 서로 다른 코어에서 실행될 수 있음)라도 성능 면에서 큰 이점을 얻을 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신의 앱 로직을 UI와 분리하는 것이 유용합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Java 스레드, AsyncTask 또는 IntentService를 사용합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://developer.qualcomm.com/blog/multi-threading-android-apps-multi-core-processors-part-1-2&quot; papago-id=&quot;43-1&quot;&gt;이것&lt;/a&gt; 좀 봐요.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;44&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Android 개발 웹 사이트의 misc 성능 팁을 읽고 따르십시오.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://developer.android.com/training/articles/perf-tips.html&quot; papago-id=&quot;44-1&quot;&gt;여기&lt;/a&gt;를 확인하세요.&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt;&lt;p papago-id=&quot;45&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;전문가는 아니지만 안드로이드 애플리케이션에서 웹 서버로 데이터를 보내고 싶을 때 이 디버깅 메시지가 표시되었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;AsyncTask 클래스를 사용하고 백그라운드에서 데이터 전송을 수행했지만, 사용한 서버에서 결과 데이터를 다시 가져오기 위해 사용한 AsyncTask 클래스의 get() 메서드는 UI를 동기화하므로 UI가 너무 오래 기다려야 합니다.&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;46&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저도 같은 문제가 있었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제 경우에는 두 개의 중첩된 상대 레이아웃이 있었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;상대 레이아웃은 항상 두 개의 측정 패스를 수행해야 합니다.&lt;/font&gt;&lt;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;이미지 최적화...&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;100KB보다 큰 이미지 사용 안 함...&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이미지 로드는 CPU를 너무 많이 사용하여 앱이 중단됩니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;48&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이는 일반적으로 메인 스레드에서 거대한 프로세스를 실행할 때 발생합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;200개 미만의 프레임을 건너뛰어도 괜찮지만, 200개 이상의 프레임을 건너뛰면 응용 프로그램 UI 스레드 속도가 느려질 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;작업자 스레드라는 새 스레드에서 이러한 프로세스를 수행한 후 UI 스레드에 액세스하여 작업을 수행할 때(예: 보기로 작업하기, 보기 찾기 등) &lt;strong papago-id=&quot;48-1&quot;&gt;처리&lt;/strong&gt; 결과를 표시하기 위해 핸들러를 &lt;strong papago-id=&quot;48-1&quot;&gt;사용&lt;/strong&gt;하거나 OnUiThread를 &lt;strong papago-id=&quot;48-1&quot;&gt;실행&lt;/strong&gt;할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 문제를 완전히 해결합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;작업자 스레드를 사용하는 것은 매우 유용하거나 이러한 경우에 사용해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://stacklearn.ir&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;49&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;https://stacklearn.ir&lt;/font&gt;&lt;/a&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;저도 같은 문제가 있었습니다.&lt;/font&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 class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;51&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Android studio [File -&amp;gt; Invalidated Cache / Restart -&amp;gt; &quot;Invalidate and Restart&quot;를 클릭하여 문제를 해결했습니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제 앱도 같은 문제가 있었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 그것은 카드 목록과 텍스트를 표시하는 것 외에는 하지 않았습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;백그라운드에서 실행 중인 항목이 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 몇 가지 조사 결과 카드 배경에 설정된 이미지가 작음에도 불구하고(350kb) 이 원인인 것으로 나타났습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://romannurik.github.io/AndroidAssetStudio/index.html&quot; rel=&quot;nofollow&quot; papago-id=&quot;15-1&quot;&gt;그런&lt;/a&gt; 다음 http://romannurik.github.io/AndroidAssetStudio/index.html 을 사용하여 이미지를 9개의 이미지로 변환했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 저에게 효과가 있었습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;54&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저의 경우, 실수로 어떤 방법에 브레이크 포인트를 설정했기 때문입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;일단 클리어를 하고 나니 메시지가 사라지고 성능이 많이 향상되었습니다.&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 class=&quot;papago-parent&quot;&gt;내가 처음에 사용한 것처럼 더 선호하는 것은&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;SVG&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;PNG&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;JPG&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;Adobe Photoshop&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;Fotosizer&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;가장 쉬운 방법 중 하나는 모든 이미지 파일을 초기 크기의 거의 50%로 줄이는 데 도움이 되는 &lt;a href=&quot;https://compresspng.com/&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;22-1&quot;&gt;온라인&lt;/a&gt; 이미지 압축 도구입니다.&lt;/font&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;이것은 사실 문제가 아닙니다.&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;62&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리드 레이아웃에서 그리기 가능한 png 파일을 많이 사용하는 앱을 개발하다가 같은 문제가 생겼습니다.&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;그리고 나서 저는 그 png의 크기를 줄이려고 노력했습니다.&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;63&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;64&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저의 경우 2초마다 실행되고 실행되는 서비스를 사용하고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;UI 스레드, 문제가 있는지 궁금했지만 전혀 없었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 발견한 다음 문제는 제가 may 앱에서 큰 이미지를 사용하고 있다는 것이고 그것이 문제입니다.&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;이미지를 제거하고 새 이미지를 설정했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;66&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;결론 :- 당신의 코드를 조사해 보세요. 당신이 사용하고 있는 큰 크기의 원시 파일이 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;67&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;먼저 경고문을 읽습니다.&lt;/font&gt;&lt;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;68&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;아직 해결되지 않았지만 해결할 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;컴포지블 기능(버튼) 하나와 논리로 &quot;com&quot; 여부를 확인하는 작은 프로젝트를 위해.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;whatsapp&quot; 패키지가 장치(에뮬레이터)에 존재합니다. 시뮬레이터를 &lt;strong papago-id=&quot;68-1&quot;&gt;시작하는 동안&lt;/strong&gt; 동일한 로그에 다음이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;I/Choreographer: Skipped 34 frames!  The application may be doing too much work on its main thread.
&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;텍스트 보기에서 RoundBackgroundColorSpan!이었던 저의 경우, 저는 그것을 제거합니다. (픽셀 4XL이나 삼성 노트 10+와 같은 실제 스마트폰에서는 나타나지 않지만 칩 장치에서는 이렇게 느리게 보기 때문에 머리를 써서 찾습니다.)&lt;/font&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;/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;URL : https://stackoverflow.com/questions/14678593/&lt;a href=&quot;https://stackoverflow.com/questions/14678593/the-application-may-be-doing-too-much-work-on-its-main-thread&quot; target=&quot;_blank&quot; papago-id=&quot;71-1&quot;&gt;the-application-may-be-doing-too-much-work-on-its-main-thread&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/442</guid>
      <comments>https://copysource.tistory.com/442#entry442comment</comments>
      <pubDate>Sun, 4 Jun 2023 18:32:06 +0900</pubDate>
    </item>
    <item>
      <title>오류 해결 방법 &amp;quot;'운영' 환경에 대한 'secret_key_base' 누락&amp;quot;(레일 4.1)</title>
      <link>https://copysource.tistory.com/441</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;오류 해결 방법 &quot;'운영' 환경에 대한 'secret_key_base' 누락&quot;(레일 4.1)&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;저는 Rails 4.1을 사용하여 처음부터 Rails 응용프로그램을 만들었지만 해결할 수 없는 이상한 문제에 직면했습니다.&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;Heroku에 애플리케이션을 배포하려고 할 때마다 오류 500이 표시됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml`
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 그&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;secret.yml&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;pre&gt;&lt;code&gt;secret_key_base: &amp;lt;%= ENV[&quot;SECRET_KEY_BASE&quot;] %&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;에서 &quot;Heroku에를&quot;를했습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;SECRET_KEY_BASE&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;rake secret&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;지휘권&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;시작할 경우&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;heroku config&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;정확한 이름과 값을 가진 변수를 볼 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p 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;a href=&quot;https://gist.github.com/pablosalgadom/4d75f30517edc6230a67&quot; rel=&quot;noreferrer&quot; papago-id=&quot;10-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;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 4하려고 할 때  Unicon v4.8.에서 Rails 4.1을 사용했습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;unicorn.log&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;app error: Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml` (RuntimeError)
&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; 4 4.1의 하여 Rails 4.1의 관리 방식을 했습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;secret_key&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;secrets.yml&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;exampleRailsProject/config/secrets.yml&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음과 같은 것을 찾을 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;# Do not keep production secrets in the repository,
# instead read values from the environment.
production:
  secret_key_base: &amp;lt;%= ENV[&quot;SECRET_KEY_BASE&quot;] %&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, Rails에서는 환경 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;secret_key_base&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;서버에(Ubuntu의 Ubuntu)를.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&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;$ RAILS_ENV=production rake secret
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font 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;GENERATED_CODE&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;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;서버에 로그인&lt;/font&gt;&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;루트 사용자로 로그인하는 경우 다음 파일을 찾아 편집합니다.&lt;/font&gt;&lt;/p&gt; &lt;pre&gt;&lt;code&gt;$ vi /etc/profile
&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;vi에서 +(대문자 &quot;G&quot;)를 &lt;kbd papago-id=&quot;24-3&quot;&gt;G&lt;/kbd&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;를 다을사환변작성수를과 .&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;GENERATED_CODE&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;26&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;를 눌러 vi에 삽입합니다.&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;$ export SECRET_KEY_BASE=GENERATED_CODE
&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;변경 내용을 저장한 후 &quot;를 사용하여 파일을 닫습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;:x&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;28&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;vi에서 저장하고 종료할 수 있습니다.&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;20&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 당신이 일반 사용자로 로그인한다면, 그것을 &quot;라고 부르자.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;example_user&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;요지를 , 과 같은 파일들 중 할 것입니다: 요 점 위 을 다 찾 합 야 아 니 다 하 를 나 이 중 파 일 다 른 해 같 은 음 과 다 합 ▁for 니 : , 이 ▁files ▁one&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;pre&gt;&lt;code&gt;$ vi ~/.bash_profile
$ vi ~/.bash_login
$ vi ~/.profile
&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 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;~/.bash_profile&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;~/.profile&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;~/.bash_profile&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;25&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Linux는 이 하나만 읽고 다른 하나는 무시하기 때문입니다.&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;35&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 +를 &lt;kbd papago-id=&quot;35-3&quot;&gt;G&lt;/kbd&gt;사용하여 파일의 맨 아래로 다시 이동하여 환경 변수를 작성합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;GENERATED_CODE&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;36&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;를 다시 사용하고 파일 끝에 새 행을 추가해야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;pre&gt;&lt;code&gt;$ export SECRET_KEY_BASE=GENERATED_CODE
&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;코드를 작성한 후 변경 내용을 저장하고 &quot;를 사용하여 파일을 닫습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;:x&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;/li&gt; 
  &lt;/ul&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;39&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음 명령을 사용하여 환경 변수가 Linux에서 올바르게 설정되어 있는지 확인할 수 있습니다.&lt;/font&gt;&lt;/p&gt; &lt;pre&gt;&lt;code&gt;$ printenv | grep SECRET_KEY_BASE
&lt;/code&gt;&lt;/pre&gt; &lt;p papago-id=&quot;40&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또는 다음과 함께:&lt;/font&gt;&lt;/p&gt; &lt;pre&gt;&lt;code&gt;$ echo $SECRET_KEY_BASE
&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;GENERATED_CODE&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;31&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;전터부&lt;/font&gt; &lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;되면 Unicon 또는 &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;마지막으로 모든 구성이 완료되면 Unicon 또는 다른 도구를 사용하여 Rails 애플리케이션을 문제 없이 배포할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
&lt;/ol&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;font class=&quot;papago-parent&quot;&gt;이 &lt;a href=&quot;https://gist.github.com/pablosalgadom/4d75f30517edc6230a67&quot; rel=&quot;noreferrer&quot; papago-id=&quot;44-1&quot;&gt;미니&lt;/a&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;저는 Linux나 Rails의 구루가 아니기 때문에, 만약 당신이 잘못된 것이나 오류를 발견한다면 기꺼이 수정하겠습니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;32&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 당신이 당신의 것을 가지고 있지 않다고 가정할 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;secrets.yml&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 class=&quot;papago-parent&quot;&gt;그것은 에 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.gitignore&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;34&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;file이 많은  키가 것을 않기 .&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 비록 이것이 당신의 상황이 아니더라도, 이 질문을 보는 많은 사람들은 Github에 그들의 코드가 노출되어 있고 그들의 비밀 키가 돌아다니는 것을 원하지 않기 때문에 그렇게 했습니다.&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;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 class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;소스 컨트롤에 없으면 헤로쿠는 모를 겁니다&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;레일즈가 찾는 건&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Rails.application.secrets.secret_key_base&lt;/code&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;secrets.yml&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;37&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;존재하지 않는 파일입니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 방법은 간한해방다같습다니과음에  입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;config/environments/production.rb&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;파일을 작성하고 다음 행을 추가합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Rails.application.configure do
    ...
    config.secret_key_base = ENV[&quot;SECRET_KEY_BASE&quot;]
    ...
end
&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 class=&quot;papago-parent&quot;&gt; 응용 하여 비밀 키를 할 수 .&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;secrets.yml&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;이걸 미리 알았으면 시간을 많이 절약할 수 있었을 텐데요.&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;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&gt;&lt;code&gt;config/secrets.yml&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 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;.gitignore&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 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;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;.gitignore&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; Rails  프로그램을 에는 Rails 애위해들만어진함내포플을션이케리가 포함되었습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;config/secrets.yml&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;46&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&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;이것은 저에게 효과가 있었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;47&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;를 연결하고 SSH를 생성합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;cd&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&gt;&lt;code&gt;bundle exec rake secret&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;49&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또는&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;rake secret&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;50&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;출력으로 긴 문자열을 얻을 수 있습니다. 그 문자열을 복사하십시오.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&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;sudo nano /etc/environment&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;/p&gt; 
&lt;p papago-id=&quot;68&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;파일 맨 아래에 붙여넣기&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;export SECRET_KEY_BASE=rake secret
ruby -e 'p ENV[&quot;SECRET_KEY_BASE&quot;]'
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&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;에▁where디&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;rake secret&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;54&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font 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;rake secret&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;55&quot;&gt;&lt;font 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;56&quot;&gt;&lt;font 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;echo $SECRET_KEY_BASE&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;57&quot;&gt;&lt;font 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;58&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;를 사용할 수  4은 Rails 4.1+를 입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;config/secrets.yml&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;59&quot;&gt;&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;DR »&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;secret_token.rb&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;60&quot;&gt;&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;61&quot;&gt;&lt;font 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;.gitignore&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;62&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신이 덧붙일 수 없는 것과 마찬가지로&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;config/database.yml&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;63&quot;&gt;&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;64&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;자체 하여 헤로쿠를 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;config/database.yml&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;65&quot;&gt;&lt;font 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;DATABASE_URL&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;66&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://github.com/heroku/heroku-buildpack-ruby&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;66-1&quot;&gt;그들의 빌드팩 for&lt;/a&gt; Ruby에서, 나는 결국 &lt;a href=&quot;https://github.com/VerdigrisTech/heroku-buildpack-ruby&quot; papago-id=&quot;66-3&quot; rel=&quot;nofollow noreferrer&quot;&gt;그들&lt;/a&gt;의 레포를 &lt;a href=&quot;https://github.com/VerdigrisTech/heroku-buildpack-ruby&quot; papago-id=&quot;66-3&quot; rel=&quot;nofollow noreferrer&quot;&gt;포킹&lt;/a&gt;하고 그것을 수정하여 만들었습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;config/secrets.yml&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;67&quot;&gt;&lt;font 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;SECRETS_KEY_BASE&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;68&quot;&gt;&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;69&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 4에, 저는 Rails 4.1의 편집이 .&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;./lib/language_pack/rails41.rb&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;70&quot;&gt;&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;87&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음은 제가 회사에서 만든 수정된 빌드 팩의 &lt;a href=&quot;https://github.com/VerdigrisTech/heroku-buildpack-ruby/blob/master/lib/language_pack/rails41.rb#L33-50&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;87-1&quot;&gt;스니펫&lt;/a&gt;입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;class LanguagePack::Rails41 &amp;lt; LanguagePack::Rails4

  # ...

  def compile
    instrument &quot;rails41.compile&quot; do
      super
      allow_git do
        create_secrets_yml
      end
    end
  end

  # ...

  # writes ERB based secrets.yml for Rails 4.1+
  def create_secrets_yml
    instrument 'ruby.create_secrets_yml' do
      log(&quot;create_secrets_yml&quot;) do
        return unless File.directory?(&quot;config&quot;)
        topic(&quot;Writing config/secrets.yml to read from SECRET_KEY_BASE&quot;)
        File.open(&quot;config/secrets.yml&quot;, &quot;w&quot;) do |file|
          file.puts &amp;lt;&amp;lt;-SECRETS_YML
&amp;lt;%
raise &quot;No RACK_ENV or RAILS_ENV found&quot; unless ENV[&quot;RAILS_ENV&quot;] || ENV[&quot;RACK_ENV&quot;]
%&amp;gt;

&amp;lt;%= ENV[&quot;RAILS_ENV&quot;] || ENV[&quot;RACK_ENV&quot;] %&amp;gt;:
  secret_key_base: &amp;lt;%= ENV[&quot;SECRET_KEY_BASE&quot;] %&amp;gt;
          SECRETS_YML
        end
      end
    end
  end

  # ...

end
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;88&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;물론 이 코드를 확장하여 환경 변수에서 읽을 다른 비밀(예: 타사 API 키 등)을 추가할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;...
&amp;lt;%= ENV[&quot;RAILS_ENV&quot;] || ENV[&quot;RACK_ENV&quot;] %&amp;gt;:
  secret_key_base: &amp;lt;%= ENV[&quot;SECRET_KEY_BASE&quot;] %&amp;gt;
  third_party_api_key: &amp;lt;%= ENV[&quot;THIRD_PARTY_API&quot;] %&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;89&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이러한 방식으로 매우 일반적인 방법으로 이 비밀에 액세스할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Rails.application.secrets.third_party_api_key
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;71&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;하기 전에 먼저 하십시오.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;img src=&quot;https://i.stack.imgur.com/W5NUv.png&quot; alt=&quot;Heroku 대시보드에서 SECRET_KEY_BASE 설정&quot; papago-attr-id=&quot;1&quot;&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;91&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 수정된 빌드 팩(또는 내 빌드 팩에 링크하는 것을 환영합니다)을 Heroku 앱에 추가하고(Heroku 설명서 참조) 앱을 다시 배포합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;72&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;으로 사용자의 빌드팩자생성다니를 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;config/secrets.yml&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;73&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Dyno 빌드 프로세스의 일부로 사용자 환경 변수에서 사용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;git push&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;74&quot;&gt;&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;75&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;편집: Heroku의 &lt;a href=&quot;https://devcenter.heroku.com/changelog-items/426&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;75-1&quot;&gt;문서&lt;/a&gt;는 다음을 제안합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;config/secrets.yml&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;76&quot;&gt;&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;97&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;레일 6의 경우 다음 파일이 누락된 것과 동일한 문제에 직면했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;추가하면 문제가 해결됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;1. config/master.key
2. config/credentials.yml.enc
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;98&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;77&quot;&gt;&lt;font 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;~/.bashrc&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;78&quot;&gt;&lt;font 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;~/.bash_profile&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;79&quot;&gt;&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;export SECRET_KEY_BASE = &quot;YOUR_SECRET_KEY&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;80&quot;&gt;&lt;font 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;.bashrc&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;81&quot;&gt;&lt;font 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;.bash_profile&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;82&quot;&gt;&lt;font 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;source ~/.bashrc 
source ~/.bash_profile
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;105&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;절대 비밀을 범하지 마세요.yml&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p papago-id=&quot;106&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;작업: 프로덕션 서버에서 씬(사용 중)에 대한 구성 파일(confthin.yml)을 생성하고 다음 정보를 추가합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;environment: production
user: www-data
group: www-data
SECRET_KEY_BASE: mysecretkeyproduction
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;107&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 앱을 실행합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;thin start -C /whereeveristhefieonprod/configthin.yml
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;108&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;109&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;110&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;secret_key_base를 비워두는 방식으로 기존 키 생성기를 계속 사용할 수 있도록 Rails 4.1 앱에서 사용한 패치가 있습니다(따라서 Rails 4.1 앱에서 사용한 패치가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Rails::Application.class_eval do
  # the key_generator will then use ActiveSupport::LegacyKeyGenerator.new(config.secret_token)
  fail &quot;I'm sorry, Dave, there's no :validate_secret_key_config!&quot; unless instance_method(:validate_secret_key_config!)
  def validate_secret_key_config! #:nodoc:
    config.secret_token = secrets.secret_token
    if config.secret_token.blank?
      raise &quot;Missing `secret_token` for '#{Rails.env}' environment, set this value in `config/secrets.yml`&quot;
    end 
  end 
end
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;111&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그 이후로 다시 포맷한 패치는 &lt;a href=&quot;https://github.com/rails/rails/pull/16535&quot; rel=&quot;nofollow&quot; papago-id=&quot;111-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;83&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내가만을 .&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;config/initializers/secret_key.rb&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;84&quot;&gt;&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;Rails.application.config.secret_key_base = ENV[&quot;SECRET_KEY_BASE&quot;]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;114&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 &lt;a href=&quot;https://stackoverflow.com/a/26541742/568838&quot; papago-id=&quot;114-1&quot;&gt;저&lt;/a&gt;는 @&lt;a href=&quot;https://stackoverflow.com/a/26541742/568838&quot; papago-id=&quot;114-1&quot;&gt;Erik&lt;/a&gt; Trautman이 올린 해결책이 더 우아하다고 생각합니다;)&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;115&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;편집: 아, 그리고 마침내 헤로쿠에서 이 조언을 찾았습니다: https://devcenter.heroku.com/&lt;a href=&quot;https://devcenter.heroku.com/changelog-items/426&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;115-1&quot;&gt;changelog-items&lt;/a&gt;/426 :)&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;116&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;117&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 루트 사용자가 편집해야 할 좋은 https://gist.github.com/pablosalgadom/&lt;a href=&quot;https://gist.github.com/pablosalgadom/4d75f30517edc6230a67&quot; rel=&quot;nofollow&quot; papago-id=&quot;117-1&quot;&gt;4d75f30517edc6230a67&lt;/a&gt; 입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$ /etc/profile
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;118&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;$ ~/.bash_profile

$ ~/.bash_login

$ ~/.profile
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;119&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Nginx/Passenger/Ruby(2.4)/Rails(5.1.1)에서는 다음을 제외하고는 작동하지 않았습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;passenger_env_var&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;85&quot;&gt;&lt;font 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;/etc/nginx/sites-available/default&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;86&quot;&gt;&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;122&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://www.phusionpassenger.com/library/config/nginx/reference/#passenger_env_var&quot; papago-id=&quot;122-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;출처:&lt;/a&gt; https://www.phusionpassenger.com/library/config/nginx/reference/ #&lt;a href=&quot;https://www.phusionpassenger.com/library/config/nginx/reference/#passenger_env_var&quot; papago-id=&quot;122-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;passenger_env_var&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;123&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;데미 매거스의 대답은 레일즈 5까지 저에게 효과가 있었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;124&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Apache2/Passenger/Ruby(2.4)/Rails(5.1.6)에서, 저는 다음과 같이 입력해야 했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;export SECRET_KEY_BASE=GENERATED_CODE
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;125&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;/etc/apache2/envars의 Demi Magus 응답에서 /etc/profile이 무시되는 것 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;126&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://www.phusionpassenger.com/library/indepth/environment_variables.html#apache&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;126-1&quot;&gt;출처:&lt;/a&gt; https://www.phusionpassenger.com/library/indepth/environment_variables.html#apache&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;87&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;의 경우,는 제경, 는제입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;config/master.key&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;88&quot;&gt;&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;129&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Rails가 생성하는 기본 .gitignore는 이 파일을 제외합니다.&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;89&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;: 삭제&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;config/master.key&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;90&quot;&gt;&lt;font 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;.gitignore&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;91&quot;&gt;&lt;font 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;92&quot;&gt;&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;134&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;135&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;https://github.com/github/gitignore/blob/master/Rails.gitignore&lt;a href=&quot;https://github.com/github/gitignore/blob/master/Rails.gitignore&quot; rel=&quot;nofollow&quot; papago-id=&quot;135-1&quot;&gt; &lt;/a&gt;의 .gitignore 파일을 사용한 후에도 동일한 문제가 발생했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;136&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.gitignore 파일에 다음 행을 코멘트한 후 모든 것이 잘 해결되었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;config/initializers/secret_token.rb
config/secrets.yml
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;137&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/23180650/&lt;a href=&quot;https://stackoverflow.com/questions/23180650/how-to-solve-error-missing-secret-key-base-for-production-environment-rai&quot; target=&quot;_blank&quot; papago-id=&quot;137-1&quot;&gt;how-to-solve-error-missing-secret-key-base-for-production-environment-rai&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/441</guid>
      <comments>https://copysource.tistory.com/441#entry441comment</comments>
      <pubDate>Sun, 4 Jun 2023 18:30:59 +0900</pubDate>
    </item>
    <item>
      <title>새 줄을 제거하지 않고 Ruby에서 여러 줄의 긴 문자열 분할</title>
      <link>https://copysource.tistory.com/440</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;새 줄을 제거하지 않고 Ruby에서 여러 줄의 긴 문자열 분할&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;그 중 하나는 어떤 줄도 80자를 넘어서는 안 된다는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 Rails 프로젝트이기 때문에 &quot;X&lt;strong papago-id=&quot;1-1&quot;&gt; 사용자가 Y&lt;/strong&gt;에 대한 메시지를 &lt;strong papago-id=&quot;1-1&quot;&gt;보내고&lt;/strong&gt; 싶어함&quot;과 같이 항상 80자 스타일 제한에 맞지 않는 약간 긴 문자열이 있는 경우가 많습니다.&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;ul&gt; 
 &lt;li papago-id=&quot;3&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;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;%Q{}&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;실제 문자열 연결입니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;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&gt;&lt;code&gt;HEREDOC&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;%Q&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;.gsub(/\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;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;한 줄에 전체 문자열을 포함하는 것과 같은 순수한 구문 방법이 있습니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;목표는 분명히 제 코드가 조금 더 읽기 쉽기를 원하기 때문에 추가 사이클을 사용하지 않는 것입니다.&lt;/font&gt;&lt;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;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;업데이트: 스타일/가독성에 영향을 미치는 들여쓰기가 손실되기 때문에 백슬래시는 제가 원하는 것이 아닙니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;if foo
  string = &quot;this is a \  
string that spans lines&quot;  
end
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 위의 것들을 읽기가 좀 어렵다고 생각합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;14-0&quot;&gt;편집&lt;/strong&gt;: 아래에 답변을 추가했습니다. 3년 후에 우리는 이제 꼬불꼬불한 의사를 갖게 되었습니다.&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;이게 당신이 찾고 있는 것일 수도 있어요?&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;string = &quot;line #1&quot;\
         &quot;line #2&quot;\
         &quot;line #3&quot;

p string # =&amp;gt; &quot;line #1line #2line #3&quot;
&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;\&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Ruby의 모든 행이 다음 행에서 계속됨을 나타냅니다.&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;string = &quot;this is a \
string that spans lines&quot;

puts string.inspect
&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;will 출력&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&quot;this is a string that spans lines&quot;&lt;/code&gt;&lt;/p&gt;&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;3년이 지난 지금, 루비 2.3에 해결책이 있습니다: 꼬불꼬불한 이레독.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;class Subscription
  def warning_message
    &amp;lt;&amp;lt;~HEREDOC
      Subscription expiring soon!
      Your free trial will expire in #{days_until_expiration} days.
      Please update your billing information.
    HEREDOC
  end
end
&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;블로그 게시물 링크: https://infinum.co/the-capsized-eight/articles/&lt;a href=&quot;https://infinum.co/the-capsized-eight/articles/multiline-strings-ruby-2-3-0-the-squiggly-heredoc&quot; papago-id=&quot;20-1&quot;&gt;multiline-strings-ruby-2-3-0-the-squiggly-heredoc&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내용의 각 줄에서 들여쓰기가 가장 적게 된 줄의 들여쓰기가 제거됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt;&lt;p papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;매우 긴 url을 작성하려고 할 때 다음과 같은 문제가 발생했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;image_url = %w(
    http://minio.127.0.0.1.xip.io:9000/
    bucket29/docs/b7cfab0e-0119-452c-b262-1b78e3fccf38/
    28ed3774-b234-4de2-9a11-7d657707f79c?
    X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;amp;
    X-Amz-Credential=ABABABABABABABABA
    %2Fus-east-1%2Fs3%2Faws4_request&amp;amp;
    X-Amz-Date=20170702T000940Z&amp;amp;
    X-Amz-Expires=3600&amp;amp;X-Amz-SignedHeaders=host&amp;amp;
    X-Amz-Signature=ABABABABABABABABABABAB
    ABABABABABABABABABABABABABABABABABABA
).join
&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;URL 문자열이 형성될 때 새 줄, 공백이 없어야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;새 줄을 원하는 경우 HEREDOC를 사용합니다.&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;현에 가입하는 데 드는 비용은 무시해도 될 정도입니다.&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;원래 포스터에는 레일즈 프로젝트용으로 표시되어 있으므로 레일즈의 String 굴절을 확인하여 도움을 받을 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;my_long_string = &amp;lt;&amp;lt;-STRING
 hello
    there
 multiline
      multiindented string
STRING

=&amp;gt; &quot; hello\n    there\n multiline\n      multiindented string\n&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;을 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;squish&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;my_long_string = &amp;lt;&amp;lt;-STRING.squish
 so
    long
 multiline
      multiindented string
STRING

=&amp;gt; &quot;so long multiline multiindented string&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;28&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;문서에 따르면 -&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;squish()&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;p papago-id=&quot;30&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;30-1&quot;&gt;저는 공백&lt;/strong&gt;과 보간을 &lt;strong papago-id=&quot;30-1&quot;&gt;원하지만 새&lt;/strong&gt; 줄은 원하지 않기 때문에 잭의 답변을 수정했고 다음을 사용했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;%W[
  It's a nice day &quot;#{name}&quot;
  for a walk!
].join(' ')
&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;name = 'fred'&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;It's a nice day &quot;fred&quot; for a walk!&lt;/code&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&gt;&lt;a href=&quot;https://apidock.com/rails/String/squish&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;34&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;https://apidock.com/rails/String/squish&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;35&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;끝은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-rb prettyprint-override&quot;&gt;&lt;code&gt;%{ Multi-line
   string }.squish
&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;Ruby에서 필요하기 때문에 Rails 코드를 보십시오.&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-rb prettyprint-override&quot;&gt;&lt;code&gt;%{ Multi-line
   string }
  .gsub!(/[[:space:]]+/, &quot; &quot;)
  .strip!
&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;if foo
  string = &quot;this is a&quot; + 
           &quot;string that spans lines&quot;  
end
&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/10522414/&lt;a href=&quot;https://stackoverflow.com/questions/10522414/breaking-up-long-strings-on-multiple-lines-in-ruby-without-stripping-newlines&quot; target=&quot;_blank&quot; papago-id=&quot;38-1&quot;&gt;breaking-up-long-strings-on-multiple-lines-in-ruby-without-stripping-newlines&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/440</guid>
      <comments>https://copysource.tistory.com/440#entry440comment</comments>
      <pubDate>Sun, 4 Jun 2023 18:29:54 +0900</pubDate>
    </item>
    <item>
      <title>찾기를 사용하여 정규식으로 파일 이름을 검색하는 방법</title>
      <link>https://copysource.tistory.com/439</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;날짜가 지정된 모든 파일과 3일 이상 전의 모든 파일을 찾으려고 했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;find /home/test -name 'test.log.\d{4}-d{2}-d{2}.zip' -mtime 3
&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;find /home/test -regextype posix-extended -regex '^.*test\.log\.[0-9]{4}-[0-9]{2}-[0-9]{2}\.zip' -mtime +3
&lt;/code&gt;&lt;/pre&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;code&gt;-name&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;와일드카드라고도 하는 구형 표현을 &lt;em papago-id=&quot;0-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;-regex&lt;/code&gt;&lt;/li&gt; 
 &lt;li&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;find&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;em papago-id=&quot;2-1&quot;&gt;확장 정규식을 사용&lt;/em&gt;합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;-regextype posix-extended&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;깃발&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;정규식에서 마침표는 &lt;em papago-id=&quot;4-1&quot;&gt;단일&lt;/em&gt; 문자의 &lt;em papago-id=&quot;4-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;\.&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;3일 이상 &lt;em papago-id=&quot;5-1&quot;&gt;지난&lt;/em&gt; 파일만 일치시키려면 번호 앞에 다음을 붙여야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&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&gt;&lt;code&gt;-mtime +3&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;/li&gt; 
&lt;/ol&gt; 
&lt;h3 papago-id=&quot;11&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;$ find . -regextype posix-extended -regex '^.*test\.log\.[0-9]{4}-[0-9]{2}-[0-9]{2}\.zip'
./test.log.1234-12-12.zip
&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;regex not -name을 사용하고 regex가 인쇄할 검색과 일치하는지 확인합니다(예: &quot;test.log&quot;가 아닌 &quot;/home/test/test.log&quot;).&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;find . -name '*.log.*.zip' -a -mtime +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; find . -name '*.log.*-*-*.zip' -a -mtime +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;strong papago-id=&quot;15-1&quot;&gt;&lt;em papago-id=&quot;15-1-0&quot;&gt;1,&lt;/em&gt;&lt;/strong&gt; 2, 3과 일치하도록 +1을 입력해야 합니다.&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;-regex&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;pre&gt;&lt;code&gt;-regex pattern
       File name matches regular expression pattern.  This is a match on the whole path, not a search.  For example, to match a file named './fubar3',  you  can  use  the
       regular expression '.*bar.' or '.*b.*3', but not 'b.*r3'.
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한, 나는 믿지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;find&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;\d&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;[0-9]&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;pre&gt;&lt;code&gt;find . -regex '.*test\.log\.[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\.zip'
&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;find . -name &quot;*book*&quot; -type d
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;북워드와 같은 이름의 파일 찾기&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;find . -name &quot;*book*&quot; -type f
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/5249779/&lt;a href=&quot;https://stackoverflow.com/questions/5249779/how-to-search-filenames-by-regex-with-find&quot; target=&quot;_blank&quot; papago-id=&quot;26-1&quot;&gt;how-to-search-filenames-by-regex-with-find&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/439</guid>
      <comments>https://copysource.tistory.com/439#entry439comment</comments>
      <pubDate>Sun, 4 Jun 2023 18:28:57 +0900</pubDate>
    </item>
    <item>
      <title>postgresql 날짜 시간에 일 수를 추가하는 방법</title>
      <link>https://copysource.tistory.com/438</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;postgresql 날짜 시간에 일 수를 추가하는 방법&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;projects&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;id title        created_at               claim_window
1  Project One  2012-05-08 13:50:09.924  5
2  Project Two  2012-06-01 13:50:09.924  10
&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;deadline = created_at + claim_window(No. of days)&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음과 같은 것.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;id title        created_at               claim_window  deadline
1  Project One  2012-05-08 13:50:09.924  5             2012-05-13 13:50:09.924
2  Project Two  2012-06-01 13:50:09.924  10            2012-06-11 13:50:09.924
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;마감일이 지난 프로젝트도 찾고 싶습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;id title        created_at               claim_window  deadline
1  Project One  2012-05-08 13:50:09.924  5             2012-05-13 13:50:09.924
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 다음과 같은 것을 시도합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SELECT * FROM &quot;projects&quot; 
WHERE (DATE_PART('day', now()- created_at) &amp;gt;= (claim_window+1))
&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;pre&gt;&lt;code&gt;select id,  
       title,
       created_at + interval '1' day * claim_window as deadline
from projects
&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;make_interval&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;select id,  
       title,
       created_at + make_interval(days =&amp;gt; claim_window) as deadline
from projects
&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;select *
from (
  select id, 
         created_at + interval '1' day * claim_window as deadline
  from projects
) t
where localtimestamp at time zone 'UTC' &amp;gt; deadline
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 구간의 값뿐만 아니라 전체 구간을 단일 따옴표로 묶어야 했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;select id,  
   title,
   created_at + interval '1 day' * claim_window as deadline from projects   
&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;select id,  
   title,
   created_at + interval '1' day * claim_window as deadline from projects   
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.postgresql.org/docs/current/static/functions-datetime.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Postgres 날짜/시간 함수&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;아래 코드를 사용하여 날짜 필드를 추가하거나 뺄 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;select date('08/30/2021') + 180  ---it will give next 180 days date

select current_date + 180  ---it will give next 180 days date

select current_date - 180  ---it will give before 180 days date
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/10909902/&lt;a href=&quot;https://stackoverflow.com/questions/10909902/how-to-add-number-of-days-in-postgresql-datetime&quot; target=&quot;_blank&quot; papago-id=&quot;17-1&quot;&gt;how-to-add-number-of-days-in-postgresql-datetime&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/438</guid>
      <comments>https://copysource.tistory.com/438#entry438comment</comments>
      <pubDate>Sun, 4 Jun 2023 18:03:26 +0900</pubDate>
    </item>
    <item>
      <title>배치 파일을 윈도우즈 서비스로 실행</title>
      <link>https://copysource.tistory.com/437</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;하나의 애플리케이션을 실행하려면 배치 파일을 시작해야 합니다(Jetty 시작, 라이브 로그 표시 등).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 배치 파일이 실행 중인 경우에만 응용 프로그램이 작동합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 Windows 서버에서 로그아웃하지 않고 이 배치 파일을 실행해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 배치 파일을 서비스로 실행할 수 있습니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 &lt;a href=&quot;https://stackoverflow.com/questions/298562/windows-xp-or-vista-how-can-i-run-a-batch-file-in-the-background-no-windows-dis#298564&quot; papago-id=&quot;2-1&quot;&gt;비슷한&lt;/a&gt; 질문에서 나온 제안 중 하나를 실험하고 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://nssm.cc/usage&quot; papago-id=&quot;3-0&quot;&gt;NSSM&lt;/a&gt;은 관리자로서 명령 프롬프트/터미널을 실행하는 완전한 자유롭고 초간단합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;nssm install &quot;YourCoolServiceNameLabel&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;그러면 실행할 파일의 위치를 선택할 수 있는 대화 상자가 나타납니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제거하기 위해&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;nssm remove &quot;YourCoolServiceNameLabel&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;a href=&quot;https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/sc-create&quot; papago-id=&quot;6-1&quot; rel=&quot;noreferrer&quot;&gt;Windows&lt;/a&gt; cmd에는 sc create라는 &lt;a href=&quot;https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/sc-create&quot; papago-id=&quot;6-1&quot; rel=&quot;noreferrer&quot;&gt;기능&lt;/a&gt;이 내장되어 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;nssm만큼 화려하지는 않지만 추가 소프트웨어를 다운로드할 필요는 없습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;sc create &quot;ServiceName&quot; start= demand displayname= &quot;DisplayName&quot; binpath= [path to .bat file]
&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;ul&gt; 
 &lt;li papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;start=demand는 사용자가 직접 서비스를 시작해야 함을 의미합니다.&lt;/font&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;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;=&lt;/code&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;서비스를 시작할 때 서비스가 적시에 응답하지 않는 오류가 발생했지만 서비스가 .bat를 성공적으로 실행한 것이 분명했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;아직 이것을 파고들지 않았지만 이 &lt;a href=&quot;https://stackoverflow.com/a/40130630/885535&quot; papago-id=&quot;10-1&quot;&gt;스레드&lt;/a&gt;는 같은 일을 겪었고 서비스를 설치하기 위해 nssm을 사용하여 해결했습니다.&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;font class=&quot;papago-parent&quot;&gt;태스크 스케줄러 -&amp;gt; 태스크 생성 -&amp;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;또한 &quot;사용자 로그인 여부&quot;에 관계없이 프로그램을 실행하도록 설정해야 합니다. 그렇지 않으면 프로그램이 계속 포그라운드에서 실행됩니다.&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;Windows 2019 Server에서 다음 명령을 사용하여 Minecraft Java 서버를 실행할 수 있습니다.&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;sc create minecraft-server DisplayName= &quot;minecraft-server&quot; binpath= &quot;cisco.exe/CC:\Users\Administrator\Desktop\rungui1151.lnk&quot; 유형= 자체 시작= 자동&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;.lnk 파일은 배치 파일에 대한 표준 창 바로 가기입니다.&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;.bat 파일 시작 ---&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;java -Xmx40960M -Xms40960M -d64 -jarincraft_server.1.15.1.jar&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;.bat 파일 끝 ---&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;cmd.exe가 폴더에서 시작하는 방법을 알지 못합니다.&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;서비스를 시작하면 &quot;적절한 방식&quot; 오류가 발생하지만 로그 파일은 서버가 실행 중임을 나타냅니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;서버를 종료해야 하는 경우 작업 관리자로 이동하여 백그라운드 프로세스에서 서버 Java를 찾아 종료하거나 /stop 명령을 사용하여 게임에서 서버를 종료하거나 다른 프로그램/서버의 경우 서버와 관련된 방법을 사용합니다.&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;Doug Currie의 말처럼 RunAsService를 사용합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;나의 과거 경험으로 볼 때, 당신은 당신이 생성하는 서비스가 다음과 같은 것임을 기억해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li papago-id=&quot;26&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;27&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;28&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;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;무료는 아니지만(그러나 39달러), &lt;a href=&quot;http://firedaemon.com/&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;30-1&quot;&gt;파이어데몬&lt;/a&gt;은 저에게 너무 잘 작동했습니다. 저는 그것을 추천해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;배치 파일을 실행하지만 스케줄링, 서비스업 모니터링, GUI 또는 XML 기반 서비스 설치, 종속성, 환경 변수 및 로그 관리와 같은 매우 유용한 추가 기능이 많이 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&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;저는 처음에 FireDaemon을 사용하여 JBoss 애플리케이션 &lt;strong papago-id=&quot;31-1&quot;&gt;서버(run&lt;/strong&gt;.bat)를 시작했지만, 얼마 지나지 않아 FireDaemon 구성 기능의 풍부함으로 배치 파일을 버리고 FireDaemon 서비스 정의에서 명령의 의도를 다시 만들 수 있다는 것을 깨달았습니다.&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;또한 이 서비스(또는 기술적으로 모든 서비스)를 관리할 많은 수의 윈도우즈 서버가 있는 경우 살펴볼 수 있는 Trinity라는 SUPER FireDaemon도 있습니다.&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;NSSM은 더 이상 유지 관리되지 않으므로 WinSW &lt;a href=&quot;https://github.com/winsw/winsw&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;33-1&quot;&gt;사용&lt;/a&gt;을 고려할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;에서 작동하거나 작동하지 않는 이진 파일이 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그물.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;34&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기본적으로 XML 파일을 생성한 다음 설치합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음은 최소 XML의 샘플입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;service&amp;gt;

  &amp;lt;!-- ID of the service. It should be unique across the Windows system--&amp;gt;
  &amp;lt;id&amp;gt;myapp&amp;lt;/id&amp;gt;

  &amp;lt;!-- Path to the executable, which should be started --&amp;gt;
  &amp;lt;!-- CAUTION: Don't put arguments here. Use &amp;lt;arguments&amp;gt; instead. --&amp;gt;
  &amp;lt;executable&amp;gt;%BASE%\myExecutable.exe&amp;lt;/executable&amp;gt;

&amp;lt;/service&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;winsw install myapp.xml
winsw start myapp.xml
&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;NSSM을 설치하고 .bat 파일을 윈도우즈 서비스로 실행합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&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;가장 쉬운 방법은 sc:에서 오픈소스 &lt;a href=&quot;https://github.com/mturk/svcbatch/&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;37-1&quot;&gt;&lt;strong papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;svbatch&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;&lt;a href=&quot;https://github.com/mturk/svcbatch/&quot; papago-id=&quot;37-3&quot; rel=&quot;nofollow noreferrer&quot;&gt;(&lt;/a&gt;https://github.com/mturk/&lt;a href=&quot;https://github.com/mturk/svcbatch/&quot; papago-id=&quot;37-3&quot; rel=&quot;nofollow noreferrer&quot;&gt;svcbatch&lt;/a&gt;/) 를 CMD(BAT)의 래퍼로 사용하는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;38&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;sc create myservice binPath= &quot;&quot;%cd%\tftcbatch.exe&quot; myservice.bat&quot;&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&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;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/415409/&lt;a href=&quot;https://stackoverflow.com/questions/415409/run-batch-file-as-a-windows-service&quot; target=&quot;_blank&quot; papago-id=&quot;39-1&quot;&gt;run-batch-file-as-a-windows-service&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/437</guid>
      <comments>https://copysource.tistory.com/437#entry437comment</comments>
      <pubDate>Sun, 4 Jun 2023 17:56:35 +0900</pubDate>
    </item>
    <item>
      <title>PHP 배열의 값을 지우기 위해 각 루프에 사용하는 효율성</title>
      <link>https://copysource.tistory.com/436</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;PHP 배열의 값을 지우기 위해 각 루프에 사용하는 효율성&lt;/font&gt;&lt;/h2&gt;
&lt;p 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;foreach ($array as $i =&amp;gt; $value) {
    unset($array[$i]);
}
&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;foreach($blah_blah as $blah) {
    $foo = array();
    //do something
    $foo = 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&gt;&lt;code&gt;unset()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;변수가 삭제되기 때문입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;잭이 아래 댓글에서 말한 것처럼 당신은 단순히 그것을 다시 인스턴스화할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$foo = array(); // $foo is still here
&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;만약 당신이 더 강력한 것을 원한다면, 그것은 또한 기호 테이블에서 $foo를 지울 것이기 때문에, 당신이 나중에 배열이 필요하다면, 그것을 다시 인스턴스화하기만 하면 됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;unset($foo); // $foo is gone
$foo = array(); // $foo is here again
&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;$foo = null; 
unset($foo); 
&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;그러나 해당 동작(GC)은 매우 일정하지 않으며 PHP 버전에 따라 변경될 수 있습니다.&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;$foo = array();
&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;$foo = array(1,2,3);
$bar = &amp;amp;$foo;
// ...
$foo = array(); // clear array
var_dump($bar); // array(0) { } -- bar was cleared too!
&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;$foo = array(1,2,3);
$bar = &amp;amp;$foo;
// ...
unset($foo); // break references
$foo = array(); // re-initialize to empty array
var_dump($bar); // array(3) { 1, 2, 3 } -- $bar is unchanged
&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;원래 &lt;/strong&gt;배열의 &lt;strong papago-id=&quot;12-1&quot;&gt;참조가 필요하지 않는&lt;/strong&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;pre&gt;&lt;code&gt;function special_sort_my_array(&amp;amp;$array)
{
    $temporary_list = create_assoziative_special_list_out_of_array($array);
    
    sort_my_list($temporary_list);
    
    unset($array);
    foreach($temporary_list as $k =&amp;gt; $v)
    {
        $array[$k] = $v;
    }
}
&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;작동하지 않습니다!&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;unset&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;는 &quot; &quot; &quot; 입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;$array&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&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;$array = array()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;에 &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;unset&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 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;for&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;슬롯:슬라이드:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;for ($i = 0; $i &amp;lt; count($array); $i++) { unset($array[$i]); }
&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;$array = array();
&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;unset($array);
&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;$array_name = array();&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;?&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;27&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;array_splice($myArray, 0);&lt;/code&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;나는 배열을 지우기 위해 unset()을 사용했지만 unset()이 배열을 null로 만들 것이라는 것을 깨닫게 되었고, 따라서 예를 들어 배열을 다시 정의해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;?php 
    $arr = array();
    array_push($arr , &quot;foo&quot;);
    unset($arr); // this will set the array to null hence you need the line below or redeclaring it.
    $arr  = array();

    // do what ever you want here
?&amp;gt;
&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;$array = [];
&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;우리는 php 매뉴얼로 읽을 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;31&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;PHP 5.4부터는 array()를 []로 대체하는 짧은 array 구문도 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&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;/p&gt; 
&lt;pre&gt;&lt;code&gt;function empty_array(&amp;amp; $complete_array) {
    foreach($complete_array as $ckey =&amp;gt; $cvalue)
    {
        if (!is_array($cvalue)) {
            $complete_array[$ckey] = &quot;&quot;;
        } else {
            empty_array( $complete_array[$ckey]);
        }

    }
    return $complete_array;

}
&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 papago-id=&quot;34&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://php.net/manual/en/function.unset.php&quot; rel=&quot;nofollow&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;그러나 unset 함수는 단순히 데이터에 대한 변수 참조를 파괴하고, 데이터는 여전히 메모리에 존재하며, PHP는 메모리에 대한 포인터가 더 이상 없음에도 불구하고 메모리가 사용 중인 것으로 봅니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;12-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;null&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&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$var = null;
&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;unset($var);
&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;font class=&quot;papago-parent&quot;&gt;키를 유지하고 값을 지우는 것이 질문의 초점입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;foreach($resultMasterCleaned['header'] as $ekey =&amp;gt; $eval) {
    $resultMasterCleaned[$key][$eval] = &quot;&quot;;                 
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;40&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;CSV 값을 보유한 2차원 어레이의 경우와 마찬가지로 특정 행을 비워 둡니다.&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;[]은(는) 어레이 $array[] = $newElement 다음 array_syslog 어레이, $newElement와 유사한 어레이보다 거의 30% 빠름(단일 또는 2개의 새로운 요소에 대해서만 array_syslog가 느림)&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;a href=&quot;https://stackoverflow.com/questions/26651996/php-array-vs-in-method-and-variable-declaration&quot; papago-id=&quot;43&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;메서드 및 변수 선언의 PHP 배열 vs [ ]&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p papago-id=&quot;44&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/10261925/&lt;a href=&quot;https://stackoverflow.com/questions/10261925/efficiency-of-using-foreach-loops-to-clear-a-php-arrays-values&quot; target=&quot;_blank&quot; papago-id=&quot;44-1&quot;&gt;efficiency-of-using-foreach-loops-to-clear-a-php-arrays-values&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/436</guid>
      <comments>https://copysource.tistory.com/436#entry436comment</comments>
      <pubDate>Sun, 4 Jun 2023 17:54:59 +0900</pubDate>
    </item>
    <item>
      <title>이제 iPhone에서 MonoTouch가 금지됩니까?</title>
      <link>https://copysource.tistory.com/435</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이제 iPhone에서 MonoTouch가 금지됩니까?&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;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;b papago-id=&quot;1-1&quot;&gt;닫힘.&lt;/b&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 질문은 &lt;a href=&quot;/help/closed-questions&quot; papago-id=&quot;1-3&quot;&gt;주제&lt;/a&gt;에서 벗어났습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;현재 답변을 수락하고 있지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt; 
     &lt;/div&gt; 
    &lt;/div&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
  &lt;hr class=&quot;my12 outline-none baw0 bb bc-powder-400&quot;&gt; 
  &lt;div class=&quot;fw-nowrap fc-black-600&quot;&gt; 
   &lt;div class=&quot;d-flex fd-column lh-md&quot;&gt; 
    &lt;div class=&quot;mb0 d-flex&quot;&gt; 
     &lt;div class=&quot;flex--item mr8&quot;&gt; 
      &lt;svg aria-hidden=&quot;true&quot; class=&quot;svg-icon iconLightbulb&quot; width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 18 18&quot;&gt;
       &lt;path d=&quot;M15 6.38A6.48 6.48 0 0 0 7.78.04h-.02A6.49 6.49 0 0 0 2.05 5.6a6.31 6.31 0 0 0 2.39 5.75c.49.39.76.93.76 1.5v.24c0 1.07.89 1.9 1.92 1.9h2.75c1.04 0 1.92-.83 1.92-1.9v-.2c0-.6.26-1.15.7-1.48A6.32 6.32 0 0 0 15 6.37ZM4.03 5.85A4.49 4.49 0 0 1 8 2.02a4.48 4.48 0 0 1 5 4.36 4.3 4.3 0 0 1-1.72 3.44c-.98.74-1.5 1.9-1.5 3.08v.1H7.2v-.14c0-1.23-.6-2.34-1.53-3.07a4.32 4.32 0 0 1-1.64-3.94ZM10 18a1 1 0 0 0 0-2H7a1 1 0 1 0 0 2h3Z&quot;&gt;&lt;/path&gt;
      &lt;/svg&gt; 
     &lt;/div&gt; 
     &lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;b papago-id=&quot;2-0&quot;&gt;이 질문을 개선하고 싶으십니까?&lt;/b&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;스택 오버플로의 주제가 &lt;a href=&quot;/help/on-topic&quot; papago-id=&quot;2-4&quot;&gt;되도록&lt;/a&gt; &lt;a href=&quot;/posts/2604033/edit&quot; papago-id=&quot;2-2&quot;&gt;질문을 업데이트&lt;/a&gt;합니다.&lt;/font&gt;&lt;/p&gt; 
    &lt;/div&gt; 
    &lt;div class=&quot;mb0 mt6 d-flex&quot;&gt; 
     &lt;p class=&quot;ml24 pl2&quot; papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;span class=&quot;relativetime&quot; papago-id=&quot;3-1&quot; title=&quot;2012-12-05 12:52:02Z&quot; papago-attr-id=&quot;1&quot;&gt;10년&lt;/span&gt; 전에 &lt;span class=&quot;relativetime&quot; papago-id=&quot;3-1&quot; title=&quot;2012-12-05 12:52:02Z&quot; papago-attr-id=&quot;2&quot;&gt;문&lt;/span&gt;을 닫았습니다.&lt;/font&gt;&lt;/p&gt; 
    &lt;/div&gt; 
    &lt;div class=&quot;ml24 pl2&quot;&gt; 
    &lt;/div&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
  &lt;div class=&quot;mt24 d-flex gsx gs8&quot;&gt; 
   &lt;a class=&quot;s-btn s-btn__outlined flex--item js-post-notice-edit-post&quot; href=&quot;/posts/2604033/edit&quot; papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 질문을 개선합니다.&lt;/font&gt;&lt;/a&gt; 
  &lt;/div&gt; 
 &lt;/aside&gt; 
&lt;/div&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://daringfireball.net/2010/04/iphone_agreement_bans_flash_compiler&quot; papago-id=&quot;5-1&quot; rel=&quot;noreferrer&quot;&gt;John&lt;/a&gt; Gruber의 &lt;a href=&quot;http://daringfireball.net/2010/04/iphone_agreement_bans_flash_compiler&quot; papago-id=&quot;5-1&quot; rel=&quot;noreferrer&quot;&gt;최근&lt;/a&gt; 게시물은 다음과 같은 법률 용어에 주목합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;code&gt;3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs.&lt;/code&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음과 같이 수정되었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;code&gt;3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).&lt;/code&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 다음과 같은 관찰을 합니다.&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;제가 이 새로운 언어에 대해 읽은 바로는 어도비의 다가오는 Flash Professional CS5 릴리스에 있는 Flash-to-iPhone 컴파일러와 같은 교차 컴파일러가 금지되어 있다는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 C# 및 .NET 앱을 iPhone에 컴파일하는 도구인 MonoTouch를 사용하여 컴파일된 앱도 금지됩니다.&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;이것은 사실 IP 전화에 모노터치 사용을 금지합니까?&lt;/font&gt;&lt;/p&gt;&lt;h2 papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;업데이트 -&lt;/font&gt;&lt;/h2&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://www.apple.com/pr/library/2010/09/09statement.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;11-1&quot;&gt;이것은 최근&lt;/a&gt;에 바뀌었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;MonoTouch는 더 이상 계약과 충돌하지 않아야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;아래의 모든 진술은 순전히 역사적인 것입니다!&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예, 원본 애플리케이션이 C#으로 작성된 경우 라이센스를 위반하는 것이라는 것은 라이센스 계약에서 매우 분명해 보입니다.&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;...애플리케이션은 iPhone OS WebKit 엔진에서 실행되는 Objective-C, C, C++ 또는 JavaScript로 &lt;strong papago-id=&quot;13-1&quot;&gt;작성&lt;/strong&gt;되어야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그들은 심지어 조금 더 멀리까지 그것을 때립니다.&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;중간 번역 또는 호환성 계층 또는 도구를 통해 Documented API에 연결하는 애플리케이션은 금지됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;좀 아쉽긴 하지만, MonoTouch와 Flash CS5 -&amp;gt; iPhone 컨버터는 매우 멋집니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;strong papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;업데이트:&lt;/font&gt;&lt;/strong&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;Apple은 iOS용 언어 및 라이브러리에 대한 모든 기술 요구 사항을 (거의) 철회했으므로 &lt;strong papago-id=&quot;18-1&quot;&gt;MonoTouch는 의심&lt;/strong&gt;할 여지 없이 &lt;strong papago-id=&quot;18-1&quot;&gt;실행&lt;/strong&gt; 가능한&lt;strong papago-id=&quot;18-1&quot;&gt; 솔루션&lt;/strong&gt;입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://www.apple.com/pr/library/2010/09/09statement.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;18-3&quot;&gt;Apple의 발표를 참조&lt;/a&gt;하십시오.&lt;/font&gt;&lt;/p&gt; 
&lt;hr&gt; 
&lt;p papago-id=&quot;19&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;제 관점은 이렇습니다. 현재로서는 아무도 MonoTouch가 금지될 지 여부를 알지 못합니다. 그 이유를 설명하겠습니다.&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;Apple 계약 버전 3(최신 버전이 아닌 이전 버전)에서는 Apple이 제공하는 것 이외의 다른 프레임워크를 사용하여 애플리케이션을 개발하는 것은 불법이라고 명시하고 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;3.3.2 애플리케이션은 플러그인 아키텍처를 사용하거나 다른 프레임워크, 다른 API 또는 기타 API를 호출하는 것을 포함하여 어떠한 방법으로도 다른 실행 코드를 설치하거나 실행할 수 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Apple의 Documented API 및 내장 인터프리터에 의해 해석 및 실행되는 코드를 제외하고 응용 프로그램에서 해석된 코드를 다운로드하거나 사용할 수 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://adcdownload.apple.com/iphone/iphone_sdk_3.2__final/iphone_sdk_agreement.pdf&quot; rel=&quot;noreferrer&quot; papago-id=&quot;21-1&quot;&gt;http://adcdownload.apple.com/iphone/iphone_sdk_3.2__final/iphone_sdk_agreement.pdf&lt;/a&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;2.x 이후로 실제로 그러했지만 Apple은 정확히 그렇게 하는 애플리케이션을 수락하는 데 문제가 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어, ALLEA 게임은 루아 스크립트를 사용하고, 많은 사람들이 아이폰이 기본이 아닌 외부 라이브러리를 사용합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;아이폰에 이러한 네이티브 API가 있을 때도 애플은 SQLite와 같은 다른 버전의 애플리케이션을 받아들이는 데 문제가 없었습니다.&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;제 요점은 지금 &quot;네, 그들은 금지될 것입니다&quot;라고 말하는 것은 단순히 너무 이르다는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 시점에서 유일하게 분명한 것은 &lt;strong papago-id=&quot;23-1&quot;&gt;Apple&lt;/strong&gt;이 실제로 앱을 금지하는 데 사용할 수 있다는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그들이 오늘날 일부 규칙에 위배되는 앱을 받아들이는 것처럼, 그들은 아마도 계속 그렇게 할 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 현재 Mono를 실행 중인 스토어에 수백 개(또는 수천 개?)의 앱이 있으며, Apple은 이러한 앱에 대한 업데이트를 수락해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;수백만 개의 매출을 올린 주요 앱은 모노(및 루아)를 사용하여 만들어졌으며, 사용자 한 명 한 명에게 환불해 줄지 의심스럽습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;마지막으로, 엔터프라이즈 애플리케이션은 Apple의 승인 없이 iPhone에 배포되며, MonoTouch가 차지하는 큰 시장입니다(저 자신이 엔터프라이즈 애플리케이션을 개발합니다).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;현재로서는 Apple이 이러한 애플리케이션에 대해 MonoTouch를 금지할 수 있는 방법이 없으며, 이는 MonoTouch를 오랫동안 유지하기에 충분할 것입니다.&lt;/font&gt;&lt;/p&gt;&lt;h3 papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;업데이트:&lt;/font&gt;&lt;/h3&gt; 
&lt;p papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;b papago-id=&quot;27-0&quot;&gt;섹션 3.3.1, 3.3.2 및 3.3.9의 새로운 변경 사항으로 인해 MonoTouch(및 기타 모든 크로스 컴파일러/언어 등)가 iPhone에서 완벽하게 허용되었습니다.&lt;/b&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Apple의 &lt;a href=&quot;http://www.apple.com/pr/library/2010/09/09statement.html&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;27-2&quot;&gt;발표&lt;/a&gt; 보기&lt;/font&gt;&lt;/p&gt; 
&lt;hr&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://stackoverflow.com/users/16929/miguel-de-icaza&quot; papago-id=&quot;28-0&quot;&gt;미겔&lt;/a&gt;은 그렇게 생각하지 않는 것 같습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://twitter.com/thezduck/status/11849956138&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;28-2&quot;&gt;트윗&lt;/a&gt;과 미구엘의 &lt;a href=&quot;http://twitter.com/migueldeicaza/status/11850097546&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;28-4&quot;&gt;반응&lt;/a&gt;을 보세요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기서 과민반응을 하지 말고 모노노우치가 죽었다고 말하거나, 관련된 모든 당사자가 어느 정도 설명할 때까지 모노노우치와 함께 개발을 중단합시다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;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;font class=&quot;papago-parent&quot;&gt;다음은 무엇입니까, 당신이 사용할 수 있는 유일한 광고 플랫폼이 iAd라는 그들의 라이센스입니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;iAd 없이 무료 앱 배포를 허용하지 않습니까?&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;30&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;저의 낮 직업은 C#입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 MonoTouch C#이 실행 가능한 대안이 되었을 때 다운로드했고 코드를 iPhone 전용 MonoTouch C#으로 변환하는 데 3개월이 걸렸습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;C#/Objective C에서 전환하는 동안 제가 미쳐가는 것을 막았습니다.&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 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;제품을 출시하지 않고 고객이 없는 Adobe를 중지하는 것과 AppStore에서 제품을 출시하고 승인한 MonoTouch를 중지하는 것은 별개의 일입니다.&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;p papago-id=&quot;35&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;나는 애플이 이 말도 안 되는 정책으로 트집을 잡기를 바랍니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;오만은 매력적이지 않고 일반적으로 사업에 좋지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것이 제가 아이폰 개발을 시작하지 않은 이유 중 하나입니다.&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;대부분의 하드웨어 및 OS 공급업체는 플랫폼에 쓰기 위한 추가 툴과 사용자를 확보하게 되어 기쁩니다.&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;37&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;1984년의 &quot;빅 브라더&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;편집&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;그것이 작성되는 방식은 또한 내가 객관적인 C/apple 번역기에 .net을 썼다면 원래 코드가 객관적인 C가 아니었기 때문에 코드를 받아들일 수 없다는 것을 의미하는 것 같습니다.&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;40&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;유니티는 또한 모노에 기반을 두고 있으며 상당한 규모의 상업적 제품이기 때문에 이것은 우리가 아직 끝까지 듣지 못한 문제라고 &lt;a href=&quot;http://unity3d.com/&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;40-0&quot;&gt;생각&lt;/a&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;Obj-C/C++로 작성되지 않은 모든 앱을 금지하는 것은 이론적으로 앱 스토어에 이미 많은 수가 있는 모든 유니티 게임도 금지할 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;http://answers.unity3d.com/questions/7408/is-unity3d-banned-by-new-apple-sdk-licence&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;42&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 질문은 Unity Answers 사이트에서도 확인되었으며 공식 답변은 다음과 같습니다.&lt;/font&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;43&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;우리는 방금 아이폰 OS 4.0과 새로운 서비스 약관에 대해 들었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;우리는 이것들을 완전히 준수하고 있다고 믿지만, 우리는 지금 이것을 Apple에 의해 검증받기 위해 최선을 다하고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;우리가 정확히 알게 되면, 우리는 당연히 그 정보를 모두에게 공유할 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;우리가 이 사건을 해결하는 동안 단단히 버텨주세요.&quot;&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;44&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그들이 Apple로부터 무엇을 듣는지 보는 것은 흥미롭습니다.&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;strong papago-id=&quot;45-1&quot;&gt;언어&lt;/strong&gt;로 작성되어야 한다고 말하는 것은 약간의 잘못된 이름입니다. 일단 앱이 컴파일되면 어떻게 구축되었는지에 관계없이 항상 네이티브 바이너리이기 때문입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제 생각에 그들이 찾을 수 있는 것은 바이너리에서 어떤 종류의 서명을 통해 어떤 도구로 만들어졌는지 감지하는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;결함이 있는 접근법.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;46&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;46-0&quot;&gt;편집:&lt;/strong&gt; 이 블로그에는 상황에 대한 흥미로운 개요가 있습니다. &lt;a href=&quot;http://redth.info/2010/04/09/is-monotouch-now-dead-in-the-water-what-does-apples-new-iphone-developer-agreement-mean/&quot; papago-id=&quot;46-2&quot; rel=&quot;nofollow noreferrer&quot;&gt;모노터치는 이제 &lt;/a&gt;물 속에서 &lt;a href=&quot;http://redth.info/2010/04/09/is-monotouch-now-dead-in-the-water-what-does-apples-new-iphone-developer-agreement-mean/&quot; papago-id=&quot;46-2&quot; rel=&quot;nofollow noreferrer&quot;&gt;죽었습니다&lt;/a&gt;. &lt;a href=&quot;http://redth.info/2010/04/09/is-monotouch-now-dead-in-the-water-what-does-apples-new-iphone-developer-agreement-mean/&quot; papago-id=&quot;46-2&quot; rel=&quot;nofollow noreferrer&quot;&gt;애플의 새로운 아이폰 개발자 계약이 의미&lt;/a&gt;하는 바는 &lt;a href=&quot;http://redth.info/2010/04/09/is-monotouch-now-dead-in-the-water-what-does-apples-new-iphone-developer-agreement-mean/&quot; papago-id=&quot;46-2&quot; rel=&quot;nofollow noreferrer&quot;&gt;무엇&lt;/a&gt;입니까?&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;47&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;새 라이센스 계약은 이에 대해 명확하게 설명합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 네, 그것은 금지될 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;48&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;조언, 만약 당신이 정말로 아이폰을 위해 개발하고 싶다면, XCode를 사용해 보세요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이미 Java나 C# 또는 C++에 익숙하다면 목표 C를 배우는 것은 그리 어렵지 않을 것입니다.&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;iPhone/iPad는 Apple의 새로운 성공적인 사업이며, 그들은 이 사업을 계속 성장시키기 위해 무엇이든 할 것입니다. 아마도 그들은 지금 모노터치 앱을 금지하지 않을 것입니다. 하지만 다음 움직임을 누가 알겠습니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 만약 당신이 아이폰 개발에 정말로 관심이 있다면, 당신의 작품이 그냥 거절당할지도 모른다는 악몽을 꾸는 대신에.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;XCode로 전환하면 최소한 앱 거부율이 낮아집니다.&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;50&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;51&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;52&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 모노노우치는 그렇지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;모노터치는 Apple 프레임워크를 사용하여 애플리케이션을 작성하는 것이지만 Objective-C가 아닌 Mono를 통해 작성됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 그 관점에서 모노터치가 하는 일은 애플을 정말로 괴롭힐 일이 아닙니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;53&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 여전히 개발자들이 사용 중인 플랫폼의 모국어로 쓰는 것이 더 낫다고 생각합니다. 추상화 임피던스 불일치를 가질 수 있는 시스템을 도입하지 않을 때 일반적으로 상황이 더 원활하기 때문입니다. 코코아 프레임워크는 모두 Objective-C에서 사용하도록 제작되었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;목표-C의 철학에 익숙할 때 가장 의미가 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 저는 애플이 모노터치 사용을 허용하는 쪽으로 기울기를 바랍니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;54&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Apple이 말하고 있는 것은 여러분 모두가 이제 1980년대 언어를 사용하여 경쟁사를 능가하는 최신 모바일 애플리케이션을 개발해야 한다는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;55&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;완벽히 말이 되는.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제게는 승리 전략처럼 들리네요.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;56&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 Stright C, C++ 또는 Objective C에서 개발된 타사 라이브러리를 사용할 수 없도록 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;57&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 기본적으로 유니티와 같은 게임 API에서는 구매할 수 없다는 것을 의미합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;58&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내 2센트를 더하면 됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 부분을 읽은 후에는 (&lt;strong papago-id=&quot;58-1&quot;&gt;예: 중간 번역이나 호환성 계층 또는 도구를 통해&lt;/strong&gt; Documented &lt;strong papago-id=&quot;58-1&quot;&gt;API에 링크하는 애플리케이션은 금지&lt;/strong&gt;됨) 논의할 것이 없는 것 같습니다&lt;strong papago-id=&quot;58-1&quot;&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그들은 그것들을 명확하게 표현했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그들은 MonoTouch와 Unity3d를 금지할 뿐만 &lt;a href=&quot;http://www.appcelerator.com/&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;58-3&quot;&gt;아니라 Titanium&lt;/a&gt; Framework도 금지하고 있는 것 같습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만, 이 기사를 &lt;a href=&quot;http://www.tuaw.com/2010/04/08/iphone-os-4-0-dev-agreement-blocks-using-flash-or-unity-as-ides/&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;58-5&quot;&gt;읽고&lt;/a&gt; 난 후, 저는 제 자신이 정말 혼란스럽다는 것을 알게 되었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 미국 법에 익숙하지 않은데, 합법적인가요?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;내 말은, 그들이 독점금지법을 어기고 있지 않나요?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;59&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 모든 것 외에도, 저는 그들의 동기를 이해할 수 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그들은 개발자들의 흥미를 부분적으로 잃을 뿐만 아니라, 개발자들의 존경도 잃을 것이라고 생각합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;60&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;오늘부로 Apple iOS 개발자 프로그램 라이센스의 섹션 3.3.1이 이전 텍스트로 반환되었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;61&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;3.3.1 애플리케이션은 Apple이 규정한 방식으로만 Documented API를 사용할 수 있으며, 개인 API를 사용하거나 호출해서는 안 됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;62&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;애플은 라이선스 변경에 대한 &lt;a href=&quot;http://www.apple.com/pr/library/2010/09/09statement.html&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;62-1&quot;&gt;공식&lt;/a&gt; 성명을 발표했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;63&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이는 이제 MonoTouch를 사용할 수 있음을 나타냅니다.&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;Mono 팀의 한 가지 목표는 교차 플랫폼 개발을 위해 MonoTouch/Moonlight를 통해 Silverlight를 iPhone으로 포팅하는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것은 마치 아이폰에 플래시를 이식하는 것과 같습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;애플리케이션을 이식하는 데 도움이 되는 모노드로이드도 있습니다. 아시다시피, 애플은 누군가 &quot;안드로이드&quot;라고 말할 때마다 돈을 내고 있습니다. :-) IMHO, 만약 애플이 새로운 계약으로 어도비를 목표로 한다면, 그들도 노벨을 목표로 하고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;우리는 아마도 추측하고 있고 NDA가 있지만 우리 중 많은 사람들이 이 플랫폼에 많은 시간을 투자했기 때문에 상황을 분명히 해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;우리는 이 문제를 논의하기 위해 내년 여름을 기다릴 수 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어, 한 친구로부터 고객을 위해 MonoTouch 애플리케이션을 프로토타입화하는 데 도움을 요청받았습니다.&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;65&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://spreadsheets.google.com/ccc?key=0ApLAS6djiVwydGhJMmh1YjYwb0QzUDl6dEVzV1hwVnc&amp;amp;hl=en_GB&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;65-0&quot;&gt;이 Google 문서&lt;/a&gt; 스프레드시트에는 새 계약의 영향을 받는 앱 목록이 많이 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;앱스토어 카테고리에서 1위를 차지한 몇 가지 주목할 만한 것들:&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li papago-id=&quot;66&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;67&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;68&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;69&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;70&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;71&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;72&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;o 지난 며칠 안에 많은 앱들이 모노터치와 유니티의 도움으로 작성되었으며, 저도 obj-c와 함께 사용하고 있습니다. 계약 발표 및 변경 이후로 GO FIGLE, ...good ol'&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;WTF가 떠오릅니다.&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;또한, 어제 핫 뉴 게임 중인 마지막 유니티 게임 자이언트 모토는 큰 글자로 로드의 스플래시 화면에 유니티로 구동됩니다.&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;그리고 montouch는 iPhone API를 완전히 공개하고 XCode를 사용하여 obj-c로 완전히 구축하는 유일한 개발 플랫폼입니다.&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;라이센스 계약에 따르면 MonoTouch 앱은 AppStore에서 허용되지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;75&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 더 흥미로운 질문은 어떤 프레임워크/애플리케이션에 대해 이를 적용할 것인가 하는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 앱을 승인하는 사람들이 모든 앱에 대해 이를 수행할 시간/기술이 없기 때문에 앱이 네이티브로 작성되었는지 여부를 확인하기 위해 자동 테스트를 작성해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이러한 앱에는 'MonoTouch/Flash 사용'이라는 스티커가 붙지 않습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;76&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;합의서의 모든 블롭에 대한 짧은 &lt;strong papago-id=&quot;76-1&quot;&gt;대답&lt;/strong&gt;은 YES입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;77&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Apple은 기본적으로 프로그램을 몇 가지 언어로 제한함으로써 스스로를 공격하고 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li papago-id=&quot;78&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;C - 요즘은 낮은 수준의 특성 때문에 애플리케이션 개발에 적합하지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;오늘날 대부분은 시스템 프로그래밍 언어입니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;79&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;Qt 외에도, C++에서 사용할 완전한 애플리케이션 프레임워크가 없습니다(그리고 Qt는 아직 아이폰을 지원하지 않습니다).&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;80&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Objective-C - 애플이 발명했으며 당연히 지원될 것입니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;81&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;WebKit에서 실행되는 JavaScript - 기본적으로 웹 응용프로그램입니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&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;저는 상당한 규모의 커뮤니티가 아이폰 개발을 그만두고 완전히 개방된 Windows Mobile, Symbian, Android 또는 Maemo와 같은 다른 플랫폼으로 마이그레이션할 것이라고 확신합니다. LOLCODE로 애플리케이션을 자유롭게 작성할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;83&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;개발자들을 위해 아이폰을 정크로 만들 수도 있는 것 외에도 Adobe에게 멋진 키스를 해줍니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;애플은 일부러 아이패드에서 플래시를 차단하고, 이제는 아이폰에서도 플래시를 차단하고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 숫자는 Adobe Flash의 CS5의 가장 큰 기능은 iPhone에 플래시 애플리케이션을 배포하는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;84&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;84-0&quot;&gt;tl;dr:&lt;/strong&gt; 애플은 기본적으로 이 움직임으로 스스로를 쏘고 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;85&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;플래시 장애가 발생한 지 몇 달이 지났고 모노터치와 유니티가 잘 작동하고 있다는 것은 분명합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;86&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;86-1&quot;&gt;&quot;중간 번역&lt;/strong&gt; 또는 &lt;strong papago-id=&quot;86-1&quot;&gt;호환성 계층 또는 도구를 통해 Documented API에 링크하는 애플리케이션은 금지&lt;/strong&gt;됩니다.&quot;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;87&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모노터치는 코드를 네이티브 바이너리로 컴파일합니다. &quot;레이어&quot;는 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;.NET 런타임, Java JVM 또는 Flash 런타임과 같은 것을 말합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;88&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모노 애플리케이션은 일반적으로 바이트코드로 컴파일되며, 이를 실행하기 위해서는 JIT(적시) 컴파일이 필요합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;넷 프레임워크 또는 모노 프레임워크가 필요합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 iOS와 Android의 경우 Mono 어플리케이션이 네이티브 코드로 컴파일됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서, 애플의 눈에는 &lt;strong papago-id=&quot;88-1&quot;&gt;제3&lt;/strong&gt;의 층이 없으며, 애플은 모노를 절대 금지하지 않을 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 MonoTouch로 자유롭게 개발하고 앱을 배포할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;더욱 확실하게 하기 위해 AppStore에는 오래전부터 존재해온 다양한 Mono 애플리케이션(게임 및 애플리케이션 포함)이 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;89&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/2604033/&lt;a href=&quot;https://stackoverflow.com/questions/2604033/is-monotouch-now-banned-on-the-iphone&quot; target=&quot;_blank&quot; papago-id=&quot;89-1&quot;&gt;is-monotouch-now-banned-on-the-iphone&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/435</guid>
      <comments>https://copysource.tistory.com/435#entry435comment</comments>
      <pubDate>Sun, 4 Jun 2023 17:53:01 +0900</pubDate>
    </item>
    <item>
      <title>단일 마이그레이션 파일 실행</title>
      <link>https://copysource.tistory.com/434</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 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;rake db:migrate:up VERSION=20090408054532
&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;여기서 version은 마이그레이션 파일의 타임스탬프입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;편집: 지난 8년 동안의 어느 시점(어떤 버전인지 확실하지 않음)에 레일즈는 이미 실행된 경우 이를 실행하지 못하도록 하는 검사를 추가했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이는 다음의 항목으로 표시됩니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;schema_migrations&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;rake db:migrate:redo VERSION=20090408054532&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;/strong&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;rails console
&amp;gt;&amp;gt; require &quot;db/migrate/20090408054532_add_foos.rb&quot;
&amp;gt;&amp;gt; AddFoos.new.up
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;참고: 매우 오래된 버전의 레일에는&lt;/font&gt;&lt;/font&gt;&lt;code&gt;AddFoos.up&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;AddFoos.new.up&lt;/code&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;AddFoos.new.change&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;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;IRB가 없는 대체 방법은 클래스 이름 배열을 반환해야 한다는 사실에 의존합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;script/runner 'require(&quot;db/migrate/20090408054532_add_foos.rb&quot;).first.constantize.up'
&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;schema_migrations&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;테이블, 하지만 어쨌든 그것이 당신이 원하는 것처럼 보입니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 파일을 찾을 수 없는 경우 사용해야 할 수도 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;require(&quot;./db/...&quot;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또는 시도&lt;/font&gt;&lt;/font&gt;&lt;code&gt;require_relative&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;a href=&quot;http://guides.rubyonrails.org/migrations.html#running-specific-migrations&quot; papago-id=&quot;18-1&quot; rel=&quot;noreferrer&quot;&gt;특정&lt;/a&gt; 마이그레이션을 &lt;a href=&quot;http://guides.rubyonrails.org/migrations.html#running-specific-migrations&quot; papago-id=&quot;18-1&quot; rel=&quot;noreferrer&quot;&gt;실행&lt;/a&gt;하려면 다음을 수행합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$ rake db:migrate:up VERSION=20080906120000
&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;a href=&quot;http://guides.rubyonrails.org/migrations.html#rolling-back&quot; rel=&quot;noreferrer&quot; papago-id=&quot;19-1&quot;&gt;마이그레이션을 여러&lt;/a&gt; 번 실행하려면 다음을 수행합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;# use the STEP parameter if you need to go more than one version back
$ rake db:migrate:redo STEP=3
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;20-1&quot;&gt;단일&lt;/strong&gt; &lt;strong papago-id=&quot;20-3&quot;&gt;마이그레이션&lt;/strong&gt;을 여러 번 실행하려면 다음 작업을 수행합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;# this is super useful
$ rake db:migrate:redo VERSION=20080906120000
&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;hr&gt; 
&lt;p papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;22-0&quot;&gt;편집:&lt;/strong&gt; 마이그레이션 파일의 이름을 간단하게 변경할 수도 있습니다. 예:&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;20151013131830_my_migration.rb&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;20151013131831_my_migration.rb&lt;/code&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 정상적으로 마이그레이션하면 마이그레이션이 새 마이그레이션으로 처리됩니다(스테이징과 같은 원격 환경에서 마이그레이션하려는 경우 유용).&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;25-0&quot;&gt;편집&lt;/strong&gt; 2: 데이터베이스의 마이그레이션 항목을 삭제할 수도 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;rails_c&amp;gt; q = &quot;delete from schema_migrations where version = '20151013131830'&quot;
rails_c&amp;gt; ActiveRecord::Base.connection.execute(q)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;code&gt;rake db:migrate&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&gt;&lt;/font&gt;&lt;code&gt;up&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;27&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;핵 이동 방법.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;28&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;구현한 경우&lt;/font&gt;&lt;/font&gt;&lt;code&gt;change&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;29&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음과 같은 방법:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;class AddPartNumberToProducts &amp;lt; ActiveRecord::Migration
  def change
    add_column :products, :part_number, :string
  end
end
&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&gt;&lt;/font&gt;&lt;code&gt;migrate(:up)&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;31&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또는&lt;/font&gt;&lt;/font&gt;&lt;code&gt;migrate(:down)&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&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$ rails console
&amp;gt;&amp;gt; require &quot;db/migrate/20090408054532_add_part_number_to_products.rb&quot;
&amp;gt;&amp;gt; AddPartNumberToProducts.new.migrate(:down)
&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;이 마이그레이션 파일 &quot;20150927161307_create_users.rb&quot;를 다시 실행하는 단계입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li 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;(1983 c)&lt;/font&gt;&lt;/li&gt; 
 &lt;li&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;class CreateUsers &amp;lt; ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :name
      t.string :email
      t.timestamps null: false   end
    end
  end
end
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;36&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;클래스의 인스턴스를 만듭니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;CreateUsers&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&gt;&lt;/font&gt;&lt;code&gt;c1 = CreateUsers.new&lt;/code&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;38&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;메서드 실행&lt;/font&gt;&lt;/font&gt;&lt;code&gt;change&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;39&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그 경우:&lt;/font&gt;&lt;/font&gt;&lt;code&gt;c1.change&lt;/code&gt;&lt;/li&gt; 
&lt;/ol&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;40&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;현재&lt;/font&gt;&lt;/font&gt;&lt;code&gt;rails 5&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;41&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용할 수도 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;rails&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;42&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;대신에&lt;/font&gt;&lt;/font&gt;&lt;code&gt;rake&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;43&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;레일 3 - 4&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;# &amp;lt; rails-5.0
rake db:migrate:up VERSION=20160920130051
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;44&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;레일 5&lt;/font&gt;&lt;/strong&gt; &lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;# &amp;gt;= rails-5.0
rake db:migrate:up VERSION=20160920130051

# or

rails db:migrate:up VERSION=20160920130051
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;45&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용할 수 있는 경로에 문제가 있는 경우&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;require Rails.root + 'db/migrate/20090408054532_add_foos.rb'
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;46&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;콘솔에서 실행하려면 다음과 같이 하십시오.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$ rails console
irb(main)&amp;gt; require &quot;#{Rails.root.to_s}/db/migrate/XXXXX_my_migration.rb&quot;
irb(main)&amp;gt; AddFoo.migrate(:up)
&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;Rails.root&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&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;29&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.migrate(:up)&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;되도록 합니다.part는 마이그레이션을 실행합니다.&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;이 기능은 이미 마이그레이션을 실행하고 DB를 조작하여 마이그레이션을 취소한 경우에 유용하며, 마이그레이션을 다시 시작할 수 있는 빠른 솔루션을 원하는 경우에 유용합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;51&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;방법 1:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;rake db:migrate:up VERSION=20080906120000
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;52&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;방법 2:.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;53&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;레일 콘솔 1에서.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;콘솔에 마이그레이션 클래스를 복사하여 붙여넣습니다(예: add_name_to_user.rb) 2.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 콘솔에서 다음을 입력합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Sharding.run_on_all_shards{AddNameToUser.up}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;54&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;끝났습니다!!&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;31&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;대신 이 점에 유의하시기 바랍니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;script/runner&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;rails runner&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;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 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;적어도 최신 Rails 릴리스(작성 당시 5.2)에서는 실행 중인 마이그레이션을 필터링하는 방법이 하나 더 있는 것 같습니다.&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;SCOPE&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 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;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;1_add_foos.rb&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&gt;&lt;code&gt;2_add_foos.run_this_one.rb&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&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SCOPE=run_this_one rails db:migrate:up
&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 class=&quot;papago-parent&quot;&gt;됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;2_add_foos.run_this_one.rb&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;범위와 일치하는 모든 마이그레이션 파일이 실행됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;65&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/753919/&lt;a href=&quot;https://stackoverflow.com/questions/753919/run-a-single-migration-file&quot; target=&quot;_blank&quot; papago-id=&quot;65-1&quot;&gt;run-a-single-migration-file&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/434</guid>
      <comments>https://copysource.tistory.com/434#entry434comment</comments>
      <pubDate>Sun, 4 Jun 2023 17:52:08 +0900</pubDate>
    </item>
    <item>
      <title>Android:텍스트 편집을 강제로 수행하여 포커스를 제거하시겠습니까?</title>
      <link>https://copysource.tistory.com/433</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Android:&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;텍스트 편집을 강제로 수행하여 포커스를 제거하시겠습니까?&lt;/font&gt;&lt;/h2&gt;
&lt;div&gt; 
 &lt;aside class=&quot;s-notice s-notice__info post-notice js-post-notice mb16&quot; role=&quot;status&quot;&gt; 
  &lt;div class=&quot;d-flex fd-column fw-nowrap&quot;&gt; 
   &lt;div class=&quot;d-flex fw-nowrap&quot;&gt; 
    &lt;div class=&quot;flex--item wmn0 fl1 lh-lg&quot;&gt; 
     &lt;div class=&quot;flex--item fl1 lh-lg&quot;&gt; 
      &lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;b papago-id=&quot;1-1&quot;&gt;이 질문에는 이미 다음&lt;/b&gt;과 같은 답이 있습니다.&lt;/font&gt;&lt;/p&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/1555109/how-to-stop-edittext-from-gaining-focus-when-an-activity-starts-in-android&quot; dir=&quot;ltr&quot; papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Android에서 활동이 시작될 때 EditText가 집중되지 않도록 하는 방법은 무엇입니까?&lt;/font&gt;&lt;/a&gt; 
    &lt;span class=&quot;question-originals-answer-count&quot; papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(54개 답변)&lt;/font&gt;&lt;/span&gt; 
   &lt;/div&gt; 
   &lt;div class=&quot;flex--item mb0 mt8&quot; papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;
&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;마감됨&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;span class=&quot;relativetime&quot; papago-id=&quot;4-1&quot; title=&quot;2015-11-1907:31:57Z&quot; papago-attr-id=&quot;1&quot;&gt;7년 전&lt;/span&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;/div&gt; 
  &lt;/div&gt; 
 &lt;/aside&gt; 
&lt;/div&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;텍스트 편집에서 포커스를 제거할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어 키보드가 나타나고 사용자가 뒤로 단추를 눌러 숨기면 포커스와 커서가 사라집니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;어떻게 할 수 있습니까?&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;커서와 포커스를 다음과 같이 사라지게 할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;edittext.clearFocus();
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 키보드 숨기기가 어려운 경우 탐지합니다.&lt;/font&gt;&lt;/p&gt;&lt;p&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;onCreate&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;Activity&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;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; this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
&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&gt;&lt;code&gt;LinearLayout&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;EditText&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;XML 파일에 저장합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;LinearLayout 
    android:focusable=&quot;true&quot;
    android:focusableInTouchMode=&quot;true&quot; 
    android:clickable=&quot;true&quot;
    android:layout_width=&quot;0px&quot;
    android:layout_height=&quot;0px&quot; /&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;font class=&quot;papago-parent&quot;&gt;'문자'.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;Button
    android:id=&quot;@+id/btnSearch&quot;
    android:layout_width=&quot;50dp&quot;
    android:layout_height=&quot;50dp&quot;
    android:focusable=&quot;true&quot;
    android:focusableInTouchMode=&quot;true&quot;
    android:gravity=&quot;center&quot;
    android:text=&quot;Quick Search&quot;
    android:textColor=&quot;#fff&quot;
    android:textSize=&quot;13sp&quot;
    android:textStyle=&quot;bold&quot; /&amp;gt;

&amp;lt;EditText
    android:id=&quot;@+id/edtSearch&quot;
    android:layout_width=&quot;wrap_content&quot;
    android:layout_height=&quot;wrap_content&quot;
    android:layout_alignParentLeft=&quot;true&quot;
    android:layout_centerVertical=&quot;true&quot;
    android:layout_marginRight=&quot;5dp&quot;
    android:gravity=&quot;left&quot;
    android:hint=&quot;Name&quot;
    android:maxLines=&quot;1&quot;
    android:singleLine=&quot;true&quot;
    android:textColorHint=&quot;@color/blue&quot;
    android:textSize=&quot;13sp&quot;
    android:textStyle=&quot;bold&quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h1 papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;포커스를 제거하지만 포커스를 유지할 수 있습니다.&lt;/font&gt;&lt;/h1&gt; 
&lt;pre&gt;&lt;code&gt;editText.setFocusableInTouchMode(false);
editText.setFocusable(false);
editText.setFocusableInTouchMode(true);
editText.setFocusable(true);
&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;EditText는 포커스를 잃지만 새 터치 이벤트에서 포커스를 다시 얻을 수 있습니다.&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;android:focusable=&quot;true&quot;
android:focusableInTouchMode=&quot;true&quot; 
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것은 속임수를 쓸 것입니다 :)&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.helloandroid.com/tutorials/remove-autofocus-edittext-android&quot; rel=&quot;noreferrer&quot; papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;자동 포커스 제거 텍스트 편집 Android&lt;/font&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 papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;22-0&quot;&gt;편집&lt;/strong&gt; 링크에서 선형 레이아웃을 사용할 것을 제안하지만 단순 보기가 작동합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;View
    android:id=&quot;@+id/focus_thief&quot;
    android:layout_width=&quot;1dp&quot;
    android:layout_height=&quot;1dp&quot;
    android:focusable=&quot;true&quot;
    android:focusableInTouchMode=&quot;true&quot; /&amp;gt;
&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; 다음  의 맨  (첫 번째  수 있는이 됨) )▁to▁then▁this것),(경th▁(▁is&quot;될우▁focus▁layout▁ifiefto▁&quot;able▁placed▁calls),&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;clearFocus()&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;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;매니페스트 작업 섹션에 Android&lt;strong papago-id=&quot;25-1&quot;&gt;:windowSoftInputMode&lt;/strong&gt;=&quot;&lt;strong papago-id=&quot;25-1&quot;&gt;stateAlwaysHidden&quot;&lt;/strong&gt;을 &lt;strong papago-id=&quot;25-1&quot;&gt;포함&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;이는 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
&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;하지만 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;참고로, 코드로 키보드를 숨길 수도 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;// hide virtual keyboard
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mYourEditText.getWindowToken(), 0);
&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;font class=&quot;papago-parent&quot;&gt;Create()에 다음 코드를 기록합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;InputMethodManager imm = (InputMethodManager)
getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0);
&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;editText.clearFocus();

editText.setCursorVisible(false);
&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;&amp;lt;View
    android:id=&quot;@+id/fucused&quot;
    android:layout_width=&quot;wrap_content&quot;
    android:layout_height=&quot;wrap_content&quot;
    android:focusable=&quot;true&quot;
    android:focusableInTouchMode=&quot;true&quot;/&amp;gt;
&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 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;EditText&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;android:focusableInTouchMode=&quot;true&quot;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;야 합니다를 제거해야 .&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&amp;lt;requestFocus/&amp;gt;&lt;/code&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&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;LinearLayout&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;pre&gt;&lt;code&gt;android:focusable=&quot;true&quot;
android:focusableInTouchMode=&quot;true&quot;
&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;p papago-id=&quot;39&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;SO에 대한 첫 답변이니 실수가 있더라도 너무 심하게 하지 마세요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;:D&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;SO 주변에는 답변이 거의 없지만, 저는 이것이 저를 미치게 했기 때문에 저의 완전한 해결책을 게시하고 싶은 충동을 느낍니다.&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;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;em papago-id=&quot;42-1&quot;&gt;EditText&lt;/em&gt; 및 &lt;em papago-id=&quot;42-3&quot;&gt;부모&lt;/em&gt; 보기가 부모에게 필요합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot; 
              android:orientation=&quot;vertical&quot;
              android:layout_width=&quot;match_parent&quot; 
              android:layout_height=&quot;match_parent&quot;
              android:id=&quot;@+id/lytContainer&quot;
              android:descendantFocusability=&quot;beforeDescendants&quot;
              android:focusableInTouchMode=&quot;true&quot;&amp;gt;
&amp;lt;EditText android:layout_width=&quot;fill_parent&quot; 
              android:layout_height=&quot;wrap_content&quot; 
              android:id=&quot;@+id/etEditor&quot;
              android:inputType=&quot;number&quot;
              android:layout_gravity=&quot;center&quot; 
              android:hint=&quot;@string/enter_your_text&quot;
              android:textColor=&quot;@android:color/darker_gray&quot; 
              android:textSize=&quot;12dp&quot;
              android:textAlignment=&quot;center&quot; 
              android:gravity=&quot;center&quot; 
              android:clickable=&quot;true&quot;/&amp;gt;
&amp;lt;/LinearLayout&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;43&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서, 저는 여기에 몇 가지가 필요했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;내 편집 텍스트에 대한 자리 표시자가 필요했습니다. 즉, -&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;44&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Android:model=&quot;model&quot;&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;45&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;android:descendantFocusability=&quot;beforeDescendants&quot;
android:focusableInTouchMode=&quot;true&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;46&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;em papago-id=&quot;46-1&quot;&gt;이&lt;/em&gt; 설정을 사용하면 EditText가 &lt;em papago-id=&quot;46-3&quot;&gt;활동&lt;/em&gt; 입력에 초점을 맞추지 않고 &lt;em papago-id=&quot;46-5&quot;&gt;나중&lt;/em&gt;에 활동 자체에 초점을 맞추게 되므로 TouchListener를 &lt;em papago-id=&quot;46-7&quot;&gt;설정&lt;/em&gt;하여 &lt;em papago-id=&quot;46-9&quot;&gt;EditText&lt;/em&gt;에서 포커스를 빼낼 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;47&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이제 활동에서:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;package com.at.keyboardhide;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.view.View.OnTouchListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.LinearLayout;

public class MainActivity extends Activity implements OnTouchListener{
private EditText getEditText;
private LinearLayout getLinearLayout;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.getWindow().setSoftInputMode(
            WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

    setContentView(R.layout.keyboardmain);
    getEditText = (EditText)findViewById(R.id.etEditor);
    getLinearLayout = (LinearLayout)findViewById(R.id.lytContainer);
    getLinearLayout.setOnTouchListener(this);

    getEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if (actionId == EditorInfo.IME_ACTION_DONE) {
                Log.d(&quot;EDTA&quot;, &quot;text was entered.&quot;);
                getEditText.clearFocus();
                imm.hideSoftInputFromWindow(barcodeNo.getWindowToken(), 0);
                return true;
            }
            return false;
        }
    });
}
@Override
public boolean onTouch(View v, MotionEvent event) {
    if(v==getLinearLayout){
        InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(getEditText.getWindowToken(), 0);
        getEditText.clearFocus();
        return true;
        }
    return false;
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;48&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 질문 페이지에서 찾은 비트에 대한 답변 중 &lt;a href=&quot;http://amitthaperandroidquery.blogspot.com/2011/10/remove-keyboard-after-click-outside.html?showComment=1395145892395#c3165564688676156529&quot; papago-id=&quot;48-1&quot;&gt;일부&lt;/a&gt;와 블로그에서 찾은 활동 솔루션에 대한 부분입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 놓친 나머지 부분은 &lt;em papago-id=&quot;48-7&quot;&gt;부모&lt;/em&gt; 보기를 위해 &lt;em papago-id=&quot;48-5&quot;&gt;세트OnEditorActionListener&lt;/em&gt; 내부와 TouchLister에 모두 추가한 &lt;em papago-id=&quot;48-3&quot;&gt;EditText&lt;/em&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;/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;건배, Z.&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 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;.requestFocus()&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;처음에 초점을 맞추려는 뷰의 메서드(Create() 메서드)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;53&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 다른 보기에 초점을 맞추면 일부 코드가 삭제됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;(예: 키보드 숨기기 코드)&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;54&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저도 같은 문제가 있었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것은 저를 미친 것 이상으로 만들었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;55&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;ScrollView를 사용한 확장 대화상자에서 테이블 레이아웃과 SeekBar 및 EditText가 포함된 확장 선형 레이아웃을 사용했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;56&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;첫 번째 편집 텍스트는 대화 상자를 표시하고 키보드를 통해 텍스트 편집을 마친 후 항상 자동 포커스를 가집니다. 편집 텍스트는 여전히 포커스를 유지하고 키보드는 여전히 볼 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;57&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 이 스레드의 거의 모든 솔루션을 시도했지만 아무 것도 제게 효과가 없었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;58&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;58-1&quot;&gt;여기 간단한&lt;/strong&gt; 해결책이 있습니다. (텍스트 = 텍스트 편집)&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;text.setOnEditorActionListener( new OnEditorActionListener( ){
    public boolean onEditorAction( TextView v, int actionId, KeyEvent event ){
        if( (event != null &amp;amp;&amp;amp; event.getKeyCode() == KeyEvent.KEYCODE_ENTER) ||
            (actionId == EditorInfo.IME_ACTION_DONE) ){
            text.clearFocus( );
            InputMethodManager iMgr = null;
            iMgr = (InputMethodManager)mContext.getSystemService( Context.INPUT_METHOD_SERVICE );
            iMgr.hideSoftInputFromWindow( text.getWindowToken(), 0 );
        }
        return true;
    }
});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;59&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런데 저는 이 문제를 해결하기 위해 다음 스니펫을 사용하지 &lt;strong papago-id=&quot;59-1&quot;&gt;않았습니다.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;//setFocusableInTouchMode( true )
//setFocusable( true )
//setDescendantFocusability( ViewGroup.FOCUS_BEFORE_DESCENDANTS )
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;60&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 가로와 세로가 1dp인 뷰와 같은 스페이서 아이템은&lt;strong papago-id=&quot;60-1&quot;&gt; 사용하지 않았습니다&lt;/strong&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;누군가에게 도움이 되기를 바랍니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;d&lt;/font&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;editText.setFocusableInTouchMode(true)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 그&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;EditText&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용자가 터치할 때 초점을 맞출 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 레이아웃 등되면 &quot;&quot; (activity, dialog 등)&quot;이 표시됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;EditText&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;레이아웃의 첫 번째 보기임에도 불구하고 자동으로 포커스를 얻지 못합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음을 포함할 수도 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;android:windowSoftInputMode=&quot;stateAlwaysHidden&quot;&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;67&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;this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
&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;상위 요소의&lt;strong papago-id=&quot;68-1&quot;&gt; rodroid&lt;/strong&gt;:descendantFocusability &lt;strong papago-id=&quot;68-1&quot;&gt;속성&lt;/strong&gt;을 설정하면 요소에 대한 포커스를 피할 수 있습니다.&lt;/font&gt;&lt;/p&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;pre&gt;&lt;code&gt;&amp;lt;ScrollView xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
xmlns:tools=&quot;http://schemas.android.com/tools&quot;
android:id=&quot;@+id/search__scroller&quot;
android:descendantFocusability=&quot;blocksDescendants&quot;
android:layout_width=&quot;match_parent&quot;
android:layout_height=&quot;match_parent&quot;
android:layout_alignParentLeft=&quot;true&quot;
android:layout_alignParentTop=&quot;true&quot; &amp;gt;
&amp;lt;/ScrollView&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;70&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기서 &quot;blocksDescendants&quot;로 설정된 Android:descendantFocusability 특성은 하위 요소에 대한 포커스를 차단합니다.&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;a href=&quot;https://developer.android.com/reference/android/view/ViewGroup.html#setDescendantFocusability%28int%29&quot; rel=&quot;nofollow&quot; papago-id=&quot;71-1&quot;&gt;내용&lt;/a&gt;은 여기에서 확인할 수 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;check your xml file
 &amp;lt;EditText
            android:id=&quot;@+id/editText1&quot;
            android:layout_width=&quot;wrap_content&quot;
            android:layout_height=&quot;wrap_content&quot;
            android:textSize=&quot;14sp&quot; &amp;gt;

            **&amp;lt;requestFocus /&amp;gt;**
 &amp;lt;/EditText&amp;gt;


//Remove  **&amp;lt;requestFocus /&amp;gt;** from xml
&lt;/code&gt;&lt;/pre&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;URL : https://stackoverflow.com/questions/5056734/&lt;a href=&quot;https://stackoverflow.com/questions/5056734/android-force-edittext-to-remove-focus&quot; target=&quot;_blank&quot; papago-id=&quot;72-1&quot;&gt;android-force-edittext-to-remove-focus&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/433</guid>
      <comments>https://copysource.tistory.com/433#entry433comment</comments>
      <pubDate>Sun, 4 Jun 2023 17:51:30 +0900</pubDate>
    </item>
    <item>
      <title>스위프트 스위치 문보다 작거나 큼</title>
      <link>https://copysource.tistory.com/432</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;나는 잘 알고 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;switch&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;switch&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;if someVar &amp;lt; 0 {
    // do something
} else if someVar == 0 {
    // do something else
} else if someVar &amp;gt; 0 {
    // etc
}
&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 class=&quot;papago-parent&quot;&gt;가정하면&lt;/font&gt;&lt;/font&gt;&lt;code&gt;someVar&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;Int&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;Comparable&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;where&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;pre&gt;&lt;code&gt;var someVar = 3

switch someVar {
case let x where x &amp;lt; 0:
    print(&quot;x is \(x)&quot;)
case let x where x == 0:
    print(&quot;x is \(x)&quot;)
case let x where x &amp;gt; 0:
    print(&quot;x is \(x)&quot;)
default:
    print(&quot;this is impossible&quot;)
}
&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;switch someVar {
case _ where someVar &amp;lt; 0:
    print(&quot;someVar is \(someVar)&quot;)
case 0:
    print(&quot;someVar is 0&quot;)
case _ where someVar &amp;gt; 0:
    print(&quot;someVar is \(someVar)&quot;)
default:
    print(&quot;this is impossible&quot;)
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신은 또한 피할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;where&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;switch someVar {
case Int.min..&amp;lt;0:
    print(&quot;someVar is \(someVar)&quot;)
case 0:
    print(&quot;someVar is 0&quot;)
default:
    print(&quot;someVar is \(someVar)&quot;)
}
&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;Swift 5를 사용하면 if 문을 대체하기 위해 다음 스위치 중 하나를 선택할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;hr&gt; 
&lt;h3&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;#1 스위치 사용하기&lt;/font&gt;&lt;/font&gt;&lt;code&gt;PartialRangeFrom&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;PartialRangeUpTo&lt;/code&gt;&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;let value = 1

switch value {
case 1...:
    print(&quot;greater than zero&quot;)
case 0:
    print(&quot;zero&quot;)
case ..&amp;lt;0:
    print(&quot;less than zero&quot;)
default:
    fatalError()
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr&gt; 
&lt;h3&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;#2 스위치 사용하기&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ClosedRange&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;Range&lt;/code&gt;&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;let value = 1

switch value {
case 1 ... Int.max:
    print(&quot;greater than zero&quot;)
case Int.min ..&amp;lt; 0:
    print(&quot;less than zero&quot;)
case 0:
    print(&quot;zero&quot;)
default:
    fatalError()
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr&gt; 
&lt;h3 papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;#3 where 절과 함께 스위치 사용&lt;/font&gt;&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;let value = 1

switch value {
case let val where val &amp;gt; 0:
    print(&quot;\(val) is greater than zero&quot;)
case let val where val == 0:
    print(&quot;\(val) is zero&quot;)
case let val where val &amp;lt; 0:
    print(&quot;\(val) is less than zero&quot;)
default:
    fatalError()
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr&gt; 
&lt;h3&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;#4 where 절 및 할당과 함께 스위치 사용&lt;/font&gt;&lt;/font&gt;&lt;code&gt;_&lt;/code&gt;&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;let value = 1

switch value {
case _ where value &amp;gt; 0:
    print(&quot;greater than zero&quot;)
case _ where value == 0:
    print(&quot;zero&quot;)
case _ where value &amp;lt; 0:
    print(&quot;less than zero&quot;)
default:
    fatalError()
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr&gt; 
&lt;h3&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;#5 스위치 사용하기&lt;/font&gt;&lt;/font&gt;&lt;code&gt;RangeExpression&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;~=(_:_:)&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;/h3&gt; 
&lt;pre&gt;&lt;code&gt;let value = 1

switch true {
case 1... ~= value:
    print(&quot;greater than zero&quot;)
case ..&amp;lt;0 ~= value:
    print(&quot;less than zero&quot;)
default:
    print(&quot;zero&quot;)
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr&gt; 
&lt;h3&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;#6 스위치 사용하기&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Equatable&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;의전의&lt;/font&gt;&lt;/font&gt;&lt;code&gt;~=(_:_:)&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;/h3&gt; 
&lt;pre&gt;&lt;code&gt;let value = 1

switch true {
case value &amp;gt; 0:
    print(&quot;greater than zero&quot;)
case value &amp;lt; 0:
    print(&quot;less than zero&quot;)
case 0 ~= value:
    print(&quot;zero&quot;)
default:
    fatalError()
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr&gt; 
&lt;h3&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;21&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;#7 스위치 사용하기&lt;/font&gt;&lt;/font&gt;&lt;code&gt;PartialRangeFrom&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;PartialRangeUpTo&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;RangeExpression&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;contains(_:)&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;25&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;방법&lt;/font&gt;&lt;/font&gt;&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;let value = 1

switch true {
case (1...).contains(value):
    print(&quot;greater than zero&quot;)
case (..&amp;lt;0).contains(value):
    print(&quot;less than zero&quot;)
default:
    print(&quot;zero&quot;)
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;26&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그&lt;/font&gt;&lt;/font&gt;&lt;code&gt;switch&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;27&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;후드 아래에 있는 진술은 다음을 사용합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;~=&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;28&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;교환입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 이것은:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;let x = 2

switch x {
case 1: print(1)
case 2: print(2)
case 3..&amp;lt;5: print(3..&amp;lt;5)
default: break
}
&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;if 1          ~= x { print(1) }
else if 2     ~= x { print(2) }
else if 3..&amp;lt;5 ~= x { print(3..&amp;lt;5) }
else {  }
&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://developer.apple.com/library/prerelease/ios/documentation/Swift/Reference/Swift_StandardLibrary_Operators/index.html#//apple_ref/swift/opfunc/s:ZFSsoi2teuRq_Ss12IntervalType_FTq_qq_S_5Bound_Sb&quot; papago-id=&quot;34-0&quot;&gt;표준 라이브러리 &lt;/a&gt;참조를 &lt;a href=&quot;https://developer.apple.com/library/prerelease/ios/documentation/Swift/Reference/Swift_StandardLibrary_Operators/index.html#//apple_ref/swift/opfunc/s:ZFSsoi2teuRq_Ss12IntervalType_FTq_qq_S_5Bound_Sb&quot; papago-id=&quot;34-0&quot;&gt;보면 &lt;/a&gt;가&lt;a href=&quot;https://developer.apple.com/library/prerelease/ios/documentation/Swift/Reference/Swift_StandardLibrary_Operators/index.html#//apple_ref/swift/opfunc/s:ZFSsoi2teuRq_Ss12IntervalType_FTq_qq_S_5Bound_Sb&quot; papago-id=&quot;34-0&quot;&gt; 오버로드되는 작업을 정확히&lt;/a&gt; 알 수 &lt;a href=&quot;https://developer.apple.com/library/prerelease/ios/documentation/Swift/Reference/Swift_StandardLibrary_Operators/index.html#//apple_ref/swift/opfunc/s:ZFSsoi2teuRq_Ss12IntervalType_FTq_qq_S_5Bound_Sb&quot; papago-id=&quot;34-0&quot;&gt;있습니다&lt;/a&gt;. 여기에는 범위 일치 및 동등한 작업에 대한 동일성이 포함됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;(stdlib의 함수가 아닌 언어 기능인 열거형 대소문자 일치는 포함되지 않음)&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;이러한 비교를 위해 where 문을 추가해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;29&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;만약...&lt;/font&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;37&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;37-1&quot;&gt;일반적&lt;/em&gt;으로 권장되지 않음) 한 가지 가능성은 다음과 같습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;func ~= &amp;lt;T&amp;gt; (lhs: T -&amp;gt; Bool, rhs: T) -&amp;gt; Bool {
  return lhs(rhs)
}
&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;다음과 같은 용도로 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;func isEven(n: Int) -&amp;gt; Bool { return n % 2 == 0 }

switch 2 {
case isEven: print(&quot;Even!&quot;)
default:     print(&quot;Odd!&quot;)
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;39&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 경우 다음과 같은 문장이 있을 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;switch someVar {
case isNegative: ...
case 0: ...
case isPositive: ...
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;31&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 이제 당신은 새로운 것을 정의해야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;isNegative&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&gt;&lt;/font&gt;&lt;code&gt;isPositive&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;33&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기능들.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;더 많은 작업자를 오버로드하지 않는 한...&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;43&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;일반 infix 연산자를 curry 접두사 또는 postfix 연산자로 오버로드할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음은 예입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;postfix operator &amp;lt; {}

postfix func &amp;lt; &amp;lt;T : Comparable&amp;gt;(lhs: T)(_ rhs: T) -&amp;gt; Bool {
  return lhs &amp;lt; rhs
}
&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;let isGreaterThanFive = 5&amp;lt;

isGreaterThanFive(6) // true
isGreaterThanFive(5) // false
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;45&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 기능을 이전 기능과 결합하면 스위치 문은 다음과 같이 표시됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;switch someVar {
case 0&amp;lt; : print(&quot;Bigger than 0&quot;)
case 0  : print(&quot;0&quot;)
default : print(&quot;Less than 0&quot;)
}
&lt;/code&gt;&lt;/pre&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 class=&quot;papago-parent&quot;&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 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;switch x {
case negative:
case 0:
case positive:
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;48&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또는&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;switch x {
case lessThan(someNumber):
case someNumber:
case greaterThan(someNumber):
}
&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;p papago-id=&quot;50&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;할 수 있는 일:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;switch true {
case someVar &amp;lt; 0:
    print(&quot;less than zero&quot;)
case someVar == 0:
    print(&quot;eq 0&quot;)
default:
    print(&quot;otherwise&quot;)
}
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;51&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것이 범위가 있는 것처럼 보입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;switch average {
case 0..&amp;lt;40: //greater or equal than 0 and less than 40
    return &quot;T&quot;
case 40..&amp;lt;55: //greater or equal than 40 and less than 55
    return &quot;D&quot;
case 55..&amp;lt;70: //greater or equal than 55 and less than 70
    return &quot;P&quot;
case 70..&amp;lt;80: //greater or equal than 70 and less than 80
    return &quot;A&quot;
case 80..&amp;lt;90: //greater or equal than 80 and less than 90
    return &quot;E&quot;
case 90...100: //greater or equal than 90 and less or equal than 100
    return &quot;O&quot;
default:
    return &quot;Z&quot;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;52&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Swift 4가 문제를 해결하게 되어 기쁩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;53&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;3의 해결 방법으로 다음을 수행했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;switch translation.x  {
case  0..&amp;lt;200:
    print(translation.x, slideLimit)
case  -200..&amp;lt;0:
    print(translation.x, slideLimit)
default:
    break
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;54&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;효과는 있지만 이상적이지는 않습니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;36&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;누군가 이미 게시했기 때문에&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;case let x where x &amp;lt; 0:&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&gt;&lt;code&gt;someVar&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&gt;&lt;code&gt;Int&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;39&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;switch someVar{
case Int.min...0: // do something
case 0: // do something
default: // do something
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;40&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 여기 어디에 대한 대안이 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;someVar&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&gt;&lt;code&gt;Double&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 class=&quot;papago-parent&quot;&gt;:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;case -(Double.infinity)...0: // do something
// etc
&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;스위프트 5는 지금 멋지고 깨끗합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;switch array.count {
case 3..&amp;lt;.max: 
    print(&quot;Array is greater than or equal to 3&quot;)
case .min..&amp;lt;3:
    print(&quot;Array is less than 3&quot;)
default:
    break
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&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&gt;&lt;code&gt;&amp;lt;0&lt;/code&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 class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;표현이 작동하지 않습니다(더 이상?).&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 그래서 저는 이렇게 되었습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;65&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Swift 3.0:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;switch someVar {
    case 0:
        // it's zero
    case 0 ..&amp;lt; .greatestFiniteMagnitude:
        // it's greater than zero
    default:
        // it's less than zero
    }
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;66&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내가 생각할 수 있는 가장 깨끗한 해결책:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;switch someVar {
case ..&amp;lt;0:
    // do something
case 0:
    // do something else
default:
    // etc
}
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;67&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/31656642/&lt;a href=&quot;https://stackoverflow.com/questions/31656642/lesser-than-or-greater-than-in-swift-switch-statement&quot; target=&quot;_blank&quot; papago-id=&quot;67-1&quot;&gt;lesser-than-or-greater-than-in-swift-switch-statement&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/432</guid>
      <comments>https://copysource.tistory.com/432#entry432comment</comments>
      <pubDate>Sun, 4 Jun 2023 17:50:23 +0900</pubDate>
    </item>
    <item>
      <title>레일 3: JSON 요청 오류를 반환하는 방법</title>
      <link>https://copysource.tistory.com/431</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;레일 3: JSON 요청 오류를 반환하는 방법&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;사용자가 API에 JSON/XML 요청을 했을 때 800, 404 등의 오류를 반환하려면 어떻게 해야 합니까?&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;error 404, {:error =&amp;gt; &quot;ERror&quot;.to_json }
&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 papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또, 「response_to」를 넣으려고 했지만, 동작하지 않습니다(response_to와 중복되어 에러가 발생합니다).&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;html을 사용하여 이러한 오류를 반환하는 것과 마찬가지로 HTTP 헤더의 일부입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;render json: @myobject, status: :unprocessable_entity
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr&gt; 
&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;업데이트, 코멘트에 대한 응답:&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모든 상태 코드는 Rack에서 얻을 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Rails는 기호화된 상태를 랙에 전달합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Rack::Utils.status_code(options[:status])
&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;이것은 단순히 심볼을 상태 목록과 일치시킨다(문자열은 심볼로 변환된다).여기 스모킹 프레시 리스트가 있다:https://github.com/rack/rack/blob/master/lib/rack/utils.rb#&lt;a href=&quot;https://github.com/rack/rack/blob/master/lib/rack/utils.rb#L575-L638&quot; rel=&quot;noreferrer&quot; papago-id=&quot;9-1&quot;&gt;L575-L638&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;더 「 」라고  것이 됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;status_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 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;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;URL : https://stackoverflow.com/questions/6004536/&lt;a href=&quot;https://stackoverflow.com/questions/6004536/rails-3-how-to-return-errors-in-a-json-request&quot; target=&quot;_blank&quot; papago-id=&quot;12-1&quot;&gt;rails-3-how-to-return-errors-in-a-json-request&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/431</guid>
      <comments>https://copysource.tistory.com/431#entry431comment</comments>
      <pubDate>Sun, 26 Mar 2023 14:36:38 +0900</pubDate>
    </item>
    <item>
      <title>Symfony2, 액션이 Ajax에서 호출되는지 확인합니다.</title>
      <link>https://copysource.tistory.com/430</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Symfony2, 액션이 Ajax에서 호출되는지 확인합니다.&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;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;[네]의 경우는 아무것도 추가되지 않고 [아니오]의 경우는 홈페이지로 리다이렉트 할 필요가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;나는 방금 찾았다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;if($this-&amp;gt;getRequest()-&amp;gt;isXmlHttpRequest())&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;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;사용 중인 메서드에 $request 변수를 추가하기만 하면 됩니다.(컨트롤러별로)&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;?php
namespace YOUR\Bundle\Namespace

use Symfony\Component\HttpFoundation\Request;

class SliderController extends Controller
{

    public function someAction(Request $request)
    {
        if($request-&amp;gt;isXmlHttpRequest()) {
            // Do something...
        } else {
            return $this-&amp;gt;redirect($this-&amp;gt;generateUrl('your_route'));
        }
    }

}
&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;pre class=&quot;lang-twig prettyprint-override&quot;&gt;&lt;code&gt;{# app/Resources/views/layout.html.twig #}
{% extends app.request.xmlHttpRequest 
     ? '::ajax-layout.html.twig'
     : '::full-layout.html.twig' %}
&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;layout.html.twig&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Ajax에서 생성되면 표준 마크업을 모두 자동으로 삭제할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;http://richardmiller.co.uk/2013/02/18/symfony2-ajax-and-full-page-templates/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;12&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;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;먼저 getRequest()는 권장되지 않으므로 작업 메서드에서 인수를 통해 요청을 가져옵니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;컨트롤러 클래스를 추가 코드로 폴리싱하지 않을 경우 서비스인 이벤트청취자를 쓰는 것이 해결책입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음과 같이 정의할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;services:
    acme.request.listener:
        class: Acme\Bundle\NewBundle\EventListener\RequestListener
        arguments: [@request_stack]
        tags:
            - { name: kernel.event_listener, event: kernel.request, method: onRequestAction }
&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;그런 다음 RequestListener 클래스에서 onRequestAction() 메서드를 만들고 요청 스택을 contrcutor를 통해 주입합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;onRequestAction() 내에서 다음과 같은 컨트롤러 이름을 얻을 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$this-&amp;gt;requestStack-&amp;gt;getCurrentRequest()-&amp;gt;get('_controller');
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;컨트롤러 이름과 액션이 반환됩니다(:로 구분되어 있는 것 같습니다).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;문자열을 해석하여 올바른 컨트롤러인지 확인합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 경우 다음과 같이 XmlHttpRequest임을 확인합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$this-&amp;gt;requestStack-&amp;gt;getCurrentRequest()-&amp;gt;isXmlHttpRequest();
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그렇지 않으면 리디렉션/전송할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 이것은 모든 요청마다 확인된다는 점에 유의하십시오.&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;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/23911982/&lt;a href=&quot;https://stackoverflow.com/questions/23911982/symfony2-check-if-an-action-is-called-by-ajax-or-not&quot; target=&quot;_blank&quot; papago-id=&quot;20-1&quot;&gt;symfony2-check-if-an-action-is-called-by-ajax-or-not&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/430</guid>
      <comments>https://copysource.tistory.com/430#entry430comment</comments>
      <pubDate>Sun, 26 Mar 2023 14:32:15 +0900</pubDate>
    </item>
    <item>
      <title>Twig+ Wordpress - 어레이 인수를 기능에 전달하는 방법</title>
      <link>https://copysource.tistory.com/429</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Twig+ Wordpress - 어레이 인수를 기능에 전달하는 방법&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 Twig 템플릿 시스템을 사용하여 개발한 Wordpress 테마를 사용하고 있습니다.&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;get_terms()&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;em papago-id=&quot;3-1&quot;&gt;있습니다&lt;/em&gt;.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;array&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;/p&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;단, 다음과 같은 행이 트윅 파일에 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;{% for distrito in wp.get_terms('Distritos') %} 
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;code&gt;distrito&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;variable&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;Distritos&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;array&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;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;wp.get_terms가 정의되어 있는 장소가 있을 것 같은데 찾을 수 없습니다.&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;Twig는 보통 PHP와 거의 비슷하게 작동합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;함수 호출의 경우 PHP에서와 같은 매개 &lt;em papago-id=&quot;11-1&quot;&gt;변수&lt;/em&gt;를 추가합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;{{ method(parameter1, parameter2) }}
&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;[&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;]&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;{&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;}&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;{% set array = [1, 2, 3] %}
{% set assoc = {'key': 'value', 'key2': 2} %}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 함수 호출은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;{% for distrito in wp.get_terms('Distritos', ['a', 'b', 'c']) %} 
&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;a href=&quot;http://twig.sensiolabs.org/doc/templates.html#setting-variables&quot; papago-id=&quot;18-1&quot;&gt;자세한 내용&lt;/a&gt;은 twig 문서를 참조하십시오.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/18949308/&lt;a href=&quot;https://stackoverflow.com/questions/18949308/twig-wordpress-how-to-pass-array-arguments-to-function&quot; target=&quot;_blank&quot; papago-id=&quot;19-1&quot;&gt;twig-wordpress-how-to-pass-array-arguments-to-function&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/429</guid>
      <comments>https://copysource.tistory.com/429#entry429comment</comments>
      <pubDate>Sun, 26 Mar 2023 14:26:59 +0900</pubDate>
    </item>
    <item>
      <title>Javascript를 사용하여 JSON 개체에 값이 포함되어 있는지 확인합니다.</title>
      <link>https://copysource.tistory.com/428</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Javascript를 사용하여 JSON 개체에 값이 포함되어 있는지 확인합니다.&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; papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;
&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;b papago-id=&quot;1-1&quot;&gt;이 질문에는 이미 답변&lt;/b&gt;이 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;     &lt;/font&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/11922383/how-can-i-access-and-process-nested-objects-arrays-or-json&quot; dir=&quot;ltr&quot; papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;중첩된 개체, 어레이 또는 JSON에 액세스하고 처리하는 방법은 무엇입니까?&lt;/font&gt;&lt;/a&gt; 
    &lt;span class=&quot;question-originals-answer-count&quot; papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(31 회답)&lt;/font&gt;&lt;/span&gt; 
   &lt;/div&gt; 
   &lt;div class=&quot;flex--item mb0 mt8&quot; papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;
&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;닫힘&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;span class=&quot;relativetime&quot; papago-id=&quot;4-1&quot; title=&quot;2016-11-05 14:31:20Z&quot; papago-attr-id=&quot;1&quot;&gt;6년&lt;/span&gt; 전에요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;
&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;   &lt;/font&gt;&lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/aside&gt; 
&lt;/div&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;아래와 같은 JSON 오브젝트의 특정 키에 특정 값이 포함되어 있는지 확인하고 싶습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;오브젝트 중 하나에서 키 &quot;name&quot;이 값 &quot;Blefeld&quot;(참)를 가지고 있는지 여부를 확인한다고 가정합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;내가 어떻게 그럴 수 있을까?&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;[ {
  &quot;id&quot; : 19,
  &quot;cost&quot; : 400,
  &quot;name&quot; : &quot;Arkansas&quot;,
  &quot;height&quot; : 198,
  &quot;weight&quot; : 35 
}, {
  &quot;id&quot; : 21,
  &quot;cost&quot; : 250,
  &quot;name&quot; : &quot;Blofeld&quot;,
  &quot;height&quot; : 216,
  &quot;weight&quot; : 54 
}, {
  &quot;id&quot; : 38,
  &quot;cost&quot; : 450,
  &quot;name&quot; : &quot;Gollum&quot;,
  &quot;height&quot; : 147,
  &quot;weight&quot; : 22 
} ]
&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;Array.some()&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;/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;const arr = [
  {
    id: 19,
    cost: 400,
    name: 'Arkansas',
    height: 198,
    weight: 35 
  }, 
  {
    id: 21,
    cost: 250,
    name: 'Blofeld',
    height: 216,
    weight: 54 
  }, 
  {
    id: 38,
    cost: 450,
    name: 'Gollum',
    height: 147,
    weight: 22 
  }
];

console.log(arr.some(item =&amp;gt; item.name === 'Blofeld'));
console.log(arr.some(item =&amp;gt; item.name === 'Blofeld2'));

// search for object using lodash
const objToFind1 = {
  id: 21,
  cost: 250,
  name: 'Blofeld',
  height: 216,
  weight: 54 
};
const objToFind2 = {
  id: 211,
  cost: 250,
  name: 'Blofeld',
  height: 216,
  weight: 54 
};
console.log(arr.some(item =&amp;gt; _.isEqual(item, objToFind1)));
console.log(arr.some(item =&amp;gt; _.isEqual(item, objToFind2)));&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://cdn.jsdelivr.net/npm/lodash@4.17.11/lodash.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;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러면 이름이 === &quot;Blofeld&quot;인 요소가 일치하는 배열이 제공됩니다.&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;var data = [ {
  &quot;id&quot; : 19,
  &quot;cost&quot; : 400,
  &quot;name&quot; : &quot;Arkansas&quot;,
  &quot;height&quot; : 198,
  &quot;weight&quot; : 35
}, {
  &quot;id&quot; : 21,
  &quot;cost&quot; : 250,
  &quot;name&quot; : &quot;Blofeld&quot;,
  &quot;height&quot; : 216,
  &quot;weight&quot; : 54
}, {
  &quot;id&quot; : 38,
  &quot;cost&quot; : 450,
  &quot;name&quot; : &quot;Gollum&quot;,
  &quot;height&quot; : 147,
  &quot;weight&quot; : 22
} ];

var result = data.filter(x =&amp;gt; x.name === &quot;Blofeld&quot;);
console.log(result);&lt;/code&gt;&lt;/pre&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;p&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;/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;var arr = [{
  &quot;name&quot;: &quot;Blofeld&quot;,
  &quot;weight&quot;: 54
}, {
  &quot;name&quot;: &quot;&quot;,
  &quot;weight&quot;: 22
}];

function contains(arr, key, val) {
  for (var i = 0; i &amp;lt; arr.length; i++) {
    if (arr[i][key] === val) return true;
  }
  return false;
}

console.log(contains(arr, &quot;name&quot;, &quot;Blofeld&quot;)); //true
console.log(contains(arr, &quot;weight&quot;, 22)); //true

console.log(contains(arr, &quot;weight&quot;, &quot;22&quot;)); //false (or true if you change === to ==)
console.log(contains(arr, &quot;name&quot;, &quot;Me&quot;)); //false&lt;/code&gt;&lt;/pre&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;p&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;a href=&quot;https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;10-1&quot;&gt;hasOwnProperty()&lt;/a&gt;를 사용합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var json = [...];
var wantedKey = ''; // your key here
var wantedVal = ''; // your value here

for(var i = 0; i &amp;lt; json.length; i++){

   if(json[i].hasOwnProperty(wantedKey) &amp;amp;&amp;amp; json[i][wantedKey] === wantedVal) {
     // it happened.
     break;
   }

}
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/40438851/&lt;a href=&quot;https://stackoverflow.com/questions/40438851/use-javascript-to-check-if-json-object-contain-value&quot; target=&quot;_blank&quot; papago-id=&quot;11-1&quot;&gt;use-javascript-to-check-if-json-object-contain-value&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/428</guid>
      <comments>https://copysource.tistory.com/428#entry428comment</comments>
      <pubDate>Sun, 26 Mar 2023 14:22:38 +0900</pubDate>
    </item>
    <item>
      <title>servlets 3.0 API에서의 비동기 지원을 이해할 수 없습니다.</title>
      <link>https://copysource.tistory.com/427</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;servlets 3.0 API에서의 비동기 지원을 이해할 수 없습니다.&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;저는 Java SE 출신입니다.서블릿 튜토리얼을 몇 개 하고 헤드퍼스트 JSP &amp;amp; 서블릿을 읽었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;지금 비동기 지원에 대한&lt;a href=&quot;http://www.javaworld.com/javaworld/jw-02-2009/jw-02-servlet3.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;1-1&quot;&gt; JavaWorld&lt;/a&gt;.com 기사를 읽고 있는데 잘 모르겠습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;단순 비동기란 무엇입니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Ajax와 Servlet Async의 차이점은 무엇입니까?&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;p.s 저는 Ajax를 사용한 PHP 배경을 가지고 있으며 컨셉은 알고 있지만 Java를 사용한 것은 아닙니다.&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;기존 Servlet 모델에서는 일반적으로 1개의 요청이 1개의 스레드에 해당합니다.&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;일반적으로 이러한 스레드는 Servlet 컨테이너에 의해 관리되는 풀에서 가져옵니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Servlet 컨테이너는 이 풀에 사용 가능한 스레드가 있는 경우에만 새 요청을 처리할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;자신의 코드가 요청을 처리하는 동안 쓰레드는 비어 있지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;상황에 따라서는 이 모델을 깨는 것이 가치가 있을 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이러한 Servlet 컨테이너 관리 스레드를 통해 요청이 Servlet에 도착하면 코드가 비동기 실행을 요청합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 Servlet 요청에서 돌아오면 컨테이너 스레드가 해방됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;동기 요구 처리와 달리, 이것은 응답을 커밋하지 않고 연결을 닫지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;대신 비동기 콘텍스트를 다른 스레드풀로 넘겨주면 해당 콘텍스트를 픽업할 수 있으며, 일부 스레드가 처리 가능한 경우 해당 콘텍스트를 처리하여 응답에 쓸 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;@WebServlet(urlPatterns = &quot;/somepath&quot;, asyncSupported = true)
public class AsyncServlet extends HttpServlet {

    @EJB
    private AsyncBean asyncBean;

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        AsyncContext asyncContext = request.startAsync();

        // The following line will not block and return immediately
        asyncBean.doAsyncStuff(asyncContext);

    } // Shortly after this method has ended, thread will be returned to pool
}
&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&gt;&lt;/font&gt;&lt;code&gt;AsyncBean&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;pre&gt;&lt;code&gt;@Stateless
public class AsyncBean {

    @Asynchronous
    public void doAsyncStuff(AsyncContext asyncContext) throws IOException {
        asyncContext.getResponse().getWriter().write(&quot;test&quot;);
    }
}
&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;AsyncServlet#doGet()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;메서드. Servlet 스레드가 풀로 반환됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;실행을 위한 '요청'(태스크)&lt;/font&gt;&lt;/font&gt;&lt;code&gt;AsyncBean#doAsyncStuff()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;는 EJB 스레드 풀을 픽업하기 위해 큐에 배치됩니다.&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;font class=&quot;papago-parent&quot;&gt;스레드만 보존하려면 위의 경우 스레드 풀 하나를 다른 스레드 풀로 교환해야 하며(이 경우 Servlet 풀 대 EJB 비동기 풀) 순이익은 그다지 크지 않습니다.&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;예를 들어 라운드 로빈이 한 번에 100KB를 보내는 10MB 파일에 대해 10개의 스레드로 처리되는 100개의 다운로드 요청을 상상해 보십시오.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또 다른 애플리케이션은 외부 시스템으로부터의 데이터를 대기해야 하는 요구로, 이 외부 시스템이 요청자에게 릴레이할 수 있는 메시지를 전송할 수 있는 경우입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;즉, 응답을 기다리는 다른 스레드가 필요하므로 데이터베이스 호출은 의미가 없습니다.&lt;/font&gt;&lt;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;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/10065553/&lt;a href=&quot;https://stackoverflow.com/questions/10065553/i-dont-understand-async-support-in-servlets-3-0-api&quot; target=&quot;_blank&quot; papago-id=&quot;17-1&quot;&gt;i-dont-understand-async-support-in-servlets-3-0-api&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/427</guid>
      <comments>https://copysource.tistory.com/427#entry427comment</comments>
      <pubDate>Sun, 26 Mar 2023 14:21:27 +0900</pubDate>
    </item>
    <item>
      <title>angularjs 약속을 돌려주기 전에 해결할 수 있나요?</title>
      <link>https://copysource.tistory.com/426</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;angularjs 약속을 돌려주기 전에 해결할 수 있나요?&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;약속을 반환하는 함수를 작성하려고 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 요청한 정보를 즉시 이용할 수 있는 경우가 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;소비자가 결정할 필요가 없도록 약속으로 포장하고 싶습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;function getSomething(id) {
    if (Cache[id]) {
        var deferred = $q.defer();
        deferred.resolve(Cache[id]); // &amp;lt;-- Can I do this?
        return deferred.promise;
    } else {
        return $http.get('/someUrl', {id: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;somethingService.getSomething(5).then(function(thing) {
    alert(thing);
});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;문제는 콜백이 사전 해결된 약속에 대해 실행되지 않는다는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이게 정당한 일인가요?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 상황에 대처할 수 있는 더 좋은 방법이 있을까요?&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;4-0&quot;&gt;간단한 답변:&lt;/strong&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;4-0&quot;&gt; 예,&lt;/strong&gt; Angular를 해결할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;반환하기 전에 JS가 약속하면 예상대로 동작합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://plnkr.co/edit/OGO8T2M1fE3Mrgj2oozj?p=preview&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;5-1&quot;&gt;JB Nizet의 Plunkr&lt;/a&gt;를 사용하지만, 리팩터링되어 원래 요구된 내용(즉, 서비스 호출)과 실제 온사이트에서 기능합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;서비스 내에서는...&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;function getSomething(id) {
    // There will always be a promise so always declare it.
    var deferred = $q.defer();
    if (Cache[id]) {
        // Resolve the deferred $q object before returning the promise
        deferred.resolve(Cache[id]); 
        return deferred.promise;
    } 
    // else- not in cache 
    $http.get('/someUrl', {id:id}).success(function(data){
        // Store your data or what ever.... 
        // Then resolve
        deferred.resolve(data);               
    }).error(function(data, status, headers, config) {
        deferred.reject(&quot;Error: request returned status &quot; + status); 
    });
    return deferred.promise;
    
}
&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;somethingService.getSomething(5).then(    
    function(thing) {     // On success
        alert(thing);
    },
    function(message) {   // On failure
        alert(message);
    }
);
&lt;/code&gt;&lt;/pre&gt;&lt;h1 papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Angular 1.x에서 사전 해결된 약속을 간단히 반환하는 방법&lt;/font&gt;&lt;/h1&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;return $q.when( someValue );    // angular 1.2+
return $q.resolve( someValue ); // angular 1.4+, alias to `when` to match ES6
&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;return $q.reject( someValue );
&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;app.factory('DataService', function($q, $http) {
  var cache = {};
  var service= {       
    getData: function(id, callback) {
      var deffered = $q.defer();
      if (cache[id]) {         
        deffered.resolve(cache[id])
      } else {            
        $http.get('data.json').then(function(res) {
          cache[id] = res.data;              
          deffered.resolve(cache[id])
        })
      }
      return deffered.promise.then(callback)
    }
  }

  return service

})
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;kbd&gt;&lt;strong&gt;&lt;a href=&quot;http://plnkr.co/edit/QotYrvZc7JkrckJX4HoX?p=preview&quot; rel=&quot;noreferrer&quot;&gt;DEMO&lt;/a&gt;&lt;/strong&gt;&lt;/kbd&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;function getSomething(id) {
    if (Cache[id]) {
        var deferred = $q.defer();
        deferred.resolve(Cache[id]); // &amp;lt;-- Can I do this?
        return deferred.promise;
    } else {
        Cache[id] = $http.get('/someUrl', {id:id});
        return Cache[id];
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 제 리소스에서 데이터를 얻기 위해 공장을 이용하고 싶습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;.factory(&quot;SweetFactory&quot;, [ &quot;$http&quot;, &quot;$q&quot;, &quot;$resource&quot;, function( $http, $q, $resource ) {
    return $resource(&quot;/sweet/app&quot;, {}, {
        &quot;put&quot;: {
            method: &quot;PUT&quot;,
            isArray: false
        },&quot;get&quot;: {
            method: &quot;GET&quot;,
            isArray: false
        }
    });
}]);
&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; .service(&quot;SweetService&quot;,  [ &quot;$q&quot;, &quot;$filter&quot;,  &quot;$log&quot;, &quot;SweetFactory&quot;,
    function ($q, $filter, $log, SweetFactory) {

        var service = this;

        //Object that may be exposed by a controller if desired update using get and put methods provided
        service.stuff={
            //all kinds of stuff
        };

        service.listOfStuff = [
            {value:&quot;&quot;, text:&quot;Please Select&quot;},
            {value:&quot;stuff&quot;, text:&quot;stuff&quot;}];

        service.getStuff = function () {

            var deferred = $q.defer();

          var promise = SweetFactory.get().$promise.then(
                function (response) {
                    if (response.response.result.code !== &quot;COOL_BABY&quot;) {
                        deferred.reject(response);
                    } else {
                        deferred.resolve(response);
                        console.log(&quot;stuff is got&quot;, service.alerts);
                        return deferred.promise;
                    }

                }
            ).catch(
                function (error) {
                    deferred.reject(error);
                    console.log(&quot;failed to get stuff&quot;);
                }
            );

            promise.then(function(response){
                //...do some stuff to sett your stuff maybe fancy it up
                service.stuff.formattedStuff = $filter('stuffFormatter')(service.stuff);

            });


            return service.stuff;
        };


        service.putStuff = function () {
            console.log(&quot;putting stuff eh&quot;, service.stuff);

            //maybe do stuff to your stuff

            AlertsFactory.put(service.stuff).$promise.then(function (response) {
                console.log(&quot;yep yep&quot;, response.response.code);
                service.getStuff();
            }).catch(function (errorData) {
                alert(&quot;Failed to update stuff&quot; + errorData.response.code);
            });

        };

    }]);
&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;신경쓰지 말아요.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;잘 되는 것 같아.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 나는 앵글에 익숙하지 않다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;*오류 처리의 대부분은 명확성을 위해 생략되어 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/20555472/&lt;a href=&quot;https://stackoverflow.com/questions/20555472/can-you-resolve-an-angularjs-promise-before-you-return-it&quot; target=&quot;_blank&quot; papago-id=&quot;17-1&quot;&gt;can-you-resolve-an-angularjs-promise-before-you-return-it&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/426</guid>
      <comments>https://copysource.tistory.com/426#entry426comment</comments>
      <pubDate>Sun, 26 Mar 2023 14:20:43 +0900</pubDate>
    </item>
    <item>
      <title>wordpress 배열에 wp_param을 추가하는 방법</title>
      <link>https://copysource.tistory.com/425</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;wordpress 배열에 wp_param을 추가하는 방법&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;워드프레스 코드에 작은 문제가 있어서 값 배열이 있는 페이지에 워드프레스 wp_editor를 표시해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;값은 다음과 같이 정의됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;    $fields[] = array(
        'name' =&amp;gt; __('Class', 'my-theme'),
        'desc' =&amp;gt; __('', 'my-theme'),
        'id' =&amp;gt; 'class'.$n,
        'std' =&amp;gt; ( ( isset($class_text[$n]['class']) ) ? $class_text[$n]['class'] : '' ),
        'type' =&amp;gt; 'text');
&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;위의 배열과 같이 wp_editor를 정의하면 원하는 위치에 표시되지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;대신 모든 편집자는 모든 페이지의 내용 앞에 맨 위에 표시됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;에디터용으로 다음과 같은 어레이 세트를 사용해 보았습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;    $fields[] = array(
        'name' =&amp;gt; __('My Content', 'my-theme'),
        'id' =&amp;gt; 'sectioncontent'.$n,
        'std' =&amp;gt; ( ( isset($class_text[$n]['content']) ) ? $class_text[$n]['content'] : '' ),
        'type' =&amp;gt; wp_editor( '', 'sectioncontent'.$n ));
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;문제의 이미지를 첨부했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://i.stack.imgur.com/i2sbW.png&quot; alt=&quot;여기에 이미지 설명 입력&quot; papago-attr-id=&quot;1&quot;&gt;&lt;/p&gt;&lt;blockquote&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;원인&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기본적으로는 &lt;a href=&quot;https://codex.wordpress.org/Function_Reference/wp_editor&quot; rel=&quot;nofollow&quot; papago-id=&quot;6-1&quot;&gt;wp_editor&lt;/a&gt;는 텍스트 영역을 인쇄하기 때문에 변수나 배열에 할당할 수 없습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;솔루션&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;php 출력 &lt;a href=&quot;http://php.net/manual/en/book.outcontrol.php&quot; papago-id=&quot;8-1&quot; rel=&quot;nofollow&quot;&gt;버퍼링&lt;/a&gt;을 사용하여 &lt;a href=&quot;http://php.net/manual/en/book.outcontrol.php&quot; papago-id=&quot;8-1&quot; rel=&quot;nofollow&quot;&gt;다음&lt;/a&gt;과 같은 변수에서 인쇄 데이터를 가져올 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;ob_start(); // Start output buffer

// Print the editor
wp_editor( '', 'sectioncontent'.$n );

// Store the printed data in $editor variable
$editor = ob_get_clean();

// And then you can assign that wp_editor to your array.

$fields[] = array(
        'name' =&amp;gt; __('My Content', 'my-theme'),
        'id' =&amp;gt; 'sectioncontent'.$n,
        'std' =&amp;gt; ( ( isset($class_text[$n]['content']) ) ? $class_text[$n]['content'] : '' ),
        'type' =&amp;gt; $editor); // &amp;lt;-- HERE
&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;a href=&quot;https://reduxframework.com/&quot; papago-id=&quot;9-1&quot; rel=&quot;nofollow&quot;&gt;Redux&lt;/a&gt; Framework를 &lt;a href=&quot;https://reduxframework.com/&quot; papago-id=&quot;9-1&quot; rel=&quot;nofollow&quot;&gt;사용&lt;/a&gt;하여 테마/플러그인 옵션 페이지를 설정하는 것처럼 보입니다.기본 WYSIWYG (What You See Is You Get - 백엔드의 편집 포스트 페이지에서 얻은 에디터와 같은 에디터)를 추가하려면 &quot;editor&quot; 라고 입력해야 합니다.&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;wp_editor()&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;Redux 등은 에디터를 생성함으로써 이 작업을 보다 쉽게 할 수 있습니다.따라서 wp_editor 함수를 사용하는 대신 'My Content'라는 에디터 필드를 페이지의 필드 중 하나로 만들고 싶다고 Redux에게 말하면 됩니다.&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;a href=&quot;https://docs.reduxframework.com/core/fields/editor/&quot; papago-id=&quot;12-1&quot; rel=&quot;nofollow&quot;&gt; &lt;/a&gt;https://docs.&lt;a href=&quot;https://docs.reduxframework.com/core/fields/editor/&quot; papago-id=&quot;12-1&quot; rel=&quot;nofollow&quot;&gt;reduxframework&lt;/a&gt;.com/core/fields/editor/ 를 참조해 주세요.&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;redux 를 사용하고 있는 것이 맞다면, 사용하고 있는 것을 치환하는 올바른 코드는 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; $fields[] = array(
        'name' =&amp;gt; __('My Content', 'my-theme'),
        'id' =&amp;gt; 'sectioncontent'.$n,
        'std' =&amp;gt; ( ( isset($class_text[$n]['content']) ) ? $class_text[$n]['content'] : '' ),
        'type' =&amp;gt; 'editor');
&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;ul&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;'이름'은 이 필드의 라벨에 표시됩니다.&lt;/font&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;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;)를 사용하여 'my-discription' 도메인의 로컬 사전에서 구문을 가져옵니다.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;'id'는 이 필드에 입력된 내용을 가져오는 데 사용됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 옵션 페이지의 HTML 요소에 할당된 ID 속성에도 영향을 미칩니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;'std'는 필드의 기본값입니다. 사용자가 옵션을 설정하기 전에 옵션 페이지가 처음 표시될 때 필드의 값이 됩니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;을 통해 줄을 &quot;wpautop&quot;으로 대체할 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&amp;lt;p&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;/p&gt;&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/33295196/&lt;a href=&quot;https://stackoverflow.com/questions/33295196/wordpress-how-to-add-wp-editor-in-an-array&quot; target=&quot;_blank&quot; papago-id=&quot;21-1&quot;&gt;wordpress-how-to-add-wp-editor-in-an-array&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/425</guid>
      <comments>https://copysource.tistory.com/425#entry425comment</comments>
      <pubDate>Sun, 26 Mar 2023 14:19:30 +0900</pubDate>
    </item>
    <item>
      <title>오류: '.docker-compose.yml' 파일에서 볼륨은 문자열이 아닌 매핑이어야 합니다.</title>
      <link>https://copysource.tistory.com/424</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;오류: '.docker-compose.yml' 파일에서 볼륨은 문자열이 아닌 매핑이어야 합니다.&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;1-0&quot;&gt;질문:&lt;/strong&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 에러가 발생하는 이유는 무엇입니까?&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;오류: 파일 '.docker-compose.yml'에서 볼륨 'mariavolume'는 문자열이 아닌 매핑이어야 합니다.&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;도킹 스테이션 파일은 https&lt;a href=&quot;https://docs.docker.com/compose/wordpress/&quot; papago-id=&quot;3-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;://&lt;/a&gt;docs.docker.com/compose/&lt;a href=&quot;https://docs.docker.com/compose/wordpress/&quot; papago-id=&quot;3-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;wordpress&lt;/a&gt;/과 거의 동일합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-yaml prettyprint-override&quot;&gt;&lt;code&gt;version: '2'
services:
  wordpress:
    image: wordpress:latest
    restart: always
    depends_on:
      - db
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_PASSWORD: example
      WORDPRESS_DB_HOST: 3306
  db:
    image: mariadb
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - maria_volume: /var/lib/mysql
volumes:
  maria_volume: ~/mariadb
&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&gt;&lt;/font&gt;&lt;code&gt;:&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;volumes:
    - mysqldata:
&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;volumes:
    - mysqldata
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;code&gt;docker-compose up&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 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;volume&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;Docker&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;/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-1&quot;&gt;여기가 어디&lt;/strong&gt;인가이다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;도커 이미지 - 기본 위치 - 안에 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;C:\Users\Public&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;문서\&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Hyper-V\가상 하드디스크&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;pre&gt;&lt;code&gt;db:
  image: mariadb
  restart: always
  environment:
    MYSQL_ROOT_PASSWORD: example
  volumes:
    - maria_volume: /var/lib/mysql

volumes:
  maria_volume:
&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;Docker&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;그러면 다음과 같이 하면 됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;db:
  image: mariadb
  restart: always
  environment:
    MYSQL_ROOT_PASSWORD: example
  volumes:
    - maria_volume: /var/lib/mysql

volumes:
  maria_volume:
    driver: local
    driver_opts:
      o: bind
      type: none
      device: /C/mariadb
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;호스트 디렉토리를 통해 볼륨으로 매핑할 때(적어도 윈도우즈에서) 문제가 발생할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;read/write&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;아직 스스로 해결해야 할 문제인 것 같아요&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;옵션은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li 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;(여기서 다니엘이 한 &lt;a href=&quot;https://stackoverflow.com/a/41346284/1954233&quot; papago-id=&quot;22-1&quot;&gt;것&lt;/a&gt;처럼)&lt;/font&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(매핑이 있는) 작성 외부에 볼륨을 작성하여 작성에 사용합니다.&lt;/font&gt;&lt;/p&gt; &lt;pre&gt;&lt;code&gt;volumes:
   maria_volume: 
       external:
           name: volume-name
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt; 
&lt;/ul&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;    volumes:
        - maria_volume: /var/lib/mysql
volumes:
    maria_volume: 
        external:
            name: ~/mariadb
&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;br&gt; &lt;code&gt;volumes: first: &lt;/code&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기서 first는 볼륨에 사용할 자리 표시자 이름일 뿐입니다.&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;/p&gt; 
&lt;pre&gt;&lt;code&gt;version: '2'
services:
  ...
  db:
    image: mariadb
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - ~/mariadb:/var/lib/mysql
&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;   volumes:
     - maria_volume: /var/lib/mysql

volumes:
  maria_volume: 
    drive: local
&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;volumes:
  - maria_volume: /var/lib/mysql
&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;environment:
  MYSQL_ROOT_PASSWORD: example
&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;알려주세요!&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;#docker_compose.yml:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;volumes:
  postgres_data: {}
  static: { }
&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/41334488/&lt;a href=&quot;https://stackoverflow.com/questions/41334488/error-in-file-docker-compose-yml-volume-must-be-a-mapping-not-a-string&quot; target=&quot;_blank&quot; papago-id=&quot;35-1&quot;&gt;error-in-file-docker-compose-yml-volume-must-be-a-mapping-not-a-string&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/424</guid>
      <comments>https://copysource.tistory.com/424#entry424comment</comments>
      <pubDate>Sun, 26 Mar 2023 14:18:33 +0900</pubDate>
    </item>
    <item>
      <title>DAG(Directed Acyclic Graph)를 JSON으로 저장하려면 어떻게 해야 합니까?</title>
      <link>https://copysource.tistory.com/423</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;DAG(Directed Acyclic Graph)를 JSON으로 저장하려면 어떻게 해야 합니까?&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;DAG를 JSON 텍스트로 표현하고 싶습니다만, JSON이 실제로 DAG인지 아닌지를 검증하기 위해서, 이것을 시험해 본 사람이 있는지 어떤지, 또 대응한 문제가 있는지 알고 싶습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;각 노드에 라벨을 붙이고 가장자리 목록을 만듭니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;즉, 각 노드에 대해 다음과 같이 에지가 있는 노드를 저장합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;{
  &quot;a&quot;: [ &quot;b&quot;, &quot;c&quot;, &quot;d&quot; ],
  &quot;b&quot;: [ &quot;d&quot; ],
  &quot;c&quot;: [ &quot;d&quot; ],
  &quot;d&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;DAG뿐만 아니라 다양한 종류의 그래프를 저장할 수 있으므로 루프가 없는지 확인하기 위해 그래프를 후처리해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;DAG가 아닌 노드가 여러 번 나타나면 노드 DFS를 선택합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 방금 본 노드를 모두 제거하고 나머지 노드에서도 반복합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;루프를 찾거나 모든 노드를 제거할 때까지 이 작업을 수행합니다. 후자의 경우 그래프가 DAG입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;부모 노드는 용장정보이므로 저장되지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;데이터가 필요한 경우 그래프를 로드한 후 생성할 수 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;JSON에는 링크된 데이터를 나타내는 규칙을 만들지 않는 한 DAG를 나타내는 네이티브 기능이 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;JSON-LD(W3C 프로포절)는 정확하게 이를 실현하기 위한 JSON 확장입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제안서는&lt;a href=&quot;http://json-ld.org/spec/latest/json-ld/&quot; papago-id=&quot;5-1&quot; rel=&quot;noreferrer&quot;&gt; &lt;/a&gt;http&lt;a href=&quot;http://json-ld.org/spec/latest/json-ld/&quot; papago-id=&quot;5-1&quot; rel=&quot;noreferrer&quot;&gt;://json-ld&lt;/a&gt;.org/spec/latest/json-ld/에서 찾을 수 있습니다.&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;엄밀히 말하면 JSON에서는 직접 할 수 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;데이터 구조 내의 다른 곳에서 참조로 식별할 수 있는 객체를 나타내는 독자적인 방법을 생각해 낸 후 JSON 문자열의 역직렬화 결과를 후처리해야 합니다.&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;JSON &lt;em papago-id=&quot;7-1&quot;&gt;표현식&lt;/em&gt;이 객체 그래프라는 단순한 이유 때문에 JSON에서는 이 작업을 수행할 수 없으며, 데이터 구조 내의 다른 속성의 값이 되어야 한다는 개념을 표현할 수 있는 조항도 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;바꿔 말하면, 그래프 내의 어떤 개체도 둘 이상의 상위 개체를 가질 수 없습니다. 즉, 모든 개체는 다른 개체의 정확히 하나의 속성 값임을 의미합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/9897956/&lt;a href=&quot;https://stackoverflow.com/questions/9897956/how-do-you-store-a-directed-acyclic-graph-dag-as-json&quot; target=&quot;_blank&quot; papago-id=&quot;8-1&quot;&gt;how-do-you-store-a-directed-acyclic-graph-dag-as-json&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/423</guid>
      <comments>https://copysource.tistory.com/423#entry423comment</comments>
      <pubDate>Sun, 26 Mar 2023 14:17:27 +0900</pubDate>
    </item>
    <item>
      <title>AngularJS - Attribute Directive 조건부로 사용</title>
      <link>https://copysource.tistory.com/422</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;AngularJS - Attribute Directive 조건부로 사용&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;font class=&quot;papago-parent&quot;&gt;저는 다음 코드를 사용했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;!--draggable attribute is used as handle to make it draggable using jquery event--&amp;gt;           
&amp;lt;li  ng-repeat=&quot;template in templates&quot; draggable id=&quot;{{template._id}}&quot; type=&quot;template&quot; class=&quot;template-box&quot;&amp;gt;            
&amp;lt;!-- Images and other fields are child of &quot;li&quot; tag which can be dragged.--&amp;gt;                    
&amp;lt;/li&amp;gt; 
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;방법&lt;/font&gt;&lt;/font&gt;&lt;code&gt;dragSupported&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;true&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;false&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;&amp;lt;li&amp;gt;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;요소(사용)&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ng-if&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;dragSupported()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;즉, 이 문제를 해결하기 위해 다음과 같은 접근방식을 찾고 있지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;!--draggable attribute is used as handle to make it draggable using jquery event--&amp;gt;           
&amp;lt;li ng-if=&quot;dragSupported() ==true&quot;  ng-repeat=&quot;template in templates&quot; draggable id=&quot;{{template._id}}&quot; type=&quot;template&quot; class=&quot;template-box&quot;&amp;gt;            
&amp;lt;!-- Images and other fields are child of &quot;li&quot; tag which can be dragged.--&amp;gt;                    
&amp;lt;/li&amp;gt;
&amp;lt;!--remove &quot;draggable&quot; directive as user doesn't have permission to drag file --&amp;gt;
&amp;lt;li ng-if=&quot;dragSupported() !=true&quot;  ng-repeat=&quot;template in templates&quot;  id=&quot;{{template._id}}&quot; type=&quot;template&quot; class=&quot;template-box&quot;&amp;gt;            
&amp;lt;!-- Images and other fields are child of &quot;li&quot; tag which can be dragged.--&amp;gt;                    
&amp;lt;/li&amp;gt;
&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; &lt;/font&gt;&lt;/p&gt;&lt;h1&gt;&lt;code&gt;ng-attr-&amp;lt;attrName&amp;gt;&lt;/code&gt;&lt;/h1&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;HTML 속성을 조건부로 선언하는 지원은 동적 제목으로 Angular에 포함되어 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ng-attr-&amp;lt;attrName&amp;gt;&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;p&gt;&lt;a href=&quot;https://docs.angularjs.org/guide/interpolation#-ngattr-for-binding-to-arbitrary-attributes&quot; rel=&quot;noreferrer&quot;&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;ng-attr&lt;/code&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2 papago-id=&quot;13&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;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;&amp;lt;li
    id=&quot;{{template._id}}&quot;
    class=&quot;template-box&quot;
    type=&quot;template&quot;
    ng-repeat=&quot;template in templates&quot;
    ng-attr-draggable=&quot;dragSupported() === true&quot;
&amp;gt;&amp;lt;/li&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h1 papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;데모&lt;/font&gt;&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;http://jsfiddle.net/whroman/thsd0vfc/6/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;JSFiddle&lt;/font&gt;&lt;/a&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;true&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;false&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;undefined&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;null&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;1&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;0&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;&quot;&quot;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;24&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;. 일반적으로 false 값이 예기치 않은 결과를 초래할 수 있습니다.&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;나는 여기서 조금 다른 접근을 했다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;scope&quot; 변수를 변경하지 않기 때문에 &quot;attrs&quot;를 사용하여 드래그 허용 여부를 확인했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음은 지금까지 좋아 보이는 어프로치 I 툴입니다.&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;26&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;app.directive('draggable', function () {
    return {
        // A = attribute, E = Element, C = Class and M = HTML Comment
        restrict: 'A',
        replace:true,
        link: function (scope, element, attrs) {

            if(attrs.allowdrag ==&quot;true&quot;)
            {
                element.draggable({
                cursor: 'move',
                helper: 'clone',
                class:'drag-file'
                });
            }

        }
    }
});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;HTML 코드:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;ul&amp;gt; 
         &amp;lt;!--draggable attribute is used as handle to make it draggable using jquery event--&amp;gt;           
        &amp;lt;li  ng-repeat=&quot;template in templates&quot; draggable allowdrag=&quot;{{userHasPrivilege()}}&quot; &amp;gt;            
                &amp;lt;!--Ohter code part of li tag--&amp;gt;                   

        &amp;lt;/li&amp;gt; 

&amp;lt;/ul&amp;gt;
&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;컨트롤러에 userHasPrivilege()가 실장되어 있습니다.&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;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;요소에 Atribute를 직접 추가하거나 요소에서 Atribute를 제거하는 방법은 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;단, 조건이 충족되면 Atribute를 요소에 추가하는 디렉티브를 작성할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&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;a href=&quot;http://jsfiddle.net/VQfcP/31/&quot; papago-id=&quot;31-1&quot; rel=&quot;nofollow&quot;&gt; &lt;/a&gt;http://&lt;a href=&quot;http://jsfiddle.net/VQfcP/31/&quot; papago-id=&quot;31-1&quot; rel=&quot;nofollow&quot;&gt;jsfiddle&lt;/a&gt;.net/VQfcP/31/&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;32&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;myApp.directive('myDirective', function () {
  return {
    restrict: 'A',
    scope: {
        canDrag: '&amp;amp;'
    },
    link: function (scope, el, attrs, controller) {
        /*
$parent.$index is ugly, and it's due to the fact that the ng-repeat is being evaluated 
first, and then the directive is being applied to the result of the current iteration      
of the repeater.  You may be able to clean this by transcluding the repeat into the 
directive, but that may be an inappropriate separation of concerns. 
You will need to figure out the best way to handle this, if you want to use this approach.  
  */
        if (scope.canDrag&amp;amp;&amp;amp; scope.canDrag({idx: scope.$parent.$index})) {
            angular.element(el).attr(&quot;draggable&quot;, &quot;draggable&quot;);
        }
    }
  };
});
&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;HTML&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;ul&amp;gt;
    &amp;lt;!-- same deal with $parent --&amp;gt;
    &amp;lt;li ng-repeat=&quot;x in [1, 2, 3, 4, 5]&quot; my-directive=&quot;true&quot; can-drag=&quot;checkPermissions(idx)&quot;&amp;gt;{{$parent.x}}&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;34&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;function Ctl($scope) {
   $scope.checkPermissions = function(idx) {
     // do whatever you need to check permissions
     // return true to add the attribute
   }
}
&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;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;이 예에서는 ui-grid를 사용하지만 모든 ui-grid가 페이지 번호를 사용해야 하는 것은 아닙니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;paggated&quot; 속성을 전달하고 true/false에 따라 지시문을 $compile합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;꽤 잔인해 보이지만 그것이 사람들을 긍정적인 방향으로 이끌 수 있기를 바란다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;b papago-id=&quot;37&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;HTML&lt;/font&gt;&lt;/b&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;sync-grid service=&quot;demand&quot; paginated=&quot;true&quot;&amp;gt;&amp;lt;/sync-grid&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;b papago-id=&quot;38&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;지시.&lt;/font&gt;&lt;/b&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;angular
    .module('app.directives')
    .directive('syncGrid', ['$compile', SyncGrid]);

function SyncGrid($compile){
    var nonPaginatedTemplate = '' +
        '&amp;lt;div&amp;gt;' +
        '   &amp;lt;div ui-grid=&quot;gridOptions&quot; class=&quot;grid&quot;&amp;gt;&amp;lt;/div&amp;gt;' +
        '&amp;lt;/div&amp;gt;';

    var paginatedTemplate = '' +
        '&amp;lt;div&amp;gt;' +
        '   &amp;lt;div ui-grid=&quot;gridOptions&quot; class=&quot;grid&quot; ui-grid-pagination&amp;gt;&amp;lt;/div&amp;gt;' +
        '&amp;lt;/div&amp;gt;';


    return {
        link: link,
        restrict: 'E',
        replace: true
    };

    function link(scope, element, attrs) {

        var isPaginated = attrs['paginated'];

        var template = isPaginated ? paginatedTemplate : nonPaginatedTemplate;
        var linkFn = $compile(template);
        var content = linkFn(scope);
        element.append(content);

        // Continue with ui-grid initialization code
        // ...

    }
}
&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;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/18798456/&lt;a href=&quot;https://stackoverflow.com/questions/18798456/angularjs-use-attribute-directive-conditionally&quot; target=&quot;_blank&quot; papago-id=&quot;39-1&quot;&gt;angularjs-use-attribute-directive-conditionally&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/422</guid>
      <comments>https://copysource.tistory.com/422#entry422comment</comments>
      <pubDate>Sun, 26 Mar 2023 14:16:36 +0900</pubDate>
    </item>
    <item>
      <title>MongoDB: 필드가 존재하지 않아 문서를 검색하시겠습니까?</title>
      <link>https://copysource.tistory.com/421</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;MongoDB: 필드가 존재하지 않아 문서를 검색하시겠습니까?&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;문서에 필드가 포함되지 않는 곳&quot; 조건을 지정할 수 있는 방법이 있습니까?&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어, &quot;가격&quot; 필드가 없기 때문에 이 두 가지 중 첫 번째 항목만 찾고 싶습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;{&quot;fruit&quot;:&quot;apple&quot;, &quot;color&quot;:&quot;red&quot;}


{&quot;fruit&quot;:&quot;banana&quot;, &quot;color&quot;:&quot;yellow&quot;, &quot;price&quot;:&quot;2.00&quot;}
&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;$exists&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;pre&gt;&lt;code&gt;db.mycollection.find({ &quot;price&quot; : { &quot;$exists&quot; : false } })
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://docs.mongodb.org/manual/reference/operator/query/exists/#op._S_exists&quot; papago-id=&quot;5-1&quot; rel=&quot;noreferrer&quot;&gt;그&lt;/a&gt; 메뉴얼을 &lt;a href=&quot;http://docs.mongodb.org/manual/reference/operator/query/exists/#op._S_exists&quot; papago-id=&quot;5-1&quot; rel=&quot;noreferrer&quot;&gt;참조&lt;/a&gt;해 주세요.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/8567469/&lt;a href=&quot;https://stackoverflow.com/questions/8567469/mongodb-find-a-document-by-non-existence-of-a-field&quot; target=&quot;_blank&quot; papago-id=&quot;6-1&quot;&gt;mongodb-find-a-document-by-non-existence-of-a-field&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/421</guid>
      <comments>https://copysource.tistory.com/421#entry421comment</comments>
      <pubDate>Sun, 26 Mar 2023 14:14:23 +0900</pubDate>
    </item>
    <item>
      <title>Oracle 데이터베이스를 사용할 때 Hibernate는 기본적으로 어떤 부울 데이터 유형을 매핑합니까?</title>
      <link>https://copysource.tistory.com/420</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Oracle 데이터베이스를 사용할 때 Hibernate는 기본적으로 어떤 부울 데이터 유형을 매핑합니까?&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;@NotNull
boolean myBoolean;
&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;이 맵은 어떤 Oracle 데이터 유형에 적용됩니까?&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;@Arthur가 말한 바와 같이&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Number(1)&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;code&gt;0 == false&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;1 == true&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;char(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;이렇게 'T' 또는 'F'를 하다&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;@org.hibernate.annotations.Type(type=&quot;true_false&quot;)
@NotNull
boolean myBoolean;
&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;또는 'Y' 또는 'N'에 매핑합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;@org.hibernate.annotations.Type(type=&quot;yes_no&quot;)
@NotNull
boolean myBoolean;
&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;심플 번호 (1)&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;필요에 따라 Schema Export를 사용하여 타겟 데이터베이스에 스크립트를 생성합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;뭐랄까&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;AnnotationConfiguration configuration = new AnnotationConfiguration();

configuration
    .addAnnotatedClass(&amp;lt;TYPE_YOUR_CLASS&amp;gt;.class)
    .setProperty(Environment.USER, &amp;lt;TYPE_YOUR_USER&amp;gt;)
    .setProperty(Environment.PASS, &amp;lt;TYPE_YOUR_PASSWORD&amp;gt;)
    .setProperty(Environment.URL, &amp;lt;TYPE_YOUR_URL&amp;gt;)
    .setProperty(Environment.DIALECT, &amp;lt;TYPE_YOUR_DIALECT&amp;gt;)
    .setProperty(Environment.DRIVER, &amp;lt;TYPE_YOUR_DRIVER&amp;gt;);

SchemaExport schema = new SchemaExport(configuration);
schema.setOutputFile(&quot;schema.sql&quot;);

schema.create(&amp;lt;DO_YOU_WANT_TO_PRINT_TO_THE_CONSOLE&amp;gt;, &amp;lt;DO_YOU_WANT_TO_EXPORT_THE_SCRIPT_TO_THE_DATABASE&amp;gt;);
&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;strong papago-id=&quot;12-0&quot;&gt;Java POJO&lt;/strong&gt;:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;//@Type(type=&quot;true_false&quot;) //not working for '1' and '0' in NUMERIC(1) field
@Type(type= &quot;org.hibernate.type.NumericBooleanType&quot;)
@NotNull(message=&quot;NOT_NULL&quot;)
@Column(name = &quot;IS_DELEGATION&quot;, nullable = false)
private Boolean isDelegation;
&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;Oracle DDL&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;alter table agent add (is_delegation number(1) default 0 not null);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://docs.jboss.org/hibernate/orm/4.0/javadocs/org/hibernate/type/NumericBooleanType.html&quot; papago-id=&quot;14-1&quot; rel=&quot;noreferrer&quot;&gt;휴지&lt;/a&gt; 상태 &lt;a href=&quot;https://docs.jboss.org/hibernate/orm/4.0/javadocs/org/hibernate/type/NumericBooleanType.html&quot; papago-id=&quot;14-1&quot; rel=&quot;noreferrer&quot;&gt;문서&lt;/a&gt;에 기재된 바와 같이&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/1710198/&lt;a href=&quot;https://stackoverflow.com/questions/1710198/what-does-hibernate-map-a-boolean-datatype-to-when-using-an-oracle-database-by-d&quot; target=&quot;_blank&quot; papago-id=&quot;15-1&quot;&gt;what-does-hibernate-map-a-boolean-datatype-to-when-using-an-oracle-database-by-d&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/420</guid>
      <comments>https://copysource.tistory.com/420#entry420comment</comments>
      <pubDate>Sun, 26 Mar 2023 14:13:04 +0900</pubDate>
    </item>
    <item>
      <title>다른 컨트롤러로부터의 디렉티브컨트롤러 호출방식</title>
      <link>https://copysource.tistory.com/419</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;pre&gt;&lt;code&gt;var popdown = angular.module('xModules',[]);

popdown.directive('popdown', function () {
    var PopdownController = function ($scope) {
        this.scope = $scope;
    }

    PopdownController.prototype = {
        show:function (message, type) {
            this.scope.message = message;
            this.scope.type = type;
        },

        hide:function () {
            this.scope.message = '';
            this.scope.type = '';
        }
    }

    var linkFn = function (scope, lElement, attrs, controller) {

    };

    return {
        controller: PopdownController,
        link: linkFn,
        replace: true,
        templateUrl: './partials/modules/popdown.html'
    }

});
&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&gt;&lt;font class=&quot;papago-parent&quot;&gt;다른 컨트롤러(지시 컨트롤러가 아닌)에서 함수를 호출하고 싶다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;show&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 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;var app = angular.module('app', ['RestService']);

app.controller('IndexController', function($scope, RestService) {
    var result = RestService.query();

    if(result.error) {
        popdown.notify(error.message, 'error');
    }
});
&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;show&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;popdown&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;지시 컨트롤러, 링크 기능도 트리거되고 애니메이션을 수행해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 어떻게 그걸 할 수 있을까요?&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 흥미로운 질문입니다.그리고 저는 이런 것을 어떻게 구현해야 할지 고민하기 시작했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://jsfiddle.net/9KX3k/1/&quot; papago-id=&quot;9-1&quot;&gt;제가 &lt;/a&gt;이걸 생각해 냈어요&lt;a href=&quot;http://jsfiddle.net/9KX3k/1/&quot; papago-id=&quot;9-1&quot;&gt;.&lt;/a&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;var PopdownModule = angular.module('Popdown', []);
&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;factory&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;어디에나 삽입할 수 있는 API와&lt;/font&gt;&lt;/font&gt;&lt;code&gt;directive&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;success&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;error&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;는 몇 가지 변수를 추적합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;PopdownModule.factory('PopdownAPI', function() {
    return {
        status: null,
        message: null,
        success: function(msg) {
            this.status = 'success';
            this.message = msg;
        },
        error: function(msg) {
            this.status = 'error';
            this.message = msg;
        },
        clear: function() {
            this.status = null;
            this.message = null;
        }
    }
});
&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;디렉티브는 컨트롤러에 API를 삽입하여 API의 변경을 감시합니다(편의상 부트스트랩 css를 사용하고 있습니다).&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;PopdownModule.directive('popdown', function() {
    return {
        restrict: 'E',
        scope: {},
        replace: true,
        controller: function($scope, PopdownAPI) {
            $scope.show = false;
            $scope.api = PopdownAPI;

            $scope.$watch('api.status', toggledisplay)
            $scope.$watch('api.message', toggledisplay)

            $scope.hide = function() {
                $scope.show = false;
                $scope.api.clear();
            };

            function toggledisplay() {
                $scope.show = !!($scope.api.status &amp;amp;&amp;amp; $scope.api.message);               
            }
        },
        template: '&amp;lt;div class=&quot;alert alert-{{api.status}}&quot; ng-show=&quot;show&quot;&amp;gt;' +
                  '  &amp;lt;button type=&quot;button&quot; class=&quot;close&quot; ng-click=&quot;hide()&quot;&amp;gt;&amp;amp;times;&amp;lt;/button&amp;gt;' +
                  '  {{api.message}}' +
                  '&amp;lt;/div&amp;gt;'
    }
})
&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;app&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;Popdown&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;var app = angular.module('app', ['Popdown']);

app.controller('main', function($scope, PopdownAPI) {
    $scope.success = function(msg) { PopdownAPI.success(msg); }
    $scope.error   = function(msg) { PopdownAPI.error(msg); }
});
&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;HTML은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;html ng-app=&quot;app&quot;&amp;gt;
    &amp;lt;body ng-controller=&quot;main&quot;&amp;gt;
        &amp;lt;popdown&amp;gt;&amp;lt;/popdown&amp;gt;
        &amp;lt;a class=&quot;btn&quot; ng-click=&quot;success('I am a success!')&quot;&amp;gt;Succeed&amp;lt;/a&amp;gt;
        &amp;lt;a class=&quot;btn&quot; ng-click=&quot;error('Alas, I am a failure!')&quot;&amp;gt;Fail&amp;lt;/a&amp;gt;
    &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것이 완전히 이상적인지는 모르겠지만, 글로벌한 팝다운 디렉티브로 커뮤니케이션을 확립하는 합리적인 방법인 것 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;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://jsfiddle.net/9KX3k/1/&quot; papago-id=&quot;23-1&quot;&gt;바이올린&lt;/a&gt;입니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이벤트를 사용하여 팝다운을 트리거할 수도 있습니다.&lt;/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;a href=&quot;http://jsfiddle.net/LWBsV/5/&quot; papago-id=&quot;25-0&quot;&gt;여기&lt;/a&gt; 새치모런의 솔루션에 기초한 &lt;a href=&quot;http://jsfiddle.net/LWBsV/5/&quot; papago-id=&quot;25-0&quot;&gt;바이올린이 있습니다.&lt;/a&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;팝다운으로 처리됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;API와 대신 최상위 컨트롤러가 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;$broadcast&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;s s success 이벤트와 error 이벤트가 스코프 체인 아래로 이동합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$scope.success = function(msg) { $scope.$broadcast('success', msg); };
$scope.error   = function(msg) { $scope.$broadcast('error', msg); };
&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&gt;&lt;code&gt;$scope.$on('success', function(event, msg) {
    $scope.status = 'success';
    $scope.message = msg;
    $scope.toggleDisplay();
});
&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;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;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;디렉티브의 컨트롤러를 부모 스코프에 노출시킬 수도 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ngForm&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;name&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;31&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;attribute does:http&lt;a href=&quot;http://docs.angularjs.org/api/ng.directive:ngForm&quot; papago-id=&quot;31-1&quot;&gt;://&lt;/a&gt;docs.&lt;a href=&quot;http://docs.angularjs.org/api/ng.directive:ngForm&quot; papago-id=&quot;31-1&quot;&gt;angularjs&lt;/a&gt;.org/api/ng.directive:ngForm&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;32&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 예에서는, http&lt;a href=&quot;http://plnkr.co/edit/Ps8OXrfpnePFvvdFgYJf?p=preview&quot; papago-id=&quot;32-1&quot;&gt;://&lt;/a&gt;plnkr.co/edit/&lt;a href=&quot;http://plnkr.co/edit/Ps8OXrfpnePFvvdFgYJf?p=preview&quot; papago-id=&quot;32-1&quot;&gt;Ps8OXrfpnePFvvdFgYJf&lt;/a&gt;?p=preview 를 참조할 수 있습니다.&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 class=&quot;papago-parent&quot;&gt;에서는, 「」가 .&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;myDirective&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;$clear&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;method(API).&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;36&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;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;app.directive('myDirective', function () {
    return {
        restrict: 'E',
        scope: {
        /*The object that passed from the cntroller*/
        objectToInject: '=',
다른 컨트롤러로부터의 디렉티브컨트롤러 호출방식        },
        templateUrl: 'templates/myTemplate.html',

        link: function ($scope, element, attrs) {
            /*This method will be called whet the 'objectToInject' value is changes*/
            $scope.$watch('objectToInject', function (value) {
                /*Checking if the given value is not undefined*/
                if(value){
                $scope.Obj = value;
                    /*Injecting the Method*/
                    $scope.Obj.invoke = function(){
                        //Do something
                    }
                }    
            });
        }
    };
});
&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;매개 변수를 사용하여 HTML에 지시문 선언:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;my-directive object-to-inject=&quot;injectedObject&quot;&amp;gt;&amp;lt;/ my-directive&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;39&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;컨트롤러:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;app.controller(&quot;myController&quot;, ['$scope', function ($scope) {
   // object must be empty initialize,so it can be appended
    $scope.injectedObject = {};

    // now i can directly calling invoke function from here 
     $scope.injectedObject.invoke();
}];
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;40&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/14883476/&lt;a href=&quot;https://stackoverflow.com/questions/14883476/call-method-in-directive-controller-from-other-controller&quot; target=&quot;_blank&quot; papago-id=&quot;40-1&quot;&gt;call-method-in-directive-controller-from-other-controller&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/419</guid>
      <comments>https://copysource.tistory.com/419#entry419comment</comments>
      <pubDate>Sun, 26 Mar 2023 14:09:54 +0900</pubDate>
    </item>
    <item>
      <title>Wordpress 문제: 이행 후 홈페이지만 기능</title>
      <link>https://copysource.tistory.com/418</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Wordpress 문제: 이행 후 홈페이지만 기능&lt;/font&gt;&lt;/h2&gt;
&lt;p&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;wordpress&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;vps&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;문제가 생겼어요&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;많은 가이드/튜토리얼을 따라다니며 검색해보니 왜 작동하지 않는지 알 수 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;홈페이지는 다른 모든 페이지 404를 로드하는 유일한 페이지입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;관련된 파일 몇 개를 첨부했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;좋은 생각 있는 사람?&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;http://pastebin.com/dYgtc11G&quot; rel=&quot;noreferrer&quot; papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;HT 액세스&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;http://pastebin.com/pH2XQ3Vp&quot; rel=&quot;noreferrer&quot; papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;httpd.conf&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;디렉토리 리스트의 일부 - www.pastebin.com/BCPfRisB&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;ol&gt; 
 &lt;li papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;wp-admin 로그인&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;[ Settings ]&amp;gt; [ Permalinks ]으로 이동합니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;변경하지 말고 &quot;Save Changes&quot; 버튼을 클릭합니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&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;저도 같은 문제가 있어서 루트 디렉토리에서 .&lt;a href=&quot;http://www.htaccess-guide.com/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;14-1&quot;&gt;htaccess를 &lt;/a&gt;생성하는 것을 수정했습니다.내용은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;/var/www/var/htaccess&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;# BEGIN WordPress
&amp;lt;IfModule mod_rewrite.c&amp;gt;
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
&amp;lt;/IfModule&amp;gt;
# END WordPress
&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;httpd.conf&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;/etc/httpd/conf&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride&quot; rel=&quot;noreferrer&quot; papago-id=&quot;5-1&quot;&gt;AllowOverride&lt;/a&gt; 지시어 값을 로 설정합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;All&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;를 위해&lt;/font&gt;&lt;/font&gt;&lt;code&gt;/var/www/html&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;20&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;디렉토리(아래 참조):&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;Directory &quot;/var/www/html&quot;&amp;gt;
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
&amp;lt;/Directory&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;마지막으로 Apache를 재시작합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;sudo service httpd restart
&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;a href=&quot;https://aggarwalarpit.wordpress.com/2017/05/20/hosting-wordpress-application-on-an-ec2-instance-aws/&quot; papago-id=&quot;22-1&quot; rel=&quot;noreferrer&quot;&gt;Centos&lt;/a&gt; Box에서 &lt;a href=&quot;https://aggarwalarpit.wordpress.com/2017/05/20/hosting-wordpress-application-on-an-ec2-instance-aws/&quot; papago-id=&quot;22-1&quot; rel=&quot;noreferrer&quot;&gt;WordPress 애플리케이션&lt;/a&gt; 호스팅을 &lt;a href=&quot;https://aggarwalarpit.wordpress.com/2017/05/20/hosting-wordpress-application-on-an-ec2-instance-aws/&quot; papago-id=&quot;22-1&quot; rel=&quot;noreferrer&quot;&gt;참조&lt;/a&gt;하십시오.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;23-1&quot;&gt;가능&lt;/strong&gt;한 모든 &lt;strong papago-id=&quot;23-1&quot;&gt;해결책&lt;/strong&gt;을 찾을 수 있는 답을 찾지 못해 이 글을 올렸습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 답변은 이 문제를 해결하는 데 도움이 되는 &lt;em papago-id=&quot;23-3&quot;&gt;편리&lt;/em&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;a) Permalinks 업데이트.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;내부 설정을 리빌드 하는 &lt;em papago-id=&quot;24-1&quot;&gt;순서&lt;/em&gt;는, 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;25&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;a) WordPress 대시보드에 로그인합니다.&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;26&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;b) Settings -&amp;gt; Permalinks 순으로 이동합니다.&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;27&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;c) 변경하지 말고 &quot;Save Changes&quot; (변경 저장) 버튼을 클릭합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;hr&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;28&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;b)&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.htaccess&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;29&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;에는 개서 엔진 설정이 필요합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;IfModule mod_rewrite.c&amp;gt;
   RewriteEngine On
   RewriteBase /
   RewriteRule ^index\.php$ - [L]
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule . /index.php [L]
&amp;lt;/IfModule&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr&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;c) 또한 Apache 로그 파일의 오류로 인해 다음 엔트리가 필요했습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;your-wordpress.conf&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;31&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Apache 파일은 주로 에 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;/etc/apache2/vhostd.d&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&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;Directory your-wordpress-directory&amp;gt;
  Options Indexes FollowSymLinks
  AllowOverride All
  Order allow,deny
  Allow from all
&amp;lt;/Directory&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;33&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;d) 보증&lt;/font&gt;&lt;/font&gt;&lt;code&gt;mod_rewrite&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;34&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;유효하게 되어 있다&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
Wordpress 문제: 이행 후 홈페이지만 기능&lt;pre&gt;&lt;code&gt;a2enmod rewrite
Restart Apache
&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;p&gt;&lt;a href=&quot;https://stackoverflow.com/questions/42476927/wordpress-404-error-on-every-page-except-homepage-after-migration/42478180#42478180&quot; papago-id=&quot;36&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Word press 404 오류(이행 후) 홈페이지 이외의 모든 페이지에 표시됨&lt;/font&gt;&lt;/a&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;wp 플러그인 호출 'duplicator'가 있습니다. 소규모 사이트에서 사용할 수 있습니다.그렇지 않으면 wp_options 테이블 siteurl과 홈 URL을 변경한 후 관리자 백엔드 설정 -&amp;gt; permalinks -&amp;gt; permalinks - permalinks - permalinks를 설정하고 저장해야 합니다.&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;그런 다음 .htaccess를 설정하고 다음 코드를 설정하여 테스트할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;`#BEGIN WordPress
&amp;lt;IfModule mod_rewrite.c&amp;gt;
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
&amp;lt;/IfModule&amp;gt;`
&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;홈 및 사이트 URL을 이동한 새 URL로 변경해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;가장 쉬운 방법은 이것을 추가하는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;define('WP_HOME','http://example.com');
define('WP_SITEURL','http://example.com');
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;wp-config.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;php&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&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;&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;새로운 웹사이트 URL로 더미 링크를 교환해 주세요.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것이 도움이 되는지 알려주세요.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;42&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/42162570/&lt;a href=&quot;https://stackoverflow.com/questions/42162570/wordpress-issue-after-migration-only-homepage-works&quot; target=&quot;_blank&quot; papago-id=&quot;42-1&quot;&gt;wordpress-issue-after-migration-only-homepage-works&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/418</guid>
      <comments>https://copysource.tistory.com/418#entry418comment</comments>
      <pubDate>Sun, 26 Mar 2023 14:08:10 +0900</pubDate>
    </item>
    <item>
      <title>수집되지 않은 참조 오류: 반응이 정의되지 않았습니다.</title>
      <link>https://copysource.tistory.com/417</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;JS는 이 자습서를 &lt;a href=&quot;http://rny.io/rails/react/2014/07/31/reactjs-and-rails.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;1-1&quot;&gt;사용&lt;/a&gt;하여 레일과 함께 작동합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음 오류가 발생하였습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;hr&gt; 
&lt;p&gt;&lt;code&gt;Uncaught ReferenceError: React is not defined&lt;/code&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;a href=&quot;https://i.stack.imgur.com/M0Qaj.png&quot; papago-id=&quot;2-1&quot; rel=&quot;noreferrer&quot;&gt;&lt;img alt=&quot;여기에 이미지 설명 입력&quot; papago-id=&quot;2-1-0&quot; src=&quot;https://i.stack.imgur.com/M0Qaj.png&quot; papago-attr-id=&quot;1&quot;&gt;&lt;/a&gt; 콘솔에서 React 개체에 액세스할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기에 &lt;a href=&quot;https://stackoverflow.com/questions/29851588/how-can-i-use-this-react-library-with-react-rails?answertab=votes#tab-top&quot; papago-id=&quot;3-3&quot;&gt;기재&lt;/a&gt;된 바와 같이&lt;a href=&quot;https://github.com/ssorallen/turbo-react/blob/master/public/dist/turbo-react.min.js&quot; papago-id=&quot;3-1&quot; rel=&quot;noreferrer&quot;&gt; public/dist/turbo-react.min&lt;/a&gt;.js도 &lt;a href=&quot;https://github.com/ssorallen/turbo-react/blob/master/public/dist/turbo-react.min.js&quot; papago-id=&quot;3-1&quot; rel=&quot;noreferrer&quot;&gt;추가&lt;/a&gt;하였습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;//= require components&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;line in application.&lt;a href=&quot;https://stackoverflow.com/questions/24974478/react-is-not-defined?answertab=votes#tab-top&quot; papago-id=&quot;4-1&quot;&gt;laught&lt;/a&gt;를 참조해 &lt;a href=&quot;https://stackoverflow.com/questions/24974478/react-is-not-defined?answertab=votes#tab-top&quot; papago-id=&quot;4-1&quot;&gt;주세요&lt;/a&gt;.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한.&lt;/font&gt;&lt;/font&gt;&lt;br&gt; &lt;code&gt;var React = require('react')&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;에러가 표시됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;br&gt; &lt;code&gt;Uncaught ReferenceError: require is not defined&lt;/code&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&gt;&lt;font papago-translate=&quot;splited&quot;&gt;&lt;strong papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 1 [편집 1]&lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font 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;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;은 나의 ★★★★★★★★★★★★★★★★★★★★입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;comments.js.jsx&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 일::&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var Comment = React.createClass({
  render: function () {
    return (
      &amp;lt;div className=&quot;comment&quot;&amp;gt;
        &amp;lt;h2 className=&quot;commentAuthor&quot;&amp;gt;
          {this.props.author}
        &amp;lt;/h2&amp;gt;
          {this.props.comment}
      &amp;lt;/div&amp;gt;
      );
  }
});

var ready = function () {
  React.renderComponent(
    &amp;lt;Comment author=&quot;Richard&quot; comment=&quot;This is a comment &quot;/&amp;gt;,
    document.getElementById('comments')
  );
};

$(document).ready(ready);
&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;index.html.erb&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;div id=&quot;comments&quot;&amp;gt;&amp;lt;/div&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;Babel 및 React 17을 사용하는 경우 Babel 구성에 runtime: &quot;automatic&quot;을 추가해야 할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; »&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.babelrc&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; 파일은 과 같습니다config 음 、 음음음음 this 。&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; {
     &quot;presets&quot;: [
         &quot;@babel/preset-env&quot;,
        [&quot;@babel/preset-react&quot;, {&quot;runtime&quot;: &quot;automatic&quot;}]
     ]
 }
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;를 빌드할 때이할 수 .&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;webpack.config.json&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;externals: {
    'react': 'React'
},
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 해결하지 .&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;require('react')&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;모듈을  변수, npm의 를 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;window&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;라고 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;React&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;이 와 함께 ),  파일이 를 외부에서 Resact는 javascript(javascript) 합니다).&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;window.React&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;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;import ReactDOM from 'react-dom'
&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;Import하지 않고 아래와 같이 변경하였습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import React from 'react';
import ReactDOM from 'react-dom';
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;에러는 해결되었습니다. : )&lt;/font&gt;&lt;/p&gt;&lt;p&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;pack을 하고 있는 는, 「필요에  React」를할 수  「React」는 필요 .&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;require&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;20&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신의 코드에 있어요.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;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-1&quot;&gt;webpack.config.js&lt;/strong&gt;에 추가합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;plugins: [
   new webpack.ProvidePlugin({
      &quot;React&quot;: &quot;react&quot;,
   }),
],
&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;http://webpack.github.io/docs/shimming-modules.html#&lt;a href=&quot;http://webpack.github.io/docs/shimming-modules.html#plugin-provideplugin&quot; rel=&quot;noreferrer&quot; papago-id=&quot;29-1&quot;&gt;plugin-provideplugin &lt;/a&gt;를 참조해 주세요.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;30&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;가능한 이유는 1. 리액트를 로드하지 않았습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;JS는 당신의 페이지에 2. 위의 스크립트 뒤에 당신의 페이지에 로드했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;솔루션은 위에 표시된 스크립트보다 먼저 JS 파일을 로드하는 것입니다.&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 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;ol&gt; 
 &lt;li&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;react&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;설정 내의 후 webpack externals를 externals로 로드해야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;bundle.js&lt;/code&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 「 「 」라고  행이  것을 .&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;import React from 'react';&lt;/code&gt;&lt;/li&gt; 
&lt;/ol&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;import React from 'react'
import { render } from 'react-dom'
window.React = React
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;24&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;before &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;render()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;25&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;★★★★★★ 。&lt;/font&gt;&lt;/font&gt;&lt;/font&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;이로 인해 다음과 같은 오류가 팝업으로 반환되는 것을 방지할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;40&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;리액션이 정의되어 있지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;26&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot; &quot; &quot; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;React&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;27&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 문제를 해결할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;em papago-id=&quot;43&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Santosh에 추가:&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;44&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;로드 가능한 리액트 기준&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import React from 'react'
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;45&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;난 이 질문에 답을 알고 있다.&lt;/font&gt;&lt;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;28&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;나의&lt;/font&gt;&lt;/font&gt;&lt;code&gt;index.js&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;29&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 파일은 제가 이랬어요&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Uncaught ReferenceError: React is not defined&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;30&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import {render} from 'react-dom';
import App from './App';

render(&amp;lt;App /&amp;gt;, document.getElementById(&quot;root&quot;));
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;31&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;추가 중&lt;/font&gt;&lt;/font&gt;&lt;code&gt;import React from 'react';&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&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;33&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이제 나의&lt;/font&gt;&lt;/font&gt;&lt;code&gt;index.js&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;34&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;콘솔에는 에러가 표시되지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import React from 'react';
import {render} from 'react-dom';
import App from './App';

render(&amp;lt;App /&amp;gt;, document.getElementById(&quot;root&quot;));
&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;webpack.config.js나 그 외의 장소에서는 변경을 하지 않았습니다.&lt;/font&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;import React, { Component, PropTypes } from 'react';
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;54&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것 또한 효과가 있을 수 있습니다!&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;35&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;TypeScript 를 사용하고 있는 경우는, 다음의 순서에 따라 주세요.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;tsconfig.json&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;36&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;가지다&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&quot;jsx&quot;: &quot;react&quot;&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&gt;&lt;/font&gt;&lt;code&gt;&quot;compilerOptions&quot;&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;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 class=&quot;papago-parent&quot;&gt;Import를 통해 해결했습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;React&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;code&gt;ReactDOM&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;41&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음과 같이 입력합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import React from 'react';
import ReactDOM from 'react-dom';
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;42&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;코드에서 컴포넌트 정의의 철자를 소문자로 잘못 입력했기 때문에 이 오류가 발생하였습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;react.createClass&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;43&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;대문자 대신&lt;/font&gt;&lt;/font&gt;&lt;code&gt;React.createClass&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;44&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;65&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음을 사용했기 때문에 이 오류가 발생했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import React from 'react';
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;66&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;반응, 유형 스크립트 및 구획 작업 중&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;67&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;변경처:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import * as React from 'react';
&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;https&lt;a href=&quot;https://github.com/parcel-bundler/parcel/issues/1199#issuecomment-381817548&quot; papago-id=&quot;68-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;://&lt;/a&gt;github.com/parcel-bundler/parcel/issues/1199#&lt;a href=&quot;https://github.com/parcel-bundler/parcel/issues/1199#issuecomment-381817548&quot; papago-id=&quot;68-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;issuecomment-381817548&lt;/a&gt;에서 제안하는 문제 해결.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;45&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Import 순서가 이 에러의 원인이 되는 경우가 있습니다.상기의 순서를 모두 실행해도 곤란하다고 생각되는 경우는, 다음의 순서를 확인해 주세요.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;react&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;46&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;수입이 우선이다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import React from 'react'
import { render } from 'react-dom'
&lt;/code&gt;&lt;/pre&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;/p&gt;&lt;p&gt;&lt;a href=&quot;https://i.stack.imgur.com/hR3hX.png&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;72&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;표시된 오류&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://i.stack.imgur.com/R77KH.png&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;73&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;a href=&quot;https://i.stack.imgur.com/fyy0U.png&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;74&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;마지막으로 react-dom 가져오기&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;47&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;error is react가 정의되지 않은 경우 ==를 추가하십시오.&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;import React from 'react';&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;48&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;에러가 반응하는 경우&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;DOM이 정의되지 않았습니다. ==을(를) 추가하십시오.&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;import ReactDOM from 'react-수집되지 않은 참조 오류: 반응이 정의되지 않았습니다.dom';&lt;/code&gt;&lt;/p&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;CRA를 사용하여 이 질문에 도달한 사용자는&lt;/font&gt;&lt;/font&gt;&lt;code&gt;customize-cra&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&gt;&lt;/font&gt;&lt;code&gt;react-app-rewired&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;51&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;CRA의 바벨 프리셋을 덮어쓰기 위한 패키지입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러기 위해서는,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;config-overrides.js&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&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;const { override, addBabelPreset } = require('customize-cra');

module.exports = override(
    addBabelPreset('@emotion/babel-preset-css-prop'),
    addBabelPreset([
        '@babel/preset-react',
        {
            runtime: 'automatic',
            importSource: '@emotion/react',
        },
    ]),
);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;81&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;패키지의 스크립트를 갱신합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;아래 것들과 함께 json.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;    &quot;start&quot;: &quot;react-scripts start&quot;,
    &quot;build&quot;: &quot;react-scripts build&quot;,
    &quot;test&quot;: &quot;react-scripts test&quot;,
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code&gt;    &quot;start&quot;: &quot;react-app-rewired start&quot;,
    &quot;build&quot;: &quot;react-app-rewired build&quot;,
    &quot;test&quot;: &quot;react-app-rewired test --env=jsdom&quot;,
&lt;/code&gt;&lt;/pre&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;/p&gt; 
&lt;p&gt;&lt;code&gt;import react from 'react'&lt;/code&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;83&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;대신&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;import React from 'react'&lt;/code&gt;&lt;/p&gt;&lt;p papago-id=&quot;84&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/32070303/&lt;a href=&quot;https://stackoverflow.com/questions/32070303/uncaught-referenceerror-react-is-not-defined&quot; target=&quot;_blank&quot; papago-id=&quot;84-1&quot;&gt;uncaught-referenceerror-react-is-not-defined&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/417</guid>
      <comments>https://copysource.tistory.com/417#entry417comment</comments>
      <pubDate>Sun, 26 Mar 2023 14:06:15 +0900</pubDate>
    </item>
    <item>
      <title>명명된 튜플을 사전으로 변환</title>
      <link>https://copysource.tistory.com/416</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;pre&gt;&lt;code&gt;class Town(collections.namedtuple('Town', [
    'name', 
    'population',
    'coordinates',
    'population', 
    'capital', 
    'state_bird'])):
    # ...
&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;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;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;p&gt;&lt;em&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;TL;DR: 방법이 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;_asdict&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;/em&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음은 사용 예시를 보여드리겠습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; fields = ['name', 'population', 'coordinates', 'capital', 'state_bird']
&amp;gt;&amp;gt;&amp;gt; Town = collections.namedtuple('Town', fields)
&amp;gt;&amp;gt;&amp;gt; funkytown = Town('funky', 300, 'somewhere', 'lipps', 'chicken')
&amp;gt;&amp;gt;&amp;gt; funkytown._asdict()
OrderedDict([('name', 'funky'),
             ('population', 300),
             ('coordinates', 'somewhere'),
             ('capital', 'lipps'),
             ('state_bird', 'chicken')])
&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;a href=&quot;https://docs.python.org/3/library/collections.html#collections.somenamedtuple._asdict&quot; papago-id=&quot;8-1&quot;&gt;문서화&lt;/a&gt;된 방식입니다. 즉, &lt;strong papago-id=&quot;8-3&quot;&gt;python&lt;/strong&gt;의 일반적인 규칙과는 &lt;strong papago-id=&quot;8-3&quot;&gt;달리 메서드 이름의 선두 밑줄은 사용을 권장하지 않습니다&lt;/strong&gt;.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;명명된 튜플에 추가된 다른 방법들과 함께&lt;/font&gt;&lt;/font&gt;&lt;code&gt;_make&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;_replace&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;_source&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;_fields&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;hr&gt; 
&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;em papago-id=&quot;13-0&quot;&gt;주의:&lt;/em&gt; 야생에 있는 일부 2.7.5 &amp;lt; python version &amp;lt; 3.5.0 코드에서는 다음 버전이 표시될 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; vars(funkytown)
OrderedDict([('name', 'funky'),
             ('population', 300),
             ('coordinates', 'somewhere'),
             ('capital', 'lipps'),
             ('state_bird', 'chicken')])
&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;_asdict&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;는 더 이상 사용되지 않으며(여기를 &lt;a href=&quot;https://docs.python.org/3.3/library/collections.html#collections.somenamedtuple._asdict&quot; papago-id=&quot;15-1&quot;&gt;참조&lt;/a&gt;), 내장된 &lt;a href=&quot;https://docs.python.org/3/library/functions.html#vars&quot; papago-id=&quot;15-3&quot;&gt;메서드&lt;/a&gt; vars 사용을 제안합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 조언은 이제 구식이 되었습니다.서브클래싱과 &lt;a href=&quot;http://bugs.python.org/issue24931&quot; papago-id=&quot;15-5&quot;&gt;관련&lt;/a&gt;된 버그를 &lt;a href=&quot;http://bugs.python.org/issue24931&quot; papago-id=&quot;15-5&quot;&gt;수정&lt;/a&gt;하기 위해&lt;/font&gt;&lt;/font&gt;&lt;code&gt;__dict__&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;a href=&quot;https://hg.python.org/cpython/rev/fa3ac31cfa44&quot; papago-id=&quot;16-1&quot;&gt;명명&lt;/a&gt;된 튜플에 존재했던 속성이 이 커밋에 &lt;a href=&quot;https://hg.python.org/cpython/rev/fa3ac31cfa44&quot; papago-id=&quot;16-1&quot;&gt;의해&lt;/a&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;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;에 내장된 방법이 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;namedtuple&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&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;vars()&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;_asdict&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;_asdict&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;는 권장되지 않는 것으로 표시되어 있습니다만, 코멘트에 의하면, 3.4를 기점으로 이 상황은 해소되고 있습니다.&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;_asdict()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;a를 반환하다&lt;/font&gt;&lt;/font&gt;&lt;code&gt;OrderedDict&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;OrderedDict&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;정례에&lt;/font&gt;&lt;/font&gt;&lt;code&gt;dict&lt;/code&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-py prettyprint-override&quot;&gt;&lt;code&gt;
town = Town('funky', 300, 'somewhere', 'lipps', 'chicken')
dict(town._asdict())
&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&gt;&lt;code&gt;{'capital': 'lipps',
 'coordinates': 'somewhere',
 'name': 'funky',
 'population': 300,
 'state_bird': 'chicken'}
&lt;/code&gt;&lt;/pre&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;Ubuntu 14.04 LTS 버전의 python2.7 및 python3.4에서는&lt;/font&gt;&lt;/font&gt;&lt;code&gt;__dict__&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 class=&quot;papago-parent&quot;&gt;그&lt;/font&gt;&lt;/font&gt;&lt;code&gt;_asdict&lt;/code&gt; &lt;font papago-translate=&quot;translated&quot; papago-id=&quot;30&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;em papago-id=&quot;30-0&quot;&gt;메서드&lt;/em&gt;도 작동했지만 현지화된 비균일 API 대신 표준 정의 균일한 속성 API를 사용하는 경향이 있습니다.&lt;/font&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;python 2.7달러&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;# Works on:
# Python 2.7.6 (default, Jun 22 2015, 17:58:13)  [GCC 4.8.2] on linux2
# Python 3.4.3 (default, Oct 14 2015, 20:28:29)  [GCC 4.8.4] on linux

import collections

Color = collections.namedtuple('Color', ['r', 'g', 'b'])
red = Color(r=256, g=0, b=0)

# Access the namedtuple as a dict
print(red.__dict__['r'])  # 256

# Drop the namedtuple only keeping the dict
red = red.__dict__
print(red['r'])  #256
&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;dict로 &lt;strong papago-id=&quot;32-1&quot;&gt;보는&lt;/strong&gt; 것은 (적어도 내가 아는 한) 모든 것을 나타내는 사전을 얻을 수 있는 의미적 방법이다.&lt;/font&gt;&lt;/p&gt; 
&lt;hr&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;주요 Python 버전 및 플랫폼과 그 지원의 표를 축적하면 좋을 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;__dict__&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;24&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;현재 위에 게시된 것과 같이 플랫폼 버전은 1개, 파이썬 버전은 2개뿐입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;| Platform                      | PyVer     | __dict__ | _asdict |
| --------------------------    | --------- | -------- | ------- |
| Ubuntu 14.04 LTS              | Python2.7 | yes      | yes     |
| Ubuntu 14.04 LTS              | Python3.4 | yes      | yes     |
| CentOS Linux release 7.4.1708 | Python2.7 | no       | yes     |
| CentOS Linux release 7.4.1708 | Python3.4 | no       | yes     |
| CentOS Linux release 7.4.1708 | Python3.6 | no       | yes     |
&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;케이스 1: 1차원 태플&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;TUPLE_ROLES = (
    (912,&quot;Role 21&quot;),
    (913,&quot;Role 22&quot;),
    (925,&quot;Role 23&quot;),
    (918,&quot;Role 24&quot;),
)


TUPLE_ROLES[912]  #==&amp;gt; Error because it is out of bounce. 
TUPLE_ROLES[  2]  #==&amp;gt; will show Role 23.
DICT1_ROLE = {k:v for k, v in TUPLE_ROLES }
DICT1_ROLE[925] # will display &quot;Role 23&quot; 
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;25&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;: 2: 2차원 튜플&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;br&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;예: DICT_ROLES #에는 '가 표시됩니다.DICT_ROLES[961] # ' 、 「 DICT _ ROLES 」&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;NAMEDTUPLE_ROLES = (
    ('Company', ( 
            ( 111, 'Owner/CEO/President'), 
            ( 113, 'Manager'),
            ( 115, 'Receptionist'),
            ( 117, 'Marketer'),
            ( 119, 'Sales Person'),
            ( 121, 'Accountant'),
            ( 123, 'Director'),
            ( 125, 'Vice President'),
            ( 127, 'HR Specialist'),
            ( 141, 'System Operator'),
    )),
    ('Restaurant', ( 
            ( 211, 'Chef'), 
            ( 212, 'Waiter/Waitress'), 
    )),
    ('Oil Collector', ( 
            ( 211, 'Truck Driver'), 
            ( 213, 'Tank Installer'), 
            ( 217, 'Welder'),
            ( 218, 'In-house Handler'),
            ( 219, 'Dispatcher'),
    )),
    ('Information Technology', ( 
            ( 912, 'Server Administrator'),
            ( 914, 'Graphic Designer'),
            ( 916, 'Project Manager'),
            ( 918, 'Consultant'),
            ( 921, 'Business Logic Analyzer'),
            ( 923, 'Data Model Designer'),
            ( 951, 'Programmer'),
            ( 953, 'WEB Front-End Programmer'),
            ( 955, 'Android Programmer'),
            ( 957, 'iOS Programmer'),
            ( 961, 'Back-End Programmer'),
            ( 962, 'Fullstack Programmer'),
            ( 971, 'System Architect'),
    )),
)

#Thus, we need dictionary/set

T4 = {}
def main():
    for k, v in NAMEDTUPLE_ROLES:
        for k1, v1 in v:
            T4.update ( {k1:v1}  )
    print (T4[961]) # will display 'Back-End Programmer'
    # print (T4) # will display all list of dictionary

main()
&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;no_incitict의 경우 다음과 같이 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;def to_dict(model):
    new_dict = {}
    keys = model._fields
    index = 0
    for key in keys:
        new_dict[key] = model[index]
        index += 1

    return new_dict
&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;파이썬 3&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;import collections

Town = collections.namedtuple(&quot;Town&quot;, &quot;name population coordinates capital state_bird&quot;)

town_list = []

town_list.append(Town('Town 1', '10', '10.10', 'Capital 1', 'Turkey'))
town_list.append(Town('Town 2', '11', '11.11', 'Capital 2', 'Duck'))

town_dictionary = {t.name: t for t in town_list}
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;40&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/26180528/&lt;a href=&quot;https://stackoverflow.com/questions/26180528/convert-a-namedtuple-into-a-dictionary&quot; target=&quot;_blank&quot; papago-id=&quot;40-1&quot;&gt;convert-a-namedtuple-into-a-dictionary&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/416</guid>
      <comments>https://copysource.tistory.com/416#entry416comment</comments>
      <pubDate>Fri, 3 Feb 2023 23:22:38 +0900</pubDate>
    </item>
    <item>
      <title>사전: 키 목록에 대한 값 목록을 가져옵니다.</title>
      <link>https://copysource.tistory.com/415</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;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; mydict = {'one': 1, 'two': 2, 'three': 3}
&amp;gt;&amp;gt;&amp;gt; mykeys = ['three', 'one']
&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;mykeys&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;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; mydict.WHAT_GOES_HERE(mykeys)
[3, 1]
&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;&amp;gt;&amp;gt;&amp;gt; [mydict[x] for x in mykeys]
[3, 1]
&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;list-comp 이외의 몇 가지 방법이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;빌드 목록 및 키를 찾을 수 없는 경우 예외 발생:&lt;/font&gt;&lt;/font&gt;&lt;code&gt;map(mydict.__getitem__, mykeys)&lt;/code&gt;&lt;/li&gt; 
 &lt;li&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;None&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;map(mydict.get, mykeys)&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&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;operator.itemgetter&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;from operator import itemgetter
myvalues = itemgetter(*mykeys)(mydict)
# use `list(...)` if list is required
&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;em papago-id=&quot;7-0&quot;&gt;주의&lt;/em&gt;: Python3에서는&lt;/font&gt;&lt;/font&gt;&lt;code&gt;map&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;는 목록이 아닌 반복자를 반환합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용하다&lt;/font&gt;&lt;/font&gt;&lt;code&gt;list(map(...))&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;목록을 위해.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;속도 비교:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Python 2.7.11 |Anaconda 2.4.1 (64-bit)| (default, Dec  7 2015, 14:10:42) [MSC v.1500 64 bit (AMD64)] on win32
In[1]: l = [0,1,2,3,2,3,1,2,0]
In[2]: m = {0:10, 1:11, 2:12, 3:13}
In[3]: %timeit [m[_] for _ in l]  # list comprehension
1000000 loops, best of 3: 762 ns per loop
In[4]: %timeit map(lambda _: m[_], l)  # using 'map'
1000000 loops, best of 3: 1.66 µs per loop
In[5]: %timeit list(m[_] for _ in l)  # a generator expression passed to a list constructor.
1000000 loops, best of 3: 1.65 µs per loop
In[6]: %timeit map(m.__getitem__, l)
The slowest run took 4.01 times longer than the fastest. This could mean that an intermediate result is being cached 
1000000 loops, best of 3: 853 ns per loop
In[7]: %timeit map(m.get, l)
1000000 loops, best of 3: 908 ns per loop
In[33]: from operator import itemgetter
In[34]: %timeit list(itemgetter(*l)(m))
The slowest run took 9.26 times longer than the fastest. This could mean that an intermediate result is being cached 
1000000 loops, best of 3: 739 ns per loop
&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;h3 papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;갱신하다&lt;/font&gt;&lt;/h3&gt; 
&lt;p papago-id=&quot;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;Python 2.7.11 |Anaconda 2.4.1 (64-bit)| (default, Dec  7 2015, 14:10:42) [MSC v.1500 64 bit (AMD64)] on win32
In[2]: import numpy.random as nprnd
l = nprnd.randint(1000, size=10000)
m = dict([(_, nprnd.rand()) for _ in range(1000)])
from operator import itemgetter
import operator
f = operator.itemgetter(*l)

%timeit f(m)
1000 loops, best of 3: 1.14 ms per loop

%timeit list(itemgetter(*l)(m))
1000 loops, best of 3: 1.68 ms per loop

%timeit [m[_] for _ in l]  # list comprehension
100 loops, best of 3: 2 ms per loop

%timeit map(m.__getitem__, l)
100 loops, best of 3: 2.05 ms per loop

%timeit list(m[_] for _ in l)  # a generator expression passed to a list constructor.
100 loops, best of 3: 2.19 ms per loop

%timeit map(m.get, l)
100 loops, best of 3: 2.53 ms per loop

%timeit map(lambda _: m[_], l)
100 loops, best of 3: 2.9 ms per loop
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 경우 확실한 승자는&lt;/font&gt;&lt;/font&gt;&lt;code&gt;f = operator.itemgetter(*l); f(m)&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;map(lambda _: m[_], l) &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;h2 papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Python 3.6.4 업데이트&lt;/font&gt;&lt;/h2&gt; 
&lt;pre&gt;&lt;code&gt;import numpy.random as nprnd
l = nprnd.randint(1000, size=10000)
m = dict([(_, nprnd.rand()) for _ in range(1000)])
from operator import itemgetter
import operator
f = operator.itemgetter(*l)

%timeit f(m)
1.66 ms ± 74.2 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

%timeit list(itemgetter(*l)(m))
2.1 ms ± 93.2 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

%timeit [m[_] for _ in l]  # list comprehension
2.58 ms ± 88.8 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

%timeit list(map(m.__getitem__, l))
2.36 ms ± 60.7 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

%timeit list(m[_] for _ in l)  # a generator expression passed to a list constructor.
2.98 ms ± 142 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

%timeit list(map(m.get, l))
2.7 ms ± 284 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

%timeit list(map(lambda _: m[_], l)
3.14 ms ± 62.6 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
&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;따라서 Python 3.6.4의 결과는 거의 동일합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;세 가지 방법이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&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;KeyError&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&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;result = [mapping[k] for k in iterable]
&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&gt;&lt;code&gt;result = [mapping.get(k, default_value) for k in iterable]
&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;result = [mapping[k] for k in iterable if k in mapping]
&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;mydict = {'one': 1, 'two': 2, 'three': 3}
mykeys = ['three', 'one','ten']
newList=[mydict[k] for k in mykeys if k in mydict]
print newList
[3, 1]
&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;mydict = {'one': 1, 'two': 2, 'three': 3}
mykeys = ['three', 'one'] # if there are many keys, use a set

[mydict[k] for k in mykeys]
=&amp;gt; [3, 1]
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;new_dict = {x: v for x, v in mydict.items() if x in mykeys}
&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;font class=&quot;papago-parent&quot;&gt;지금은 속도 비교를 할 시간이 없습니다(나중에 다시 와서 입력하겠습니다).&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import pandas as pd
mydict = {'one': 1, 'two': 2, 'three': 3}
mykeys = ['three', 'one']
temp_df = pd.DataFrame().append(mydict)
# You can export DataFrames to a number of formats, using a list here. 
temp_df[mykeys].values[0]
# Returns: array([ 3.,  1.])

# If you want a dict then use this instead:
# temp_df[mykeys].to_dict(orient='records')[0]
# Returns: {'one': 1.0, 'three': 3.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;Python&lt;a href=&quot;https://stackoverflow.com/questions/36895046/python-efficient-way-to-create-a-list-from-dict-values-with-a-given-order&quot; papago-id=&quot;32-1&quot;&gt; 종료&lt;/a&gt; 후: &lt;a href=&quot;https://stackoverflow.com/questions/36895046/python-efficient-way-to-create-a-list-from-dict-values-with-a-given-order&quot; papago-id=&quot;32-1&quot;&gt;주어진 순서로 dict 값에서 목록을 만드는 효율적인 방법&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;/p&gt; 
&lt;pre&gt;&lt;code&gt;from __future__ import (absolute_import, division, print_function,
                        unicode_literals)

import collections


class DictListProxy(collections.Sequence):
    def __init__(self, klist, kdict, *args, **kwargs):
        super(DictListProxy, self).__init__(*args, **kwargs)
        self.klist = klist
        self.kdict = kdict

    def __len__(self):
        return len(self.klist)

    def __getitem__(self, key):
        return self.kdict[self.klist[key]]


myDict = {'age': 'value1', 'size': 'value2', 'weigth': 'value3'}
order_list = ['age', 'weigth', 'size']

dlp = DictListProxy(order_list, myDict)

print(','.join(dlp))
print()
print(dlp[1])
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;34&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;출력:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;value1,value3,value2

value3
&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;reduce(lambda x,y: mydict.get(y) and x.append(mydict[y]) or x, mykeys,[])
&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;dict에 없는 키가 있는 경우.&lt;/font&gt;&lt;/p&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;/font&gt;&lt;/font&gt;&lt;code&gt;dict&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;gt;&amp;gt;&amp;gt; d = MyDict(mydict)
&amp;gt;&amp;gt;&amp;gt; d[mykeys]
[3, 1]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;39&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음은 데모 구현입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;class MyDict(dict):
    def __getitem__(self, key):
        getitem = super().__getitem__
        if isinstance(key, list):
            return [getitem(x) for x in key]
        else:
            return getitem(key)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/q/2390827/4518341&quot; papago-id=&quot;17-0&quot;&gt;적절한 서브클래싱&lt;/a&gt;을 실시하려면 , &lt;a href=&quot;https://stackoverflow.com/q/2390827/4518341&quot; papago-id=&quot;17-0&quot;&gt;한층&lt;/a&gt; 더 &lt;a href=&quot;https://stackoverflow.com/q/2390827/4518341&quot; papago-id=&quot;17-0&quot;&gt;작업이 필요&lt;/a&gt;하게 되어, 실장하고 싶은 경우도 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.get()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;41&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.__setitem__()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;42&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;,그리고.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.__delitem__()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;43&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;,다른 것들 중에.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;44&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/18453566/&lt;a href=&quot;https://stackoverflow.com/questions/18453566/dictionary-get-list-of-values-for-list-of-keys&quot; target=&quot;_blank&quot; papago-id=&quot;44-1&quot;&gt;dictionary-get-list-of-values-for-list-of-keys&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/415</guid>
      <comments>https://copysource.tistory.com/415#entry415comment</comments>
      <pubDate>Fri, 3 Feb 2023 23:21:26 +0900</pubDate>
    </item>
    <item>
      <title>웹 사이트 favicon 동적 변경</title>
      <link>https://copysource.tistory.com/414</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;웹 사이트 favicon 동적 변경&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;페이지의 favicon을 프라이빗 라벨의 로고로 변경하고 싶은데 코드나 예를 찾을 수 없습니다.&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;폴더에 12개의 아이콘이 있는 것을 상상하고 있으며, 사용하는 favicon.ico 파일의 참조는 HTML 페이지와 함께 동적으로 생성됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;생각?&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;왜 안 되나요?&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var link = document.querySelector(&quot;link[rel~='icon']&quot;);
if (!link) {
    link = document.createElement('link');
    link.rel = 'icon';
    document.getElementsByTagName('head')[0].appendChild(link);
}
link.href = 'https://stackoverflow.com/favicon.ico';
&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;다음은 Firefox, Opera 및 Chrome에서 작동하는 코드입니다(여기에 게시된 다른 모든 답변과 달리).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://www.enhanceie.com/test/favicon/dynamic.htm&quot; rel=&quot;noreferrer&quot; papago-id=&quot;4-1&quot;&gt;IE11에서도 동작하는 코드의 데모를 다음&lt;/a&gt;에 나타냅니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음 예는 Safari 또는 Internet Explorer에서 작동하지 않을 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;/*!
 * Dynamically changing favicons with JavaScript
 * Works in all A-grade browsers except Safari and Internet Explorer
 * Demo: http://mathiasbynens.be/demo/dynamic-favicons
 */

// HTML5™, baby! http://mathiasbynens.be/notes/document-head
document.head = document.head || document.getElementsByTagName('head')[0];

function changeFavicon(src) {
 var link = document.createElement('link'),
     oldLink = document.getElementById('dynamic-favicon');
 link.id = 'dynamic-favicon';
 link.rel = 'shortcut icon';
 link.href = src;
 if (oldLink) {
  document.head.removeChild(oldLink);
 }
 document.head.appendChild(link);
}
&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;var btn = document.getElementsByTagName('button')[0];
btn.onclick = function() {
 changeFavicon('http://www.google.com/favicon.ico');
};
&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;a href=&quot;http://gist.github.com/428626&quot; rel=&quot;noreferrer&quot; papago-id=&quot;6-0&quot;&gt;포크&lt;/a&gt;를 &lt;a href=&quot;http://mathiasbynens.be/demo/dynamic-favicons&quot; rel=&quot;noreferrer&quot; papago-id=&quot;6-2&quot;&gt;이동하거나 데모를 봅니다&lt;/a&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;다음의 HTML 스니펫이 있는 경우:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;link id=&quot;favicon&quot; rel=&quot;shortcut icon&quot; type=&quot;image/png&quot; href=&quot;favicon.png&quot; /&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;예를 들어 JQuery를 사용하는 경우, 이 링크의 HREF 요소를 변경하여 Javascript를 사용하여 favicon을 변경할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;#favicon&quot;).attr(&quot;href&quot;,&quot;favicon2.png&quot;);
&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;a href=&quot;http://www.p01.org/releases/DHTML_contests/files/DEFENDER_of_the_favicon/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;9-1&quot;&gt;또한 Favicon&lt;/a&gt; Defender와 마찬가지로 캔버스 요소를 만들고 HREF를 캔버스의 ToDataURL()로 설정할 수도 있습니다.&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;jQuery 버전:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;link[rel='shortcut icon']&quot;).attr(&quot;href&quot;, &quot;favicon.ico&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;$(&quot;link[rel*='icon']&quot;).attr(&quot;href&quot;, &quot;favicon.ico&quot;);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Vanilla JS 버전:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;document.querySelector(&quot;link[rel='shortcut icon']&quot;).href = &quot;favicon.ico&quot;;

document.querySelector(&quot;link[rel*='icon']&quot;).href = &quot;favicon.ico&quot;;
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;보다 현대적인 접근법:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;const changeFavicon = link =&amp;gt; {
  let $favicon = document.querySelector('link[rel=&quot;icon&quot;]')
  // If a &amp;lt;link rel=&quot;icon&quot;&amp;gt; element already exists,
  // change its href to the given link.
  if ($favicon !== null) {
    $favicon.href = link
  // Otherwise, create a new element and append it to &amp;lt;head&amp;gt;.
  } else {
    $favicon = document.createElement(&quot;link&quot;)
    $favicon.rel = &quot;icon&quot;
    $favicon.href = link
    document.head.appendChild($favicon)
  }
}
&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;changeFavicon(&quot;http://www.stackoverflow.com/favicon.ico&quot;)
&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;여기 favicon을 이모티콘 또는 텍스트로 만들기 위한 작은 조각이 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;스택 오버플로우일 때 콘솔에서 동작합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;function changeFavicon(text) {
  const canvas = document.createElement('canvas');
  canvas.height = 64;
  canvas.width = 64;
  const ctx = canvas.getContext('2d');
  ctx.font = '64px serif';
  ctx.fillText(text, 0, 64);

  const link = document.createElement('link');
  const oldLinks = document.querySelectorAll('link[rel=&quot;shortcut icon&quot;]');
  oldLinks.forEach(e =&amp;gt; e.parentNode.removeChild(e));
  link.id = 'dynamic-favicon';
  link.rel = 'shortcut icon';
  link.href = canvas.toDataURL();
  document.head.appendChild(link);
}

changeFavicon('❤️');
&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;favicon은 다음과 같이 헤드 태그에 선언됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;link rel=&quot;shortcut icon&quot; type=&quot;image/ico&quot; href=&quot;favicon.ico&quot;&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;보기 데이터에서 원하는 아이콘의 이름을 전달하고 헤드 태그에 넣을 수 있습니다.&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 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;IE(사파리)&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;으로 Chrome은  Chrome)가 업데이트될 때만 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;iframe&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;pre&gt;&lt;code&gt;var IE = navigator.userAgent.indexOf(&quot;MSIE&quot;)!=-1
var favicon = {
    change: function(iconURL) {
        if (arguments.length == 2) {
            document.title = optionalDocTitle}
        this.addLink(iconURL, &quot;icon&quot;)
        this.addLink(iconURL, &quot;shortcut icon&quot;)

        // Google Chrome HACK - whenever an IFrame changes location 
        // (even to about:blank), it updates the favicon for some reason
        // It doesn't work on Safari at all though :-(
        if (!IE) { // Disable the IE &quot;click&quot; sound
            if (!window.__IFrame) {
                __IFrame = document.createElement('iframe')
                var s = __IFrame.style
                s.height = s.width = s.left = s.top = s.border = 0
                s.position = 'absolute'
                s.visibility = 'hidden'
                document.body.appendChild(__IFrame)}
            __IFrame.src = 'about:blank'}},

    addLink: function(iconURL, relValue) {
        var link = document.createElement(&quot;link&quot;)
        link.type = &quot;image/x-icon&quot;
        link.rel = relValue
        link.href = iconURL
        this.removeLinkIfExists(relValue)
        this.docHead.appendChild(link)},

    removeLinkIfExists: function(relValue) {
        var links = this.docHead.getElementsByTagName(&quot;link&quot;);
        for (var i=0; i&amp;lt;links.length; i++) {
            var link = links[i]
            if (link.type == &quot;image/x-icon&quot; &amp;amp;&amp;amp; link.rel == relValue) {
                this.docHead.removeChild(link)
                return}}}, // Assuming only one match at most.

    docHead: document.getElementsByTagName(&quot;head&quot;)[0]}
&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;favicon을하려면 favicon으로 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;favicon.change(&quot;ICON URL&quot;)&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font 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;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(이 코드에 대해서는, http://softwareas.com/&lt;a href=&quot;http://softwareas.com/dynamic-favicons&quot; rel=&quot;noreferrer&quot; papago-id=&quot;22-1&quot;&gt;dynamic-favicons&lt;/a&gt; 를 참조해 주세요).&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또는 이모티콘을 원하는 경우:)&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var canvas = document.createElement(&quot;canvas&quot;);
canvas.height = 64;
canvas.width = 64;

var ctx = canvas.getContext(&quot;2d&quot;);
ctx.font = &quot;64px serif&quot;;
ctx.fillText(&quot;☠️&quot;, 0, 64); 

$(&quot;link[rel*='icon']&quot;).prop(&quot;href&quot;, canvas.toDataURL());
&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;https&lt;a href=&quot;https://koddsson.com/posts/emoji-favicon/&quot; papago-id=&quot;24-1&quot; rel=&quot;noreferrer&quot;&gt;://&lt;/a&gt;koddsson.com/posts/&lt;a href=&quot;https://koddsson.com/posts/emoji-favicon/&quot; papago-id=&quot;24-1&quot; rel=&quot;noreferrer&quot;&gt;emoji-favicon&lt;/a&gt;/에 대한 소품&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것을 IE에 유효하게 하는 유일한 방법은 *.ico 요청을 처리하도록 웹 서버를 설정하고 서버 측 스크립트 언어(PHP, .NET 등)를 호출하는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 *.ico를 셋업하여 단일 스크립트로 리다이렉트하고 이 스크립트가 올바른 favicon 파일을 전송하도록 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;같은 브라우저에서 다른 favicon 사이를 왔다 갔다 할 수 있다면 캐시에 대한 흥미로운 문제가 있을 것입니다.&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;Greg의 어프로치를 사용하고, favicon.ico용의 커스텀 핸들러를 작성합니다(간단화) 핸들러는 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;using System;
using System.IO;
using System.Web;

namespace FaviconOverrider
{
    public class IcoHandler : IHttpHandler
    {
    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = &quot;image/x-icon&quot;;
        byte[] imageData = imageToByteArray(context.Server.MapPath(&quot;/ear.ico&quot;));
        context.Response.BinaryWrite(imageData);
    }

    public bool IsReusable
    {
        get { return true; }
    }

    public byte[] imageToByteArray(string imagePath)
    {
        byte[] imageByteArray;
        using (FileStream fs = new FileStream(imagePath, FileMode.Open, FileAccess.Read))
        {
        imageByteArray = new byte[fs.Length];
        fs.Read(imageByteArray, 0, imageByteArray.Length);
        }

        return imageByteArray;
    }
    }
}
&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;그런 다음 IIS6에서 웹 구성의 httpHandlers 섹션에서 해당 핸들러를 사용하거나 IIS7에서 'Handler Mappings' 기능을 사용할 수 있습니다.&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;jQuery를 사용하는 사용자를 위한 단일 라인 솔루션이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;link[rel*='icon']&quot;).prop(&quot;href&quot;,'https://www.stackoverflow.com/favicon.ico');
&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;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;이제 Chrome은 SVG favicon을 지원하므로 훨씬 더 쉬워졌습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;h2 papago-id=&quot;31&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Tampermonkey 스크립트&lt;/font&gt;&lt;/h2&gt; 
&lt;p papago-id=&quot;32&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;https&lt;a href=&quot;https://elliz.github.io/svg-favicon/&quot; papago-id=&quot;32-3&quot; rel=&quot;nofollow noreferrer&quot;&gt;://&lt;/a&gt;gist.github.com/elliz/&lt;a href=&quot;https://elliz.github.io/svg-favicon/&quot; papago-id=&quot;32-3&quot; rel=&quot;nofollow noreferrer&quot;&gt;bb7661d8ed1535c93d03afcd0609360f&lt;/a&gt;에서 검색한 데모 사이트를 가리키는 탬퍼몬키 스크립트는 https://gist.github.com/elliz/&lt;a href=&quot;https://gist.github.com/elliz/bb7661d8ed1535c93d03afcd0609360f&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;32-1&quot;&gt;bb7661d8ed1535c93d03afcd0609360f&lt;/a&gt;에서 확인할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;h2 papago-id=&quot;33&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;34&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-js prettyprint-override&quot;&gt;&lt;code&gt;(function() {
    'use strict';

    // play with https://codepen.io/elliz/full/ygvgay for getting it right
    // viewBox is required but does not need to be 16x16
    const svg = `
    &amp;lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 16 16&quot;&amp;gt;
      &amp;lt;circle cx=&quot;8&quot; cy=&quot;8&quot; r=&quot;7.2&quot; fill=&quot;gold&quot; stroke=&quot;#000&quot; stroke-width=&quot;1&quot; /&amp;gt;
      &amp;lt;circle cx=&quot;8&quot; cy=&quot;8&quot; r=&quot;3.1&quot; fill=&quot;#fff&quot; stroke=&quot;#000&quot; stroke-width=&quot;1&quot; /&amp;gt;
    &amp;lt;/svg&amp;gt;
    `;

    var favicon_link_html = document.createElement('link');
    favicon_link_html.rel = 'icon';
    favicon_link_html.href = svgToDataUri(svg);
    favicon_link_html.type = 'image/svg+xml';

    try {
        let favicons = document.querySelectorAll('link[rel~=&quot;icon&quot;]');
        favicons.forEach(function(favicon) {
            favicon.parentNode.removeChild(favicon);
        });

        const head = document.getElementsByTagName('head')[0];
        head.insertBefore( favicon_link_html, head.firstChild );
    }
    catch(e) { }

    // functions -------------------------------
    function escapeRegExp(str) {
        return str.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, &quot;\\$1&quot;);
    }

    function replaceAll(str, find, replace) {
        return str.replace(new RegExp(escapeRegExp(find), 'g'), replace);
    }

    function svgToDataUri(svg) {
        // these may not all be needed - used to be for uri-encoded svg in old browsers
        var encoded = svg.replace(/\s+/g, &quot; &quot;)
        encoded = replaceAll(encoded, &quot;%&quot;, &quot;%25&quot;);
        encoded = replaceAll(encoded, &quot;&amp;gt; &amp;lt;&quot;, &quot;&amp;gt;&amp;lt;&quot;); // normalise spaces elements
        encoded = replaceAll(encoded, &quot;; }&quot;, &quot;;}&quot;); // normalise spaces css
        encoded = replaceAll(encoded, &quot;&amp;lt;&quot;, &quot;%3c&quot;);
        encoded = replaceAll(encoded, &quot;&amp;gt;&quot;, &quot;%3e&quot;);
        encoded = replaceAll(encoded, &quot;\&quot;&quot;, &quot;'&quot;); // normalise quotes ... possible issues with quotes in &amp;lt;text&amp;gt;
        encoded = replaceAll(encoded, &quot;#&quot;, &quot;%23&quot;); // needed for ie and firefox
        encoded = replaceAll(encoded, &quot;{&quot;, &quot;%7b&quot;);
        encoded = replaceAll(encoded, &quot;}&quot;, &quot;%7d&quot;);
        encoded = replaceAll(encoded, &quot;|&quot;, &quot;%7c&quot;);
        encoded = replaceAll(encoded, &quot;^&quot;, &quot;%5e&quot;);
        encoded = replaceAll(encoded, &quot;`&quot;, &quot;%60&quot;);
        encoded = replaceAll(encoded, &quot;@&quot;, &quot;%40&quot;);
        var dataUri = 'data:image/svg+xml;charset=UTF-8,' + encoded.trim();
        return dataUri;
    }

})();
&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;자신의 SVG(툴을 사용하는 경우 Jake Archibald의 SVGOMG로 클리닝)를 맨 위에 있는 경찰서에 삽입하기만 하면 됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;viewBox 속성을 사용하여 정사각형인지 확인하고 바로 사용할 수 있는지 확인하십시오.&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;대부분의 경우 favicon은 이렇게 선언됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;link rel=&quot;icon&quot; href&quot;....&quot; /&amp;gt;
&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 class=&quot;lang-js prettyprint-override&quot;&gt;&lt;code&gt;const linkElement = document.querySelector('link[rel=icon]');
&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;linkElement.href = 'url/to/any/picture/remote/or/relative';
&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;a href=&quot;http://en.wikipedia.org/wiki/Favicon&quot; papago-id=&quot;39-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;WikiPedia&lt;/a&gt;에 따르면 로드하는 favicon 파일을 지정할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;link&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;를 달다&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;head&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;는 「」)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;rel=&quot;icon&quot;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;43&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; &amp;lt;link rel=&quot;icon&quot; type=&quot;image/png&quot; href=&quot;/path/image.png&quot;&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;p papago-id=&quot;45&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;파일 형식이 잘못될 수 있습니다(IE는 파일 형식만 지원합니다).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;ICO 포맷, 그 외의 대부분은 PNG 및 GIF 이미지를 지원하며 브라우저와 프록시를 통해 문제를 캐싱할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이는 favicon의 원래 반복 때문이며, 특히 사이트의 미니로고로 북마크를 표시하기 위한 것입니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;strong papago-id=&quot;46&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;네, 충분히 가능합니다.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li papago-id=&quot;47&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;favicon.ico 뒤에 &lt;strong papago-id=&quot;47-1&quot;&gt;쿼리&lt;/strong&gt; 문자열을 사용합니다(및 기타 파일 링크 - 아래 응답 링크 참조).&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;48&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;서버가 올바른 이미지 파일(스태틱라우팅 규칙 &lt;strong papago-id=&quot;48-3&quot;&gt;또는&lt;/strong&gt; 다이내믹서버측 코드)로 「someUserId」에 응답하고 있는 것을 확인하기만 하면 됩니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p papago-id=&quot;49&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;link rel=&quot;shortcut icon&quot; href=&quot;/favicon.ico?userId=someUserId&quot;&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;50&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;어떤 &lt;em papago-id=&quot;50-1&quot;&gt;서버&lt;/em&gt; 측 &lt;em papago-id=&quot;50-1&quot;&gt;언어/&lt;/em&gt;프레임워크를 &lt;em papago-id=&quot;50-1&quot;&gt;사용&lt;/em&gt;하든 &lt;em papago-id=&quot;50-3&quot;&gt;userId를 기반으로 파일&lt;/em&gt;을 쉽게 검색하여 &lt;em papago-id=&quot;50-5&quot;&gt;요청에 따라&lt;/em&gt; 제공할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;51&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;51-0&quot;&gt;그러나 favicon&lt;/strong&gt;(실제로 매우 &lt;em papago-id=&quot;51-3&quot;&gt;복잡한&lt;/em&gt; 주제)을 제대로 &lt;strong papago-id=&quot;51-0&quot;&gt;하려면&lt;/strong&gt; , https://&lt;a href=&quot;https://stackoverflow.com/a/45301651/661584&quot; papago-id=&quot;51-5&quot;&gt;stackoverflow&lt;/a&gt;.com/a/45301651/661584 를 참조해 주세요.&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;strong papago-id=&quot;52-0&quot;&gt;모든&lt;/strong&gt; 세부사항을 스스로 해결하는 것보다 &lt;strong papago-id=&quot;52-0&quot;&gt;훨씬&lt;/strong&gt; 쉬워요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;53&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;즐거운 시간 되세요.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;54&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;프로젝트에는 &lt;a href=&quot;http://lab.ejci.net/favico.js/&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;54-1&quot;&gt;favico.js&lt;/a&gt;를 사용합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;55&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Favicon을 사전 정의된 도형 범위 및 사용자 정의 도형으로 변경할 수 있습니다.&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;canvas&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;base64&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;아이콘 인코딩용 데이터 URL.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;59&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;라이브러리에는 아이콘 배지와 애니메이션도 있습니다.웹캠 비디오를 아이콘으로 스트리밍할 수도 있다고 합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;60&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;2021년에 Chrome에서 제안된 솔루션을 테스트한 결과, 링크가 변경되어도 브라우저가 favicon을 캐시하고 변경을 표시하지 않는 경우가 있습니다.&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;이 코드는 동작했습니다(이전 제안과 유사하지만 캐시를 피하기 위해 임의 매개 변수를 추가합니다).&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;let oldFavicon = document.getElementById('favicon')
var link = document.createElement('link')
link.id = 'favicon';
link.type = 'image/x-icon'
link.rel = 'icon';
link.href = new_favicon_url +'?=' + Math.random();
if (oldFavicon) {
    document.head.removeChild(oldFavicon);
}
document.head.appendChild(link);
&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;https&lt;a href=&quot;https://gist.github.com/mathiasbynens/428626#gistcomment-1809869&quot; papago-id=&quot;62-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;://&lt;/a&gt;gist.github.com/&lt;a href=&quot;https://gist.github.com/mathiasbynens/428626#gistcomment-1809869&quot; papago-id=&quot;62-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;mathiasbynens&lt;/a&gt;/428626#gistcomment-1809869에서 복사하여 다른 사용자가 같은 문제를 겪고 있는 경우&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;63&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/260857/&lt;a href=&quot;https://stackoverflow.com/questions/260857/changing-website-favicon-dynamically&quot; target=&quot;_blank&quot; papago-id=&quot;63-1&quot;&gt;changing-website-favicon-dynamically&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/414</guid>
      <comments>https://copysource.tistory.com/414#entry414comment</comments>
      <pubDate>Fri, 3 Feb 2023 23:20:30 +0900</pubDate>
    </item>
    <item>
      <title>Numpy 어레이 치수</title>
      <link>https://copysource.tistory.com/413</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Numpy 어레이 치수&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;예를 들어, 이것은 2x2 입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;a = np.array([[1,2],[3,4]])
&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;&amp;gt;&amp;gt;&amp;gt; a.shape
(2, 2)
&lt;/code&gt;&lt;/pre&gt;&lt;h2 papago-id=&quot;3&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;관례상 Python world의 숏컷은&lt;/font&gt;&lt;/font&gt;&lt;code&gt;numpy&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;np&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;In [1]: import numpy as np

In [2]: a = np.array([[1,2],[3,4]])
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2 papago-id=&quot;7&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;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Numpy에서 &lt;strong papago-id=&quot;8-1&quot;&gt;치수&lt;/strong&gt;, &lt;strong papago-id=&quot;8-3&quot;&gt;축/축&lt;/strong&gt;, &lt;strong papago-id=&quot;8-5&quot;&gt;모양&lt;/strong&gt;은 관련이 있으며 때로는 유사한 개념입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;h3 papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;치수&lt;/font&gt;&lt;/h3&gt; 
&lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;em papago-id=&quot;10-1&quot;&gt;수학/물리학&lt;/em&gt;에서 치수 또는 치수성은 공간 내의 점을 지정하는 데 필요한 최소 좌표 수로 비공식적으로 정의됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://docs.scipy.org/doc/numpy/user/quickstart.html#the-basics&quot; papago-id=&quot;10-5&quot; rel=&quot;noreferrer&quot;&gt;하지만&lt;/a&gt; Numpy의 경우, &lt;a href=&quot;https://docs.scipy.org/doc/numpy/user/quickstart.html#the-basics&quot; papago-id=&quot;10-5&quot; rel=&quot;noreferrer&quot;&gt;Numpy&lt;/a&gt; 문서에 따르면 축/축과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Numpy에서는 치수를 축이라고 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;축의 수는 순위입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;pre&gt;&lt;code&gt;In [3]: a.ndim  # num of dimensions/axes, *Mathematics definition of dimension*
Out[3]: 2
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3 papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;축/축&lt;/font&gt;&lt;/h3&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;인덱스하기 &lt;em papago-id=&quot;13-1&quot;&gt;위한&lt;/em&gt; n번째 좌표&lt;/font&gt;&lt;/font&gt;&lt;code&gt;array&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Numpy로 표시됩니다.&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 [4]: a[1,0]  # to index `a`, we specific 1 at the first axis and 0 at the second axis.
Out[4]: 3  # which results in 3 (locate at the row 1 and column 0, 0-based index)
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3 papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모양.&lt;/font&gt;&lt;/h3&gt; 
&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;에 사용 가능한 각 축의 데이터 수(또는 범위)를 나타냅니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;In [5]: a.shape
Out[5]: (2, 2)  # both the first and second axis have 2 (columns/rows/pages/blocks/...) data
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;import numpy as np   
&amp;gt;&amp;gt;&amp;gt; np.shape(a)
(2,2)
&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;입력이 numpy 배열이 아니라 목록 목록인 경우에도 작동합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; a = [[1,2],[1,2]]
&amp;gt;&amp;gt;&amp;gt; np.shape(a)
(2,2)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;아니면 튜플이 더 많거나&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; a = ((1,2),(1,2))
&amp;gt;&amp;gt;&amp;gt; np.shape(a)
(2,2)
&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;.shape&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;pre&gt;&lt;code&gt;In: a = np.array([[1,2,3],[4,5,6]])
In: a.shape
Out: (2, 3)
In: a.shape[0] # x axis
Out: 2
In: a.shape[1] # y axis
Out: 3
&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;.ndim&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;.shape&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;gt;&amp;gt;&amp;gt; var = np.array([[1,2,3,4,5,6], [1,2,3,4,5,6]])

&amp;gt;&amp;gt;&amp;gt; var.ndim
2

&amp;gt;&amp;gt;&amp;gt; varshape
(2, 6) 
&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;.reshape&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;&amp;gt;&amp;gt;&amp;gt; var_ = var.reshape(3, 4)

&amp;gt;&amp;gt;&amp;gt; var_.ndim
2

&amp;gt;&amp;gt;&amp;gt; var_.shape
(3, 4)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그&lt;/font&gt;&lt;/font&gt;&lt;code&gt;shape&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;a&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Numpy ndarray 입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 Numpy는 순수한 비단뱀 물체의 반복 가능한 모양도 계산할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;np.shape([[1,2],[1,2]])
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;a.shape&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;np.info()&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;pre&gt;&lt;code&gt;import numpy as np
a = np.array([[1,2],[1,2]])
np.info(a)
&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;class:  ndarray
shape:  (2, 2)
strides:  (8, 4)
itemsize:  4
aligned:  True
contiguous:  True
fortran:  False
data pointer: 0x27509cf0560
byteorder:  little
byteswap:  False
type: int32
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;rows = a.shape[0] # 2 
cols = a.shape[1] # 2
a.shape #(2,2)
a.size # rows * cols = 4
&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;python 노트북에서 아래 코드 블록을 실행합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import numpy as np
a = np.array([[1,2],[1,2]])
print(a.shape)
print(type(a.shape))
print(a.shape[0])
&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;blockquote&gt; 
 &lt;p papago-id=&quot;34&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(2, 2)&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;35&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&amp;lt;클래스 '태플'&amp;gt;&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;2&lt;/p&gt; 
&lt;/blockquote&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;a.shape&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;태플입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 당신은 어떤 차원의 사이즈도 얻을 수 있습니다&lt;/font&gt;&lt;/font&gt;&lt;code&gt;a.shape[index of dimention]&lt;/code&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;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/3061761/&lt;a href=&quot;https://stackoverflow.com/questions/3061761/numpy-array-dimensions&quot; target=&quot;_blank&quot; papago-id=&quot;38-1&quot;&gt;numpy-array-dimensions&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/413</guid>
      <comments>https://copysource.tistory.com/413#entry413comment</comments>
      <pubDate>Fri, 3 Feb 2023 23:19:33 +0900</pubDate>
    </item>
    <item>
      <title>Comparator.reversed()는 lambda를 사용하여 컴파일하지 않습니다.</title>
      <link>https://copysource.tistory.com/412</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Comparator.reversed()는 lambda를 사용하여 컴파일하지 않습니다.&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;일부 사용자 객체가 포함된 목록이 있으며 목록을 정렬하려고 하지만 메서드 참조를 통해서만 작동합니다. lambda 식에서는 컴파일러가 오류를 표시합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;List&amp;lt;User&amp;gt; userList = Arrays.asList(u1, u2, u3);
userList.sort(Comparator.comparing(u -&amp;gt; u.getName())); // works
userList.sort(Comparator.comparing(User::getName).reversed()); // works
userList.sort(Comparator.comparing(u -&amp;gt; u.getName()).reversed()); // Compiler error
&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;com\java8\collectionapi\CollectionTest.java:35: error: cannot find symbol
            userList.sort(Comparator.comparing(u -&amp;gt; u.getName()).reversed());
                                                     ^
symbol:   method getName()
location: variable u of type Object
1 error
&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&gt;&lt;font class=&quot;papago-parent&quot;&gt;의 유형을 추론하기 위해&lt;/font&gt;&lt;/font&gt;&lt;code&gt;u&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;em papago-id=&quot;4-1&quot;&gt;목표값&lt;/em&gt; 유형을 설정해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 다음과 같이 이루어집니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/font&gt;&lt;code&gt;userList.sort()&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;Comparator&amp;lt;User&amp;gt;&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;Comparator.comparing()&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;Comparator&amp;lt;User&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&gt;&lt;/font&gt;&lt;code&gt;Comparator.comparing()&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;Function&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;User&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;논쟁.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 첫 번째 줄의 람다에서는&lt;/font&gt;&lt;/font&gt;&lt;code&gt;u&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;User&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&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;reversed()&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;reversed()&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;Comparator&amp;lt;T&amp;gt;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 타깃 타입은 리시버에게 전파되어야 할 것 같은데 그렇지 않다.(말씀 드렸듯이 약점입니다)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;두 번째 줄에서 메서드 참조는 이 공백을 메우는 추가 유형 정보를 제공합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 정보는 세 번째 줄에 없기 때문에 컴파일러는 다음과 같이 추론합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;u&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;Object&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;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;font class=&quot;papago-parent&quot;&gt;이 경우 람다에 명시적 매개변수 유형을 제공합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;userList.sort(Comparator.comparing((User u) -&amp;gt; u.getName()).reversed());
&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&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;2개의 인수를 사용하여 이 제한을 회피할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Comparator.comparing&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;와 함께&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Comparator.reverseOrder()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;20&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;두 번째 인수:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;users.sort(comparing(User::getName, reverseOrder()));
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;현상금이 수여된 인정되고 상향 투표된 답변과는 달리, 이것은 람다와는 전혀 관련이 없다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음 컴파일은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Comparator&amp;lt;LocalDate&amp;gt; dateComparator = naturalOrder();
Comparator&amp;lt;LocalDate&amp;gt; reverseComparator = dateComparator.reversed();
&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;Comparator&amp;lt;LocalDate&amp;gt; reverseComparator = naturalOrder().reversed();
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;21&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이는 컴파일러의 유형 추론 메커니즘이 두 단계를 동시에 수행할 수 있을 만큼 강력하지 않기 때문입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;reversed()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;method call needs type 파라미터&lt;/font&gt;&lt;/font&gt;&lt;code&gt;LocalDate&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;naturalOrder()&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;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;/p&gt; 
&lt;pre&gt;&lt;code&gt;Comparator&amp;lt;LocalDate&amp;gt; reverseComparator = Comparator.&amp;lt;LocalDate&amp;gt;naturalOrder().reversed();
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;34&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;질문의 예에서는 다음과 같이 됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;userList.sort(Comparator.comparing&amp;lt;User, String&amp;gt;(u -&amp;gt; u.getName()).reversed());
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;25&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 현재  있는에서 알 수 가 타입을 하는 데 이 되는 것은 .&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;User&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;26&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;★★★★★★★★★★★★★★★★의 경우&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;comparing&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;27&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 메서드콜은 이으로 지정하거나 할 수도 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;User::getName&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;User&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;29&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;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; 방식 &quot; &quot; &quot;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Collections.reverseOrder(Comparator&amp;lt;T&amp;gt;)&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;31&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;가장 우아한 해결책인 것 같습니다.&lt;/font&gt;&lt;/font&gt;&lt;font 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;Comparator.reverseOrder()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;32&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;T는 동등한 것을 구현하고 자연스러운 정렬 순서에 의존해야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;Collections.reverseOrder(Comparator&amp;lt;T&amp;gt;)&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&gt;&lt;code&gt;T&lt;/code&gt;&lt;/p&gt;&lt;p papago-id=&quot;44&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/25172595/&lt;a href=&quot;https://stackoverflow.com/questions/25172595/comparator-reversed-does-not-compile-using-lambda&quot; target=&quot;_blank&quot; papago-id=&quot;44-1&quot;&gt;comparator-reversed-does-not-compile-using-lambda&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>programing</category>
      <author>copysource</author>
      <guid isPermaLink="true">https://copysource.tistory.com/412</guid>
      <comments>https://copysource.tistory.com/412#entry412comment</comments>
      <pubDate>Fri, 3 Feb 2023 23:18:51 +0900</pubDate>
    </item>
  </channel>
</rss>