<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>LOG.info(&amp;quot;yun's dev&amp;quot;);</title>
    <link>https://exploreryun.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Mon, 24 Aug 2026 00:44:31 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>onlyun</managingEditor>
    <image>
      <title>LOG.info(&amp;quot;yun's dev&amp;quot;);</title>
      <url>https://tistory1.daumcdn.net/tistory/5139290/attach/b6534781ce054144b4e9fe20e3f98318</url>
      <link>https://exploreryun.tistory.com</link>
    </image>
    <item>
      <title>[passwd/visudo]계정 권한?</title>
      <link>https://exploreryun.tistory.com/651</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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 data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. /etc/passwd&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 시스템에 등록된 사용자 계정 정보를 저장하는 파일&lt;/p&gt;
&lt;pre id=&quot;code_1725608280605&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;username:x:1001:1001::/home/username:/bin/bash
ex) soyun:x:1001:1001:soyun:/home/soyun:/bin/bash
# soyun : 사용자 계정 이름. 시스템에 로그인할 때 사용하는 이름
# x : 사용자 비밀번호를 저장하는 부분. 실제 비밀번호는 /etc/shadow에 저장. 보안상 표시.
# 1001:1001 , 사용자ID(UID), 그룹ID(GID)
#soyun, 사용자 설명. 사용자 설명 또는 전체 이름을 기록하는 필드. 계정에 대한 설명이나 이름을 표시
#/home/soyun, 사용자의 홈 디렉토리 경로
#/bin/bash, 사용자가 로그인할 때  기본적으로 실행되는 쉘&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. sudo visudo&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;nbsp;특정&amp;nbsp;사용자나&amp;nbsp;그룹에&amp;nbsp;루트&amp;nbsp;권한을&amp;nbsp;부여하거나&amp;nbsp;제한 &lt;br /&gt;-&amp;nbsp;/etc/sudoers&amp;nbsp;파일을&amp;nbsp;안전하게&amp;nbsp;편집할&amp;nbsp;때&amp;nbsp;사용&lt;/p&gt;
&lt;pre id=&quot;code_1725608314600&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;root    ALL=(ALL:ALL) ALL
%admin  ALL=(ALL) ALL
user1   ALL=(ALL) NOPASSWD: /usr/bin/apt-get #user1은 apt-get 명령어를 비밀번호 입력없이 실행할 수 있음.

soyun   ALL=NOPASSWD:   ALL #soyun은 모든 명령어에 대해 비밀번호를 입력없이 수행할 수 있음.
soyun   ALL=(ALL) NOPASSWD: /bin/systemctl restart mysqld&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Linux</category>
      <author>onlyun</author>
      <guid isPermaLink="true">https://exploreryun.tistory.com/651</guid>
      <comments>https://exploreryun.tistory.com/651#entry651comment</comments>
      <pubDate>Fri, 6 Sep 2024 16:38:43 +0900</pubDate>
    </item>
    <item>
      <title>[리눅스/DISK]사용량 확인 관련</title>
      <link>https://exploreryun.tistory.com/650</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;| 상황&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/root 디렉토리 사용량 체크하기 위해 아래 명령어 실행&lt;/p&gt;
&lt;pre id=&quot;code_1725598662625&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 디렉토리 사용량
df -h

# /root 디렉토리의 하위 1뎁스까지 사용량(G) 표시
du -h --max-depth=1 /&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;종전 대비 /root 디렉토리 사용량(Used) 증가량이&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 data-ke-size=&quot;size16&quot;&gt;예시)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/root 디렉토리 사용량이 50G에서 60G로 증가해서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/root 디렉토리 하위에 마운트된 디렉토리별 용량을 파악(du -h --max-depth=1 /)했는데&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 data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;| 원인&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 삭제 파일이 열려 있는 경우, 공간을 차지할 수 있음&lt;/p&gt;
&lt;pre id=&quot;code_1725598940502&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 삭제 파일 열려 있는지 체크
lsof |grep deleted&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 캐시 파일 확인&lt;/p&gt;
&lt;pre id=&quot;code_1725598980350&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 시스템 캐시 확인하고 정리
sync; echo 3 &amp;gt; /proc/sys/vm/drop_caches&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 하드 링크 파일 확인&lt;/p&gt;
&lt;pre id=&quot;code_1725599028983&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 동일한 파일이 여러 위치에 링크로 존재하는지 체크
	# du ~ 는 중복 체크 안 함
    # df -h는 중복 체크
find / -type f -links +1&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 특정 마운트 포인트 제외하고 조회&lt;/p&gt;
&lt;pre id=&quot;code_1725599062348&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;## 다른 마운트 포인트 제외하여 조회
	# du는 해당 파일 시스템 용량 계산 안 함
	# &amp;gt; df -h는 전체 파일 시스템 용량 확인으로 불일치 발생할 수 있음.
du -h --max-depth=1 --exclude=/data1 --exclude=/data2 /&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 저널링 파일 시스템 확인&lt;/p&gt;
&lt;pre id=&quot;code_1725599121174&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#디스크 공간을 미리 할당하여 메타데이터 관리에 도움
#실제 파일 크기보다 더 많은 디스크 공간을 사용 중일 수 있음 (*특히 로그 파일)
du -sh /var/log&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 중 어느 것인지 파악하여 삭제 필요한 것은 정리.&lt;/p&gt;</description>
      <author>onlyun</author>
      <guid isPermaLink="true">https://exploreryun.tistory.com/650</guid>
      <comments>https://exploreryun.tistory.com/650#entry650comment</comments>
      <pubDate>Fri, 6 Sep 2024 14:05:51 +0900</pubDate>
    </item>
    <item>
      <title>대용량 파일 분할/쪼개기</title>
      <link>https://exploreryun.tistory.com/649</link>
      <description>&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;
&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 data-ke-size=&quot;size16&quot;&gt;1.&amp;nbsp;파일이&amp;nbsp;있는&amp;nbsp;위치로&amp;nbsp;이동 &lt;br /&gt;2.&amp;nbsp;다음&amp;nbsp;명령어&amp;nbsp;입력&amp;nbsp;시,&amp;nbsp;파일&amp;nbsp;분할 &lt;/p&gt;
&lt;pre id=&quot;code_1721346650752&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$i=0; Get-Content .\catalina.out -ReadCount 10000 | %{ $i++; $_ | Out-File output-$i.log; Write-Host $i }&lt;/code&gt;&lt;/pre&gt;</description>
      <author>onlyun</author>
      <guid isPermaLink="true">https://exploreryun.tistory.com/649</guid>
      <comments>https://exploreryun.tistory.com/649#entry649comment</comments>
      <pubDate>Fri, 19 Jul 2024 08:51:13 +0900</pubDate>
    </item>
    <item>
      <title>[spring] ERR_TOO_MANY_REDIRECTS</title>
      <link>https://exploreryun.tistory.com/648</link>
      <description>&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;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;883&quot; data-origin-height=&quot;573&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4NFru/btsItPvP6qK/PKRaf6xnoEl92qm3r31FPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4NFru/btsItPvP6qK/PKRaf6xnoEl92qm3r31FPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4NFru/btsItPvP6qK/PKRaf6xnoEl92qm3r31FPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4NFru%2FbtsItPvP6qK%2FPKRaf6xnoEl92qm3r31FPk%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;883&quot; height=&quot;573&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;883&quot; data-origin-height=&quot;573&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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[ ctrl ] + [ shift ] + [ del ]&amp;nbsp; : 쿠키 삭제 (쿠키 삭제 범위는 선택)&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;</description>
      <category>ERROR/WEB</category>
      <author>onlyun</author>
      <guid isPermaLink="true">https://exploreryun.tistory.com/648</guid>
      <comments>https://exploreryun.tistory.com/648#entry648comment</comments>
      <pubDate>Thu, 11 Jul 2024 11:07:56 +0900</pubDate>
    </item>
    <item>
      <title>[문자열인코딩/base64]</title>
      <link>https://exploreryun.tistory.com/647</link>
      <description>&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;.env 파일에 host, username, password 등의 정보를 저장할 때,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비밀번호에 특수문자가 있는 경우, 제대로 못 불러올 수 있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 base64 인코딩해서 적어줌.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1719302305810&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# base64 인코딩
echo -n 'password!0987' | base64
## 결과
cGFzc3dvcmQhMDk4Nw==

# base64 디코딩
echo -n 'cGFzc3dvcmQhMDk4Nw==' | base64 --decode
## 결과
password!0987

## 참고
# 싱글쿼테이션 사용('') #더블쿼테이션(&quot;&quot;) 사용해도 된다는데, 제대로 인코딩 되지 않음&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Linux</category>
      <author>onlyun</author>
      <guid isPermaLink="true">https://exploreryun.tistory.com/647</guid>
      <comments>https://exploreryun.tistory.com/647#entry647comment</comments>
      <pubDate>Tue, 25 Jun 2024 16:58:35 +0900</pubDate>
    </item>
    <item>
      <title>[html/스마트에디터]&amp;lt;p&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt; 문제</title>
      <link>https://exploreryun.tistory.com/646</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹 에디터로,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스마트에디터2 사용중인데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;글 등록하면, DB에는 &amp;lt;p&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;가 추가되지 않음.&lt;/p&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; 불러오면 &amp;lt;p&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;가 붙음.&lt;/p&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;lt;p&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;가 붙음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방법 1)smarteditor.js 에서,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;p&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/o&amp;gt; 추가하지 않도록 처리 =&amp;gt; 안 됨&lt;/p&gt;
&lt;pre id=&quot;code_1715934332811&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//smarteditor2.js
...
	_addLineBreaker : function(sContent){
		if(this.oApp.sLineBreaker === &quot;BR&quot;){
			return sContent.replace(/\r?\n/g, &quot;&amp;lt;BR&amp;gt;&quot;);
		}
		
		var oContent = new StringBuffer(),
			aContent = sContent.split('\n'), // \n을 기준으로 블럭을 나눈다.
			aContentLng = aContent.length, 
			sTemp = &quot;&quot;;
		
		for (var i = 0; i &amp;lt; aContentLng; i++) {
			sTemp = jindo.$S(aContent[i]).trim().$value();
			if (i === aContentLng -1 &amp;amp;&amp;amp; sTemp === &quot;&quot;) {
				break;
			}
			
			if (sTemp !== null &amp;amp;&amp;amp; sTemp !== &quot;&quot;) {
				oContent.append('&amp;lt;P&amp;gt;');
				oContent.append(aContent[i]);
				oContent.append('&amp;lt;/P&amp;gt;');
			} else {
				oContent.append('&amp;lt;P&amp;gt;&amp;amp;nbsp;&amp;lt;\/P&amp;gt;'); 
                //240517, 아래 내용 주석 처리
				/*if (!jindo.$Agent().navigator().ie) {
					oContent.append('&amp;lt;P&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;/P&amp;gt;');
				} else {
					oContent.append('&amp;lt;P&amp;gt;&amp;amp;nbsp;&amp;lt;\/P&amp;gt;');
				}*/
			}
		}
		
		return oContent.toString();
	},
...&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;방법 2)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;불러올 때, 콘텐츠 clear 처리했는데도 안 됨....&lt;/p&gt;
&lt;pre id=&quot;code_1715934226333&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//smart-editor-helper.js
var SE_HELPER = (function () {
    //240517
    // cleanHTML 함수 정의
    const cleanHTML = function(html) {
        return html.replace(/&amp;lt;p&amp;gt;&amp;lt;br&amp;gt;&amp;lt;\/p&amp;gt;/gi, '');
    };
	// 스마트에디터 로드
    const loadedSmartEditor = function (elId, initContentsValue, callback) {
    // 내부에 추가
    ...
        // 스마트에디터 데이터 get
        const getEditorContentsValue = function (elId) {

            // 초기 셋팅값 설정
            if (!elId || typeof elId !== 'string') {
                elId = DEFAULT_SMART_EDITOR_ID;
            }

            if (!oEditors || !oEditors.length || !oEditors.getById[elId]) {
                alert(' 스마트 에디터가 로드되어있지 않습니다. ');
                return false;
            }

            //240517-content clear
            var content = oEditors.getById[elId].getIR();
            content = cleanHTML(content);  // 내용 정리
            return content;
            //return oEditors.getById[elId].getIR();
        };
     ...
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>ERROR/WEB</category>
      <author>onlyun</author>
      <guid isPermaLink="true">https://exploreryun.tistory.com/646</guid>
      <comments>https://exploreryun.tistory.com/646#entry646comment</comments>
      <pubDate>Fri, 17 May 2024 16:23:31 +0900</pubDate>
    </item>
    <item>
      <title>[chmod]Read/Write/Execute</title>
      <link>https://exploreryun.tistory.com/643</link>
      <description>&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;| chmod&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;pre id=&quot;code_1711983985911&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;chmod [option] [mode] [file]&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- MODE&lt;/p&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;gt;&amp;gt; 파일을 소유한&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;파일 소유자&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;그룹&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;그 외 사용자&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;모든 사용자&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;u&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;g&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;o&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;a&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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;gt;&amp;gt; 권한을&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;추가&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;삭제&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;+&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;-&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;=&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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;gt;&amp;gt; 어떤 권한?&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;읽기&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;쓰기&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;Read&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;Write&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;Execute&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1711984312091&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$chmod u=rw file.txt
#파일소유자에게 읽고 쓸 수 있는 권한 지정&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 파일 권한 확인&lt;/p&gt;
&lt;pre id=&quot;code_1711984751802&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ls -l #ls -al

-rw-r--r-- 1 yun work 01 03 24 00:00 file
# 파일타입
# 파일 소유 사용자 권한, 파일 소유 그룹 권한, 그외 사용자 권한
# 파일 소유자 이름
# 파일 소유 그룹 이름

$ ls -l
# ls 명령 실행 시, 해당 디렉토리의 읽기(r) 권한 있어야 함.
	# 없으면, permission denied 에러 발생
	# x 권한 있어야, 파일의 모든 정보 확인 가능

# 권한
    # 읽기(r, 4) : 디렉토리 내용 읽기
    # 쓰기(w, 2) : 디렉토리 내용 변경
    # 실행(x, 1) : 디렉토리 접근.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Linux</category>
      <author>onlyun</author>
      <guid isPermaLink="true">https://exploreryun.tistory.com/643</guid>
      <comments>https://exploreryun.tistory.com/643#entry643comment</comments>
      <pubDate>Tue, 2 Apr 2024 00:23:41 +0900</pubDate>
    </item>
    <item>
      <title>[cs/server/db]</title>
      <link>https://exploreryun.tistory.com/638</link>
      <description>&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;key_buffer_size = 4096M:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설명: key_buffer_size는 MyISAM 인덱스를 캐시하는 데 사용되는 메모리 버퍼의 크기를 지정합니다.&lt;/li&gt;
&lt;li&gt;이유: MyISAM 엔진에서는 인덱스를 메모리에 캐시하여 검색 속도를 향상시키는 데 사용됩니다. 인덱스는 데이터베이스에서 자주 검색되는 항목이므로 이를 메모리에 적재함으로써 디스크 I/O를 줄이고 성능을 향상시킬 수 있습니다. 따라서 적절한 크기의 버퍼를 할당하여 인덱스 캐싱을 최적화해야 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;read_buffer_size = 8M:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설명: read_buffer_size는 단일 테이블에서 한 번에 읽을 수 있는 데이터의 크기를 지정합니다.&lt;/li&gt;
&lt;li&gt;이유: MySQL 서버는 테이블을 읽을 때 디스크에서 데이터를 읽어오는데, 이 때 읽을 데이터의 크기를 지정하는 것입니다. 큰 크기의 읽기 버퍼를 사용하면 단일 I/O 작업에서 더 많은 데이터를 읽어올 수 있어서 성능이 향상될 수 있습니다. 하지만 너무 큰 크기의 버퍼를 설정하면 메모리를 과도하게 사용할 수 있으므로 적절한 크기를 선택해야 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;sort_buffer_size = 8M:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설명: sort_buffer_size는 정렬 작업을 수행할 때 사용되는 메모리 버퍼의 크기를 지정합니다.&lt;/li&gt;
&lt;li&gt;이유: 정렬은 데이터베이스 작업에서 자주 발생하는 연산 중 하나이며, 정렬을 위해 임시로 메모리에 데이터를 저장해야 합니다. sort_buffer_size를 적절하게 설정하면 디스크 I/O를 줄이고 정렬 속도를 향상시킬 수 있습니다. 그러나 너무 큰 값을 설정하면 메모리 부족으로 인한 성능 저하가 발생할 수 있으므로 주의해야 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;table_open_cache = 5000:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설명: table_open_cache는 데이터베이스에서 열 수 있는 테이블의 최대 개수를 지정합니다.&lt;/li&gt;
&lt;li&gt;이유: MySQL은 각 테이블을 열 때마다 시스템 리소스를 소비합니다. 이러한 리소스 사용을 최소화하기 위해 테이블을 열 때마다 새로운 핸들을 만드는 대신 테이블을 캐시에 저장하여 재사용합니다. 이를 통해 시스템 리소스 사용을 줄이고 성능을 향상시킬 수 있습니다. 그러나 너무 많은 테이블을 열 수 있으면 메모리 사용이 증가하여 다른 프로세스에 영향을 줄 수 있으므로 적절한 값으로 설정해야 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;thread_cache_size = 256:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설명: thread_cache_size는 스레드 캐시의 크기를 지정합니다.&lt;/li&gt;
&lt;li&gt;이유: MySQL은 각 클라이언트 요청에 대해 스레드를 생성하여 처리합니다. 스레드 생성 및 삭제에는 시간과 리소스가 소모되므로 매번 새로운 스레드를 생성하는 것보다 기존에 생성된 스레드를 재사용하는 것이 효율적입니다. 스레드 캐시를 사용하면 스레드 생성 및 삭제에 따른 오버헤드를 줄일 수 있으며, 따라서 성능을 향상시킬 수 있습니다. 그러나 너무 큰 값을 설정하면 메모리 사용이 증가할 수 있으므로 적절한 값으로 설정해야 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;wait_timeout = 28800:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설명: wait_timeout은 클라이언트가 MySQL 서버에 연결된 상태로 대기할 수 있는 시간을 지정합니다.&lt;/li&gt;
&lt;li&gt;이유: 클라이언트가 서버에 연결되어 있을 때 일정 시간 동안 활동이 없으면 MySQL 서버는 연결을 종료합니다. 이를 통해 사용자가 비활성 상태로 있는 연결을 재사용하고, 시스템 리소스를 최적화할 수 있습니다. 기본값은 28800초(8시간)이며, 대부분의 경우 적절한 값으로 설정되어 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;interactive_timeout = 3600:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설명: interactive_timeout은 대화형 연결(예: MySQL 셸)에 대해 대기할 수 있는 시간을 지정합니다.&lt;/li&gt;
&lt;li&gt;이유: MySQL 서버와의 대화가 유지되는 시간을 제어합니다. 대화형 연결은 보통 대기 시간이 짧아야 하므로 이 값을 적절히 설정하여 사용자 경험을 향상시킬 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;connect_timeout = 60:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설명: connect_timeout은 클라이언트가 서버에 연결하는 데 소요될 수 있는 시간을 지정합니다.&lt;/li&gt;
&lt;li&gt;이유: 클라이언트가 MySQL 서버에 연결하는 데 소요되는 시간을 제어합니다. 연결&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
      <author>onlyun</author>
      <guid isPermaLink="true">https://exploreryun.tistory.com/638</guid>
      <comments>https://exploreryun.tistory.com/638#entry638comment</comments>
      <pubDate>Thu, 28 Mar 2024 04:47:33 +0900</pubDate>
    </item>
    <item>
      <title>[240328/데이터 추출]slow.log 로그데이터 정제</title>
      <link>https://exploreryun.tistory.com/637</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;slow.log 파일 내 데이터를&lt;br /&gt;DB에 insert 하고,&lt;br /&gt;다시 결과항목별로 파싱하여 데이터 추출&lt;br /&gt;&amp;nbsp;&lt;br /&gt;| db&lt;br /&gt;- 텍스트 insert 하는 테이블 생성&lt;/p&gt;
&lt;pre class=&quot;sql&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;sql&quot;&gt;&lt;code&gt;CREATE TABLE temp (
	seq INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
	cont VARCHAR(6000) NULL
);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 결과 테이블 생성&lt;/p&gt;
&lt;pre class=&quot;sql&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;sql&quot;&gt;&lt;code&gt;CREATE TABLE `tmp_result` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`rDbTb` VARCHAR(255) NOT NULL DEFAULT '0' COMMENT '쿼리 테이블' COLLATE 'utf8mb3_general_ci',
	`rTime` DATETIME NULL DEFAULT NULL COMMENT '쿼리 로깅된 시간',
	`rUser` VARCHAR(255) NULL DEFAULT NULL COMMENT '쿼리를 실행한 사용자와 호스트' COLLATE 'utf8mb3_general_ci',
	`rThread_id` INT(11) NULL DEFAULT NULL COMMENT '쿼리를 실행하는 스레드의 ID',
	`rSchema` VARCHAR(255) NULL DEFAULT NULL COMMENT '쿼리가 실행되는 데이터베이스 스키마' COLLATE 'utf8mb3_general_ci',
	`rQCHit` VARCHAR(255) NULL DEFAULT NULL COMMENT '쿼리 캐시 히트 여부(no, 캐시에서 해당 쿼리가 찾아지지 않았음)' COLLATE 'utf8mb3_general_ci',
	`queryTime` FLOAT NULL DEFAULT NULL COMMENT '쿼리 실행에 소요된 시간(sec)',
	`toMin` FLOAT NULL DEFAULT NULL COMMENT 'convert to min',
	`toHour` FLOAT NULL DEFAULT NULL COMMENT 'convert to hour',
	`lockTime` FLOAT NULL DEFAULT NULL COMMENT '쿼리 실행 동안 사용된 락(lock) 시간',
	`rowSent` INT(11) NULL DEFAULT NULL COMMENT '쿼리에 의해 반환된 행의 수',
	`rowExamined` BIGINT(20) NULL DEFAULT NULL COMMENT '쿼리가 조사한 행의 수',
	`rowAffected` INT(11) NULL DEFAULT NULL COMMENT '쿼리가 영향을 미친 행의 수',
	`bytesSent` BIGINT(20) NULL DEFAULT NULL COMMENT '쿼리에 의해 반환된 바이트 수',
	`rTimestamp` BIGINT(20) NULL DEFAULT NULL,
	`rQuery` VARCHAR(2000) NULL DEFAULT NULL COLLATE 'utf8mb3_general_ci',
	`originalTxt` VARCHAR(6000) NULL DEFAULT NULL COLLATE 'utf8mb3_general_ci',
	PRIMARY KEY (`id`) USING BTREE
)
COLLATE='utf8mb3_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=141
;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;| log 파일 정제(by 에디터플러스)&lt;br /&gt;- #Time을 기준으로 &quot;줄바꿈&quot; 넣어줌&lt;br /&gt;- #Time 부터 ~ 쿼리 까지 한덩어리로 database insert 하는 쿼리문 생성&lt;/p&gt;
&lt;pre class=&quot;sql&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;sql&quot;&gt;&lt;code&gt;-- 에디더플러스 [ctrl] + [H]
-- 정규식 체크
변경전 -&amp;gt; #Time:
변경후 -&amp;gt; \n#Time:

-- insert 쿼리문 만들기
변경전 -&amp;gt; #Time:
변경후 -&amp;gt; &quot;); \n INSERT INTO temp (cont) value(&quot;

-- 마무리 작업
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-- 맨 처음 &quot;); 삭제
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-- 맨 마지막 &quot;); 추가&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;| 데이터 파싱&lt;br /&gt;데이터를 항목별 파싱, 결과 테이블 INSERT&lt;/p&gt;
&lt;pre class=&quot;sql&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;sql&quot;&gt;&lt;code&gt;INSERT INTO tmp_result 
SELECT
	ROW_NUMBER() OVER () AS num,
	SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(LOWER(s.cont),'from',-1),'where',1),'\n',1),
	TRIM(STR_TO_DATE(SUBSTRING_INDEX(SUBSTRING_INDEX(s.cont, '# Time:',-1), '# User@Host:', 1), '%y%m%d %H:%i:%s')) AS res1,
	TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(s.cont, '# User@Host:',-1), '# Thread_id:', 1)) AS res2,
	CAST(TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(s.cont, '# Thread_id:',-1), 'Schema:', 1)) AS INT) AS res3,
	TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(s.cont, 'Schema:',-1), ' QC_hit:', 1)) AS res4,
	TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(s.cont, 'QC_hit:',-1), '# Query_time:', 1)) AS res5,
	CAST(TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(s.cont, '# Query_time:',-1), 'Lock_time:', 1)) AS FLOAT) AS res6,
	CAST(TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(s.cont, '# Query_time:',-1), 'Lock_time:', 1)) AS FLOAT)/60 AS tomin,
	CAST(TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(s.cont, '# Query_time:',-1), 'Lock_time:', 1)) AS FLOAT)/3600 AS tohour,
	CAST(TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(s.cont, 'Lock_time:',-1), 'Rows_sent:', 1)) AS DOUBLE) AS res7,
	CAST(TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(s.cont, 'Rows_sent:',-1), 'Rows_examined:', 1)) AS INT) AS res8,
	CAST(TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(s.cont, 'Rows_examined:',-1), '# Rows_affected:', 1)) AS INT) AS res9,
	CAST(TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(s.cont, '# Rows_affected:',-1), 'Bytes_sent:', 1)) AS INT) AS res10,
	CAST(TRIM(REPLACE(REGEXP_SUBSTR(s.cont,'Bytes_sent:(\\s*)[0-9$]+'),'Bytes_sent:','')) AS INT) AS res11,
	CAST(TRIM(REPLACE(REGEXP_SUBSTR(s.cont,'SET timestamp=(\\s*)[0-9$]+'),'SET timestamp=','')) AS INT) AS res12,
	TRIM(SUBSTRING_INDEX(REGEXP_REPLACE(s.cont, 'SET timestamp=(\\s*)[0-9$]+;', '!SPLIT!'),'!SPLIT!',-1)) AS tmpQuery,
--	REGEXP_REPLACE(SUBSTRING_INDEX(s.cont, 'Bytes_sent:',-1),'^(\\s*)[0-9$]+','') AS res12,
	s.cont AS  originaltxt
--	SUBSTRING_INDEX(SUBSTRING_INDEX(s.cont, 'Bytes_sent:',-1), '# Thread_id:', 1) AS res11
FROM temp s&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;위 결과로 추출된 결과&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;832&quot; data-origin-height=&quot;399&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cCdUmZ/btsF88jkEbr/DtXHKxvkTkH25B5YcxMtm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cCdUmZ/btsF88jkEbr/DtXHKxvkTkH25B5YcxMtm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cCdUmZ/btsF88jkEbr/DtXHKxvkTkH25B5YcxMtm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCdUmZ%2FbtsF88jkEbr%2FDtXHKxvkTkH25B5YcxMtm0%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;832&quot; height=&quot;399&quot; data-origin-width=&quot;832&quot; data-origin-height=&quot;399&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <author>onlyun</author>
      <guid isPermaLink="true">https://exploreryun.tistory.com/637</guid>
      <comments>https://exploreryun.tistory.com/637#entry637comment</comments>
      <pubDate>Thu, 28 Mar 2024 04:20:06 +0900</pubDate>
    </item>
    <item>
      <title>[vue/]페이지가 안 그려질 때, 개발자도구 console</title>
      <link>https://exploreryun.tistory.com/629</link>
      <description>&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;# 상황&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 그려지던 화면이, 갑자기 안 그려짐.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 이클립스 console 에러 안 찍힘&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 웹 개발자도구에서 에러 찍힘&lt;/p&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;b&gt;# ERR&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;v-else&amp;nbsp;used&amp;nbsp;on&amp;nbsp;element&amp;nbsp;&amp;lt;div&amp;gt;&amp;nbsp;without&amp;nbsp;corresponding&amp;nbsp;v-if.&lt;/p&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;b&gt;# 해결&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;v-else 이전에 v-if가 있어야 함&lt;/p&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;# 상황&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 그려지던 화면이, 갑자기 안 그려짐&lt;/p&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;b&gt;#해결&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1708582945292&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;body&amp;gt;
&amp;lt;!-- 2024.02.22 --&amp;gt; &amp;lt;!-- ★ERR --&amp;gt;
    &amp;lt;div id=&quot;wrap&quot;&amp;gt;
    	&amp;lt;!-- view code --&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;&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;&amp;gt; &amp;lt;body&amp;gt; 태그와 &amp;lt;div&amp;gt; 태그 사이에 주석을 넣은 뒤로, 해당 에러 발생.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 해당 주석 삭제하니까, 페이지 정상적으로 그려짐&lt;/p&gt;</description>
      <category>ERROR/WEB</category>
      <author>onlyun</author>
      <guid isPermaLink="true">https://exploreryun.tistory.com/629</guid>
      <comments>https://exploreryun.tistory.com/629#entry629comment</comments>
      <pubDate>Thu, 22 Feb 2024 15:23:40 +0900</pubDate>
    </item>
  </channel>
</rss>