<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>lovepro</title>
    <link>https://lovepro.tistory.com/</link>
    <description>각종 프로그래밍 정보를 다루는 블로그입니다.</description>
    <language>ko</language>
    <pubDate>Tue, 12 May 2026 17:29:29 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>lovepro</managingEditor>
    <image>
      <title>lovepro</title>
      <url>https://tistory1.daumcdn.net/tistory/4241307/attach/9d83265facc14d2eaeaca60cb139b841</url>
      <link>https://lovepro.tistory.com</link>
    </image>
    <item>
      <title>수원시 영통구 야간 운영 약국 [2024년 7월 기준]</title>
      <link>https://lovepro.tistory.com/964</link>
      <description>&lt;h2 data-ke-size='size26'&gt;&lt;span style='color: #666666;'&gt;&lt;i&gt;&lt;b&gt;&lt;span&gt;약국에 방문하시기 전에 필히 확인 전화 후 방문 바랍니다!&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p data-ke-size='size16'&gt;&amp;nbsp;&lt;/p&gt;&lt;ul style='list-style-type: disc;'&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;한일약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 효원로 397, 중앙프라자 107호 (매탄동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-217-6869&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 16:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;매탄우리들약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 효원로 387, 풍성프라자 103호 (매탄동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-215-7845&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 15:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;사랑약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 효원로 387, 108호 (매탄동,풍성프라자)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-213-0095&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 14:30&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;온누리새소망약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 효원로 381, 103호 (매탄동, 새롬프라자)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-217-6571&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 19:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;슬림약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 태장로 84&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-206-2330&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 16:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;엘지약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 태장로 83, 엘지프라자 106호 (망포동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-202-1207&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:30&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;정약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 태장로 73&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-206-8929&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;시온누리약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 청명남로 40 1층 104호 (영통동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-206-3838&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 22:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;하나로약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 중부대로448번길 100&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-213-3998&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 14:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;메디팜유신약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 중부대로246번길 48-2 (매탄동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-215-2752&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;광교우리들약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 중부대로 437, 1층 (원천동, 홈플러스)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;070-8848-0388&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;10:00 ~ 21:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;10:00 ~ 21:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;10:00 ~ 21:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;10:00 ~ 21:30&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;본약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 중부대로 293-3, 101호 (원천동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-212-9566&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 16:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;혜민약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 중부대로 268&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-211-7150&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 16:30&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;시티팜대학약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 중부대로 259 (원천동,예스프라자)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-211-4722&lt;/li&gt;&lt;li&gt;&lt;b&gt;설명 : &lt;/b&gt;○ 약국&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 14:30&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;씨티팜대학약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 중부대로 259&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-211-4722&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;13:00 ~ 21:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;정다운약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 중부대로 250-1, 1층 (매탄동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-212-6633&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 16:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;삼성메디약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 인계로 264, (매탄동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-217-2273&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 19:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;신원약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 인계로 218 (매탄동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-212-2332&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:00 ~ 19:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;12:00 ~ 19:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;망포약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 영통로90번길 4-2, (망포동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-202-8929&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 18:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;11:00 ~ 19:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;11:00 ~ 18:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;영통약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 영통로290번길 23, 103 (영통동,신나무실주공 가상가)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-203-0809&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 16:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;이레약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 영통로214번길 8, 1층 (영통동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-204-2772&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:30 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:30 ~ 15:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;봄빛약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 영통로154번길 74, B03호 (망포동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-204-7996&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 16:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;9:00 ~ 16:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 16:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;황골온누리약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 영통로 509&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-202-7106&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 16:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;9:00 ~ 12:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 12:30&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;영통주민약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 영통로 460&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-204-6855&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 18:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;한우리약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 영통로 151 (망포동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-205-4194&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 23:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 23:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;9:00 ~ 23:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 23:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;참약사순수약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 에듀타운로 102, 광교중앙역 SK VIEW B동 139호 (이의동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-8019-8690&lt;/li&gt;&lt;li&gt;&lt;b&gt;설명 : &lt;/b&gt;안녕하세요. 광교중앙역 SK VIEW 오피스텔 B동 1층에 위치한 365일 연중무휴로 운영되는 참약사순수약국입니다.
저희 약국은 처방 조제는 물론 다양한 일반약, 건강기능식품, 동물약을 취급하고 있고, 성심성의껏 건강 상담을 해드리고 있습니다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:20 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:20 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;10:50 ~ 19:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;광교대림약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 센트럴타운로 94, 앤에스코어빌딩 106호 (이의동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-214-2234&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 17:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;광교중앙약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 센트럴타운로 85, 지하1층 (이의동, 광교C1 호반베르디움, Summit Place광교)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-215-8797&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;10:00 ~ 21:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;광교프라자약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 센트럴타운로 106, 132호 (이의동, 센트럴프라자)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;070-7733-0730&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 17:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;9:00 ~ 14:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 14:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;신영약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 삼성로 2 , 1층 (신동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-204-3835&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;10:00 ~ 22:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;10:00 ~ 22:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;10:00 ~ 22:40&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;한림약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 봉영로1770번길 21, 122호(영통동,한국신명상가)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-203-1441&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 16:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;아이맘약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 봉영로1759번길 28&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-205-2037&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 16:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;메디팜다솜약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 봉영로 1767, 107,108호 (영통동,한솔프라자)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-206-2020&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 16:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;이층약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 봉영로 1623, 206-1호 (영통동, 드림피아빌딩)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-206-6110&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;영통메디칼약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 봉영로 1569, 105호 (영통동, 뉴월드프라자)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-204-9181&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 20:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;15:00 ~ 20:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;15:00 ~ 20:30&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;굿모닝약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 반달로 21, 101,103~106호(영통동,매직프라자)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-205-4156&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:30 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:30 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;10:00 ~ 22:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;메디칼수약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 반달로 105, 101호 (영통동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-206-7566&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;채약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 매여울로53번길 50-16 (매탄동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-211-1133&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;12:00 ~ 22:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;한성약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 동탄원천로1109번길 37&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-211-0823&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 16:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;건강나누리약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 동수원로537번길 15-4, 1층(원천동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-214-6985&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 16:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;중앙메디칼약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 동수원로 520, (매탄동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-212-2249&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;도청약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 도청로18번길 26, 힐스테이트광교중앙역 128호 (이의동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-211-1826&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 16:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;9:00 ~ 14:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;쓰담쓰담약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 도청로17번길 40, 103호 (이의동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-255-3434&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;10:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;10:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;10:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;10:00 ~ 21:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;호수약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 도청로17번길 10&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-212-7579&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 17:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;10:00 ~ 14:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;유약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 덕영대로1483번길 14, 1층 (망포동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-205-9287&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 15:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;반가워,약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 덕영대로 1689 (영통동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-204-3297&lt;/li&gt;&lt;li&gt;&lt;b&gt;설명 : &lt;/b&gt;약국&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;10:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;10:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;12:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;10:00 ~ 22:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;365자연약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 덕영대로 1503 (영통동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-202-3696&lt;/li&gt;&lt;li&gt;&lt;b&gt;설명 : &lt;/b&gt;수원 영통 망포역 4번출구 인근에 위치한 365일 연중무휴 365자연약국입니다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 23:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;10:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;10:00 ~ 20:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;어서오세요 약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 덕영대로 1478, 망포역 포레 스퀘어 3층 311호 (망포동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-000-0000&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;10:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;10:00 ~ 15:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;공감약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 덕영대로 1470, 망포역 플래티넘베이스 115호 (망포동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;050-713-5384&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 16:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;광교 백두산 온누리 약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 대학로 56 (이의동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;0312131442&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 16:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;포근약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 권선로908번길 25, 103호 (신동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-203-7975&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:30 ~ 20:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;광교약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 광교호수공원로 277, B2층 28,29호 (원천동, 중흥 S-클래스)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-304-2019&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;토닥토닥약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 광교중앙로266번길 30, 109호 (하동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-8025-0303&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;12:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;10:30 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;12:00 ~ 22:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;365별약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 수원시 영통구 광교중앙로 170, 광교 효성해링턴 타워 3층 311호 (하동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-212-1705&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;9:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 22:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/ul&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;출처) 공공데이터 국립중앙의료원 전국 약국 정보 조회 서비스 &lt;img src='https://www.data.go.kr/images/biz/use-info/img_opencode1_m.jpg'/&gt;</description>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/964</guid>
      <comments>https://lovepro.tistory.com/964#entry964comment</comments>
      <pubDate>Tue, 16 Jul 2024 21:43:20 +0900</pubDate>
    </item>
    <item>
      <title>경기도 동두천시 야간 운영 약국 [2024년 7월 기준]</title>
      <link>https://lovepro.tistory.com/963</link>
      <description>&lt;h2 data-ke-size='size26'&gt;&lt;span style='color: #666666;'&gt;&lt;i&gt;&lt;b&gt;&lt;span&gt;약국에 방문하시기 전에 필히 확인 전화 후 방문 바랍니다!&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p data-ke-size='size16'&gt;&amp;nbsp;&lt;/p&gt;&lt;ul style='list-style-type: disc;'&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;서진약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 동두천시 평화로2930번길 2(상봉암동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;0318614205&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;한독약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 동두천시 평화로 2456, (생연동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-865-4135&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;장수온누리약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 동두천시 평화로 2297 (지행동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-857-1888&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 15:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;건강당약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 동두천시 큰시장로 43, 삼풍빌딩 (생연동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-864-7575&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;8:30 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;8:30 ~ 22:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;메디칼약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 동두천시 큰시장로 37&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-861-5586&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 21:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 21:30&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;지행온누리약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 동두천시 지행로 59, 102호 지행온누리약국 (지행동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-864-1475&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;10:00 ~ 18:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;10:00 ~ 18:30&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;영약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 동두천시 지행로 56&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-868-4334&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 16:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;365약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 동두천시 지행로 53, 1층 (지행동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-858-4435&lt;/li&gt;&lt;li&gt;&lt;b&gt;설명 : &lt;/b&gt;동두천 롭스(LOHBs) 매장과 장소를 공유하여 운영하는 약국입니다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 16:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;9:00 ~ 15:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 15:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;은혜약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 동두천시 지행로 51, 1층 103호 (지행동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-857-7582&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 16:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;9:00 ~ 16:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 16:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;지행약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 동두천시 지행로 50, 성지에스앤비타워 114,115호 (지행동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-857-3579&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 22:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;새빛약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 동두천시 지행로 49, 청솔프라자 1층 101호 (지행동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;0318610243&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 16:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 16:30&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;청주중앙약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 동두천시 중앙로285번길 9, (생연동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-865-2223&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 21:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 21:30&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;연세온누리약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 동두천시 중앙로 305 (생연동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-862-3155&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:00 ~ 17:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;종근당약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 동두천시 중앙로 274 (생연동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-865-2208&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:30 ~ 20:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:30 ~ 20:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;동두천메디슨약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 동두천시 중앙로 269 (생연동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-863-5586&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 18:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;유명온누리약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 동두천시 중앙로 267 (생연동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-861-3201&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 17:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;9:00 ~ 18:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;필약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 동두천시 중앙로 112  (지행동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-858-2280&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 17:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 13:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;세명약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 동두천시 정장로 33 (생연동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-861-0866&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 15:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;10:00 ~ 13:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;건일약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 동두천시 동광로 55 (생연동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-865-2568&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 21:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 21:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;8:30 ~ 21:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;8:30 ~ 21:30&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/ul&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;출처) 공공데이터 국립중앙의료원 전국 약국 정보 조회 서비스 &lt;img src='https://www.data.go.kr/images/biz/use-info/img_opencode1_m.jpg'/&gt;</description>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/963</guid>
      <comments>https://lovepro.tistory.com/963#entry963comment</comments>
      <pubDate>Tue, 16 Jul 2024 21:41:09 +0900</pubDate>
    </item>
    <item>
      <title>전라남도 해남군 야간 운영 약국 [2024년 7월 기준]</title>
      <link>https://lovepro.tistory.com/962</link>
      <description>&lt;h2 data-ke-size='size26'&gt;&lt;span style='color: #666666;'&gt;&lt;i&gt;&lt;b&gt;&lt;span&gt;약국에 방문하시기 전에 필히 확인 전화 후 방문 바랍니다!&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p data-ke-size='size16'&gt;&amp;nbsp;&lt;/p&gt;&lt;ul style='list-style-type: disc;'&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;농민약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;전라남도 해남군 해남읍 중앙2로 51&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;061-536-3136&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:00 ~ 15:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;8:00 ~ 15:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;해남온누리약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;전라남도 해남군 해남읍 중앙1로 2-14, 103호 (해남읍)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;061-535-7506&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:00 ~ 24:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:00 ~ 14:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;해오름약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;전라남도 해남군 해남읍 남부순환로 5, 정하메디컬센터 1층 101호&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;061-537-2500&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:00 ~ 13:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;9:00 ~ 17:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/ul&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;출처) 공공데이터 국립중앙의료원 전국 약국 정보 조회 서비스 &lt;img src='https://www.data.go.kr/images/biz/use-info/img_opencode1_m.jpg'/&gt;</description>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/962</guid>
      <comments>https://lovepro.tistory.com/962#entry962comment</comments>
      <pubDate>Tue, 16 Jul 2024 21:39:44 +0900</pubDate>
    </item>
    <item>
      <title>경기도 오산시 야간 운영 약국 [2024년 7월 기준]</title>
      <link>https://lovepro.tistory.com/961</link>
      <description>&lt;h2 data-ke-size='size26'&gt;&lt;span style='color: #666666;'&gt;&lt;i&gt;&lt;b&gt;&lt;span&gt;약국에 방문하시기 전에 필히 확인 전화 후 방문 바랍니다!&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p data-ke-size='size16'&gt;&amp;nbsp;&lt;/p&gt;&lt;ul style='list-style-type: disc;'&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;소명약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 한신대길 117, 소명빌딩 101호 (양산동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-378-5999&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 15:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 15:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;시온약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 청학로173번길 18, (수청동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-375-4715&lt;/li&gt;&lt;li&gt;&lt;b&gt;설명 : &lt;/b&gt;유동적이니 전화하고 이용&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 21:30&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;아인온누리약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 청학로 238, 홈플러스 2층 (수청동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-372-4710&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;10:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;10:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;10:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;10:00 ~ 22:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;신종로약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 운천로 76, 101호 (오산동, 한마음빌딩)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-375-9633&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 22:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;하이팜약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 운암로 92&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-373-7522&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 16:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;두레약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 운암로 91&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-377-8264&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 15:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;한솔약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 운암로 124, 씨월드프라자 101,102호 (부산동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-377-8676&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;10:00 ~ 16:30&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;지혜약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 오산로62번길 2 (갈곶동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-375-9882&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 22:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;사랑약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 오산로 79, 106호 (갈곶동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-375-6535&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 14:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;다나약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 오산로 70, (갈곶동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-374-2878&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 23:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 23:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;10:00 ~ 23:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;기쁨약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 오산로 349, 죽산빌딩 1층 (궐동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-378-3893&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 16:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 13:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;튼튼약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 오산로 305, 1층, 2층 (오산동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-372-6634&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 18:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;대원약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 오산로 300, (오산동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-374-4443&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;8:30 ~ 18:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;배타민약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 오산로 241-1 (오산동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-373-6083&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 19:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;보광온누리약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 오산로 209, (오산동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-373-1729&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 18:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;참소망약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 오산로 12 (갈곶동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-378-6354&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:30&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;홍약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 역광장로 55, 동일빌딩 1층 102,103호 (오산동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-373-7763&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;원약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 수청로 201&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;070-4038-2706&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 13:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;가온약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 수청로 199, 정원프라자 102호 (금암동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-373-9901&lt;/li&gt;&lt;li&gt;&lt;b&gt;설명 : &lt;/b&gt;금암동약국, 일요일약국, 동물약국&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 15:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;11:00 ~ 18:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;세교온누리약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 수청로 189, 106,107호 (금암동, 웅신아트프라자)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-377-4862&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 19:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;세마약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 수목원로 618, 1층 106호 (세교동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-376-3494&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;10:00 ~ 18:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;10:00 ~ 18:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;센느약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 수목원로 466, 1층 104호 (금암동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-376-4569&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 20:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;8:30 ~ 18:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;8:30 ~ 13:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;세교중앙약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 수목원로 458 (금암동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-376-8570&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 19:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 13:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;시장약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 성호새싹길 33&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-373-7780&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;성심온누리약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 성호대로 78, 1층 (오산동, 성심약국)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-373-2906&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 18:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;참사랑약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 성호대로 75 (오산동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-377-7030&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;9:00 ~ 22:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;남촌약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 성호대로 35 (오산동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-374-5230&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;센타약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 성호대로 122&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-372-5131&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 21:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;11:00 ~ 21:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;모범약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 성호대로 121, 305호(오산동,월드타워)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-373-7963&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 18:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;오산중앙약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 성호대로 113,&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-372-5520&lt;/li&gt;&lt;li&gt;&lt;b&gt;설명 : &lt;/b&gt;주말 유동적&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;시티약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 부산중앙로 25-6, 106,107호 (부산동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-375-0289&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 17:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;다사랑온누리약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 발안로 1367&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;070-7724-6865&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;베스트약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 발안로 1356-3, 1층 (누읍동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-377-1812&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;신세기약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 발안로 1353-8&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-378-8052&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 18:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;9:00 ~ 12:30&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;크로바약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 밀머리로1번길 18, 102~103호(원동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;070-8600-8536&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 14:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;솔약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 동부대로 355, 1층 (고현동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-378-7582&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;태평양약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 대원로 6&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-372-8210&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;미소약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 대원로 34 (원동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-375-4798&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:30 ~ 20:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:30 ~ 17:30&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;명약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 대원로 3, (오산동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-378-6669&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 19:30&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;광장약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 대원로 2 (원동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-375-8747&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;21세기동규약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 대원로 1 (오산동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-374-2943&lt;/li&gt;&lt;li&gt;&lt;b&gt;설명 : &lt;/b&gt;전국 병,의원 처방약 구비.1000여종의 일반약,한방약 완비.&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;12:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;12:00 ~ 21:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;동산약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 내삼미로79번길 11, 206호 (수청동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-378-0948&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 14:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;10:00 ~ 14:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;10:00 ~ 14:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;자민약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 내삼미로 93, 1층 108호 (수청동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-376-7558&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:00 ~ 16:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 13:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;푸른약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 궐리사로 57&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-377-9907&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;명문약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 궐리사로 37&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-378-1646&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 13:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;봄날약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 궐리사로 34, 백충빌딩 102호 (궐동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-378-5206&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 18:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;판도라봄약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 경기대로 534, 1층 105호 (수청동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-376-6171&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 18:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;오산온누리약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 경기대로 271&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-376-1865&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;10:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;10:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;10:00 ~ 22:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;서울무지개약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 경기대로 209, 209 (원동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-378-7937&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 18:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;마더스약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 경기대로 181 (원동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-378-1638&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;10:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;10:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;10:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;10:00 ~ 22:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;늘푸른온누리약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 경기대로 155, 108,109,110호 (원동, 신한프라자A)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-376-4601&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 15:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;믿음약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 경기대로 154, 302-1호 (원동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;070-7655-7780&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 20:15&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 13:40&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;9:00 ~ 15:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 18:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;우리들약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 경기대로 154, 111호 (원동, 패션폴라리스)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-372-6377&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:00 ~ 16:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;365열린약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경기도 오산시 경기대로 133, 오렌지팩토리아울렛 1층 102호 (원동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;031-374-0360&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;8:30 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;8:30 ~ 22:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/ul&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;출처) 공공데이터 국립중앙의료원 전국 약국 정보 조회 서비스 &lt;img src='https://www.data.go.kr/images/biz/use-info/img_opencode1_m.jpg'/&gt;</description>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/961</guid>
      <comments>https://lovepro.tistory.com/961#entry961comment</comments>
      <pubDate>Tue, 16 Jul 2024 21:38:41 +0900</pubDate>
    </item>
    <item>
      <title>경상북도 상주시 야간 운영 약국 [2024년 7월 기준]</title>
      <link>https://lovepro.tistory.com/960</link>
      <description>&lt;h2 data-ke-size='size26'&gt;&lt;span style='color: #666666;'&gt;&lt;i&gt;&lt;b&gt;&lt;span&gt;약국에 방문하시기 전에 필히 확인 전화 후 방문 바랍니다!&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p data-ke-size='size16'&gt;&amp;nbsp;&lt;/p&gt;&lt;ul style='list-style-type: disc;'&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;약원한약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경상북도 상주시 화서면 화령로 90, 2층&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;054-536-1186&lt;/li&gt;&lt;li&gt;&lt;b&gt;설명 : &lt;/b&gt;01034561186&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;10:00 ~ 20:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;천일약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경상북도 상주시 풍물시장길 49 (남성동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;054-535-4510&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;7:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;7:00 ~ 18:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;7:00 ~ 18:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;국보당약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경상북도 상주시 상산로 271 (남성동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;054-536-4777&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:00 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;상주종합약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경상북도 상주시 상산로 266, (남성동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;054-532-7599&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 15:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;8:30 ~ 13:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;백화점약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경상북도 상주시 상산로 263 (남성동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;054-535-7637&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 18:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;8:30 ~ 17:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;경동메디칼약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경상북도 상주시 상산로 251 (남성동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;054-534-6055&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;7:50 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;7:50 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;7:50 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;7:50 ~ 21:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;상주대한약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경상북도 상주시 상산로 241 (남성동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;0545345888&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;8:30 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;8:30 ~ 21:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;태평양약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경상북도 상주시 동수로 161, 1층 (무양동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;054-536-6668&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;8:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;8:00 ~ 21:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;대웅프라자약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경상북도 상주시 낙동면 영남제일로 86&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;054-533-2276&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:00 ~ 18:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;13:00 ~ 18:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;낙동약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경상북도 상주시 낙동면 영남제일로 110&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;054-533-1793&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;행림약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;경상북도 상주시 경상대로 3023-1  (무양동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;054-533-5578&lt;/li&gt;&lt;li&gt;&lt;b&gt;설명 : &lt;/b&gt;상주시 보건소 후문옆에 있습니다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 20:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 13:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/ul&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;출처) 공공데이터 국립중앙의료원 전국 약국 정보 조회 서비스 &lt;img src='https://www.data.go.kr/images/biz/use-info/img_opencode1_m.jpg'/&gt;</description>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/960</guid>
      <comments>https://lovepro.tistory.com/960#entry960comment</comments>
      <pubDate>Tue, 16 Jul 2024 21:30:54 +0900</pubDate>
    </item>
    <item>
      <title>충청남도 서천군 야간 운영 약국 [2024년 7월 기준]</title>
      <link>https://lovepro.tistory.com/959</link>
      <description>&lt;h2 data-ke-size='size26'&gt;&lt;span style='color: #666666;'&gt;&lt;i&gt;&lt;b&gt;&lt;span&gt;약국에 방문하시기 전에 필히 확인 전화 후 방문 바랍니다!&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p data-ke-size='size16'&gt;&amp;nbsp;&lt;/p&gt;&lt;ul style='list-style-type: disc;'&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;화신약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;충청남도 서천군 장항읍 장항로 132&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;041-956-0405&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 18:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;9:00 ~ 16:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 16:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;정약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;충청남도 서천군 장항읍 성주로 6&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;050-71426-0994&lt;/li&gt;&lt;li&gt;&lt;b&gt;설명 : &lt;/b&gt;동물의약품 취급합니다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;12:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;12:00 ~ 20:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;서천세안약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;충청남도 서천군 서천읍 서천로 167 (서천읍)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;041-952-3111&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;10:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;10:00 ~ 20:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;진성약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;충청남도 서천군 서면 춘장대로 3&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;041-952-1510&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:00 ~ 21:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:00 ~ 21:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;12:00 ~ 22:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;하구둑약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;충청남도 서천군 마서면 장산로 851&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;041-956-8920&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:30 ~ 20:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:30 ~ 20:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;9:30 ~ 20:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:30 ~ 20:30&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/ul&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;출처) 공공데이터 국립중앙의료원 전국 약국 정보 조회 서비스 &lt;img src='https://www.data.go.kr/images/biz/use-info/img_opencode1_m.jpg'/&gt;</description>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/959</guid>
      <comments>https://lovepro.tistory.com/959#entry959comment</comments>
      <pubDate>Tue, 16 Jul 2024 21:28:33 +0900</pubDate>
    </item>
    <item>
      <title>충청남도 부여군 야간 운영 약국 [2024년 7월 기준]</title>
      <link>https://lovepro.tistory.com/958</link>
      <description>&lt;h2 data-ke-size='size26'&gt;&lt;span style='color: #666666;'&gt;&lt;i&gt;&lt;b&gt;&lt;span&gt;약국에 방문하시기 전에 필히 확인 전화 후 방문 바랍니다!&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p data-ke-size='size16'&gt;&amp;nbsp;&lt;/p&gt;&lt;ul style='list-style-type: disc;'&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;제일약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;충청남도 부여군 부여읍 성왕로 198, 1층&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;041-835-3115&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;9:00 ~ 19:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 19:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;농민약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;충청남도 부여군 부여읍 성왕로 189&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;041-837-7582&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 14:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 18:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;고려약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;충청남도 부여군 부여읍 성왕로 183,&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;041-835-6670&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;8:00 ~ 13:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;부여규암약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;충청남도 부여군 규암면 흥수로 878, 218동 1층 106호 (부여센트럴휴엔하임)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;041-833-1530&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 21:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 21:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;8:30 ~ 21:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;8:30 ~ 21:30&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/ul&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;출처) 공공데이터 국립중앙의료원 전국 약국 정보 조회 서비스 &lt;img src='https://www.data.go.kr/images/biz/use-info/img_opencode1_m.jpg'/&gt;</description>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/958</guid>
      <comments>https://lovepro.tistory.com/958#entry958comment</comments>
      <pubDate>Tue, 16 Jul 2024 21:26:17 +0900</pubDate>
    </item>
    <item>
      <title>충청남도 공주시 야간 운영 약국 [2024년 7월 기준]</title>
      <link>https://lovepro.tistory.com/957</link>
      <description>&lt;h2 data-ke-size='size26'&gt;&lt;span style='color: #666666;'&gt;&lt;i&gt;&lt;b&gt;&lt;span&gt;약국에 방문하시기 전에 필히 확인 전화 후 방문 바랍니다!&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p data-ke-size='size16'&gt;&amp;nbsp;&lt;/p&gt;&lt;ul style='list-style-type: disc;'&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;현대약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;충청남도 공주시 유구읍 중앙1길 96,&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;041-841-2074&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;8:30 ~ 21:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;건생약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;충청남도 공주시 유구읍 중앙1길 55-1&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;041-841-0588&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:40 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:40 ~ 16:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;9:10 ~ 13:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 15:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;건강약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;충청남도 공주시 유구읍 석남외마루길 3,&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;041-841-3259&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 16:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;수정약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;충청남도 공주시 웅진로 209 (산성동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;041-855-4055&lt;/li&gt;&lt;li&gt;&lt;b&gt;설명 : &lt;/b&gt;병원 닫는 시간에 따라 달라짐&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;8:00 ~ 20:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;솔약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;충청남도 공주시 용당길 15-1, 솔약국 (산성동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;041-855-6034&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;8:00 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;8:00 ~ 20:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;종로약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;충청남도 공주시 신금2길 34 (신관동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;041-881-0110&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 22:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;공주바른약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;충청남도 공주시 신관로 54, 1층 (신관동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;041-858-5196&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 17:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 18:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;을지약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;충청남도 공주시 번영2로 18-11&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;041-855-1413&lt;/li&gt;&lt;li&gt;&lt;b&gt;설명 : &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;8:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;8:00 ~ 21:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;한솔약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;충청남도 공주시 번영1로 161 (신관동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;041-856-7186&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 22:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 16:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;일등약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;충청남도 공주시 번영1로 124&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;041-858-5533&lt;/li&gt;&lt;li&gt;&lt;b&gt;설명 : &lt;/b&gt;연중무휴 아침8시반부터 밤11시까지 운영합니다&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 23:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 23:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;8:30 ~ 23:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;8:30 ~ 23:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;새희망약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;충청남도 공주시 백제문화로 2157, 청실마트 상가동 1층 101,102호호 (웅진동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;041-854-8524&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 19:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;10:00 ~ 19:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;시민약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;충청남도 공주시 백제문화로 2157, 1층 103,104호 (웅진동, 청실A상가동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;041-857-3456&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 21:30&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 18:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 18:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;동학사약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;충청남도 공주시 반포면 동학사1로 133&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;042-826-6488&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;일요일 진료시간 : &lt;/b&gt;9:30 ~ 18:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 21:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;span style='background-color: rgb(31, 175, 218); color: rgb(255, 255, 255); font-size: 14pt;'&gt;&lt;b&gt;금강약국&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;li&gt;&lt;b&gt;주소 : &lt;/b&gt;충청남도 공주시 공주대학로 96, (신관동)&lt;/li&gt;&lt;li&gt;&lt;b&gt;대표전화 : &lt;/b&gt;041-855-2993&lt;/li&gt;&lt;li&gt;&lt;b&gt;월요일(평일) 진료시간 : &lt;/b&gt;8:30 ~ 21:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;토요일 진료시간 : &lt;/b&gt;8:30 ~ 20:00&lt;/li&gt;&lt;li&gt;&lt;b&gt;공휴일 진료시간 : &lt;/b&gt;9:00 ~ 20:00&lt;/li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/ul&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;출처) 공공데이터 국립중앙의료원 전국 약국 정보 조회 서비스 &lt;img src='https://www.data.go.kr/images/biz/use-info/img_opencode1_m.jpg'/&gt;</description>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/957</guid>
      <comments>https://lovepro.tistory.com/957#entry957comment</comments>
      <pubDate>Tue, 16 Jul 2024 21:23:37 +0900</pubDate>
    </item>
    <item>
      <title>파일 내용에서 변수 확장</title>
      <link>https://lovepro.tistory.com/956</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;파일 내용에서 변수 확장&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;파일이 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;template.txt&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;Hello ${something}
&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;파일을 읽고 템플릿의 변수를 확장하는 PowerShell 스크립트를 만들고 싶습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$something = &quot;World&quot;
$template = Get-Content template.txt
# replace $something in template file with current value
# of variable in script -&amp;gt; get Hello World
&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;다른 옵션은 ExpandString()을 사용하는 것입니다. 예:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$expanded = $ExecutionContext.InvokeCommand.ExpandString($template)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;호출-표현식도 작동합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나, 조심하세요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;두 옵션 모두 임의 코드를 실행할 수 있습니다. 예를 들어 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;# Contents of file template.txt
&quot;EvilString&quot;;$(remove-item -whatif c:\ -r -force -confirm:$false -ea 0)

$template = gc template.txt
iex $template # could result in a bad day
&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;실수로 코드를 실행할 가능성이 없는 &quot;안전한&quot; 문자열 평가를 원하는 경우 PowerShell 작업과 제한된 실행 공간을 결합하여 다음과 같은 작업을 수행할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;PS&amp;gt; $InitSB = {$ExecutionContext.SessionState.Applications.Clear(); $ExecutionContext.SessionState.Scripts.Clear(); Get-Command | %{$_.Visibility = 'Private'}}
PS&amp;gt; $SafeStringEvalSB = {param($str) $str}
PS&amp;gt; $job = Start-Job -Init $InitSB -ScriptBlock $SafeStringEvalSB -ArgumentList '$foo (Notepad.exe) bar'
PS&amp;gt; Wait-Job $job &amp;gt; $null
PS&amp;gt; Receive-Job $job
$foo (Notepad.exe) bar
&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;이제 cmdlet을 사용하는 문자열에서 식을 사용하려고 하면 다음 명령이 실행되지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;PS&amp;gt; $job = Start-Job -Init $InitSB -ScriptBlock $SafeStringEvalSB -ArgumentList '$foo $(Start-Process Notepad.exe) bar'
PS&amp;gt; Wait-Job $job &amp;gt; $null
PS&amp;gt; Receive-Job $job
$foo $(Start-Process Notepad.exe) bar
&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;명령을 시도할 경우 오류가 발생하려면 $ExecutionContext를 사용합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;명령을 호출합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;String을 확장하여 $str 매개 변수를 확장합니다.&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;$something = &quot;World&quot;
$template = Get-Content template.txt
$expanded = Invoke-Expression &quot;`&quot;$template`&quot;&quot;
$expanded
&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;PS가 변수를 평가하고 템플릿에 포함된 모든 명령을 실행한다는 것을 기억하면서, 저는 이것을 하는 다른 방법을 찾았습니다.&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;템플릿 파일의 변수 대신 토큰을 직접 구성합니다. HTML을 처리하지 않을 경우 예를 들어 사용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&amp;lt;variable&amp;gt;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이와 같이:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Hello &amp;lt;something&amp;gt;
&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;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 PS 스크립트에서 다음을 사용합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$something = &quot;World&quot;
$template = Get-Content template.txt -Raw
# replace &amp;lt;something&amp;gt; in template file with current value
# of variable in script -&amp;gt; get Hello World    
$template=$template.Replace(&quot;&amp;lt;something&amp;gt;&quot;,$something)
&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;스트레이트업된 InvokeCommand보다 번거롭지만 단순 템플릿을 처리할 때 보안 위험을 피하기 위해 제한된 실행 환경을 설정하는 것보다 더 명확합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;요구사항에 따른 YMMV :-)&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/1667023/&lt;a href=&quot;https://stackoverflow.com/questions/1667023/expanding-variables-in-file-contents&quot; target=&quot;_blank&quot; papago-id=&quot;17-1&quot;&gt;expanding-variables-in-file-contents&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/956</guid>
      <comments>https://lovepro.tistory.com/956#entry956comment</comments>
      <pubDate>Wed, 30 Aug 2023 23:54:28 +0900</pubDate>
    </item>
    <item>
      <title>WCF: 시스템.Net.SocketException - 각 소켓 주소(프로토콜/네트워크 주소/포트)는 일반적으로 하나만 사용할 수 있습니다.</title>
      <link>https://lovepro.tistory.com/955</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;WCF: 시스템.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Net.SocketException - 각 소켓 주소(프로토콜/네트워크 주소/포트)는 일반적으로 하나만 사용할 수 있습니다.&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;저는 WCF 서비스와 웹 애플리케이션을 가지고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;웹 응용 프로그램은 폴링과 같은 지속적인 방식으로 이 WCF 서비스에 호출합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;당사의 생산 환경에서는 이러한 오류가 거의 발생하지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이는 사용자가 이 오류가 발생할 때 인식하지 못한 내부 활동이기 때문입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;http&lt;a href=&quot;http://localhost/QAService/Service.svc&quot; rel=&quot;noreferrer&quot; papago-id=&quot;2-1&quot;&gt;://localhost/QAService/Service.svc에 연결&lt;/a&gt;할 수 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;TCP 오류 코드 10048:&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;각 소켓 주소(프로토콜/네트워크 주소/포트)는 일반적으로 하나만 사용할 수 있습니다. 127.0.0.1:80. ---&amp;gt; 시스템.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Net.WebException:&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&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;각 소켓 주소(프로토콜/네트워크 주소/포트)는 일반적으로 하나만 사용할 수 있습니다. 127.0.0.1:80&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;개발/QA 환경에서 이러한 동작을 재현하는 데 어려움을 겪고 있습니다.&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;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;참고: &lt;a href=&quot;https://stackoverflow.com/questions/828864/continuous-rapid-calls-to-wcf-service-returns-a-only-one-usage-of-each-socket-a&quot; papago-id=&quot;4-2&quot;&gt;저&lt;/a&gt;는 이 SO 질문을 살펴보았지만, 제 문제에 답하지 않는 것 같아서 반복되는 질문이 &lt;strong papago-id=&quot;4-0&quot;&gt;아닙니다&lt;/strong&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;TCP/IP 스택을 오버로드하고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Windows(및 실제로 모든 소켓 스택)는 정상 작동 시 소켓이 닫히는 방식으로 인해 빠른 순서로 열 수 있는 소켓 수에 제한이 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;소켓이 닫힐 때마다 특정 시간(240초 IIRC) 동안 TIME_WAIT 상태가 됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;폴링할 때마다 소켓이 기본 동적 범위(1024 바로 위에 있는 동적 포트 약 5000개)를 벗어나며 폴링이 종료될 때마다 해당 소켓이 TIME_WAIT에 들어갑니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;충분히 자주 폴링하면 사용 가능한 포트를 모두 사용하게 되어 TCP 오류 10048이 발생합니다.&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;일반적으로 WCF는 연결 풀링 등을 통해 이 문제를 피하려고 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;일반적으로 인터넷을 사용하지 않는 내부 서비스의 경우가 이에 해당합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;연결 풀링을 지원하는 wsHttp 바인딩이 있는지는 모르겠지만 netTcp 바인딩이 지원해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;명명된 파이프는 이 문제에 부딪히지 않는다고 생각합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;MSMQ 바인딩에 대해 말할 수 없었습니다.&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;동적 포트 범위를 늘리거나 TIME_WAIT 기간을 줄일 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;전자가 더 안전한 경로일 수도 있지만 (시나리오와 달리) 소켓을 너무 많이 사용하는 경우 TIME_WAIT을 줄이는 것이 더 나은 선택사항입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;동적 포트 범위 변경&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;regedit을 엽니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;HKLM\System\열기 키&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;현재 제어 세트\서비스&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;\Tcpip\매개 변수&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;MaxUserPort 값을 편집하거나 DWORD로 만듭니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;더 큰 숫자로 설정합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;(예: 65534)&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&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;TIME_WAIT 지연 변경&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;regedit을 엽니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;HKLM\System\열기 키&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;현재 제어 세트\서비스&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;\Tcpip\매개 변수&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;TcpTimedWaitDelay를 편집하거나 DWORD로 만듭니다.&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;더 낮은 숫자로 설정합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;값은 초 단위입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;(예: 60(1분 지연)&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;위의 해결책 중 하나가 문제를 해결해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;포트 범위를 변경한 후에도 계속 유지된다면 폴링 기간을 늘려 자주 발생하지 않도록 할 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것은 당신이 대기 지연 시간에 일할 수 있는 더 많은 여유를 줄 것입니다.&lt;/font&gt;&lt;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;HttpClient는 ID 일회용 공유 개체를 구현하지만 인스턴스 수를 최대한 줄여야 합니다.&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;a href=&quot;http://aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/&quot; papago-id=&quot;20-1&quot; rel=&quot;noreferrer&quot;&gt; &lt;/a&gt;http://aspnetmonsters.com/2016/08/&lt;a href=&quot;http://aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/&quot; papago-id=&quot;20-1&quot; rel=&quot;noreferrer&quot;&gt;2016-08-27-httpclientwrong&lt;/a&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/1339142/&lt;a href=&quot;https://stackoverflow.com/questions/1339142/wcf-system-net-socketexception-only-one-usage-of-each-socket-address-protoco&quot; target=&quot;_blank&quot; papago-id=&quot;21-1&quot;&gt;wcf-system-net-socketexception-only-one-usage-of-each-socket-address-protoco&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/955</guid>
      <comments>https://lovepro.tistory.com/955#entry955comment</comments>
      <pubDate>Wed, 30 Aug 2023 23:50:38 +0900</pubDate>
    </item>
    <item>
      <title>VBA(Excel)에서 Bash 스크립트를 호출하는 방법</title>
      <link>https://lovepro.tistory.com/954</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;VBA(Excel)에서 Bash 스크립트를 호출하는 방법&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;어떻게 실행합니까?&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;bash&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; OSX에서  VBA 파일&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;나는 다음 코드를 시도했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;location = FolderPath(ThisWorkBook.FullName) 
&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;Shell(location &amp;amp;&quot;runmybatch.sh&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;bash 스크립트가 excel 스프레드시트와 동일한 폴더 안에 있기 때문에 이렇게 했습니다.&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;ol&gt; 
 &lt;li papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;셸 &lt;strong papago-id=&quot;8-1&quot;&gt;함수&lt;/strong&gt;는 경로가 /가&lt;strong papago-id=&quot;8-5&quot;&gt; &lt;/strong&gt;아닌 &lt;strong papago-id=&quot;8-3&quot;&gt;:&lt;/strong&gt;로 구분되어야 합니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;스크립트가 실행되면 루트(/) 디렉토리가 작업 디렉토리로 사용됩니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그 외에는 &lt;strong papago-id=&quot;10-1&quot;&gt;Shell&lt;/strong&gt; 명령을 사용하여 bash 스크립트를 실행할 수 있어야 합니다.&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;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;데스크톱 디렉토리에 다음 bash 스크립트를 생성하고 &lt;strong papago-id=&quot;11-1&quot;&gt;테스트 &lt;/strong&gt;이름을 지정합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;11-1&quot;&gt;sh&lt;/strong&gt;:&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
 &lt;pre&gt;&lt;code&gt;#!/bin/bash
open /Applications/Calculator.app/
&lt;/code&gt;&lt;/pre&gt; 
&lt;/blockquote&gt; 
&lt;ul&gt; 
 &lt;li papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;테스트를 확인합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;sh는 실행 파일입니다(터미널 창에서 &lt;strong papago-id=&quot;12-1&quot;&gt;chmod +x&lt;/strong&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;strong papago-id=&quot;12-1&quot;&gt;sh&lt;/strong&gt;) s)&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;실행해 보십시오(Terminal에 &lt;strong papago-id=&quot;13-1&quot;&gt;./test&lt;/strong&gt;.sh 입력).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;계산기 앱이 나타납니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;거기서 나가요.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Excel을 실행하고 새 워크북 &lt;strong papago-id=&quot;14-1&quot;&gt;워크북&lt;/strong&gt; 1을 만듭니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 빈 워크북을 &lt;strong papago-id=&quot;15-1&quot;&gt;바탕&lt;/strong&gt; 화면 디렉토리에 매크로 &lt;strong papago-id=&quot;15-3&quot;&gt;사용&lt;/strong&gt; 워크북으로 저장&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;VB:&lt;strong papago-id=&quot;16-1&quot;&gt; 도구&lt;/strong&gt; &amp;gt;&lt;strong papago-id=&quot;16-1&quot;&gt; 매크로&lt;/strong&gt; &amp;gt; &lt;strong papago-id=&quot;16-1&quot;&gt;Visual Basic&lt;/strong&gt; Editor 실행&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;바로가기 창이 뜨지 않으면 &lt;strong papago-id=&quot;17-1&quot;&gt;View &lt;/strong&gt;&amp;gt; &lt;strong papago-id=&quot;17-1&quot;&gt;Immediate&lt;/strong&gt; Window&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;바로 가기 창에서 다음 VBA 코드를 입력합니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
 &lt;pre&gt;&lt;code&gt; Shell ActiveWorkbook.Path &amp;amp; &quot;:test.sh&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;/blockquote&gt; 
&lt;ul&gt; 
 &lt;li papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;계산기 앱이 실행되어야 합니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt;&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;셸 명령어에 대한 운이 없었지만, Excel 2011의 애플스크립트를 통해 다음과 같은 이점이 있었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;script_s = &quot;do shell script &quot;&quot;/Users/user/path/to/script/rubyscript_09.rb&quot;&quot;&quot;
MacScript script_s
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;' 대의본에 '는셰을뱅 '사저할 '의 가 있다는 을 알게 되었습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;#!/usr/bin/env ruby&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;manager 후)(Ruby 버전설치후자리관)후)&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;FilePathName_s = ThisWorkbook.Path &amp;amp; &quot;:subfolder:filename&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 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;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;/&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;do shell script&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; Script, Apple Script로 할 수.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;quoted form of POSIX path of FilePathName_s&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; 는또 VBA 께함과 .&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;FilePathName_s = &quot;/&quot; &amp;amp; Replace(FilePathName_s, &quot;:&quot;, &quot;/&quot;)&lt;/code&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;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;처음에는 Joel의 훌륭한 튜토리얼이 저에게 도움이 되지 않았습니다(OS X 10.11.6 및 Mac용 Excel 2011).&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;잠시 후, 저는 제 문제가 제 스크립트 파일인 test.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;sh 의 &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;ls -l test.sh&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;산출량:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;  -rwxr-xr-x@ 1 tgk  staff  456 Mar 16 13:12 test.sh
&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;속성의 .&quot;&lt;/font&gt;&lt;/font&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 class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;추가 정보는 호출을 통해 제공됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ls -l@ test.sh&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음과 같은 결과:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;-rwxr-xr-x@ 1 tgk  staff  456 Mar 16 13:12 test.sh
      com.apple.FinderInfo   32 
      com.apple.TextEncoding     15
&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 class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;즉, 파일이 생성된 방법에 따라 확장 속성을 가질 수도 있고 가지지 않을 수도 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 그서확장속제성다거니습했을래된▁attrib▁extended다utes▁via▁the▁so▁off를 통해 확장된 속성을 제거했습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;xattr -c test.sh&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 조엘의 전화가 왔습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Shell ActiveWorkbook.Path &amp;amp; &quot;:test.sh&quot;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;완벽하게 작동했습니다!&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font 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;____&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;에 확장  셸 를 저장하는 을 알게 .&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;defaults write com.barebones.textwrangler WriteExtendedAttributes never&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 class=&quot;papago-parent&quot;&gt;그러나 이는 다음과 같은 기능을 추가하는 것을 방지할 뿐입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;com.apple.FinderInfo&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;com.apple.TextEncoding&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;특성이 남아 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 다행히도, 이제 Joel의 VBA Script 명령은 셸 스크립트가 단지 다음과 같은 경우에 작동합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;com.apple.TextEncoding&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 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;그래서, Text Wrangler는 저를 위한 편집자입니다!&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;41&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;FolderPath 명령어를 사용하지 않았는데, 사용할 수 없는 것 같으니 나중에 사용할 수 없는 이유를 알아보겠습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;아래는 OSX Excel에서 .sh 파일을 실행할 수 있는지 확인하기 위해 테스트한 샘플 코드입니다.&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;테스트할 때 사용한 .sh 파일이 바탕 화면에 배치되었으며 &quot;open /Applications/Calculator.app&quot;이라는 행만 포함되어 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;43&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;OSX의 Excel에서 .sh를 호출하는 VBA 코드는 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Dim DesktopFolder As String
DesktopFolder = MacScript(&quot;return (path to desktop folder) as string&quot;)

Dim ScriptFile As String
ScriptFile = DesktopFolder &amp;amp; &quot;test.sh&quot;

RetVal = Shell(ScriptFile, vbNormalFocus)
&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;특정 폴더에서만 작동하는지 확인하기로 했기 때문에 .sh 파일을 /tmp 폴더로 이동했지만 파일을 실행할 수 없었습니다. 경로를 어떻게 인코딩하든 &quot;file not found errors&quot;(파일을 찾을 수 없음 오류)가 발생했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;마침내 OSX의 /tmp 파일이 /private/tmp에 매핑되는 심볼 링크라는 것을 알게 되었고, 제가 그 경로를 사용했을 때 모든 것이 다시 정상적으로 작동하는 것처럼 보였습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Dim ScriptFile As String
ScriptFile = &quot;Macintosh HD:private:tmp:test.sh&quot;
RetVal = Shell(ScriptFile, vbNormalFocus)
&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 papago-id=&quot;46&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 글로벌 경로(/usr/bin)에 있는 사용자와 모든 사용자에게 읽기 및 실행 권한이 있음에도 불구하고 간단한 bash 스크립트를 실행하는 데 문제가 있었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;AppleScript 환경과 사용자의 bash 환경 간의 차이로 인한 사용 권한 및 경로라는 두 가지 이유로 인해 스크립트가 실패했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/6136798/vba-shell-function-in-office-2011-for-mac/&quot; papago-id=&quot;46-1&quot;&gt;Mac용 Office 2011의 VBA Shell 기능&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;47&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Excel은 기본적인 세부 정보를 마스킹하고 있었기 때문에 AppleScript Editor를 사용하는 것이 좋습니다. AppleScript Editor는 제가 본 의미 없는 Excel 오류보다 문제 해결 중에 더 나은 통찰력을 제공합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;48&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;AppleScript Editor를 사용하여 스크립트가 실제로 모든 사용자 및 사용되는 환경 변수로 작동하는지 확인합니다.&lt;/font&gt;&lt;/p&gt; 
  &lt;ol&gt; 
   &lt;li papago-id=&quot;49&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Spotlight(스포트라이트)에서 &quot;Applescript Editor(애플 스크립트 편집기)&quot;가 표시될 때까지 입력한 다음 클릭합니다.&lt;/font&gt;&lt;/li&gt; 
   &lt;li papago-id=&quot;50&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;새 AppleScript Editor 파일 만들기&lt;/font&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;p papago-id=&quot;51&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;큰따옴표를 두 번 사용하지 않고 간단한 스크립트를 새 &lt;em papago-id=&quot;51-1&quot;&gt;파일&lt;/em&gt;에 입력합니다(내 파일 읽기).&lt;/font&gt;&lt;/p&gt; &lt;pre&gt;&lt;code&gt;do shell script &quot;parseCsvAndOpen.sh&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt; 
   &lt;li papago-id=&quot;52&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;스크립트의 &quot;실행&quot; 버튼을 누릅니다.&lt;/font&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;21&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;AppleScript Editor에서 실행할 때까지 문제를 추적하고 변경한 후 &quot;실행&quot; 버튼을 반복합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;    &lt;/font&gt;&lt;/font&gt;&lt;ul&gt; 
     &lt;li papago-id=&quot;53&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기서 좋은 소식은 StackOverflow 또는 Google로 돌아가서 도움을 받아야 할 경우 검색 범위가 좁다는 것입니다;-)&lt;/font&gt;&lt;/li&gt; 
    &lt;/ul&gt;&lt;/li&gt; 
  &lt;/ol&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;55&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이제 AppleScript Editor에서 vba로 간단한 스크립트를 복사하고 여전히 작동하는지 확인합니다.&lt;/font&gt;&lt;/p&gt; 
  &lt;ol&gt; 
   &lt;li&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;MacScript &quot;do shell script &quot;&quot;parseCsvAndOpen.sh&quot;&quot;&quot;
&lt;/code&gt;&lt;/pre&gt; &lt;p papago-id=&quot;57&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것은 정말로 하나, 둘, 그리고 세 개의 이중 따옴표입니다! (중따옴표 탈출)&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
  &lt;/ol&gt;&lt;/li&gt; 
&lt;/ol&gt;&lt;p papago-id=&quot;58&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Mac용 MS Office가 설치되어 있지 않아서 제가 제안한 답변을 테스트할 수 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Bash를 이진수(즉, /bin/bash)로 부르고 실행할 스크립트의 이름을 인수로 전달할 수 있어야 한다고 생각합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이렇게 하면 권한 비트와 관련된 문제가 발생하지 않고 두 번째 인수의 경로 이름이 일반적인 UNIX 스타일 /-분리된 경로 이름이 됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;첫 번째 인수의 경우 경로 없이 bash를 이름으로 부르기에 충분할 수 있습니다. 이는 PATH 환경 변수를 사용해야 하기 때문입니다.&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;pre&gt;&lt;code&gt;Shell(&quot;bash runmybatch.sh&quot;)
&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;또는 잘못된 작업 디렉토리로 인해 작동하지 않는 경우&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Shell(&quot;bash '&quot; &amp;amp; location &amp;amp; &quot;/runmybatch.sh'&quot;)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;61&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기서 location은 워크북의 디렉토리에 대한 /분리된 경로입니다.&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;VBA 매크로에 다음 명령을 기록해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Shell &quot;C:Path\to\script\location\script.sh&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;63&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(경로 주위에 큰따옴표를 포함해야 함)&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;64&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;스크립트 위치를 가져오는 가장 좋은 방법은 매크로를 기록하여 bash 스크립트가 있는 동일한 폴더에 워크북을 저장하는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이렇게 하면 나중에 Excel이 해당 경로를 어떻게 호출하고 위의 셸 명령에 복사/붙여넣는지 확인할 수 있습니다.&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/11042473/&lt;a href=&quot;https://stackoverflow.com/questions/11042473/how-to-call-a-bash-script-from-vba-excel&quot; target=&quot;_blank&quot; papago-id=&quot;65-1&quot;&gt;how-to-call-a-bash-script-from-vba-excel&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/954</guid>
      <comments>https://lovepro.tistory.com/954#entry954comment</comments>
      <pubDate>Wed, 30 Aug 2023 23:48:27 +0900</pubDate>
    </item>
    <item>
      <title>jQuery: 양식 제출 시 어떤 버튼을 클릭했는지 확인하는 방법은 무엇입니까?</title>
      <link>https://lovepro.tistory.com/953</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;jQuery: 양식 제출 시 어떤 버튼을 클릭했는지 확인하는 방법은 무엇입니까?&lt;/font&gt;&lt;/h2&gt;
&lt;p&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;.submit()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;양식 제출을 위해 설정된 이벤트입니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 페이지에는 여러 양식이 있지만, 이 예에서는 하나만 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;어떤 제출 버튼을 적용하지 않고 클릭했는지 알고 싶습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.click()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;각 이벤트에 대한 이벤트.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;설정은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
  &amp;lt;title&amp;gt;jQuery research: forms&amp;lt;/title&amp;gt;
  &amp;lt;script type='text/javascript' src='../jquery-1.5.2.min.js'&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;script type='text/javascript' language='javascript'&amp;gt;
      $(document).ready(function(){
          $('form[name=&quot;testform&quot;]').submit( function(event){ process_form_submission(event); } );
      });
      function process_form_submission( event ) {
          event.preventDefault();
          //var target = $(event.target);
          var me = event.currentTarget;
          var data = me.data.value;
          var which_button = '?';       // &amp;lt;-- this is what I want to know
          alert( 'data: ' + data + ', button: ' + which_button );
      }
  &amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;h2&amp;gt;Here's my form:&amp;lt;/h2&amp;gt;
&amp;lt;form action='nothing' method='post' name='testform'&amp;gt;
  &amp;lt;input type='hidden' name='data' value='blahdatayadda' /&amp;gt;
  &amp;lt;input type='submit' name='name1' value='value1' /&amp;gt;
  &amp;lt;input type='submit' name='name2' value='value2' /&amp;gt;
&amp;lt;/form&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;a href=&quot;http://jsfiddle.net/fKppt/&quot; papago-id=&quot;5&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 papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;각 버튼에 .click() 이벤트를 적용하는 것 외에 어떤 제출 버튼을 클릭했는지 확인할 수 있는 방법이 있습니까?&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://stackoverflow.com/questions/2066162/how-can-i-get-the-button-that-caused-the-submit-from-the-form-submit-event&quot; papago-id=&quot;7-1&quot;&gt;양식 제출 이벤트에서 제출 원인이 된 버튼은 어떻게 받을 수 있습니까?&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 결국 이 해결책을 생각해냈고 그것은 꽤 잘 작동했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(document).ready(function() {
    $(&quot;form&quot;).submit(function() { 
        var val = $(&quot;input[type=submit][clicked=true]&quot;).val();
        // DO WORK
    });
    $(&quot;form input[type=submit]&quot;).click(function() {
        $(&quot;input[type=submit]&quot;, $(this).parents(&quot;form&quot;)).removeAttr(&quot;clicked&quot;);
        $(this).attr(&quot;clicked&quot;, &quot;true&quot;);
    });
});
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr&gt; 
&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;양식이 여러 개인 경우 이를 약간 수정해야 할 수 있지만 여전히 적용되어야 합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 이것이 효과가 있다는 것을 발견했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(document).ready(function() {
    $( &quot;form&quot; ).submit(function () {
        // Get the submit button element
        var btn = $(this).find(&quot;input[type=submit]:focus&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;form&quot;).submit(function() {
   // Print the value of the button that was clicked
   console.log($(document.activeElement).val());
}
&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;ul&gt; 
 &lt;li&gt;&lt;p&gt;&lt;code&gt;document.activeElement&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;/li&gt; 
 &lt;li&gt;&lt;p&gt;&lt;code&gt;document.activeElement.getAttribute('value')&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그 버튼의 가치를 알려줄 겁니다&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;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;document.activeElement&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;input&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;제출 단추가 아닌 경우에는 &quot;클릭된 단추&quot;가 없을 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;원주민 재산이 있고,&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;submitter&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;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/SubmitEvent/submitter&quot; papago-id=&quot;19-1&quot; rel=&quot;noreferrer&quot;&gt;인터페이스&lt;/a&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;표준 웹 API:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var btnClicked = event.submitter;
&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;jQuery:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var btnClicked = event.originalEvent.submitter;
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제 목적에 더 적합해 보이는 접근법이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;첫째, 모든 형식에 대해:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$('form').click(function(event) {
  $(this).data('clicked',$(event.target))
});
&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;이것은 꽤 광범위한 획으로, 양식의 아무 곳에서나 클릭할 수 있습니다.&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;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;$('form').submit()&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;pre&gt;&lt;code&gt;if ($(this).data('clicked').is('[name=no_ajax]')) xhr.abort();
&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;font class=&quot;papago-parent&quot;&gt;단순 글로벌을 사용해도 괜찮다면 입력 버튼 클릭 이벤트가 먼저 실행된다는 점을 활용하십시오.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;$('#myForm input')을 사용하여 여러 양식 중 하나에 대한 $('input') 선택기를 추가로 필터링할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;    $(document).ready(function(){
      var clkBtn = &quot;&quot;;
      $('input[type=&quot;submit&quot;]').click(function(evt) {
        clkBtn = evt.target.id;
      });

      $(&quot;#myForm&quot;).submit(function(evt) {
        var btnID = clkBtn;
        alert(&quot;form submitted; button id=&quot; + btnID);
      });
    });
&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;$(document.activeElement).attr('id')
&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;또한 버튼의 ID도 가져옵니다.&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;pre&gt;&lt;code&gt;&amp;lt;input type=&quot;hidden&quot; id=&quot;btaction&quot;/&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;31&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 Ready(준비) 기능에 어떤 키를 눌렀는지 기록하는 기능을 추가합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$('form#myForm #btnSubmit').click(function() {
    $('form#myForm #btaction').val(0);
});

$('form#myForm #btnSubmitAndSend').click(function() {
    $('form#myForm #btaction').val(1);
});

$('form#myForm #btnDelete').click(function() {
    $('form#myForm #btaction').val(2);
});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;32&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이제 양식 제출 처리기에서 숨겨진 변수를 읽고 이를 기반으로 결정합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var act = $('form#myForm #btaction').val();
&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;스탠과 yannh가 한 일을 기반으로 하지만 이것은 기본적으로 첫 번째 버튼입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 전체적인 접근 방식의 장점은 버튼에 초점이 맞춰져 있지 않은 경우에도 클릭과 엔터 키를 모두 선택할 수 있다는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;양식에 입력할 수 있도록 허용해야 하는 경우 버튼이 집중되어 있을 때(즉, Stan의 답변) 이에 응답하십시오.&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;저도 'id'가 아닌 'name' 속성을 사용하고 있었는데, 이 방법은 동일합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var pressedButtonName =
     typeof $(&quot;:input[type=submit]:focus&quot;)[0] === &quot;undefined&quot; ?
     $(&quot;:input[type=submit]:first&quot;)[0].name :
     $(&quot;:input[type=submit]:focus&quot;)[0].name;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong papago-id=&quot;35&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이건 나한테 효과가 있었어요&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$('#Form').submit(function(){
var btn= $(this).find(&quot;input[type=submit]:focus&quot;).val();
alert('you have clicked '+ btn);

}
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;36&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제 솔루션은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;   $('#form').submit(function(e){   
        console.log($('#'+e.originalEvent.submitter.id));
        e.preventDefault();
    });
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;37&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;양식을 제출하면 이벤트 개체를 쉽게 얻을 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기서 제출자 개체를 가져옵니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;아래와 같이:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;.review-form&quot;).submit(function (e) {
        e.preventDefault(); // avoid to execute the actual submit of the form.

        let submitter_btn = $(e.originalEvent.submitter);
        
        console.log(submitter_btn.attr(&quot;name&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;이 양식을 백엔드로 보내려는 경우, 새 FormData()로 새 양식 요소를 만들고 버튼을 누른 키-값 쌍을 설정한 다음 백엔드에서 액세스할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이런 거.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;.review-form&quot;).submit(function (e) {
        e.preventDefault(); // avoid to execute the actual submit of the form.

        let form = $(this);
        let newForm = new FormData($(form)[0]);
        let submitter_btn = $(e.originalEvent.submitter);
        
        console.log(submitter_btn.attr(&quot;name&quot;));

        if ((submitter_btn.attr(&quot;name&quot;) == &quot;approve_btn&quot;) || 
            (submitter_btn.attr(&quot;name&quot;) == &quot;reject_btn&quot;)){
            newForm.set(&quot;action_for&quot;, submitter_btn.attr(&quot;name&quot;));
        } else {
            console.log(&quot;there is some error!&quot;);
            return;
        }
}
&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;제 HTML 양식은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;form method=&quot;POST&quot; action=&quot;{% url 'tasks:review-task' taskid=product.task_id.id %}&quot;
    class=&quot;review-form&quot;&amp;gt;
    {% csrf_token %}
    &amp;lt;input type=&quot;hidden&quot; name=&quot;product_id&quot; value=&quot;{{product.product_id}}&quot; /&amp;gt;
    &amp;lt;input type=&quot;hidden&quot; name=&quot;task_id&quot; value=&quot;{{product.task_id_id}}&quot; /&amp;gt;
    &amp;lt;button type=&quot;submit&quot; name=&quot;approve_btn&quot; class=&quot;btn btn-link&quot; id=&quot;approve-btn&quot;&amp;gt;
        &amp;lt;i class=&quot;fa fa-check&quot; style=&quot;color: rgb(63, 245, 63);&quot;&amp;gt;&amp;lt;/i&amp;gt;
    &amp;lt;/button&amp;gt;
    &amp;lt;button type=&quot;submit&quot; name=&quot;reject_btn&quot; class=&quot;btn btn-link&quot; id=&quot;reject-btn&quot;&amp;gt;
            &amp;lt;i class=&quot;fa fa-times&quot; style=&quot;color: red;&quot;&amp;gt;&amp;lt;/i&amp;gt;
    &amp;lt;/button&amp;gt;
&amp;lt;/form&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;40&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;의심스러운 점이 있으면 저에게 알려주세요.&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;.click 이벤트를 추가하지 않는 것이 해당 이벤트에 대해 별도의 처리기를 사용하지 않으려는 경우 다음과 같은 한 가지 기능으로 모든 클릭(제출)을 처리할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(document).ready(function(){
  $('input[type=&quot;submit&quot;]').click( function(event){ process_form_submission(event); } );
});

function process_form_submission( event ) {
  event.preventDefault();
  //var target = $(event.target);
  var input = $(event.currentTarget);
  var which_button = event.currentTarget.value;
  var data = input.parents(&quot;form&quot;)[0].data.value;
//  var which_button = '?';       // &amp;lt;-- this is what I want to know
  alert( 'data: ' + data + ', button: ' + which_button );
}
&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;form&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;43&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;속성)을 선택합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;최신 브라우저용입니다. http://&lt;a href=&quot;http://caniuse.com/#feat=form-attribute&quot; papago-id=&quot;43-1&quot; rel=&quot;nofollow&quot;&gt;caniuse&lt;/a&gt;.com/ #&lt;a href=&quot;http://caniuse.com/#feat=form-attribute&quot; papago-id=&quot;43-1&quot; rel=&quot;nofollow&quot;&gt;filename=form-filename&lt;/a&gt;.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;closest('form')&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;되지 않는 지원지 예경사용다니됩비의 됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;form&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;속성 &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(document).on('click', '[type=submit]', function() {
    var form = $(this).prop('form') || $(this).closest('form')[0];
    $(form.elements).filter('[type=submit]').removeAttr('clicked')
    $(this).attr('clicked', true);
});

$('form').on('submit', function() {
    var submitter = $(this.elements).filter('[clicked]');
})
&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;$(document).ready(function(){
    
    $('form[name=&quot;testform&quot;]').submit( function(event){
      
        // This is the ID of the clicked button
        var clicked_button_id = event.originalEvent.submitter.id; 
        
    });
});
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;$(&quot;form input[type=submit]&quot;).click(function() {
    $(&quot;&amp;lt;input /&amp;gt;&quot;)
        .attr('type', 'hidden')
        .attr('name', $(this).attr('name'))
        .attr('value', $(this).attr('value'))
    .appendTo(this)
});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;47&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;숨김 필드 추가&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;48&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저에게 최고의 솔루션은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(form).submit(function(e){

   // Get the button that was clicked       
   var submit = $(this.id).context.activeElement;

   // You can get its name like this
   alert(submit.name)

   // You can get its attributes like this too
   alert($(submit).attr('class'))

});
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;49&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/a/17805011/1094772&quot; papago-id=&quot;49-1&quot;&gt;이 우수&lt;/a&gt;한 답변을 &lt;a href=&quot;https://stackoverflow.com/a/17805011/1094772&quot; papago-id=&quot;49-1&quot;&gt;사용&lt;/a&gt;하여 활성 요소(버튼)를 확인하고, 양식에 숨겨진 입력을 추가하고, 제출 처리기 끝에 선택적으로 제거할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$('form.form-js').submit(function(event){
    var frm = $(this);
    var btn = $(document.activeElement);
    if(
        btn.length &amp;amp;&amp;amp;
        frm.has(btn) &amp;amp;&amp;amp;
        btn.is('button[type=&quot;submit&quot;], input[type=&quot;submit&quot;], input[type=&quot;image&quot;]') &amp;amp;&amp;amp;
        btn.is('[name]')
    ){
        frm.append('&amp;lt;input type=&quot;hidden&quot; id=&quot;form-js-temp&quot; name=&quot;' + btn.attr('name') + '&quot; value=&quot;' + btn.val() + '&quot;&amp;gt;');
    }

    // Handle the form submit here

    $('#form-js-temp').remove();
});
&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 class=&quot;papago-parent&quot;&gt;개인적으로 수업을 추가합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;form-js&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;JavaScript를 통해 제출된 모든 양식에 적용됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;52&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Stan 답변과 유사하지만:&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li papago-id=&quot;53&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;버튼이 두 개 이상인 경우 첫 번째 버튼만 받아야 합니다. =&amp;gt; [0]&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;54&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Enter 키를 사용하여 양식을 제출할 수 있는 경우 기본값 =&amp;gt; myDefaultButtonId를 관리해야 합니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr&gt; 
&lt;pre&gt;&lt;code&gt;$(document).on('submit', function(event) {
    event.preventDefault();
    var pressedButtonId = 
         typeof $(&quot;:input[type=submit]:focus&quot;)[0] === &quot;undefined&quot; ? 
         &quot;myDefaultButtonId&quot; :
         $(&quot;:input[type=submit]:focus&quot;)[0].id;
    ...
 }
&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;p&gt;&lt;/p&gt;
&lt;div class=&quot;snippet&quot; data-lang=&quot;js&quot; data-hide=&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;// prevent enter key on some elements to prevent to submit the form
function stopRKey(evt) {
  evt = (evt) ? evt : ((event) ? event : null);
  var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
  var alloved_enter_on_type = ['textarea'];
  if ((evt.keyCode == 13) &amp;amp;&amp;amp; ((node.id == &quot;&quot;) || ($.inArray(node.type, alloved_enter_on_type) &amp;lt; 0))) {
    return false;
  }
}

$(document).ready(function() {
  document.onkeypress = stopRKey;
  // catch the id of submit button and store-it to the form
  $(&quot;form&quot;).each(function() {
    var that = $(this);

    // define context and reference
    /* for each of the submit-inputs - in each of the forms on
			 the page - assign click and keypress event */
    $(&quot;input:submit,button&quot;, that).bind(&quot;click keypress&quot;, function(e) {
      // store the id of the submit-input on it's enclosing form
      that.data(&quot;callerid&quot;, this.id);
    });
  });

  $(&quot;#form1&quot;).submit(function(e) {
    var origin_id = $(e.target).data(&quot;callerid&quot;);
    alert(origin_id);
    e.preventDefault();

  });
});&lt;/code&gt;&lt;/pre&gt; 
  &lt;pre class=&quot;snippet-code-html lang-html prettyprint-override&quot;&gt;&lt;code&gt;&amp;lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;form id=&quot;form1&quot; name=&quot;form1&quot; action=&quot;&quot; method=&quot;post&quot;&amp;gt;
  &amp;lt;input type=&quot;text&quot; name=&quot;text1&quot; /&amp;gt;
  &amp;lt;input type=&quot;submit&quot; id=&quot;button1&quot; value=&quot;Submit1&quot; name=&quot;button1&quot; /&amp;gt;
  &amp;lt;button type=&quot;submit&quot; id=&quot;button2&quot; name=&quot;button2&quot;&amp;gt;
    Submit2
  &amp;lt;/button&amp;gt;
  &amp;lt;input type=&quot;submit&quot; id=&quot;button3&quot; value=&quot;Submit3&quot; name=&quot;button3&quot; /&amp;gt;
&amp;lt;/form&amp;gt;&lt;/code&gt;&lt;/pre&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;/p&gt;&lt;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;            var val = document.activeElement.textContent;
&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;https://&lt;a href=&quot;https://stackoverflow.com/a/17805011/1029257&quot; papago-id=&quot;57-1&quot;&gt;stackoverflow&lt;/a&gt;.com/a/17805011/1029257 에 도움이 되었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;58&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제출 단추를 누른 후에만 제출된 양식입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var theBtn = $(':focus');
if(theBtn.is(':submit'))
{
  // ....
  return true;
}

return false;
&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;는 jQuery jQuery를 사용할 수 .&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;originalEvent.submitter&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;ASP는 Chrome입니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;NetCore »:&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;내 .cshtml 양식:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;div class=&quot;form-group&quot; id=&quot;buttons_grp&quot;&amp;gt;
    &amp;lt;button type=&quot;submit&quot; name=&quot;submitButton&quot; value=&quot;Approve&quot; class=&quot;btn btn-success&quot;&amp;gt;Approve&amp;lt;/button&amp;gt;
    &amp;lt;button type=&quot;submit&quot; name=&quot;submitButton&quot; value=&quot;Reject&quot; class=&quot;btn btn-danger&quot;&amp;gt;Reject&amp;lt;/button&amp;gt;
    &amp;lt;button type=&quot;submit&quot; name=&quot;submitButton&quot; value=&quot;Save&quot; class=&quot;btn btn-primary&quot;&amp;gt;Save&amp;lt;/button&amp;gt;
    ...
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;62&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;jQuery 제출 처리기:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;@section Scripts {
    @{await Html.RenderPartialAsync(&quot;_ValidationScriptsPartial&quot;);}
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
    $(document).ready(function() {
    ...
    // Ensure that we log an explanatory comment if &quot;Reject&quot;
    $('#update_task_form').on('submit', function (e) {
        let text = e.originalEvent.submitter.textContent;
        if (text == &quot;Reject&quot;) {
           // Do stuff...
        }
    });
    ...
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;63&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;jQuery Microsoft가 내 ASP와 함께 번들로 제공했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;NetCore 환경은 v3.3.1입니다.&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;다음과 같은 &quot;제출&quot; 버튼이 있다고 가정해 보겠습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;button type=&quot;submit&quot; name=&quot;submitButton&quot; id=&quot;update&quot; value=&quot;UpdateRecord&quot; class=&quot;btn btn-primary&quot;&amp;gt;Update Record&amp;lt;/button&amp;gt;
&amp;lt;button type=&quot;submit&quot; name=&quot;submitButton&quot; id=&quot;review_info&quot; value=&quot;ReviewInfo&quot; class=&quot;btn btn-warning sme_only&quot;&amp;gt;Review Info&amp;lt;/button&amp;gt;
&amp;lt;button type=&quot;submit&quot; name=&quot;submitButton&quot; id=&quot;need_more_info&quot; value=&quot;NeedMoreInfo&quot; class=&quot;btn btn-warning sme_only&quot;&amp;gt;Need More Info&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;65&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; $('#my_form').on('submit', function (e) {
     let x1 = $(this).find(&quot;input[type=submit]:focus&quot;);
     let x2 = e.originalEvent.submitter.textContent;
&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;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&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;x1&quot;과 &quot;x2&quot;가 반환됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Update Record&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;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;, 은 꽤합니다: 저는또해한만을고, 그은꽤잘니다작합.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;br&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;와 CSSjQuery를합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;br&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;먼저 빠른 CSS 클래스를 만들었는데, 이것은 내장되거나 별도의 파일에 포함될 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;style type='text/css'&amp;gt;
    .Clicked {
        /*No Attributes*/
    }
&amp;lt;/style&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;br&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;다음으로 양식 내 버튼 클릭 이벤트에서 CSS 클래스를 버튼에 추가합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;만약 버튼에 이미 CSS 클래스가 있다면, 그것을 제거하세요. (우리는 두 개의 CSS 클래스를 원하지 않습니다 [만일의 경우].&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;    // Adds a CSS Class to the Button That Has Been Clicked.
    $(&quot;form :input[type='submit']&quot;).click(function () 
    {
        if ($(this).hasClass(&quot;Clicked&quot;))
        {
            $(this).removeClass(&quot;Clicked&quot;);
        }
        $(this).addClass(&quot;Clicked&quot;);
    });
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&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;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이제 버튼에 CSS 클래스가 있는지 테스트합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 테스트한 버튼에 CSS가 없으면 다른 버튼도 CSS가 됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;    // On Form Submit
    $(&quot;form&quot;).submit(function ()
    {
        // Test Which Button Has the Class
        if ($(&quot;input[name='name1']&quot;).hasClass(&quot;Clicked&quot;))
        {
            // Button 'name1' has been clicked.
        }
        else
        {
           // Button 'name2' has been clicked.
        }
    });
&lt;/code&gt;&lt;/pre&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;/p&gt;&lt;p papago-id=&quot;74&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;버튼 ID 정보의 홀더로 입력 유형=&quot;숨김&quot;을 생성할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;input type=&quot;hidden&quot; name=&quot;button&quot; id=&quot;button&quot;&amp;gt;
&amp;lt;input type=&quot;submit&quot; onClick=&quot;document.form_name.button.value = 1;&quot; value=&quot;Do something&quot; name=&quot;do_something&quot;&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;75&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 경우 양식은 제출 시 값 &quot;1&quot;(버튼의 ID)을 전달합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 제출(?)하기 전에 클릭이 발생한 경우 작동합니다. 항상 사실인지 확실하지 않습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;76&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;어떤 &amp;lt;버튼&amp;gt; 또는 &amp;lt;입력 유형=&quot;버튼&quot;을 구별하는 간단한 방법...&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&amp;gt;를 누르면 'ID'를 확인할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;button&quot;).click(function() {
  var id = $(this).attr('id');
  ... 
});
&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;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;78&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;RETURN 키에 클릭 이벤트를 보내기 위해 브라우저에 의존하지 않고 키와 마우스/손가락으로 탐색할 때 작동합니다(하지만 아프지는 않습니다), 버튼과 필드에 대한 포커스 이벤트를 위한 이벤트 핸들러를 추가했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;79&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;버튼을 클릭하면 자동으로 저장되는 항목에 =&quot;download&quot; 유형의 버튼을 추가할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;80&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;데모에서 빨간색 테두리를 설정하여 선택한 항목을 표시하고 이름과 값/라벨을 표시하는 경고를 표시합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;81&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://jsfiddle.net/yybqt719/9/&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;81-1&quot;&gt;여기&lt;/a&gt; FIDDLE이 있습니다.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;82&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음은 (동일한) 코드입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;83&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Javascript:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;form&quot;).submit(function(e) {
  e.preventDefault();
  // Use this for rare/buggy cases when click event is sent after submit
  setTimeout(function() {

    var $this=$(this);
    var lastFocus = $this.data(&quot;lastFocus&quot;);
    var $defaultSubmit=null;

    if(lastFocus) $defaultSubmit=$(lastFocus);

    if(!$defaultSubmit || !$defaultSubmit.is(&quot;input[type=submit]&quot;)) {
      // If for some reason we don't have a submit, find one (the first)
      $defaultSubmit=$(this).find(&quot;input[type=submit]&quot;).first();
    }

    if($defaultSubmit) {
      var submitName=$defaultSubmit.attr(&quot;name&quot;);
      var submitLabel=$defaultSubmit.val();

       // Just a demo, set hilite and alert
      doSomethingWith($defaultSubmit);
      setTimeout(function() {alert(&quot;Submitted &quot;+submitName+&quot;: '&quot;+submitLabel+&quot;'&quot;)},1000);
    } else {
      // There were no submit in the form
    }

  }.bind(this),0);

});

$(&quot;form input&quot;).focus(function() {
  $(this.form).data(&quot;lastFocus&quot;, this);
});
$(&quot;form input&quot;).click(function() {
  $(this.form).data(&quot;lastFocus&quot;, this);
});

// Just a demo, setting hilite
function doSomethingWith($aSelectedEl) {
  $aSelectedEl.css({&quot;border&quot;:&quot;4px solid red&quot;});
  setTimeout(function() { $aSelectedEl.removeAttr(&quot;style&quot;); },1000);
}
&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;더미 HTML:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;form&amp;gt;
&amp;lt;input type=&quot;text&quot; name=&quot;testtextortexttest&quot; value=&quot;Whatever you write, sir.&quot;/&amp;gt;
&amp;lt;input type=&quot;text&quot; name=&quot;moretesttextormoretexttest&quot; value=&quot;Whatever you write, again, sir.&quot;/&amp;gt;

&amp;lt;input type=&quot;submit&quot; name=&quot;test1&quot; value=&quot;Action 1&quot;/&amp;gt;
&amp;lt;input type=&quot;submit&quot; name=&quot;test2&quot; value=&quot;Action 2&quot;/&amp;gt;
&amp;lt;input type=&quot;submit&quot; name=&quot;test3&quot; value=&quot;Action 3&quot;/&amp;gt;
&amp;lt;input type=&quot;submit&quot; name=&quot;test4&quot; value=&quot;Action 4&quot;/&amp;gt;
&amp;lt;input type=&quot;submit&quot; name=&quot;test5&quot; value=&quot;Action 5&quot;/&amp;gt;
&amp;lt;/form&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;85&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;덤 CSS:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;input {display:block}
&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;pre&gt;&lt;code&gt;var PupulateFormData= function (elem) {
var arr = {};
$(elem).find(&quot;input[name],select[name],button[name]:focus,input[type='submit']:focus&quot;).each(function () {
    arr[$(this).attr(&quot;name&quot;)] = $(this).val();
});
return arr;
};
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;87&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 사용&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var data= PupulateFormData($(&quot;form&quot;));
&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;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/5721724/&lt;a href=&quot;https://stackoverflow.com/questions/5721724/jquery-how-to-get-which-button-was-clicked-upon-form-submission&quot; target=&quot;_blank&quot; papago-id=&quot;88-1&quot;&gt;jquery-how-to-get-which-button-was-clicked-upon-form-submission&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/953</guid>
      <comments>https://lovepro.tistory.com/953#entry953comment</comments>
      <pubDate>Wed, 30 Aug 2023 23:33:48 +0900</pubDate>
    </item>
    <item>
      <title>오라클의 다른 스키마에서 데이터 선택</title>
      <link>https://lovepro.tistory.com/952</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;DB 연결에 지정된 것과 다른 스키마(같은 Oracle 서버, 같은 데이터베이스, 다른 스키마)에서 데이터를 선택하는 쿼리를 실행하려고 합니다.&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;데이터베이스(서버/스키마) A에 대한 연결을 열고 해당 데이터베이스 내의 테이블에 대한 선택 쿼리를 실행합니다.&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 .... 
from pct.pi_int, pct.pi_ma, pct.pi_es
where ...
&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;ORA-00942: table or view does not exist
&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;from [PCT].pi_int, [PCT].pi_ma, [PCAT].pi_es
&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;ORA-00903: invalid table name
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;쿼리는 Django 앱 내부에서 cx_Oracle python 모듈을 사용하여 실행됩니다.&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;이것을 할 수 있습니까 아니면 제가 새로운 db 연결을 해야 합니까?&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;데이터베이스에 연결하는 데 사용하는 사용자(사용자)&lt;/font&gt;&lt;/font&gt;&lt;code&gt;A&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;SELECT&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;PCT&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 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;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 액세스 권한이 없습니다. &quot;table or view is not exist&quot; 오류가 발생합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;대부분 사용자에게 권한을 부여하려면 DBA가 필요합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;A&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;PCT&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 class=&quot;papago-parent&quot;&gt;비슷한 것&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;GRANT SELECT ON pct.pi_int
   TO a;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 작업이 완료되면 다음 항목의 개체를 참조할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;PCT&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;pct.pi_int&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;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;보조금 외에도 동의어를 만들어 볼 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;테이블 소유자 스키마를 매번 지정할 필요가 없습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;연결 스키마에서:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;CREATE SYNONYM pi_int FOR pct.pi_int;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 쿼리할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;pi_int&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음과 같이:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SELECT * FROM pi_int;
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;데이터베이스에 연결하는 데 사용하는 스키마/계정에 따라 데이터베이스에 연결하는 데 사용하는 계정에 대한 허가가 누락된 것 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;데이터베이스에서 PCT 계정으로 연결한 다음 사용 중인 계정에 테이블에 대한 선택 권한을 부여합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;grant select on pi_int to Account_used_to_connect
&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/13709164/&lt;a href=&quot;https://stackoverflow.com/questions/13709164/select-data-from-another-schema-in-oracle&quot; target=&quot;_blank&quot; papago-id=&quot;26-1&quot;&gt;select-data-from-another-schema-in-oracle&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/952</guid>
      <comments>https://lovepro.tistory.com/952#entry952comment</comments>
      <pubDate>Wed, 30 Aug 2023 23:29:12 +0900</pubDate>
    </item>
    <item>
      <title>Python의 파일에서 문자 읽기</title>
      <link>https://lovepro.tistory.com/951</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Python의 파일에서 문자 읽기&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;텍스트 파일에는 &quot;나는 이것을 좋아하지 않습니다&quot;라는 문자열이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만, 제가 그것을 문자열로 읽었을 때, 그것은 &quot;저는 이렇게 합니다&quot;가 됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;\u2018은 &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;f1 = open (file1, &quot;r&quot;)
text = f1.read()
&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;자, 문자열을 읽을 때 &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;두 번째 편집:&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 문제를 해결하기 위해 매핑을 사용하는 사람들을 본 적이 있지만, 실제로 이러한 종류의 ANSI를 유니코드로(또는 그 반대로) 변환하는 내장 변환은 없습니까?&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://docs.python.org/howto/unicode&quot; rel=&quot;noreferrer&quot; papago-id=&quot;6-1&quot;&gt;참조:&lt;/a&gt; http://docs.python.org/howto/unicode&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 파일에서 유니코드를 읽는 것은 간단합니다.&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import codecs
with codecs.open('unicode.rst', encoding='utf-8') as f:
    for line in f:
        print repr(line)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;em papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;업데이트 모드에서 파일을 열 수도 있어 읽기와 쓰기가 모두 가능합니다.&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;with codecs.open('test', encoding='utf-8', mode='w+') as f:
    f.write(u'\u4500 blah blah blah\n')
    f.seek(0)
    print repr(f.readline()[:1])
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;편집: 저는 당신의 목표가 단지 파이썬에서 파일을 문자열로 올바르게 읽을 수 있는 것이라고 &lt;strong papago-id=&quot;9-0&quot;&gt;생각&lt;/strong&gt;합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;유니코드에서 ASCII 문자열로 변환하려는 경우 유니코드 문자가 ASCII에 존재할 필요가 없기 때문에 직접 변환할 방법이 없습니다.&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;ASCII 문자열로 변환하려면 다음 중 하나를 시도합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 예제와 같은 몇 가지 특수한 경우에만 처리하려는 경우 특정 유니코드 문자를 ASCII 동등 문자로 대체합니다.&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;을 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;unicodedata&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;normalize()&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;string.encode()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;가능한 한 가장 가까운 ASCII 대응물로 변환하는 방법(참조 https://web.archive.org/web/&lt;a href=&quot;https://web.archive.org/web/20090228203858/http://techxplorer.com/2006/07/18/converting-unicode-to-ascii-using-python&quot; papago-id=&quot;15-1&quot; rel=&quot;noreferrer&quot;&gt;20090228203858&lt;/a&gt;/http &lt;a href=&quot;https://web.archive.org/web/20090228203858/http://techxplorer.com/2006/07/18/converting-unicode-to-ascii-using-python&quot; papago-id=&quot;15-1&quot; rel=&quot;noreferrer&quot;&gt;://&lt;/a&gt;techxplorer.com/2006/07/18/converting-unicode-to-ascii-using-python) :&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; teststr
u'I don\xe2\x80\x98t like this'
&amp;gt;&amp;gt;&amp;gt; unicodedata.normalize('NFKD', teststr).encode('ascii', 'ignore')
'I donat like this'
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt; 
&lt;/ol&gt;&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;python 3 읽기 방법을 사용하여 인코딩된 텍스트 파일을 읽을 수도 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;f = open (file.txt, 'r', encoding='utf-8')
text = f.read()
f.close()
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 버전에서는 추가 라이브러리를 가져올 필요가 없습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;고려해야 할 몇 가지 사항이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;\u2018 문자는 파이썬에서 유니코드 문자열의 일부로만 나타날 수 있습니다. 예를 들어 다음과 같이 쓸 경우:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; text = u'‘'
&amp;gt;&amp;gt;&amp;gt; print repr(text)
u'\u2018'
&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 class=&quot;papago-parent&quot;&gt;이제 유니코드 문자열을 예쁘게 인쇄하려면 유니코드의&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;encode&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;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; text = u'I don\u2018t like this'
&amp;gt;&amp;gt;&amp;gt; print text.encode('utf-8')
I don‘t like this
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 파의모행을유로읽면다으다사좋것습니이는용음하을일을 하는 것이 &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;codecs.open&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;단순한 기능이 아닌 기능&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;open&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;&amp;gt;&amp;gt;&amp;gt; import codecs
&amp;gt;&amp;gt;&amp;gt; f1 = codecs.open(file1, &quot;r&quot;, &quot;utf-8&quot;)
&amp;gt;&amp;gt;&amp;gt; text = f1.read()
&amp;gt;&amp;gt;&amp;gt; print type(text)
&amp;lt;type 'unicode'&amp;gt;
&amp;gt;&amp;gt;&amp;gt; print text.encode('utf-8')
I don‘t like this
&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;하지만 정말로 &quot;나는 이것을 좋아하지 않는다&quot;가 아니라 &quot;나는 이것을 좋아하지 않습니다&quot;입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;u'\u2018' 문자는 &quot;&quot;와 완전히 다른 문자입니다(그리고 시각적으로 ''와 더 일치해야 합니다).&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;인코딩된 유니코드를 일반 ASCII로 변환하려는 경우 ASCII로 변환할 유니코드 구두점 매핑을 유지할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;punctuation = {
  u'\u2018': &quot;'&quot;,
  u'\u2019': &quot;'&quot;,
}
for src, dest in punctuation.iteritems():
  text = text.replace(src, dest)
&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;a href=&quot;http://www.fileformat.info/info/unicode/block/general_punctuation/images.htm&quot; papago-id=&quot;27-1&quot; rel=&quot;noreferrer&quot;&gt;엄청나게&lt;/a&gt; 많은 &lt;a href=&quot;http://www.fileformat.info/info/unicode/block/general_punctuation/images.htm&quot; papago-id=&quot;27-1&quot; rel=&quot;noreferrer&quot;&gt;구두점 문자&lt;/a&gt;가 있지만, 읽고 있는 문서를 만드는 응용 프로그램에서 실제로 사용되는 구두점 문자 중 일부만 사용할 수 있다고 생각합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;28&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;유니코드 이스케이프 문자가 포함된 비유니코드 문자열이 있을 수 있습니다. 예를 들어 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; print repr(text)
'I don\\u2018t like this'
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;전에 한 번은 이런 일이 있었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;를 사용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;unicode_escape&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;&amp;gt;&amp;gt;&amp;gt; uni = text.decode('unicode_escape')
&amp;gt;&amp;gt;&amp;gt; print type(uni)
&amp;lt;type 'unicode'&amp;gt;
&amp;gt;&amp;gt;&amp;gt; print uni.encode('utf-8')
I don‘t like this
&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;텍스트 파일이 손상되었다는 사실은 차치하고(U+2018은 아포스트로피가 아닌 왼쪽 따옴표입니다): iconv를 사용하여 유니코드 문자를 ascii로 변환할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;32&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모듈이 더 이상 지원되지 않는 것 같고 표준 홈 페이지를 찾을 수 없기 때문에 &quot;iconvcodec&quot;을 검색해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; import iconvcodec
&amp;gt;&amp;gt;&amp;gt; from locale import setlocale, LC_ALL
&amp;gt;&amp;gt;&amp;gt; setlocale(LC_ALL, '')
&amp;gt;&amp;gt;&amp;gt; u'\u2018'.encode('ascii//translit')
&quot;'&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또는 다음을 사용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;iconv&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;$ xxd foo
0000000: e280 980a                                ....
$ iconv -t 'ascii//translit' foo | xxd
0000000: 270a                                     '.
&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;이것은 유니코드로 인코딩된 문자열을 보여주는 Pythons 방식입니다.&lt;/font&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; test = u&quot;I don\u2018t like this&quot;
&amp;gt;&amp;gt;&amp;gt; test
u'I don\u2018t like this'
&amp;gt;&amp;gt;&amp;gt; print test
I don‘t like this
&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;사실 U+2018은 특수 문자 '의 유니코드 표현입니다. 원하는 경우 다음 코드를 사용하여 해당 문자의 인스턴스를 U+0027로 변환할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;text = text.replace (u&quot;\u2018&quot;, &quot;'&quot;)
&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;f1.read()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음과 같은 문자열을 반환해야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;'I don\xe2\x80\x98t like this'
&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;em papago-id=&quot;39-1&quot;&gt;반환&lt;/em&gt;하는 경우 파일이 잘못 작성되고 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;'I don\u2018t like this'
&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;(syslog=&quot;syslog&quot;) 옵션은 잘 모르겠지만 유니코드 문자가 이상한 파일에 사용할 수 있는 것 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;with open(fName, &quot;rb&quot;) as fData:
    lines = fData.read().splitlines()
    lines = [line.decode(&quot;utf-8&quot;, errors=&quot;ignore&quot;) for line in lines]
&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;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/147741/&lt;a href=&quot;https://stackoverflow.com/questions/147741/character-reading-from-file-in-python&quot; target=&quot;_blank&quot; papago-id=&quot;41-1&quot;&gt;character-reading-from-file-in-python&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/951</guid>
      <comments>https://lovepro.tistory.com/951#entry951comment</comments>
      <pubDate>Wed, 30 Aug 2023 23:26:19 +0900</pubDate>
    </item>
    <item>
      <title>pkg-config 검색 경로에서 패키지 카이로를 찾을 수 없습니다.노드 j.s 설치 캔버스 문제</title>
      <link>https://lovepro.tistory.com/950</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;pkg-config 검색 경로에서 패키지 카이로를 찾을 수 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;노드 j.s 설치 캔버스 문제&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;npm http GET https://registry.npmjs.org/canvas
npm http 304 https://registry.npmjs.org/canvas
npm http GET https://registry.npmjs.org/nan
npm http 304 https://registry.npmjs.org/nan

&amp;gt; canvas@1.1.3 install /Users/plimb/Desktop/motion-therapy/node_modules/canvas
&amp;gt; node-gyp rebuild

Package cairo was not found in the pkg-config search path.
Perhaps you should add the directory containing `cairo.pc'
to the PKG_CONFIG_PATH environment variable
No package 'cairo' found
gyp: Call to './util/has_cairo_freetype.sh' returned exit status 0. while trying to load binding.gyp
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:424:16)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:98:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:789:12)
gyp ERR! System Darwin 13.0.0
gyp ERR! command &quot;node&quot; &quot;/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js&quot; &quot;rebuild&quot;
gyp ERR! cwd /Users/plimb/Desktop/motion-therapy/node_modules/canvas
gyp ERR! node -v v0.10.21
gyp ERR! node-gyp -v v0.10.10
gyp ERR! not ok
npm ERR! weird error 1 
npm ERR! not ok code 0
&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;예를 들어 pkg_config_path 환경 변수에서 mkdir 카이로 pc를 생성하는 방법은 무엇입니까?&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;strong papago-id=&quot;3-1&quot;&gt;@Epistemex의 링크가 문제 해결에 도움&lt;/strong&gt;이 되었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;em&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;libcairo2-dev&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;libjpeg-dev&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;libgif-dev&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;/em&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;pre&gt;&lt;code&gt;sudo apt-get install libcairo2-dev libjpeg-dev libgif-dev
&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;Mac OSX 버전 &amp;gt; = 10.7.5 노드 - v = v0.8.12&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$ brew install cairo
$ pkg-config --atleast-version=1.12.2 cairo
$ echo $?
&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;1을 반환하는 경우 카이로.pc 및 fontconfig.pc를 찾을 수 있도록 PKG_CONFIG_PATH 환경 변수를 설정해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$ locate cairo.pc
$ export PKG_CONFIG_PATH=/usr/X11/lib/pkgconfig/
&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;pkg-config를 다시 실행하는 중...&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$ pkg-config --atleast-version=1.12.2 cairo

$ echo $?
&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;0을 반환하면 후드에 문제가 없습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$ npm install canvas
&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;설치하는 동안 OS X 10.11.2에서 동일한 문제가 발생했습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;qrcode&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;brew install cairo
brew install pkg-config
xcode-select --install
&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;여전히 이 문제가 발생하고 있으며 이 페이지를 찾은 사람이 있다면 CentOS 6.6에서 다음과 같이 작동합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;sudo yum install cairo cairo-devel
&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;기본적으로 솔루션은 일반 패키지뿐만 아니라 개발 패키지를 설치해야 합니다(Ubuntu를 제외하고는 모든 디스트리뷰터가 다를 수 있음).&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;저는 @Piyush가 준 단계를 따랐습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 저는 그것을 작동시키기 위해 추가적인 단계가 필요했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;OS X 10.14.5를 사용하고 있습니다.&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&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;brew install pkg-config
brew install cairo
pkg-config --atleast-version=1.12.2 cairo
export PKG_CONFIG_PATH=/usr/X11/lib/pkgconfig/
export PKG_CONFIG_PATH=&quot;${PKG_CONFIG_PATH}:/usr/local/opt/libffi/lib/pkgconfig&quot;
npm install canvas&lt;/code&gt;&lt;/pre&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;/p&gt;&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Ubuntu의 경우 다음과 같은 명령이 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한, 여기 &lt;a href=&quot;https://github.com/Automattic/node-canvas/wiki/Installation:-Ubuntu-and-other-Debian-based-systems&quot; rel=&quot;noreferrer&quot; papago-id=&quot;20-1&quot;&gt;참고&lt;/a&gt; 자료가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$ sudo apt-get update 
$ sudo apt-get install build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev 
&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;Mac에서 사용해 보십시오.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;brew install pkg-config cairo pango libpng jpeg giflib
&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;apt-get을 사용하면 허용된 답은 괜찮습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;YUM/DNF 사용자(Fedora, CentOS, 기타 RHEL 유사 시스템)의 경우 다음을 사용합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;yum install cairo cairo-devel cairomm-devel libjpeg-turbo-devel pango pango-devel pangomm pangomm-devel
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 문제에 부딪혔을 때 문제는 버전이&lt;/font&gt;&lt;/font&gt;&lt;code&gt;pkg-config&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;24&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 가는 길에는 홈브루가 설치된 버전 대신에 chefdk에서 제공한 버전이 있었습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$ which pkg-config
/usr/local/bin/pkg-config

$ eval &quot;$(chef shell-init bash)&quot;
$ which pkg-config
/opt/chefdk/embedded/bin/pkg-config
&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&gt;&lt;/font&gt;&lt;code&gt;eval &quot;$(chef shell-init bash)&quot;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;26&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내 bash 프로필에서 항목.&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;Github https://github.com/chef/&lt;a href=&quot;https://github.com/chef/chef-dk/issues/313&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;27-1&quot;&gt;chef-dk&lt;/a&gt;/issues/313 에서 chefdk의 경로 생성 문제에 대한 더 많은 논의.&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;OSX 10.10.4에 pkg-config를 설치하기만 하면 되었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;brew install pkg-config&lt;/code&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;URL : https://stackoverflow.com/questions/22100213/&lt;a href=&quot;https://stackoverflow.com/questions/22100213/package-cairo-was-not-found-in-the-pkg-config-search-path-node-j-s-install-canv&quot; target=&quot;_blank&quot; papago-id=&quot;29-1&quot;&gt;package-cairo-was-not-found-in-the-pkg-config-search-path-node-j-s-install-canv&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/950</guid>
      <comments>https://lovepro.tistory.com/950#entry950comment</comments>
      <pubDate>Thu, 10 Aug 2023 22:46:41 +0900</pubDate>
    </item>
    <item>
      <title>열 nvarchar 길이를 드롭 없이 변경하는 방법</title>
      <link>https://lovepro.tistory.com/949</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;열 nvarchar 길이를 드롭 없이 변경하는 방법&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;Post&quot;의 &quot;Body&quot; 열 길이를 다음과 같이 변경하려고 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;ALTER TABLE Post ALTER COLUMN Body nvarchar(8000) NOT NULL;
&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;이 열은 nvarchar(4000)로 정의되며 다음 오류가 발생합니다.&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;Msg 2717, Level 16, State 2, Line 1 'Body' 매개 변수에 지정된 크기(8000)가 허용된 최대값(4000)을 초과합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt;&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;대신 Max를 사용합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;열이 VARCHAR로 선언된 경우 8000이면 됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;ALTER TABLE Post ALTER COLUMN Body nvarchar(max) NOT NULL;
&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;ext, 먼저 열의 크기를 변경하고 열에 대한 제약 조건을 변경하기 위해 열에서 키 제약 조건을 삭제했습니다.&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;&amp;gt;  ALTER TABLE MESSAGE_INBOX_VIEWERS DROP CONSTRAINT DF_CONST_TEXT
&amp;gt;  ALTER TABLE MESSAGE_INBOX_VIEWERS ALTER COLUMN TEXT NVARCHAR(MAX) 
&amp;gt;  ALTER TABLE MESSAGE_INBOX_VIEWERS ADD CONSTRAINT DF_CONST_TEXT DEFAULT('') FOR TEXT
&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;DECLARE @DEFCONSTRAINT VARCHAR(1000);
DECLARE @DropDFConstraitCmd  VARCHAR(1000);
DECLARE @AlterDFColumnCmd VARCHAR(1000);
DECLARE @CreateDFConstraitCmd VARCHAR(1000);
DECLARE @CONSTRAINT_SAYI NUMERIC;
SET @DEFCONSTRAINT=(SELECT name
                      FROM sys.sysobjects
                     WHERE type = 'D' AND OBJECT_NAME(parent_obj) = 'TABLENAME' and name like 'DF__TABLENAME__COLUMNNAME%');
SET @CONSTRAINT_SAYI=(SELECT count(*)
                      FROM sys.sysobjects
                     WHERE type = 'D' AND OBJECT_NAME(parent_obj) = 'TABLENAME' and name like 'DF__TABLENAME__COLUMNNAME%');
SET @DropDFConstraitCmd   = ' ALTER TABLE TABLENAME DROP CONSTRAINT ' +@DEFCONSTRAINT;
SET @AlterDFColumnCmd     = ' ALTER TABLE TABLENAME ALTER COLUMN COLUMNNAME nvarchar(max) NOT NULL';
SET @CreateDFConstraitCmd = ' ALTER TABLE TABLENAME ADD CONSTRAINT ' +@DEFCONSTRAINT + ' DEFAULT ('' '') FOR COLUMNNAME ';
if @CONSTRAINT_SAYI &amp;gt; 0
    exec (@DropDFConstraitCmd);
exec (@AlterDFColumnCmd);
exec (@CreateDFConstraitCmd);
&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;대신 NTEXT를 사용하십시오.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;ALTER TABLE Post ALTER COLUMN Body NTEXT NOT NULL;
&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;NTEXT는 NVARCHAR와 비슷하지만 많은 양의 텍스트가 필요한 BODY 필드 또는 주석 필드에 맞게 설계되었습니다.&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;URL : https://stackoverflow.com/questions/45845430/&lt;a href=&quot;https://stackoverflow.com/questions/45845430/how-to-alter-column-nvarchar-length-without-drop&quot; target=&quot;_blank&quot; papago-id=&quot;10-1&quot;&gt;how-to-alter-column-nvarchar-length-without-drop&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/949</guid>
      <comments>https://lovepro.tistory.com/949#entry949comment</comments>
      <pubDate>Thu, 10 Aug 2023 22:45:05 +0900</pubDate>
    </item>
    <item>
      <title>배치 삽입 및 LAST_INSERT_슬리크와 마리아의 아이디DB</title>
      <link>https://lovepro.tistory.com/948</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;배치 삽입 및 LAST_INSERT_&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;슬리크와 마리아의 아이디&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;DB&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;MariaDB 데이터베이스에 데이터를 삽입하려고 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;두 개의 테이블이 있는데 첫 번째 테이블에 (배치 삽입을 사용하여) 행을 삽입하고 새로 삽입된 행의 ID를 사용하여 두 번째 테이블에 두 번째 배치 삽입을 수행해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;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;tests&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;dependent&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;5&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;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;행을 삽입합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;tests&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;다음을 사용하여 배치에서 첫 번째 행의 ID 가져오기&lt;/font&gt;&lt;/font&gt;&lt;code&gt;SELECT LAST_INSERT_ID();&lt;/code&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;첫 번째 행의 ID와 배치의 행 수를 알고 다른 ID를 수작업으로 계산하여 두 번째 표에 삽입할 때 사용합니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&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 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;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음과 같이:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-scala prettyprint-override&quot;&gt;&lt;code&gt;// three sources of 10 random Strings each
val sources = Seq.fill(3)(Source(Seq.fill(10)(Random.alphanumeric.take(3).mkString))).zipWithIndex
val parallelSources: ParSeq[(Source[String, NotUsed], Int)] = sources.par

parallelSources.map { case (source, i) =&amp;gt;
  source
    .grouped(ChunkSize) // performs batch inserts of a given size
    .via(insert(i))
    .zipWithIndex
    .runWith(Sink.foreach { case (_, chunkIndex) =&amp;gt; println(s&quot;Chunk $chunkIndex of source $i  done&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&gt;&lt;/font&gt;&lt;code&gt;Source&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 DB에 쓰는 데이터에 접두사를 사용하기 위해서입니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음은 코드입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;insert&lt;/code&gt; &lt;code&gt;Flow&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 class=&quot;lang-scala prettyprint-override&quot;&gt;&lt;code&gt;def insert(srcIndex: Int): Flow[Seq[String], Unit, NotUsed] = {
  implicit val insertSession: SlickSession = slickSession
  system.registerOnTermination(() =&amp;gt; insertSession.close())

  Flow[Seq[String]]
    .via(Slick.flowWithPassThrough { chunk =&amp;gt;
      (for {
        // insert data into `tests`
        _ &amp;lt;- InsTests ++= chunk.map(v =&amp;gt; TestProj(s&quot;source$srcIndex-$v&quot;))
        // fetch last insert ID and connection ID
        queryResult &amp;lt;- sql&quot;SELECT CONNECTION_ID(), LAST_INSERT_ID();&quot;.as[(Long, Long)].headOption
        _ &amp;lt;- queryResult match {
          case Some((connId, firstIdInChunk)) =&amp;gt;
            println(s&quot;Source $srcIndex, last insert ID $firstIdInChunk, connection $connId&quot;)
            // compute IDs by hand and write to `dependent`
            val depValues = Seq.fill(ChunkSize)(s&quot;source$srcIndex-${Random.alphanumeric.take(6).mkString}&quot;)
            val depRows =
              (firstIdInChunk to (firstIdInChunk + ChunkSize))
                .zip(depValues)
                .map { case (index, value) =&amp;gt; DependentProj(index, value) }

            InsDependent ++= depRows
          case None =&amp;gt; DBIO.failed(new Exception(&quot;...&quot;))
        }
      } yield ()).transactionally
  })
}
&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;InsTests&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;InsDependent&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Slick's입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;TableQuery&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;물건들.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;slickSession&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;서로 다른 각 삽입에 대해 새 세션을 생성하며 다음과 같이 정의됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-scala prettyprint-override&quot;&gt;&lt;code&gt;private def slickSession = {
  val db = Database.forURL(
    url = &quot;jdbc:mariadb://localhost:3306/test&quot;,
    user = &quot;root&quot;,
    password = &quot;password&quot;,
    executor = AsyncExecutor(
      name = &quot;executor&quot;,
      minThreads = 20,
      maxThreads = 20,
      queueSize = 1000,
      maxConnections = 20
    )
  )
  val profile = slick.jdbc.MySQLProfile
  SlickSession.forDbAndProfile(db, profile)
}
&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;문제는 알고리즘의 두 번째 단계에서 반환된 마지막 삽입 ID가 겹친다는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 앱을 실행할 때마다 다음과 같은 내용이 인쇄됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Source 2, last insert ID 6, connection 66
Source 1, last insert ID 5, connection 68
Source 0, last insert ID 7, connection 67
Chunk 0 of source 0  done
Chunk 0 of source 2  done
Chunk 0 of source 1  done
Source 2, last insert ID 40, connection 70
Source 0, last insert ID 26, connection 69
Source 1, last insert ID 27, connection 71
Chunk 1 of source 2  done
Chunk 1 of source 1  done
Chunk 1 of source 0  done
&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;Source&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 ID가 겹칩니다(소스 0 참조).&lt;/font&gt;&lt;/font&gt;&lt;code&gt;7&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;소스 1 보기&lt;/font&gt;&lt;/font&gt;&lt;code&gt;5&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;소스 2 보기&lt;/font&gt;&lt;/font&gt;&lt;code&gt;2&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;20&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;). ID는 에서 시작하는 것이 맞습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;5&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;21&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;테이블을 만든 직후에 더미 행 4개를 추가하기 때문입니다(이 질문의 코드에는 표시되지 않음).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;분명히, 여러 행이 보입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;dependent&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;tests.id&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 일이 있어서는 안 됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;24&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;마지막 삽입 ID는 단일 연결을 의미하는 것으로 알고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;전체 흐름이 트랜잭션(Slick's를 통해)으로 포장된다는 점을 고려할 때 서로 다른 세 개의 연결이 중복되는 ID를 보는 것이 어떻게 가능합니까?&lt;/font&gt;&lt;/font&gt;&lt;code&gt;transactionally&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&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;innodb_autoinc_lock_mode=1&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;innodb_autoinc_lock_mode=0&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;28&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것은 말이 됩니다, InnoDB는 잠글 것이기 때문입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;tests&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;29&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;전체 배치 삽입이 종료될 때까지.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;35&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Georg의 답변 후 &lt;strong papago-id=&quot;35-0&quot;&gt;업데이트&lt;/strong&gt;:&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;프로젝트의 다른 제약 조건에 대해서는 MariaDB 10.4와 호환되는 솔루션을 원합니다. 제가 이해하기로는, 이 솔루션은&lt;/font&gt;&lt;/font&gt;&lt;code&gt;INSERT...RETURNING&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;의 Slick의 Slick's.&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;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;returning&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;38&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기서 &lt;a href=&quot;https://github.com/slick/slick/issues/1272&quot; papago-id=&quot;38-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;보고&lt;/a&gt;된 것처럼 상당히 안 좋습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;MariaDB 10.4와 10.5 모두에서 테스트를 했는데, 쿼리 로그에 따르면 Slick은 싱글을 실행합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;INSERT INTO&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;34&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;일괄적인 것이 아닌 진술.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font 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;35&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;나는 또한 자동 증가 값에 대한 가정을 하는 것을 이해한다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;1&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 class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이는 이상적이지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;font 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;LAST_INSERT_ID()를 기준으로 다음 값을 생성할 수 없습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;43&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;동시에 롤백된 두 번째 트랜잭션이 있을 수 있으므로 auto_incremented ID에 공백이 있을 수 있습니다.&lt;/font&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;44&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;LAST_INSERT_를 증분하여 행 수에 걸쳐 반복&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;ID 값은 세션 변수 @@auto_increment_increment(특히 1이 아닌 다중 마스터 복제)의 값에 따라 달라지기 때문에 작동하지 않습니다.&lt;/font&gt;&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;p papago-id=&quot;45&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;대신 RETURNING을 사용하여 삽입된 행의 ID를 가져와야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;MariaDB [test]&amp;gt; create table t1 (a int not null auto_increment primary key);
Query OK, 0 rows affected (0,022 sec)

MariaDB [test]&amp;gt; insert into t1 (a) values (1),(3),(NULL), (NULL) returning a;
+---+
| a |
+---+
| 1 |
| 3 |
| 4 |
| 5 |
+---+
4 rows in set (0,006 sec)
&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;URL : https://stackoverflow.com/questions/73652590/&lt;a href=&quot;https://stackoverflow.com/questions/73652590/batch-inserts-and-last-insert-id-with-slick-and-mariadb&quot; target=&quot;_blank&quot; papago-id=&quot;46-1&quot;&gt;batch-inserts-and-last-insert-id-with-slick-and-mariadb&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/948</guid>
      <comments>https://lovepro.tistory.com/948#entry948comment</comments>
      <pubDate>Thu, 10 Aug 2023 22:39:54 +0900</pubDate>
    </item>
    <item>
      <title>클래스 메서드는 &amp;quot;TypeError: ...키워드 인수에 대한 여러 값을 받았습니다...&amp;quot;를 생성합니다.</title>
      <link>https://lovepro.tistory.com/947</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;클래스 메서드는 &quot;TypeError: ...키워드 인수에 대한 여러 값을 받았습니다...&quot;를 생성합니다.&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;키워드 인수를 사용하여 클래스 메서드를 정의하면 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;class foo(object):
  def foodo(thing=None, thong='not underwear'):
    print thing if thing else &quot;nothing&quot; 
    print 'a thong is',thong
&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;TypeError&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;myfoo = foo()
myfoo.foodo(thing=&quot;something&quot;)

...
TypeError: foodo() got multiple values for keyword argument 'thing'
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;무슨 일이야?&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;문제는 파이썬에서 클래스 메소드에 전달된 첫 번째 인수가 항상 메소드가 호출되는 클래스 인스턴스의 복사본이라는 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;self&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;class foo(object):
  def foodo(self, thing=None, thong='not underwear'):
    print thing if thing else &quot;nothing&quot; 
    print 'a thong is',thong
&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;strong papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;설명:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;없이.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;self&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;myfoo.foodo(thing=&quot;something&quot;)&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;실행됨,&lt;/font&gt;&lt;/font&gt;&lt;code&gt;foodo&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;(myfoo, thing=&quot;something&quot;)&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;myfoo&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러면 에 할당됩니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;thing&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;thing&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;&quot;something&quot;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;로.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;thing&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 예외로 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;시연을 위해 원래 코드로 실행해 보십시오.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;myfoo.foodo(&quot;something&quot;)
print
print myfoo
&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;__main__.foo object at 0x321c290&amp;gt;
a thong is something

&amp;lt;__main__.foo object at 0x321c290&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;'thing'에 클래스 'foo'의 인스턴스 'myfoo'에 대한 참조가 할당되었음을 알 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://docs.python.org/2/tutorial/controlflow.html#keyword-arguments&quot; papago-id=&quot;21-1&quot;&gt;문서&lt;/a&gt;의 이 섹션에서는 함수 인수의 작동 방식에 대해 설명합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;유익한 게시물 감사합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;TypeError: foodo()가 키워드 인수 'thing'에 대한 여러 값을 얻었다&quot;는 메시지가 나타나면 함수를 호출할 때 실수로 '자기'를 매개 변수로 전달하는 것일 수도 있습니다(아마도 클래스 선언에서 줄을 복사했기 때문입니다). 이는 급할 때 일반적인 오류입니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 명백할 수도 있지만, 전에 그것을 본 적이 없는 사람에게 도움이 될 수도 있습니다.&lt;/font&gt;&lt;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; def foodo(thing=None, thong='not underwear'):
...     print thing if thing else &quot;nothing&quot;
...     print 'a thong is',thong
...
&amp;gt;&amp;gt;&amp;gt; foodo('something', thing='everything')
Traceback (most recent call last):
  File &quot;&amp;lt;stdin&amp;gt;&quot;, line 1, in &amp;lt;module&amp;gt;
TypeError: foodo() got multiple values for keyword argument 'thing'
&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;&amp;gt;&amp;gt;&amp;gt; class Foo():
...     def bar(self, bar, **kwargs):
...             print(bar)
... 
&amp;gt;&amp;gt;&amp;gt; kwgs = {&quot;bar&quot;:&quot;Barred&quot;, &quot;jokes&quot;:&quot;Another key word argument&quot;}
&amp;gt;&amp;gt;&amp;gt; myfoo = Foo()
&amp;gt;&amp;gt;&amp;gt; myfoo.bar(&quot;fire&quot;, **kwgs)
Traceback (most recent call last):
File &quot;&amp;lt;stdin&amp;gt;&quot;, line 1, in &amp;lt;module&amp;gt;
TypeError: bar() got multiple values for argument 'bar'
&amp;gt;&amp;gt;&amp;gt; 
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;fire&quot;가 'bar' 인수에 허용되었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런데도 또 다른 '바' 주장이 Kwargs에 존재합니다.&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;메서드에 전달하기 전에 키워드 인수를 kwargs에서 제거해야 합니다.&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;class foo(object):
    @staticmethod
    def foodo(thing=None, thong='not underwear'):
        print thing if thing else &quot;nothing&quot; 
        print 'a thong is',thong
&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;blockquote&gt; 
 &lt;p papago-id=&quot;29&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;호출 함수에서 키워드 인수와 함께 잘못된 위치 순서로 위치 매개 변수를 전달하려고 할 때 발생합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;&lt;code&gt;there is difference between parameter and argument&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;a href=&quot;http://www.cryptroix.com/?p=67&quot; papago-id=&quot;30-1&quot; rel=&quot;nofollow&quot;&gt;python의 Arguments and Parameter&lt;/a&gt;에 대해 자세히 읽을 수 &lt;a href=&quot;http://www.cryptroix.com/?p=67&quot; papago-id=&quot;30-1&quot; rel=&quot;nofollow&quot;&gt;있습니다&lt;/a&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;def hello(a,b=1, *args):
   print(a, b, *args)


hello(1, 2, 3, 4,a=12)
&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;is 위치 매개 변수&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;b=1은 키워드 및 기본 매개 변수입니다.&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;*args는 가변 길이 매개 변수입니다.&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;그러나 우리는 호출 함수의 위치에서 인수 1을 전달하고 키워드 인수로 처리하여 a에 값을 제공합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이제 a에는 두 가지 값이 있습니다.&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;하나는 위치 값: a=1&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;두 번째는 a=12인 키워드 값입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;h1 papago-id=&quot;38&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;해결책&lt;/font&gt;&lt;/h1&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;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;hello(1, 2, 3, 4,a=12)&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;hello(1, 2, 3, 4,12)&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;따라서 이제 a는 1인 하나의 위치 값만 얻고 b는 2 값을 얻고 나머지 값은 *args(변수 길이 매개 변수)를 얻습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;h1 papago-id=&quot;42&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;추가 정보&lt;/font&gt;&lt;/h1&gt; 
&lt;p papago-id=&quot;43&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;만약 우리가 *args가 2,3,4를 얻어야 하고 a가 1을 받아야 하고 b가 12를 받아야 합니다.&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;br&gt; &lt;code&gt;def hello(a,*args,b=1): pass hello(1, 2, 3, 4,b=12)&lt;/code&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;45&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;더 많은 것:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;def hello(a,*c,b=1,**kwargs):
    print(b)
    print(c)
    print(a)
    print(kwargs)

hello(1,2,1,2,8,9,c=12)
&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;1

(2, 1, 2, 8, 9)

1

{'c': 12}
&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;또한 jquery agax to url을 사용하여 'request' 매개 변수를 포함하지 않는 함수로 되돌리는 경우 Django에서 이 문제가 발생할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$.ajax({
  url: '{{ url_to_myfunc }}',
});


def myfunc(foo, bar):
    ...
&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;URL : https://stackoverflow.com/questions/18950054/&lt;a href=&quot;https://stackoverflow.com/questions/18950054/class-method-generates-typeerror-got-multiple-values-for-keyword-argument&quot; target=&quot;_blank&quot; papago-id=&quot;48-1&quot;&gt;class-method-generates-typeerror-got-multiple-values-for-keyword-argument&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/947</guid>
      <comments>https://lovepro.tistory.com/947#entry947comment</comments>
      <pubDate>Thu, 10 Aug 2023 22:31:23 +0900</pubDate>
    </item>
    <item>
      <title>'XXX' 유형을 로드할 수 없습니다.전역'</title>
      <link>https://lovepro.tistory.com/946</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;'XXX' 유형을 로드할 수 없습니다.&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;프로젝트를 ASP.NET 1.1에서 ASP.NET 2.0으로 마이그레이션하는 중에 이 오류가 계속 발생합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;글로벌은 추가하지 않기 때문에 실제로 필요하지 않지만 제거한 후 오류가 더 많이 발생합니다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;3-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;x86&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;bin\x86\Debug&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;bin&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&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;bin&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;ul&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;IIS 가상 디렉터리를 계속 사용하는 경우 올바른 디렉터리를 가리키고 있고 ASP.NET 버전이 설정되어 있는지 확인하십시오. ASP.NET 2.0으로 설정되어 있는지 확인합니다.&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;빈/디버깅/obj를 모두 지웁니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;em papago-id=&quot;11-1&quot;&gt;클린&lt;/em&gt; 솔루션을 수행한 다음 &lt;em papago-id=&quot;11-3&quot;&gt;빌드&lt;/em&gt; 솔루션을 &lt;em papago-id=&quot;11-3&quot;&gt;수행&lt;/em&gt;합니다.&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&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;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;솔루션에서 글로벌을 제거한 후 저장하고 닫은 후 다시 추가합니다. ASPX 파일의 모든 스크립트 태그가 올바른 태그를 가리키는지 확인하십시오.&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;em papago-id=&quot;14-1&quot;&gt;모든&lt;/em&gt; 코드 및 프로젝트 파일을 다시 실행하는 웹 &lt;em papago-id=&quot;14-1&quot;&gt;응용&lt;/em&gt; 프로그램으로 &lt;em papago-id=&quot;14-1&quot;&gt;변환&lt;/em&gt; 도구를 실행할 수 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;IIS Express에서 잘못된 루트 디렉토리를 사용하고 있습니다(&lt;a href=&quot;https://stackoverflow.com/questions/15818364/vs-2012-launching-app-based-on-wrong-path&quot; papago-id=&quot;15-1&quot;&gt;잘못된&lt;/a&gt; 경로를 &lt;a href=&quot;https://stackoverflow.com/questions/15818364/vs-2012-launching-app-based-on-wrong-path&quot; papago-id=&quot;15-1&quot;&gt;기반&lt;/a&gt;으로 한 &lt;a href=&quot;https://stackoverflow.com/questions/15818364/vs-2012-launching-app-based-on-wrong-path&quot; papago-id=&quot;15-1&quot;&gt;VS 2012&lt;/a&gt; 앱 &lt;a href=&quot;https://stackoverflow.com/questions/15818364/vs-2012-launching-app-based-on-wrong-path&quot; papago-id=&quot;15-1&quot;&gt;시작의 답변&lt;/a&gt; 참조).&lt;/font&gt;&lt;/p&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;VS를 사용한 후에는 반드시 종료해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것들은 제가 시도해 볼 줄 아는 것들입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그들 중 한 명이 당신을 위해 일하기를 바랍니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Global.asax.(vb|cs)가 부분 클래스로 제대로 변환되지 않았을 때 발생합니다.&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;가장 빠른 해결책은 클래스 이름 'Global'을 이렇게 [괄호 괄호]로 묶는 것입니다(VB).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;네트):&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Public Class [Global]
    Inherits System.Web.HttpApplication
    ...
&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;기존 global.asax 파일을 삭제하고 새 파일을 추가하면 이 오류가 지워집니다.&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;Visual Studio 2010을 사용하는 경우 구성 배포 유형을 변경할 때 이 오류가 발생할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;세 가지 유형은 x86, x64 및 혼합 모드입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;솔루션의 모든 프로젝트에 대해 혼합 모드 설정으로 변경하면 문제가 해결됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;ASP.NET 웹 사이트의 경우 bin, Lib 파일을 삭제하고 temp 디렉토리 출력을 변경하는 것을 잊지 마십시오.&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;네트 1.1.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;앱을 2.0으로 업그레이드하고 웹 애플리케이션으로 변환했지만 앱 풀은 변경하지 않았습니다.&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-0&quot;&gt;버전 정보:&lt;/strong&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Microsoft .NET Framework 버전: 1.1.4322.2490, ASP.NET 버전: 1.1.4322.2494&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&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;&amp;lt;clear /&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&gt;&lt;code&gt;&amp;lt;assemblies&amp;gt;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;성구섹션.&lt;/font&gt; &lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;이 없는 여러 &lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;이 있고 다른 &lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;을 받지 않기 &lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;운영 환경에서는 동일한 호스팅 계획에 관련이 없는 여러 애플리케이션이 있고 다른 애플리케이션에 의해 영향을 받지 않기 위해 이 애플리케이션이 필요했기 때문에 이를 추가했습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font 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;/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;주소의 포트 번호(localhost:)를 변경하는 것은 나에게 효과가 있었습니다 :)&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;Debug에서 Release로 전환하고 프로그램을 실행한 다음 Debug로 다시 전환하여 이 오류를 해결했습니다.&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;Visual Studio를 다시 시작하는 것을 포함하여 다른 모든 것을 시도했지만 아무 것도 작동하지 않았습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;32&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;서버에 앱을 설치할 때도 같은 문제가 발생했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것은 결국 설치 프로그램 프로젝트가 되었고, 웹 앱을 실행하는 데 필요한 모든 파일을 설치하는 것이 아니었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;어디서 고장이 났는지 알아보려고 했지만 결국 프로젝트를 이전 버전으로 되돌려서 수리해야 했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이게 누군가에게 도움이 되길...&lt;/font&gt;&lt;/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;a href=&quot;https://stackoverflow.com/questions/755645/asp-net-mvc-1-0-afterbuilding-views-fails-on-tfs-build&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;global.asax 파일에서 Language=&quot;c#&quot;을(를) 제거하여 문제를 해결했습니다.&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;저의 경우, 온라인 사이트를 로컬로 복제하여 Utildev Cassini for asp.net 2.0에서 로컬로 이 오류를 수신했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 global.asax만 로컬로 복사하고 App_code의 일부는 복사하지 않은 것으로 드러났습니다.&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;Microsoft Dynamics NAV Web Client에 액세스하려고 하면 다음 오류가 발생합니다.&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;어셈블리 'System'의 'HttpModule'입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;서비스 모델, 버전=3.0.0.0, Culture=중립, 공개 키&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Token=b77a5c561934e089 IIS를 실행 중인 컴퓨터에 여러 버전의 .NET Framework가 있고 IIS가 .NET Framework 4.0 이후 또는 윈도우즈 Communication Foundation의 서비스 모델이 등록되기 전에 설치된 경우 이 오류가 발생할 수 있습니다.&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;윈도우즈 7 및 윈도우즈 서버 2008의 경우 ASP.NET IIS 등록 도구(aspnet_regiis.exe,)를 사용하여 올바른 버전의 ASP.NET을 등록합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;aspnet_regis에 대한 자세한 내용은 다음과 같습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Microsoft 웹 사이트에서 ASP.NET IIS 등록 도구를 참조하십시오.&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;a href=&quot;https://www.youtube.com/watch?v=LNwpNqgX7qw&quot; rel=&quot;nofollow&quot; papago-id=&quot;39-1&quot;&gt;보십시오.&lt;/a&gt; https://www.youtube.com/watch?v=LNwpNqgX7qw&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;프로젝트의 컴파일된 dll이 올바른 bin 폴더에 있는지 확인합니다.&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;저의 경우, 서브 프로젝트의 컴파일된 디렉토리를 메인 프로젝트의 bin 폴더로 변경했을 때 작동했습니다.&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;프로젝트 이름과 클래스 이름을 변경했지만 &quot;내 프로젝트&quot; 또는 프로젝트 속성에서 &quot;어셈블리 이름&quot; 또는 &quot;루트 네임스페이스&quot;를 변경하지 않았습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;43&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;obj, bin 폴더를 삭제하고 재구성하여 문제를 해결&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;44&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 이런 문제가 있었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;45&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/a/8315381/1038866&quot; papago-id=&quot;45-0&quot;&gt;CREATOR&lt;/a&gt; OWNER에게 Windows Temp 폴더에 대한 모든 권한을 부여하여 이 &lt;a href=&quot;https://stackoverflow.com/a/8315381/1038866&quot; papago-id=&quot;45-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;아마도 얼마 전에 컴퓨터에서 콤보픽스를 실행했기 때문일 것입니다.&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;URL : https://stackoverflow.com/questions/54001/&lt;a href=&quot;https://stackoverflow.com/questions/54001/could-not-load-type-xxx-global&quot; target=&quot;_blank&quot; papago-id=&quot;46-1&quot;&gt;could-not-load-type-xxx-global&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/946</guid>
      <comments>https://lovepro.tistory.com/946#entry946comment</comments>
      <pubDate>Sun, 11 Jun 2023 21:40:29 +0900</pubDate>
    </item>
    <item>
      <title>NGINX를 Apache에 대한 역방향 프록시로 사용할 때 Wordpress Permalinks가 404를 반환합니다.</title>
      <link>https://lovepro.tistory.com/945</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;NGINX를 Apache에 대한 역방향 프록시로 사용할 때 Wordpress Permalinks가 404를 반환합니다.&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;NGINX가 프록시를 역방향으로 전환하고 포트 8086에서 Apache에서 실행되는 WordPress 사이트에 대한 SSL Termination을 제공하도록 하려고 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;나는 NGINX가 정적 파일을 처리하고 PHP 요청만 Apache에 프록시 처리하기를 원합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;표준 링크를 사용하여 이 작업을 수행하는 데 성공했습니다(예&lt;a href=&quot;https://example.com/?post=274&quot; papago-id=&quot;2-1&quot; rel=&quot;noreferrer&quot;&gt;:&lt;/a&gt; https://example.com/ ?&lt;a href=&quot;https://example.com/?post=274&quot; papago-id=&quot;2-1&quot; rel=&quot;noreferrer&quot;&gt;post=274가&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;모든 종류의 퍼멀 링크를 활성화하면 wp-admin과 마찬가지로 홈 페이지가 로드되지만&lt;a href=&quot;https://example.com/what-we-do/&quot; papago-id=&quot;3-1&quot; rel=&quot;noreferrer&quot;&gt; &lt;/a&gt;https://example.com/&lt;a href=&quot;https://example.com/what-we-do/&quot; papago-id=&quot;3-1&quot; rel=&quot;noreferrer&quot;&gt;what-we-do&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;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;NGINX 로그를 보니, 그렇군요.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;2018/05/23 09:36:40 [error] 7472#0: *1 &quot;/var/www/example.com/live_site/what-we-do/index.php&quot; is not found (2: No such file or directory), client: xxx.xxx.xxx.xxx, server: example.com, request: &quot;GET /what-we-do/ HTTP/2.0&quot;, host: &quot;example.com&quot;, referrer: &quot;https://example.com/?post=274&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;따라서 NGINX는 apache에 전달하는 대신 정적 경로/파일로 /permalink/index.php를 찾으려고 합니다.&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;내 NGINX 구성은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;upstream example_apache {
    ip_hash;
    server 127.0.0.1:8086;
}

server {
# HTTP/HTTPS Server Block
# General Config
    listen                      [::]:80;
    listen                      80;
    listen                      [::]:443 http2 ssl;
    listen                      443 http2 ssl;
    server_name                 example.com
                                www.example.com;

    root                        /var/www/example.com/live_site;
    access_log                  /var/log/nginx/access-example.com.log main;
    error_log                   /var/log/nginx/error-example.com.log;
    index                       index.php;

#SSL Cert Configuration
# Check SSL config at https://www.ssllabs.com/ssltest/
    ssl_prefer_server_ciphers   on;
    ssl_protocols               TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers                 &quot;ECDHE-ECDSA-CHACHA20-POLY1305 ECDHE-RSA-CHACHA20-POLY1305 EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH DHE-RSA-CHACHA20-POLY1305 EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4 !SEED !CAMELLIA&quot;;
    ssl_session_cache           shared:SSL:100m;
    ssl_session_timeout         180m;
    ssl_dhparam                 /var/www/certs/dh4096.pem;

    ssl_certificate             /var/www/certs/lets_encrypt/web01.example.com/web01.example.com.fullchain.secp384r1.cer;
    ssl_certificate_key         /var/www/certs/lets_encrypt/web01.example.com/web01.example.com.secp384r1.key;
    ssl_certificate             /var/www/certs/lets_encrypt/web01.example.com/web01.example.com.fullchain.rsa4096.cer;
    ssl_certificate_key         /var/www/certs/lets_encrypt/web01.example.com/web01.example.com.rsa4096.key;

# Enable HSTS #Deploy in stages to prevent extended loss to site.
    add_header                  Strict-Transport-Security &quot;max-age=300; includeSubdomains;&quot;; #300s-5min TTL Testing
    #add_header                 Strict-Transport-Security &quot;max-age=604800; includeSubdomains;&quot;; #1week TTL Testing
    #add_header                 Strict-Transport-Security &quot;max-age=2592000; includeSubdomains;&quot;; #1month TTL Testing
    #add_header                 Strict-Transport-Security &quot;max-age=63072000; includeSubDomains; preload&quot;; #10886400s-126days Min for Preload
    #add_header                 Strict-Transport-Security &quot;max-age=63072000; includeSubDomains; preload&quot;; #63072000s-2years Production Value

# OCSP Configuration
    ssl_trusted_certificate     /var/www/certs/lets_encrypt/web01.example.com/web01.example.com.fullchain.secp384r1.cer;
    ssl_stapling                on;
    ssl_stapling_verify         on;
    resolver                    8.8.4.4 8.8.8.8 valid=300s;
    resolver_timeout            10s;

# LetEncrypt webroot alias
    location /.well-known/acme-challenge/ {
        alias /var/www/le_root/.well-known/acme-challenge/;
    }
# www to non-www rewrite
# Redirect to the correct place, if needed
    set $https_redirect 0;
    if ($server_port = 80) { set $https_redirect 1; }
    if ($host ~ '^www\.') { set $https_redirect 1; }
    if ($https_redirect = 1) {
        return 301 https://example.com$request_uri;
    }

# Wordpress entry point
    location / {
        #Try                    file dir    index.php else 404
        try_files               $uri $uri/ /index.php?$args =404;

        #All Files except for *.php
        location ~ .+(?&amp;lt;!\.php)$ {
            location ~ ^[^.]+\.[^.]+$ {
                expires         max;
                add_header      Cache-Control public;
                break;
            }
        }

        #Only *.php files
        location ~ \.php$ {
            proxy_set_header    X-Real-IP           $remote_addr;
            proxy_set_header    Host                $host;
            proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
            proxy_set_header    X-Forwarded-Proto   $scheme;
            proxy_pass_header                       Set-Cookie;

            proxy_set_header    SSL_PROTOCOL        $ssl_protocol;
            proxy_set_header    SSL_CLIENT_CERT     $ssl_client_cert;
            proxy_set_header    SSL_CLIENT_VERIFY   $ssl_client_verify;
            proxy_set_header    SSL_SERVER_S_DN     $ssl_client_s_dn;

            proxy_pass                              http://example_apache;
        }
    }
}
&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;이 문제는 프록시 패스 부분에도 도달하지 못하고 있으며 엄격하게 NGINX와 관련된 것으로 보이기 때문에 (내가 알기로는) 다음 사항이 적용되지 않습니다.&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;내 apache에는 다음이 포함된 .htaccess 파일이 있습니다.&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;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 나의 wp-config.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;php의 특징:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;// If WordPress is behind reverse proxy
// which proxies https to http
if ( (!empty( $_SERVER['HTTP_X_FORWARDED_HOST'])) ||
 (!empty( $_SERVER['HTTP_X_FORWARDED_FOR'])) ) {

$_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];

$_SERVER['HTTPS'] = 'on';
}
&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;&amp;lt;VirtualHost *:8086&amp;gt;
ServerAdmin webmaster@localhost
DocumentRoot /var/www/example.com/live_site
ServerName  example.com
ServerAlias www.example.com


ErrorLog ${APACHE_LOG_DIR}/example.com.error.log
CustomLog ${APACHE_LOG_DIR}/example.com.access.log combined

Alias &quot;/.well-known/acme-challenge/&quot; &quot;/var/www/le_root/.well-known/acme-challenge/&quot;

&amp;lt;Directory /&amp;gt;
    Options FollowSymLinks
    AllowOverride None
&amp;lt;/Directory&amp;gt;
&amp;lt;Directory /var/www/example.com/live_site&amp;gt;
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
&amp;lt;/Directory&amp;gt;

&amp;lt;/VirtualHost&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;또한 Apache에 직접 연결하면 모든 페이지 퍼멀 링크가 올바르게 표시됩니다. (예: http&lt;a href=&quot;http://127.0.0.1:8086/what-we-do/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;11-1&quot;&gt;://127.0.0.1:8086/what-we-do/&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 class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;NGINX 제1.13.9절&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;Apache 2.4.33 mpm_prefork&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;PHP § 7.1&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;br&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;NGINX가 퍼멀 링크를 아파치에 올바르게 프록시할 수 있도록 도와주시면 감사하겠습니다!&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;이 명령을 사용하여 mod_rewrite를 사용하도록 설정하거나 확인합니다.&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;sudo2 enmod 다시 쓰기&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;NGINX를 사용하여 Prod 환경을 Docker로 마이그레이션할 때 동일한 오류가 발생했지만 Apache에 대해 역방향 프록시를 사용하지 않았습니다.&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;&lt;font class=&quot;papago-parent&quot;&gt;그 이유는 제가 그것을 바꿔야 했기 때문입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;wp_options&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;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&gt;&lt;code&gt;SELECT * FROM wp_options WHERE option_name='siteurl' OR option_name='home';&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;WordPress Config가 탐색하려는 현재 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 class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 프록시를 만들고 이제 다른 포트나 URL 뒤에 WordPress 사이트가 있으므로 이러한 값을 변경해야 할 수 있습니다.&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;이 명령을 실행하면 사이트에서 접두사로 사용 중인 두 URL 목록을 받게 됩니다.&lt;/font&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;그런 다음 새 백엔드 URL + 포트의 위치와 일치하도록 URL을 수정했습니다.&lt;/font&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;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;wp-config.php&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; define('WP_HOME','http://local.www.greenhousetreatment.com:8080');
 define('WP_SITEURL','http://local.www.greenhousetreatment.com:8080');
&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;SQL에서 위의 명령을 수동으로 사용한 다음, 해당 값을 PORT와 웹 사이트의 URL에 모두 일치하도록 업데이트해야 했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;일반적으로 역방향 프록시에서는 프록시 URL을 입력하면 서비스 IP 및 포트에 도달합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;서비스 IP와 PORT는 프록시에 대해 전혀 관심이 없기 때문에 필요한 작업을 수행합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것은 심지어 대리인에 대해서도 알지 못합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;정말입니까?&lt;/font&gt;&lt;/font&gt;&lt;code&gt;wp_options&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&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;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;30&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것이 빛을 발할 수 있기를 바랍니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;31&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저도 오늘 같은 문제를 겪고 있습니다. 그리고 제가 이 문제를 해결하기 위해 무엇을 했는지도 당신과 마찬가지입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;nginx 구성을 수정하고 다음을 추가/이동합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;index index.php&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;location /&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;블록으로 막다&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;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;index index.php&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;strong papago-id=&quot;14-1&quot;&gt;서버&lt;/strong&gt; 블록에서 &lt;strong papago-id=&quot;14-1&quot;&gt;위치&lt;/strong&gt; &lt;strong papago-id=&quot;14-3&quot;&gt;블록&lt;/strong&gt;에 추가합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;server {
   ...
   root                        /var/www/example.com/live_site;
   access_log                  /var/log/nginx/access-example.com.log main;
   error_log                   /var/log/nginx/error-example.com.log;
   #index                       index.php; ##REMOVE THIS ONE 
   ...
# Wordpress entry point
     location / {
        index index.php index.html ##THEN ADD HERE
        #Try                    file dir    index.php else 404
         try_files               $uri $uri/ /index.php?$args =404;
       ...
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 확인하는 것을 잊지 마세요.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.htaccess&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;WordPress 퍼멀링크용인지 확인하거나, 워드프레스 설정으로 이동한 후 퍼멀링크 &lt;strong papago-id=&quot;16-1&quot;&gt;설정을 게시&lt;/strong&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;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/50491693/&lt;a href=&quot;https://stackoverflow.com/questions/50491693/wordpress-permalinks-return-404-when-using-nginx-as-a-reverse-proxy-to-apache&quot; target=&quot;_blank&quot; papago-id=&quot;39-1&quot;&gt;wordpress-permalinks-return-404-when-using-nginx-as-a-reverse-proxy-to-apache&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/945</guid>
      <comments>https://lovepro.tistory.com/945#entry945comment</comments>
      <pubDate>Sun, 11 Jun 2023 21:34:09 +0900</pubDate>
    </item>
    <item>
      <title>PLS-00103: 다음 중 하나를 예상할 때 &amp;quot;파일 끝&amp;quot; 기호가 발생했습니다.;</title>
      <link>https://lovepro.tistory.com/944</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;PLS-00103: 다음 중 하나를 예상할 때 &quot;파일 끝&quot; 기호가 발생했습니다.;&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음 스크립트를 실행 중입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;BEGIN
    select department_name 
    from egpl_department 
    where department_id in (select department_id 
                            from egpl_casemgmt_activity);
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;그리고 오류가 발생했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;PLS-00103: Encountered the symbol &quot;end-of-file&quot; when 
expecting one of the following: 
;
&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;PL에는 PL/SQL &quot; &quot;select &quot; select &quot;가 있어야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;into&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;pre&gt;&lt;code&gt;DECLARE
 v_department egpl_department.department_name%type;
BEGIN 
  select department_name 
  into   v_department
  from   egpl_department 
  where  department_id in (select department_id from egpl_casemgmt_activity); 

  -- Do something useful with v_department
END; 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;PLS-00103&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;항상 구문 오류가 발생했기 때문에 컴파일러가 헐거움을 의미합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;메시지 텍스트에 다음과 같은 내용이 표시되면 매우 유용할 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;You have made a syntax error, please check your code&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;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;어쨌든 이 경우 오류는 PL/SQL에서 select 문이 변수를 채워야 한다는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이는 T-SQL과는 다른 동작입니다.&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;Oracle 문서는 포괄적이고 온라인으로 제공됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기에서 SQL 쿼리를 PL/&lt;a href=&quot;https://docs.oracle.com/en/database/oracle/oracle-database/18/lnpls/static-sql.html#GUID-E6BCE8B1-71AA-459F-845F-2C34541A534D&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;8-1&quot;&gt;SQL&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;왜냐하면 간단한 구문 boomer를 수정하면 TOO_MANY_ROWS를 누를 것이기 때문입니다(부서가 두 개 이상이라고 가정).&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;PL/SQL에서는 일부 데이터만 선택할 수 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;결과는 어디로 가야 합니까?&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;옵션은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제다한을 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;BEGIN&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;END&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;SQL*plus와 함께 SELECT를 실행하거나 SQL 문을 실행하고 결과를 표시할 수 있는 기타 도구를 실행합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;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;SELECT department_name INTO dep_name&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;PL행을 ) PL/SQL 파일(SELECT 파일)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;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;SELECT department_name BULK COLLECT INTO dep_name_table&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;결과를 PL/SQL 표에 넣는 방법(여러 행에 대해 작동)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또는 어떤 환경에서 SQL 또는 PL/SQL 코드를 실행할 것인지 설명할 수 있습니다.&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;too_many_rows 문제를 피하기 위해 커서를 사용할 수 있습니다. (나는 이것을 테스트하지 않았지만, 이 줄을 따라)&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;DECLARE 

 v_department egpl_department.department_name%type;

 cursor c_dept IS
  select department_name 
  into   v_department
  from   egpl_department 
  where  department_id in (select department_id from egpl_casemgmt_activity)
  order by department_name; 

BEGIN 

  OPEN c_dept;
  FETCH c_dept INTO v_department;
  CLOSE c_dept;

  -- do something with v_department

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;이렇게 하면 테이블에서 찾은 첫 번째 값이 v_department에 저장됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;ORDER BY 절을 사용하여 반환된 행이 두 개의 다른 값일 가능성이 있다고 가정할 때 필요한 행인지 확인합니다.&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;하지만 Oracle SQL Developer에는 이 문제를 에뮬레이트할 수 있는 재미있는 버그가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;exec dbowner.sp1 ( p1, p2, p3); -- notes about the fields
&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;오류 보고서 - ORA-06550: 줄 1, 열 362: PLS-00103: 다음 중 하나가 예상될 때 &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;begin case 선언 종료 예외 종료 for goto if loop mod null pragma raise 반환 선택 업데이트를 선택하는 동안 &amp;lt;&amp;lt; close current delete fetch lock insert open rollback savepoint set sql execute for all merge pipe 06550.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;00000 - &quot;라인 %s, 열 %s:\n%s&quot; *원인: 일반적으로 PL/SQL 컴파일 오류입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;*조치:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;exec dbowner.sp1 ( p1, p2, p3); 
-- notes about the fields
&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;PL/SQL 프로시저가 성공적으로 완료되었습니다.&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;DELPARE는 익명 PL/SQL 블록 및 중첩된 PL/SQL 블록에서만 사용됩니다.&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;프로시저가 중첩된 PL/SQL 블록인 경우를 제외하고 프로시저 블록에서 새 변수를 '도입'하기 전에 DELARE 키워드를 사용할 필요가 없습니다.&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;아래의 'DELCARE' 키워드 없이 변수를 선언하는 방법의 예입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;29&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;CREATE OR REPLACE PROCEDURE EXAMPLE( A IN NUMBER, B OUT VARCHAR2 )
IS  
  num1 number;
BEGIN  
  num1:=1;
  insert into a (year) values(7);    
END; 
&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;p&gt;&lt;a href=&quot;https://stackoverflow.com/questions/16830152/create-procedure-in-oracle&quot; papago-id=&quot;31&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;오라클에서 프로시저 생성&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p papago-id=&quot;32&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/6967543/&lt;a href=&quot;https://stackoverflow.com/questions/6967543/pls-00103-encountered-the-symbol-end-of-file-when-expecting-one-of-the-follow&quot; target=&quot;_blank&quot; papago-id=&quot;32-1&quot;&gt;pls-00103-encountered-the-symbol-end-of-file-when-expecting-one-of-the-follow&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/944</guid>
      <comments>https://lovepro.tistory.com/944#entry944comment</comments>
      <pubDate>Sun, 11 Jun 2023 21:30:37 +0900</pubDate>
    </item>
    <item>
      <title>여러 벡터에서 공통 요소를 찾는 방법은 무엇입니까?</title>
      <link>https://lovepro.tistory.com/943</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;a &amp;lt;- c(1,3,5,7,9)
b &amp;lt;- c(3,6,8,9,10)
c &amp;lt;- c(2,3,4,5,7,9)
&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;위 벡터에서 공통 요소를 얻고 싶습니다(예: 3과 9).&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;intersect(intersect(a,b),c)
&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;Reduce(intersect, list(a,b,c))
&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;unique(c[c%in%a[a%in%b]])
&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;tst &amp;lt;- c(unique(a),unique(b),unique(c))
tst &amp;lt;- tst[duplicated(tst)]
tst[duplicated(tst)]
&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;unique&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;a&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;b&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;c&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;intersect_all &amp;lt;- function(a,b,...){
  all_data &amp;lt;- c(a,b,...)
  require(plyr)
  count_data&amp;lt;- length(list(a,b,...))
  freq_dist &amp;lt;- count(all_data)
  intersect_data &amp;lt;- freq_dist[which(freq_dist$freq==count_data),&quot;x&quot;]
  intersect_data
}


intersect_all(a,b,c)
&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;intersect_all &amp;lt;- function(a,b,...){
  Reduce(intersect, list(a,b,...))
}

intersect_all(a,b,c)
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/3695677/&lt;a href=&quot;https://stackoverflow.com/questions/3695677/how-to-find-common-elements-from-multiple-vectors&quot; target=&quot;_blank&quot; papago-id=&quot;14-1&quot;&gt;how-to-find-common-elements-from-multiple-vectors&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/943</guid>
      <comments>https://lovepro.tistory.com/943#entry943comment</comments>
      <pubDate>Sun, 11 Jun 2023 21:27:50 +0900</pubDate>
    </item>
    <item>
      <title>read.xlsx 열에 날짜가 아닌 경우 날짜 읽기 오류</title>
      <link>https://lovepro.tistory.com/942</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;read.xlsx 열에 날짜가 아닌 경우 날짜 읽기 오류&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;xlsx&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;저는 여기 있는 모든 유사한 Q를 읽고 인터넷에서 스카우트를 했지만 열에 날짜가 아닌 데이터가 있으면 출처가 변경되는 이 특정 행동을 찾을 수 없습니다.&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;드롭박스에서 얻을 수 있는 작은 Excel 스프레드시트가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.dropbox.com/s/872q9mzb5uzukws/test.xlsx&quot; rel=&quot;noreferrer&quot; papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;https://www.dropbox.com/s/872q9mzb5uzukws/test.xlsx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;세 개의 행, 두 개의 열이 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;첫 번째는 날짜, 두 번째는 숫자입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;세 번째 행에는 날짜 열에 &quot;총계&quot;가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&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;read.xlsx&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;read.xlsx(&quot;./test.xlsx&quot;,head=FALSE,1,colClasses=c(&quot;Date&quot;,&quot;integer&quot;),endRow=2)
          X1 X2
1 2014-06-29 49
2 2014-06-30 46
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것들은 정말로 스프레드시트에 있는 날짜들입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;세 행을 모두 읽으려고 하면 뭔가 잘못됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;read.xlsx(&quot;./test.xlsx&quot;,head=FALSE,1,colClasses=c(&quot;Date&quot;,&quot;integer&quot;))
          X1    X2
1 2084-06-30    49
2 2084-07-01    46
3       &amp;lt;NA&amp;gt; 89251
Warning message:
In as.POSIXlt.Date(x) : NAs introduced by coercion
&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;&amp;gt; read.xlsx(&quot;./test.xlsx&quot;,head=FALSE,1,colClasses=c(&quot;integer&quot;,&quot;integer&quot;),endRow=2)
     X1 X2
1 16250 49
2 16251 46
&amp;gt; read.xlsx(&quot;./test.xlsx&quot;,head=FALSE,1,colClasses=c(&quot;integer&quot;,&quot;integer&quot;))
     X1    X2
1 41819    49
2 41820    46
3    NA 89251
&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;as.Date(s1$X1,origin=&quot;1970-01-01&quot;)&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(Unix epoch) 및 두 번째 정수는 다음을 사용하여 올바르게 변환됩니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;as.Date(s2$X1, origin=&quot;1899-12-30&quot;)&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(Excel epoch).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;1970년을 사용하여 두 번째 로트를 변환하면 2084년 날짜가 나옵니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서: 제가 뭔가 잘못하고 있나요?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;정수로 읽는 것이 가장 좋으며, NA가 있으면 Excel epoch를 사용하여 변환하고 그렇지 않으면 Unix epoch를 사용하는 것이 좋습니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;아니면 그것은 버그인가요?&lt;/font&gt;&lt;/font&gt;&lt;code&gt;xlsx&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;xlsx 버전은 버전: 0.5.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;openxlsx::convertToDate()&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;https://rdrr.io/cran/openxlsx/man/convertToDate.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;18-1&quot;&gt;여기&lt;/a&gt; 더 보기&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;XLConnect&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;pre&gt;&lt;code&gt;test &amp;lt;- readWorksheetFromFile( &quot;~/Downloads/test.xlsx&quot;, sheet = &quot;Sheet1&quot;, header = FALSE )
test
                 Col1  Col2
1 2014-06-29 00:00:00    49
2 2014-06-30 00:00:00    46
3         Grand Total 89251
&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;문제는 분명합니다. 첫 번째 열은 혼합형입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;character&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;POSIXct&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;XLConnect&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;character&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;24&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 경우에는&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;str(test)
'data.frame':   3 obs. of  2 variables:
 $ Col1: chr  &quot;2014-06-29 00:00:00&quot; &quot;2014-06-30 00:00:00&quot; &quot;Grand Total&quot;
 $ Col2: num  49 46 89251
&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;당신이 겪고 있는 문제는 엑셀이 1월 0일부터 1900년까지의 일수를 저장하고 있다는 것이고, 그것은 R이 엑셀 파일에서 읽고 있는 숫자입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;R로 변환할 때는 1월 1일부터 1970년까지의 일수를 기준으로 변환하는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그 둘 사이의 일수를 먼저 빼면 효과가 있을 겁니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/25158969/&lt;a href=&quot;https://stackoverflow.com/questions/25158969/read-xlsx-reading-dates-wrong-if-non-date-in-column&quot; target=&quot;_blank&quot; papago-id=&quot;26-1&quot;&gt;read-xlsx-reading-dates-wrong-if-non-date-in-column&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/942</guid>
      <comments>https://lovepro.tistory.com/942#entry942comment</comments>
      <pubDate>Sun, 11 Jun 2023 21:24:07 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 기반 서버에서 ASP.Net 실행</title>
      <link>https://lovepro.tistory.com/941</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 실행&lt;/font&gt;&lt;/h2&gt;
&lt;div&gt; 
 &lt;aside class=&quot;s-notice s-notice__info post-notice js-post-notice mb16&quot; role=&quot;status&quot;&gt; 
  &lt;div class=&quot;d-flex fd-column fw-nowrap&quot;&gt; 
   &lt;div class=&quot;d-flex fw-nowrap&quot;&gt; 
    &lt;div class=&quot;flex--item mr8&quot;&gt; 
     &lt;svg aria-hidden=&quot;true&quot; class=&quot;svg-icon iconLock&quot; width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 18 18&quot;&gt;
      &lt;path d=&quot;M16 9a2 2 0 0 0-2-2V6A5 5 0 0 0 4 6v1a2 2 0 0 0-2 2v6c0 1.1.9 2 2 2h10a2 2 0 0 0 2-2V9Zm-7 5a2 2 0 1 1 0-4 2 2 0 0 1 0 4Zm3.1-7H5.9V6a3.1 3.1 0 0 1 6.2 0v1Z&quot;&gt;&lt;/path&gt;
     &lt;/svg&gt; 
    &lt;/div&gt; 
    &lt;div class=&quot;flex--item wmn0 fl1 lh-lg&quot;&gt; 
     &lt;div class=&quot;flex--item fl1 lh-lg&quot;&gt; 
      &lt;div papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;
&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;b papago-id=&quot;1-1&quot;&gt;이 질문의 답&lt;/b&gt;은 &lt;b papago-id=&quot;1-1&quot;&gt;&lt;a href=&quot;/help/privileges/edit-community-wiki&quot; papago-id=&quot;1-1-1&quot;&gt;공동체&lt;/a&gt;&lt;/b&gt;의&lt;b papago-id=&quot;1-1&quot;&gt; 노력&lt;/b&gt;입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;기존 답변을 편집하여 이 게시물을 개선합니다.&lt;/font&gt;&lt;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;/div&gt; 
     &lt;/div&gt; 
    &lt;/div&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/aside&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;Java 배경을 가진 개발자의 경우 ASP.NET 도구/플랫폼을 사용한 소프트웨어 개발에도 관심이 있습니다.&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;Java 웹 응용프로그램(.jsp 및 servlet)은 많은 서버 플랫폼에서 실행될 수 있습니다.&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;.NET 웹 응용 프로그램이 Linux 기반 서버에서 실행될 수 있습니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;웹 앱 호스팅을 위해 Windows 서버를 사용할 수 없는 시나리오를 고려합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 저는 이것이 오래된 질문이라는 것을 알지만, 저는 그것이 최신 답변을 견딜 수 있다고 생각합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/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;Microsoft는 공식적으로&lt;a href=&quot;http://blogs.msdn.com/b/dotnet/archive/2014/05/12/the-next-generation-of-net-asp-net-vnext.aspx&quot; papago-id=&quot;6-1&quot; rel=&quot;noreferrer&quot;&gt; asp&lt;/a&gt;.net &lt;a href=&quot;http://blogs.msdn.com/b/dotnet/archive/2014/05/12/the-next-generation-of-net-asp-net-vnext.aspx&quot; papago-id=&quot;6-1&quot; rel=&quot;noreferrer&quot;&gt;vnext&lt;/a&gt;와 오픈 소스를 출시했으며 Linux와 Mac 모두에 배포할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것은 모두 여전히 꽤 새로운 것이지만 모노의 최신 빌드에 의존하기 때문에 현재 당신이 컴파일해야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;mono-framework&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 시간이 지나면 다양한 리눅스 배포자들이 mono의 업데이트된 버전을 출시하기 때문에 접근하기가 더 쉬울 것이라고 생각합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://graemechristie.github.io/graemechristie/blog/2014/05/26/asp-dot-net-vnext-on-osx-and-linux/&quot; papago-id=&quot;7-1&quot; rel=&quot;noreferrer&quot;&gt;이것은 설정 방법 가이드입니다.&lt;/a&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;h1 papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;ASP.NET CORE 11/10/2017 업데이트&lt;/font&gt;&lt;/h1&gt; 
&lt;ul&gt; 
 &lt;li papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;asp.net&lt;a href=&quot;https://www.hanselman.com/blog/ASPNET5IsDeadIntroducingASPNETCore10AndNETCore10.aspx&quot; papago-id=&quot;10-1&quot; rel=&quot;noreferrer&quot;&gt; vnext&lt;/a&gt;는 이제 asp.net &lt;a href=&quot;https://www.hanselman.com/blog/ASPNET5IsDeadIntroducingASPNETCore10AndNETCore10.aspx&quot; papago-id=&quot;10-1&quot; rel=&quot;noreferrer&quot;&gt;core&lt;/a&gt;로 알려져 있습니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://www.microsoft.com/net/learn/get-started/windows&quot; papago-id=&quot;11-0&quot; rel=&quot;noreferrer&quot;&gt;asp&lt;/a&gt;.net&lt;a href=&quot;https://www.microsoft.com/net/learn/get-started/windows&quot; papago-id=&quot;11-0&quot; rel=&quot;noreferrer&quot;&gt; &lt;/a&gt;&lt;a href=&quot;https://learn.microsoft.com/en-us/dotnet/standard/choosing-core-framework-server&quot; papago-id=&quot;11-2&quot; rel=&quot;noreferrer&quot;&gt;코어&lt;/a&gt;는 마이크로서비스 &lt;a href=&quot;https://www.docker.com/what-docker&quot; papago-id=&quot;11-4&quot; rel=&quot;noreferrer&quot;&gt;아키텍처&lt;/a&gt;, &lt;a href=&quot;https://www.docker.com/what-docker&quot; papago-id=&quot;11-4&quot; rel=&quot;noreferrer&quot;&gt;도커&lt;/a&gt; 및 &lt;a href=&quot;https://learn.microsoft.com/en-us/dotnet/standard/choosing-core-framework-server&quot; papago-id=&quot;11-2&quot; rel=&quot;noreferrer&quot;&gt;컨테이너&lt;/a&gt; 기술과 함께 사용되기 때문에 Microsoft에서 높은 우선순위로 취급되고 있습니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;a href=&quot;https://blogs.msdn.microsoft.com/dotnet/2017/08/14/announcing-net-standard-2-0/&quot; papago-id=&quot;12-1&quot; rel=&quot;noreferrer&quot;&gt;net 표준&lt;/a&gt; 2&lt;a href=&quot;https://blogs.msdn.microsoft.com/dotnet/2017/08/14/announcing-net-standard-2-0/&quot; papago-id=&quot;12-1&quot; rel=&quot;noreferrer&quot;&gt;.0으로 &lt;/a&gt;인해 기존 .net 라이브러리와 훨씬 더 호환됩니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://github.com/aspnet/benchmarks&quot; papago-id=&quot;13-1&quot; rel=&quot;noreferrer&quot;&gt;go&lt;/a&gt; 및 node.js와 같은 다른 기술 스택과 비교할 때 &lt;a href=&quot;https://github.com/aspnet/benchmarks&quot; papago-id=&quot;13-1&quot; rel=&quot;noreferrer&quot;&gt;성능&lt;/a&gt;이 우수합니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt;&lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용 중인 특정 .NET 기술에 따라 다릅니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://www.mono-project.com/Main_Page&quot; rel=&quot;noreferrer&quot; papago-id=&quot;14-1&quot;&gt;Mono Project&lt;/a&gt;는 ASP.NET 사이트를 실행하기 위한 Apache 모듈(mod_mono)을 제공하며, 제가 수집한 바로는 잘 작동합니다.&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;그러나 Mono는 모든 .NET API를 지원하지는 않지만 특히 WPF(WCF도 지원할 수 있음, 기억이 나지 않음), 다른 많은 프레임워크에 대해 좋은 지원을 제공합니다.&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;처음부터 시작하고 특히 Windows가 아닌 서버를 대상으로 하려면 Mono와 함께 프로젝트를 수행하는 것이 좋습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 Mono에서 지원하지 않는 특정 API 또는 언어 기능이 필요한 경우 배포를 위해 Windows 서버를 사용해야 합니다.&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;Windows 개발자가 코드를 Mono/Linux로 이식하는 데 도움이 되는 이 가이드를 고려해 볼 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;http://mono-project.com/Guide:_Porting_ASP.NET_Applications&quot; rel=&quot;noreferrer&quot; papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;가이드: Porting ASP.NET 응용 프로그램 - Mono&lt;/font&gt;&lt;/a&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;ASP.net 웹 사이트가 Mono에서 지원하는 .NET 라이브러리만 사용하더라도 Hello World 이상의 기능을 사용할 경우 실행하는 데 어려움을 겪을 것입니다.&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;코드를 많이 다시 작성할 필요는 없지만 mod_mono/xsp/apache 구성, 파일 권한 및 오류 처리와 같은 사소한 문제를 처리하는 데 몇 시간/일/주가 소요됩니다.&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;문제는 많은 사람들이 ASP.net 웹사이트에서 Mono를 사용하지 않기 때문에 버그를 보고하는 사람들이 많지 않기 때문에 사소한 버그들이 오랫동안 해결되지 않는다는 것입니다.&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;이제 ASP.NET 5 앱을 Visual Studio가 설치된 Linux의 Docker에 게시할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Scott Haselman의 아래 게시물을 참조하십시오.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;http://www.hanselman.com/blog/PublishingAnASPNET5AppToDockerOnLinuxWithVisualStudio.aspx&quot; papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;http://www.hanselman.com/blog/PublishingAnASPNET5AppToDockerOnLinuxWithVisualStudio.aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기술이 발전하고 구글에서 이 질문이 상위권에 올랐기 때문에 &lt;a href=&quot;http://www.mono-project.com/docs/getting-started/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;24-1&quot;&gt;모노&lt;/a&gt;를 넘어 새로운 &lt;a href=&quot;https://learn.microsoft.com/en-us/aspnet/core/&quot; papago-id=&quot;24-3&quot; rel=&quot;noreferrer&quot;&gt;asp.&lt;/a&gt;net 코어를 포함해야 합니다. 이 코어는 &lt;a href=&quot;https://learn.microsoft.com/en-us/aspnet/core/&quot; papago-id=&quot;24-3&quot; rel=&quot;noreferrer&quot;&gt;Linux &lt;/a&gt;및&lt;a href=&quot;https://learn.microsoft.com/en-us/aspnet/core/&quot; papago-id=&quot;24-3&quot; rel=&quot;noreferrer&quot;&gt; Windows에서 운영되고 Linux, Windows 및 Mac용 개발&lt;/a&gt;을 위해 &lt;a href=&quot;https://learn.microsoft.com/en-us/aspnet/core/&quot; papago-id=&quot;24-3&quot; rel=&quot;noreferrer&quot;&gt;실행되는 asp&lt;/a&gt;.net 을 완전히 다시 작성한 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Windows, Mac 및 Linux에서 ASP.NET Core 앱을 교차 플랫폼으로 개발하고 실행할 수 있습니다. ASP.NET Core는 GitHub의 오픈 소스입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt;&lt;p papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;네, 가능합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://www.mono-project.com/Main_Page&quot; papago-id=&quot;26-1&quot; rel=&quot;noreferrer&quot;&gt;Mono&lt;/a&gt; Project에 &lt;a href=&quot;http://www.mono-project.com/Main_Page&quot; papago-id=&quot;26-1&quot; rel=&quot;noreferrer&quot;&gt;익숙해지고&lt;/a&gt; 이 &lt;a href=&quot;http://aspalliance.com/387&quot; rel=&quot;noreferrer&quot; papago-id=&quot;26-3&quot;&gt;기사를 읽고&lt;/a&gt; 시작하십시오.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Linux에서 ASP.NET의 경우 Mono를 &lt;a href=&quot;http://www.mono-project.com/ASP.NET&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;27-1&quot;&gt;확인&lt;/a&gt;하십시오.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;28&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;즉, 수천 개의 사이트가 윈도우즈 서버에서 아무런 문제 없이 실행됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;OS가 제대로 구성되지 않은 서버는 취약할 수 있습니다. Linux는 제대로 관리되지 않는 서버를 보호하지 못합니다.&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;따라서 ASP.NET 앱을 배포하는 &quot;베스트 프랙티스&quot;는 Windows Server 2008(Web 버전일 가능성이 있음)을 사용하는 것입니다.&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;Mono를 &lt;a href=&quot;http://www.mono-project.com/Main_Page&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;30-1&quot;&gt;사용&lt;/a&gt;하여 Apache/Linux에서 ASP.NET 응용 프로그램을 실행할 수 있지만 Windows에서 수행할 수 있는 작업의 하위 집합은 제한되어 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;그들&quot;이 Windows가 공격에 더 취약하다고 말하는 것에 대해서는 사실이 아닙니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;IIS는 Apache보다 지난 몇 년간 보안 문제가 적었지만, 두 OS 모두 쉽게 보안을 유지할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;요즘 공격 포인트는 OS나 웹 서버 소프트웨어가 아니라 애플리케이션 자체입니다.&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;https://github.com/Microsoft/dotnet&quot; rel=&quot;nofollow&quot; papago-id=&quot;31-0&quot;&gt;닷넷&lt;/a&gt;은 깃허브에 있는 닷넷의 공식 홈입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Microsoft 및 커뮤니티에서 제공하는 많은 .NET OSS 프로젝트를 찾을 수 있는 좋은 출발점입니다. 여기에는 .NET Foundation의 일부이기도 합니다.&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;이것은 Linux를 지원하기 위한 훌륭한 시작이 될 수 있습니다.&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;Net은 Linux, Macos 등과 같은 여러 플랫폼에서 실행되지만 mono는 플랫폼에 완전히 독립적이지 않습니다. 다른 OS에 .NET을 설치하려면 타사 software.so 에 .NET을 설치해야 하기 때문에 Java 플랫폼에 독립적이지 않습니다.&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;Mono는 다른 os에 JIT가 있기 때문에 다른 플랫폼에서 실행됩니다.&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;모노는 달빛(.NET의 은색 빛)에서 완전히 성공하지 못합니다.&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;모노는 XSP2 서버 또는 아파치를 사용합니다. 일부 대기업은 이 프로젝트를 사용하고 있으며, 일부 로봇 프로젝트도 모노에서 실행되고 있습니다.&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;자세한 내용은 http://www.&lt;a href=&quot;http://www.mono-project.com/Main_Page&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;37-1&quot;&gt;mono-project&lt;/a&gt;.com/Main_Page .&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;Apache에서 ASP.Net을 실행할 수 있는 Novell의 Mono 프로젝트가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;http://www.mono-project.com/Main_Page&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;39&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;http://www.mono-project.com/Main_Page&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p papago-id=&quot;40&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모노 프로젝트가 최선의 선택입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;하지만 (일부 지역의 불완전한 API 지원과 같은) 많은 함정이 있으며, 법적으로 회색입니다(Richard Stallman과 같은 사람들은 마이크로소프트가 특허권을 사용하여 모노를 공격할 가능성 때문에 모노의 사용을 비웃었지만, 그것은 다른 이야기입니다).&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;어쨌든 Apache는 지원합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;모듈을 통해 NET/Mono를 확인했지만, 마지막으로 Debian과 함께 제공된 버전을 확인했을 때 Perl 언어 지원만 제공했습니다. 그 이후로 변경되었는지 여부는 말할 수 없습니다. 아마도 다른 사람이 수정할 수 있을 것입니다.&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/1116175/&lt;a href=&quot;https://stackoverflow.com/questions/1116175/running-asp-net-on-a-linux-based-server&quot; target=&quot;_blank&quot; papago-id=&quot;42-1&quot;&gt;running-asp-net-on-a-linux-based-server&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/941</guid>
      <comments>https://lovepro.tistory.com/941#entry941comment</comments>
      <pubDate>Sun, 11 Jun 2023 21:19:24 +0900</pubDate>
    </item>
    <item>
      <title>서명된 정수 산술 오버플로를 정의되지 않은 상태로 유지하는 것을 정당화할 수 있는 의미 있는 통계 데이터가 있습니까?</title>
      <link>https://lovepro.tistory.com/940</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;서명된 정수 산술 오버플로를 정의되지 않은 상태로 유지하는 것을 정당화할 수 있는 의미 있는 통계 데이터가 있습니까?&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;C 표준은 서명된 정수 오버플로를 &lt;strong papago-id=&quot;1-1&quot;&gt;정의&lt;/strong&gt;되지 않은 &lt;strong papago-id=&quot;1-1&quot;&gt;동작&lt;/strong&gt;으로 명시적으로 지정합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 대부분의 CPU는 오버플로에 대해 정의된 의미론으로 서명된 산술을 구현합니다(분할 오버플로는 제외).&lt;/font&gt;&lt;/font&gt;&lt;code&gt;x / 0&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;INT_MIN / -1&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;).&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;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&gt;&lt;code&gt;gcc&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;clang&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;/* Increment a by a value in 0..255, clamp a to positive integers.
   The code relies on 32-bit wrap-around, but the C Standard makes
   signed integer overflow undefined behavior, so sum_max can now 
   return values less than a. There are Standard compliant ways to
   implement this, but legacy code is what it is... */
int sum_max(int a, unsigned char b) {
    int res = a + b;
    return (res &amp;gt;= a) ? res : INT_MAX;
}
&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;/p&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 이것을 보면서 이 질문을 생각해냈습니다: &lt;a href=&quot;https://www.youtube.com/watch?v=AeEwxtEOgH0&quot; papago-id=&quot;8-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;C++Now 2018: John Regehr &quot;마무리 키노트:&lt;/a&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=AeEwxtEOgH0&quot; papago-id=&quot;8-1&quot; rel=&quot;nofollow noreferrer&quot;&gt; 정의되지 않은 동작 및 컴파일러 최적화&quot;&lt;/a&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;strong papago-id=&quot;9-3&quot;&gt;c&lt;/strong&gt;와 c&lt;strong papago-id=&quot;9-3&quot;&gt;++&lt;/strong&gt;에 &lt;strong papago-id=&quot;9-1&quot;&gt;태그&lt;/strong&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;예, 매우 중요합니다(예: tldr 루프 벡터화).&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;컴파일러 최적화 외에도 고려해야 할 또 다른 측면이 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;UB를 사용하면 C/C++ 부호 정수가 수학적으로 예상되는 대로 산술적으로 동작합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;를 들면 예들어를.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;x + 10 &amp;gt; x&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;a href=&quot;https://kristerw.blogspot.com/2016/02/how-undefined-signed-overflow-enables.html&quot; papago-id=&quot;13-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;저&lt;/a&gt;는 서명된 오버플로 UB를 고려한 일부 최적화를 나열하는 Krister Walfridson의 블로그에서 &lt;a href=&quot;https://kristerw.blogspot.com/2016/02/how-undefined-signed-overflow-enables.html&quot; papago-id=&quot;13-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;어떻게 정의&lt;/a&gt;되지 않은 &lt;a href=&quot;https://kristerw.blogspot.com/2016/02/how-undefined-signed-overflow-enables.html&quot; papago-id=&quot;13-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;서명&lt;/a&gt;된 오버플로가 &lt;a href=&quot;https://kristerw.blogspot.com/2016/02/how-undefined-signed-overflow-enables.html&quot; papago-id=&quot;13-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;GCC에서 최적화를 가능&lt;/a&gt;하게 하는지에 대한 훌륭한 &lt;a href=&quot;https://kristerw.blogspot.com/2016/02/how-undefined-signed-overflow-enables.html&quot; papago-id=&quot;13-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;기사&lt;/a&gt;를 찾았습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음 예는 그것에서 나온 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 그들에게 c++과 조립 예시를 추가하고 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;최적화가 너무 단순하거나 흥미롭지 않거나 영향이 없어 보이는 경우 이러한 최적화는 훨씬 더 큰 최적화 체인의 단계일 뿐입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;나비 효과는 초기 단계에서 중요하지 않아 보이는 최적화가 이후 단계에서 훨씬 더 영향력 있는 최적화를 촉발할 수 있기 때문에 발생합니다.&lt;/font&gt;&lt;/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;x * 10 &amp;gt; 0&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;와 C를 매우  수 .&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 상수, 매크로, 템플릿을 사용하여 C와 C++에서 이러한 종류의 예제를 매우 쉽게 얻을 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;게다가 컴파일러는 IR에 변환과 최적화를 적용할 때 이러한 예를 얻을 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;h1 papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;부호 있는 정수 표현식 단순화&lt;/font&gt;&lt;/h1&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;0과 비교하여 곱셈 제거&lt;/font&gt;&lt;/p&gt; 
  &lt;blockquote&gt; 
   &lt;pre&gt;&lt;code&gt;(x * c) cmp 0   -&amp;gt;   x cmp 0 
&lt;/code&gt;&lt;/pre&gt; 
  &lt;/blockquote&gt; &lt;pre&gt;&lt;code&gt;bool foo(int x) { return x * 10 &amp;gt; 0 }
&lt;/code&gt;&lt;/pre&gt; &lt;pre&gt;&lt;code&gt;foo(int):
        test    edi, edi
        setg    al
        ret
&lt;/code&gt;&lt;/pre&gt; &lt;/li&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;blockquote&gt; 
   &lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(x * c1) / c2 -&amp;gt; x * (c1 / c2) 만약 c1이 c2로 나눈다면&lt;/font&gt;&lt;/p&gt; 
  &lt;/blockquote&gt; &lt;pre&gt;&lt;code&gt;int foo(int x) { return (x * 20) / 10; }
&lt;/code&gt;&lt;/pre&gt; &lt;pre&gt;&lt;code&gt;foo(int):
        lea     eax, [rdi+rdi]
        ret
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;부정 제거&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;(-x) / (-y) -&amp;gt; x / y&lt;/font&gt;&lt;/p&gt; 
  &lt;/blockquote&gt; &lt;pre class=&quot;lang-cpp prettyprint-override&quot;&gt;&lt;code&gt;int foo(int x, int y) { return (-x) / (-y); }
&lt;/code&gt;&lt;/pre&gt; &lt;pre&gt;&lt;code&gt;foo(int, int):
        mov     eax, edi
        cdq
        idiv    esi
        ret
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
&lt;/ul&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;blockquote&gt; 
   &lt;pre&gt;&lt;code&gt;x + c &amp;lt; x       -&amp;gt;   false
x + c &amp;lt;= x      -&amp;gt;   false
x + c &amp;gt; x       -&amp;gt;   true
x + c &amp;gt;= x      -&amp;gt;   true
&lt;/code&gt;&lt;/pre&gt; 
  &lt;/blockquote&gt; &lt;pre class=&quot;lang-cpp prettyprint-override&quot;&gt;&lt;code&gt;bool foo(int x) { return x + 10 &amp;gt;= x; }
&lt;/code&gt;&lt;/pre&gt; &lt;pre&gt;&lt;code&gt;foo(int):
        mov     eax, 1
        ret
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;비교에서 부정적인 요소 제거&lt;/font&gt;&lt;/p&gt; &lt;pre&gt;&lt;code&gt;(-x) cmp (-y)   -&amp;gt;   y cmp x
&lt;/code&gt;&lt;/pre&gt; &lt;pre class=&quot;lang-cpp prettyprint-override&quot;&gt;&lt;code&gt;bool foo(int x, int y) { return -x &amp;lt; -y; }
&lt;/code&gt;&lt;/pre&gt; &lt;pre&gt;&lt;code&gt;foo(int, int):
        cmp     edi, esi
        setg    al
        ret
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&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;blockquote&gt; 
   &lt;pre&gt;&lt;code&gt;x + c &amp;gt; y       -&amp;gt;   x + (c - 1) &amp;gt;= y
x + c &amp;lt;= y      -&amp;gt;   x + (c - 1) &amp;lt; y
&lt;/code&gt;&lt;/pre&gt; 
  &lt;/blockquote&gt; &lt;pre&gt;&lt;code&gt;bool foo(int x, int y) { return x + 10 &amp;lt;= y; }
&lt;/code&gt;&lt;/pre&gt; &lt;pre&gt;&lt;code&gt;foo(int, int):
        add     edi, 9
        cmp     edi, esi
        setl    al
        ret
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
 &lt;li&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;blockquote&gt; 
   &lt;pre&gt;&lt;code&gt;(x + c1) cmp c2         -&amp;gt;   x cmp (c2 - c1)
(x + c1) cmp (y + c2)   -&amp;gt;   x cmp (y + (c2 - c1)) if c1 &amp;lt;= c2
&lt;/code&gt;&lt;/pre&gt; 
  &lt;/blockquote&gt; 
  &lt;blockquote&gt; 
   &lt;p papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;두 번째 변환은 c1 &amp;lt;= c2인 경우에만 유효합니다. 그렇지 않으면 y에 INT_MIN 값이 있을 때 오버플로가 발생합니다.&lt;/font&gt;&lt;/p&gt; 
  &lt;/blockquote&gt; &lt;pre class=&quot;lang-cpp prettyprint-override&quot;&gt;&lt;code&gt;bool foo(int x) { return x + 42 &amp;lt;= 11; }
&lt;/code&gt;&lt;/pre&gt; &lt;pre&gt;&lt;code&gt;foo(int):
        cmp     edi, -30
        setl    al
        ret
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h1 papago-id=&quot;28&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;포인터 산술 및 유형 승격&lt;/font&gt;&lt;/h1&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;29&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;작업이 오버플로우되지 않으면 더 넓은 유형으로 작업해도 동일한 결과를 얻을 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이는 64비트 아키텍처에서 어레이 인덱싱과 같은 작업을 수행할 때 유용합니다. 인덱스 계산은 일반적으로 32비트 int를 사용하지만 포인터는 64비트입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 컴파일러는 형식 확장을 생성하는 대신 32비트 정수를 64비트 연산으로 승격시킴으로써 서명된 오버플로가 정의되지 않을 때 더 효율적인 코드를 생성할 수 있습니다.&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;정의되지 않은 오버플로는 a[i]와 [i+1]이(가) 인접하도록 보장합니다.&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;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;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;pre&gt;&lt;code&gt;#include &amp;lt;cstddef&amp;gt;

auto foo(int* v, std::size_t start)
{
    int sum = 0;

    for (std::size_t i = start; i &amp;lt; start + 4; ++i)
        sum += v[i];

    return sum;
}
&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;start + 4&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 class=&quot;lang-asm prettyprint-override&quot;&gt;&lt;code&gt;; gcc on x64 with -march=skylake

foo1(int*, unsigned long):
        cmp     rsi, -5
        ja      .L3
        vmovdqu xmm0, XMMWORD PTR [rdi+rsi*4]
        vpsrldq xmm1, xmm0, 8
        vpaddd  xmm0, xmm0, xmm1
        vpsrldq xmm1, xmm0, 4
        vpaddd  xmm0, xmm0, xmm1
        vmovd   eax, xmm0
        ret
.L3:
        xor     eax, eax
        ret
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre class=&quot;lang-asm prettyprint-override&quot;&gt;&lt;code&gt;; clang on x64 with -march=skylake

foo1(int*, unsigned long):                             # @foo1(int*, unsigned long)
        xor     eax, eax
        cmp     rsi, -4
        jae     .LBB0_2
        vpbroadcastq    xmm0, qword ptr [rdi + 4*rsi + 8]
        vpaddd  xmm0, xmm0, xmmword ptr [rdi + 4*rsi]
        vpshufd xmm1, xmm0, 85                  # xmm1 = xmm0[1,1,1,1]
        vpaddd  xmm0, xmm0, xmm1
        vmovd   eax, xmm0
.LBB0_2:
        ret
&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;참고로, 더 좁은 유형을 사용하면 SSE 벡터화된 명령어의 사용을 방해하는 최악의 어셈블리가 될 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;#include &amp;lt;cstddef&amp;gt;

auto foo(int* v, unsigned start)
{
    int sum = 0;

    for (unsigned i = start; i &amp;lt; start + 4; ++i)
        sum += v[i];

    return sum;
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre class=&quot;lang-asm prettyprint-override&quot;&gt;&lt;code&gt;; gcc on x64 with -march=skylake

foo(int*, unsigned int):
        cmp     esi, -5
        ja      .L3
        mov     eax, esi
        mov     eax, DWORD PTR [rdi+rax*4]
        lea     edx, [rsi+1]
        add     eax, DWORD PTR [rdi+rdx*4]
        lea     edx, [rsi+2]
        add     eax, DWORD PTR [rdi+rdx*4]
        lea     edx, [rsi+3]
        add     eax, DWORD PTR [rdi+rdx*4]
        ret
.L3:
        xor     eax, eax
        ret
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre class=&quot;lang-asm prettyprint-override&quot;&gt;&lt;code&gt;; clang on x64 with -march=skylake

foo(int*, unsigned int):                              # @foo(int*, unsigned int)
        xor     eax, eax
        cmp     esi, -5
        ja      .LBB0_3
        mov     ecx, esi
        add     esi, 4
        mov     eax, dword ptr [rdi + 4*rcx]
        lea     rdx, [rcx + 1]
        cmp     rdx, rsi
        jae     .LBB0_3
        add     eax, dword ptr [rdi + 4*rcx + 4]
        add     eax, dword ptr [rdi + 4*rcx + 8]
        add     eax, dword ptr [rdi + 4*rcx + 12]
.LBB0_3:
        ret
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2 papago-id=&quot;37&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;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;#include &amp;lt;cstddef&amp;gt;

auto foo(int* v, std::ptrdiff_t start)
{
    int sum = 0;

    for (std::ptrdiff_t i = start; i &amp;lt; start + 4; ++i)
        sum += v[i];

    return sum;
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre class=&quot;lang-asm prettyprint-override&quot;&gt;&lt;code&gt;; gcc on x64 with -march=skylake

foo(int*, long):
        vmovdqu xmm0, XMMWORD PTR [rdi+rsi*4]
        vpsrldq xmm1, xmm0, 8
        vpaddd  xmm0, xmm0, xmm1
        vpsrldq xmm1, xmm0, 4
        vpaddd  xmm0, xmm0, xmm1
        vmovd   eax, xmm0
        ret
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre class=&quot;lang-asm prettyprint-override&quot;&gt;&lt;code&gt;; clang on x64 with -march=skylake

foo(int*, long):                              # @foo(int*, long)
        vpbroadcastq    xmm0, qword ptr [rdi + 4*rsi + 8]
        vpaddd  xmm0, xmm0, xmmword ptr [rdi + 4*rsi]
        vpshufd xmm1, xmm0, 85                  # xmm1 = xmm0[1,1,1,1]
        vpaddd  xmm0, xmm0, xmm1
        vmovd   eax, xmm0
        ret
&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;#include &amp;lt;cstddef&amp;gt;

auto foo(int* v, int start)
{
    int sum = 0;

    for (int i = start; i &amp;lt; start + 4; ++i)
        sum += v[i];

    return sum;
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre class=&quot;lang-asm prettyprint-override&quot;&gt;&lt;code&gt;; gcc on x64 with -march=skylake

foo(int*, int):
        movsx   rsi, esi
        vmovdqu xmm0, XMMWORD PTR [rdi+rsi*4]
        vpsrldq xmm1, xmm0, 8
        vpaddd  xmm0, xmm0, xmm1
        vpsrldq xmm1, xmm0, 4
        vpaddd  xmm0, xmm0, xmm1
        vmovd   eax, xmm0
        ret
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre class=&quot;lang-asm prettyprint-override&quot;&gt;&lt;code&gt;; clang on x64 with -march=skylake

foo(int*, int):                              # @foo(int*, int)
        movsxd  rax, esi
        vpbroadcastq    xmm0, qword ptr [rdi + 4*rax + 8]
        vpaddd  xmm0, xmm0, xmmword ptr [rdi + 4*rax]
        vpshufd xmm1, xmm0, 85                  # xmm1 = xmm0[1,1,1,1]
        vpaddd  xmm0, xmm0, xmm1
        vmovd   eax, xmm0
        ret
&lt;/code&gt;&lt;/pre&gt; 
&lt;h1 papago-id=&quot;40&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;값 범위 계산&lt;/font&gt;&lt;/h1&gt; 
&lt;blockquote&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;int x = foo();
if (x &amp;gt; 0) {
  int y = x + 5;
  int z = y / 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 class=&quot;papago-parent&quot;&gt;그것은 x가 범위를 가지고 있다고 결정합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;[1, INT_MAX]&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;if-문 뒤에, 따라서 y가 범위를 가지고 있다고 결정할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;[6, INT_MAX]&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;오버플로가 허용되지 않기 때문입니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;은 다음라최적수있다니습할화은인▁to로 최적화할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;int z = y &amp;gt;&amp;gt; 2;&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;컴파일러가 y가 음이 아닌 것을 알고 있기 때문입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;pre&gt;&lt;code&gt;auto foo(int x)
{
    if (x &amp;lt;= 0)
        __builtin_unreachable();
    
    return (x + 5) / 4;
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code&gt;foo(int):
        lea     eax, [rdi+5]
        sar     eax, 2
        ret
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&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;[INT_MIN, (INT_MIN+4)]&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;[6, INT_MAX]&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;&amp;lt;&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;&amp;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 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;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;x&amp;lt;y&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;이고, true로 true이고, true로 true이고, 입니다.&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;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;y&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;/li&gt; 
  &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;25&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 중&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;min(x,y)&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;max(x,y)&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;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;&lt;font class=&quot;papago-parent&quot;&gt;또는&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;y&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;가 겹치지 ▁if우▁the않▁do는▁ranges.&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;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;abs(x)&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;x&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;-x&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;0&lt;/code&gt;&lt;/li&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;&lt;font class=&quot;papago-parent&quot;&gt; 중&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;x/c&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;code&gt;x&amp;gt;&amp;gt;log2(c)&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;x&amp;gt;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;c&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;2&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;39&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 중&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;x%c&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&gt;&lt;code&gt;x&amp;amp;(c-1)&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;x&amp;gt;0&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;code&gt;c&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&gt;&lt;code&gt;2&lt;/code&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/blockquote&gt; 
&lt;h1 papago-id=&quot;74&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;루프 분석 및 최적화&lt;/font&gt;&lt;/h1&gt; 
&lt;blockquote&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;for (int i = 0; i &amp;lt;= m; i++)
&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;font class=&quot;papago-parent&quot;&gt;이것은 특정 루프 명령어가 있는 아키텍처가 일반적으로 무한 루프를 처리하지 않도록 도와줍니다.&lt;/font&gt;&lt;/p&gt; 
 &lt;p papago-id=&quot;77&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 정의되지 않은 서명된 오버플로는 더 많은 루프 최적화에 도움이 됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;반복 횟수 결정, 유도 변수 변환 및 메모리 액세스 추적과 같은 모든 분석은 작업을 수행하기 위해 이전 섹션의 모든 것을 사용합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;77-1&quot;&gt;특히 서명된 오버플로가 허용되면 벡터화&lt;/strong&gt;할 수 &lt;strong papago-id=&quot;77-1&quot;&gt;있는 루프 집합&lt;/strong&gt;이 크게 &lt;strong papago-id=&quot;77-1&quot;&gt;줄어듭니다&lt;/strong&gt;.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;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;-ftrapv&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;45&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;GCC/clang의 명령줄 스위치입니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font 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;80&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;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;code&gt;ftrapv&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;47&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;는 의도하지 않은 오버플로를 발견하는 데 유용한 도구입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&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 class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기 실제 작은 벤치마크인 버블 정렬이 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;시간을 비교해 봤습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;-fwrapv&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 class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(Overflow 가 UB/not UB가 아님).&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font 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;                   -O3     -O3 -fwrapv    -O1     -O1 -fwrapv
Machine1, clang    5.2     6.3            6.8     7.7
Machine2, clang-8  4.2     7.8            6.4     6.7
Machine2, gcc-8    6.6     7.4            6.5     6.5
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&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;와 같이 not-UB, 비-UB()는&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;-fwrapv&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;51&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;느리고, 큰입니다.) 버은거의항느며리상전차, 가큰는이 1.85배다니입.&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;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 테스트에서 더 큰 차이가 발생할 수 있는 구현을 의도적으로 선택했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;

void bubbleSort(int *a, long n) {
        bool swapped;
        for (int i = 0; i &amp;lt; n-1; i++) {
                swapped = false;
                for (int j = 0; j &amp;lt; n-i-1; j++) {
                        if (a[j] &amp;gt; a[j+1]) {
                                int t = a[j];
                                a[j] = a[j+1];
                                a[j+1] = t;
                                swapped = true;
                        }
                }

                if (!swapped) break;
        }
}

int main() {
        int a[8192];

        for (int j=0; j&amp;lt;100; j++) {
                for (int i=0; i&amp;lt;8192; i++) {
                        a[i] = rand();
                }

                bubbleSort(a, 8192);
        }
}
&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;답은 실제로 당신의 질문에 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;89&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 대부분의 CPU는 정의된 의미론으로 서명된 산술을 구현합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;90&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;오늘날 당신이 살 수 있는 CPU는 부호 있는 정수에 대해 두 개의 상보적인 산술을 사용하지 않지만 항상 그런 것은 아니었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;91&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;C 언어는 1972년에 발명되었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그 당시에도 IBM 7090 메인프레임은 여전히 존재했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&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;2s 전후로 언어(및 오버플로 동작)를 정의했다면 그렇지 않은 기계에서 코드 생성에 악영향을 미쳤을 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;93&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 이미 말했듯이 서명된 오버플로를 UB로 지정하면 컴파일러가 더 나은 코드를 생성할 수 있습니다. 서명된 오버플로로 인해 발생하는 코드 경로를 할인할 수 있기 때문입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;94&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;만약 내가 그것이 a와 b의 합을 0으로 고정시키기 위한 것이라는 것을 정확히 이해한다면...&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;INT_MAX는 랩어라운드 없이 두 가지 방법으로 이 함수를 작성할 수 있습니다.&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;첫째, 모든 CPU에서 작동하는 비효율적인 일반 사례:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;int sum_max(int a, unsigned char b) {
    if (a &amp;gt; std::numeric_limits&amp;lt;int&amp;gt;::max() - b)
        return std::numeric_limits&amp;lt;int&amp;gt;::max();
    else
        return a + b;
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;96&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;둘째, 놀라울 정도로 효율적인 2s-compreement 구체적인 방법:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;int sum_max2(int a, unsigned char b) {
    unsigned int buffer;
    std::memcpy(&amp;amp;buffer, &amp;amp;a, sizeof(a));
    buffer += b;
    if (buffer &amp;gt; std::numeric_limits&amp;lt;int&amp;gt;::max())
        buffer = std::numeric_limits&amp;lt;int&amp;gt;::max();
    std::memcpy(&amp;amp;a, &amp;amp;buffer, sizeof(a));
    return a;
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;97&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;결과 어셈블러는 https://&lt;a href=&quot;https://godbolt.org/z/F42IXV&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;97-1&quot;&gt;godbolt&lt;/a&gt;.org/z/F42IXV 에서 확인할 수 있습니다.&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;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/56047702/&lt;a href=&quot;https://stackoverflow.com/questions/56047702/is-there-some-meaningful-statistical-data-to-justify-keeping-signed-integer-arit&quot; target=&quot;_blank&quot; papago-id=&quot;98-1&quot;&gt;is-there-some-meaningful-statistical-data-to-justify-keeping-signed-integer-arit&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/940</guid>
      <comments>https://lovepro.tistory.com/940#entry940comment</comments>
      <pubDate>Sun, 11 Jun 2023 21:17:13 +0900</pubDate>
    </item>
    <item>
      <title>Python 패키지가 설치되어 있는지 확인합니다.</title>
      <link>https://lovepro.tistory.com/939</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Python 패키지가 설치되어 있는지 확인합니다.&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;파이썬 스크립트 내에서 패키지가 설치되어 있는지 확인하는 좋은 방법은 무엇입니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;통역사가 보기에는 쉽겠지만, 대본 내에서 해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt; 
&lt;p 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;Skype4Py 패키지가 설치되어 있는지 확인 중이며, 설치되어 있지 않으면 설치하겠습니다.&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;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;/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 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;h3 papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Python 3.3+는 sys.modules와 &lt;a href=&quot;https://docs.python.org/3/library/importlib.html#importlib.util.find_spec&quot; rel=&quot;noreferrer&quot; papago-id=&quot;7-1&quot;&gt;find_spec&lt;/a&gt;을 사용합니다.&lt;/font&gt;&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;import importlib.util
import sys

# For illustrative purposes.
name = 'itertools'

if name in sys.modules:
    print(f&quot;{name!r} already in sys.modules&quot;)
elif (spec := importlib.util.find_spec(name)) is not None:
    # If you choose to perform the actual import ...
    module = importlib.util.module_from_spec(spec)
    sys.modules[name] = module
    spec.loader.exec_module(module)
    print(f&quot;{name!r} has been imported&quot;)
else:
    print(f&quot;can't find the {name!r} module&quot;)
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3 papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;파이썬 3:&lt;/font&gt;&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;try:
    import mymodule
except ImportError as e:
    pass  # module doesn't exist, deal with it.
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3 papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;파이썬 2:&lt;/font&gt;&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;try:
    import mymodule
except ImportError, e:
    pass  # module doesn't exist, deal with it.
&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;Python 3.&lt;a href=&quot;https://docs.python.org/3/library/importlib.html#importlib.util.find_spec&quot; papago-id=&quot;10-1&quot; rel=&quot;noreferrer&quot;&gt;3&lt;/a&gt;부터는 find_spec&lt;a href=&quot;https://docs.python.org/3/library/importlib.html#importlib.util.find_spec&quot; papago-id=&quot;10-1&quot; rel=&quot;noreferrer&quot;&gt;()&lt;/a&gt; 메서드를 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import importlib.util

# For illustrative purposes.
package_name = 'pandas'

spec = importlib.util.find_spec(package_name)
if spec is None:
    print(package_name +&quot; is not installed&quot;)
&lt;/code&gt;&lt;/pre&gt;&lt;h2 papago-id=&quot;11&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;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;더 나은 방법은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import subprocess
import sys

reqs = subprocess.check_output([sys.executable, '-m', 'pip', 'freeze'])
installed_packages = [r.decode().split('==')[0] for r in reqs.split()]
&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;print(installed_packages)

[
    &quot;Django&quot;,
    &quot;six&quot;,
    &quot;requests&quot;,
]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 여부 확인&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;requests&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;pre&gt;&lt;code&gt;if 'requests' in installed_packages:
    # Do something
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;왜 이쪽입니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;때때로 앱 이름 충돌이 발생합니다.&lt;/font&gt;&lt;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;/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 class=&quot;papago-parent&quot;&gt; 또는  소스: Pip사 를여  또는대 예&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;pip install http://some.site/package-name.zip&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또는 다른 보관 유형).&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; &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;python setup.py install&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;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;할 때 를 들어, &quot; 템스리리에설때치할서들어토예포를지시,들&quot;, &quot;▁when예어를ing▁system때▁from▁like▁repos▁install,itories리토&quot;와 같이&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;sudo apt install python-requests&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;/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;strong papago-id=&quot;24-1&quot;&gt;있는&lt;/strong&gt; 경우:&lt;/font&gt;&lt;/p&gt; 
&lt;ul&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;python setup.py develop&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;/li&gt; 
 &lt;li&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;pip install -e /path/to/package/source/&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;/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 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;import pip
installed_packages = pip.get_installed_distributions()
&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;pip&amp;gt;=10.x의 경우:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;from pip._internal.utils.misc import get_installed_distributions
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;32&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;왜 이쪽입니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;때때로 앱 이름 충돌이 발생합니다.&lt;/font&gt;&lt;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 class=&quot;papago-parent&quot;&gt;결과적으로 다음 목록을 얻을 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;pkg_resources.Distribution&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 class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font 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;print installed_packages
[
    &quot;Django 1.6.4 (/path-to-your-env/lib/python2.7/site-packages)&quot;,
    &quot;six 1.6.1 (/path-to-your-env/lib/python2.7/site-packages)&quot;,
    &quot;requests 2.5.0 (/path-to-your-env/lib/python2.7/site-packages)&quot;,
]
&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;flat_installed_packages = [package.project_name for package in installed_packages]

[
    &quot;Django&quot;,
    &quot;six&quot;,
    &quot;requests&quot;,
]
&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;requests&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;pre&gt;&lt;code&gt;if 'requests' in flat_installed_packages:
    # 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;만약 당신이 터미널에서 수표를 받고 싶다면, 당신은 실행할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;pip3 show package_name
&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;예를 들어 이 검사를 자동화하여 누락된 경우 설치할 수 있도록 하려면 bash 스크립트에 다음을 포함할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;pip3 show package_name 1&amp;gt;/dev/null #pip for Python 2
if [ $? == 0 ]; then
   echo &quot;Installed&quot; #Replace with your actions
else
   echo &quot;Not Installed&quot; #Replace with your actions, 'pip3 install --upgrade package_name' ?
fi
&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;pip3 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;pip show some_package_name
&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;pip show matplotlib
&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;a href=&quot;https://stackoverflow.com/a/46303144/3393574&quot; papago-id=&quot;44-1&quot;&gt;이&lt;/a&gt; 답변의 &lt;a href=&quot;https://stackoverflow.com/a/46303144/3393574&quot; papago-id=&quot;44-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;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 2, Python 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;pip show &amp;lt;package_name&amp;gt;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font 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;pip show numpy&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;Name: numpy
Version: 1.11.1
Summary: NumPy: array processing for numbers, strings, records, and objects.
Home-page: http://www.numpy.org
Author: NumPy Developers
Author-email: numpy-discussion@scipy.org
License: BSD
Location: /home/***/anaconda2/lib/python2.7/site-packages
Requires: 
Required-by: smop, pandas, tables, spectrum, seaborn, patsy, odo, numpy-stl, numba, nfft, netCDF4, MDAnalysis, matplotlib, h5py, GridDataFormats, dynd, datashape, Bottleneck, blaze, astropy
&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;setuptools에서 pkg_resources 모듈을 사용할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import pkg_resources

package_name = 'cool_package'
try:
    cool_package_dist_info = pkg_resources.get_distribution(package_name)
except pkg_resources.DistributionNotFound:
    print('{} not installed'.format(package_name))
else:
    print(cool_package_dist_info)
&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;python 모듈과 python 패키지 사이에는 차이점이 있습니다.&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;if pip list | grep -q \^'PACKAGENAME\s'
  # installed ...
else
  # not installed ...
fi
&lt;/code&gt;&lt;/pre&gt;&lt;h2 papago-id=&quot;51&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;방법 1&lt;/font&gt;&lt;/h2&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-1&quot;&gt;pip3&lt;/strong&gt; list 명령을 사용하지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;#**pip3 list** will display all the packages and **grep** command will search for a particular package
pip3 list | grep your_package_name_here
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2 papago-id=&quot;53&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;방법 2&lt;/font&gt;&lt;/h2&gt; 
&lt;p papago-id=&quot;54&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;54-1&quot;&gt;가져오기&lt;/strong&gt; 오류를 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;try:
    import your_package_name
except ImportError as error:
    print(error,':( not found')
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2 papago-id=&quot;55&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;방법 3&lt;/font&gt;&lt;/h2&gt; 
&lt;pre&gt;&lt;code&gt;!pip install your_package_name
import your_package_name
...
...
&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;class myError(exception):
 pass # Or do some thing like this.
try:
 import mymodule
except ImportError as e:
 raise myError(&quot;error was occurred&quot;)
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;57&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 이 주제에 저의 생각/결과를 추가하고 싶습니다.&lt;/font&gt;&lt;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;58&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;약간의 문제가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;try:
   import ..
except:
   ..
&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;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&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;python-nmap&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;import nmap&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;보시다시피 이름이 일치하지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 위 솔루션을 사용한 테스트는 False 결과를 반환하고 적중 시 모듈도 가져오지만 간단한 테스트/체크를 위해 많은 메모리를 사용할 필요는 없습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;62&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;나는 또한 그것을 발견했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import pip
installed_packages = pip.get_installed_distributions()
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;23-0&quot;&gt;&lt;code papago-id=&quot;23-0-0&quot;&gt;installed_packages&lt;/code&gt; 패키지&lt;/strong&gt;만 pip와 &lt;strong papago-id=&quot;23-2&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;pip freeze&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;40&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;모듈, 반면에 Python 듈모,&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;installed_packages&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;1&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;수동으로 설치한 것(파이톤-nmap).&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;strong papago-id=&quot;68-1&quot;&gt;질문과 관련&lt;/strong&gt;이 없을 &lt;strong papago-id=&quot;68-1&quot;&gt;수&lt;/strong&gt;도 있지만 테스트 &lt;strong papago-id=&quot;68-3&quot;&gt;기능&lt;/strong&gt;을 설치를 수행하는 솔루션과는 별도로 &lt;strong papago-id=&quot;68-3&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;font class=&quot;papago-parent&quot;&gt;이 &lt;a href=&quot;https://stackoverflow.com/a/14050282/8006845&quot; papago-id=&quot;69-1&quot;&gt;답변&lt;/a&gt;을 기반으로 &lt;a href=&quot;https://stackoverflow.com/a/14050282/8006845&quot; papago-id=&quot;69-1&quot;&gt;하는 파이썬 모듈을 가져오지&lt;/a&gt; 않고 &lt;a href=&quot;https://stackoverflow.com/a/14050282/8006845&quot; papago-id=&quot;69-1&quot;&gt;존재하는지 확인&lt;/a&gt;하는 방법&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;from imp import find_module

def checkPythonmod(mod):
    try:
        op = find_module(mod)
        return True
    except ImportError:
        return False
&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 class=&quot;papago-parent&quot;&gt;이수 .&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;python-nmap&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;29&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;나도 사용해야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;nmap&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;30&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 경우 모듈이 메모리에 로드되지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;73&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;em papago-id=&quot;73-0&quot;&gt;저는 to @ice.ni cer 답변에 대해 코멘트하고 싶지만, 답변할 수 없어서...&lt;/em&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;대시가 있는 패키지는 @dwich 주석이 지적한 점뿐만 아니라 밑줄로 저장됩니다.&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;pip3 install sphinx-rtd-theme&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;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;importlib.util.find_spec(sphinx_rtd_theme)&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;/li&gt; 
 &lt;li&gt;&lt;code&gt;importlib.util.find_spec(sphinx-rtd-theme)&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;34&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;없음을 반환합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;importlib.util.find_spec(sphinx.rtd.theme)&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; ModuleNotFoundError는 모듈을 찾을 수 없습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;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 class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;게다가, 몇몇 이름들은 완전히 바뀌었습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;를 들어,은 들어당, 은신를을 .&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;pip3 install pyyaml&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;yaml&lt;/code&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;81&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 python3.8을 사용하고 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;82&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;스크립트에서 누락된 패키지를 설치하고 계속하려면 다음과 같은 작업을 수행할 수 있습니다(예: 'python-krbV' 패키지의 'krbV' 모듈).&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import pip
import sys

for m, pkg in [('krbV', 'python-krbV')]:
    try:
        setattr(sys.modules[__name__], m, __import__(m))
    except ImportError:
        pip.main(['install', pkg])
        setattr(sys.modules[__name__], m, __import__(m))
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;38&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;간단한 방법은 python 명령줄 도구를 &lt;strong papago-id=&quot;38-1&quot;&gt;사용&lt;/strong&gt;하는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;단순형&lt;/font&gt;&lt;/font&gt;&lt;code&gt;import &amp;lt;your module name&amp;gt;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;39&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모듈이 누락된 경우 오류가 표시됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
&amp;gt;&amp;gt;&amp;gt; import sys
&amp;gt;&amp;gt;&amp;gt; import jocker
Traceback (most recent call last):
  File &quot;&amp;lt;stdin&amp;gt;&quot;, line 1, in &amp;lt;module&amp;gt;
ImportError: No module named jocker
$
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;85&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;음...&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;가장 편리한 답변은 명령줄을 사용하여 가져오기를 시도한 것입니다.&lt;/font&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;'pip freeze | grep pkname'은 어떻습니까?&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;40&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;나는 항상 &lt;a href=&quot;https://pypi.org/project/pylibcheck/&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;40-1&quot;&gt;pylibcheck&lt;/a&gt;를 사용하여 lib가 설치되어 있는지 여부를 확인하고, 간단하게 다운로드합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;pip install pylibcheck&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 class=&quot;lang-py prettyprint-override&quot;&gt;&lt;code&gt;import pylibcheck

if not pylibcheck.checkPackage(&quot;mypackage&quot;):
     #not installed
&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 class=&quot;lang-py prettyprint-override&quot;&gt;&lt;code&gt;import pylibcheck

packages = [&quot;package1&quot;, &quot;package2&quot;, &quot;package3&quot;]

if pylibcheck.checkPackage(packages):
     #not installed
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;90&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;만약 당신이 그것을 원한다면 당신은 그것과 함께 립스를 설치할 수 있습니다, &lt;a href=&quot;https://pypi.org/project/pylibcheck/&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;90-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;42&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음과 같은 기술을 사용하는 투표된 최고의 솔루션&lt;/font&gt;&lt;/font&gt;&lt;code&gt;importlib.util.find_spec&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;sys.modules&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;code&gt;beautifulsoup&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;45&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;package) 수입품에 사용되는 패키지 이름이 다소 다른 경우(&lt;/font&gt;&lt;/font&gt;&lt;code&gt;bs4&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;46&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 경우)는 설치 파일 구성에 사용되는 것보다 많습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이러한 에지 사례의 경우 가져오기에 사용된 패키지 이름 대신 사용된 패키지 이름을 전달하지 않으면 이 솔루션이 작동하지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;requirements.txt&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;47&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또는&lt;/font&gt;&lt;/font&gt;&lt;code&gt;pip&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;48&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;설비&lt;/font&gt;&lt;/font&gt;&lt;/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;나의 사용 사례를 위해, 나는 설치된 패키지를 확인하는 패키지 체커를 작성해야 했습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;requirements.txt&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 class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;결국 제가 사용하게 된 것은.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;subprocess.check&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;51&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;패키지 설치를 확인하기 위해 명시적으로 pip 모듈을 호출합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-py prettyprint-override&quot;&gt;&lt;code&gt;import subprocess

for pkg in packages:
    try:
        subprocess.check_output('py -m pip show ' + pkg)
    except subprocess.CalledProcessError as ex:
        not_found.append(pkg)
&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&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;52&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;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;ImportError&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;53&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;되지 않음).&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;sys.path&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&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;이 코드를 실행하면 &quot;모듈 팬더가 설치되지 않았습니다&quot;가 반환됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;a = &quot;pandas&quot;

try:
    import a
    print(&quot;module &quot;,a,&quot; is installed&quot;)
except ModuleNotFoundError:
    print(&quot;module &quot;,a,&quot; is not installed&quot;)
&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;try:
    import pandas
    print(&quot;module is installed&quot;)
except ModuleNotFoundError:
    print(&quot;module is not installed&quot;)
&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;&quot;모듈 팬더가 설치되었습니다&quot;를 반환합니다.&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;그들 사이의 차이점은 무엇입니까?&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;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/1051254/&lt;a href=&quot;https://stackoverflow.com/questions/1051254/check-if-python-package-is-installed&quot; target=&quot;_blank&quot; papago-id=&quot;109-1&quot;&gt;check-if-python-package-is-installed&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/939</guid>
      <comments>https://lovepro.tistory.com/939#entry939comment</comments>
      <pubDate>Sun, 11 Jun 2023 21:14:21 +0900</pubDate>
    </item>
    <item>
      <title>sprintf가 있는 패딩</title>
      <link>https://lovepro.tistory.com/938</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;sprintf가 있는 패딩&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 class=&quot;papago-parent&quot;&gt;0으로 정수를 버퍼 패딩에 인쇄하고 싶지만 정리할 수 없습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;sprintf&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;char buf[31];
int my_val = 324;
sprintf( buf, &quot;%d030&quot;, my_val );
&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;&quot;000000000000000000000000000324&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;font class=&quot;papago-parent&quot;&gt;최대 너비가 30자인 경우 0인 패드를 의미하지 않습니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;&quot;%030d&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&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;구문을 약간 잘못 이해했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음 코드는 원하는 출력을 생성합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;char buf[31];
int my_val = 324;
sprintf( buf, &quot;%030d&quot;, (int)my_val );
&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;Printf에 &lt;a href=&quot;http://en.wikipedia.org/wiki/Printf&quot; papago-id=&quot;7-1&quot;&gt;대한 &lt;/a&gt;위키백과의 &lt;a href=&quot;http://en.wikipedia.org/wiki/Printf&quot; papago-id=&quot;7-1&quot;&gt;기사&lt;/a&gt;에서:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;[...] printf(&quot;%2d&quot;, 3) results in &quot; 3&quot;, while printf(&quot;%02d&quot;, 3) results in &quot;03&quot;.
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;패딩 및 폭은 형식 지정자 앞에 &lt;em papago-id=&quot;8-1&quot;&gt;옵니다&lt;/em&gt;.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;sprintf( buf, &quot;%030d&quot;, my_val );
&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;sprintf( buf, &quot;%030d&quot;, my_val );
&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;정밀도 및 폭 모수는 다음이 아니라 '%'와 변환 지정자 'd' 사이에 있어야 합니다.&lt;/font&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;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;%030d&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;타이프라이터를 끝에 붙입니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p 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;#include &amp;lt;stdio.h&amp;gt;

void uint_tostr (unsigned int n, size_t buf_size, char dst[buf_size])
{
  const size_t str_size = buf_size-1;

  for(size_t i=0; i&amp;lt;str_size; i++)
  {
    size_t index = str_size - i - 1;
    dst[index] = n%10 + '0';
    n/=10;
  }
  dst[str_size] = '\0';
}


int main (void)
{
  unsigned int n = 1234;
  char str[6+1];
  uint_tostr(n, 6+1, str);
  puts(str);
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이는 보다 수백 배 더 빠르지만 추가로 최적화할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;sprintf&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그대로&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/6116994/&lt;a href=&quot;https://stackoverflow.com/questions/6116994/padding-with-sprintf&quot; target=&quot;_blank&quot; papago-id=&quot;16-1&quot;&gt;padding-with-sprintf&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/938</guid>
      <comments>https://lovepro.tistory.com/938#entry938comment</comments>
      <pubDate>Sun, 11 Jun 2023 21:11:01 +0900</pubDate>
    </item>
    <item>
      <title>특정 열에 특정 문자열이 포함된 판다 데이터 프레임에서 행을 삭제하는 방법은 무엇입니까?</title>
      <link>https://lovepro.tistory.com/937</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;특정 열에 특정 문자열이 포함된 판다 데이터 프레임에서 행을 삭제하는 방법은 무엇입니까?&lt;/font&gt;&lt;/h2&gt;
&lt;div&gt; 
 &lt;aside class=&quot;s-notice s-notice__info post-notice js-post-notice mb16&quot; role=&quot;status&quot;&gt; 
  &lt;div class=&quot;d-flex fd-column fw-nowrap&quot;&gt; 
   &lt;div class=&quot;d-flex fw-nowrap&quot;&gt; 
    &lt;div class=&quot;flex--item 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 mt4&quot;&gt; 
    &lt;a href=&quot;/questions/17097643/search-for-does-not-contain-on-a-dataframe-in-pandas&quot; dir=&quot;ltr&quot; 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;/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;(10개 답변)&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;2019-01-25 06:18:04Z&quot; papago-attr-id=&quot;1&quot;&gt;4년 전&lt;/span&gt;에.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;
&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;   &lt;/font&gt;&lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/aside&gt; 
&lt;/div&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 파이썬에서 매우 큰 데이터 프레임을 가지고 있으며 특정 열 안에 특정 문자열이 있는 모든 행을 삭제하고 싶습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어, &quot;XYZ&quot; 문자열이 부분 문자열로 포함된 모든 행을 데이터 프레임의 C열에 삭제하려고 합니다.&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;.drop() 메서드를 사용하여 효율적으로 구현할 수 있습니까?&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;Panda에는 벡터화된 문자열 연산이 있으므로 원하지 않는 문자열이 포함된 행만 필터링할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;In [91]: df = pd.DataFrame(dict(A=[5,3,5,6], C=[&quot;foo&quot;,&quot;bar&quot;,&quot;fooXYZbar&quot;, &quot;bat&quot;]))

In [92]: df
Out[92]:
   A          C
0  5        foo
1  3        bar
2  5  fooXYZbar
3  6        bat

In [93]: df[~df.C.str.contains(&quot;XYZ&quot;)]
Out[93]:
   A    C
0  5  foo
1  3  bar
3  6  bat
&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;df = df[~df['your column'].isin(['list of strings'])]
&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;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 정확한 문자열을 비교하려는 경우에만 작동합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;열 문자열에 목록의 문자열이 포함되어 있는지 확인하려는 경우에는 작동하지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;목록과 비교하는 올바른 방법은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;searchfor = ['john', 'doe']
df = df[~df.col.str.contains('|'.join(searchfor))]
&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;em papago-id=&quot;13-1&quot;&gt;na=&lt;/em&gt;False를 &lt;em papago-id=&quot;13-1&quot;&gt;지정&lt;/em&gt;하면 빈 값을 건너뜁니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그렇지 않으면 &lt;em papago-id=&quot;13-3&quot;&gt;단항 ~:&lt;/em&gt; float에 대한 &lt;em papago-id=&quot;13-3&quot;&gt;TypeError: bad 피연산자 유형&lt;/em&gt; 오류가 발생할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;df[~df.C.str.contains(&quot;XYZ&quot;, na=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;a href=&quot;https://stackoverflow.com/questions/52297740/typeerror-bad-operand-type-for-unary-float&quot; papago-id=&quot;14-1&quot;&gt;유형&lt;/a&gt; 오류:&lt;a href=&quot;https://stackoverflow.com/questions/52297740/typeerror-bad-operand-type-for-unary-float&quot; papago-id=&quot;14-1&quot;&gt; 단항 ~: float&lt;/a&gt;에 대한 &lt;a href=&quot;https://stackoverflow.com/questions/52297740/typeerror-bad-operand-type-for-unary-float&quot; papago-id=&quot;14-1&quot;&gt;잘못된 피연산자 유형&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;new_df = df[df.C != 'XYZ']
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;참조:&lt;a href=&quot;https://chrisalbon.com/python/data_wrangling/pandas_dropping_column_and_rows/&quot; papago-id=&quot;15-1&quot; rel=&quot;noreferrer&quot;&gt; &lt;/a&gt;https://chrisalbon.com/python/data_wrangling/&lt;a href=&quot;https://chrisalbon.com/python/data_wrangling/pandas_dropping_column_and_rows/&quot; papago-id=&quot;15-1&quot; rel=&quot;noreferrer&quot;&gt;pandas_dropping_column_and_rows&lt;/a&gt;/&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;아래 코드는 모든 행의 목록을 제공합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;df[df['C'] != 'XYZ']
&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;newdf = df[df['C'] != 'XYZ']
&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;모든 NaN을 삭제하지 않으려는 경우&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;df[~df.C.str.contains(&quot;XYZ&quot;) == True]
&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;URL : https://stackoverflow.com/questions/28679930/&lt;a href=&quot;https://stackoverflow.com/questions/28679930/how-to-drop-rows-from-pandas-data-frame-that-contains-a-particular-string-in-a-p&quot; target=&quot;_blank&quot; papago-id=&quot;19-1&quot;&gt;how-to-drop-rows-from-pandas-data-frame-that-contains-a-particular-string-in-a-p&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/937</guid>
      <comments>https://lovepro.tistory.com/937#entry937comment</comments>
      <pubDate>Sun, 11 Jun 2023 20:42:23 +0900</pubDate>
    </item>
    <item>
      <title>///의 의미는 무엇입니까?</title>
      <link>https://lovepro.tistory.com/936</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;typescript와 node에 문제가 있어서 수정을 잘못했습니다(Process.env in Node에서 'process'가 정의되지 않았다는 TS 불만이 제기되었습니다.&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;reference types=&quot;node&quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 구문을 이해하지 못합니다.&lt;/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;이를 &quot;트리플 슬래시 지시문&lt;a href=&quot;https://www.typescriptlang.org/docs/handbook/triple-slash-directives.html&quot; papago-id=&quot;3-1&quot; rel=&quot;noreferrer&quot;&gt;&quot;(&lt;/a&gt;유형 &lt;a href=&quot;https://www.typescriptlang.org/docs/handbook/triple-slash-directives.html&quot; papago-id=&quot;3-1&quot; rel=&quot;noreferrer&quot;&gt;스크립트 문서)&lt;/a&gt;이라고 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;링크의 첫 번째 줄에 명시된 바와 같이:&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;5&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;주석의 내용은 컴파일러 지시어로 사용됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;네, 컴파일 중에 타이프스크립트 컴파일러가 이를 선택하여 적절한 작업을 수행합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&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;types&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;node&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;타이핑&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그렇긴 하지만, 문서에는 다음과 같은 내용도 나와 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;types&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;지시사항:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&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;d.ts&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;/blockquote&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 이 작업을 추가한 경우 다음 작업을 수행합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.ts&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;a가 아닌 file&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.d.ts&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;blockquote&gt; 
 &lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.ts 파일의 @types 패키지에 대한 종속성을 선언하려면 명령줄 또는 tsconfig.json에서 --types를 대신 사용합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://www.typescriptlang.org/docs/handbook/tsconfig-json.html#types-typeroots-and-types&quot; papago-id=&quot;17-1&quot; rel=&quot;noreferrer&quot;&gt;자세한&lt;/a&gt; 내용은 @types,&lt;a href=&quot;https://www.typescriptlang.org/docs/handbook/tsconfig-json.html#types-typeroots-and-types&quot; papago-id=&quot;17-1&quot; rel=&quot;noreferrer&quot;&gt; typeRoots&lt;/a&gt; 및 &lt;a href=&quot;https://www.typescriptlang.org/docs/handbook/tsconfig-json.html#types-typeroots-and-types&quot; papago-id=&quot;17-1&quot; rel=&quot;noreferrer&quot;&gt;tsconfig.json&lt;/a&gt; 파일에 &lt;a href=&quot;https://www.typescriptlang.org/docs/handbook/tsconfig-json.html#types-typeroots-and-types&quot; papago-id=&quot;17-1&quot; rel=&quot;noreferrer&quot;&gt;입력을 참조&lt;/a&gt;하십시오.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt;&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/48216163/&lt;a href=&quot;https://stackoverflow.com/questions/48216163/what-does-reference-types-node-mean&quot; target=&quot;_blank&quot; papago-id=&quot;18-1&quot;&gt;what-does-reference-types-node-mean&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/936</guid>
      <comments>https://lovepro.tistory.com/936#entry936comment</comments>
      <pubDate>Sun, 11 Jun 2023 20:36:57 +0900</pubDate>
    </item>
    <item>
      <title>R - 자동 장착 Excel 열 너비</title>
      <link>https://lovepro.tistory.com/935</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;R - 자동 장착 Excel 열 너비&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;openxlsx&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;?&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내 열 중 하나에 날짜 변수(예:&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/font&gt;&lt;code&gt;21-08-2017&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;ctrl+c&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;#######&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(Excel에 내용을 표시하기 위해 열 너비를 늘리면 정상적으로 붙여넣습니다.)&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 그 반복적인 작업을 제 코드에 통합하고 싶습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 지금 사용하고 있는 것은 다음과 같습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;WB &amp;lt;- loadWorkbook(File)
addWorksheet(WB, Sheet)
writeDataTable(WB, Sheet, DF, withFilter=F, bandedRows=F, firstColumn=T)
saveWorkbook(WB, File,  overwrite =TRUE)
&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;strong papago-id=&quot;7-1&quot;&gt;여기에 자동 맞춤 열 너비를 통합하는 방법을 제안해 주십시오.&lt;/strong&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;편집: R의 XLSX 출력은 기본적으로 8.43열 너비입니다. 셀 내용에 따라 자동 맞춤으로 설정하거나 각 열에 대해 수동으로 설정합니다.&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;To Mod: 제가 openxlsx를 사용하여 R에서 해결하려고 하는 문제입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;어쨌든, 관심을 가져주셔서 감사합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;알겠습니다, 서류를 다시 한 번 자세히 찾아본 결과 알았습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;온라인 솔루션의 부족으로 인해 실제로 이것을 사용하는 사람은 거의 없는 것 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;setColWidths(WB, Sheet, cols = 1:ncol(DF), widths = &quot;auto&quot;)
&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;########&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;strong papago-id=&quot;12-1&quot;&gt;글씨&lt;/strong&gt;로 표시됨)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;편집:&lt;/font&gt;&lt;/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;c(7.5, 10, &quot;auto&quot;, ...)&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;정의를 대신하여&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&quot;auto&quot;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;완전히 역동적이지는 않지만 현재로서는 문제를 해결합니다.&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;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;을 고려할 때&lt;/font&gt;&lt;/font&gt;&lt;code&gt;widths = &quot;auto&quot;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;원하는 대로 작동하지 않았습니다. 가장 긴 값 + 2(압축 처리)를 기준으로 폭을 할당하는 보다 일반적인 답변입니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;width_vec &amp;lt;- apply(DF, 2, function(x) max(nchar(as.character(x)) + 2, na.rm = TRUE))&lt;/code&gt; &lt;code&gt;setColWidths(WB, Sheet, cols = 1:ncol(DF), widths = width_vec)&lt;/code&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;열 머리글을 기준으로 너비를 할당하려면 다음을 수행합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;width_vec_header &amp;lt;- nchar(colnames(DF)) + 2&lt;/code&gt;&lt;br&gt; &lt;code&gt;setColWidths(WB, Sheet, cols = 1:ncol(DF), widths = width_vec_header)&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 헤더든 본문의 셀이든 열당 가장 긴 문자열을 기준으로 너비를 할당하려면 &quot;병렬&quot; 최대 함수를 사용합니다(벡터화된 최대 함수처럼).&lt;/font&gt;&lt;/font&gt;&lt;br&gt; &lt;code&gt;width_vec &amp;lt;- apply(DF, 2, function(x) max(nchar(as.character(x)) + 2, na.rm = TRUE))&lt;/code&gt;&lt;br&gt; &lt;code&gt;width_vec_header &amp;lt;- nchar(colnames(DF)) + 2&lt;/code&gt;&lt;br&gt; &lt;code&gt;max_vec_header &amp;lt;- pmax(width_vec, width_vec_header)&lt;/code&gt;&lt;br&gt; &lt;code&gt;setColWidths(WB, Sheet, cols = 1:ncol(DF), widths = max_vec_header )&lt;/code&gt;&lt;/p&gt;&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;XL 연결 사용 중...&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;setColumnWidths(WB, Sheet, column = 1:ncol(DF), width = -1)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://cran.r-project.org/web/packages/XLConnect/XLConnect.pdf&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;22-1&quot;&gt;참조:&lt;/a&gt; https://cran.r-project.org/web/packages/XLConnect/XLConnect.pdf&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;저는 또한 기둥 폭이 75보다 넓지 않기를 원했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 여전히 위에 설명된 날짜 문제를 해결하지 못했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;내 날짜와 함께 타임스탬프가 표시되지 않기를 원했으며 Excel에서 날짜 형식 지정 방법에 대한 옵션을 설정할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 저는 옵션(&quot;openxlsx.datetimeFormat&quot; = &quot;mm/dd/yyyy&quot;)을 사용했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://cran.r-project.org/web/packages/openxlsx/vignettes/formatting.pdf&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;23-1&quot;&gt;서식&lt;/a&gt; 지정에 대한 자세한 내용은 여기를 참조하십시오.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;myList &amp;lt;- list(A = data.frame(ID = c(&quot;AAA&quot;, &quot;AAA&quot;), 
                          Test = c(1, 1), 
                          Value = 1:2), 
           B = data.frame(ID = c(&quot;BBB&quot;, &quot;BBB&quot;, &quot;BBB&quot;), 
                          Test = c(1, 3, 5), 
                          Value = 1:3),
           C = data.frame(Test = c(1, 3, 5), 
                          Value = 1:3))

data_cols &amp;lt;- myList %&amp;gt;%
  map(~ 1:ncol(.), .depth = 2)

width_vec &amp;lt;- myList %&amp;gt;% 
  map(~ summarise_all(., funs(max(nchar(as.character(.)))), na.rm = TRUE), .depth = 2) %&amp;gt;% 
  map(~ unlist(., use.names = FALSE), .depth = 2) %&amp;gt;% 
  map(~ . + 2, .depth = 2)
width_vec_header &amp;lt;- map(myList, ~ nchar(names(.)) + 2, .depth = 2) 
max_vec &amp;lt;- map2(width_vec, width_vec_header, ~ pmin(75, pmax(.x, .y, 0)), .depth = 2)
pwalk(list(names(myList), data_cols, max_vec), ~ setColWidths(wb, ..1, ..2, widths = ..3))
&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/45860085/&lt;a href=&quot;https://stackoverflow.com/questions/45860085/r-autofit-excel-column-width&quot; target=&quot;_blank&quot; papago-id=&quot;24-1&quot;&gt;r-autofit-excel-column-width&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/935</guid>
      <comments>https://lovepro.tistory.com/935#entry935comment</comments>
      <pubDate>Sun, 11 Jun 2023 16:52:44 +0900</pubDate>
    </item>
    <item>
      <title>RGB 색상의 이동 색상</title>
      <link>https://lovepro.tistory.com/934</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;RGB 색상의 이동 색상&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;저는 RGB 색상의 색상을 바꾸는 기능을 쓰려고 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;특히 iOS 앱에서 사용하고 있지만, 수학은 보편적입니다.&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;아래 그래프는 색상과 관련하여 R, G 및 B 값이 어떻게 변화하는지 보여줍니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://i.stack.imgur.com/D2bPL.png&quot; alt=&quot;색상 간 RGB 값 그래프&quot; papago-attr-id=&quot;1&quot;&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;pre&gt;&lt;code&gt;Color4f ShiftHue(Color4f c, float d) {
    if (d==0) {
        return c;
    }
    while (d&amp;lt;0) {
        d+=1;
    }

    d *= 3;

    float original[] = {c.red, c.green, c.blue};
    float returned[] = {c.red, c.green, c.blue};

    // big shifts
    for (int i=0; i&amp;lt;3; i++) {
        returned[i] = original[(i+((int) d))%3];
    }
    d -= (float) ((int) d);
    original[0] = returned[0];
    original[1] = returned[1];
    original[2] = returned[2];

    float lower = MIN(MIN(c.red, c.green), c.blue);
    float upper = MAX(MAX(c.red, c.green), c.blue);

    float spread = upper - lower;
    float shift  = spread * d * 2;

    // little shift
    for (int i = 0; i &amp;lt; 3; ++i) {
        // if middle value
        if (original[(i+2)%3]==upper &amp;amp;&amp;amp; original[(i+1)%3]==lower) {
            returned[i] -= shift;
            if (returned[i]&amp;lt;lower) {
                returned[(i+1)%3] += lower - returned[i];
                returned[i]=lower;
            } else
                if (returned[i]&amp;gt;upper) {
                    returned[(i+2)%3] -= returned[i] - upper;
                    returned[i]=upper;
                }
            break;
        }
    }

    return Color4fMake(returned[0], returned[1], returned[2], c.alpha);
}
&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;UIColors로 이 작업을 수행할 수 있으며 다음과 같은 방법으로 색상을 변경할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;CGFloat hue;
CGFloat sat;
CGFloat bri;
[[UIColor colorWithRed:parent.color.red green:parent.color.green blue:parent.color.blue alpha:1] getHue:&amp;amp;hue saturation:&amp;amp;sat brightness:&amp;amp;bri alpha:nil];
hue -= .03;
if (hue&amp;lt;0) {
    hue+=1;
}
UIColor *tempColor = [UIColor colorWithHue:hue saturation:sat brightness:bri alpha:1];
const float* components= CGColorGetComponents(tempColor.CGColor);
color = Color4fMake(components[0], components[1], components[2], 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;하지만 iOS 5에서만 작동하기 때문에 그것에 열광하지 않습니다. 그리고 여러 색 객체를 할당하고 RGB에서 HSB로 변환하는 것 사이에서 그것은 꽤 지나친 것처럼 보입니다.&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;RGB 색 공간은 큐브를 설명합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 큐브를 대각선 축을 중심으로 (0,0,0)에서 (255,255,255)까지 회전하여 색상을 변경할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;결과 중 일부는 0 - 255 범위를 벗어나므로 잘라내야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;드디어 이 알고리즘을 코딩할 기회를 얻었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그것은 파이썬으로 되어 있지만 당신이 원하는 언어로 번역하기 쉬울 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;3D 회전 공식은 http://en.wikipedia.org/wiki/Rotation_matrix#&lt;a href=&quot;http://en.wikipedia.org/wiki/Rotation_matrix#Rotation_matrix_from_axis_and_angle&quot; rel=&quot;noreferrer&quot; papago-id=&quot;9-1&quot;&gt;Rotation_matrix_from_axis_and_angle&lt;/a&gt; 에서 제공되었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;10-0&quot;&gt;편집 :&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;축 단위 벡터 값에 대한 상수 sqrt(1/3)를 사용하여 행렬 계산을 단순화했지만, 이것은 정신적으로 기준에 훨씬 가깝고 픽셀당 계산에서 더 단순합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;apply&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;pre&gt;&lt;code&gt;from math import sqrt,cos,sin,radians

def clamp(v):
    if v &amp;lt; 0:
        return 0
    if v &amp;gt; 255:
        return 255
    return int(v + 0.5)

class RGBRotate(object):
    def __init__(self):
        self.matrix = [[1,0,0],[0,1,0],[0,0,1]]

    def set_hue_rotation(self, degrees):
        cosA = cos(radians(degrees))
        sinA = sin(radians(degrees))
        self.matrix[0][0] = cosA + (1.0 - cosA) / 3.0
        self.matrix[0][1] = 1./3. * (1.0 - cosA) - sqrt(1./3.) * sinA
        self.matrix[0][2] = 1./3. * (1.0 - cosA) + sqrt(1./3.) * sinA
        self.matrix[1][0] = 1./3. * (1.0 - cosA) + sqrt(1./3.) * sinA
        self.matrix[1][1] = cosA + 1./3.*(1.0 - cosA)
        self.matrix[1][2] = 1./3. * (1.0 - cosA) - sqrt(1./3.) * sinA
        self.matrix[2][0] = 1./3. * (1.0 - cosA) - sqrt(1./3.) * sinA
        self.matrix[2][1] = 1./3. * (1.0 - cosA) + sqrt(1./3.) * sinA
        self.matrix[2][2] = cosA + 1./3. * (1.0 - cosA)

    def apply(self, r, g, b):
        rx = r * self.matrix[0][0] + g * self.matrix[0][1] + b * self.matrix[0][2]
        gx = r * self.matrix[1][0] + g * self.matrix[1][1] + b * self.matrix[1][2]
        bx = r * self.matrix[2][0] + g * self.matrix[2][1] + b * self.matrix[2][2]
        return clamp(rx), clamp(gx), clamp(bx)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음은 위의 몇 가지 결과입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://i.stack.imgur.com/9B8FE.jpg&quot; alt=&quot;색상 회전 예제&quot; papago-attr-id=&quot;2&quot;&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;http://www.graficaobscura.com/matrix/index.html&lt;a href=&quot;http://www.graficaobscura.com/matrix/index.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;13-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;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;주석별 편집을 &quot;모두&quot;에서 &quot;선형 근사 가능자&quot;로 &lt;strong papago-id=&quot;14-0&quot;&gt;변경&lt;/strong&gt;했습니다.&lt;/font&gt;&lt;/font&gt;&lt;br&gt; &lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;오프셋을 추가하는 2개를 &lt;strong papago-id=&quot;15-0&quot;&gt;편집&lt;/strong&gt;합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&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;기본적으로, 당신이 원하는 단계는&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;RBG-&amp;gt;HSV-&amp;gt;Update hue-&amp;gt;RGB
&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;em papago-id=&quot;17-1&quot;&gt;선형&lt;/em&gt; 행렬 변환(즉, 연관성이 있음)으로&lt;em papago-id=&quot;17-1&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;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://beesbuzz.biz/code/hsv_color_transforms.php&quot; rel=&quot;noreferrer&quot; papago-id=&quot;18-1&quot;&gt;여기&lt;/a&gt;에 간단한 단계별 정보가 있습니다. http://beesbuzz.biz/code/hsv_color_transforms.php&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;다음은 C++ 코드입니다(채도 및 값 변환 제거).&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Color TransformH(
    const Color &amp;amp;in,  // color to transform
    float H
)
{
  float U = cos(H*M_PI/180);
  float W = sin(H*M_PI/180);

  Color ret;
  ret.r = (.299+.701*U+.168*W)*in.r
    + (.587-.587*U+.330*W)*in.g
    + (.114-.114*U-.497*W)*in.b;
  ret.g = (.299-.299*U-.328*W)*in.r
    + (.587+.413*U+.035*W)*in.g
    + (.114-.114*U+.292*W)*in.b;
  ret.b = (.299-.3*U+1.25*W)*in.r
    + (.587-.588*U-1.05*W)*in.g
    + (.114+.886*U-.203*W)*in.b;
  return ret;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 제가 여기서 발견한 대부분의 답에 실망했습니다. 일부는 결함이 있었고 기본적으로 완전히 틀렸습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 결국 이것을 알아내려고 3시간 이상을 보냈습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;마크 랜섬의 답변은 맞지만, 저는 MATLAB에서도 검증된 완전한 C 솔루션을 제공하고 싶습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 이것을 철저히 테스트했고, 다음은 C 코드입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;#include &amp;lt;math.h&amp;gt;
typedef unsigned char BYTE; //define an &quot;integer&quot; that only stores 0-255 value

typedef struct _CRGB //Define a struct to store the 3 color values
{
    BYTE r;
    BYTE g;
    BYTE b;
}CRGB;

BYTE clamp(float v) //define a function to bound and round the input float value to 0-255
{
    if (v &amp;lt; 0)
        return 0;
    if (v &amp;gt; 255)
        return 255;
    return (BYTE)v;
}

CRGB TransformH(const CRGB &amp;amp;in, const float fHue)
{
    CRGB out;
    const float cosA = cos(fHue*3.14159265f/180); //convert degrees to radians
    const float sinA = sin(fHue*3.14159265f/180); //convert degrees to radians
    //calculate the rotation matrix, only depends on Hue
    float matrix[3][3] = {{cosA + (1.0f - cosA) / 3.0f, 1.0f/3.0f * (1.0f - cosA) - sqrtf(1.0f/3.0f) * sinA, 1.0f/3.0f * (1.0f - cosA) + sqrtf(1.0f/3.0f) * sinA},
        {1.0f/3.0f * (1.0f - cosA) + sqrtf(1.0f/3.0f) * sinA, cosA + 1.0f/3.0f*(1.0f - cosA), 1.0f/3.0f * (1.0f - cosA) - sqrtf(1.0f/3.0f) * sinA},
        {1.0f/3.0f * (1.0f - cosA) - sqrtf(1.0f/3.0f) * sinA, 1.0f/3.0f * (1.0f - cosA) + sqrtf(1.0f/3.0f) * sinA, cosA + 1.0f/3.0f * (1.0f - cosA)}};
    //Use the rotation matrix to convert the RGB directly
    out.r = clamp(in.r*matrix[0][0] + in.g*matrix[0][1] + in.b*matrix[0][2]);
    out.g = clamp(in.r*matrix[1][0] + in.g*matrix[1][1] + in.b*matrix[1][2]);
    out.b = clamp(in.r*matrix[2][0] + in.g*matrix[2][1] + in.b*matrix[2][2]);
    return out;
}
&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;strong papago-id=&quot;21-0&quot;&gt;참고: 회전 매트릭스는 색상&lt;/strong&gt;(&lt;/font&gt;&lt;/font&gt;&lt;code&gt;fHue&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;matrix[3][3]&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;strong papago-id=&quot;23-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;다음은 결과를 확인하는 MATLAB 코드입니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;function out = TransformH(r,g,b,H)
    cosA = cos(H * pi/180);
    sinA = sin(H * pi/180);

    matrix = [cosA + (1-cosA)/3, 1/3 * (1 - cosA) - sqrt(1/3) * sinA, 1/3 * (1 - cosA) + sqrt(1/3) * sinA;
          1/3 * (1 - cosA) + sqrt(1/3) * sinA, cosA + 1/3*(1 - cosA), 1/3 * (1 - cosA) - sqrt(1/3) * sinA;
          1/3 * (1 - cosA) - sqrt(1/3) * sinA, 1/3 * (1 - cosA) + sqrt(1/3) * sinA, cosA + 1/3 * (1 - cosA)];

    in = [r, g, b]';
    out = round(matrix*in);
end
&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;TransformH(86,52,30,210)
ans =
    36
    43
    88
&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; 그서입력는래 RGB는의 .&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;[86,52,30]&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;code&gt;[36,43,88]&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;210&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;29&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Javascript 구현(위 Vladimir의 PHP 기반)&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;const deg = Math.PI / 180;

function rotateRGBHue(r, g, b, hue) {
  const cosA = Math.cos(hue * deg);
  const sinA = Math.sin(hue * deg);
  const neo = [
    cosA + (1 - cosA) / 3,
    (1 - cosA) / 3 - Math.sqrt(1 / 3) * sinA,
    (1 - cosA) / 3 + Math.sqrt(1 / 3) * sinA,
  ];
  const result = [
    r * neo[0] + g * neo[1] + b * neo[2],
    r * neo[2] + g * neo[0] + b * neo[1],
    r * neo[1] + g * neo[2] + b * neo[0],
  ];
  return result.map(x =&amp;gt; uint8(x));
}

function uint8(value) {
  return 0 &amp;gt; value ? 0 : (255 &amp;lt; value ? 255 : Math.round(value));
}
&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;ol&gt; 
 &lt;li papago-id=&quot;31&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;RGB -&amp;gt; HSV 변환, 색상 변경, HSV 변환 -&amp;gt; RGB&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;선형 변환을 사용하여 직접 색상 변경&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p papago-id=&quot;33&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;2를 구현하는 방법은 잘 모르겠지만 기본적으로 변환 매트릭스를 생성하고 이 매트릭스를 통해 이미지를 필터링해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 이렇게 하면 색상만 변경하는 대신 이미지의 색상이 다시 지정됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것이 괜찮으시다면, 이것은 선택사항이 될 수 있지만 그렇지 않다면 변환을 피할 수 없습니다.&lt;/font&gt;&lt;/p&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;p papago-id=&quot;35&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;약간의 조사는 이것을 &lt;a href=&quot;http://bytes.com/topic/c-sharp/answers/236124-how-would-i-change-hue-bitmap&quot; rel=&quot;nofollow&quot; papago-id=&quot;35-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;정확한 결과가 필요한 경우 RGB에서 HSV로 변환하는 것이 좋습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;선형 변환을 통해 원본 RGB 이미지를 수정해도 결과가 나오지만 이는 오히려 이미지에 색조를 부여합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;차이는 다음과 같습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;RGB에서 HSV로의 변환은 비선형인 반면 변환은 선형입니다.&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;게시물은 오래되었고 원래 포스터는 iOS 코드를 찾고 있었습니다. 하지만 저는 비주얼 베이직 코드 검색을 통해 이곳으로 보내졌습니다. 그래서 저와 같은 모든 사람들을 위해 마크의 코드를 vb.net 모듈로 변환했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Public Module HueAndTry    
    Public Function ClampIt(ByVal v As Double) As Integer    
        Return CInt(Math.Max(0F, Math.Min(v + 0.5, 255.0F)))    
    End Function    
    Public Function DegreesToRadians(ByVal degrees As Double) As Double    
        Return degrees * Math.PI / 180    
    End Function    
    Public Function RadiansToDegrees(ByVal radians As Double) As Double    
        Return radians * 180 / Math.PI    
    End Function    
    Public Sub HueConvert(ByRef rgb() As Integer, ByVal degrees As Double)
        Dim selfMatrix(,) As Double = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}
        Dim cosA As Double = Math.Cos(DegreesToRadians(degrees))
        Dim sinA As Double = Math.Sin(DegreesToRadians(degrees))
        Dim sqrtOneThirdTimesSin As Double = Math.Sqrt(1.0 / 3.0) * sinA
        Dim oneThirdTimesOneSubCos As Double = 1.0 / 3.0 * (1.0 - cosA)
        selfMatrix(0, 0) = cosA + (1.0 - cosA) / 3.0
        selfMatrix(0, 1) = oneThirdTimesOneSubCos - sqrtOneThirdTimesSin
        selfMatrix(0, 2) = oneThirdTimesOneSubCos + sqrtOneThirdTimesSin
        selfMatrix(1, 0) = selfMatrix(0, 2)
        selfMatrix(1, 1) = cosA + oneThirdTimesOneSubCos
        selfMatrix(1, 2) = selfMatrix(0, 1)
        selfMatrix(2, 0) = selfMatrix(0, 1)
        selfMatrix(2, 1) = selfMatrix(0, 2)
        selfMatrix(2, 2) = cosA + oneThirdTimesOneSubCos
        Dim rx As Double = rgb(0) * selfMatrix(0, 0) + rgb(1) * selfMatrix(0, 1) + rgb(2) * selfMatrix(0, 2)
        Dim gx As Double = rgb(0) * selfMatrix(1, 0) + rgb(1) * selfMatrix(1, 1) + rgb(2) * selfMatrix(1, 2)
        Dim bx As Double = rgb(0) * selfMatrix(2, 0) + rgb(1) * selfMatrix(2, 1) + rgb(2) * selfMatrix(2, 2)
        rgb(0) = ClampIt(rx)
        rgb(1) = ClampIt(gx)
        rgb(2) = ClampIt(bx)
    End Sub
End Module
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;37&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;일반적인 용어를 (긴) 변수에 넣었지만, 그렇지 않으면 간단한 변환입니다. 필요에 맞게 잘 작동합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;38&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런데, 저는 마크의 훌륭한 코드에 대한 찬성표를 남기려고 했지만, 저 자신이 그것을 볼 수 있도록 하기에는 충분한 표가 없었습니다(힌트, 힌트).&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;WebGL 버전:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;vec3 hueShift(vec3 col, float shift){
    vec3 m = vec3(cos(shift), -sin(shift) * .57735, 0);
    m = vec3(m.xy, -m.y) + (1. - m.x) * .33333;
    return mat3(m, m.zxy, m.yzx) * col;
}
&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;HSV로 전환하는 것이 가장 타당한 것 같습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Sass는 몇 가지 놀라운 색상 도우미를 제공합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;루비로 되어 있지만 유용할 수도 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;http://sass-lang.com/docs/yardoc/Sass/Script/Functions.html&quot; rel=&quot;nofollow&quot; papago-id=&quot;41&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;http://sass-lang.com/docs/yardoc/Sass/Script/Functions.html&lt;/font&gt;&lt;/a&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;이 알고리즘은 HSL/HSV와 동일하게 작동하지만 더 빠릅니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 배열의 첫 번째 3개 요소에 회색에 대한 요인을 곱하기만 하면 루마를 추가/감소시킬 수 있습니다.&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;font class=&quot;papago-parent&quot;&gt;Rec709의 그레이스케일은 다음 값을 갖습니다 [GrayRedFactor_Rec709: R$ 0.212671 GrayGreenFactor_Rec709: R$ 0.715160 GrayBlueFactor_R$ 0.072169].&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;GreyFactor 통신원과 self.matrix[x][x]를 곱하면 포화도 Ex를 건드리지 않고 루마가 감소합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;def set_hue_rotation(self, degrees):
    cosA = cos(radians(degrees))
    sinA = sin(radians(degrees))
    self.matrix[0][0] = (cosA + (1.0 - cosA) / 3.0) * 0.212671
    self.matrix[0][1] = (1./3. * (1.0 - cosA) - sqrt(1./3.) * sinA) * 0.715160
    self.matrix[0][2] = (1./3. * (1.0 - cosA) + sqrt(1./3.) * sinA) * 0.072169
    self.matrix[1][0] = self.matrix[0][2] &amp;lt;---Not sure, if this is the right code, but i think you got the idea
    self.matrix[1][1] = self.matrix[0][0]
    self.matrix[1][2] = self.matrix[0][1]
&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 papago-id=&quot;46&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 테스트하고 있는 바로는, 물론 포화 상태가 필요하지 않은 한, 이 알고리즘은 HSL의 훌륭한 대체물이 될 수 있습니다.&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;이렇게 해 보십시오. 색상을 1도만 회전하고(이미지의 인식 감도를 동일하게 유지하면서 알고가 제대로 작동하도록 강제하기 위해) 이러한 요소를 곱합니다.&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;매개 변수화된 HLSL 픽셀 셰이더로 위에서 설명한 (감마 보정되지 않은) 색상 이동이 필요한 사람(WPF 애플리케이션을 위해 함께 통과하고 공유할 수도 있다고 생각했습니다):&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;    sampler2D implicitInput : register(s0);
    float factor : register(c0);

    float4 main(float2 uv : TEXCOORD) : COLOR
    {
            float4 color = tex2D(implicitInput, uv);

            float h = 360 * factor;          //Hue
            float s = 1;                     //Saturation
            float v = 1;                     //Value
            float M_PI = 3.14159265359;

            float vsu = v * s*cos(h*M_PI / 180);
            float vsw = v * s*sin(h*M_PI / 180);

            float4 result;
            result.r = (.299*v + .701*vsu + .168*vsw)*color.r
                            + (.587*v - .587*vsu + .330*vsw)*color.g
                            + (.114*v - .114*vsu - .497*vsw)*color.b;
            result.g = (.299*v - .299*vsu - .328*vsw)*color.r
                            + (.587*v + .413*vsu + .035*vsw)*color.g
                            + (.114*v - .114*vsu + .292*vsw)*color.b;
            result.b = (.299*v - .300*vsu + 1.25*vsw)*color.r
                            + (.587*v - .588*vsu - 1.05*vsw)*color.g
                            + (.114*v + .886*vsu - .203*vsw)*color.b;;
            result.a = color.a;

            return result;
    }
&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;훌륭한 코드지만 self.matrix[2][0], self.matrix[2][1], self.matrix[2][1]를 사용하지 않으면 더 빠를 수 있는지 궁금합니다.&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;따라서 set_hue_rotation은 간단하게 다음과 같이 쓸 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;def set_hue_rotation(self, degrees):
    cosA = cos(radians(degrees))
    sinA = sin(radians(degrees))
    self.matrix[0][0] = cosA + (1.0 - cosA) / 3.0
    self.matrix[0][1] = 1./3. * (1.0 - cosA) - sqrt(1./3.) * sinA
    self.matrix[0][2] = 1./3. * (1.0 - cosA) + sqrt(1./3.) * sinA
    self.matrix[1][0] = self.matrix[0][2] &amp;lt;---Not sure, if this is the right code, but i think you got the idea
    self.matrix[1][1] = self.matrix[0][0]
    self.matrix[1][2] = self.matrix[0][1]
&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;또한 Mark의 알고리즘은 더 정확한 결과를 산출합니다.&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;예를 들어 HSV 색 공간을 사용하여 색상을 180도로 회전하면 이미지에 붉은 색조가 나타날 수 있습니다.&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;그러나 Mark의 알고리즘에서는 영상이 제대로 회전합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어, 피부색(Hue = 17, Sat = 170, L = 160)은 PSP에서 144개 정도의 Hue를 갖는 파란색으로 올바르게 전환되고 이미지의 다른 모든 색상은 올바르게 회전합니다.&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;Hue는 다음 공식에 의해 정의된 빨강, 초록, 파랑 아크탄의 로그 함수에 불과하기 때문에 알고리즘은 의미가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Hue = arctan((logR-logG)/(logR-logG+2*LogB))
&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;PHP 구현:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;class Hue
{
    public function convert(int $r, int $g, int $b, int $hue)
    {
        $cosA = cos($hue * pi() / 180);
        $sinA = sin($hue * pi() / 180);

        $neo = [
            $cosA + (1 - $cosA) / 3,
            (1 - $cosA) / 3 - sqrt(1 / 3) * $sinA,
            (1 - $cosA) / 3 + sqrt(1 / 3) * $sinA,
        ];

        $result = [
            $r * $neo[0] + $g * $neo[1] + $b * $neo[2],
            $r * $neo[2] + $g * $neo[0] + $b * $neo[1],
            $r * $neo[1] + $g * $neo[2] + $b * $neo[0],
        ];

        return array_map([$this, 'crop'], $result);
    }

    private function crop(float $value)
    {
        return 0 &amp;gt; $value ? 0 : (255 &amp;lt; $value ? 255 : (int)round($value));
    }
}
&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;glsl에서 가장 컴팩트한 버전은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;vec3 hs(vec3 c, float s){
    vec3 m=vec3(cos(s),s=sin(s)*.5774,-s);
    return c*mat3(m+=(1.-m.x)/3.,m.zxy,m.yzx);
}
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;57&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;약간 변화하는 마스터&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;가치와 포화도를 다시 추가하기 위한 HD의 &lt;a href=&quot;https://stackoverflow.com/a/30488508/15289577&quot; papago-id=&quot;57-1&quot;&gt;답변&lt;/a&gt;은 다음과 같은 C/C++ 코드로 끝납니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;#include &amp;lt;math.h&amp;gt;
typedef unsigned char uint8_t; //if no posix defs, remove if not needed

//if you use C not C++ this needs to be typedef ..
struct Color{
    uint8_t r;
    uint8_t g;
    uint8_t b;
};


uint8_t clamp(float v) //define a function to bound and round the input float value to 0-255
{
    if (v &amp;lt; 0)
        return 0;
    if (v &amp;gt; 255)
        return 255;
    return (uint8_t)v;
}

//compare http://beesbuzz.biz/code/16-hsv-color-transforms
Color change_hsv_c(
    const Color &amp;amp;in, 
    const float fHue,
    const float fSat,
    const float fVal
)
{
    Color out;
    const float cosA = fSat*cos(fHue*3.14159265f/180); //convert degrees to radians
    const float sinA = fSat*sin(fHue*3.14159265f/180); //convert degrees to radians

    //helpers for faster calc //first 2 could actually be precomputed
    const float aThird = 1.0f/3.0f;
    const float rootThird = sqrtf(aThird);
    const float oneMinusCosA = (1.0f - cosA);
    const float aThirdOfOneMinusCosA = aThird * oneMinusCosA;
    const float rootThirdTimesSinA =  rootThird * sinA;
    const float plus = aThirdOfOneMinusCosA +rootThirdTimesSinA;
    const float minus = aThirdOfOneMinusCosA -rootThirdTimesSinA;

    //calculate the rotation matrix
    float matrix[3][3] = {
        {   cosA + oneMinusCosA / 3.0f  , minus                         , plus                          },
        {   plus                        , cosA + aThirdOfOneMinusCosA   , minus                         },
        {   minus                       , plus                          , cosA + aThirdOfOneMinusCosA   }
    };
    //Use the rotation matrix to convert the RGB directly
    out.r = clamp((in.r*matrix[0][0] + in.g*matrix[0][1] + in.b*matrix[0][2])*fVal);
    out.g = clamp((in.r*matrix[1][0] + in.g*matrix[1][1] + in.b*matrix[1][2])*fVal);
    out.b = clamp((in.r*matrix[2][0] + in.g*matrix[2][1] + in.b*matrix[2][2])*fVal);
    return out;
}
&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;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/8507885/&lt;a href=&quot;https://stackoverflow.com/questions/8507885/shift-hue-of-an-rgb-color&quot; target=&quot;_blank&quot; papago-id=&quot;58-1&quot;&gt;shift-hue-of-an-rgb-color&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/934</guid>
      <comments>https://lovepro.tistory.com/934#entry934comment</comments>
      <pubDate>Sun, 11 Jun 2023 16:46:16 +0900</pubDate>
    </item>
    <item>
      <title>팬더의 테이블 앞으로 이름으로 열 이동</title>
      <link>https://lovepro.tistory.com/933</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;여기 내 df가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;                             Net   Upper   Lower  Mid  Zsore
Answer option                                                
More than once a day          0%   0.22%  -0.12%   2    65 
Once a day                    0%   0.32%  -0.19%   3    45
Several times a week          2%   2.45%   1.10%   4    78
Once a week                   1%   1.63%  -0.40%   6    65
&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;&quot;Mid&quot;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;) 표의 앞쪽, 색인 0.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;결과는 다음과 같습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;                             Mid   Upper   Lower  Net  Zsore
Answer option                                                
More than once a day          2   0.22%  -0.12%   0%    65 
Once a day                    3   0.32%  -0.19%   0%    45
Several times a week          4   2.45%   1.10%   2%    78
Once a week                   6   1.63%  -0.40%   1%    65
&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;df.columns.tolist()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이름으로 바꾸고 싶습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&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;loc&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;목록을 전달하여 순서를 변경합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;In [27]:
# get a list of columns
cols = list(df)
# move the column to head of list using index, pop and insert
cols.insert(0, cols.pop(cols.index('Mid')))
cols
Out[27]:
['Mid', 'Net', 'Upper', 'Lower', 'Zsore']
In [28]:
# use ix to reorder
df = df.loc[:, cols]
df
Out[28]:
                      Mid Net  Upper   Lower  Zsore
Answer_option                                      
More_than_once_a_day    2  0%  0.22%  -0.12%     65
Once_a_day              3  0%  0.32%  -0.19%     45
Several_times_a_week    4  2%  2.45%   1.10%     78
Once_a_week             6  1%  1.63%  -0.40%     65
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또 다른 방법은 열에 대한 참조를 가져다가 전면에 다시 삽입하는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;In [39]:
mid = df['Mid']
df.drop(labels=['Mid'], axis=1,inplace = True)
df.insert(0, 'Mid', mid)
df
Out[39]:
                      Mid Net  Upper   Lower  Zsore
Answer_option                                      
More_than_once_a_day    2  0%  0.22%  -0.12%     65
Once_a_day              3  0%  0.32%  -0.19%     45
Several_times_a_week    4  2%  2.45%   1.10%     78
Once_a_week             6  1%  1.63%  -0.40%     65
&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;ix&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;df = df.ix[:, cols]
&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;ix&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://stackoverflow.com/questions/28757389/pandas-loc-vs-iloc-vs-at-vs-iat&quot; papago-id=&quot;12-3&quot;&gt;Panda&lt;/a&gt; 1&lt;a href=&quot;https://stackoverflow.com/questions/28757389/pandas-loc-vs-iloc-vs-at-vs-iat&quot; papago-id=&quot;12-3&quot;&gt;.0 이후&lt;/a&gt;로 사용이 &lt;a href=&quot;https://stackoverflow.com/questions/28757389/pandas-loc-vs-iloc-vs-at-vs-iat&quot; papago-id=&quot;12-3&quot;&gt;중단&lt;/a&gt;되었습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 뭔가를 놓쳤을 수도 있지만, 이 대답들 중 많은 것들이 너무 복잡해 보입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;단일 목록 내에서 열을 설정할 수 있어야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;전면 열:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;df = df[ ['Mid'] + [ col for col in df.columns if col != 'Mid' ] ]
&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;df = df[ [ col for col in df.columns if col != 'Mid' ] + ['Mid'] ]
&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;cols_to_move = ['Mid', 'Zsore']
df           = df[ cols_to_move + [ col for col in df.columns if col not in cols_to_move ] ]
&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;col = df.pop(&quot;Mid&quot;)
df.insert(0, col.name, col)
&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;def move_column_inplace(df, col, pos):
    col = df.pop(col)
    df.insert(pos, col.name, col)
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;성능 평가:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;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 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;.loc&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;reindex&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;수 없다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;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;pos=0&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사이의 성능 차이는 관찰되지 않았습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;df.loc[cols]&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;df[cols]&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 제가 다른 제안을 하지 않은 겁니다&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;27&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;원래 시스템(2019년):&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; 
&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strike papago-id=&quot;27-1&quot;&gt;
&lt;/strike&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strike papago-id=&quot;27-1&quot;&gt;  MacBook Pro(2015년 중반)에서 Python 3.6.8 및 팬더 0.24.2.&lt;/strike&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strike papago-id=&quot;27-1&quot;&gt;
&lt;/strike&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strike papago-id=&quot;27-1&quot;&gt; &lt;/strike&gt;&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;현재 시스템(2022):&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;MacBook Pro(2021, Apple M1)에서 Python 3.10.5 및 팬더 1.4.3.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import numpy as np
import pandas as pd

n_cols = 11
df = pd.DataFrame(np.random.randn(200000, n_cols),
                  columns=range(n_cols))

def move_column_inplace(df, col, pos):
    col = df.pop(col)
    df.insert(pos, col.name, col)

def move_to_front_normanius_inplace(df, col):
    move_column_inplace(df, col, 0)
    return df

def move_to_front_chum(df, col):
    cols = list(df)
    cols.insert(0, cols.pop(cols.index(col)))
    return df.loc[:, cols]

def move_to_front_chum_inplace(df, col):
    col = df[col]
    df.drop(col.name, axis=1, inplace=True)
    df.insert(0, col.name, col)
    return df

def move_to_front_elpastor(df, col):
    cols = [col] + [ c for c in df.columns if c!=col ]
    return df[cols] # or df.loc[cols]

def move_to_front_sachinmm(df, col):
    cols = df.columns.tolist()
    cols.insert(0, cols.pop(cols.index(col)))
    df = df.reindex(columns=cols, copy=False)
    return df

def move_to_front_citynorman_inplace(df, col):
    # This approach exploits that reset_index() moves the index
    # at the first position of the data frame.
    df.set_index(col, inplace=True)
    df.reset_index(inplace=True)
    return df

def test(method, df):
    col = np.random.randint(0, n_cols)
    method(df, col)

col = np.random.randint(0, n_cols)
ret_mine = move_to_front_normanius_inplace(df.copy(), col)
ret_chum1 = move_to_front_chum(df.copy(), col)
ret_chum2 = move_to_front_chum_inplace(df.copy(), col)
ret_elpas = move_to_front_elpastor(df.copy(), col)
ret_sach = move_to_front_sachinmm(df.copy(), col)
ret_city = move_to_front_citynorman_inplace(df.copy(), col)

# Assert equivalence of solutions.
assert(ret_mine.equals(ret_chum1))
assert(ret_mine.equals(ret_chum2))
assert(ret_mine.equals(ret_elpas))
assert(ret_mine.equals(ret_sach))
assert(ret_mine.equals(ret_city))
&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;/p&gt; 
&lt;pre class=&quot;lang-py prettyprint-override&quot;&gt;&lt;code&gt;# For n_cols = 11:
%timeit test(move_to_front_normanius_inplace, df)
# 137 µs ± 692 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)
%timeit test(move_to_front_citynorman_inplace, df)
# 177 µs ± 10.7 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)
%timeit test(move_to_front_sachinmm, df)
# 821 µs ± 11.8 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)
%timeit test(move_to_front_chum, df)
# 926 µs ± 10.7 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)
%timeit test(move_to_front_elpastor, df)
# 901 µs ± 6.44 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)
%timeit test(move_to_front_chum_inplace, df)
# 3.25 ms ± 32.7 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)


# For n_cols = 31:
%timeit test(move_to_front_normanius_inplace, df)
# 188 µs ± 3.46 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)
%timeit test(move_to_front_citynorman_inplace, df)
# 214 µs ± 649 ns per loop (mean ± std. dev. of 7 runs, 1,000 loops each)
%timeit test(move_to_front_sachinmm, df)
# 5.17 ms ± 68.8 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
%timeit test(move_to_front_chum, df)
# 5.52 ms ± 82.5 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
%timeit test(move_to_front_elpastor, df)
# 5.48 ms ± 198 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
%timeit test(move_to_front_chum_inplace, df)
# 14.7 ms ± 317 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
&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;위는 2022년 재방송에 대한 업데이트된 값입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;도시 노먼의 솔루션과 나의 솔루션(노르마니우스)이 가장 큰 혜택을 받은 2~10개 요소별로 절대 수치가 감소했지만 지난 몇 년간 시스템별로 순위가 안정적으로 유지되었습니다.&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;판다에서 df.reindex() 함수를 사용할 수 있습니다. df is&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;                      Net  Upper   Lower  Mid  Zsore
Answer option                                      
More than once a day  0%  0.22%  -0.12%    2     65
Once a day            0%  0.32%  -0.19%    3     45
Several times a week  2%  2.45%   1.10%    4     78
Once a week           1%  1.63%  -0.40%    6     65
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;32&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;열 이름 목록 정의&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;cols = df.columns.tolist()
cols
Out[13]: ['Net', 'Upper', 'Lower', 'Mid', 'Zsore']
&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;cols.insert(0, cols.pop(cols.index('Mid')))
cols
Out[16]: ['Mid', 'Net', 'Upper', 'Lower', 'Zsore']
&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;df.reindex()&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;df = df.reindex(columns= cols)
&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;출력: df&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;                      Mid  Upper   Lower Net  Zsore
Answer option                                      
More than once a day    2  0.22%  -0.12%  0%     65
Once a day              3  0.32%  -0.19%  0%     45
Several times a week    4  2.45%   1.10%  2%     78
Once a week             6  1.63%  -0.40%  1%     65
&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;cfg_col_sel = ['Mid', 'Zscore']
cfg_col_sel = cfg_col_sel+[s for s in df.columns if not s in cfg_col_sel]
df = df[cfg_col_sel]
&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&gt;&lt;code&gt;df = df.set_index('Mid').reset_index()&lt;/code&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;/p&gt; 
&lt;pre&gt;&lt;code&gt;cols = df.columns.tolist()
n = int(cols.index('Mid'))
cols = [cols[n]] + cols[:n] + cols[n+1:]
df = df[cols]
&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;df = df[['Mid', 'Net', 'Upper', 'Lower', 'Zsore']]
&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;font class=&quot;papago-parent&quot;&gt;또한 다음을 사용합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;df.columns
Out[1]: Index(['Net', 'Upper', 'Lower', 'Mid', 'Zsore'], dtype='object')
&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;hr&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;pre&gt;&lt;code&gt;cols = [str(col_name) for col_name in range(1001)]
data = np.random.rand(10,1001)
df = pd.DataFrame(data=data, columns=cols)

mv_col = cols.pop(cols.index('77'))
df = df[[mv_col] + cols]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;21&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;지금이다&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;df.columns&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&gt;&lt;code&gt;Index(['77', '0', '1', '2', '3', '4', '5', '6', '7', '8',
       ...
       '991', '992', '993', '994', '995', '996', '997', '998', '999', '1000'],
      dtype='object', length=1001)
&lt;/code&gt;&lt;/pre&gt;&lt;pre class=&quot;lang-py prettyprint-override&quot;&gt;&lt;code&gt;df.set_index('Mid').reset_index()
&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;p papago-id=&quot;47&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;47-1&quot;&gt;열을 데이터&lt;/strong&gt; 프레임 &lt;strong papago-id=&quot;47-1&quot;&gt;앞으로 이동&lt;/strong&gt;하려면 를 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;df.set_index(df.pop('column_name'), inplace=True)
df.reset_index(inplace=True)
&lt;/code&gt;&lt;/pre&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;&lt;font class=&quot;papago-parent&quot;&gt;먼저 앞으로 가져올 열을 데이터 프레임의 인덱스로 설정해야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;pop&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;reset_index()&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;hr&gt; 
&lt;p papago-id=&quot;51&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;자세한 내용은 팬더의 &lt;a href=&quot;https://towardsdatascience.com/how-to-change-the-order-of-dataframe-columns-in-pandas-c91370326053&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;51-1&quot;&gt;데이터 프레임 열의 순서를 변경하는 방법을 참조&lt;/a&gt;하십시오.&lt;/font&gt;&lt;/p&gt;&lt;h3 papago-id=&quot;52&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;53&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;열 이름 주위에 있는 두 개의 (( ) '괄호'를 잊지 마십시오.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그렇지 않으면 오류가 발생합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;
# here you can add below line and it should work 
df = df[list(('Mid','Upper', 'Lower', 'Net','Zsore'))]
df

                             Mid   Upper   Lower  Net  Zsore
Answer option                                                
More than once a day          2   0.22%  -0.12%   0%    65 
Once a day                    3   0.32%  -0.19%   0%    45
Several times a week          4   2.45%   1.10%   2%    78
Once a week                   6   1.63%  -0.40%   1%    65
&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;Python에서 열 이동 패키지를 사용하여 열을 이동할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;pip install movecolumn
&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;import movecolumn as mc
mc.MoveTo1(df,'mid')
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;56&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;도움이 되길 바랍니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;57&quot; papago-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://pypi.org/project/movecolumn/&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;57-1&quot;&gt;https://pypi.org/project/movecolumn/&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;58&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;가장 간단한 방법은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;df=df[[ 'Mid',   'Upper',   'Lower', 'Net'  , 'Zsore']]
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;59&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;쉽고 빠른 솔루션:&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;60&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;판다 &amp;gt;= 1.3(2022년 편집):&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;df.insert(0, 'mean', df.pop('mean'))
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;61&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;어때요 (판다의 경우 &amp;lt; 1.3, 원답)&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;df.insert(0, 'mean', df['mean'])
&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;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/25122099/&lt;a href=&quot;https://stackoverflow.com/questions/25122099/move-column-by-name-to-front-of-table-in-pandas&quot; target=&quot;_blank&quot; papago-id=&quot;62-1&quot;&gt;move-column-by-name-to-front-of-table-in-pandas&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/933</guid>
      <comments>https://lovepro.tistory.com/933#entry933comment</comments>
      <pubDate>Sun, 11 Jun 2023 16:32:18 +0900</pubDate>
    </item>
    <item>
      <title>C/C++ 프로그램에서 ping 실행</title>
      <link>https://lovepro.tistory.com/932</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;C/C++ 프로그램에서 ping 실행&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;IP 주소가 주어지면 Ping을 수행한 다음 Ping 성공 여부에 따라 추가 작업을 수행하는 C 또는 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;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;원본 유닉스의 &lt;a href=&quot;http://www.ping127001.com/pingpage/ping.text&quot; papago-id=&quot;2-3&quot;&gt;전체&lt;/a&gt; 소스에 &lt;a href=&quot;http://www.ping127001.com/pingpage/ping.text&quot; papago-id=&quot;2-3&quot;&gt;대한&lt;/a&gt; 링크가 있는 &lt;a href=&quot;http://www.ping127001.com/pingpage.htm&quot; papago-id=&quot;2-1&quot;&gt;Ping&lt;/a&gt; Page를 &lt;a href=&quot;http://www.ping127001.com/pingpage.htm&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;strong papago-id=&quot;3-0&quot;&gt;제&lt;/strong&gt;가 게시한 후에 본 EDIT, 당신은 우분투에 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 이 질문을 검색하는 사용자는 이러한 링크가 Windows(윈도우)에 도움이 될 수 있습니다.&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;Ping: 원시 소켓 방법: http://&lt;a href=&quot;http://tangentsoft.net/wskfaq/examples/rawping.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;4-1&quot;&gt;tangentsoft&lt;/a&gt;.net/wskfaq/examples/rawping.html&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;Icmp.dll을 사용하여 인터넷 ping 구현: http://support.&lt;a href=&quot;http://support.microsoft.com/default.aspx?scid=kb;en-us;170591&quot; rel=&quot;noreferrer&quot; papago-id=&quot;5-1&quot;&gt;microsoft&lt;/a&gt;.com/default.aspx?scid=kb;en-us;170591&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;IcmpSendEcho 함수: http://msdn.&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/aa366050%28VS.85%29.aspx&quot; rel=&quot;noreferrer&quot; papago-id=&quot;6-1&quot;&gt;microsoft&lt;/a&gt;.com/en-us/library/aa366050%28VS.85%29.aspx&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;Windows용 Ping: http://www.&lt;a href=&quot;http://www.codeproject.com/KB/IP/winping.aspx&quot; rel=&quot;noreferrer&quot; papago-id=&quot;7-1&quot;&gt;codeproject&lt;/a&gt;.com/KB/IP/winping.aspx&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;이 게시물은 오래되었지만 다음 링크는 미래의 사람들이 Ping 요청을 만드는 방법에 대한 좋은 설명을 찾는 데 도움이 될 것이라고 생각합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/davidgatti/Deconstructing-Ping-with-C-and-NodeJS&quot; rel=&quot;nofollow&quot; papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;C 및 노드를 사용한 Ping 분해&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제이에스&lt;/font&gt;&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt;&lt;pre&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using namespace std;
int main() {
int x = system(&quot;ping -c1 -s1 8.8.8.8  &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&quot;);
if (x==0){
    cout&amp;lt;&amp;lt;&quot;success&quot;;
}else{
    cout&amp;lt;&amp;lt;&quot;failed&quot;;
}
&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;IP 주소에서 8.8.8.8 교체&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;URL : https://stackoverflow.com/questions/6697292/&lt;a href=&quot;https://stackoverflow.com/questions/6697292/pinging-from-a-c-c-program&quot; target=&quot;_blank&quot; papago-id=&quot;11-1&quot;&gt;pinging-from-a-c-c-program&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/932</guid>
      <comments>https://lovepro.tistory.com/932#entry932comment</comments>
      <pubDate>Sun, 11 Jun 2023 16:29:28 +0900</pubDate>
    </item>
    <item>
      <title>PDB 파일을 만들 수 없습니다.</title>
      <link>https://lovepro.tistory.com/931</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;PDB 파일을 만들 수 없습니다.&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;오류 1 'C: 출력 파일에 쓸 수 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;\내 프로젝트\&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;릴리스\MyProject.pdb': 지정되지 않은 오류&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;/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;이 오류가 왜 갑자기 나타나는지 또는 해결 방법을 아는 사람이 있습니까?&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;hr&gt; 
&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;업데이트: 컴퓨터를 재부팅하고 VS를 여러 번 다시 시작했으며 문제가 발생한 기존 OBJ 파일도 완전히 삭제했습니다.&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;릴리스 및 디버그 폴더에서 문제 없이 삭제할 수 있기 때문에 VS에서 PDB 파일을 빌드하려는 경우 문제가 있는 것 같습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;재구축을 시도하면 VS가 파일 생성을 시작합니다(약 1.4).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;MB는 size)이지만 오류가 발생했습니다.&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;이것에 대해 잠시 제 머리를 벽에 부딪히고 소스 제어를 통해 작업 복사본으로 돌아가려고 노력한 결과 PDB 파일은 전혀 문제가 되지 않았습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;디버그 정보를 만들기 위해 해당 파일을 찾으려 할 때 누군가 소스 파일을 삭제하여 VS가 질식했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 이 오류가 발생하여 알 수 없는 경우 소스 파일이 누락되지 않았는지 확인합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;VS가 PDB 파일을 생성하는 과정에서 지정되지 않은 오류가 발생했다고만 말하지 말고 파일이 누락되었다고 알려주면 큰 도움이 되었을 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;감사해요.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://lajak.wordpress.com/2011/06/28/error-3-unable-to-write-to-output-file-filename-pdb-unspecified-error/&quot; papago-id=&quot;13-1&quot; rel=&quot;noreferrer&quot;&gt;여기&lt;/a&gt; 이 &lt;a href=&quot;http://lajak.wordpress.com/2011/06/28/error-3-unable-to-write-to-output-file-filename-pdb-unspecified-error/&quot; papago-id=&quot;13-1&quot; rel=&quot;noreferrer&quot;&gt;문제를 해결&lt;/a&gt;하는 훨씬 더 좋은 방법이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기본적으로 솔루션을 닫고 컴파일하지 않고 다시 엽니다.&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;/p&gt; 
&lt;p&gt;&lt;a href=&quot;http://lajak.wordpress.com/2011/06/28/error-3-unable-to-write-to-output-file-filename-pdb-unspecified-error/&quot; rel=&quot;nofollow&quot; papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;출력 파일 [FileName] .pdb에 쓸 수 없음: 지정되지 않은 오류 Visual Studio&lt;/font&gt;&lt;/a&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;편집기나 Visual Studio의 다른 복사본과 같은 다른 파일이 열려 있는 것이 아닐까요?&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;VS를 종료하고 다시 시작하거나 시스템을 재부팅하여 문제가 해결되는지 확인합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;최악의 경우 Visual Studio를 다시 시작해 보십시오.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용자가 시도할 수 있는 또 다른 &lt;a href=&quot;http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx&quot; papago-id=&quot;19-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;유용&lt;/a&gt;한 도구는 PDB 파일에서 누가 처리하고 있는지 확인할 수 있는 SysInternals의 &lt;a href=&quot;http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx&quot; papago-id=&quot;19-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;프로세스&lt;/a&gt; 탐색기입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이렇게 하면 파일에 액세스하기 위해 무엇을 종료/재시작해야 하는지 정확히 알 수 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;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;strong papago-id=&quot;20-3&quot;&gt;잘못될 가능성&lt;/strong&gt;이 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;시각적 스튜디오에 감탄사 아이콘과 함께 표시될 누락된 파일이 있는지 확인하고 해당 파일이 프로젝트 원본 폴더에 없을 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Visual Studio에서 파일을 삭제하지 않으려면 원본 폴더에 파일을 추가합니다.&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;마지막으로 동일한 URL과 이름으로 동일한 웹 참조를 추가했고, 추가 웹 참조는 동일한 이름의 참조가 있다고 알려주었고, 최신 정보로 업데이트할 수 있는 옵션을 제공했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것이 마침내 작동했고 프로젝트가 다시 실행되고 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;23&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 그것이 도움이 되는 이유를 전형적인 것 위에 덧붙이고 싶었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;비주얼 스튜디오는 프로젝트를 만들 때 축에 감길 수 있기 때문에 왜 특정 의존성이 없는지 알 수 없습니다. 단지 프로젝트를 만들 수 없다는 것을 알 뿐입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;재구성 실패 후 설명할 수 없는 오류 메시지가 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://i.imgur.com/Q9OM4vS.png&quot; alt=&quot;도움이 되지 않는 오류&quot; papago-attr-id=&quot;1&quot;&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;ol&gt; 
 &lt;li papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Visual Studio 닫기&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;li papago-id=&quot;29&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;29-0&quot;&gt;컴파일&lt;/strong&gt; 안 함 - 오류 목록에서 새 설명 오류를 확인합니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;img src=&quot;https://i.imgur.com/gBnnt95.png&quot; alt=&quot;유용한 오류&quot; papago-attr-id=&quot;2&quot;&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;기존의 지침 중 많은 부분이 3단계가 누락되어 있어서, 이것이 도움이 될 것 같습니다.&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;안타깝게도 VS는 종종 범인입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 경우 VS를 다시 시작하면 문제가 해결됩니다.&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;Visual Studio는 때때로 파일이 잠겨 있는 것에 대해 약간 &quot;혼란&quot;을 느끼기도 합니다. 특히 이전 디버깅 실행 중에 응용 프로그램이 예기치 않게 손상되거나 Visual Studio가 예기치 않게 손상되거나 단순히 디버깅을 중지하는 경우에도 마찬가지입니다.&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;일반적으로 해결책은 Visual Studio를 닫았다가 다시 여는 것입니다.&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;예 - VSS에서 다운로드하지 않은 파일이 있는지 확인합니다. 프로젝트를 가져온 위치가 여기인지 확인하십시오.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;느낌표가 있는 파일을 찾아보세요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;프로젝트의 모든 파일이 로컬에 있어야 하는 위치에 있으면 PDB가 문제 없이 생성됩니다.&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;이와 같은 오류가 저에게 발생했지만 다른 원인이 있었습니다.&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;37&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;VS2005에 있는 저는 웹 프로젝트를 &quot;솔루션&quot;으로 열고 .sln 파일을 열었을 때 빌드/재구축을 눌렀을 때 이 오류가 발생했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;솔루션을 닫고 &quot;프로젝트&quot;로 다시 열었을 때(.vbproj 파일을 열었을 때) 컴파일/재컴파일할 때 누락된 소스 코드 오류가 발생했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;모든 파일이 있고 voila가 있는지 확인했습니다. 빌드가 성공적으로 완료되었습니다!&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;em papago-id=&quot;38-1&quot;&gt;VS2010&lt;/em&gt; 솔루션에서 이 문제가 발생하여 위의 모든 승인된 답변을 시도했지만 컴파일러가 (&lt;em papago-id=&quot;38-3&quot;&gt;Test.vb&lt;/em&gt;) 파일을 찾을 수 없는 이유를 알 수 없었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;일부 답변에서 이미 언급했듯이 &lt;em papago-id=&quot;38-5&quot;&gt;.pdb&lt;/em&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;em papago-id=&quot;39-1&quot;&gt;'C:'&lt;/em&gt;를 열 수 &lt;em papago-id=&quot;39-1&quot;&gt;없습니다&lt;/em&gt;.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;\&lt;em papago-id=&quot;39-1&quot;&gt;Test\Test.vb'&lt;/em&gt;입니다&lt;em papago-id=&quot;39-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;em papago-id=&quot;39-5&quot;&gt;'Test'&lt;/em&gt;인데 '&lt;em papago-id=&quot;39-3&quot;&gt;Test&lt;/em&gt;.vb&lt;em papago-id=&quot;39-3&quot;&gt;'&lt;/em&gt;가 누락되었음을 나타내는 오류입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;em papago-id=&quot;39-5&quot;&gt;로컬&lt;/em&gt; 복사본에 Vb&lt;em papago-id=&quot;39-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;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;솔루션을 닫고 VS2010을 &lt;em papago-id=&quot;41-1&quot;&gt;닫은&lt;/em&gt; 후 &lt;em papago-id=&quot;41-3&quot;&gt;VS2015&lt;/em&gt;에서 솔루션을 다시 엽니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;em papago-id=&quot;41-5&quot;&gt;VS2013도&lt;/em&gt; 작동할 수 있지만 시도해 본 적은 없습니다.&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;em papago-id=&quot;42-1&quot;&gt;VS2015&lt;/em&gt;에서 솔루션을 구축했지만 물론 실패했지만 이번 오류(특히 컴파일 도중 발생한 오류를 포함하여 빌드 라인을 보여주는 출력 창)는 컴파일러가 찾으려 했던 &lt;em papago-id=&quot;42-3&quot;&gt;'Test.vb'&lt;/em&gt; 파일의 전체 PATH를 표시하고 있었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;경로는 &lt;strong papago-id=&quot;42-5&quot;&gt;&lt;em papago-id=&quot;42-5-0&quot;&gt;'C:&lt;/em&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;42-5&quot;&gt;&lt;em papago-id=&quot;42-5-0&quot;&gt;\테스트\..\..&lt;/em&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;\&lt;strong papago-id=&quot;42-5&quot;&gt;&lt;em papago-id=&quot;42-5-0&quot;&gt;Test.vb'&lt;/em&gt;&lt;/strong&gt;는 '&lt;em papago-id=&quot;42-7&quot;&gt;Test.vbproj'&lt;/em&gt; 프로젝트를 빌드할 때 컴파일러가 '&lt;em papago-id=&quot;42-9&quot;&gt;C\'&lt;/em&gt;에서 빌드를 시작했음을 시사합니다&lt;strong papago-id=&quot;42-5&quot;&gt;&lt;em papago-id=&quot;42-5-0&quot;&gt;.&lt;/em&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;em papago-id=&quot;42-9&quot;&gt;Test'&lt;/em&gt; 폴더를 선택한 다음 .&lt;em papago-id=&quot;42-13&quot;&gt;sln &lt;/em&gt;파일에 정의된 &lt;em papago-id=&quot;42-11&quot;&gt;.vb&lt;/em&gt; 파일의 위치인 &lt;em papago-id=&quot;42-15&quot;&gt;'...\..&lt;/em&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;\&lt;em papago-id=&quot;42-15&quot;&gt;Test.vb'&lt;/em&gt;를 눌러 'Test.&lt;em papago-id=&quot;42-17&quot;&gt;vb'&lt;/em&gt; 파일을 읽고 프로젝트를 빌드합니다&lt;em papago-id=&quot;42-15&quot;&gt;.&lt;/em&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;C&lt;em papago-id=&quot;42-19&quot;&gt;:로 &lt;/em&gt;이동하지 못했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;em papago-id=&quot;42-19&quot;&gt;\테스트\..\..&lt;/em&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;\&lt;em papago-id=&quot;42-19&quot;&gt;Test.vb'&lt;/em&gt; 폴더(여기서 &lt;em papago-id=&quot;42-21&quot;&gt;'Test.vb')&lt;/em&gt;입니다&lt;em papago-id=&quot;42-19&quot;&gt;.&lt;/em&gt;&lt;/font&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;em papago-id=&quot;43-3&quot;&gt;sln&lt;/em&gt; 파일에서 '&lt;em papago-id=&quot;43-1&quot;&gt;Test.vb'&lt;/em&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/627523/&lt;a href=&quot;https://stackoverflow.com/questions/627523/unable-to-create-pdb-file&quot; target=&quot;_blank&quot; papago-id=&quot;44-1&quot;&gt;unable-to-create-pdb-file&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/931</guid>
      <comments>https://lovepro.tistory.com/931#entry931comment</comments>
      <pubDate>Mon, 22 May 2023 23:16:36 +0900</pubDate>
    </item>
    <item>
      <title>찾기 방법에서 Mongoose 결과를 반환하는 방법은 무엇입니까?</title>
      <link>https://lovepro.tistory.com/930</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;찾기 방법에서 Mongoose 결과를 반환하는 방법은 무엇입니까?&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;users.find({}, function(err, docs){
    res.render('profile/profile', {
        users:     docs
    });
});
&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;var a_users = users.find({}); //non-working example
&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;예:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;/* non working example */
var a_users    = users.find({});
var a_articles = articles.find({});

res.render('profile/profile', {
      users:    a_users
    , articles: a_articles
});
&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;font class=&quot;papago-parent&quot;&gt;그냥 효과가 없어요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;node.js는 대부분 단일 스레드입니다. io가 완료되면 실행 컨텍스트가 생성됩니다.&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://github.com/caolan/async#parallel&quot; rel=&quot;noreferrer&quot; papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;https://github.com/caolan/async#parallel&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;async.parallel([
   function(cb){
      users.find({}, cb);
   },
   function(cb){
      articles.find({}, cb);
   }
], function(results){
   // results contains both users and articles
});
&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;a href=&quot;https://github.com/petkaantonov/bluebird/&quot; papago-id=&quot;9-1&quot;&gt;라이브러리&lt;/a&gt; Bluebird 및 그 방법을 사용합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var Promise = require('bluebird');
var mongoose = require('mongoose');

Promise.promisifyAll(mongoose); // key part - promisification

var users, articles; // load mongoose models &quot;users&quot; and &quot;articles&quot; here

Promise.props({
    users: users.find().execAsync(),
    articles: articles.find().execAsync()
  })
  .then(function(results) {
    res.render('profile/profile', results);
  })
  .catch(function(err) {
    res.send(500); // oops - we're even handling errors!
  });
&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;Promise.promisifyAll(mongoose);
&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;모든 mongoose(및 모델) 메서드를 약속을 반환하는 함수로 사용할 수 있도록 합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Async&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;.exec()&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;.execAsync()&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;.promisifyAll()&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;JS 월드 - 콜백을 마지막 인수로 사용하는 비동기 함수를 제공하는 모든 항목에서 사용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Promise.props({
    users: users.find().execAsync(),
    articles: articles.find().execAsync()
  })
&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;a href=&quot;https://github.com/petkaantonov/bluebird/blob/master/API.md#props---promise&quot; papago-id=&quot;16-0&quot;&gt;&lt;code papago-id=&quot;16-0-0&quot;&gt;.props()&lt;/code&gt;&lt;/a&gt; bluebird 메서드는 약속을 속성으로 하는 개체를 사용하고 두 데이터베이스 쿼리(여기서는 약속)가 결과를 반환할 때 해결되는 집합 약속을 반환합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;해결된 값은 당사의&lt;/font&gt;&lt;/font&gt;&lt;code&gt;results&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;ul&gt; 
 &lt;li&gt;&lt;code&gt;results.users&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;mongoose에 의해 데이터베이스에서 발견된 사용자&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;results.articles&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;몽구스(d'uh)가 데이터베이스에서 찾은 기사&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;보시다시피, 우리는 들여쓰기 콜백 지옥에도 접근하지 못하고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;두 데이터베이스 쿼리는 모두 병렬로 실행되므로 둘 중 하나가 다른 하나를 기다릴 필요가 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;코드는 짧고 읽을 수 있습니다. 질문 자체에 게시된 희망적인 &quot;비작동 사례&quot;와 실질적으로 일치하는 길이와 복잡성(또는 오히려 부족함)입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;약속은 멋집니다.&lt;/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;/p&gt; 
&lt;pre&gt;&lt;code&gt;var userModel = mongoose.model('users');
var articleModel = mongoose.model('articles');
userModel.find({}, function (err, db_users) {
  if(err) {/*error!!!*/}
  articleModel.find({}, function (err, db_articles) {
    if(err) {/*error!!!*/}
    res.render('profile/profile', {
       users: db_users,
       articles: db_articles
    });
  });
});
&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;실제로 Node.js에서는 모든 함수가 비동기식입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;몽구스의 발견도 마찬가지입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 그것을 연속적으로 부르고 싶다면 슬라이드 라이브러리 같은 &lt;a href=&quot;https://github.com/isaacs/slide-flow-control&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; &lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 귀하의 경우 가장 쉬운 방법은 콜백을 중첩하거나(예: 이전에 선택한 사용자에 대한 기사를 쿼리할 수 있음) 비동기 라이브러리의 도움으로 완전히 병렬로 수행하는 것이라고 생각합니다(&lt;a href=&quot;https://github.com/joyent/node/wiki/modules#async-flow&quot; papago-id=&quot;24-1&quot; rel=&quot;noreferrer&quot;&gt;플로우 &lt;/a&gt;제어 / &lt;a href=&quot;https://github.com/joyent/node/wiki/modules#async-flow&quot; papago-id=&quot;24-1&quot; rel=&quot;noreferrer&quot;&gt;비동기 제품 참조&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;나는 노드 기능으로 돌아가기 위해 꽤 많이 사용하는 기능이 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;function freturn (value, callback){
    if(callback){
        return callback(value); 
    }
    return value; 
}; 
&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; &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;저는 socket.io 과 클라이언트의 DB 액세스를 사용하는 것과 매우 유사한 일을 처리하고 있었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 발견한 것은 데이터베이스가 데이터를 얻기 전에 제 DB의 내용을 클라이언트에게 돌려주는 것이었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 제 연구 결과를 여기에 공유하겠습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;28&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;DB를 검색하기 위한 내 기능:&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;//게시판 읽기 - DB 완성&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var readBoards = function() {
        var callback = function() {
            return function(error, data) {
                if(error) {
                    console.log(&quot;Error: &quot; + error);
                }
                console.log(&quot;Boards from Server (fct): &quot; + data);

            }
        };

        return boards.find({}, callback());
    };
&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;socket.on('getBoards', function() {
        var query = dbConnection.readBoards();
        var promise = query.exec();
        promise.addBack(function (err, boards) {
            if(err)
                console.log(&quot;Error: &quot; + err);
            socket.emit('onGetBoards', boards);
        });
    });
&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;문제를 해결하기 위해 몽구스가 주는 약속을 사용하고 DB에서 데이터를 수신하면 소켓에서 클라이언트로 전송합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;32&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;무슨 가치가 있건 간에...&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/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;var async = require('async');

// custom imports
var User = require('../models/user');
var Article = require('../models/article');

var List1Objects = User.find({});
var List2Objects = Article.find({});
var resourcesStack = {
    usersList: List1Objects.exec.bind(List1Objects),
    articlesList: List2Objects.exec.bind(List2Objects),
};

async.parallel(resourcesStack, function (error, resultSet){
    if (error) {
        res.status(500).send(error);
        return;
    }
    res.render('home', resultSet);
});
&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;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/6180896/&lt;a href=&quot;https://stackoverflow.com/questions/6180896/how-to-return-mongoose-results-from-the-find-method&quot; target=&quot;_blank&quot; papago-id=&quot;34-1&quot;&gt;how-to-return-mongoose-results-from-the-find-method&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/930</guid>
      <comments>https://lovepro.tistory.com/930#entry930comment</comments>
      <pubDate>Mon, 22 May 2023 23:15:25 +0900</pubDate>
    </item>
    <item>
      <title>글꼴 파일에 특정 유니코드 글리프가 있는지 프로그래밍 방식으로 확인할 수 있는 방법이 있습니까?</title>
      <link>https://lovepro.tistory.com/929</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;저는 상당히 복잡한 수학과 과학 공식을 포함할 수 있는 PDF를 생성하는 프로젝트를 진행하고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;텍스트는 유니코드 적용 범위가 꽤 좋지만 완전하지 않은 Times New Roman으로 렌더링됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;TNR(대부분의 &quot;이상한&quot; 수학 기호처럼)에 글리프가 없는 코드 포인트에 대해 유니코드 전체 글꼴로 스왑할 수 있는 시스템이 있지만 *.ttf 파일을 쿼리하여 주어진 글리프가 있는지 확인할 수 있는 방법을 찾을 수 없습니다.&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;VB를 사용하고 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;ASP.net 아래의 웹 시스템에 넷. 그러나 모든 프로그래밍 언어/환경의 솔루션은 감사할 것입니다.&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;편집: win32 솔루션은 훌륭해 보이지만, 제가 해결하고자 하는 구체적인 사례는 ASP.Net 웹 시스템에 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;웹 사이트에 Windows API DLL을 포함하지 않고 이 작업을 수행할 수 있는 방법이 있습니까?&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;여기에 c#과 windows API를 사용한 패스가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;[DllImport(&quot;gdi32.dll&quot;)]
public static extern uint GetFontUnicodeRanges(IntPtr hdc, IntPtr lpgs);

[DllImport(&quot;gdi32.dll&quot;)]
public extern static IntPtr SelectObject(IntPtr hDC, IntPtr hObject);

public struct FontRange
{
    public UInt16 Low;
    public UInt16 High;
}

public List&amp;lt;FontRange&amp;gt; GetUnicodeRangesForFont(Font font)
{
    Graphics g = Graphics.FromHwnd(IntPtr.Zero);
    IntPtr hdc = g.GetHdc();
    IntPtr hFont = font.ToHfont();
    IntPtr old = SelectObject(hdc, hFont);
    uint size = GetFontUnicodeRanges(hdc, IntPtr.Zero);
    IntPtr glyphSet = Marshal.AllocHGlobal((int)size);
    GetFontUnicodeRanges(hdc, glyphSet);
    List&amp;lt;FontRange&amp;gt; fontRanges = new List&amp;lt;FontRange&amp;gt;();
    int count = Marshal.ReadInt32(glyphSet, 12);
    for (int i = 0; i &amp;lt; count; i++)
    {
        FontRange range = new FontRange();
        range.Low = (UInt16)Marshal.ReadInt16(glyphSet, 16 + i * 4);
        range.High = (UInt16)(range.Low + Marshal.ReadInt16(glyphSet, 18 + i * 4) - 1);
        fontRanges.Add(range);
    }
    SelectObject(hdc, old);
    Marshal.FreeHGlobal(glyphSet);
    g.ReleaseHdc(hdc);
    g.Dispose();
    return fontRanges;
}

public bool CheckIfCharInFont(char character, Font font)
{
    UInt16 intval = Convert.ToUInt16(character);
    List&amp;lt;FontRange&amp;gt; ranges = GetUnicodeRangesForFont(font);
    bool isCharacterPresent = false;
    foreach (FontRange range in ranges)
    {
        if (intval &amp;gt;= range.Low &amp;amp;&amp;amp; intval &amp;lt;= range.High)
        {
            isCharacterPresent = true;
            break;
        }
    }
    return isCharacterPresent;
}
&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;if (!CheckIfCharInFont(toCheck, theFont) {
    // not present
}
&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;VB를 사용하는 동일한 코드.&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;DllImport(&quot;gdi32.dll&quot;)&amp;gt; _
Public Shared Function GetFontUnicodeRanges(ByVal hds As IntPtr, ByVal lpgs As IntPtr) As UInteger
End Function  

&amp;lt;DllImport(&quot;gdi32.dll&quot;)&amp;gt; _
Public Shared Function SelectObject(ByVal hDc As IntPtr, ByVal hObject As IntPtr) As IntPtr
End Function  

Public Structure FontRange
    Public Low As UInt16
    Public High As UInt16
End Structure  

Public Function GetUnicodeRangesForFont(ByVal font As Font) As List(Of FontRange)
    Dim g As Graphics
    Dim hdc, hFont, old, glyphSet As IntPtr
    Dim size As UInteger
    Dim fontRanges As List(Of FontRange)
    Dim count As Integer

    g = Graphics.FromHwnd(IntPtr.Zero)
    hdc = g.GetHdc()
    hFont = font.ToHfont()
    old = SelectObject(hdc, hFont)
    size = GetFontUnicodeRanges(hdc, IntPtr.Zero)
    glyphSet = Marshal.AllocHGlobal(CInt(size))
    GetFontUnicodeRanges(hdc, glyphSet)
    fontRanges = New List(Of FontRange)
    count = Marshal.ReadInt32(glyphSet, 12)

    For i = 0 To count - 1
        Dim range As FontRange = New FontRange
        range.Low = Marshal.ReadInt16(glyphSet, 16 + (i * 4))
        range.High = range.Low + Marshal.ReadInt16(glyphSet, 18 + (i * 4)) - 1
        fontRanges.Add(range)
    Next

    SelectObject(hdc, old)
    Marshal.FreeHGlobal(glyphSet)
    g.ReleaseHdc(hdc)
    g.Dispose()

    Return fontRanges
End Function  

Public Function CheckIfCharInFont(ByVal character As Char, ByVal font As Font) As Boolean
    Dim intval As UInt16 = Convert.ToUInt16(character)
    Dim ranges As List(Of FontRange) = GetUnicodeRangesForFont(font)
    Dim isCharacterPresent As Boolean = False

    For Each range In ranges
        If intval &amp;gt;= range.Low And intval &amp;lt;= range.High Then
            isCharacterPresent = True
            Exit For
        End If
    Next range
    Return isCharacterPresent
End Function  
&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;pre&gt;&lt;code&gt;    [DllImport(&quot;gdi32.dll&quot;, EntryPoint = &quot;CreateDC&quot;, CharSet = CharSet.Auto, SetLastError = true)]
    private static extern IntPtr CreateDC(string lpszDriver, string lpszDeviceName, string lpszOutput, IntPtr devMode);

    [DllImport(&quot;gdi32.dll&quot;, ExactSpelling = true, SetLastError = true)]
    private static extern bool DeleteDC(IntPtr hdc);

    [DllImport(&quot;Gdi32.dll&quot;)]
    private static extern IntPtr SelectObject(IntPtr hdc, IntPtr hgdiobj);

    [DllImport(&quot;Gdi32.dll&quot;, CharSet = CharSet.Unicode)]
    private static extern int GetGlyphIndices(IntPtr hdc, [MarshalAs(UnmanagedType.LPWStr)] string lpstr, int c,
                                              Int16[] pgi, int fl);

    /// &amp;lt;summary&amp;gt;
    /// Returns true if the passed in string can be displayed using the passed in fontname. It checks the font to 
    /// see if it has glyphs for all the chars in the string.
    /// &amp;lt;/summary&amp;gt;
    /// &amp;lt;param name=&quot;fontName&quot;&amp;gt;The name of the font to check.&amp;lt;/param&amp;gt;
    /// &amp;lt;param name=&quot;text&quot;&amp;gt;The text to check for glyphs of.&amp;lt;/param&amp;gt;
    /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;
    public static bool CanDisplayString(string fontName, string text)
    {
        try
        {
            IntPtr hdc = CreateDC(&quot;DISPLAY&quot;, null, null, IntPtr.Zero);
            if (hdc != IntPtr.Zero)
            {
                using (Font font = new Font(new FontFamily(fontName), 12, FontStyle.Regular, GraphicsUnit.Point))
                {
                    SelectObject(hdc, font.ToHfont());
                    int count = text.Length;
                    Int16[] rtcode = new Int16[count];
                    GetGlyphIndices(hdc, text, count, rtcode, 0xffff);
                    DeleteDC(hdc);

                    foreach (Int16 code in rtcode)
                        if (code == 0)
                            return false;
                }
            }
        }
        catch (Exception)
        {
            // nada - return true
            Trap.trap();
        }
        return true;
    }
&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://www.freetype.org/&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;8-0&quot;&gt;FreeType&lt;/a&gt;은 TrueType 글꼴 파일을 읽을 수 있는 라이브러리이며 글꼴에서 특정 글리프를 쿼리하는 데 사용할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 FreeType은 렌더링을 위해 설계되었으므로 이 솔루션에 필요한 것보다 더 많은 코드를 입력할 수 있습니다.&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;안타깝게도 OpenType/TrueType 글꼴 세계에서도 명확한 솔루션은 없습니다. 문자 대 글리프 매핑은 글꼴 유형과 원래 어떤 플랫폼을 위해 설계되었는지에 따라 약 12가지의 다른 정의가 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://www.microsoft.com/typography/otspec/otff.htm&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;9-3&quot;&gt;Microsoft의 OpenType&lt;/a&gt; 사양 복사본에서 &lt;a href=&quot;http://www.microsoft.com/typography/otspec/cmap.htm&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;9-1&quot;&gt;cmap 테이블&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;a href=&quot;http://support.microsoft.com/kb/241020&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;10-1&quot;&gt;다음&lt;/a&gt; Microsoft KB 문서에서 도움이 될 수 있습니다. http://support.microsoft.com/kb/241020&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;(원래는 Windows 95용으로 작성되었지만) 일반적인 원리는 여전히 적용될 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;샘플 코드는 C++이지만 표준 Windows API를 호출하는 것이기 때문에 약간의 윤활유만 있으면 .NET 언어로도 작동할 가능성이 높습니다.&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;-편집- 95년대의 오래된 API는 Microsoft에서 &quot;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms776488(VS.85).aspx&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;12-1&quot;&gt;Uniscript&lt;/a&gt;&quot;라고 부르는 새로운 API에 의해 폐기된 것으로 보이며, 이 API는 필요한 작업을 수행할 수 있어야 합니다.&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;Scott Nichols가 게시한 코드는 한 가지 버그를 제외하면 훌륭합니다: 글리피드가 Int16보다 클 경우.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;MaxValue는 오버플로를 발생시킵니다.&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;Protected Function Unsign(ByVal Input As Int16) As UInt16
    If Input &amp;gt; -1 Then
        Return CType(Input, UInt16)
    Else
        Return UInt16.MaxValue - (Not Input)
    End If
End Function
&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;그런 다음 GetUnicodeRangesForFont 함수에서 루프에 대한 메인을 다음과 같이 변경했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;For i As Integer = 0 To count - 1
    Dim range As FontRange = New FontRange
    range.Low = Unsign(Marshal.ReadInt16(glyphSet, 16 + (i * 4)))
    range.High = range.Low + Unsign(Marshal.ReadInt16(glyphSet, 18 + (i * 4)) - 1)
    fontRanges.Add(range)
Next
&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;나는 이것을 단지 VB로 했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Net Unit Test 및 WIN32 API 호출 없음.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;특정 문자 U+2026(소문자) 및 U+2409(HTAB)를 확인하는 코드가 포함되어 있으며, 글리프가 있는 문자 수(낮고 높은 값)도 반환합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;모노스페이스 폰트에만 관심이 있었는데, 쉽게 바꿀 수 있을 정도로...&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;    Dim fnt As System.Drawing.Font, size_M As Drawing.Size, size_i As Drawing.Size, size_HTab As Drawing.Size, isMonospace As Boolean
    Dim ifc = New Drawing.Text.InstalledFontCollection
    Dim bm As Drawing.Bitmap = New Drawing.Bitmap(640, 64), gr = Drawing.Graphics.FromImage(bm)
    Dim tf As Windows.Media.Typeface, gtf As Windows.Media.GlyphTypeface = Nothing, ok As Boolean, gtfName = &quot;&quot;

    For Each item In ifc.Families
        'TestContext_WriteTimedLine($&quot;N={item.Name}.&quot;)
        fnt = New Drawing.Font(item.Name, 24.0)
        Assert.IsNotNull(fnt)

        tf = New Windows.Media.Typeface(item.Name)
        Assert.IsNotNull(tf, $&quot;item.Name={item.Name}&quot;)

        size_M = System.Windows.Forms.TextRenderer.MeasureText(&quot;M&quot;, fnt)
        size_i = System.Windows.Forms.TextRenderer.MeasureText(&quot;i&quot;, fnt)
        size_HTab = System.Windows.Forms.TextRenderer.MeasureText(ChrW(&amp;amp;H2409), fnt)
        isMonospace = size_M.Width = size_i.Width
        Assert.AreEqual(size_M.Height, size_i.Height, $&quot;fnt={fnt.Name}&quot;)

        If isMonospace Then

            gtfName = &quot;-&quot;
            ok = tf.TryGetGlyphTypeface(gtf)
            If ok Then
                Assert.AreEqual(True, ok, $&quot;item.Name={item.Name}&quot;)
                Assert.IsNotNull(gtf, $&quot;item.Name={item.Name}&quot;)
                gtfName = $&quot;{gtf.FamilyNames(Globalization.CultureInfo.CurrentUICulture)}&quot;

                Assert.AreEqual(True, gtf.CharacterToGlyphMap().ContainsKey(AscW(&quot;M&quot;)), $&quot;item.Name={item.Name}&quot;)
                Assert.AreEqual(True, gtf.CharacterToGlyphMap().ContainsKey(AscW(&quot;i&quot;)), $&quot;item.Name={item.Name}&quot;)

                Dim t = 0, nMin = &amp;amp;HFFFF, nMax = 0
                For n = 0 To &amp;amp;HFFFF
                    If gtf.CharacterToGlyphMap().ContainsKey(n) Then
                        If n &amp;lt; nMin Then nMin = n
                        If n &amp;gt; nMax Then nMax = n
                        t += 1
                    End If
                Next
                gtfName &amp;amp;= $&quot;,[x{nMin:X}-x{nMax:X}]#{t}&quot;

                ok = gtf.CharacterToGlyphMap().ContainsKey(AscW(ChrW(&amp;amp;H2409)))
                If ok Then
                    gtfName &amp;amp;= &quot;,U+2409&quot;
                End If
                ok = gtf.CharacterToGlyphMap().ContainsKey(AscW(ChrW(&amp;amp;H2026)))
                If ok Then
                    gtfName &amp;amp;= &quot;,U+2026&quot;
                End If
            End If

            Debug.WriteLine($&quot;{IIf(isMonospace, &quot;*M*&quot;, &quot;&quot;)} N={fnt.Name}, gtf={gtfName}.&quot;)
            gr.Clear(Drawing.Color.White)
            gr.DrawString($&quot;Mi{ChrW(&amp;amp;H2409)} {fnt.Name}&quot;, fnt, New Drawing.SolidBrush(Drawing.Color.Black), 10, 10)
            bm.Save($&quot;{fnt.Name}_MiHT.bmp&quot;)
        End If
    Next
&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;blockquote&gt; 
 &lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;em papago-id=&quot;17-0&quot;&gt;MN&lt;/em&gt;=Matrix, gtf=Matrix, [x0-xFFFC]#2488, U+2026.&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;em papago-id=&quot;18-0&quot;&gt;MN&lt;/em&gt;=Matrix New, gtf=Matrix New, [x20-xFFFC]#3177, U+2026.&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;em papago-id=&quot;19-0&quot;&gt;MN&lt;/em&gt;=Malida Console, gtf=Malida Console, [x20-xFB02]#644, U+2026.&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;em papago-id=&quot;20-0&quot;&gt;MN&lt;/em&gt;=Malida Sans 타자기, gtf=Malida Sans 타자기, [x20-xF002]#240, U+2026.&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;em papago-id=&quot;21-0&quot;&gt;MN&lt;/em&gt;=MingLiU-ExtB, gtf=MingLiU-ExtB, [x0-x212]#212.&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;em papago-id=&quot;22-0&quot;&gt;MN&lt;/em&gt;=MingLiU_HKSCS-ExtB, gtf=MingLiU_HKSCS-ExtB, [x0-x212]#212.&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-0&quot;&gt;MN&lt;/em&gt;=MS Gothic, gtf=MS Gothic, [x0-xFFEE]#15760, U+2026.&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;em papago-id=&quot;24-0&quot;&gt;MN&lt;/em&gt;=NSimSun, gtf=NSimSun, [x20-xFFE5]#28737, U+2026.&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;em papago-id=&quot;25-0&quot;&gt;MN&lt;/em&gt;=OCRA 확장, gtf=OCRA 확장, [x20-xF003]#248,U+2026.&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;em papago-id=&quot;26-0&quot;&gt;MN&lt;/em&gt;=SimSun, gtf=SimSun, [x20-xFFE5]#28737, U+2026.&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;em papago-id=&quot;27-0&quot;&gt;MN&lt;/em&gt;=SimSun-ExtB, gtf=SimSun-ExtB, [x20-x7F]#96.&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;em papago-id=&quot;28-0&quot;&gt;MN&lt;/em&gt;=웨딩, gtf=웨딩, [x20-xF0]&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;FF]#446.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt;&lt;p papago-id=&quot;29&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/103725/&lt;a href=&quot;https://stackoverflow.com/questions/103725/is-there-a-way-to-programmatically-determine-if-a-font-file-has-a-specific-unico&quot; target=&quot;_blank&quot; papago-id=&quot;29-1&quot;&gt;is-there-a-way-to-programmatically-determine-if-a-font-file-has-a-specific-unico&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/929</guid>
      <comments>https://lovepro.tistory.com/929#entry929comment</comments>
      <pubDate>Mon, 22 May 2023 23:12:32 +0900</pubDate>
    </item>
    <item>
      <title>Azure KeyVault: Azure.신원.자격 증명을 사용할 경우예외:DefaultAzureCredential이 포함된 자격 증명에서 토큰을 검색하지 못했습니다.</title>
      <link>https://lovepro.tistory.com/928</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Azure KeyVault: Azure.&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;DefaultAzureCredential이 포함된 자격 증명에서 토큰을 검색하지 못했습니다.&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;.net 프레임워크를 대상으로 하는 내 aspnet 코어 애플리케이션을 Azure Keyvault와 연결하려고 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;ID를 지원하는 새 zure VM에서는 모든 것이 정상적으로 작동하지만 이 애플리케이션은 ID를 지원하지 않는 기존 zure VM에서 호스팅됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;시스템 환경 변수 AzureService를 만들었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Azure keyvault를 사용하는 분리 가능한 다른 .net 프레임워크 응용 프로그램인 AuthConnectionString은 이미 사용 중이며 완벽하게 작동합니다.&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;내 stdout 로그를 보면 매번 다음과 같은 예외가 발생합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;애저, 아이덴티티&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;자격 증명을 사용할 경우&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예외:&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;기본 AzureCredential이 포함된 자격 증명에서 토큰을 검색하지 못했습니다. 환경 자격 증명 인증을 사용할 수 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;환경 변수가 완전히 구성되지 않았습니다. 관리됨&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;IdentityCredential 인증을 사용할 수 없습니다. 요청한 ID가 이 리소스에 할당되지 않았습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;시작 시 다음 코드를 사용합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =&amp;gt;
            WebHost.CreateDefaultBuilder(args)               
       .UseApplicationInsights(ConfigurationManager.AppSettings[&quot;applicationInsightsInstrumentationKey&quot;])
                .ConfigureKestrel(options =&amp;gt; options.AddServerHeader = false)
                .UseIISIntegration()
                .ConfigureAppConfiguration((context, config) =&amp;gt;
                {
                    var vaultName = ConfigurationManager.AppSettings[&quot;VaultName&quot;];
                    if (!string.IsNullOrEmpty(vaultName))
                    {
                        var azureServiceTokenProvider = new AzureServiceTokenProvider();
                        var keyVaultClient = new KeyVaultClient(
                            new KeyVaultClient.AuthenticationCallback(
                                azureServiceTokenProvider.KeyVaultTokenCallback));

                        config.AddAzureKeyVault(
                            $&quot;https://{vaultName}.vault.azure.net/&quot;,
                            keyVaultClient,
                            new DefaultKeyVaultSecretManager());
                    }
                })
                .UseStartup&amp;lt;Startup&amp;gt;();
&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;web.config에서 다음 항목을 선택합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;   &amp;lt;configSections&amp;gt;
      &amp;lt;section name=&quot;configBuilders&quot; type=&quot;System.Configuration.ConfigurationBuildersSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&quot; restartOnExternalChanges=&quot;false&quot; requirePermission=&quot;false&quot;/&amp;gt;
   &amp;lt;/configSections&amp;gt;
   &amp;lt;configBuilders&amp;gt;
    &amp;lt;builders&amp;gt;
      &amp;lt;add name=&quot;AzureKeyVault&quot; vaultName=&quot;&amp;lt;#= this.VaultName #&amp;gt;&quot; type=&quot;Microsoft.Configuration.ConfigurationBuilders.AzureKeyVaultConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.Azure, Version=2.0.0.0, Culture=neutral&quot; vaultUri=&quot;https://&amp;lt;#= this.VaultName #&amp;gt;.vault.azure.net&quot; /&amp;gt;
    &amp;lt;/builders&amp;gt;
  &amp;lt;/configBuilders&amp;gt;
  &amp;lt;connectionStrings configBuilders=&quot;AzureKeyVault&quot;&amp;gt;
      &amp;lt;add name=&quot;ConnectionString&quot; connectionString=&quot;&quot; providerName=&quot;System.Data.SqlClient&quot;/&amp;gt;
  &amp;lt;/connectionStrings&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 오류는 Visual Studio가 어떤 이유로 Azure Service Authentication 연결을 잃었거나 실제 AD 자격 증명이 변경된 경우(예: 암호 변경)에도 발생할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 경우 다시 로그인하기만 하면 문제가 해결됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Visual Studio에서 Tools &amp;gt; Options로 이동합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&quot;Azure 서비스 인증&quot; &amp;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;그렇지 않으면 오른쪽 상단의 Visual Studio 프로필을 통해 정기적으로 로그아웃 + 로그인해 보십시오.&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;https://github.com/Azure/azure-sdk-for-net/tree/master/sdk/identity/Azure.Identity#environment-variables&quot; rel=&quot;noreferrer&quot; papago-id=&quot;9-1&quot;&gt;환경&lt;/a&gt; 변수를 설정하고 있는지 확인해 주시겠습니까?&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;AZURE_CLIENT_ID&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;0&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;의 앱 ID 비스책앱의자 아이디&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;AZURE_TENANT_ID&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; Directory  Azure Active Directory 파일 &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;AZURE_CLIENT_SECRET&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 비밀 중 입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;VS 2019 앱에서는 zure 리소스 그룹에 액세스할 수 있는 VS 로그인 사용자의 자격 증명을 다시 입력할 수 있습니다.&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;IIS Express가 아닌 IIS를 사용하여 사이트를 로컬로 실행하는 경우 Azure 계정 자격 증명으로 사이트의 응용 프로그램 풀 ID를 실행해야 할 수도 있습니다. 따라서 브라우저에서 portal.azure.com 또는 dev.azure.com 에 로그인하는 데 사용하는 자격 증명과 정확한 자격 증명이 필요할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;PAT가 작동하지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;설정이 완료되면 앱 풀을 재활용합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;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;%windir%\System32\inetsrv\config\applicationHost.config&lt;/code&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;setProfileEnvironment&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;false&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;true&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;없으면 applicationPoolDefaults 태그 아래에 추가합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;applicationPoolDefaults managedRuntimeVersion=&quot;v4.0&quot;&amp;gt;
    &amp;lt;processModel identityType=&quot;ApplicationPoolIdentity&quot; loadUserProfile=&quot;true&quot; setProfileEnvironment=&quot;true&quot; /&amp;gt;
&amp;lt;/applicationPoolDefaults&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;저에게 있어 이것은 단지 첫 번째 예외일 뿐입니다. 더 깊이 파고드는 것입니다(계속 =&amp;gt; 계속 =&amp;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;''az''는 내부 또는 외부 명령으로 인식되지 않습니다.&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;알고 보니 컴퓨터에 Azure CLI를 설치하는 것을 잊었습니다!&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;한 번 그렇게 하면 원본 'Credential Unavailable'이 남아 있습니다.&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://stackoverflow.com/questions/66025763/azure-security-keyvault-secrets-az-is-not-recognized-as-an-internal-or-external&quot; papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 StackOverflow 링크가 도움이 되었습니다.&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 이 문제를 해결하기 위해 다음 단계를 수행했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Zure 포털 액세스 권한과 필요한 리소스가 있는지 확인합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li papago-id=&quot;28&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Azure CLI 설치&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;29&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;관리자로 PowerShell 열기&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;30&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;az login 명령을 사용하여 zure에 로그인&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;관리자로 비주얼 스튜디오 열기&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&gt;&lt;p papago-id=&quot;32&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;즉, IDE가 빌드 환경/컨테이너에서 Azure 자격 증명을 찾을 수 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;로그아웃/로그인 방법이 작동하지 않으면 터미널에서 다음을 수행합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;az login&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 papago-id=&quot;34&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;IIS에서 호스팅되는 웹 서비스를 디버깅할 때 응용 프로그램 풀 ID를 사용자 계정으로 설정해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;35&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 몇 시간 동안 시도한 끝에 우연히 이것에 부딪혔고, 다음 코드는 저를 올바른 방향으로 밀어냈습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;        var credential = new DefaultAzureCredential(
            new DefaultAzureCredentialOptions
            {
                VisualStudioTenantId = &quot;xxx&quot;,
                ExcludeVisualStudioCodeCredential = true,
                ExcludeEnvironmentCredential = true,
                ExcludeManagedIdentityCredential = true,
                ExcludeVisualStudioCredential = false,
                ExcludeAzureCliCredential = true,
                ExcludeAzurePowerShellCredential = true,
                ExcludeSharedTokenCacheCredential = true
            });
        var token = credential.GetToken(new Azure.Core.TokenRequestContext(new[] { &quot;https://database.windows.net/.default&quot; }));
&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;Visual Studio 토큰 공급자는 c:\windows\system32\inetsrv에서 액세스할 수 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;ID 서비스\&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;애저 서비스&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Auth\tokenprovider.json&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;물론 그것은 시스템인 기본 ApplicationPool ID입니다.&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/62817337/&lt;a href=&quot;https://stackoverflow.com/questions/62817337/azure-keyvault-azure-identity-credentialunavailableexception-defaultazurecrede&quot; target=&quot;_blank&quot; papago-id=&quot;38-1&quot;&gt;azure-keyvault-azure-identity-credentialunavailableexception-defaultazurecrede&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/928</guid>
      <comments>https://lovepro.tistory.com/928#entry928comment</comments>
      <pubDate>Mon, 22 May 2023 23:09:24 +0900</pubDate>
    </item>
    <item>
      <title>Spring Data MongoDB의 List 매개 변수를 사용한 리포지토리 쿼리</title>
      <link>https://lovepro.tistory.com/927</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Spring Data MongoDB의 List 매개 변수를 사용한 리포지토리 쿼리&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;저는 다음과 같은 POJO를 가지고 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;@Document(collection = &quot;questions&quot;)
public class Question {

    @Id
    private String id;

    public List&amp;lt;String&amp;gt; getTags() {
        return tags;
    }

    public void setTags(List&amp;lt;String&amp;gt; tags) {
        this.tags = tags;
    }
}
&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;MongoRepository&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;Question&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;pre&gt;&lt;code&gt;@Repository
public interface QuestionRepository extends MongoRepository&amp;lt;Question, String&amp;gt; {
    List&amp;lt;Question&amp;gt; findByTags(List&amp;lt;String&amp;gt; tags);
}
&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;List&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Mongo의 질문에 할당된 태그 목록과 완전히 일치합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예: Mongo에서 태그 목록과 함께 질문이 있는 경우&lt;/font&gt;&lt;/font&gt;&lt;code&gt;[ &quot;t1&quot;, &quot;t2&quot;, &quot;t3&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&gt;&lt;/font&gt;&lt;code&gt;findByTags(List)&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;[ &quot;t1&quot;, &quot;t2&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&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;@Repository
public interface QuestionRepository extends MongoRepository&amp;lt;Question, String&amp;gt; {
    @Query(&quot;{ tags: { $all: ?0 } }&quot;)
    List&amp;lt;Question&amp;gt; findByTags(List&amp;lt;String&amp;gt; tags);
}
&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;war&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;The web application [backend] appears to have started a thread named [cluster-1-db:27017] but has failed to stop it. This is very likely to create a memory leak.
&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;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;Spring Data MongoDB 설명서의 다음 섹션에는 쿼리 파생에 대해 Spring에서 사용하는 지원되는 모든 키워드가 나열되어 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#repository-query-keywords&quot; rel=&quot;noreferrer&quot; papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/ #compository-messages-messages&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;@Repository
public interface QuestionRepository extends MongoRepository&amp;lt;Question, String&amp;gt; {
     List&amp;lt;Question&amp;gt; findByTagsIn(List&amp;lt;String&amp;gt; tags);
}
&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;CONTINING 키워드는 다음과 같이 사용할 수도 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;@Repository
public interface QuestionRepository extends MongoRepository&amp;lt;Question, String&amp;gt; {
     List&amp;lt;Question&amp;gt; findByTagsContaining(List&amp;lt;String&amp;gt; tags);
}
&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;예제 및 mongo 쿼리의 모양은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;findByAddressesContaining(Address address)

{&quot;addresses&quot; : { &quot;$in&quot; : address}}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 또한 매개변수의 주소 목록을 허용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://github.com/spring-projects/spring-data-mongodb/blob/e28bede416e4ddac19a35dc239388afc90b9cac4/src/main/asciidoc/reference/mongo-repositories.adoc&quot; rel=&quot;noreferrer&quot; papago-id=&quot;20-1&quot;&gt;설명서&lt;/a&gt; 참조: https://github.com/spring-projects/spring-data-mongodb/blob/e28bede416e4ddac19a35dc239388afc90b9cac4/src/main/asciidoc/reference/mongo-repositories.adoc&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/30123810/&lt;a href=&quot;https://stackoverflow.com/questions/30123810/repository-query-with-a-list-parameter-in-spring-data-mongodb&quot; target=&quot;_blank&quot; papago-id=&quot;21-1&quot;&gt;repository-query-with-a-list-parameter-in-spring-data-mongodb&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/927</guid>
      <comments>https://lovepro.tistory.com/927#entry927comment</comments>
      <pubDate>Mon, 22 May 2023 22:55:00 +0900</pubDate>
    </item>
    <item>
      <title>각 열에 대해 varchar(MAX)가 사용되고 있음에도 불구하고 CSV 파일을 가져오는 동안 SQL Server에서 오류가 발생</title>
      <link>https://lovepro.tistory.com/926</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;각 열에 대해 varchar(MAX)가 사용되고 있음에도 불구하고 CSV 파일을 가져오는 동안 SQL Server에서 오류가 발생&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;CSV 파일 기가바이트)을 대용량여을파에일합삽(니다고기트이바려가하입)에 삽입하려고 &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;SQL Server&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;Import Wizard&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 마지막으로 파일을 가져오려고 시도합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 다음 오류 보고서가 표시됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&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;/li&gt; 
&lt;/ul&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;오류 0xc02020a1: 데이터 흐름 작업 1: 데이터 변환에 실패했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;열 &quot;제목&quot;에 대한 데이터 변환에서 상태 값 4와 상태 텍스트 &quot;텍스트가 잘렸거나 대상 코드 페이지에서 하나 이상의 문자가 일치하지 않습니다.&quot;를 반환했습니다.&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 class=&quot;papago-parent&quot;&gt;(&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;SQL Server Import and Export Wizard&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;오류 0xc020902a: 데이터 흐름 작업 1: &quot;소스 - Train_csv.&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;font class=&quot;papago-parent&quot;&gt;제목 &quot;]&quot;이(가) 잘리고 &quot;Source - Train_csv&quot;의 잘린 행 처리 때문에 실패했습니다.&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;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;/blockquote&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;SQL Server Import and Export Wizard&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;blockquote&gt; 
 &lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;오류 0xc0202092: 데이터 흐름 작업 1: 파일 &quot;C:&quot; 파일을 처리하는 동안 오류가 발생했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;\Train.csv&quot;가 데이터 행 2에 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&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;SQL Server Import and Export Wizard&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;blockquote&gt; 
 &lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;오류 0xc0047038: 데이터 흐름 작업 1: SSIS 오류 코드 DTS_E_PRIMEOUTPUT에 실패했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;소스의 PrimeOutput 메서드 - Train_csv에서 오류 코드 0xC0202092를 반환했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;파이프라인 엔진에서 PrimeOutput()이라는 오류 코드를 반환했습니다.&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&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;SQL Server Import and Export Wizard&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;먼저 파일을 삽입하기 위해 테이블을 만들고 각 열에 varchar(MAX)를 고정하도록 설정했는데, 이 절단 문제가 어떻게 계속 발생할 수 있는지 이해할 수 없습니다.&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;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;Advanced&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;탭(새 테이블을 만들 경우 출력의 데이터 유형이 되지만, 그렇지 않으면 원본 데이터를 처리하는 데만 사용됩니다.)&lt;/font&gt;&lt;/font&gt;&lt;/font&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; 유형은 MS 의 데이터 유형과 .&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;VARCHAR(255)&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;14&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;건그입니다…&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;DT_STR&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;의 폭은 &quot; &quot; &quot; &quot; &quot; &quot; &quot; &quot; &quot; &quot; &quot; &quot; &quot; 으로 할 수 .&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;255&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;VARCHAR(MAX)&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;DT_TEXT&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;/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;Advanced&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;DT_STR&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;DT_TEXT&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(여러 열을 선택하여 한 번에 모두 변경할 수 있습니다.)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://i.stack.imgur.com/KVQdv.jpg&quot; rel=&quot;noreferrer&quot;&gt;&lt;img src=&quot;https://i.stack.imgur.com/KVQdv.jpg&quot; alt=&quot;가져오기 및 내보내기 마법사 - 데이터 원본 - 고급&quot; papago-attr-id=&quot;1&quot;&gt;&lt;/a&gt;&lt;/p&gt;&lt;p papago-id=&quot;30&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 답변은 일반적으로 적용되지 않을 수 있지만 작은 텍스트 파일을 가져올 때 발생한 오류를 수정했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;플랫 파일 공급자가 원본의 고정된 50자 텍스트 열을 기준으로 가져오지만 올바르지 않습니다.&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;31&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 문제를 해결하려면 플랫 파일 공급자의 &quot;데이터 원본 선택&quot;에서 파일을 선택한 후 &quot;제안 유형&quot;을 선택합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;버튼이 입력 열 목록 아래에 나타납니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 버튼을 누른 후 사용 중인 대화 상자가 변경되지 않았더라도 플랫 파일 공급자는 원본 .csv 파일을 다시 쿼리한 &lt;em papago-id=&quot;31-1&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;32&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;일단 이 작업이 완료되면 더 이상의 문제 없이 수입이 진행되었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;33&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;버그인 것 같습니다. 해결 방법을 적용한 다음 다시 시도하십시오. http://support.&lt;a href=&quot;http://support.microsoft.com/kb/281517&quot; rel=&quot;nofollow&quot; papago-id=&quot;33-1&quot;&gt;microsoft&lt;/a&gt;.com/kb/281517 .&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;또한 고급 탭으로 이동하여 대상 열 길이가 Varchar(최대)인지 확인합니다.&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;Advanced Editor(고급 편집기)에서 문제를 해결하지 못했습니다. 대신 메모장(또는 즐겨찾기 텍스트/xml 편집기)을 통해 dtsx-file을 편집하고 속성의 값을 수동으로 바꾸어야 했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;length=&quot;0&quot;&lt;/code&gt; &lt;code&gt;dataType=&quot;nText&quot;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(유니코드를 사용하고 있습니다)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;37&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;텍스트/xml 모드에서 편집하기 전에 항상 dtsx 파일을 백업하십시오.&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;SQL Server 2008 R2 실행&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;고급 탭으로 이동 ----&amp;gt; 열의 데이터 유형 ---&amp;gt; 여기서 데이터 유형을 DT_STR에서 DT_TEXT로 변경하고 열 너비는 255입니다.&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;문제: Jet OLE DB 공급자가 레지스트리 키를 읽어 소스 열의 유형을 추측하기 위해 읽을 행 수를 결정합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;기본적으로 이 키의 값은 8입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 공급자는 원본 데이터의 처음 8개 행을 검색하여 열의 데이터 유형을 확인합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;텍스트처럼 보이는 필드가 있고 데이터 길이가 255자를 초과하는 경우 열은 메모 필드로 입력됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 소스의 처음 8개 행에 255자를 초과하는 데이터가 없으면 Jet은 데이터 유형의 특성을 정확하게 확인할 수 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;내보낸 시트의 데이터의 처음 8행 길이가 255보다 작기 때문에 소스 길이를 VARCHAR(255)로 간주하고 더 긴 열에서 데이터를 읽을 수 없습니다.&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;2012년 이후에는 가져오기 마법사의 고급 탭에서 값을 업데이트할 수 있습니다.&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/18600040/&lt;a href=&quot;https://stackoverflow.com/questions/18600040/errors-in-sql-server-while-importing-csv-file-despite-varcharmax-being-used-fo&quot; target=&quot;_blank&quot; papago-id=&quot;42-1&quot;&gt;errors-in-sql-server-while-importing-csv-file-despite-varcharmax-being-used-fo&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/926</guid>
      <comments>https://lovepro.tistory.com/926#entry926comment</comments>
      <pubDate>Mon, 22 May 2023 22:53:44 +0900</pubDate>
    </item>
    <item>
      <title>C# WPF의 콤보 상자에서 선택한 값 가져오기</title>
      <link>https://lovepro.tistory.com/925</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;C# WPF의 콤보 상자에서 선택한 값 가져오기&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;Windows 양식 대신 WPF 양식을 사용하기 시작했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Windows 양식을 사용하면 다음과 같은 작업을 수행할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;ComboBox.SelectedValue.toString();
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 이것은 잘 될 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;WPF에서 어떻게 해야 합니까?&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;기존 WF 형태와 비교하여 약간 이상한 방법을 알아냈습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;ComboBoxItem typeItem = (ComboBoxItem)cboType.SelectedItem;
string value = typeItem.Content.ToString();
&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;String s = comboBox1.Text;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이렇게 하면 선택한 값을 문자열로 가져옵니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내 XAML은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;ComboBox Grid.Row=&quot;2&quot; Grid.Column=&quot;1&quot; Height=&quot;25&quot; Width=&quot;200&quot; SelectedIndex=&quot;0&quot; Name=&quot;cmbDeviceDefinitionId&quot;&amp;gt;
    &amp;lt;ComboBoxItem Content=&quot;United States&quot; Name=&quot;US&quot;&amp;gt;&amp;lt;/ComboBoxItem&amp;gt;
    &amp;lt;ComboBoxItem Content=&quot;European Union&quot; Name=&quot;EU&quot;&amp;gt;&amp;lt;/ComboBoxItem&amp;gt;
    &amp;lt;ComboBoxItem Content=&quot;Asia Pacific&quot; Name=&quot;AP&quot;&amp;gt;&amp;lt;/ComboBoxItem&amp;gt;
&amp;lt;/ComboBox&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;내용이 텍스트로 표시되고 WPF 콤보 상자의 이름이 표시됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;선택한 항목의 이름을 얻기 위해 다음 코드를 따릅니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;ComboBoxItem ComboItem = (ComboBoxItem)cmbDeviceDefinitionId.SelectedItem;
string name = ComboItem.Name;
&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;WPF 콤보 상자의 선택한 텍스트를 가져오는 방법&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;string name = cmbDeviceDefinitionId.SelectionBoxItem.ToString();
&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;XAML 파일에서 ComboBox의 이름을 설정했는지 확인합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;ComboBox Height=&quot;23&quot; Name=&quot;comboBox&quot; /&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;SelectedItem&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;MessageBox.Show(comboBox.SelectedItem.ToString());
&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;ComboBox에 바인딩하는 내용에 따라 다릅니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;MyObject라는 개체를 바인딩하고 Name이라는 속성이 있는 경우 다음 작업을 수행합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;MyObject mo = myListBox.SelectedItem as MyObject;
return mo.Name;
&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;string yourstringname = (yourComboBox.SelectedItem as ComboBoxItem).Content.ToString();
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;콤보 상자의 변형으로&lt;/font&gt;&lt;/font&gt;&lt;code&gt;SelectionChanged&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;private void ComboBoxName_SelectionChanged(object send ...
{
    string s = ComboBoxName.Items.GetItemAt(ComboBoxName.SelectedIndex).ToString();
}
&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;비슷한 문제가 있었고 이 스레드에서 제안된 여러 솔루션을 시도했지만 ComboBox 항목이 실제로 업데이트되어 새로운 선택 항목이 표시되기 전에 SelectionChanged Event가 실행되고 있음을 발견했습니다(즉, 변경이 발생하기 전에 항상 콤보 상자의 내용을 제공함).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이를 극복하기 위해서는 콤보 상자에서 직접 값을 로드하려고 하기보다는 이벤트 핸들러에 자동으로 전달되는 e 매개 변수를 사용하는 것이 더 낫다는 것을 알게 되었습니다.&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;XAML:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;Window.Resources&amp;gt;
    &amp;lt;x:Array x:Key=&quot;Combo&quot; Type=&quot;sys:String&quot;&amp;gt;
        &amp;lt;sys:String&amp;gt;Item 1&amp;lt;/sys:String&amp;gt;
        &amp;lt;sys:String&amp;gt;Item 2&amp;lt;/sys:String&amp;gt;
    &amp;lt;/x:Array&amp;gt;
&amp;lt;/Window.Resources&amp;gt;
&amp;lt;Grid&amp;gt;
    &amp;lt;ComboBox Name=&quot;myCombo&quot; ItemsSource=&quot;{StaticResource Combo}&quot; SelectionChanged=&quot;ComboBox_SelectionChanged&quot; /&amp;gt;
    &amp;lt;TextBlock Name=&quot;MyTextBlock&quot;&amp;gt;&amp;lt;/TextBlock&amp;gt;
&amp;lt;/Grid&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;C#:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    string chosenValue = e.AddedItems[0].ToString();
}
&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;XAML 코드에 &quot;SelectedValuePath&quot;를 추가하고 콤보 상자와 함께 반환할 모델 속성에 바인딩한 것이 전부입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;ComboBox SelectedValuePath=&quot;_Department&quot;
          DisplayMemberPath=&quot;_Department&quot;
          Height=&quot;23&quot;
          HorizontalAlignment=&quot;Left&quot;
          ItemsSource=&quot;{Binding}&quot;
          Margin=&quot;-58,1,0,5&quot;
          Name=&quot;_DepartmentComboBox&quot;
          VerticalAlignment=&quot;Center&quot;
          Width=&quot;268&quot;/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이는 주로 상자를 채우는 방법에 따라 달라집니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;a를 부착하여 수행하는 경우&lt;/font&gt;&lt;/font&gt;&lt;code&gt;DataTable&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;ItemsSource&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;24&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신은 a를 첨부하는 것을 찾을 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;SelectionChanged&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;25&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이벤트 핸들러를 XAML의 상자에 입력한 다음 이를 코드백에 사용하면 유용합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;private void ComboBoxName_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    ComboBox cbx = (ComboBox)sender;
    string s = ((DataRowView)cbx.Items.GetItemAt(cbx.SelectedIndex)).Row.ItemArray[0].ToString();
}
&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;ComboBoxName.Items.GetItemAt(ComboBoxName.SelectedIndex).ToString();&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;DataRowView&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;28&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내가 해야 할 일을 찾았고, 또 다른 것은:&lt;/font&gt;&lt;/font&gt;&lt;code&gt;((DataRowView)comboBox1.SelectedItem).Row.ItemArray[0].ToString();&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;.SelectedItem&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;.Items.GetItemAt(comboBox1.SelectedIndex)&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;.SelectedItem&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 class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;동적으로  상자를 사용하는 &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ComboBoxItem&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;드롭다운에 있는 항목은 XAML의 직접적인 부분으로, 다음 코드를 사용합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;private void ComboBoxName_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    ComboBox cbx = (ComboBox)sender;
    string val = String.Empty;
    if (cbx.SelectedValue == null)
        val = cbx.SelectionBoxItem.ToString();
    else
        val = cboParser(cbx.SelectedValue.ToString());
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내가 한 것을 보게 될 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;cboParser&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;code&gt;SelectedValue&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;System.Windows.Controls.Control: Some Value&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 class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 당신은 당신의 말을 해석해야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Some Value&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;/p&gt; 
&lt;pre&gt;&lt;code&gt;private static string cboParser(string controlString)
{
    if (controlString.Contains(':'))
    {
        controlString = controlString.Split(':')[1].TrimStart(' ');
    }
    return controlString;
}
&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;그것은 당신이 어떻게 상자를 채우느냐에 달려 있고, 어떻게 그것으로부터 가치를 되찾을 수 있느냐에 달려 있습니다.&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;ComboBox 선택 변경 이벤트 생성 및 항목 설정&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;WPF 설계의 소스=&quot;{Binding}&quot;:&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;42&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;코드:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    string ob = ((DataRowView)comboBox1.SelectedItem).Row.ItemArray[0].ToString();
    MessageBox.Show(ob);
}
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;private void usuarioBox_TextChanged(object sender, EventArgs e)
{
    string textComboBox = usuarioBox.Text;
}
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;MsgBox(cmbCut.SelectedValue().ToString())
&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;C#에서 ComboBox의 선택된 인덱스 값을 가져오려면 다음을 사용합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Combobox.SelectedValue
&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;선택됨을 사용할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;색인화하고 ComboBox를 사용합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;항목[선택됨]&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Index).ToString().&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;46&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;실제로 다음과 같은 방법으로도 할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 ComboBox 이름같가정다니합고다과다라고 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;comboBoxA&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러면 다음과 같이 값을 얻을 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;string combo = comboBoxA.SelectedValue.ToString();
&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;질문하신 지 5년이 지났으니 이제 지원이 된 것 같습니다.&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;String CmbTitle = (cmb.SelectedItem as ComboBoxItem).Content.ToString()
&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;string index = ComboBoxDB.Text;
        if (index.Equals(&quot;&quot;))
        {                
            MessageBox.Show(&quot;your message&quot;);
        }
        else
        {
            openFileDialog1.ShowDialog();
            string file = openFileDialog1.FileName;
            reader = new StreamReader(File.OpenRead(file));
        }
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;        // -----------------------------------------------------------------

        private void onSelectionChanged(object sender, 
                                        SelectionChangedEventArgs e)
        {
            String result = ((ComboBox)sender).SelectedItem.ToString();
            // do something with result
        }

        // -----------------------------------------------------------------
&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;저는 이것이 유용하다고 생각했습니다.&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;pre&gt;&lt;code&gt;(comboBox1.SelectedItem as dynamic).Value
&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;pre&gt;&lt;code&gt;(comboBox1.SelectedItem as dynamic).Text
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;ComboBox x:Name=&quot;TestComboBox&quot; SelectionChanged=&quot;TestComboBox_SelectionChanged&quot; Padding=&quot;2&quot;&amp;gt;
    &amp;lt;ComboBoxItem&amp;gt;Item 1&amp;lt;/ComboBoxItem&amp;gt;
    &amp;lt;ComboBoxItem&amp;gt;Item 2&amp;lt;/ComboBoxItem&amp;gt;
&amp;lt;/ComboBox&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;55&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;방법 1&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;string content = (((sender as ComboBox).SelectedValue) as ComboBoxItem).Content.ToString();
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;56&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;방법 2&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;string content = (string)((ComboBoxItem)((ComboBox)sender).SelectedValue).Content;
&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; 속을통해값추수있다니습출할을성▁▁the▁through▁the▁values다▁you니▁extract를 통해 값을 추출할 수 .&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;SelectedValue&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;pre&gt;&lt;code&gt;combo.SelectedValue.ToString();
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;59&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 이 코드를 사용합니다. 그리고 그것은 저에게 효과가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;DataRowView typeItem = (DataRowView)myComboBox.SelectedItem; 
string value = typeItem.Row[0].ToString();
&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;XAML:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;ComboBox Height=&quot;23&quot; HorizontalAlignment=&quot;Left&quot; Margin=&quot;19,123,0,0&quot; Name=&quot;comboBox1&quot; VerticalAlignment=&quot;Top&quot; Width=&quot;33&quot; ItemsSource=&quot;{Binding}&quot; AllowDrop=&quot;True&quot; AlternationCount=&quot;1&quot;&amp;gt;
    &amp;lt;ComboBoxItem Content=&quot;1&quot; Name=&quot;ComboBoxItem1&quot; /&amp;gt;
    &amp;lt;ComboBoxItem Content=&quot;2&quot; Name=&quot;ComboBoxItem2&quot; /&amp;gt;
    &amp;lt;ComboBoxItem Content=&quot;3&quot; Name=&quot;ComboBoxItem3&quot; /&amp;gt;
&amp;lt;/ComboBox&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr&gt; 
&lt;p papago-id=&quot;61&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;C#:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;if (ComboBoxItem1.IsSelected)
{
    // Your code
}
else if (ComboBoxItem2.IsSelected)
{
    // Your code
}
else if(ComboBoxItem3.IsSelected)
{
    // Your code
}
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;62&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제게 도움이 됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;System.Data.DataRowView typeItem = (System.Data.DataRowView)ComboBoxName.SelectedItem;
string value = typeItem.DataView.ToTable(&quot;a&quot;).Rows[0][0].ToString();
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;63&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/4351603/&lt;a href=&quot;https://stackoverflow.com/questions/4351603/get-selected-value-from-combo-box-in-c-sharp-wpf&quot; target=&quot;_blank&quot; papago-id=&quot;63-1&quot;&gt;get-selected-value-from-combo-box-in-c-sharp-wpf&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/925</guid>
      <comments>https://lovepro.tistory.com/925#entry925comment</comments>
      <pubDate>Mon, 22 May 2023 22:52:40 +0900</pubDate>
    </item>
    <item>
      <title>변수 안에 있는 문자열에 큰따옴표를 추가하려면 어떻게 해야 합니까?</title>
      <link>https://lovepro.tistory.com/924</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;string title = string.empty;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 &lt;em papago-id=&quot;2-1&quot;&gt;디브&lt;/em&gt; 안에 전달된 내용을 큰따옴표 안에 표시해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 다음과 같은 글을 썼습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;...
...
&amp;lt;div&amp;gt;&quot;+ title +@&quot;&amp;lt;/div&amp;gt;
...
...
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기에 큰따옴표를 추가하려면 어떻게 해야 합니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음과 같이 표시되도록 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&quot;How to add double quotes&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;두 배로 확장하여 이스케이프해야 합니다(verbatim 문자열 리터럴).&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;string str = @&quot;&quot;&quot;How to add doublequotes&quot;&quot;&quot;;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;또는 일반 문자열 리터럴을 사용하여 탈출합니다.&lt;/font&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;/p&gt; 
&lt;pre&gt;&lt;code&gt;string str = &quot;\&quot;How to add doublequotes\&quot;&quot;;
&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;/p&gt; 
&lt;pre&gt;&lt;code&gt;var string1 = @&quot;&quot;&quot;inside quotes&quot;&quot;&quot;;
var string2 = &quot;\&quot;inside quotes\&quot;&quot;;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;무슨 일이 일어나는지 좀 더 명확하게 하기 위해:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var string1 = @&quot;before &quot;&quot;inside&quot;&quot; after&quot;;
var string2 = &quot;before \&quot;inside\&quot; after&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;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;  /// &amp;lt;summary&amp;gt;
    /// Put a string between double quotes.
    /// &amp;lt;/summary&amp;gt;
    /// &amp;lt;param name=&quot;value&quot;&amp;gt;Value to be put between double quotes ex: foo&amp;lt;/param&amp;gt;
    /// &amp;lt;returns&amp;gt;double quoted string ex: &quot;foo&quot;&amp;lt;/returns&amp;gt;
    public static string AddDoubleQuotes(this string value)
    {
        return &quot;\&quot;&quot; + value + &quot;\&quot;&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;그럼 foo를 부르셔도 됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이중 따옴표() 또는 &quot;foo&quot;를 추가합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;원하는 모든 문자열에 Double Quotes()를 추가합니다.&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;string title = string.Format(&quot;&amp;lt;div&amp;gt;\&quot;{0}\&quot;&amp;lt;/div&amp;gt;&quot;, &quot;some text&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;string str = '&quot;' + &quot;How to add doublequotes&quot; + '&quot;';
&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;    string path = @&quot;H:\\MOVIES\\Battel SHIP\\done-battleship-cd1.avi&quot;;
    string hh = string.Format(&quot;\&quot;{0}\&quot;&quot;, path);
    Process.Start(@&quot;C:\Program Files (x86)\VideoLAN\VLC\vlc.exe &quot;, hh + &quot; ,--play&quot;);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;의 진정한 가치&lt;/font&gt;&lt;/font&gt;&lt;code&gt;hh&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;통과하면 &quot;H:\MOVIES\Battel SHIP\done-battleship-cd1.avi&quot;가 됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이중 리터럴이 필요한 경우 다음을 사용합니다. @&quot;H:\MOVIES\Battel SHIP\done-battleship-cd1.avi&quot;;&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;H:\MOVIESBATTEL SHIP\done-Battleship-cd1.avi&quot;;&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;a href=&quot;https://dotnetfiddle.net/5rZhRc&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;20-3&quot;&gt;작업&lt;/a&gt; &lt;a href=&quot;https://msdn.microsoft.com/en-us/magazine/dn879355.aspx&quot; papago-id=&quot;20-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;예제&lt;/a&gt;와 함께 문자열 보간 &lt;a href=&quot;https://msdn.microsoft.com/en-us/magazine/dn879355.aspx&quot; papago-id=&quot;20-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;사용&lt;/a&gt;:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var title = &quot;Title between quotes&quot;;
var string1 = $@&quot;&amp;lt;div&amp;gt;&quot;&quot;{title}&quot;&quot;&amp;lt;/div&amp;gt;&quot;;  // Note the order of the $@
Console.WriteLine (string1);
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3 papago-id=&quot;21&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;산출량&lt;/font&gt;&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;div&amp;gt;&quot;Title between quotes&quot;&amp;lt;/div&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;font class=&quot;papago-parent&quot;&gt;마찬가지로 CodeId[i] 및 CodeName[i] 대신 동적 값을 입력할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;data = &quot;Test ID=&quot; + &quot;\&quot;&quot; + CodeId[i] + &quot;\&quot;&quot; + &quot; Name=&quot; + &quot;\&quot;&quot; + CodeName[i] + &quot;\&quot;&quot; + &quot; Type=\&quot;Test\&quot;;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;$&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;24&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/interpolated-strings&quot; rel=&quot;nofollow noreferrer&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;보간된 문자열은 보간된 식을 포함하는 템플릿 문자열처럼 보입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;보간된 문자열은 포함된 보간된 식을 해당 문자열 표현으로 대체하는 문자열을 반환합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 기능은 C# 6 이상 버전에서 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;string commentor = $&quot;&amp;lt;span class=\&quot;fa fa-plus\&quot; aria-hidden=\&quot;true\&quot;&amp;gt; {variable}&amp;lt;/span&amp;gt;&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;&amp;amp;quot;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;27&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;대신에&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&quot;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;28&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;브라우저에서 올바르게 표시됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p 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 papago-id=&quot;30&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&amp;amp;dquo;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&amp;lt;div&amp;gt;&amp;amp;dquo;&quot;+ 제목 +@&quot;&amp;amp;dquo;&amp;lt;/div&amp;gt;&lt;/font&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 papago-id=&quot;32&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;\&quot;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&amp;lt;div&amp;gt;\&quot;&quot;+ 제목 +@&quot;\&quot;/div&amp;gt;&lt;/font&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;C#에서 다음을 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; string1 = @&quot;Your &quot;&quot;Text&quot;&quot; Here&quot;;
 string2 = &quot;Your \&quot;Text\&quot; Here&quot;;
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;string doubleQuotedPath = string.Format(@&quot;&quot;&quot;{0}&quot;&quot;&quot;,path);
&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;char quote = '&quot;';

string modifiedString = quote + &quot;Original String&quot; + quote;
&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;C#&lt;a href=&quot;https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-11#raw-string-literals&quot; papago-id=&quot;35-1&quot; rel=&quot;nofollow noreferrer&quot;&gt; 11.0&lt;/a&gt; 미리보기에서는 &lt;a href=&quot;https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-11#raw-string-literals&quot; papago-id=&quot;35-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;원시&lt;/a&gt; &lt;a href=&quot;https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-11#raw-string-literals&quot; papago-id=&quot;35-3&quot; rel=&quot;nofollow noreferrer&quot;&gt;문자열&lt;/a&gt; 리터럴을 &lt;a href=&quot;https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-11#raw-string-literals&quot; papago-id=&quot;35-3&quot; rel=&quot;nofollow noreferrer&quot;&gt;사용&lt;/a&gt;할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;36&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;원시 문자열 리터럴은 문자열 리터럴의 새로운 형식입니다.&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;) 문자로 시작합니다.&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;pre&gt;&lt;code&gt;string str = &quot;&quot;&quot;
    &quot;How to add double quotes&quot;
    &quot;&quot;&quot;;
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;37&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;큰따옴표 앞에 백슬래시(\)를 붙입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러면 되겠군요.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;&quot;&amp;lt;i class=\&quot;fa fa-check-circle\&quot;&amp;gt;&amp;lt;/i&amp;gt;&quot;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 사용됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Eval()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;데이터 바인딩:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Text = '&amp;lt;%# Eval(&quot;bqtStatus&quot;).ToString()==&quot;Verified&quot; ? 
       Convert.ToString(&quot;&amp;lt;i class=\&quot;fa fa-check-circle\&quot;&amp;gt;&amp;lt;/i&amp;gt;&quot;) : 
       Convert.ToString(&quot;&amp;lt;i class=\&quot;fa fa-info-circle\&quot;&amp;gt;&amp;lt;/i&amp;gt;&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;C#에서 &quot;&quot;를 사용하면 다음 기호가 개발자가 사용할 C# 내장 기호가 아님을 나타냅니다.&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;따라서 문자열에서 큰따옴표가 필요합니다. 즉, &quot; 기호를 큰따옴표 앞에 놓을 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;string s = &quot;\&quot;Hi\&quot;&quot;
&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;이제 C#&lt;a href=&quot;https://github.com/dotnet/csharplang/blob/main/proposals/csharp-11.0/raw-string-literal.md&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;42-1&quot;&gt; 11과 함께&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var string1 = &quot;&quot;&quot;before &quot;inside&quot; after&quot;&quot;&quot;;

var string2 = &quot;&quot;&quot; &quot;How to add double quotes&quot; &quot;&quot;&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;HTML에 큰따옴표를 추가하려면&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;echo &quot;&amp;lt;p&amp;gt;Congratulations, &amp;amp;#8220;&quot; . $variable . &quot;&amp;amp;#8221;!&amp;lt;/p&amp;gt;&quot;;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3 papago-id=&quot;44&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;산출량&lt;/font&gt;&lt;/h3&gt; 
&lt;pre class=&quot;lang-none prettyprint-override&quot;&gt;&lt;code&gt;Congratulations, &quot;Mr John&quot;!
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;45&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/3905946/&lt;a href=&quot;https://stackoverflow.com/questions/3905946/how-can-i-add-double-quotes-to-a-string-that-is-inside-a-variable&quot; target=&quot;_blank&quot; papago-id=&quot;45-1&quot;&gt;how-can-i-add-double-quotes-to-a-string-that-is-inside-a-variable&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/924</guid>
      <comments>https://lovepro.tistory.com/924#entry924comment</comments>
      <pubDate>Mon, 22 May 2023 22:41:36 +0900</pubDate>
    </item>
    <item>
      <title>jQuery에서 요소(이미지)를 다시 로드/새로 고침하는 방법</title>
      <link>https://lovepro.tistory.com/923</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;jQuery에서 요소(이미지)를 다시 로드/새로 고침하는 방법&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;jQuery를 사용하여 서버에서 동일한 파일 이름의 이미지를 다시 로드할 수 있습니까?&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;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;i:&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;/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;li papago-id=&quot;6&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;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;아래 코드가 호출되는 빈도에 관계없이 동일한 문제가 지속됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;#myimg&quot;).attr(&quot;src&quot;, &quot;/myimg.jpg&quot;);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;jQuery 문서에서 &quot;load&quot; 함수는 콜백 함수를 요소의 성공적인/완전한 로드에 바인딩하는 대신 이벤트를 실행하는 기본 방법이 있으면 완벽합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;어떤 도움이든 대단히 감사합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;마치 브라우저가 이미지를 캐싱하는 것처럼 들립니다(질문에 기록한 내용을 이제 확인했습니다).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음과 같은 추가 변수를 전달하여 브라우저가 이미지를 다시 로드하도록 할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;d = new Date();
$(&quot;#myimg&quot;).attr(&quot;src&quot;, &quot;/myimg.jpg?&quot;+d.getTime());
&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;이것이 최선의 방법은 아닐 수도 있지만, 과거에 JavaScript를 사용하여 이미지 URL에 타임스탬프를 추가하는 것만으로 이 문제를 해결한 적이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;#myimg&quot;).attr(&quot;src&quot;, &quot;/myimg.jpg?timestamp=&quot; + new Date().getTime());
&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;다음에 로드될 때 타임스탬프가 현재 시간으로 설정되고 URL이 다르기 때문에 브라우저는 캐시된 버전을 사용하는 대신 이미지에 대해 GET을 수행합니다.&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;ol&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;/li&gt; 
 &lt;li papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;jQuery가 실행되지 않거나 특성을 업데이트하지 않습니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p papago-id=&quot;16&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;더 많은 jQuery를 볼 수 있다면 훨씬 쉬울 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 먼저 속성을 제거한 다음 다시 설정하십시오.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;도움이 되는지 확인해 보겠습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;#myimg&quot;).removeAttr(&quot;src&quot;).attr(&quot;src&quot;, &quot;/myimg.jpg&quot;);
&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;이게 되더라도 이게 최적이 아니니 코드를 좀 올려주세요, imo :-)&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;이미지 src를 자바스크립트로 하드 코딩하는 것에 대한 걱정이 없는 한 줄로. (아이디어에 대한 jeerose 덕분에:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;#myimg&quot;).attr(&quot;src&quot;, $(&quot;#myimg&quot;).attr(&quot;src&quot;)+&quot;?timestamp=&quot; + new Date().getTime());
&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;em papago-id=&quot;19-1&quot;&gt;캐시&lt;/em&gt;를 생략하고 이미지 URL에 무한 타임스탬프를 추가하지 않으려면 새 타임스탬프를 추가하기 전에 이전 타임스탬프를 제거합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;//refresh the image every 60seconds
var xyro_refresh_timer = setInterval(xyro_refresh_function, 60000);

function xyro_refresh_function(){
//refreshes an image with a .xyro_refresh class regardless of caching
    //get the src attribute
    source = jQuery(&quot;.xyro_refresh&quot;).attr(&quot;src&quot;);
    //remove previously added timestamps
    source = source.split(&quot;?&quot;, 1);//turns &quot;image.jpg?timestamp=1234&quot; into &quot;image.jpg&quot; avoiding infinitely adding new timestamps
    //prep new src attribute by adding a timestamp
    new_source = source + &quot;?timestamp=&quot;  + new Date().getTime();
    //alert(new_source); //you may want to alert that during developement to see if you're getting what you wanted
    //set the new src attribute
    jQuery(&quot;.xyro_refresh&quot;).attr(&quot;src&quot;, new_source);
}
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 아주 잘 작동합니다!&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 src를 여러 번 다시 로드하면 타임스탬프도 URL에 연결됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 그것을 처리하기 위해 승인된 답변을 수정했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$('#image_reload_button').on('click', function () {
    var img = $('#your_image_selector');
    var src = img.attr('src');
    var i = src.indexOf('?dummy=');
    src = i != -1 ? src.substring(0, i) : src;

    var d = new Date();
    img.attr('src', src + '?dummy=' + d.getTime());
});
&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;font class=&quot;papago-parent&quot;&gt;물론 캐싱하는 것이 브라우저라면 이것은 도움이 되지 않을 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;function imageUploadComplete () {
    $(&quot;#image_container&quot;).html(&quot;&amp;lt;img src='&quot; + newImageUrl + &quot;'&amp;gt;&quot;);
}
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;가끔은 -와 같은 해결책도 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;#Image&quot;).attr(&quot;src&quot;, $('#srcVal').val()+&quot;&amp;amp;&quot;+Math.floor(Math.random()*1000));
&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;또한 src를 제대로 새로 고치지 않고, 이것을 사용해 보세요, 그것은 저에게 효과가 있었습니다 -&amp;gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;#Image&quot;).attr(&quot;src&quot;, &quot;dummy.jpg&quot;);
$(&quot;#Image&quot;).attr(&quot;src&quot;, $('#srcVal').val()+&quot;&amp;amp;&quot;+Math.floor(Math.random()*1000));
&lt;/code&gt;&lt;/pre&gt;&lt;h2 papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;구분 기호로 &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;내 이미지는 &quot;www&quot; 위의 &quot;숨겨진&quot; 폴더에 보관되어 로그에 기록된 사용자만 액세스할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이러한 이유로 나는 일반적인 것을 사용할 수 없습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&amp;lt;img src=/somefolder/1023.jpg&amp;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;code&gt;&amp;lt;img src=?1023&amp;gt;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 '1023'이라는 이름으로 보관된 이미지를 다시 보내는 것으로 응답합니다.&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;자르기 결과를 보려면 Ajax 요청이 완료된 후 DOM에서 첫 번째 이미지를 제거하고 동일한 이름의 새 이미지를 삽입합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&amp;lt;img src=?1023&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&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;현금화를 피하기 위해 요청에 &quot;#&quot; 앞에 &quot;시간&quot; 태그를 추가하여 다음과 같이 됩니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&amp;lt;img src=?1023#1467294764124&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;서버는 요청의 해시 부분을 자동으로 걸러내고 '1023'으로 유지된 내 이미지를 다시 전송하여 올바르게 응답합니다.&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;32&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;@kasper Taymans의 대답을 기반으로 합니다.&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;src를 smth new로 교체하지 않고 이미지를 다시 로드해야 하는 경우 다음을 시도합니다.&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;&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;$(function() {
  var img = $('#img');

  var refreshImg = function(img) {
    // the core of answer is 2 lines below
    var dummy = '?dummy=';
    img.attr('src', img.attr('src').split(dummy)[0] + dummy + (new Date()).getTime());

    // remove call on production
    updateImgVisualizer();
  };


  // for display current img url in input
  // for sandbox only!
  var updateImgVisualizer = function() {
    $('#img-url').val(img.attr('src'));
  };

  // bind img reload on btn click
  $('.img-reloader').click(function() {
    refreshImg(img);
  });

  // remove call on production
  updateImgVisualizer();
});&lt;/code&gt;&lt;/pre&gt; 
  &lt;pre class=&quot;snippet-code-html lang-html prettyprint-override&quot;&gt;&lt;code&gt;&amp;lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;img id=&quot;img&quot; src=&quot;http://dummyimage.com/628x150/&quot;&amp;gt;


&amp;lt;p&amp;gt;
  &amp;lt;label&amp;gt;
    Current url of img:
    &amp;lt;input id=&quot;img-url&quot; type=&quot;text&quot; readonly style=&quot;width:500px&quot;&amp;gt;
  &amp;lt;/label&amp;gt;
&amp;lt;/p&amp;gt;

&amp;lt;p&amp;gt;
  &amp;lt;button class=&quot;img-reloader&quot;&amp;gt;Refresh&amp;lt;/button&amp;gt;
&amp;lt;/p&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;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;Lodash를 &lt;a href=&quot;https://lodash.com&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;34-1&quot;&gt;통해&lt;/a&gt; 저에게 적합한 솔루션을 찾았습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$(&quot;#myimg&quot;).attr('src', _.split($(&quot;#myimg&quot;).attr('src'), '?', 1)[0] + '?t=' + _.now());
&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 papago-id=&quot;36&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;정확한 URL을 새로 고쳐야 하고 브라우저에 이미지가 캐시된 경우 AJAX와 요청 헤더를 사용하여 브라우저가 새 복사본을 다운로드하도록 할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;방법은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;var img = $(&quot;#myimg&quot;);
var url = img.attr(&quot;src&quot;);
$.ajax({
    url: url,
    headers: { &quot;Cache-Control&quot;: &quot;no-cache&quot; }
}).done(function(){
    // Refresh is complete, assign the image again
    img.attr(&quot;src&quot;, url);
});
&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;쿼리 문자열에 토큰을 추가하면 새 이미지가 다운로드되지만 이전 URL의 캐시에 있는 이미지가 무효화되지 않아 이후 요청 시 이전 이미지가 계속 표시되기 때문에 다른 방법은 없었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이전 URL만 브라우저로 전송되고 서버는 클라이언트에게 이미지를 캐시해야 하는 시간보다 더 오래 캐시하도록 지시했습니다.&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;a href=&quot;https://stackoverflow.com/a/48969579&quot; papago-id=&quot;38-1&quot;&gt;답변&lt;/a&gt;이 도움이 &lt;a href=&quot;https://stackoverflow.com/a/48969579&quot; papago-id=&quot;38-1&quot;&gt;되는지&lt;/a&gt; 확인합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;자세한 내용은 &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#request_directives&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;38-3&quot;&gt;요청&lt;/a&gt; 헤더에 대한 설명서입니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;39&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;HTML에서:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;foreach (var item in images) {
   &amp;lt;Img src=&quot;@Url.Content(item.ImageUrl+&quot;?&quot;+DateTime.Now)&quot; &amp;gt; 
}
&lt;/code&gt;&lt;/pre&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;HTML로 간단히 수행합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;script&amp;gt;
    $(document).load(function () {
        d = new Date();
        $('#&amp;lt;%= imgpreview.ClientID %&amp;gt;').attr('src','');
    });
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&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;/blockquote&gt; 
&lt;pre&gt;&lt;code&gt;protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        image.Src = &quot;/image.jpg&quot;; //url caming from database
    }
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;42&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;}&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;43&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/2104949/&lt;a href=&quot;https://stackoverflow.com/questions/2104949/how-to-reload-refresh-an-elementimage-in-jquery&quot; target=&quot;_blank&quot; papago-id=&quot;43-1&quot;&gt;how-to-reload-refresh-an-elementimage-in-jquery&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/923</guid>
      <comments>https://lovepro.tistory.com/923#entry923comment</comments>
      <pubDate>Mon, 22 May 2023 22:37:31 +0900</pubDate>
    </item>
    <item>
      <title>파이썬을 3.7에서 3.6으로 다운그레이드하는 방법</title>
      <link>https://lovepro.tistory.com/921</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;파이썬을 3.7에서 3.6으로 다운그레이드하는 방법&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.6 설치가 필요하고 파이썬 3.7만 설치되어 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 brew와 pyenv를 사용하여 전환하려고 했지만 작동하지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 문제를 해결할 방법을 아는 사람이 있습니까?&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음은 Python이 실행되는 다양한 운영 체제에 대한 다양한 솔루션을 요약한 표준 요약입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음은 &lt;strong papago-id=&quot;3-1&quot;&gt;마이크로소프트&lt;/strong&gt; &lt;strong papago-id=&quot;3-3&quot;&gt;윈도우즈&lt;/strong&gt;, 리눅스, &lt;strong papago-id=&quot;3-5&quot;&gt;macOS&lt;/strong&gt; 및 &lt;em papago-id=&quot;3-7&quot;&gt;&lt;strong papago-id=&quot;3-7-0&quot;&gt;Misc&lt;/strong&gt;&lt;/em&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;em papago-id=&quot;4-1&quot;&gt;단지&lt;/em&gt; 가능성일 뿐입니다. 저는 결코 완전한 목록을 가지고 있다고 주장하지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;hr&gt; 
&lt;h1 papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;마이크로소프트 윈도우&lt;/font&gt;&lt;/h1&gt; 
&lt;h2&gt;&lt;strong papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;옵션 1&lt;/font&gt;&lt;/strong&gt;&lt;/h2&gt; 
&lt;p papago-id=&quot;7&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;일반적으로 가상 환경을 사용하는 것이 좋습니다(Python &lt;a href=&quot;https://docs.python.org/3/library/venv.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;7-1&quot;&gt;공식 설명서&lt;/a&gt;를 참조하는 것이 좋습니다).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 접근 방식을 사용하면 프로젝트별 Python 버전과 라이브러리를 쉽게 설정할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;관리하기 쉽고 가장 좋은 부분:&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이에 대한 접근 방법에 대한 많은 튜토리얼이 인터넷 튜토리얼이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/22793650/using-virtualenv-with-multiple-python-versions-on-windows&quot; papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;윈도우즈에서 여러 Python 버전과 함께 VirtualEnv 사용&lt;/font&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.freecodecamp.org/news/installing-multiple-python-versions-on-windows-using-virtualenv/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;https://www.freecodecamp.org/news/installing-multiple-python-versions-on-windows-using-virtualenv/&lt;/font&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;em papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기타.&lt;/font&gt;&lt;/em&gt;&lt;/li&gt; 
&lt;/ul&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;1&lt;strong papago-id=&quot;11-0&quot;&gt;.)&lt;/strong&gt; 명령 프롬프트&lt;em papago-id=&quot;11-2&quot;&gt;(&quot;cmd&quot;)&lt;/em&gt;를 열고 다음과 같이 &lt;strong papago-id=&quot;11-0&quot;&gt;입력&lt;/strong&gt;합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;pip install virtualenv&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;13-0&quot;&gt;2.)&lt;/strong&gt;&lt;a href=&quot;https://www.python.org/downloads&quot; papago-id=&quot;13-2&quot; rel=&quot;noreferrer&quot;&gt; &lt;/a&gt;https://www.python.org/&lt;a href=&quot;https://www.python.org/downloads&quot; papago-id=&quot;13-2&quot; rel=&quot;noreferrer&quot;&gt;downloads&lt;/a&gt; 을 통해 원하는 Python 버전을 설치합니다. 기억하십시오.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;13-4&quot;&gt;에 추가하지 않습니다&lt;/strong&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;3&lt;strong papago-id=&quot;14-0&quot;&gt;.)&lt;/strong&gt; 명령 프롬프트에 다음을 &lt;strong papago-id=&quot;14-0&quot;&gt;입력&lt;/strong&gt;합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;virtualenv \path\to\env -p \path\to\python_install.exe&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;\path\to\env&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;될이며 화환구경로될가것다입니가축될경상이▁where▁the▁be▁shall▁path다입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;\path\to\python_install.exe&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;새로(아마도) 설치한 파이썬 버전이 있는 곳입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;18-0&quot;&gt;4.)&lt;/strong&gt; 됐습니다!&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이제 가상 환경이 설정되었습니다!&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이제 가상 환경을 활성화하려면 내부에 있는 배치 파일을 실행합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;\path\to\env\Scripts\activate.bat&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;a href=&quot;https://programwithus.com/learn/python/pip-virtualenv-windows&quot; papago-id=&quot;19-1&quot; rel=&quot;noreferrer&quot;&gt;cf&lt;/a&gt;. &lt;a href=&quot;https://programwithus.com/learn/python/pip-virtualenv-windows&quot; papago-id=&quot;19-1&quot; rel=&quot;noreferrer&quot;&gt;이&lt;/a&gt; 웹사이트 또는 &lt;a href=&quot;https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/&quot; papago-id=&quot;19-3&quot; rel=&quot;noreferrer&quot;&gt;공식 파이썬&lt;/a&gt; 가이드)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;h2&gt;&lt;strong papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;옵션 2&lt;/font&gt;&lt;/strong&gt;&lt;/h2&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;기본 옵션은 원하지 않는 Python 버전을 제거하고&lt;a href=&quot;https://www.python.org/downloads/&quot; papago-id=&quot;21-1&quot; rel=&quot;noreferrer&quot;&gt; &lt;/a&gt;https://www.python.org/&lt;a href=&quot;https://www.python.org/downloads/&quot; papago-id=&quot;21-1&quot; rel=&quot;noreferrer&quot;&gt;downloads&lt;/a&gt;/ 에서 선호하는 버전을 다시 설치하는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이전 버전을 제거하려면 다음으로 이동합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Control Panel&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;-&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;&quot;Uninstall a program&quot;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Search for &quot;Python&quot; &lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Right-click on the Python name&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;-&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Uninstall&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;Python에는 일반적으로 PATH 변수가 저장되어 있으므로 PATH 변수도 제거해야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;font 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;https://support.foundry.com/hc/en-us/articles/209642805-Q100127-How-to-delete-unset-environment-variables&quot; rel=&quot;noreferrer&quot; papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;https://support.foundry.com/hc/en-us/articles/209642805-Q100127-How-to-delete-unset-environment-variables&lt;/font&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/21289762/remove-unwanted-path-name-from-path-variable-via-batch&quot; papago-id=&quot;28&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;배치를 통해 %path% 변수에서 원하지 않는 경로 이름 제거&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;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;이제 Python이 저장되었던 파일이 남아 있는지 다시 확인합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;일반적으로 모든 파이썬 파일은 다음 중 하나에서 찾을 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;C:\Program Files (x86)\Pythonxx&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;,&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;C:\Users\username\AppData\Local\Programs\Pythonxx&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;C:\Pythonxx&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;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다른 디렉토리에 설치했을 수도 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;font 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;a href=&quot;https://www.python.org/downloads/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;18-1&quot;&gt;다운로드&lt;/a&gt; 페이지로 이동하여 원하는 버전을 다시 설치하고 일반적인 설치 프로세스를 수행합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;파이썬&lt;em papago-id=&quot;18-3&quot;&gt;&lt;a href=&quot;https://phoenixnap.com/kb/how-to-install-python-3-windows&quot; papago-id=&quot;18-3-0&quot; rel=&quot;noreferrer&quot;&gt; 설치&lt;/a&gt;&lt;/em&gt; 방법에 &lt;em papago-id=&quot;18-3&quot;&gt;&lt;a href=&quot;https://phoenixnap.com/kb/how-to-install-python-3-windows&quot; papago-id=&quot;18-3-0&quot; rel=&quot;noreferrer&quot;&gt;대해서는 자세히 설명하지 않겠습니다.&lt;/a&gt;&lt;/em&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;마지막으로 명령 프롬프트를 열고 다음을 입력하여 현재 설치된 버전을 확인할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;python -V&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;h2&gt;&lt;strong papago-id=&quot;35&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;옵션 3&lt;/font&gt;&lt;/strong&gt;&lt;/h2&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;20&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 접근 방식은 두 번째 접근 방식과 매우 유사합니다. 기본적으로 이전 버전을 제거하고 원하는 버전으로 대체합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;원하지 않는 Python 배포를 제거하는 방법에 대한 부분을 변경하는 유일한 것은 다음과 같습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;원래 Python을 설치할 때 사용했던 Python3 설치 프로그램을 실행하기만 하면 됩니다(일반적으로 위에서 언급한 대로 Python 디렉토리에 저장됩니다. 자세한 내용은 여기를 &lt;a href=&quot;https://stackoverflow.com/questions/647515/how-can-i-find-where-python-is-installed-on-windows&quot; papago-id=&quot;20-1&quot;&gt;참조&lt;/a&gt;하십시오).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기서 할 수 있는 옵션이 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;repair or uninstall&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;uninstall&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제거 프로그램을 통해 제공되는 단계를 따릅니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Python을 제거하는 방법(예: 이 항목에 대한 리소스가 많습니다. 예를 들어, 이&lt;a href=&quot;https://stackoverflow.com/questions/3515673/how-to-completely-remove-python-from-a-windows-machine&quot; papago-id=&quot;23-1&quot;&gt; Stack&lt;/a&gt; Overflow 질문이나 Stack Exchange 사이트 Super User에 게시된 &lt;em papago-id=&quot;23-5&quot;&gt;Vincent Tang&lt;/em&gt;이라는 사용자의 문제 &lt;a href=&quot;https://superuser.com/questions/1238473/cant-uninstall-python-3-6-on-windows-10&quot; papago-id=&quot;23-3&quot;&gt;스레드&lt;/a&gt; 등)에 관계없이 에서 언급된 단계를 따라 원하는 Python 버전을 다시 설치하면 됩니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Option 2&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;24&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;h2&gt;&lt;strong papago-id=&quot;41&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;옵션 4&lt;/font&gt;&lt;/strong&gt;&lt;/h2&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;옵션 4는 아나콘다를 처리합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Windows에 아나콘다를 설치하는 방법은 이 &lt;a href=&quot;https://docs.anaconda.com/anaconda/install/windows/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;25-1&quot;&gt;사이트를 참조&lt;/a&gt;하십시오.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/font&gt;&lt;code&gt;Step 9&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;26&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기본 Python으로 설치하지 않고 여러 &lt;strong papago-id=&quot;26-1&quot;&gt;버전&lt;/strong&gt;의 Python을 실행하는 것이 &lt;strong papago-id=&quot;26-1&quot;&gt;중요&lt;/strong&gt;합니다.&lt;/font&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;아나콘다를 기본 파이썬으로 등록할지 여부를 선택합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;여러 버전의 Anaconda 또는 여러 버전의 Python을 설치하고 실행할 계획이 아니라면 기본값을 그대로 사용하고 이 상자를 선택한 상태로 둡니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;&lt;em papago-id=&quot;45&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;위에 링크한 공식 튜토리얼을 따릅니다.&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;p&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 class=&quot;papago-parent&quot;&gt;기본 python &lt;strong papago-id=&quot;27-1&quot;&gt;버전&lt;/strong&gt;을 시스템별로 덮어쓰려면 다음을 사용합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;conda install python=3.6&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;conda create -n $PYTHON36_ENV_NAME python=3.6 anaconda&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;29&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;에 반에면.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;$PYTHON36_ENV_NAME&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;30&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;설정할 수 있는 사용자 지정 이름입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;크레딧이 필요한 경우 크레딧 - &lt;a href=&quot;https://stackoverflow.com/questions/43630002/conda-install-downgrade-python-version&quot; papago-id=&quot;30-3&quot;&gt;이 스레드&lt;/a&gt;의&lt;em papago-id=&quot;30-1&quot;&gt; &lt;/em&gt;사용자 @&lt;em papago-id=&quot;30-1&quot;&gt;CermakM&lt;/em&gt;이 이 스니펫에 강력한 영향을 미쳤습니다.&lt;/font&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;연구 과정에서 유용한 Stack Overflow 스레드를 많이 발견했습니다. Anaconda와 함께 힘든 길을 간다면 다음과 같이 확인할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/62794105/how-to-downgrade-the-python-version-from-3-8-to-3-7-on-windows&quot; papago-id=&quot;51&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;윈도우에서 파이썬 버전을 3.8에서 3.7로 다운그레이드하는 방법은 무엇입니까?&lt;/font&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/59367727/downgrade-python-version-from-3-8-to-lower-one-in-a-given-conda-environment&quot; papago-id=&quot;52&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;지정된 콘다 환경에서 python 버전을 3.8에서 낮은 버전으로 다운그레이드&lt;/font&gt;&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;&lt;em&gt;&lt;strong papago-id=&quot;53&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;옵션 5&lt;/font&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/h2&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;Windows에서는 여러 Python 버전을 실행할 수도 있습니다. StackOverflow의 악명 높은 스레드가 이 질문을 다루므로 추가 읽기 목적으로 사용자를 정중히 &lt;a href=&quot;https://stackoverflow.com/questions/4583367/how-to-run-multiple-python-versions-on-windows&quot; papago-id=&quot;54-1&quot;&gt;안내&lt;/a&gt;합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;hr&gt; 
&lt;h1 papago-id=&quot;55&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;리눅스&lt;/font&gt;&lt;/h1&gt; 
&lt;h2&gt;&lt;strong papago-id=&quot;56&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;옵션 1&lt;/font&gt;&lt;/strong&gt;&lt;/h2&gt; 
&lt;p papago-id=&quot;57&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Windows의 세 번째 옵션과 상당히 유사합니다. 아나콘다와 같은 가상 환경을 사용하는 것이 좋습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;아나콘다 또는 짧은 콘다는 리눅스에서도 사용할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기에서 &lt;a href=&quot;https://stackoverflow.com/questions/59367727/downgrade-python-version-from-3-8-to-lower-one-in-a-given-conda-environment&quot; papago-id=&quot;57-1&quot;&gt;공식&lt;/a&gt; 설치 설명서를 확인하십시오.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/43630002/conda-install-downgrade-python-version&quot; papago-id=&quot;57-3&quot;&gt;이 스레드&lt;/a&gt;는 Python 버전을 덮어쓰는 방법, 원하는 Python 버전을 사용하여 환경을 구체적으로 만드는 방법에 대해 다시 한 번 강력하게 제안합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;h2&gt;&lt;strong papago-id=&quot;58&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;옵션 2&lt;/font&gt;&lt;/strong&gt;&lt;/h2&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; 강력한 으로는 다과같가환구것좋다습니이음는축하경상은을▁environ가 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Pyenv&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;em papago-id=&quot;32-1&quot;&gt;@Sawan Vaidya&lt;/em&gt;는 &lt;a href=&quot;https://stackoverflow.com/questions/59549829/how-do-i-downgrade-my-version-of-python-from-3-7-5-to-3-6-5-on-ubuntu&quot; papago-id=&quot;32-3&quot;&gt;다음&lt;/a&gt;의 도움을 받아 &lt;a href=&quot;https://stackoverflow.com/questions/59549829/how-do-i-downgrade-my-version-of-python-from-3-7-5-to-3-6-5-on-ubuntu&quot; papago-id=&quot;32-3&quot;&gt;파이썬&lt;/a&gt; 버전을 업그레이드하거나 다운그레이드하는 방법에 대한 이 &lt;a href=&quot;https://stackoverflow.com/questions/59549829/how-do-i-downgrade-my-version-of-python-from-3-7-5-to-3-6-5-on-ubuntu&quot; papago-id=&quot;32-3&quot;&gt;스택&lt;/a&gt; 오버플로 질문에서 설명했습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Pyenv&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;Python 버전을 글로벌하게 설정하거나 로컬 환경을 만들 수 있습니다. 둘 다 위 스레드에서 설명합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;h2&gt;&lt;strong papago-id=&quot;62&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;옵션 3&lt;/font&gt;&lt;/strong&gt;&lt;/h2&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;em papago-id=&quot;34-1&quot;&gt;@Jeardy&lt;/em&gt;가 소프트웨어 패키지 관리 시스템을 사용할 것을 제안했습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Homebrew&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;a href=&quot;https://stackoverflow.com/questions/52584907/how-to-downgrade-python-from-3-7-to-3-6&quot; papago-id=&quot;35-1&quot;&gt;현재 질문&lt;/a&gt;에서 이 옵션을 철저히 설명했습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$ brew unlink python
$ brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/e128fa1bce3377de32cbf11bd8e46f7334dfd7a6/Formula/python.rb
$ brew switch python 3.6.5
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;&lt;strong papago-id=&quot;65&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;옵션 5&lt;/font&gt;&lt;/strong&gt;&lt;/h2&gt; 
&lt;p papago-id=&quot;66&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;휠을 재창조할 필요가 &lt;a href=&quot;https://stackoverflow.com/questions/52584907/how-to-downgrade-python-from-3-7-to-3-6&quot; papago-id=&quot;66-1&quot;&gt;없습니다&lt;/a&gt;. 이 &lt;a href=&quot;https://stackoverflow.com/questions/52584907/how-to-downgrade-python-from-3-7-to-3-6&quot; papago-id=&quot;66-1&quot;&gt;스레드&lt;/a&gt;는 @&lt;em papago-id=&quot;66-3&quot;&gt;Sidharth Taneja의 &lt;/em&gt;것과 같은 아름다운 러닝 접근법으로 가득 차 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;36&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;https://www.python.org/downloads/release&lt;a href=&quot;https://www.python.org/downloads/release&quot; rel=&quot;noreferrer&quot; papago-id=&quot;36-1&quot;&gt; &lt;/a&gt;에서 원하는 Python 버전을 다운로드하여 a로 설치합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;normal package&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;/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 class=&quot;papago-parent&quot;&gt;려달을 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;cd /Library/Frameworks/Python.framework/Version&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;39&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 실행합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;ls&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; Python 합니다.&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;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;sudo rm -rf 3.7&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;Python 버전 3.7 제거 - 삭제할 버전에 대해 반복할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;em&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;python3 -v&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&gt;&lt;/em&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;&lt;strong papago-id=&quot;76&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;옵션 6&lt;/font&gt;&lt;/strong&gt;&lt;/h2&gt; 
&lt;p papago-id=&quot;77&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/52584907/how-to-downgrade-python-from-3-7-to-3-6&quot; papago-id=&quot;77-1&quot;&gt;이&lt;/a&gt; 실은 정말 &lt;a href=&quot;https://stackoverflow.com/questions/52584907/how-to-downgrade-python-from-3-7-to-3-6&quot; papago-id=&quot;77-1&quot;&gt;금광이군&lt;/a&gt;요!&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;@&lt;em papago-id=&quot;77-3&quot;&gt;nondeterministic&lt;/em&gt;이 자세히 설명했듯이(그의 &lt;a href=&quot;https://stackoverflow.com/a/58270709/14852784&quot; papago-id=&quot;77-5&quot;&gt;게시물&lt;/a&gt;에 대한 &lt;a href=&quot;https://stackoverflow.com/a/58270709/14852784&quot; papago-id=&quot;77-5&quot;&gt;직접&lt;/a&gt; 링크):&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;78&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음과 같이 Python 소스 코드를 설치합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;#Taken Python 3.6 as an example
$ mkdir /home/&amp;lt;user&amp;gt;/python3.6
$ ./configure --prefix=/home/&amp;lt;user&amp;gt;/python3.6/
$ make altinstall
&lt;/code&gt;&lt;/pre&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;&lt;font class=&quot;papago-parent&quot;&gt;버전을 할 수 &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;/home/&amp;lt;user&amp;gt;/python3.6/bin&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;code&gt;PATH&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;47&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;만 아니라&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;lib&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;LD_LIBRARY_PATH&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;/home/&amp;lt;user&amp;gt;/python3.6/bin/python3.6 -m venv env-python3.6&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;em papago-id=&quot;50-1&quot;&gt;여러 Python&lt;/em&gt; 버전을 &lt;em papago-id=&quot;50-1&quot;&gt;실행&lt;/em&gt;할 수 있는 매우 미적이고 간단한 솔루션입니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;hr&gt; 
&lt;h1 papago-id=&quot;85&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;macOS&lt;/font&gt;&lt;/h1&gt; 
&lt;h2&gt;&lt;strong papago-id=&quot;86&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;옵션 1&lt;/font&gt;&lt;/strong&gt;&lt;/h2&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;pyenv&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;52&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;와 함께&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Homebrew&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;53&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;@&lt;em papago-id=&quot;53-1&quot;&gt;Shayan&lt;/em&gt;이 여기에 &lt;a href=&quot;https://stackoverflow.com/a/62899833/14852784&quot; papago-id=&quot;53-3&quot;&gt;대답&lt;/a&gt;한 것을 인정합니다&lt;em papago-id=&quot;53-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;54&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;54-0&quot;&gt;1.)&lt;/strong&gt; 설치&lt;/font&gt;&lt;/font&gt;&lt;code&gt;pyenv&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;code&gt;Homebrew&lt;/code&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;/p&gt; 
&lt;pre&gt;&lt;code&gt;brew update
brew install pyenv
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;57&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;57-0&quot;&gt;2.)&lt;/strong&gt; 최신 버전으로 GitHub 저장소 복제&lt;/font&gt;&lt;/font&gt;&lt;code&gt;pyenv&lt;/code&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;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;버전:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; git clone https://github.com/pyenv/pyenv.git ~/.pyenv
&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;3&lt;strong papago-id=&quot;95-0&quot;&gt;.)&lt;/strong&gt; 환경변수의 정의는 다음과 &lt;strong papago-id=&quot;95-0&quot;&gt;같습니다&lt;/strong&gt;.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;echo 'export PYENV_ROOT=&quot;$HOME/.pyenv&quot;' &amp;gt;&amp;gt; ~/.bash_profile
echo 'export PATH=&quot;$PYENV_ROOT/bin:$PATH&quot;' &amp;gt;&amp;gt; ~/.bash_profile
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;59&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;59-0&quot;&gt;4.)&lt;/strong&gt; 셸을 다시 시작하기 때문에&lt;/font&gt;&lt;/font&gt;&lt;code&gt;PATH&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&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;exec &quot;$SHELL&quot;
&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;strong papago-id=&quot;98-0&quot;&gt;5.)&lt;/strong&gt; 사용 가능한 Python 버전 확인하기&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;pyenv install --list
&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;strong papago-id=&quot;99-0&quot;&gt;6.)&lt;/strong&gt; 원하는 Python 버전 설치(예: 3.6)&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;pyenv install 3.6
&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;em papago-id=&quot;100-2&quot;&gt;7&lt;/em&gt;&lt;strong papago-id=&quot;100-0&quot;&gt;.)&lt;/strong&gt; 글로벌 설정(&lt;em papago-id=&quot;100-2&quot;&gt;특정&lt;/em&gt; 환경에서만 &lt;em papago-id=&quot;100-2&quot;&gt;사용&lt;/em&gt;할 수 &lt;em papago-id=&quot;100-2&quot;&gt;있음&lt;/em&gt;)&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;pyenv global 3.6
&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;strong papago-id=&quot;101-0&quot;&gt;8.)&lt;/strong&gt; 시스템에서 사용 중인 Python 버전을 확인합니다. 원하는 버전/다운그레이드된 버전이 여기에 표시됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;python3 --version
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;&lt;strong papago-id=&quot;102&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;옵션 2&lt;/font&gt;&lt;/strong&gt;&lt;/h2&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;이전의 접근 방식과 유사하게 MacOS에서도 아나콘다를 &lt;strong papago-id=&quot;61-1&quot;&gt;다운로드&lt;/strong&gt;할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;설치 안내서를 보려면 여기를 &lt;a href=&quot;https://docs.anaconda.com/anaconda/install/mac-os/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;61-3&quot;&gt;클릭&lt;/a&gt;하십시오.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용법은 이미 에서 설명한 것과 거의 같습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Option 4&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;Windows&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;h2&gt;&lt;strong papago-id=&quot;106&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기타 옵션&lt;/font&gt;&lt;/strong&gt;&lt;/h2&gt; 
&lt;p papago-id=&quot;107&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 경우에는 꽤 반복적으로 됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;자세한 내용은 다음 자료를 확인해 보시기 바랍니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://prodevsblog.com/questions/125949/macos-how-to-downgrade-homebrew-python/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;108&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;https://prodevsblog.com/questions/125949/macos-how-to-downgrade-homebrew-python/&lt;/font&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.xspdf.com/resolution/51291818.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;109&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;https://www.xspdf.com/resolution/51291818.html&lt;/font&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/62898911/how-to-downgrade-python-version-from-3-8-to-3-7-mac&quot; papago-id=&quot;110&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;파이썬 버전을 3.8에서 3.7로 다운그레이드하는 방법 (mac)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://weknowinc.com/blog/running-multiple-python-versions-mac-osx&quot; rel=&quot;noreferrer&quot; papago-id=&quot;111&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;https://weknowinc.com/blog/running-multiple-python-versions-mac-osx&lt;/font&gt;&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr&gt; 
&lt;h1 papago-id=&quot;112&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;미스크&lt;/font&gt;&lt;/h1&gt; 
&lt;p papago-id=&quot;113&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 글을 쓸 때 어디에 선을 그어야 할지 모르는 문제가 있었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Python이 현재 지원하는 운영 체제를 찾아보면 Linux, &lt;strong papago-id=&quot;113-3&quot;&gt;Microsoft&lt;/strong&gt; Windows 및 &lt;strong papago-id=&quot;113-5&quot;&gt;macOS&lt;/strong&gt;와 &lt;strong papago-id=&quot;113-1&quot;&gt;같은&lt;/strong&gt; 방대한 목록이 표시됩니다. Linux 배포판은 분명히 한 손으로 처리되지만, CentOS, Arch Linux 또는 Fedora와 같은 다른 Linux 배포판도 자리를 차지해야 합니다. 그렇지 않으면 Windows 10에 대한 별도의 옵션을 만들 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;7 등?&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;114&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Homebrew, Conda 등과 같은 모듈에 대한 반복성이 높기 때문에 저는 제 목록을 &lt;a href=&quot;https://stackoverflow.com/questions/59549829/how-do-i-downgrade-my-version-of-python-from-3-7-5-to-3-6-5-on-ubuntu&quot; papago-id=&quot;114-1&quot;&gt;Ubuntu&lt;/a&gt;와 같은 배포판(&lt;a href=&quot;https://stackoverflow.com/questions/59549829/how-do-i-downgrade-my-version-of-python-from-3-7-5-to-3-6-5-on-ubuntu&quot; papago-id=&quot;114-1&quot;&gt;Ubuntu에서 파이썬 버전을 3.7.5&lt;/a&gt;에서 3.6&lt;a href=&quot;https://stackoverflow.com/questions/59549829/how-do-i-downgrade-my-version-of-python-from-3-7-5-to-3-6-5-on-ubuntu&quot; papago-id=&quot;114-1&quot;&gt;.5&lt;/a&gt;로 다운그레이드하는 &lt;a href=&quot;https://stackoverflow.com/questions/31235059/how-to-downgrade-python-version-on-centos&quot; papago-id=&quot;114-3&quot;&gt;방법&lt;/a&gt;), &lt;a href=&quot;https://stackoverflow.com/questions/31235059/how-to-downgrade-python-version-on-centos&quot; papago-id=&quot;114-3&quot;&gt;CentOS(CentOS에서 파이썬 버전&lt;/a&gt;을 다운그레이드하는 &lt;a href=&quot;https://stackoverflow.com/questions/31235059/how-to-downgrade-python-version-on-centos&quot; papago-id=&quot;114-3&quot;&gt;방법&lt;/a&gt;)의 &quot;주요 3가지&quot; 운영 체제로 제한하기로 결정했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;)는 Stack Overflow에서 쉽게 검색할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;대개 &lt;strong papago-id=&quot;114-5&quot;&gt;Linux&lt;/strong&gt; 탭에서 해당 배포에 대한 솔루션을 적용할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Windows 및 macOS(버전)도 마찬가지입니다.&lt;/font&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ brew unlink python
$ brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/e128fa1bce3377de32cbf11bd8e46f7334dfd7a6/Formula/python.rb
$ brew switch python 3.6.5
$ pip install tensorflow
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;115&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신이 아나콘다와 함께 일하고 있다면,&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;conda install python=3.5.0
# or maybe 
conda install python=2.7.8
# or whatever you want....
&lt;/code&gt;&lt;/pre&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;가상 환경을 생성하고 설치한 다음 python 3.6.5로 전환&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$ conda create -n tensorflow python=3.7
$ conda activate tensorflow
$ conda install python=3.6.5
$ pip install tensorflow
&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;p papago-id=&quot;119&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;https://www.python.org/downloads/release/python-360/&lt;a href=&quot;https://www.python.org/downloads/release/python-360/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;119-1&quot;&gt; &lt;/a&gt;에서 python 3.6.0 다운로드&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;120&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;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;cd /Library/Frameworks/Python.framework/Version&lt;/code&gt;&lt;/p&gt; 
&lt;p&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;ls&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;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;명령 및 설치된 모든 Python 버전이 여기에 표시됩니다.&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;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;sudo rm -rf 3.7&lt;/code&gt;&lt;/p&gt; 
&lt;p&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&gt;&lt;code&gt;python3 -V&lt;/code&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;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이제 3.6이 됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;127&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;콘다를 사용하여 파이썬 가상 환경을 생성한 다음 텐서플로를 설치합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$ conda create -n [environment-name] python=3.6
# it may ask for installing python-3.6 if you don't have it already. Type &quot;y&quot; to proceed...
$ activate [environment-name]
$ pip install tensorflow
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;128&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이제부터는 텐서 흐름을 사용하고 싶을 때마다 환경을 활성화할 수 &lt;strong papago-id=&quot;128-1&quot;&gt;있습니다&lt;/strong&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;콘다 패키지 관리자가 없는 경우 먼저 여기에서 다운로드하십시오. https://www.anaconda.com/&lt;a href=&quot;https://www.anaconda.com/distribution&quot; rel=&quot;noreferrer&quot; papago-id=&quot;129-1&quot;&gt;distribution&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;70&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://github.com/pyenv/pyenv&quot; rel=&quot;noreferrer&quot; papago-id=&quot;70-0&quot;&gt;&lt;code papago-id=&quot;70-0-0&quot;&gt;pyenv&lt;/code&gt;&lt;/a&gt; Linux/MacOS에서 파이썬 버전 관리를 위해 사용할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://github.com/pyenv-win/pyenv-win&quot; rel=&quot;noreferrer&quot; papago-id=&quot;70-2&quot;&gt;&lt;code papago-id=&quot;70-2-0&quot;&gt;pyenv-win&lt;/code&gt;&lt;/a&gt; 의 포크입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;pyenv&lt;/code&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 class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Windows에서 사용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;h1 papago-id=&quot;132&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;설치&lt;/font&gt;&lt;/h1&gt; 
&lt;h2 papago-id=&quot;133&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;맥OS&lt;/font&gt;&lt;/h2&gt; 
&lt;p&gt;&lt;em papago-id=&quot;134&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Mac Catalina에서 테스트됨&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&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;pyenv&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;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;pre class=&quot;lang-sh prettyprint-override&quot;&gt;&lt;code&gt;brew install pyenv
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&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;ul&gt; 
   &lt;li&gt;&lt;code&gt;.bashrc&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&gt;&lt;code&gt;.bash_profile&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;75&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;배시를 위하여&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;.zshrc&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&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;pre class=&quot;lang-sh prettyprint-override&quot;&gt;&lt;code&gt;export PYENV_ROOT=&quot;$HOME/.pyenv&quot;
export PATH=&quot;$PYENV_ROOT/bin:$PATH&quot;
eval &quot;$(pyenv init -)&quot;
&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;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 class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;셸을 다시 시작합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 셸  실행&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;exec &quot;$SHELL&quot;&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 class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신의 현재 껍질 안에.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2 papago-id=&quot;143&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;em papago-id=&quot;144&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Arch Linux에서 테스트됨&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;p&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&gt;&lt;code&gt;pyenv&lt;/code&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 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;curl https://pyenv.run | bash
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;147&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;MacOS 설치의 2단계 및 3단계와 동일한 단계를 수행합니다.&lt;/font&gt;&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2 papago-id=&quot;148&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;창문들&lt;/font&gt;&lt;/h2&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;p&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;pyenv-win&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 class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Windows(윈도우).&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;em papago-id=&quot;151&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;인 파워셸&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; &lt;pre&gt;&lt;code&gt;pip install pyenv-win --target &quot;$HOME\.pyenv&quot;
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;&lt;em papago-id=&quot;152&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;cmd.exe에서&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; &lt;pre&gt;&lt;code&gt;pip install pyenv-win --target &quot;%USERPROFILE%\.pyenv&quot;
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;153&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Powershell/Terminal을 사용하여 환경 변수를 설정합니다.&lt;/font&gt;&lt;/p&gt; &lt;pre&gt;&lt;code&gt;[System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + &quot;\.pyenv\pyenv-win\&quot;,&quot;User&quot;)
[System.Environment]::SetEnvironmentVariable('PYENV_HOME',$env:USERPROFILE + &quot;\.pyenv\pyenv-win\&quot;,&quot;User&quot;)
[System.Environment]::SetEnvironmentVariable('path', $HOME + &quot;\.pyenv\pyenv-win\bin;&quot; + $HOME + &quot;\.pyenv\pyenv-win\shims;&quot; + $env:Path,&quot;User&quot;)
&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;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 class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;터미널을 닫았다가 다시 엽니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;려달을 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;pyenv --version&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;p papago-id=&quot;156&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;반환 값이 설치된 pyenv 버전인 경우 아래로 계속 진행합니다. b.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;명령을 찾을 수 없음 오류가 표시되면 GUI를 통해 환경 변수가 올바르게 설정되었는지 확인합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 PC → 속성 → 고급 시스템 설정 → 고급 → 환경 변수...&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;PATH c.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;명령을 찾을 수 없음 오류가 표시되고 Visual Studio Code 또는 기본 제공 터미널이 있는 다른 IDE를 사용하는 경우 다시 시작하고 다시 시도하십시오.&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;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;pyenv rehash&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&gt;&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;h1 papago-id=&quot;159&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용.&lt;/font&gt;&lt;/h1&gt; 
&lt;h3 papago-id=&quot;160&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;설치된 Python 버전 확인&lt;/font&gt;&lt;/h3&gt; 
&lt;pre class=&quot;lang-sh prettyprint-override&quot;&gt;&lt;code&gt;pyenv versions
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;em papago-id=&quot;161&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-sh prettyprint-override&quot;&gt;&lt;code&gt;$ pyenv versions
* system (set by /home/souser/.pyenv/version)
  3.6.9
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3 papago-id=&quot;162&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;특정 Python 버전 설치&lt;/font&gt;&lt;/h3&gt; 
&lt;pre class=&quot;lang-sh prettyprint-override&quot;&gt;&lt;code&gt;pyenv install &amp;lt;version-number&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3 papago-id=&quot;163&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;설치된 Python 버전 제거&lt;/font&gt;&lt;/h3&gt; 
&lt;pre class=&quot;lang-sh prettyprint-override&quot;&gt;&lt;code&gt;pyenv uninstall &amp;lt;version-number&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3 papago-id=&quot;164&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;python 버전을 시스템 전체 python 버전으로 설정&lt;/font&gt;&lt;/h3&gt; 
&lt;pre class=&quot;lang-sh prettyprint-override&quot;&gt;&lt;code&gt;pyenv global &amp;lt;version-number&amp;gt; # &amp;lt;version-number&amp;gt; is the name assigned to your python in output of `pyenv versions`
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;em papago-id=&quot;165&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-sh prettyprint-override&quot;&gt;&lt;code&gt;$ python --version
Python 3.9.1
$ pyenv global 3.6.9
$ python --version
Python 3.6.9
&lt;/code&gt;&lt;/pre&gt; Set a python version for a directory and all it's sub-directories 
&lt;pre class=&quot;lang-sh prettyprint-override&quot;&gt;&lt;code&gt;pyenv local &amp;lt;version-number&amp;gt; # &amp;lt;version-number&amp;gt; is the name assigned to your python in output of `pyenv versions`
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;em papago-id=&quot;166&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-sh prettyprint-override&quot;&gt;&lt;code&gt;~/tmp/temp$ python --version
Python 3.9.1
~/tmp/temp$ pyenv local 3.6.9
~/tmp/temp$ python --version
Python 3.6.9
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;167&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;자세한 내용은 Github 저장소: &lt;a href=&quot;https://github.com/pyenv/pyenv&quot; rel=&quot;noreferrer&quot; papago-id=&quot;167-1&quot;&gt;pyenv&lt;/a&gt; 및 &lt;a href=&quot;https://github.com/pyenv-win/pyenv-win&quot; rel=&quot;noreferrer&quot; papago-id=&quot;167-3&quot;&gt;pyenv-win&lt;/a&gt;을 확인할 수 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;168&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;python 3.7로 텐서플로를 설치하는 데 문제가 있었고 이 지침에 따라 python 3.6으로 가상 환경을 설정하고 작동하게 되었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Download the Python3.6 tgz file from the official website (eg. Python-3.6.6.tgz)
Unpack it with tar -xvzf Python-3.6.6.tgz
cd Python-3.6.6
run ./configure
run make altinstall to install it (install vs altinstall explanation here 
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/tensorflow/tensorflow/issues/20444#issuecomment-422899096&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;169&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;텐서 흐름을 위한 python 3.6 가상 환경 설정&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;170&quot; papago-translate=&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 -m venv projectname
source projectname/bin/activate
pip install ipykernel
ipython kernel install --user --name=projectname
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;171&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://anbasile.github.io/programming/2017/06/25/jupyter-venv/&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;172&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;173&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;174&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이전 버전을 제거하거나 Anaconda 또는 Docker 등과 같은 추가 소프트웨어로 복구하지 않고도 Python 3.6 소스 코드를 다운로드하여 다음과 같이 설치할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$ mkdir /home/&amp;lt;user&amp;gt;/python3.6
$ ./configure --prefix=/home/&amp;lt;user&amp;gt;/python3.6/
$ make altinstall
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;175&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&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;/home/&amp;lt;user&amp;gt;/python3.6/bin&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&gt;&lt;code&gt;PATH&lt;/code&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;lib&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;LD_LIBRARY_PATH&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 class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(정확히 달성하려는 목표에 따라 포함 경로 등에 추가해야 할 수도 있지만, 아이디어를 얻을 수 있기를 바랍니다.)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;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&gt;&lt;code&gt;/home/&amp;lt;user&amp;gt;/python3.6/bin/python3.6 -m venv env-python3.6&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;93&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p papago-id=&quot;183&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;sudo 또는 루트 액세스가 필요하지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;시스템을 엉망으로 만들 필요가 없습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;184&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;일부 패키지의 휠이 이전 버전의 파이썬에 설치되었을 수 있으므로 새로운 가상 환경을 만들고 모든 패키지를 처음부터 설치하는 것이 좋습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 이것이 가장 안전한 방법이라고 생각하며 두 가지 방법이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;94&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 새가환생을 사용하여 새 가상 &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;venv&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;95&quot;&gt;&lt;font 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;python3.6 -m venv -n new_env
source venv_env/bin/activate
&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;96&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 작성&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;conda&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;97&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font 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;conda create -n new_env python=3.6
conda activate new_env
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;p papago-id=&quot;189&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;환경에 설치하는 패키지는 환경의 Python 버전을 기반으로 구축되므로 기존 환경을 신중하게 수정하지 않으면 패키지 간에 일부 비호환성이 발생할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그렇기 때문에 Python 3.6으로 구축된 새로운 환경을 사용하는 것을 추천합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;190&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Python 3.6을 다운로드하여 설치한 후 시스템 경로 환경 변수를 Python 3.6으로 변경하고 Python 3.7 경로 시스템 환경 변수를 삭제합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;결과를 보려면 PC를 다시 시작합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;191&quot; papago-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.7을 유지하지 않으려는 경우에는 여기서 &lt;a href=&quot;https://www.python.org/downloads/release/python-360/&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;191-1&quot;&gt;제거&lt;/a&gt;하고 설치하면 됩니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;192&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저에게 간단한 해결책은 &lt;a href=&quot;https://www.python.org/downloads/release/python-370/&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;192-1&quot;&gt;여기 &lt;/a&gt;https://www.python.org/downloads/release/python-370/ 에서 python 3.7을 다운로드한 다음 PyCharm에서 변경하는 것이었습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;193&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;시스템에 여러 Python 버전을 추가하려는 사용자:&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;194&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;195&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;sudo apt 설치 소프트웨어-속성-공통&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;196&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;sudo add-apt-contribution ppa: 데드스네이크/ppa&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;197&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;sudoapt 설치 python 3.x.x&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;198&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;199&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;방금 librosa 패키지를 사용하고 싶어서 Python 3.9를 3.6으로 다운그레이드했지만 지금도 Python 3.9를 지원하지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;200&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;201&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;202&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;원하는 Python 버전 다운로드&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;203&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;98&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;려달을 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;python3 --version&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;99&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font 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;206&quot; papago-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/52584907/&lt;a href=&quot;https://stackoverflow.com/questions/52584907/how-to-downgrade-python-from-3-7-to-3-6&quot; target=&quot;_blank&quot; papago-id=&quot;206-1&quot;&gt;how-to-downgrade-python-from-3-7-to-3-6&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/921</guid>
      <comments>https://lovepro.tistory.com/921#entry921comment</comments>
      <pubDate>Mon, 22 May 2023 22:32:41 +0900</pubDate>
    </item>
    <item>
      <title>출력 형식을 지정하기 위해 f-string에서 new line '\n'을 사용하려면 어떻게 해야 합니까?</title>
      <link>https://lovepro.tistory.com/920</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;출력 형식을 지정하기 위해 f-string에서 new line '\n'을 사용하려면 어떻게 해야 합니까?&lt;/font&gt;&lt;/h2&gt;
&lt;p papago-id=&quot;1&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;나는 이 코드를 시도했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;names = ['Adam', 'Bob', 'Cyril']
text = f&quot;Winners are:\n{'\n'.join(names)}&quot;
print(text)
&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;'\'&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;에 사수다없니습용할서부▁▁be 안에서는 할 수 없습니다.&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;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;f-string의 입니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;어떻게 하면 작동할 수 있을까요?&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font 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;Winners are:
Adam
Bob
Cyril
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr&gt; 
&lt;p&gt;&lt;sub papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/51775950&quot; papago-id=&quot;5-1&quot;&gt;brace off-string에서 백슬래시를 사용할 &lt;/a&gt;수 &lt;a href=&quot;https://stackoverflow.com/questions/51775950&quot; papago-id=&quot;5-1&quot;&gt;없는 이유&lt;/a&gt;는 무엇입니까?를 &lt;a href=&quot;https://stackoverflow.com/questions/51775950&quot; papago-id=&quot;5-1&quot;&gt;참조&lt;/a&gt;하십시오.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/51775950&quot; papago-id=&quot;5-1&quot;&gt; 어떻게 하면 문제를 해결할 수 있습니까?&lt;/a&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제한이 존재하는 이유에 &lt;strong papago-id=&quot;5-3&quot;&gt;대한&lt;/strong&gt; 추가적인 논의를 위해.&lt;/font&gt;&lt;/sub&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 class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그럴수는 없어요.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;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;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;SyntaxError&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; f'{\}'
SyntaxError: f-string expression part cannot include a backslash
&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;이는 f-string에 &lt;a href=&quot;https://www.python.org/dev/peps/pep-0498/#escape-sequences&quot; rel=&quot;noreferrer&quot; papago-id=&quot;9-1&quot;&gt;대한&lt;/a&gt; PEP에 명시되어 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;백슬래시는 f-string의 식 부분 안에 나타나지 않을 수 있습니다. [...]&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;한 가지 방법은 노래하는 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;'\n'&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;어떤 이름으로&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;.join&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;code&gt;f&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;string을 .&lt;/font&gt;&lt;/font&gt;&lt;font 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;names = ['Adam', 'Bob', 'Cyril']
nl = '\n'
text = f&quot;Winners are:{nl}{nl.join(names)}&quot;
print(text)
&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;Winners are:
Adam
Bob
Cyril
&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;@wim에서 지정한 다른 옵션은 다음과 같습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;chr(10)&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;\n&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;돌아온 다음 거기에 합류합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;f&quot;Winners are:\n{chr(10).join(names)}&quot;&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;물론 또 다른 것은.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;'\n'.join&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;n = &quot;\n&quot;.join(names)
text = f&quot;Winners are:\n{n}&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;h2&gt;&lt;em papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;참고:&lt;/font&gt;&lt;/em&gt;&lt;/h2&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;f&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;str.format&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;17&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;후자에서는 다음과 같은 키가 포함된 해당 괴짜 딕트의 압축이 풀리면 언제든지 구두점을 사용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; &quot;{\\} {*}&quot;.format(**{&quot;\\&quot;: 'Hello', &quot;*&quot;: 'World!'})
&quot;Hello World!&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;sub papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;(제발 이러지 마세요.)&lt;/font&gt;&lt;/sub&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;hr&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;print&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;format&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;30&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다른 답들이 대안으로 제시하는 것처럼.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 드린 옵션은 어떤 이유로 f-string을 &lt;em papago-id=&quot;30-1&quot;&gt;사용&lt;/em&gt;해야 하는 경우에만 적용됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;31&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;어떤 것이 새로운 것이라고 해서 그것으로 모든 것을 하려고 노력해야 한다는 것을 의미하지는 않습니다 ;-)&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;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;구분 기호를 사용하여 문자열 목록을 인쇄하는 데 f-string 또는 기타 형식이 필요하지 않습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용하기만 하면 됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;sep&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&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;names = ['Adam', 'Bob', 'Cyril']
print('Winners are:', *names, sep='\n')
&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;Winners are:
Adam
Bob
Cyril
&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;즉, /here를&lt;a href=&quot;https://docs.python.org/3/library/stdtypes.html#str.join&quot; rel=&quot;noreferrer&quot; papago-id=&quot;35-1&quot;&gt; &lt;/a&gt;&lt;a href=&quot;https://docs.python.org/3/library/stdtypes.html#str.format&quot; rel=&quot;noreferrer&quot; papago-id=&quot;35-2&quot;&gt;&lt;code papago-id=&quot;35-2-0&quot;&gt;str.format()&lt;/code&gt;&lt;/a&gt;사용하는 것이 f-string 해결책보다 더 간단하고 읽기 쉬울 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;print('\n'.join(['Winners are:', *names]))
print('Winners are:\n{}'.format('\n'.join(names)))
&lt;/code&gt;&lt;/pre&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;다른 사람들이 말한 것처럼 f-string에서 백슬래시를 사용할 수는 없지만, 사용하여 이 문제를 피할 수 있습니다(비록 이것은 그렇지 않을 것입니다).&lt;/font&gt;&lt;/font&gt;&lt;code&gt;\n&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;37&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모든 플랫폼에서, 이진 파일을 읽고 쓰지 않는 한 권장되지 않습니다. Rick의&lt;a href=&quot;https://stackoverflow.com/users/2437514/rick-teachey&quot; papago-id=&quot;37-1&quot;&gt; 의견 참조&lt;/a&gt;):&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; import os
&amp;gt;&amp;gt;&amp;gt; names = ['Adam', 'Bob', 'Cyril']
&amp;gt;&amp;gt;&amp;gt; print(f&quot;Winners are:\n{os.linesep.join(names)}&quot;)
Winners are:
Adam
Bob
Cyril 
&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;\n&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;39&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;포함:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; print(f&quot;Winners are:\n{chr(10).join(names)}&quot;)
Winners are:
Adam
Bob
Cyril
&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;그러나 OP가 제시한 예(OP의 실제 사용 사례를 나타낼 수도 있고 그렇지 않을 수도 있음)에 대해서는 이러한 아이디어 중 어떤 것도 실제로 사용되어서는 안 된다고 주장하고 싶습니다.&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;27&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;f-string을 사용하는 전체 포인트는 코드 가독성을 높이는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신이 할 수 없는 f-string으로 할 수 있는 것은 없습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;format&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;em papago-id=&quot;28-1&quot;&gt;읽을&lt;/em&gt; 수 있는 내용이 &lt;em papago-id=&quot;28-1&quot;&gt;있는지&lt;/em&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;f&quot;Winners are:\n{'\n'.join(names)}&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;newline = '\n'
f&quot;Winners are:\n{newline.join(names)}&quot;
&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;&quot;Winners are:\n{chr(10).join(names)}&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;45&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;대 이 항목:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&quot;Winners are:\n{}&quot;.format('\n'.join(names))
&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;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&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;chr(10)&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;newline&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 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;print(f'{&quot;blah\n&quot;}')
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;32&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;위의 진술은 제기될 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;SyntaxError&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;33&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 오류를 방지하려면 \n을 포함하는 문자열을 변수에 할당하고 f-string으로 사용하기만 하면 됩니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;x = &quot;blah\n&quot;
print(f'{x}')
&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;가독성이 최우선이고 속도가 진정한 요인이 아니라면, f-string은 프로그래밍할 수 있는 더 간단한 방법이 있더라도 간단한 기능 자체 문서화를 만드는 데 매우 유용합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;가독성은 다음과 같은 경우에 f-string으로 극대화됩니다. (1) 인수의 상태를 변경하는 문장은 명확하고, (2) 인수가 인쇄될 때 인쇄 문장은 신중하게 형식을 지정하고, 시각적으로 제시되어 인수가 두드러지도록 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre class=&quot;lang-py prettyprint-override&quot;&gt;&lt;code&gt;'''
function to print out an identification header, consisting
of the programmer supplied title, lastname, and firstname:
''' 
FORMAT_DATE = &quot;%m-%d-%y %H:%M:%S&quot;

date_and_time = datetime.now()
name_line = f&quot;* {lastname}, {firstname}&quot;
title_line = f&quot;* {title}&quot;
date_line = f&quot;* {date_and_time.strftime(FORMAT_DATE)}&quot;
print(name_line
    + '\n'
    + title_line
    + '\n'
    + date_line)
&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;pre&gt;&lt;code&gt;* Lovelace, Ada
* Bernoulli Numbers algorithm implemented in Python
* 10-28-42 20:13:22
&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;names = ['Adam', 'Bob', 'Cyril']
text = f&quot;&quot;&quot;{'''
'''.join(names)}&quot;&quot;&quot;
print(text)
&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;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/44780357/&lt;a href=&quot;https://stackoverflow.com/questions/44780357/how-can-i-use-newline-n-in-an-f-string-to-format-output&quot; target=&quot;_blank&quot; papago-id=&quot;56-1&quot;&gt;how-can-i-use-newline-n-in-an-f-string-to-format-output&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/920</guid>
      <comments>https://lovepro.tistory.com/920#entry920comment</comments>
      <pubDate>Mon, 22 May 2023 22:28:16 +0900</pubDate>
    </item>
    <item>
      <title>msysgit 오른쪽 클릭 메뉴 옵션을 제거하려면 어떻게 해야 합니까?</title>
      <link>https://lovepro.tistory.com/919</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;msysgit 오른쪽 클릭 메뉴 옵션을 제거하려면 어떻게 해야 합니까?&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;TorothyGit 또는 PortableGit in my shell로 전환하고 싶지만, 이러한 성가신 상황별 메뉴 옵션이 남아 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;어떻게 하면 그들을 사라지게 할 수 있을까요?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제거하려면 스크립트를 작성해야 합니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt;&lt;h2 papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;64비트 윈도우&lt;/font&gt;&lt;/h2&gt; 
&lt;p papago-id=&quot;5&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;cmd에서.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;exe 창에서 다음 명령을 실행합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre papago-id=&quot;6&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;cd &quot;C:\Program Files (x86)\Git\git-cheetah&quot;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;regsvr32 /ugit_shell_ext64.dll&lt;/font&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;32비트 윈도우&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;cmd에서.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;exe 창, 다음 명령 실행&lt;/font&gt;&lt;/p&gt; 
&lt;pre papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;cd &quot;C:\Program Files\Git\git-cheetah&quot;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;regsvr32 /ugit_shell_ext.dll&lt;/font&gt;&lt;/pre&gt; 
&lt;h2 papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;윈도우 10&lt;/font&gt;&lt;/h2&gt; 
&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Windows 10(윈도우 10)에서 이전 방법이 작동하지 않으면 응용 프로그램을 제거하고 다시 설치해 보십시오.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 설치 프로세스 중에 &lt;strong papago-id=&quot;11-1&quot;&gt;Windows&lt;/strong&gt; 탐색기 통합을 &lt;strong papago-id=&quot;11-1&quot;&gt;확인&lt;/strong&gt;하지 않도록 주의해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://i.stack.imgur.com/p9bYj.jpg&quot; rel=&quot;noreferrer&quot;&gt;&lt;img src=&quot;https://i.stack.imgur.com/p9bYj.jpg&quot; alt=&quot;여기에 이미지 설명 입력&quot; papago-attr-id=&quot;1&quot;&gt;&lt;/a&gt;&lt;/p&gt;&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;최신 버전의 Win8.1에서는 이 레지스트리 제거만 작동했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\Directory\background\shell\git_gui]

[-HKEY_CLASSES_ROOT\Directory\background\shell\git_shell]

[-HKEY_CLASSES_ROOT\Directory\Shell\git_gui]

[-HKEY_CLASSES_ROOT\Directory\Shell\git_shell]

[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\git_gui]

[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\git_shell]

[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\git_gui]

[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\git_shell]
&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;CCleaner를 사용하여 단일 항목을 사용하지 않도록 설정할 수도 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://i.stack.imgur.com/YJcd8.png&quot; alt=&quot;여기에 이미지 설명 입력&quot; papago-attr-id=&quot;2&quot;&gt;&lt;/p&gt;&lt;p papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;msysgit를 설치할 때 &quot;Windows 탐색기 통합&quot; 옵션을 선택 취소하면 표시되지 않습니다.&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;/p&gt;&lt;p papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Windows 10에서는 위와 같은 작업이 전혀 수행되지 않았습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;내가 찾은 가장 좋은 해결책은 응용 프로그램을 제거한 후 다시 설치하는 것이며 설치 과정에서 &lt;strong papago-id=&quot;16-1&quot;&gt;Windows&lt;/strong&gt; 탐색기 통합의 &lt;strong papago-id=&quot;16-1&quot;&gt;선택&lt;/strong&gt;을 취소하는 것입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://i.stack.imgur.com/p9bYj.jpg&quot; rel=&quot;nofollow noreferrer&quot;&gt;&lt;img src=&quot;https://i.stack.imgur.com/p9bYj.jpg&quot; alt=&quot;git 제거 클릭 메뉴 옵션 제거&quot; papago-attr-id=&quot;3&quot;&gt;&lt;/a&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;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;18-0&quot;&gt;1단계:&lt;/strong&gt; 유형&lt;/font&gt;&lt;/font&gt;&lt;code&gt;regedit&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 메뉴에서&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;20&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;20-0&quot;&gt;2단계:&lt;/strong&gt; 레지스트리 편집기 실행&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;21&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;21-0&quot;&gt;3단계: 다음&lt;/strong&gt;으로 이동합니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;HKEY_CURRENT_USER\SOFTWARE\Classes\Directory\Background\shell&lt;/code&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;4단계:&lt;/strong&gt; &quot;shell&quot; &lt;strong papago-id=&quot;22-0&quot;&gt;클릭&lt;/strong&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-0&quot;&gt;5단계:&lt;/strong&gt; &quot;Git Bash Here&quot;를 마우스 오른쪽 버튼으로 클릭하고 삭제 옵션을 &lt;strong papago-id=&quot;23-0&quot;&gt;선택&lt;/strong&gt;합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;24&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;건배.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;25-1&quot;&gt;Windows 1064비트에서는 다음&lt;/strong&gt; 작업을 모두 수행해야 합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;br&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;p papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;HKEY_CLASSES_ROOT\디렉토리\background\shell\git_gui&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;HKEY_CLASSES_ROOT\디렉토리\background\shell\git_shell&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;HKEY_CLASSES_ROOT\디렉토리\&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;셸\git_gui&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;HKEY_CLASSES_ROOT\디렉토리\&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;셸\git_shell&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;편의를 위해 또는 제거를 자동화하려는 경우(예: Choco 업그레이드 후 사용) Powershell에서 다음을 실행할 수 있습니다(Admin으로 실행).&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT | Out-Null
Remove-Item -Path &quot;HKCR:\Directory\shell\git_gui&quot; -Recurse
Remove-Item -Path &quot;HKCR:\Directory\shell\git_shell&quot; -Recurse
Remove-Item -Path &quot;HKCR:\Directory\Background\shell\git_gui&quot; -Recurse
Remove-Item -Path &quot;HKCR:\Directory\Background\shell\git_shell&quot; -Recurse
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&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;strong papago-id=&quot;3-0&quot;&gt;셸 확장&lt;/strong&gt; dll을 등록 &lt;strong papago-id=&quot;3-0&quot;&gt;취소&lt;/strong&gt;하여 추가 메뉴 항목(GitExt 클론..., GitExt 새 저장소 생성 등)을 &lt;strong papago-id=&quot;3-0&quot;&gt;제거&lt;/strong&gt;합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;regsvr32 /u &quot;C:\Program Files (x86)\GitExtensions\GitExtensionsShellEx64.dll&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;33&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;dfkt에서 언급한 내용에 추가하기 위해 라이브러리 폴더에 대한 위치가 하나 더 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;HKEY_USERS\S-1-5-21-2901758233-4091616725-3820123586-1012\Software\Classes\LibraryFolder\background\shell\git_gui
HKEY_USERS\S-1-5-21-2901758233-4091616725-3820123586-1012\Software\Classes\LibraryFolder\background\shell\git_shell
&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;HKEY_USERS와 소프트웨어 사이의 특정 번호는 아마도 개인별로 다를 것이며 계정별로 다르므로 사용자에게 적합한지 확인하십시오.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;35&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;따라서 수정된 완전한 레지스트리 제거는 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\Directory\background\shell\git_gui]

[-HKEY_CLASSES_ROOT\Directory\background\shell\git_shell]

[-HKEY_CLASSES_ROOT\Directory\Shell\git_gui]

[-HKEY_CLASSES_ROOT\Directory\Shell\git_shell]

[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\git_gui]

[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\git_shell]

[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\git_gui]

[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\git_shell]

[-HKEY_USERS\S-1-5-21-2901758233-4091616725-3820123586-1012\Software\Classes\LibraryFolder\background\shell\git_gui]

[-HKEY_USERS\S-1-5-21-2901758233-4091616725-3820123586-1012\Software\Classes\LibraryFolder\background\shell\git_shell]
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;36&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/2459763/&lt;a href=&quot;https://stackoverflow.com/questions/2459763/how-do-i-remove-msysgits-right-click-menu-options&quot; target=&quot;_blank&quot; papago-id=&quot;36-1&quot;&gt;how-do-i-remove-msysgits-right-click-menu-options&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/919</guid>
      <comments>https://lovepro.tistory.com/919#entry919comment</comments>
      <pubDate>Mon, 22 May 2023 22:26:36 +0900</pubDate>
    </item>
    <item>
      <title>왜 큰 장고 쿼리 세트를 통해 반복하는 것이 막대한 양의 메모리를 소비합니까?</title>
      <link>https://lovepro.tistory.com/918</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;for event in Event.objects.all():
    print event
&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;이로 인해 메모리 사용량이 4GB 정도로 꾸준히 증가하며, 이때 행이 빠르게 인쇄됩니다.&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 class=&quot;papago-parent&quot;&gt;저도 노력했습니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Event.objects.iterator()&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;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;(관련이 있는지는 모르겠지만 PostgreSQL을 사용하고 있습니다.)&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;네이트 C는 가까웠지만, 완전히 그렇지는 않았습니다.&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://docs.djangoproject.com/en/dev/ref/models/querysets/#when-querysets-are-evaluated&quot; rel=&quot;noreferrer&quot; papago-id=&quot;9-1&quot;&gt;문서&lt;/a&gt;에서:&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&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;ul&gt; 
  &lt;li&gt;&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;반복.&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;for e in Entry.objects.all():
    print e.headline
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그래서 당신이 처음 그 루프에 들어가서 쿼리 세트의 반복 형태를 얻었을 때, 당신의 천만 행이 한꺼번에 검색됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;실제로 반복할 수 있는 것을 반환하기 전에 데이터베이스 행을 로드하고 각 행에 대한 개체를 만드는 Django의 대기 시간입니다.&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;제가 문서를 읽어본 바로는 QuerySet의 내부 캐싱 메커니즘을 우회하는 것에 불과합니다.&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;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;a href=&quot;http://djangosnippets.org/snippets/1949/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;메모리 효율적인 장고 쿼리 설정기&lt;/font&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;http://djangosnippets.org/snippets/1170/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;배치 쿼리 세트&lt;/font&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;http://djangosnippets.org/snippets/1400/&quot; rel=&quot;noreferrer&quot; papago-id=&quot;17&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;p papago-id=&quot;18&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;더 빠르거나 가장 효율적이지는 않을 수도 있지만, 여기에 문서화된 djangocore의 Paginator 및 Page 객체를 기존 솔루션으로 사용하는 것은 어떨까요?&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://docs.djangoproject.com/en/dev/topics/pagination/&quot; papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;https://docs.djangoproject.com/en/dev/topics/pagination/&lt;/font&gt;&lt;/a&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;from django.core.paginator import Paginator
from djangoapp.models import model

paginator = Paginator(model.objects.all(), 1000) # chunks of 1000, you can 
                                                 # change this to desired chunk size

for page in range(1, paginator.num_pages + 1):
    for row in paginator.page(page).object_list:
        # here you can do whatever you want with the row
    print &quot;done processing page %s&quot; % page
&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;Django의 기본 동작은 쿼리를 평가할 때 QuerySet의 전체 결과를 캐시하는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;QuerySet의 반복자 방법을 사용하여 이 캐싱을 피할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;for event in Event.objects.all().iterator():
    print event
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;a href=&quot;https://docs.djangoproject.com/en/stable/ref/models/querysets/#iterator&quot; rel=&quot;noreferrer&quot; papago-id=&quot;22&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;https://docs.djangoproject.com/en/stable/ref/models/querysets/ #reiterator&lt;/font&gt;&lt;/a&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;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;mpf에서 제안한 paginator 접근법을 사용하면 훨씬 적은 메모리를 사용하지만 테스트 사례에서는 2-3배 느립니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;from django.core.paginator import Paginator

def chunked_iterator(queryset, chunk_size=10000):
    paginator = Paginator(queryset, chunk_size)
    for page in range(1, paginator.num_pages + 1):
        for obj in paginator.page(page).object_list:
            yield obj

for event in chunked_iterator(Event.objects.all()):
    print event
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;많은 양의 레코드의 경우 &lt;a href=&quot;http://www.postgresql.org/docs/current/interactive/plpgsql-cursors.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;25-1&quot;&gt;데이터베이스&lt;/a&gt; 커서의 성능이 훨씬 뛰어납니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;장고에는 원시 SQL이 필요합니다. 장고 커서는 SQL 커서와 다릅니다.&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;네이트 C가 제안한 LIMIT - OFFSET 방법이 당신의 상황에 충분히 적합할 수 있습니다.&lt;/font&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;font class=&quot;papago-parent&quot;&gt; &lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import gc
# Get the events in reverse order
eids = Event.objects.order_by(&quot;-id&quot;).values_list(&quot;id&quot;, flat=True)

for index, eid in enumerate(eids):
    event = Event.object.get(id=eid)
    # do necessary work with event
    if index % 100 == 0:
       gc.collect()
       print(&quot;completed 100 items&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;a href=&quot;https://docs.djangoproject.com/en/dev/ref/models/querysets/#values-list&quot; papago-id=&quot;28-0&quot;&gt;values_list&lt;/a&gt;를 사용하여 데이터베이스의 모든 id를 가져온 다음 각 개체를 개별적으로 가져올 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;시간이 지나면 큰 개체가 메모리에 생성되고 루프가 종료될 때까지 가비지 수집되지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;위 코드는 100번째 항목이 소비된 후 수동 가비지 수집을 수행합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;29&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://docs.djangoproject.com/en/dev/ref/models/querysets/&quot; papago-id=&quot;29-1&quot; rel=&quot;noreferrer&quot;&gt;이것&lt;/a&gt;은 문서에서 온 것입니다:&lt;a href=&quot;http://docs.djangoproject.com/en/dev/ref/models/querysets/&quot; papago-id=&quot;29-1&quot; rel=&quot;noreferrer&quot;&gt; &lt;/a&gt;http://docs.djangoproject.com/en/dev/ref/models/querysets/&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p papago-id=&quot;30&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;쿼리 집합을 평가하기 위한 작업을 수행할 때까지 데이터베이스 활동은 실제로 수행되지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;&lt;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; 래서그 ▁the 때.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;print event&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;는 쿼리 화재(명령에 따라 전체 테이블 검색)를 실행하고 결과를 로드합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신은 모든 물체를 요구하고 모든 물체를 얻지 않고는 첫 번째 물체를 얻을 수 없습니다.&lt;/font&gt;&lt;/font&gt;&lt;font 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;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;Event.objects.all()[300:900]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;a href=&quot;http://docs.djangoproject.com/en/dev/topics/db/queries/#limiting-querysets&quot; rel=&quot;noreferrer&quot; papago-id=&quot;34&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;http://docs.djangoproject.com/en/dev/topics/db/queries/ #쿼리 집합 제한&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;그런 다음 내부적으로 SQL에 오프셋과 한계를 추가합니다.&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&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;저는 이 패턴을 &quot;숟가락 먹이기&quot;라고 부릅니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;먼저 관리 명령에서 사용하는 진행률 표시줄이 있는 구현입니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;pip3 install tqdm&lt;/code&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;from tqdm import tqdm


def spoonfeed(qs, func, chunk=1000, start=0):
    &quot;&quot;&quot;
    Chunk up a large queryset and run func on each item.

    Works with automatic primary key fields.

    chunk -- how many objects to take on at once
    start -- PK to start from

    &amp;gt;&amp;gt;&amp;gt; spoonfeed(Spam.objects.all(), nom_nom)
    &quot;&quot;&quot;
    end = qs.order_by('pk').last()
    progressbar = tqdm(total=qs.count())
    if not end:
        return
    while start &amp;lt; end.pk:
        for o in qs.filter(pk__gt=start, pk__lte=start+chunk):
            func(o)
            progressbar.update(1)
        start += chunk
    progressbar.close()
&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;def set_population(town):
    town.population = calculate_population(...)
    town.save()
&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;spoonfeed(Town.objects.all(), set_population)
&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;QuerySet.iterator()&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://docs.djangoproject.com/en/4.0/ref/models/querysets/#with-server-side-cursors&quot; papago-id=&quot;6-1&quot; rel=&quot;noreferrer&quot;&gt;메소드는 청크 &lt;/a&gt;크기의 &lt;a href=&quot;https://docs.djangoproject.com/en/4.0/ref/models/querysets/#with-server-side-cursors&quot; papago-id=&quot;6-1&quot; rel=&quot;noreferrer&quot;&gt;서버측 커서&lt;/a&gt;를 사용하여 &lt;a href=&quot;https://docs.djangoproject.com/en/4.0/ref/models/querysets/#with-server-side-cursors&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;따라서 우편물을 사용하는 경우에는 이를 즉시 처리해야 합니다.&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;/p&gt; 
&lt;pre&gt;&lt;code&gt;class GeneratorWithLen(object):
    &quot;&quot;&quot;
    Generator that includes len and count for given queryset
    &quot;&quot;&quot;
    def __init__(self, generator, length):
        self.generator = generator
        self.length = length

    def __len__(self):
        return self.length

    def __iter__(self):
        return self.generator

    def __getitem__(self, item):
        return self.generator.__getitem__(item)

    def next(self):
        return next(self.generator)

    def count(self):
        return self.__len__()

def batch(queryset, batch_size=1024):
    &quot;&quot;&quot;
    returns a generator that does not cache results on the QuerySet
    Aimed to use with expected HUGE/ENORMOUS data sets, no caching, no memory used more than batch_size

    :param batch_size: Size for the maximum chunk of data in memory
    :return: generator
    &quot;&quot;&quot;
    total = queryset.count()

    def batch_qs(_qs, _batch_size=batch_size):
        &quot;&quot;&quot;
        Returns a (start, end, total, queryset) tuple for each batch in the given
        queryset.
        &quot;&quot;&quot;
        for start in range(0, total, _batch_size):
            end = min(start + _batch_size, total)
            yield (start, end, total, _qs[start:end])

    def generate_items():
        queryset.order_by()  # Clearing... ordering by id if PK autoincremental
        for start, end, total, qs in batch_qs(queryset):
            for item in qs:
                yield item

    return GeneratorWithLen(generate_items(), total)
&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;events = batch(Event.objects.all())
len(events) == events.count()
for event in events:
    # Do something with the Event
&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;이런 종류의 작업은 주로 장고 ORM 대신 원시 MySQL 원시 쿼리를 사용합니다.&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;MySQL은 스트리밍 모드를 지원하므로 메모리 부족 오류 없이 모든 레코드를 안전하고 빠르게 루프할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import MySQLdb
db_config = {}  # config your db here
connection = MySQLdb.connect(
        host=db_config['HOST'], user=db_config['USER'],
        port=int(db_config['PORT']), passwd=db_config['PASSWORD'], db=db_config['NAME'])
cursor = MySQLdb.cursors.SSCursor(connection)  # SSCursor for streaming mode
cursor.execute(&quot;SELECT * FROM event&quot;)
while True:
    record = cursor.fetchone()
    if record is None:
        break
    # Do something with record here

cursor.close()
connection.close()
&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;ol&gt; 
 &lt;li&gt;&lt;a href=&quot;http://techualization.blogspot.sg/2011/12/retrieving-million-of-rows-from-mysql.html&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;47&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;MySQL에서 수백만 개의 행 검색&lt;/font&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://vladmihalcea.com/how-does-mysql-result-set-streaming-perform-vs-fetching-the-whole-jdbc-resultset-at-once/&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;48&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;전체 JDBC ResultSet을 한 번에 가져오는 것과 비교하여 MySQL ResultSet 스트리밍을 수행하는 방법&lt;/font&gt;&lt;/a&gt;&lt;/li&gt; 
&lt;/ol&gt;&lt;p papago-id=&quot;49&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/4222176/&lt;a href=&quot;https://stackoverflow.com/questions/4222176/why-is-iterating-through-a-large-django-queryset-consuming-massive-amounts-of-me&quot; target=&quot;_blank&quot; papago-id=&quot;49-1&quot;&gt;why-is-iterating-through-a-large-django-queryset-consuming-massive-amounts-of-me&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/918</guid>
      <comments>https://lovepro.tistory.com/918#entry918comment</comments>
      <pubDate>Mon, 22 May 2023 22:24:37 +0900</pubDate>
    </item>
    <item>
      <title>통합 윈도우즈 인증을 사용하여 로그인 프롬프트 수신</title>
      <link>https://lovepro.tistory.com/917</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;윈도우즈 2003 서버의 IIS 7에서 .NET 3.5 응용 프로그램을 실행하고 있으며 로그인 메시지가 계속 표시되므로 통합 윈도우즈 인증을 제대로 받을 수 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;다른 모든 보안 유형이 비활성화된 상태에서 IIS에서 Windows 인증을 사용하도록 설정했으며 응용 프로그램 web.config 파일 인증/인증이 다음과 같이 설정되었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;system.web&amp;gt;
    &amp;lt;compilation debug=&quot;true&quot; strict=&quot;false&quot; explicit=&quot;true&quot; targetFramework=&quot;3.5&quot; /&amp;gt;
    &amp;lt;authenticationmode=&quot;Windows&quot;/&amp;gt;
    &amp;lt;authorization&amp;gt;
    &amp;lt;deny users = &quot;?&quot; /&amp;gt;
    &amp;lt;/authorization&amp;gt;
&amp;lt;/system.web&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;2&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 설정을 사용하면 Windows 사용자의 장면 확인을 통해 익명 사용자에 대한 액세스를 허용하고 거부할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 사이트에 액세스하려고 하면 Windows 로그인 팝업이 나타납니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;3&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;며칠 전부터 이 문제를 해결하고 있지만 문제를 파악할 수 없습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;유사한 문제가 있는 게시물을 기준으로, 저는 제 URL에 마침표가 포함되어 있지 않다는 것을 확인했고, IE 설정이 통합 Windows 인증 사용으로 설정되어 있는지 다시 확인했으며, 인트라넷 사이트에 URL을 추가했지만 팝업이 계속 표시됩니다.&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;문제를 해결하기 위해 IIS에서 익명 인증을 활성화하고 web.config 파일을 수정하여 바로 입력한 다음 응답을 추가했습니다.&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;WindowsIdentity.getcurrent().user.name .toString()을(를) 사용하여 인증에 사용 중인 사용자를 확인합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;결과는 IIS APPPOOL\myapp이며, 이는 분명히 내 애플리케이션의 IIS 애플리케이션 풀입니다.&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;Windows 인증만 사용하고 팝업을 표시하지 않고 실제 Windows 사용자에 대해 Windows 인증이 수행되도록 모든 사용자가 지원해 주셔서 감사합니다.&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;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;로그인이 실패하고 Windows 로그인 프롬프트가 다시 표시되면 &quot;SERVERNAME&quot;으로 로그인을 시도한 사용자 이름이 표시됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;\&quot;USERNAME\&quot;은 도메인이 아닌 서버에 대해 사용자의 유효성을 검사하려고 한다고 생각하게 했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이를 확인하기 위해 네트워크 도메인 사용자와 동일한 사용자 이름과 비밀번호로 앱 서버에 직접 로컬 사용자 계정을 생성하고 다시 로그인을 시도했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그 결과 다시 로그인 프롬프트를 받았지만 이번에 사용자 이름과 비밀번호를 입력했을 때 성공적으로 로그인할 수 있었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;네트워크 사용자와 앱 서버가 동일한 도메인에 있으므로 IIS 인증이 도메인 계정이 아닌 로컬 앱 서버 계정을 가리키는 이유를 잘 모르겠습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 이 시점에서 이것이 IIS 질문이라는 것을 알고 있기 때문에 forums.iis.net 에도 글을 올리지만, 그 이후로 며칠 동안 이 문제를 해결해 온 사람이 있을 수 있는 조언에 감사드립니다.&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;제가 작업 중인 Windows 2008 서버가 있기 때문에 제 답변은 Windows 2003 서버의 OP와 완전히 같지 않습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;10&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기 제가 한 일이 있습니다(나중에 찾을 수 있도록 여기에 기록).&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;11&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저도 같은 문제를 겪고 있었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://i.stack.imgur.com/zxtO0.jpg&quot; alt=&quot;로그인 프롬프트&quot; papago-attr-id=&quot;1&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;strong papago-id=&quot;12-1&quot;&gt;Web.config&lt;/strong&gt; 파일에 다음 섹션이 있었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;system.web&amp;gt;
    &amp;lt;authentication mode=&quot;Windows&quot; /&amp;gt;
    &amp;lt;authorization&amp;gt;
        &amp;lt;allow users=&quot;*&quot; /&amp;gt;
        &amp;lt;deny users=&quot;?&quot; /&amp;gt;
    &amp;lt;/authorization&amp;gt;
&amp;lt;/system.web&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;IIS에서는 &lt;strong papago-id=&quot;13-1&quot;&gt;인증&lt;/strong&gt; 아이콘 아래에서 이 모든 문제가 해결된 것으로 보입니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li papago-id=&quot;14&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;권한 편집: ASP.NET 계정에 권한이 있는지 확인합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;내 것은 원래 추가되지 않았습니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;img src=&quot;https://i.stack.imgur.com/sLmIJ.jpg&quot; alt=&quot;ASP.NET 권한&quot; papago-attr-id=&quot;2&quot;&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;15&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;15-1&quot;&gt;이제&lt;/strong&gt; 인증 기능으로 이동합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://i.stack.imgur.com/6iNSr.jpg&quot; alt=&quot;인증 기능&quot; papago-attr-id=&quot;3&quot;&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;에서 익명 &lt;strong papago-id=&quot;16-1&quot;&gt;인증 사용&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;IUSR&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://i.stack.imgur.com/Z2O1c.jpg&quot; alt=&quot;익명 인증&quot; papago-attr-id=&quot;4&quot;&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;strong papago-id=&quot;18-1&quot;&gt;Windows&lt;/strong&gt; 인증을 &lt;strong papago-id=&quot;18-1&quot;&gt;사용&lt;/strong&gt;하도록 설정한 다음 마우스 오른쪽 단추를 클릭하여 &lt;strong papago-id=&quot;18-3&quot;&gt;공급자&lt;/strong&gt;를 설정합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;19&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;NTLM이 먼저여야 합니다!&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://i.stack.imgur.com/m5eDV.jpg&quot; alt=&quot;Windows 인증&quot; papago-attr-id=&quot;5&quot;&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;strong papago-id=&quot;20-1&quot;&gt;고급 설정&lt;/strong&gt;에서 확인...&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;20-3&quot;&gt;확장&lt;/strong&gt; 보호가 &lt;strong papago-id=&quot;20-5&quot;&gt;수락&lt;/strong&gt;되고 &lt;strong papago-id=&quot;20-7&quot;&gt;커널 모드 인증&lt;/strong&gt; 사용이 선택됩니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://i.stack.imgur.com/J9kqz.jpg&quot; alt=&quot;고급 설정&quot; papago-attr-id=&quot;6&quot;&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;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;2&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;단지 다른 사람들의 이익을 위해서.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;가 오가다경우인 &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;401.1 Unauthorized&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;0xc000006d&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;로컬 컴퓨터 이름과 일치하지 않는 FQDN 또는 사용자 지정 호스트 헤더에 대한 요청을 차단하는 보안 &quot;기능&quot;에 실제로 부딪치게 됩니다.&lt;/font&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;/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;https://&lt;a href=&quot;https://webconnection.west-wind.com/docs/_4gi0ql5jb.htm&quot; rel=&quot;noreferrer&quot; papago-id=&quot;27-0&quot;&gt;webconnection&lt;/a&gt;.west-wind.com/docs/_4gi0ql5jb.htm (원래, 현재는 사라졌습니다: http://support.&lt;a href=&quot;http://support.microsoft.com/kb/896861&quot; rel=&quot;noreferrer&quot; papago-id=&quot;27-2&quot;&gt;microsoft&lt;/a&gt;.com/kb/896861) )&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;blockquote&gt; 
 &lt;p papago-id=&quot;29&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;해결 방법은 이 정책을 명시적으로 비활성화하는 레지스트리 해킹입니다.&lt;/font&gt;&lt;/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&gt;&lt;code&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa&lt;/code&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;DisableLoopbackCheck&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;(DWORD)&lt;/font&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;그런 다음 값을 1로 보내 루프백 검사를 비활성화하거나(로컬 인증이 작동함) 0으로 보냅니다(로컬 인증은 허용되지 않음).&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;또는 Powershell을 더 쉽게 사용할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;code&gt;New-ItemProperty HKLM:\System\CurrentControlSet\Control\Lsa -Name &quot;DisableLoopbackCheck&quot; -Value &quot;1&quot; -PropertyType dword&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;최근 빌드된 Windows 10(1803 이상)에서도 로컬 인증을 위해 이 구성 설정이 필요한 것 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p papago-id=&quot;36&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다른 사람들의 의견이 저를 도와주지 못했기 때문에 이번 건은 시간이 좀 걸렸습니다.&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;웹 사이트의 특정 부분만 보호하려는 비슷한 문제가 있었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;IE를 제외하고는 모든 것이 잘 작동했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;익명 및 Windows 인증을 모두 사용하도록 설정했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;익명의 경우 ID가 애플리케이션 풀 ID로 설정됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;Windows 인증에 문제가 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;주변을 좀 둘러본 후에 저는 fiddler를 가동했고 그것이 Kerberos를 제공자로 사용하고 있다는 것을 발견했습니다(사실 그것은 기본적으로 협상으로 설정되어 있습니다).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;NTLM으로 전환했고 그것이 수정되었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;HTH&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;웹 보안에 [도메인 사용자] 권한을 추가합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li papago-id=&quot;40&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사이트 폴더 아래 IIS에서 사이트를 마우스 오른쪽 단추로 클릭합니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;41&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용 권한 편집...을 클릭합니다.&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;/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;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;li papago-id=&quot;45&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;객체 이름에 [Domain Users]를 입력하여 텍스트 영역을 선택하고 [확인]을 클릭하여 변경사항을 적용합니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;46&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;확인을 클릭하여 권한 팝업을 닫습니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;47&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;48&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL에 도메인 이름에 점이 있는 경우 IE는 URL을 로컬이 아닌 인터넷 주소로 간주합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;두 가지 이상의 옵션이 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li papago-id=&quot;49&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL에서 server.domain을 대체하는 데 사용할 별칭을 가져옵니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;예를 들어, 내 앱.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;50&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;컴퓨터에서 아래 단계를 수행합니다.&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p papago-id=&quot;51&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사이트로 이동하여 로그인 대화 상자를 취소합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 경우:&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://i.stack.imgur.com/CzvPq.png&quot; rel=&quot;noreferrer&quot;&gt;&lt;img src=&quot;https://i.stack.imgur.com/CzvPq.png&quot; alt=&quot;여기에 이미지 설명 입력&quot; papago-attr-id=&quot;7&quot;&gt;&lt;/a&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;IE 설정에서:&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://i.stack.imgur.com/PUs5X.png&quot; rel=&quot;noreferrer&quot;&gt;&lt;img src=&quot;https://i.stack.imgur.com/PUs5X.png&quot; alt=&quot;여기에 이미지 설명 입력&quot; papago-attr-id=&quot;8&quot;&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://i.stack.imgur.com/sN2df.png&quot; rel=&quot;noreferrer&quot;&gt;&lt;img src=&quot;https://i.stack.imgur.com/sN2df.png&quot; alt=&quot;여기에 이미지 설명 입력&quot; papago-attr-id=&quot;9&quot;&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://i.stack.imgur.com/Yq4Vu.png&quot; rel=&quot;noreferrer&quot;&gt;&lt;img src=&quot;https://i.stack.imgur.com/Yq4Vu.png&quot; alt=&quot;여기에 이미지 설명 입력&quot; papago-attr-id=&quot;10&quot;&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;6&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;모든 것을 변경하여 서버에서 실수를 범하지 마십시오.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;할 때  R2에서 Windows Authentication으로 하십시오.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Providers&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;7&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;NTLM&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;8&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;각 응용 프로그램에 대해 입력합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 때&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Negotiate&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;Windows Authentication은 목록의 첫 번째 항목으로, 2008 R2에서 특정 응용 프로그램의 작업 속성을 중지할 수 있으며 사용자 이름과 암호를 입력하라는 메시지가 표시될 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;응용프로그램을 업데이트할 때 이 문제가 발생할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;확인만 해주세요.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;NTLM&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;p papago-id=&quot;58&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것으로 해결되었습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;59&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;내 서버와 클라이언트 PC는 Windows 7이며 동일한 도메인에 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;60&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;in iis7.5 - 인트라넷에 대한 윈도우즈 인증을 사용하도록 설정합니다(다른 모든 인증 사용 안 함).&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 web.config 파일에서 Windows 인증에 대해 언급할 필요가 없습니다.&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;61&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그런 다음 클라이언트 PC로 이동합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;IE8 또는 9 - 도구-인터넷 옵션-보안-로컬 인트라넷-사이트-고급-사이트 추가(&quot;서버 verfi 필요&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;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;62&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;IE8 또는 9 - Tools-internet Options-Security-Local Intranet-Custom 수준-User Authentication-logon - 현재 사용자 이름과 암호를 사용하여 자동 로그온 선택&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&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;당신은 끝났습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용자 이름 및 암호를 묻는 메시지가 더 이상 표시되지 않습니다.&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;64&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;클라이언트 PC가 도메인의 일부이므로 이 설정에 대한 GPO가 있어야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그렇지 않으면 다음 번에 사용자가 창에 로그인할 때 이 설정이 되돌아갑니다.&lt;/font&gt;&lt;/p&gt;&lt;/li&gt; 
&lt;/ol&gt;&lt;p&gt;&lt;code&gt;WindowsIdentity.GetCurrent&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;맞습니다. APPPOOL 사용자를 받아야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;코드를 실행하는 ASP.NET 프로세스가 현재 ID이기 때문입니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;사이트의 ID를 누른 사용자를 반환하려면 web.config에 다음 행을 추가해야 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;identity impersonate=&quot;true&quot; /&amp;gt;
&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;이로 인해 프로세스는 페이지를 요청하는 사용자의 ID를 가정합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;모든 작업이 대신 수행되므로 네트워크의 폴더를 읽거나 데이터베이스 리소스에 액세스하려는 시도는 현재 사용자에게 해당 작업에 대한 권한이 필요하다는 것을 의미합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;여기에서 &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/xh507fc5%28v=VS.90%29.aspx&quot; rel=&quot;noreferrer&quot; papago-id=&quot;66-1&quot;&gt;사칭&lt;/a&gt;에 대한 자세한 내용을 읽을 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;웹/데이터베이스 서버 토폴로지가 설정된 방법에 따라 가장이 설정된 경우 위임 문제가 발생할 수 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;그러나 원래 문제는 ID를 확인할 수 없고 로그인 팝업이 표시된다는 것입니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;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;deny&amp;gt;&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;13&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;IIS에서 익명 인증을 사용하지 않도록 설정한 경우 차단합니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;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;location&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 class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;블록 등)을 제거하고 다시 시도할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font 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;70&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;IIS에서 응용 프로그램 풀을 실행 중인 사용자를 지정하지 않았습니다.&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;사용자 지정 계정에는 SPN 등록과 같은 몇 가지 단계가 더 필요할 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;또한 사용자 지정 계정에 AD에서 들어오는 사용자의 계정을 해결할 수 있는 권한이 없는 경우에도 문제가 발생할 수 있습니다.&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;IIS 로그를 확인하여 반환되는 응답을 확인할 수도 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;401일 가능성이 가장 높지만 401.2와 같은 하위 번호가 있어야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 하위 번호는 때때로 근본 문제를 확인하는 데 도움이 될 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://support.microsoft.com/kb/907273&quot; rel=&quot;noreferrer&quot; papago-id=&quot;71-1&quot;&gt;이 KB&lt;/a&gt; 문서에는 5개 항목이 나와 있습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;72&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;브라우저 관련일 수 있습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;IE를 사용하는 경우 고급 설정으로 이동하여 &quot;Windows 통합 인증 사용&quot; 확인란이 선택되어 있는지 확인할 수 있습니다.&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;/p&gt; 
&lt;p papago-id=&quot;74&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;해야만 했어요&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;75&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;IIS Manager에서 &lt;b papago-id=&quot;75-1&quot;&gt;.NET&lt;/b&gt; 권한 &lt;b papago-id=&quot;75-1&quot;&gt;부여&lt;/b&gt; 규칙 열기&lt;/font&gt;&lt;/p&gt; &lt;img src=&quot;https://i.stack.imgur.com/LIKHb.png&quot; alt=&quot;IIS Manager에서 .NET 권한 부여 규칙 열기&quot; papago-attr-id=&quot;11&quot;&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;p papago-id=&quot;76&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;b papago-id=&quot;76-3&quot;&gt;거부&lt;/b&gt; 규칙 제거&lt;/font&gt;&lt;/p&gt; &lt;img src=&quot;https://i.stack.imgur.com/rMWK2.png&quot; alt=&quot;거부 규칙 제거&quot; papago-attr-id=&quot;12&quot;&gt;&lt;/li&gt; 
&lt;/ol&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;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://i.stack.imgur.com/TpVPR.png&quot; rel=&quot;nofollow noreferrer&quot;&gt;&lt;img src=&quot;https://i.stack.imgur.com/TpVPR.png&quot; alt=&quot;IE 인터넷 옵션&quot; papago-attr-id=&quot;13&quot;&gt;&lt;/a&gt;&lt;/p&gt;&lt;p papago-id=&quot;78&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;방금 ASP.Net 응용 프로그램에서 유사한 문제를 해결했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;79&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;79-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;보안 이벤트 뷰어에서 ID=4625 &quot;도메인 사이드 불일치&quot; 이벤트가 발생했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;80&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;80-0&quot;&gt;솔루션:&lt;/strong&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;http://www.rayheffer.com/619/cloning-windows-server-2008-r2-use-sysprep-no-more-newsid&quot; rel=&quot;nofollow&quot; papago-id=&quot;80-2&quot;&gt;여기&lt;/a&gt;서 해결책을 찾았습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;문제는 가상 시스템을 복제한 테스트 시스템(윈도우즈 서버 2008 R2, 도메인 컨트롤러 1개, 웹 서버 1개)이었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;둘 다 동일한 기계 SID를 가지고 있어 문제가 발생한 것으로 보입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;제가 한 일은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li papago-id=&quot;81&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;82&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;c:\Windows\를 실행합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;VM에 System32\Sysprep\Sysprep.exe가 있습니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;83&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;VM을 재부팅합니다.&lt;/font&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;84&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;85&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;프로세스에서 일부 설정(사용자 기본 설정, 정적 IP, 자체 서명된 인증서 다시 만들기)을 해제했지만, 이제 다시 생성하니 모든 것이 제대로 작동합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;86&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저도 같은 문제가 있었습니다.&lt;/font&gt;&lt;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;약간의 자체 RnD를 한 후에 마침내 성공했습니다.&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;strong papago-id=&quot;88-1&quot;&gt;IIS&lt;/strong&gt; 설정으로 &lt;strong papago-id=&quot;88-1&quot;&gt;이동&lt;/strong&gt;한 다음 웹 &lt;strong papago-id=&quot;88-3&quot;&gt;사이트&lt;/strong&gt; 권한 옵션에 조직 도메인 사용자 그룹을 추가했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;89&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이제 제 모든 도메인 사용자가 해당 웹 사이트에 대한 액세스 권한을 부여받았기 때문에 저는 그 문제에 직면하지 않았습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;90&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;91&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 위의 IIS 구성 트릭과 루프백 레지스트리 해킹을 시도했고, 앱 풀 권한과 여러 가지를 검토하고 다시 만들었지만 여전히 로컬 또는 원격 검색 세션에서 IIS Express 또는 IIS 7.5가 있는 개발 워크스테이션에서 실행 중인 인증 루프를 제거할 수 없었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 4개의 401.2 상태 응답과 빈 페이지를 받았습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;IIS 8.5 스테이징 서버에 배포된 사이트와 동일한 사이트가 완벽하게 작동합니다.&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;마지막으로 브라우저에서 빈칸으로 표시된 응답 본문의 마크업에 성공적인 로그인을 위한 기본 페이지가 포함되어 있다는 것을 알게 되었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;401 오류에 대한 ASP.NET 및 HTTP에 대한 사용자 지정 오류 처리가 내 워크스테이션의 Windows Authentication을 방해하거나 방해하는 것이지 스테이징 서버를 방해하는 것이 아니라고 판단했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 이것을 만지작거리며 몇 시간을 보냈지만, 401 오류에 대한 맞춤형 처리를 제거하자마자 작업대는 정상으로 돌아왔습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;저는 이것을 여러분 자신의 발을 쏠 수 있는 또 다른 방법으로 제시합니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;93&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.net core 2에서 이 문제를 겪고 있었는데 여기서 대부분의 제안을 검토한 결과 web.config의 설정을 놓친 것 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;aspNetCore processPath=&quot;dotnet&quot; arguments=&quot;.\app.dll&quot; forwardWindowsAuthToken=&quot;false&quot; stdoutLogEnabled=&quot;false&quot; stdoutLogFile=&quot;.\logs\stdout&quot; /&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;올바른 설정은 &lt;strong papago-id=&quot;94-1&quot;&gt;forwardWindows&lt;/strong&gt;(윈도우)&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;94-1&quot;&gt;AuthToken&lt;/strong&gt;=&quot;&lt;strong papago-id=&quot;94-1&quot;&gt;참&quot;&lt;/strong&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;a href=&quot;https://blogs.msdn.microsoft.com/friis/2009/12/31/things-to-check-when-kerberos-authentication-fails-using-iisie/&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;95-1&quot;&gt;다음 Msdn&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;도메인 접두사(예: DOMAIN\Username)로 로그인해 보셨습니까?&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;IIS 6은 기본적으로 호스트 시스템을 기본 도메인으로 사용하므로 로그온 시 도메인을 지정하면 문제가 해결될 수 있습니다.&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;레지스트리에 추가&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa solved my problem. 
&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;NTLM 인증 요청에서 참조할 수 있는 로컬 보안 기관 호스트 이름을 만듭니다.&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;ol&gt; 
 &lt;li&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;Start&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;Run&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;regedit&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;OK&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;19&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/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;키를 합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0&lt;/code&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;21&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;마우스 오른쪽 단추 클릭&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;MSV1_0&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;을 가리키다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;New&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;Multi-String Value&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;24&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&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;BackConnectionHostNames&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;ENTER&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;/p&gt; &lt;/li&gt; 
 &lt;li&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 class=&quot;papago-parent&quot;&gt;마우스 오른쪽 단추 클릭&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;BackConnectionHostNames&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;29&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 를클합다니를 클릭합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Modify&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;/p&gt; &lt;/li&gt; 
 &lt;li&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;Value&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;데이터 상자에 시스템의 로컬 공유에 사용되는 CNAME 또는 DNS 별칭을 입력한 다음 확인을 클릭합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;118&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&gt;&lt;p papago-id=&quot;119&quot; papago-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;/li&gt; 
 &lt;li&gt;&lt;p&gt;&lt;code&gt;BackConnectionHostNames&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;REG_DWORD&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;34&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 입력란,&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;35&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;은 당은삭야합니다를 .&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;BackConnectionHostNames&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 class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;레지스트리 항목.&lt;/font&gt;&lt;/font&gt;&lt;font 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;37&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;레지스트리 편집기를 선택한 다음 시스템을 재시작합니다.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;p papago-id=&quot;125&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/troubleshoot/windows-server/networking/accessing-server-locally-with-fqdn-cname-alias-denied&quot; papago-id=&quot;125-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;윈도우즈 Server 2003 서비스&lt;/a&gt; 팩&lt;a href=&quot;https://learn.microsoft.com/en-us/troubleshoot/windows-server/networking/accessing-server-locally-with-fqdn-cname-alias-denied&quot; papago-id=&quot;125-1&quot; rel=&quot;nofollow noreferrer&quot;&gt; 1을 설치&lt;/a&gt;한 후 &lt;a href=&quot;https://learn.microsoft.com/en-us/troubleshoot/windows-server/networking/accessing-server-locally-with-fqdn-cname-alias-denied&quot; papago-id=&quot;125-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;FQDN 또는 CNAME 별칭을 사용하여 서버에 로컬로 액세스하려고 하면 오류 메시지가 표시&lt;/a&gt;됩니다. &lt;a href=&quot;https://learn.microsoft.com/en-us/troubleshoot/windows-server/networking/accessing-server-locally-with-fqdn-cname-alias-denied&quot; papago-id=&quot;125-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;액세스가 거부되었거나 지정된 네트워크&lt;/a&gt; 경로를 &lt;a href=&quot;https://learn.microsoft.com/en-us/troubleshoot/windows-server/networking/accessing-server-locally-with-fqdn-cname-alias-denied&quot; papago-id=&quot;125-1&quot; rel=&quot;nofollow noreferrer&quot;&gt;수락한 네트워크 공급자가 없습니다&lt;/a&gt;.&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;Windows Server 2019에서 변경한 후 다시 시작할 필요가 없었습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;127&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;애플리케이션 풀 ID가 ApplicationPoolIdentity인 경우 IIS 7.0 또는 IIS 7.5의 윈도우즈 인증이 kerberos(프로바이더=Identity)와 함께 작동하지 않습니다. 사용자는 네트워크 서비스 또는 다른 기본 제공 계정을 사용해야 합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;또 다른 가능성은 NTLM을 사용하여 Windows 인증이 작동하도록 하는 것입니다(Windows Authentication, Provider에서는 NTLM을 상위에 두거나 협상 제거).&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;128&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;129&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;애플리케이션 풀에서 사용한 사용자(Identity)가 IIS_IUSRS 그룹 이하가 아니기 때문에 동일한 문제가 발생했습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;사용자를 그룹에 추가하고 모든 작업을 수행했습니다.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;130&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;제 경우 솔루션은 (위에서 제안한 조정 사항 위에) 제/사용자의 로컬 개발 컴퓨터 / IIS(호스팅 서버)를 다시 &lt;strong papago-id=&quot;130-1&quot;&gt;시작&lt;/strong&gt;하는 것이었습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;내 사용자가 방금 새로 생성된 AD Security Group에 추가되었으며 컴퓨터를 로그아웃하거나 다시 시작할 때까지 정책이 사용자 AD 계정에 적용되지 않았습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;131&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;132&quot; papago-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;133&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;IIS -&amp;gt; 고급 설정 -&amp;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;VM/서버에 액세스할 수 있는 시스템 ID(도메인/사용자)를 추가하는 즉시 암호 프롬프트가 중지됩니다.&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;이것이 도움이 되길 바랍니다.&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;동일한 문제가 발생했으며 웹 애플리케이션이 실행되고 있는 애플리케이션 풀의 애플리케이션 풀 ID를 NetworkService로 변경하여 해결되었습니다.&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;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/5402381/&lt;a href=&quot;https://stackoverflow.com/questions/5402381/receiving-login-prompt-using-integrated-windows-authentication&quot; target=&quot;_blank&quot; papago-id=&quot;137-1&quot;&gt;receiving-login-prompt-using-integrated-windows-authentication&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/917</guid>
      <comments>https://lovepro.tistory.com/917#entry917comment</comments>
      <pubDate>Mon, 22 May 2023 22:18:53 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 복사는 하되 덮어쓰지 않는 방법은?</title>
      <link>https://lovepro.tistory.com/916</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;리눅스 복사는 하되 덮어쓰지 않는 방법은?&lt;/font&gt;&lt;/h2&gt;
&lt;div&gt; 
 &lt;aside class=&quot;s-notice s-notice__info post-notice js-post-notice mb16&quot; role=&quot;status&quot;&gt; 
  &lt;div class=&quot;d-flex fd-column fw-nowrap&quot;&gt; 
   &lt;div class=&quot;d-flex fw-nowrap&quot;&gt; 
    &lt;div class=&quot;flex--item 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;a href=&quot;/help/closed-questions&quot; papago-id=&quot;1-3&quot;&gt;스택&lt;/a&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;font class=&quot;papago-parent&quot;&gt;     &lt;/font&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;a href=&quot;/help/on-topic&quot; papago-id=&quot;2-1&quot;&gt;프로그래밍&lt;/a&gt; 문제,&lt;a href=&quot;/help/on-topic&quot; papago-id=&quot;2-1&quot;&gt; 소프트웨어 &lt;/a&gt;알고리즘 &lt;a href=&quot;/help/on-topic&quot; papago-id=&quot;2-1&quot;&gt;또는 프로그래머가 주로 사용하는 소프트웨어 도구에 대한&lt;/a&gt; 것이 아닌 것 같습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://stackexchange.com/sites&quot; papago-id=&quot;2-3&quot;&gt;질문&lt;/a&gt;이 다른 &lt;a href=&quot;https://stackexchange.com/sites&quot; papago-id=&quot;2-3&quot;&gt;Stack Exchange&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;2020-08-27 10:01:07Z&quot; papago-attr-id=&quot;1&quot;&gt;2년&lt;/span&gt; 전에 &lt;span class=&quot;relativetime&quot; papago-id=&quot;3-1&quot; title=&quot;2020-08-27 10:01:07Z&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/9392735/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&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;cp&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;1&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;기존 파일이 복사된 파일보다 오래된 경우에도 디렉터리를 덮어쓰지 않습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그리고 저는 이것이 크론탭 배시 스크립트의 일부가 될 것이기 때문에 완전히 대화형이 아닌 것으로 하고 싶습니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;아이디어 있어요?&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;a href=&quot;http://manpages.ubuntu.com/manpages/precise/en/man1/cp.1.html&quot; rel=&quot;noreferrer&quot; papago-id=&quot;7-1&quot;&gt;man&lt;/a&gt; 페이지에서 가져온 것:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;-n, --no-clobber
              do not overwrite an existing file (overrides a previous -i option)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;8&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;예:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;cp -n myoldfile.txt mycopiedfile.txt
&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;rsync -a -v --ignore-existing src dst
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr&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;rsync -a -v src dst&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;cp -n
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;당신이 원하는 것입니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;맨 페이지를 참조하십시오.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;13&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;이것은 RedHat에서 작동합니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;false | cp -i source destination 2&amp;gt;/dev/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;em papago-id=&quot;14-0&quot;&gt;업데이트&lt;/em&gt;하는 &lt;em papago-id=&quot;14-2&quot;&gt;것과 덮어쓰지&lt;/em&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;(RedHat의 나처럼) 'n' 옵션이 없는 사용자는 사용할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;cp -u&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;5&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;원본이 기존 파일보다 최신이거나 기존 파일이 없는 경우에만 파일을 씁니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;17&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;[edit] 코멘트에서 언급했듯이, 이것은 오래된 파일을 덮어쓸 것이기 때문에 OP가 정확히 원했던 것은 아닙니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;세빙의 대답을 사용하세요.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;18&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;18-0&quot;&gt;Alpine&lt;/strong&gt; Linux&lt;strong papago-id=&quot;18-0&quot;&gt;:&lt;/strong&gt; 아래 답변은 단일 파일의 경우에만 해당됩니다. alpine에서&lt;/font&gt;&lt;/font&gt;&lt;code&gt;cp -n&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;false | cp -i ...&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;if [ ! -f env.js ]; then cp env.example.js env.js; fi 
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;9&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;위의 예에서 다음과 같은 경우&lt;/font&gt;&lt;/font&gt;&lt;code&gt;env.js&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;env.example.js&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;env.js&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;cp 일부 버전에는 &lt;em papago-id=&quot;25-1&quot;&gt;--no-clobber&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;  echo n | cp -vipr src/* dst
&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;이것은 나에게 효과가 있습니다 yes n | cp -isrcdest.&lt;/font&gt;&lt;/p&gt;&lt;p papago-id=&quot;27&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/9392735/&lt;a href=&quot;https://stackoverflow.com/questions/9392735/linux-how-to-copy-but-not-overwrite&quot; target=&quot;_blank&quot; papago-id=&quot;27-1&quot;&gt;linux-how-to-copy-but-not-overwrite&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/916</guid>
      <comments>https://lovepro.tistory.com/916#entry916comment</comments>
      <pubDate>Mon, 22 May 2023 22:16:43 +0900</pubDate>
    </item>
    <item>
      <title>Bash에서 한 문자를 다른 문자로 바꿉니다.</title>
      <link>https://lovepro.tistory.com/915</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Bash에서 한 문자를 다른 문자로 바꿉니다.&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; &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;.&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;3&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;)를 bash 문자열로 입력합니다.&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;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;foo=&quot;  &quot;

# replace first blank only
bar=${foo/ /.}

# replace all blanks
bar=${foo// /.}
&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;상세한 것에 대하여는, http://tldp.org/LDP/abs/html/&lt;a href=&quot;http://tldp.org/LDP/abs/html/string-manipulation.html&quot; papago-id=&quot;6-1&quot;&gt;string-manipulation&lt;/a&gt;.html 를 참조해 주세요.&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;tr&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;tr &quot; &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;# echo &quot;hello world&quot; | tr &quot; &quot; .
hello.world
&lt;/code&gt;&lt;/pre&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&gt;&lt;/font&gt;&lt;code&gt;man tr&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;11&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;font papago-translate=&quot;splited&quot;&gt;&lt;strong papago-id=&quot;12&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;묘사&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;br&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;/blockquote&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;bash에서는 다음 명령어를 사용하여 문자열의 &lt;a href=&quot;http://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion&quot; papago-id=&quot;9-1&quot; rel=&quot;noreferrer&quot;&gt;패턴&lt;/a&gt; 치환을 &lt;a href=&quot;http://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion&quot; papago-id=&quot;9-1&quot; rel=&quot;noreferrer&quot;&gt;수행&lt;/a&gt;할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;${VARIABLE//PATTERN/REPLACEMENT}&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;15&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;건설하다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그냥 사용&lt;/font&gt;&lt;/font&gt;&lt;code&gt;/&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;가 아니라&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 class=&quot;papago-parent&quot;&gt;패턴은 파일글로브와 같은 와일드카드 패턴입니다&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;string='foo bar qux'
one=&quot;${string/ /.}&quot;     # sets one to 'foo.bar qux'
all=&quot;${string// /.}&quot;    # sets all to 'foo.bar.qux'
&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; echo &quot;hello world&quot; | sed 's/ /./g' 
&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;string=${string// /.}
&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;echo \&quot;hello world\&quot;|sed 's/ /+/g'|sed 's/+/\/g'|sed 's/\&quot;//g'
&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;+&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;sing을 하고 나서&lt;/font&gt;&lt;/font&gt;&lt;code&gt;+&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;23&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;백슬래시로 서명하고 더블슬래시를 제거/연결합니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;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;echo \&quot;$(cygpath -u $JAVA_HOME)\&quot;|sed 's/ /+/g'|sed 's/+/\\/g'|sed 's/\&quot;//g'
&lt;/code&gt;&lt;/pre&gt;&lt;p papago-id=&quot;25&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;a href=&quot;https://github.com/koalaman/shellcheck/wiki/SC2001&quot; rel=&quot;nofollow noreferrer&quot; papago-id=&quot;25-1&quot;&gt;셸&lt;/a&gt; 체크에 의한 권장 솔루션은 다음과 같습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;string=&quot;Hello World&quot; ; echo &quot;${string// /.}&quot;&lt;/code&gt;&lt;br&gt; &lt;code&gt;output: Hello.World&lt;/code&gt;&lt;/p&gt;&lt;p papago-id=&quot;26&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;언급&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;URL : https://stackoverflow.com/questions/5928156/&lt;a href=&quot;https://stackoverflow.com/questions/5928156/replace-one-character-with-another-in-bash&quot; target=&quot;_blank&quot; papago-id=&quot;26-1&quot;&gt;replace-one-character-with-another-in-bash&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/915</guid>
      <comments>https://lovepro.tistory.com/915#entry915comment</comments>
      <pubDate>Sat, 22 Apr 2023 22:40:11 +0900</pubDate>
    </item>
    <item>
      <title>UITableView에서 구분자 전폭을 설정하는 방법</title>
      <link>https://lovepro.tistory.com/914</link>
      <description>&lt;h2 papago-id=&quot;0&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;UITableView에서 구분자 전폭을 설정하는 방법&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;UITableView&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;왼쪽보다 10픽셀 먼저 끝나요.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;이 코드를 가지고 장난을 쳤죠&lt;/font&gt;&lt;/font&gt;&lt;code&gt;viewDidLoad()&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;self.tableView.layoutMargins = UIEdgeInsetsZero;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p papago-id=&quot;4&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;커스텀 셀렉터 또는 디폴트 셀렉터를 선택할 수 있는 경우도 스토리보드에서 표시됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;입력된 모든 셀에는 전폭 셀렉터가 없지만 빈 셀에는 전폭 셀렉터가 있습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;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;Xcode 6.4 및 Swift 1.2를 사용하는 iOS 8.4 - 9.0 장치에서 작동했습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -&amp;gt; UITableViewCell {
    var cell = UITableViewCell()


    cell.preservesSuperviewLayoutMargins = false
    cell.separatorInset = UIEdgeInsetsZero
    cell.layoutMargins = UIEdgeInsetsZero

    return cell
}
&lt;/code&gt;&lt;/pre&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;Swift 5 업데이트:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;cell.preservesSuperviewLayoutMargins = false
cell.separatorInset = UIEdgeInsets.zero
cell.layoutMargins = UIEdgeInsets.zero
&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;UITableViewCell&lt;/code&gt;&lt;/p&gt; 
&lt;p papago-id=&quot;9&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;Interface Builder에서 Attributes Inspector로 이동하여 &quot;15&quot;를 0으로 변경합니다.&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://i.stack.imgur.com/A8rY1.png&quot; rel=&quot;noreferrer&quot;&gt;&lt;img src=&quot;https://i.stack.imgur.com/A8rY1.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;4&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;추가가 필요할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;[cell setLayoutMargins:UIEdgeInsetsZero];&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;tableViewCell&lt;/code&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://stackoverflow.com/questions/25770119/ios-8-uitableview-separator-inset-0-not-working&quot; papago-id=&quot;12-1&quot;&gt;iOS &lt;/a&gt;8&lt;a href=&quot;https://stackoverflow.com/questions/25770119/ios-8-uitableview-separator-inset-0-not-working&quot; papago-id=&quot;12-1&quot;&gt; UITable View&lt;/a&gt; separator &lt;a href=&quot;https://stackoverflow.com/questions/25770119/ios-8-uitableview-separator-inset-0-not-working&quot; papago-id=&quot;12-1&quot;&gt;instet 0이 작동&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&gt;&lt;/font&gt;&lt;code&gt;UITableViewController&lt;/code&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
        [cell setSeparatorInset:UIEdgeInsetsZero];
    }

    if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
        [cell setLayoutMargins:UIEdgeInsetsZero];
    }
}

-(void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) {
        [self.tableView setSeparatorInset:UIEdgeInsetsZero];
    }

    if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) {
        [self.tableView setLayoutMargins:UIEdgeInsetsZero];
    }
}
&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;Swift 3의 경우:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;override func viewDidLoad() {
  super.viewDidLoad()

  tableView.separatorInset = .zero
  tableView.layoutMargins = .zero
}
&lt;/code&gt;&lt;/pre&gt;&lt;ol&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;UITableViewCell&lt;/code&gt;&lt;/li&gt; 
 &lt;li papago-id=&quot;16&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;strong papago-id=&quot;16-1&quot;&gt;&lt;em papago-id=&quot;16-1-0&quot;&gt;속성&lt;/em&gt;&lt;/strong&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;구분 기호로 &lt;strong papago-id=&quot;17-1&quot;&gt;&lt;em papago-id=&quot;17-1-0&quot;&gt;이동&lt;/em&gt;&lt;/strong&gt;하여 &quot;&lt;em papago-id=&quot;17-3&quot;&gt;사용자&lt;/em&gt; 지정 삽입&lt;em papago-id=&quot;17-3&quot;&gt;&quot;&lt;/em&gt;으로 변경합니다.&lt;/font&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;left&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;right&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;10&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;[ ]를 클릭합니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;(디폴트)&lt;/font&gt;&lt;/font&gt;&lt;code&gt;left: 15&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;right: 0&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;12&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;)&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
&lt;/ol&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;left: 100&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;a href=&quot;https://i.stack.imgur.com/zlC8T.png&quot; rel=&quot;noreferrer&quot;&gt;&lt;img src=&quot;https://i.stack.imgur.com/zlC8T.png&quot; alt=&quot;여기에 이미지 설명 입력&quot; papago-attr-id=&quot;2&quot;&gt;&lt;/a&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;p&gt;&lt;a href=&quot;https://i.stack.imgur.com/Uuv0N.png&quot; rel=&quot;noreferrer&quot;&gt;&lt;img src=&quot;https://i.stack.imgur.com/Uuv0N.png&quot; alt=&quot;여기에 이미지 설명 입력&quot; papago-attr-id=&quot;3&quot;&gt;&lt;/a&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;UITableViewController&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;16&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;의 2개의 inset 설정에 추가가 필요했습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;willDisplayCell&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;preservesSuperviewLayoutMargins&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;Swift에서는 다음과 같습니다.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;override func tableView(_tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {

    if cell.respondsToSelector(&quot;setSeparatorInset:&quot;) {
        cell.separatorInset = UIEdgeInsetsZero
    }
    if cell.respondsToSelector(&quot;setLayoutMargins:&quot;) {
        cell.layoutMargins = UIEdgeInsetsZero
    }
    if cell.respondsToSelector(&quot;setPreservesSuperviewLayoutMargins:&quot;) {
        cell.preservesSuperviewLayoutMargins = false
    }
}
&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;Inset&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;20&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;디폴트로는 왼쪽부터15 입니다&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;변경 구분 기호&lt;/font&gt;&lt;/font&gt;&lt;code&gt;Inset&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;auto&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;22&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;로.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;custom&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;0&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;24&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://i.stack.imgur.com/l40TC.png&quot; rel=&quot;noreferrer&quot;&gt;&lt;img src=&quot;https://i.stack.imgur.com/l40TC.png&quot; alt=&quot;여기에 이미지 설명 입력&quot; papago-attr-id=&quot;4&quot;&gt;&lt;/a&gt;&lt;/p&gt;&lt;p papago-id=&quot;36&quot; papago-translate=&quot;translated&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;iOS 9+의 Swift용&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;UITableViewCell&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;override var layoutMargins: UIEdgeInsets {
    get { return UIEdgeInsetsZero }
    set(newVal) {}
}
&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&gt;&lt;/font&gt;&lt;code&gt;UITableView&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;28&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;에&lt;/font&gt;&lt;/font&gt;&lt;code&gt;viewDidLoad&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;self.tableView?.separatorInset = UIEdgeInsetsZero;
self.tableView?.layoutMargins = UIEdgeInsetsZero;
&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;iPad에 문제가 있는 사용자에게는 iPhone과 같은 상태가 됩니다.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;그 후, 다음의 값을 조정할 수 있습니다.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;separatorInset&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;pre&gt;&lt;code&gt;tableView.cellLayoutMarginsFollowReadableWidth = false
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;32&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;에서 사용&lt;/font&gt;&lt;/font&gt;&lt;code&gt;cellForRowAtIndexPath&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&gt;&lt;br&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;34&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;iOS9.0+에 최적&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt; cell.separatorInset = UIEdgeInsetsZero;
 cell.layoutMargins = UIEdgeInsetsZero;
 cell.preservesSuperviewLayoutMargins = NO;
&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;iOS 9.3 및 Swift 2.2 테스트 완료.&lt;/font&gt;&lt;font class=&quot;papago-parent&quot;&gt;반드시 코드를 입력해 주세요.&lt;/font&gt;&lt;/font&gt;&lt;code&gt;willDisplayCell&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;cellForRowAtIndexPath&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;func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
    cell.separatorInset = UIEdgeInsetsZero
    cell.layoutMargins = UIEdgeInsetsZero
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;38&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;더하다&lt;/font&gt;&lt;/font&gt;&lt;code&gt;override&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;UITableViewController&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;40&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;다음과 같은 경우:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
&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;swift 5, Xcode 11 업데이트&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;이 inside viewDidLoad() 배치&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;yourTableView.separatorInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
&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;엣지 대 엣지 구분기에서는 왼쪽과 오른쪽의 값을 0으로 설정합니다.&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;&quot;yourTableView&quot;를 tableView아울렛 이름으로 변경합니다.&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;위의 어느 것도 Swift 2.2와 Xcode 7.3.1에서는 작동하지 않았습니다.&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&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;TableViewCell&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;UITableView&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&gt;&lt;img src=&quot;https://i.stack.imgur.com/0TC8z.png&quot; alt=&quot;&quot;&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;Swift 3의 경우:&lt;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    if cell.responds(to: #selector(setter: UITableViewCell.separatorInset)) {
        cell.separatorInset = UIEdgeInsets.zero
    }
    if cell.responds(to: #selector(setter: UITableViewCell.layoutMargins)) {
        cell.layoutMargins = UIEdgeInsets.zero
    }
    if cell.responds(to: #selector(setter: UITableViewCell.preservesSuperviewLayoutMargins)) {
        cell.preservesSuperviewLayoutMargins = false
    }
}
&lt;/code&gt;&lt;/pre&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;viewDidLoad&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; 완료 iOS11 - 4.1iOS11 - swift 4.1)&lt;/font&gt;&lt;/font&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;해라&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;tableView.separatorInset = UIEdgeInsetsMake(0, 0, 0, 0)&lt;/code&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;이러한 솔루션 중 어느 것도 iPad에서는 동작하지 않지만, 저는 두 기기를 모두 커버하는 솔루션을 생각해냈습니다.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;66&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;- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    ...[other code]...
    [cell setLayoutMargins:UIEdgeInsetsZero];
    [cell setSeparatorInset:UIEdgeInsetsZero];
    return cell;
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong papago-id=&quot;67&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;- (void)removeSeparatorInset:(UITableView*)tableView{
    NSArray *cells = [tableView visibleCells];
    for (UITableViewCell *cell in cells){
        [cell setLayoutMargins:UIEdgeInsetsZero];
        [cell setSeparatorInset:UIEdgeInsetsZero];
    }
}

-(void) viewDidLayoutSubviews{
   [super viewDidLayoutSubviews];
   [self removeSeparatorInset:self.tableView];
}
&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;/font&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;@property(nonatomic) UIEdgeInsets separatorInset;
@property(nonatomic) UIEdgeInsets layoutMargins;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;46&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt; 가지 을 모두 할 수 .&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;UITableView&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;47&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&amp;amp;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;UITableViewCell&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;UIView&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;UITableView&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;&amp;amp;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;code&gt;UITableViewCell&lt;/code&gt;&lt;font papago-translate=&quot;translated&quot; papago-id=&quot;51&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;&lt;font class=&quot;papago-parent&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/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;URL : https://stackoverflow.com/questions/26519248/&lt;a href=&quot;https://stackoverflow.com/questions/26519248/how-to-set-the-full-width-of-separator-in-uitableview&quot; target=&quot;_blank&quot; papago-id=&quot;75-1&quot;&gt;how-to-set-the-full-width-of-separator-in-uitableview&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>your programing</category>
      <author>lovepro</author>
      <guid isPermaLink="true">https://lovepro.tistory.com/914</guid>
      <comments>https://lovepro.tistory.com/914#entry914comment</comments>
      <pubDate>Sat, 22 Apr 2023 22:39:30 +0900</pubDate>
    </item>
  </channel>
</rss>