<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Developer SE의 만남</title>
    <link>https://devse.tistory.com/</link>
    <description>질문은 편하게 하시고
답변은 천천히 기다려 주세요.</description>
    <language>ko</language>
    <pubDate>Sun, 5 Jul 2026 14:06:21 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>9&amp;amp;joon</managingEditor>
    <image>
      <title>Developer SE의 만남</title>
      <url>https://tistory1.daumcdn.net/tistory/1911877/attach/73653c786d084e2285a58483842633ef</url>
      <link>https://devse.tistory.com</link>
    </image>
    <item>
      <title>적녹색약에게 좋은 VS Code의 테마</title>
      <link>https://devse.tistory.com/137</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;적녹색약이라서 다크모드는 오히려 피로감이 커서 일반 모드를 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반 모드보다 좀더 편한한 모드가 없을까? 고민하다가 GPT에게 문의한 답변입니다.&lt;/p&gt;
&lt;h2 data-end=&quot;198&quot; data-start=&quot;171&quot; data-ke-size=&quot;size26&quot;&gt;✅ 추천 테마 TOP 5 (적녹색약 친화형)&lt;/h2&gt;
&lt;h3 data-end=&quot;244&quot; data-start=&quot;200&quot; data-ke-size=&quot;size23&quot;&gt;1️⃣ &lt;b&gt;Solarized Light / Solarized Dark&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;530&quot; data-start=&quot;245&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;274&quot; data-start=&quot;245&quot;&gt;&lt;b&gt;제작자:&lt;/b&gt; Ethan Schoonover&lt;/li&gt;
&lt;li data-end=&quot;330&quot; data-start=&quot;275&quot;&gt;&lt;b&gt;특징:&lt;/b&gt; 색상 간 밝기 대비(명도) 중심 설계 &amp;mdash; 색각 이상자도 구분이 잘 됩니다.&lt;/li&gt;
&lt;li data-end=&quot;442&quot; data-start=&quot;331&quot;&gt;&lt;b&gt;추천 이유:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;442&quot; data-start=&quot;348&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;389&quot; data-start=&quot;348&quot;&gt;다크모드 버전도 배경이 완전 검정이 아닌 짙은 회색 &amp;rarr; 눈부심 적음&lt;/li&gt;
&lt;li data-end=&quot;442&quot; data-start=&quot;392&quot;&gt;빨강&amp;middot;초록 구분이 어려운 사람도 주석, 문자열, 키워드 등을 명도 차이로 구분 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;530&quot; data-start=&quot;443&quot;&gt;&lt;b&gt;설치:&lt;/b&gt;&lt;br /&gt;VS Code &amp;rarr; Extensions &amp;rarr; Solarized 검색 &amp;rarr; Solarized Light/Dark Theme 설치&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;535&quot; data-start=&quot;532&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;596&quot; data-start=&quot;537&quot; data-ke-size=&quot;size23&quot;&gt;2️⃣ &lt;b&gt;One Light / One Dark Pro (Moderate Contrast 버전)&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;815&quot; data-start=&quot;597&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;630&quot; data-start=&quot;597&quot;&gt;&lt;b&gt;특징:&lt;/b&gt; Atom 테마 기반, 부드러운 색상 톤&lt;/li&gt;
&lt;li data-end=&quot;726&quot; data-start=&quot;631&quot;&gt;&lt;b&gt;추천 이유:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;726&quot; data-start=&quot;648&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;676&quot; data-start=&quot;648&quot;&gt;붉은 계열이 너무 진하지 않아서 피로감 적음&lt;/li&gt;
&lt;li data-end=&quot;726&quot; data-start=&quot;679&quot;&gt;&quot;Moderate Contrast&quot; 버전이 적녹색약에게 가장 편안한 중간 대비&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;815&quot; data-start=&quot;727&quot;&gt;&lt;b&gt;팁:&lt;/b&gt;&lt;br /&gt;다크모드가 피로하다면 One Light Pro로 전환하세요.&lt;br /&gt;(화이트 배경이지만, 따뜻한 톤이라 눈부심이 덜합니다.)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;820&quot; data-start=&quot;817&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;854&quot; data-start=&quot;822&quot; data-ke-size=&quot;size23&quot;&gt;3️⃣ &lt;b&gt;Gruvbox Light Medium&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1021&quot; data-start=&quot;855&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;887&quot; data-start=&quot;855&quot;&gt;&lt;b&gt;특징:&lt;/b&gt; 베이지 톤 기반의 따뜻한 라이트 테마&lt;/li&gt;
&lt;li data-end=&quot;961&quot; data-start=&quot;888&quot;&gt;&lt;b&gt;추천 이유:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;961&quot; data-start=&quot;905&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;939&quot; data-start=&quot;905&quot;&gt;붉은색과 초록색 대신 &lt;b&gt;노란색&amp;middot;청록색 계열&lt;/b&gt;로 구분&lt;/li&gt;
&lt;li data-end=&quot;961&quot; data-start=&quot;942&quot;&gt;장시간 코딩에도 피로감 적음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1021&quot; data-start=&quot;962&quot;&gt;&lt;b&gt;색약 친화 포인트:&lt;/b&gt;&lt;br /&gt;색 정보가 아닌 &lt;b&gt;채도&amp;middot;명도 차이로 구분되는 코드 하이라이트&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1026&quot; data-start=&quot;1023&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1065&quot; data-start=&quot;1028&quot; data-ke-size=&quot;size23&quot;&gt;4️⃣ &lt;b&gt;Tokyo Night Light / Storm&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1240&quot; data-start=&quot;1066&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1100&quot; data-start=&quot;1066&quot;&gt;&lt;b&gt;특징:&lt;/b&gt; 차분한 파랑&amp;middot;보라 계열, 대비가 부드러움&lt;/li&gt;
&lt;li data-end=&quot;1194&quot; data-start=&quot;1101&quot;&gt;&lt;b&gt;추천 이유:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1194&quot; data-start=&quot;1118&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1156&quot; data-start=&quot;1118&quot;&gt;어두운 배경이지만 검정이 아니라 &amp;lsquo;짙은 남색&amp;rsquo;이라 눈부심 감소&lt;/li&gt;
&lt;li data-end=&quot;1194&quot; data-start=&quot;1159&quot;&gt;붉은색 계열이 보라색&amp;middot;주황색으로 대체되어 색각 부담 완화&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1240&quot; data-start=&quot;1195&quot;&gt;&lt;b&gt;설치:&lt;/b&gt;&lt;br /&gt;Extensions &amp;rarr; Tokyo Night 검색&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1245&quot; data-start=&quot;1242&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1279&quot; data-start=&quot;1247&quot; data-ke-size=&quot;size23&quot;&gt;5️⃣ &lt;b&gt;GitHub Light Default&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1429&quot; data-start=&quot;1280&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1308&quot; data-start=&quot;1280&quot;&gt;&lt;b&gt;특징:&lt;/b&gt; GitHub 공식 라이트 테마&lt;/li&gt;
&lt;li data-end=&quot;1400&quot; data-start=&quot;1309&quot;&gt;&lt;b&gt;추천 이유:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1400&quot; data-start=&quot;1326&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1371&quot; data-start=&quot;1326&quot;&gt;흰색 배경이지만 &lt;b&gt;중간톤 회색 텍스트&lt;/b&gt;와 &lt;b&gt;선명한 파랑 계열 강조&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1400&quot; data-start=&quot;1374&quot;&gt;색 정보 없이도 문법 구조 파악이 잘 됨&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1429&quot; data-start=&quot;1401&quot;&gt;&lt;b&gt;적녹색약 실사용자 커뮤니티에서도 호평&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;1457&quot; data-start=&quot;1436&quot; data-ke-size=&quot;size26&quot;&gt;  테마 선택 후 추가 설정 팁&lt;/h2&gt;
&lt;h3 data-end=&quot;1474&quot; data-start=&quot;1459&quot; data-ke-size=&quot;size23&quot;&gt;① 글자색 대비 완화&lt;/h3&gt;
&lt;p data-end=&quot;1501&quot; data-start=&quot;1475&quot; data-ke-size=&quot;size16&quot;&gt;settings.json에 아래 설정 추가:&lt;/p&gt;
&lt;pre id=&quot;code_1759662399226&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&quot;editor.tokenColorCustomizations&quot;: {
    &quot;textMateRules&quot;: [
        {
            &quot;scope&quot;: &quot;comment&quot;,
            &quot;settings&quot;: { &quot;foreground&quot;: &quot;#6B737D&quot; }  // 주석을 덜 흐리게
        },
        {
            &quot;scope&quot;: &quot;keyword&quot;,
            &quot;settings&quot;: { &quot;foreground&quot;: &quot;#B58900&quot; }  // 주황/황색 계열로
        },
        {
            &quot;scope&quot;: &quot;string&quot;,
            &quot;settings&quot;: { &quot;foreground&quot;: &quot;#268BD2&quot; }  // 진한 파랑
        }
    ]
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-end=&quot;1964&quot; data-start=&quot;1933&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 색보다 &lt;b&gt;명도 대비 위주&lt;/b&gt;로 피로도를 줄여줍니다.&lt;/p&gt;
&lt;hr data-end=&quot;1969&quot; data-start=&quot;1966&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1991&quot; data-start=&quot;1971&quot; data-ke-size=&quot;size23&quot;&gt;② 글꼴 설정 (가독성 향상)&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1759662414201&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&quot;editor.fontFamily&quot;: &quot;Cascadia Code, Consolas, 'Noto Sans Mono', monospace&quot;, 
&quot;editor.fontSize&quot;: 14, &quot;editor.fontLigatures&quot;: false&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2171&quot; data-start=&quot;2134&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 글자 간 구분이 명확해지고, 색 대신 형태로 인식이 쉬워집니다.&lt;/p&gt;
&lt;hr data-end=&quot;2176&quot; data-start=&quot;2173&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;2198&quot; data-start=&quot;2178&quot; data-ke-size=&quot;size23&quot;&gt;③ 시각 피로 줄이기 (UI)&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1759662484089&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&quot;workbench.colorCustomizations&quot;: { 
	&quot;editor.background&quot;: &quot;#F5F2E7&quot;, // 약간 따뜻한 아이보리 
    &quot;editor.foreground&quot;: &quot;#333333&quot; 
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2379&quot; data-start=&quot;2335&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 완전 흰색(#FFFFFF) 대신 아이보리톤을 쓰면 눈의 피로가 크게 줄어요.&lt;/p&gt;
&lt;h2 data-end=&quot;2394&quot; data-start=&quot;2386&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;2394&quot; data-start=&quot;2386&quot; data-ke-size=&quot;size26&quot;&gt;  정리&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;목적추천 테마비고
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;2651&quot; data-start=&quot;2395&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;2651&quot; data-start=&quot;2444&quot;&gt;
&lt;tr data-end=&quot;2517&quot; data-start=&quot;2444&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2460&quot; data-start=&quot;2444&quot;&gt;라이트톤, 장시간 코딩용&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;2508&quot; data-start=&quot;2460&quot;&gt;&lt;b&gt;Solarized Light&lt;/b&gt;, &lt;b&gt;Gruvbox Light Medium&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2517&quot; data-start=&quot;2508&quot;&gt;명도 중심&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2599&quot; data-start=&quot;2518&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2533&quot; data-start=&quot;2518&quot;&gt;다크톤, 눈부심 최소화&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;2586&quot; data-start=&quot;2533&quot;&gt;&lt;b&gt;Tokyo Night Storm&lt;/b&gt;, &lt;b&gt;One Dark Pro (Moderate)&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2599&quot; data-start=&quot;2586&quot;&gt;고대비 피로 완화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2651&quot; data-start=&quot;2600&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2611&quot; data-start=&quot;2600&quot;&gt;표준 UI 친화&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;2638&quot; data-start=&quot;2611&quot;&gt;&lt;b&gt;GitHub Light Default&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2651&quot; data-start=&quot;2638&quot;&gt;색상 의존도 낮음&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>적녹색약 vscode</category>
      <category>적녹색약 코딩</category>
      <author>9&amp;amp;joon</author>
      <guid isPermaLink="true">https://devse.tistory.com/137</guid>
      <comments>https://devse.tistory.com/137#entry137comment</comments>
      <pubDate>Sun, 5 Oct 2025 20:08:50 +0900</pubDate>
    </item>
    <item>
      <title>CAP 이론 도식화 자료</title>
      <link>https://devse.tistory.com/136</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;CAP 이론과 DB를 간략히 정리해 놓은 자료입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;789&quot; data-origin-height=&quot;634&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/soojq/btsMsTmGIjk/D4GGtyU3yVtVeEdrKUFgEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/soojq/btsMsTmGIjk/D4GGtyU3yVtVeEdrKUFgEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/soojq/btsMsTmGIjk/D4GGtyU3yVtVeEdrKUFgEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fsoojq%2FbtsMsTmGIjk%2FD4GGtyU3yVtVeEdrKUFgEK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;789&quot; height=&quot;634&quot; data-origin-width=&quot;789&quot; data-origin-height=&quot;634&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Database &amp;amp; Data</category>
      <category>cap</category>
      <author>9&amp;amp;joon</author>
      <guid isPermaLink="true">https://devse.tistory.com/136</guid>
      <comments>https://devse.tistory.com/136#entry136comment</comments>
      <pubDate>Sat, 22 Feb 2025 12:37:56 +0900</pubDate>
    </item>
    <item>
      <title>Btv 채널 검색 웹서비스를 제작하였습니다.</title>
      <link>https://devse.tistory.com/135</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;작은&amp;nbsp;딸이&amp;nbsp;미라큘러스가&amp;nbsp;언제&amp;nbsp;하는&amp;nbsp;제&amp;nbsp;계속&amp;nbsp;묻길래&amp;nbsp;사이트를&amp;nbsp;하나&amp;nbsp;만들어&amp;nbsp;주었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;http://neneb.net/skb_channel&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://neneb.net/skb_channel&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1736654966605&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;B-Tv채널검색&quot; data-og-description=&quot;&quot; data-og-host=&quot;neneb.net&quot; data-og-source-url=&quot;http://neneb.net/skb_channel&quot; data-og-url=&quot;http://neneb.net/skb_channel&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;http://neneb.net/skb_channel&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://neneb.net/skb_channel&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;B-Tv채널검색&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;neneb.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Python</category>
      <category>BTV</category>
      <category>btv 채널검색</category>
      <category>채널검색</category>
      <author>9&amp;amp;joon</author>
      <guid isPermaLink="true">https://devse.tistory.com/135</guid>
      <comments>https://devse.tistory.com/135#entry135comment</comments>
      <pubDate>Fri, 10 Jan 2025 23:57:27 +0900</pubDate>
    </item>
    <item>
      <title>Vectric Aspire 프로그램의 언어(Language) 변경 방법</title>
      <link>https://devse.tistory.com/134</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 파일을 실행할 경우 실행되는 Aspire 의 기본 언어는 레지스트리에 등록되어 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 확장자가 crv3d일 경우에는 &quot;컴퓨터\HKEY_CLASSES_ROOT\Aspire.crv3d.120\shell\open\command&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;경로의 값을 수정해 주시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1219&quot; data-origin-height=&quot;471&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nBWgn/btsKCSDKqm6/zk9pe9FVz6vjoXvmSkGtf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nBWgn/btsKCSDKqm6/zk9pe9FVz6vjoXvmSkGtf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nBWgn/btsKCSDKqm6/zk9pe9FVz6vjoXvmSkGtf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnBWgn%2FbtsKCSDKqm6%2Fzk9pe9FVz6vjoXvmSkGtf0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1219&quot; height=&quot;471&quot; data-origin-width=&quot;1219&quot; data-origin-height=&quot;471&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본 언어는 변경하지 않고 특정 언어로 프로그램을 실행하고 싶으실 경우&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;781&quot; data-origin-height=&quot;466&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8wNLZ/btsKCQTr52n/TRcIwqw8FMV3YhCA5nck7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8wNLZ/btsKCQTr52n/TRcIwqw8FMV3YhCA5nck7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8wNLZ/btsKCQTr52n/TRcIwqw8FMV3YhCA5nck7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8wNLZ%2FbtsKCQTr52n%2FTRcIwqw8FMV3YhCA5nck7K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;781&quot; height=&quot;466&quot; data-origin-width=&quot;781&quot; data-origin-height=&quot;466&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>기타</category>
      <category>Aspire</category>
      <category>language</category>
      <category>언어 변경</category>
      <author>9&amp;amp;joon</author>
      <guid isPermaLink="true">https://devse.tistory.com/134</guid>
      <comments>https://devse.tistory.com/134#entry134comment</comments>
      <pubDate>Sun, 10 Nov 2024 16:48:03 +0900</pubDate>
    </item>
    <item>
      <title>request, InsecureRequestWarning 해결방법</title>
      <link>https://devse.tistory.com/133</link>
      <description>&lt;pre id=&quot;code_1719553390887&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import requests
from bs4 import BeautifulSoup

response = requests.post(tranUrl, headers=headers, data=data, verify=False)
soup = BeautifulSoup(response.content,&quot;html.parser&quot;)
print(soup.find(id=&quot;tw-answ-target-text&quot;).text)
return soup.find(id=&quot;tw-answ-target-text&quot;).text&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;verify=False 설정으로 SSL오류를 해결하고 나면 이번에는 아래와 같은 경고가&amp;nbsp; 표시됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1719553445136&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;InsecureRequestWarning: Unverified HTTPS request is being made to host 'www.google.com'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#tls-warnings
  warnings.warn(&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인증서 검증으로 하라는 경고인데 아래와 같이 작성하며 경고를 숨길 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1719553577779&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import requests
from bs4 import BeautifulSoup
from requests.packages.urllib3.exceptions import InsecureRequestWarning

requests.packages.urllib3.disable_warnings(InsecureRequestWarning)          # InsecureRequestWarning 경고를 무시하도록 설정

response = requests.post(tranUrl, headers=headers, data=data, verify=False)
soup = BeautifulSoup(response.content,&quot;html.parser&quot;)
print(soup.find(id=&quot;tw-answ-target-text&quot;).text)
return soup.find(id=&quot;tw-answ-target-text&quot;).text&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;from&amp;nbsp;requests.packages.urllib3.exceptions&amp;nbsp;import&amp;nbsp;InsecureRequestWarning&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;requests.packages.urllib3.disable_warnings(InsecureRequestWarning)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;InsecureRequestWarning&amp;nbsp;경고를&amp;nbsp;무시하도록&amp;nbsp;설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 2개 코드를 추가하게 되면 해결됩니다.&lt;/p&gt;</description>
      <category>Python</category>
      <category>insecurerequestwarning</category>
      <category>Python</category>
      <category>REQUEST</category>
      <category>SSL 오류</category>
      <category>크롤링</category>
      <author>9&amp;amp;joon</author>
      <guid isPermaLink="true">https://devse.tistory.com/133</guid>
      <comments>https://devse.tistory.com/133#entry133comment</comments>
      <pubDate>Fri, 28 Jun 2024 14:47:17 +0900</pubDate>
    </item>
    <item>
      <title>request 모듈 사용시 SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed 오류 해결 방법</title>
      <link>https://devse.tistory.com/132</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt; &lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;&amp;loz;&amp;nbsp;&lt;/span&gt; 회사에서 Python / Request 를 사용하여 데이터 수집 프로그램을 만들다 보면 request 모듈 호출시 아래와 같은 오류를 만나게 됩니다. 그에 따른 오류 해결 방법 입니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1719549070066&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;url = &quot;이런 저런 URL&quot;
response = requests.post(url, headers=headers, data=data)
soup = BeautifulSoup(response.content,&quot;html.parser&quot;)
print(soup.find(id=&quot;tw-answ-target-text&quot;).text)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;loz;&amp;nbsp;오류 메시지&lt;/p&gt;
&lt;pre id=&quot;code_1719549190863&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SSLError: HTTPSConnectionPool(host='www.google.com', port=443): Max retries exceeded with url: /async/translate?vet=eiv=1&amp;amp;yv=3&amp;amp;cs=1&amp;amp;_fmt=pc (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1133)')))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;&amp;loz; 조치 방법&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1719549415066&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# verify=False 옵션을 지정해주면 SSL오류가 발생하지 않음
response = requests.post(url, headers=headers, data=data, verify=False)
soup = BeautifulSoup(response.content,&quot;html.parser&quot;)
print(soup.find(id=&quot;tw-answ-target-text&quot;).text)&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Python</category>
      <category>CERTIFICATE_VERIFY_FAILED</category>
      <category>Python</category>
      <category>REQUEST</category>
      <category>크롤링</category>
      <author>9&amp;amp;joon</author>
      <guid isPermaLink="true">https://devse.tistory.com/132</guid>
      <comments>https://devse.tistory.com/132#entry132comment</comments>
      <pubDate>Fri, 28 Jun 2024 13:37:37 +0900</pubDate>
    </item>
    <item>
      <title>Python을 활용한 MySQL general log 파싱</title>
      <link>https://devse.tistory.com/131</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;개발업무 특성상 general log를 검색할 일이 자주 발생합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;적은양이 아니기에 notepad를 통해서는 검색이 제한적이기에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;python을 활용해 특정 단어가 포함된 쿼리만을 추출해 보았습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1718545589943&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import os
import chardet
import pandas as pd
import numpy as np
from queue import Queue
from datetime import datetime

&quot;&quot;&quot;
입력된 값이 날짜형 값인지 검사
&quot;&quot;&quot;
def f_isDateTimeCheck(_inWord):
    try:
        dt_date = datetime.strptime(_inWord, '%Y-%m-%d')
    except Exception as ex:
        # print(ex)  # 여기 오류는 날짜 형식을 검증하기위한 부분이라 오류 로그를 찍으면 안됨
        return False 
    return True

&quot;&quot;&quot;
입려된 단어들이 본 Line에 모두 포함되는지 여부
&quot;&quot;&quot;
def f_QuerToStringAndFind(_line_queue, _findWordList):
    lineStr = &quot;&quot;
    findCnt = 0
    # 하나의 문자열로 결합
    while _line_queue.qsize() &amp;gt; 0:
        lineStr = lineStr + _line_queue.get()
    for str in _findWordList:   # 검색어 목록
        if str in lineStr:
            findCnt = findCnt + 1
    
    # print(findCnt, len(_findWordList), findCnt != len(_findWordList), lineStr)
    if findCnt != len(_findWordList):
        return &quot;&quot; 
    return lineStr

searchWordsList = ['Execute', '34356', 'like'] # 하나의 로그에 모두 포함되어 있어야 하는 검색어 목록
_line_queue = Queue()
_line_number_queue = Queue()

file_path = r'd:\generallog\20240611_generallog.log'
# 검색한 내용을 기록할 파일 생성
new_file_name = &quot;%s/FindGeneralLog_%s.SQL&quot; % (os.path.dirname(file_path), datetime.now().strftime('%Y%m%d%H%M%S'))
find_word_new_file = open(new_file_name, &quot;w&quot;)

try:
	# 하나의 컬럼으로 만들어 주기위해 열구분자(sep)를 임이로 설정하였습니다.
    df_log = pd.read_table(file_path, sep='✱%*', encoding='UTF-8', encoding_errors='ignore', header=None, engine='python')
    query_cnt = 1
    for row in df_log.itertuples():
        try:
            _line_original = str(row[1])
            _line_original = _line_original.strip()     # 원본 내용, 앞뒤공백 삭제
            if len(_line_original) == 0:
                continue     # 공백행 무시
            
            # 라인의 앞 10자리가 날짜 형식이면 로그의 시작
            if f_isDateTimeCheck(_line_original[0:10]):
                _result = f_QuerToStringAndFind(_line_queue, searchWordsList)
                if len(_result) &amp;gt; 3:
                    findTab = _result.find(&quot;\t&quot;)
                    dt = datetime.fromisoformat(_result[0:findTab])
                    formatted_time_str = dt.strftime(&quot;%Y-%m-%d %H:%M:%S&quot;) + f&quot;.{int(dt.microsecond):05d}&quot;   # 밀리초까지 기록
                    find_word_new_file.write(&quot;%s %s \n&quot; % (formatted_time_str, _result[findTab:].replace(&quot;\n&quot;, &quot; &quot;)) )   # 찾은 Line에서 쿼리만 추출하여 파일에 기록
                    
            _line_queue.put(_line_original + '\n')
            _line_number_queue.put(row[0])
        except Exception as ex:
            print(ex)
            continue
except Exception as ex:
    print(ex)

find_word_new_file.close()
print(&quot;검색 작업이 완료되었습니다.&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Python</category>
      <category>mysql general log</category>
      <category>python을 활용한 mysql general log 파싱</category>
      <author>9&amp;amp;joon</author>
      <guid isPermaLink="true">https://devse.tistory.com/131</guid>
      <comments>https://devse.tistory.com/131#entry131comment</comments>
      <pubDate>Sun, 16 Jun 2024 22:47:03 +0900</pubDate>
    </item>
    <item>
      <title>압착기 PA-09 / PA-20 / PA-21 / PA-24</title>
      <link>https://devse.tistory.com/130</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1781&quot; data-origin-height=&quot;428&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OsjHD/btsHCSMpvRC/0ywDIdXVImZx8uABxTt9xK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OsjHD/btsHCSMpvRC/0ywDIdXVImZx8uABxTt9xK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OsjHD/btsHCSMpvRC/0ywDIdXVImZx8uABxTt9xK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOsjHD%2FbtsHCSMpvRC%2F0ywDIdXVImZx8uABxTt9xK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1781&quot; height=&quot;428&quot; data-origin-width=&quot;1781&quot; data-origin-height=&quot;428&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1f1f1f; text-align: start;&quot;&gt;[JST] SXH-001T-P0.6 핀을 압착할 수 있음&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>기타/공구</category>
      <category>pa-09</category>
      <category>pa-20</category>
      <category>pa-21</category>
      <category>pa-24</category>
      <category>압착기</category>
      <author>9&amp;amp;joon</author>
      <guid isPermaLink="true">https://devse.tistory.com/130</guid>
      <comments>https://devse.tistory.com/130#entry130comment</comments>
      <pubDate>Sun, 26 May 2024 15:40:55 +0900</pubDate>
    </item>
    <item>
      <title>Jmeter를 이용하여 대량의 폴더를 생성하고 파일을 복사하는 방법</title>
      <link>https://devse.tistory.com/129</link>
      <description>&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;☑ 수백개의 폴더를 생성하고 생성된 모든 폴더에 동일하게 2~3개의 파일을 복사해야할 업무가 발생하여&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;Jmeter를 이용하여 처리해 보았습니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt; &lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;☑&lt;span&gt;&amp;nbsp; 개요&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;820&quot; data-origin-height=&quot;178&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/u5gW0/btsFkUUCWGo/ZKSWk5jnk5DTJL1ONTqKFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/u5gW0/btsFkUUCWGo/ZKSWk5jnk5DTJL1ONTqKFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/u5gW0/btsFkUUCWGo/ZKSWk5jnk5DTJL1ONTqKFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu5gW0%2FbtsFkUUCWGo%2FZKSWk5jnk5DTJL1ONTqKFK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;820&quot; height=&quot;178&quot; data-origin-width=&quot;820&quot; data-origin-height=&quot;178&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt; &lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;☑&lt;/span&gt;&lt;span style=&quot;color: #555555; text-align: left;&quot;&gt;&amp;nbsp;&lt;span&gt; 요소 위치&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;830&quot; data-origin-height=&quot;603&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beRhwW/btsFpQDjfYi/geBnGn5Rr5xg3xd1IeWf5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beRhwW/btsFpQDjfYi/geBnGn5Rr5xg3xd1IeWf5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beRhwW/btsFpQDjfYi/geBnGn5Rr5xg3xd1IeWf5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeRhwW%2FbtsFpQDjfYi%2FgeBnGn5Rr5xg3xd1IeWf5k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;830&quot; height=&quot;603&quot; data-origin-width=&quot;830&quot; data-origin-height=&quot;603&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;976&quot; data-origin-height=&quot;258&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z6i99/btsFpR3i6Xf/N2SeSBaLb5bvtV0gjtTXTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z6i99/btsFpR3i6Xf/N2SeSBaLb5bvtV0gjtTXTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z6i99/btsFpR3i6Xf/N2SeSBaLb5bvtV0gjtTXTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz6i99%2FbtsFpR3i6Xf%2FN2SeSBaLb5bvtV0gjtTXTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;976&quot; height=&quot;258&quot; data-origin-width=&quot;976&quot; data-origin-height=&quot;258&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt; &lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;☑&lt;/span&gt;&lt;span style=&quot;color: #555555; text-align: left;&quot;&gt;&amp;nbsp;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 설정&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;739&quot; data-origin-height=&quot;388&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zdbGn/btsFp8Kx5bO/cVl7aY3ukwHpgiaeLgmIFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zdbGn/btsFp8Kx5bO/cVl7aY3ukwHpgiaeLgmIFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zdbGn/btsFp8Kx5bO/cVl7aY3ukwHpgiaeLgmIFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzdbGn%2FbtsFp8Kx5bO%2FcVl7aY3ukwHpgiaeLgmIFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;739&quot; height=&quot;388&quot; data-origin-width=&quot;739&quot; data-origin-height=&quot;388&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;784&quot; data-origin-height=&quot;295&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cYvlWf/btsFoEiPep3/jTMmv3D5N9wiHg8tW2vNE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cYvlWf/btsFoEiPep3/jTMmv3D5N9wiHg8tW2vNE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cYvlWf/btsFoEiPep3/jTMmv3D5N9wiHg8tW2vNE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcYvlWf%2FbtsFoEiPep3%2FjTMmv3D5N9wiHg8tW2vNE1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;784&quot; height=&quot;295&quot; data-origin-width=&quot;784&quot; data-origin-height=&quot;295&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;위에서 생성한 폴더의 하위&lt;/b&gt;에서 아래 Copy 작업이 발생하게 됩니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;최종적으로 우측의 명령이 실행 됩니다. Executing: cmd /C mkdir 127.0.0.1&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1041&quot; data-origin-height=&quot;311&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l7KbY/btsFsZGhgu4/OzDODoCmlUvAkzzbSvNuU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l7KbY/btsFsZGhgu4/OzDODoCmlUvAkzzbSvNuU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l7KbY/btsFsZGhgu4/OzDODoCmlUvAkzzbSvNuU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl7KbY%2FbtsFsZGhgu4%2FOzDODoCmlUvAkzzbSvNuU0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1041&quot; height=&quot;311&quot; data-origin-width=&quot;1041&quot; data-origin-height=&quot;311&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;최종적으로 우측의 명령이 실행 됩니다. Executing:&amp;nbsp;cmd&amp;nbsp;/C&amp;nbsp;copy&amp;nbsp;d:\file\*.*&amp;nbsp;127.0.0.1&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;CSV파일에는 220개이 IP 정보가 저장되어 있고, Column Header는 없습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qaxyk/btsFkJMp8SB/iBnCclhzwB0fSdyVVQjvHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qaxyk/btsFkJMp8SB/iBnCclhzwB0fSdyVVQjvHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qaxyk/btsFkJMp8SB/iBnCclhzwB0fSdyVVQjvHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fqaxyk%2FbtsFkJMp8SB%2FiBnCclhzwB0fSdyVVQjvHK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;931&quot; height=&quot;350&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;350&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;✅ Jmeter를 이용하면 다양한 업무를 쉽고 빠르게 처리할 수 있으니 고민해 보시길 바랍니다.&lt;/p&gt;</description>
      <category>테스트 &amp;amp; 자동화/Jmeter</category>
      <category>jmeter cli</category>
      <category>jmeter cmd</category>
      <category>jmeter 활용</category>
      <author>9&amp;amp;joon</author>
      <guid isPermaLink="true">https://devse.tistory.com/129</guid>
      <comments>https://devse.tistory.com/129#entry129comment</comments>
      <pubDate>Fri, 1 Mar 2024 12:50:39 +0900</pubDate>
    </item>
    <item>
      <title>Redmine issue 일감의 수정 이력(history) 지우기</title>
      <link>https://devse.tistory.com/128</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;개인 프로젝트 or 진행해야할 일들 or 각종 기록을 Redmine으로 관리하고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러다 보니 본문 수정이 작고 가끔은 본문과는 별도로 덧글에도 정보를 기록하게 되는데요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이력과 덧글이 섞여 있으면 보기가 불편해서 아래와 같은 수정 이력 정보를 저거하려 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;309&quot; data-origin-height=&quot;384&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brNDNT/btsAryA5Opj/5QGaV9koeBNmg4PRRZM3uk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brNDNT/btsAryA5Opj/5QGaV9koeBNmg4PRRZM3uk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brNDNT/btsAryA5Opj/5QGaV9koeBNmg4PRRZM3uk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrNDNT%2FbtsAryA5Opj%2F5QGaV9koeBNmg4PRRZM3uk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;219&quot; height=&quot;272&quot; data-origin-width=&quot;309&quot; data-origin-height=&quot;384&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Redmine DB에 sp를 만들어 주신 후 사용하시면 됩니다. 아래 코드는 2달 지낸 이력을 삭제하게 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1700129587844&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;use `redmine_default`;

DROP PROCEDURE IF EXISTS `sp_journals_cleanup`;
DELIMITER $$
CREATE PROCEDURE `sp_journals_cleanup`(
		OUT o_result	int
)
DETERMINISTIC
BEGIN
    /*
        레드마인에서 2달 이상 지난 수정이력은 제거
     */
    set @v_delete_date := date_add(current_timestamp, interval -2 month);   -- 동일한 날짜를 기준으로 제거하기 위한 삭제 기준일
    set o_result = 0;

    delete ta
    from journal_details as ta
    inner join (    select id
                    from journals
                    where journalized_type = 'issue' and notes = '' and created_on &amp;lt; @v_delete_date
    ) as tb on ta.journal_id = tb.id;
    set o_result = o_result + row_count();

    delete from journals
    where journalized_type = 'issue' and notes = '' and created_on &amp;lt; @v_delete_date;

    set o_result = o_result + row_count();

END $$
DELIMITER ;&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Redmine</category>
      <category>Cleanup</category>
      <category>history</category>
      <category>Issue</category>
      <category>redmine</category>
      <category>삭제</category>
      <category>일감</category>
      <category>초기화</category>
      <author>9&amp;amp;joon</author>
      <guid isPermaLink="true">https://devse.tistory.com/128</guid>
      <comments>https://devse.tistory.com/128#entry128comment</comments>
      <pubDate>Thu, 16 Nov 2023 19:18:56 +0900</pubDate>
    </item>
  </channel>
</rss>