<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>jong_dev.log</title>
        <link>https://velog.io/</link>
        <description>안녕하세요.</description>
        <lastBuildDate>Tue, 23 May 2023 01:14:41 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>jong_dev.log</title>
            <url>https://velog.velcdn.com/images/jong_dev/profile/d8a99034-724b-4c93-9246-99d33cf7a713/social_profile.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. jong_dev.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/jong_dev" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[postMessage 예시를 알아보자]]></title>
            <link>https://velog.io/@jong_dev/postMessage-%EC%98%88%EC%8B%9C%EB%A5%BC-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90</link>
            <guid>https://velog.io/@jong_dev/postMessage-%EC%98%88%EC%8B%9C%EB%A5%BC-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90</guid>
            <pubDate>Tue, 23 May 2023 01:14:41 GMT</pubDate>
            <description><![CDATA[<p>먼저 inner.html &amp; outer.html 파일을 생성합니다.</p>
<ol>
<li><p>inner.html 파일에서 아래 코드 추가</p>
<head>
<title>내부 iframe 문서</title>
<script type="text/javascript">    /*****************************************************************
        * 이 부분은 안보셔도 됩니다 ^^;;; 로그 편의성을 위해서 작성된 부분
        * ***************************************************************/
        window.cons = {
           log: function(msg) {
               var logEl = $("<li>" + msg + "</li>");
               $("#logArea ul").append(logEl);
           }
       }
       /*****************************************************************
        * 로그 유틸리티 함수 여기까지
        * ***************************************************************/

<pre><code>   $(document).ready(function() {
       // $(&quot;#btnPostMsg&quot;).on(&quot;click&quot;, function(evt) {
           // 원래는 ready 이벤트에서 발생했어야 하겠지만, 편의를 위해 버튼 click 이벤트에 핸들러 할당
           var appParam = {
               EVENT_TYPE: &quot;AssessmentEvent&quot;,
               ACTION_TYPE: &quot;Paused&quot;,
               OBJ_ID : &quot;assessmentEventParam.OBJ_ID&quot;,
               OBJ_NAME : &quot;assessmentEventParam.OBJ_NAME&quot;,
               REF_EXAM_TYPE : &quot;assessmentEventParam.REF_EXAM_TYPE&quot;,
               EDAPP_ID : &quot;commonParam.EDAPP_ID&quot;,
               EDAPP_NAME : &quot;commonParam.EDAPP_NAME&quot;
           }

           // 최상위 페이지가 아닐 경우에만 message 이벤트 발생
           if(window != window.top) {
               var msg = {
                   messageType: &quot;setAssesmentPausedInfo&quot;,
                   param: appParam
               };

               window.parent.postMessage(msg, &quot;*&quot;);

               cons.log(&quot;message 이벤트 발행함 내부&quot;);
           }
       // })
   });</code></pre><p></script></p>
</head>

</li>
</ol>
<body>
    <h2>내부 iframe 문서</h2>
<!--    <button id="btnPostMsg">message 발생</button>-->
    <div id="logArea">
        <ul><li>내부 로그 영역</li></ul>
    </div>
</body>

<ol start="2">
<li><p>outer.html 파일에서 아래 코드 추가</p>
<head>
<title>내부 iframe 문서</title>
<script type="text/javascript">
     /*****************************************************************
      * 이 부분은 안보셔도 됩니다 ^^;;; 로그 편의성을 위해서 작성된 부분
      * ***************************************************************/
      window.cons = {
         log: function() {
             var logMsg = "";
             for(var i = 0; i < arguments.length; i++) {
                 if(typeof arguments[i] == "object") {
                     logMsg += JSON.stringify(arguments[i]);
                 } else {
                     logMsg += arguments[i];
                 }
                 if(i != (arguments.length - 1)) logMsg += " / ";
             }
             $("#logArea ul").append("<li>" + logMsg + "</li>");
         }
     }
     /*****************************************************************
      * 로그 유틸리티 함수 여기까지
      * ***************************************************************/

<pre><code> // 기존에 전달드릴때 예제 코드를 잘못 작성해서 전달드렸습니다.
 // message 이벤트 핸들러에서 받은 데이터는 data 필드로 들어오므로
 // data 값을 가져와서 사용하셔야 합니다 (36라인)
 window.addEventListener(&quot;message&quot;, function(msg) {
     cons.log(&quot;message 이벤트 발생 외부&quot;);
     var receivedData = msg.data;
     if(receivedData &amp;&amp; receivedData.messageType &amp;&amp; receivedData.messageType == &quot;setAssesmentPausedInfo&quot;) {
         cons.log(&quot;message 타입이 존재하며, 타입이 setAssesmentPausedInfo임이 확인됨&quot;);
         cons.log(&quot;수신 데이터&quot;, receivedData.param);
     } else {
         cons.log(&quot;message 타입이 존재하지 않거나, setAssesmentPausedInfo 타입이 아님&quot;);
     }
 });</code></pre><p> </script></p>
</head>

</li>
</ol>
<body>
    <h1>iframe을 감싸고 있는 외부 문서</h1>
    <iframe src="inner.html" width="90%" height="50%"> </iframe>
    <div id="logArea">
        <ul><li>외부 로그 영역</li></ul>
    </div>
</body>]]></description>
        </item>
        <item>
            <title><![CDATA[phpstorm IDE 환경설정 tip]]></title>
            <link>https://velog.io/@jong_dev/phpstorm-IDE-%ED%99%98%EA%B2%BD%EC%84%A4%EC%A0%95-tip</link>
            <guid>https://velog.io/@jong_dev/phpstorm-IDE-%ED%99%98%EA%B2%BD%EC%84%A4%EC%A0%95-tip</guid>
            <pubDate>Mon, 22 May 2023 14:45:05 GMT</pubDate>
            <description><![CDATA[<p>코드 밑에 빨간밑줄 없애는 방법</p>
<ul>
<li>file &gt; settings &gt; ESLint 검색 후 Disable EsLint로 설정</li>
</ul>
<p>누가 코드를 만들었는지 history 기록보는법</p>
<ul>
<li>좌측 넘버링쪽에 마우스 우클릭 후 Annotate 클릭하면 나옴</li>
</ul>
<p>tag 클릭 시 좌측 색깔로 라인 나타나는거 없애는 방법</p>
<ul>
<li>Editor &gt; General &gt; Appearance &gt; Enable HTML/XML tag tree highlighting 체크 해제</li>
</ul>
<p>우측 스크롤바 마우스 hover시 코드 확대되는거 없애는 방법</p>
<ul>
<li>Editor &gt; General &gt; Appearance &gt; Show Code lens on scrollbar hover 체크 해제</li>
</ul>
<p>script 태그부터 태그닫기까지 안에 코드들 배경색 회색으로 되는문제 제거</p>
<ul>
<li>컨트롤+쉬프트+A -&gt; 검색에 script tag 라고 입력 -&gt; vue: Duplicate template/script tag -&gt; OFF</li>
</ul>
<p>git 토큰만료되었을때</p>
<ul>
<li>Setting &gt; Version Control &gt; GitHub &gt; 해당계정 로그인 &gt; 패스워드로 말고 Enter token 으로 받은 토큰값 삽입 후 로그인 후 Apply</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[팝업창 날짜 & 시간을 설정하여 구현해보자]]></title>
            <link>https://velog.io/@jong_dev/%ED%8C%9D%EC%97%85%EC%B0%BD-%EB%82%A0%EC%A7%9C-%EC%8B%9C%EA%B0%84%EC%9D%84-%EC%84%A4%EC%A0%95%ED%95%98%EC%97%AC-%EA%B5%AC%ED%98%84%ED%95%B4%EB%B3%B4%EC%9E%90</link>
            <guid>https://velog.io/@jong_dev/%ED%8C%9D%EC%97%85%EC%B0%BD-%EB%82%A0%EC%A7%9C-%EC%8B%9C%EA%B0%84%EC%9D%84-%EC%84%A4%EC%A0%95%ED%95%98%EC%97%AC-%EA%B5%AC%ED%98%84%ED%95%B4%EB%B3%B4%EC%9E%90</guid>
            <pubDate>Mon, 22 May 2023 14:41:47 GMT</pubDate>
            <description><![CDATA[<?php 
    $start_date_str = '2022-09-10 23:59:59';
    $start_date = strtotime($start_date_str);
    $current_date = strtotime(date('Y-m-d H:i:s'));

    $start_diff = ($current_date - $start_date) / 3600;

    if($start_diff >= 0) { // 이미 날짜가 지났으면 팝업 내림

    } else { ?>
<pre><code>    &lt;?php if (!$_COOKIE[&#39;view_modal5&#39;]) { ?&gt;
    &lt;div class=&#39;pop_layer_modal_new2&#39;&gt;
        &lt;div class=&#39;contents_modal2 contents_modal_1&#39; style=&#39;top:10px;left:350px;&#39;&gt;
            &lt;a href=&#39;javascript:notice_go();&#39; target=&#39;_self&#39;&gt;
                &lt;img src=&#39;https://wtm21.com/images/popup/closed500_20220901-3.jpg&#39; /&gt;
            &lt;/a&gt;
            &lt;a class=&#39;close_x&#39; href=&#39;#&#39;&gt;X&lt;/a&gt;
            &lt;p&gt;
                &lt;input type=&#39;checkbox&#39; id=&#39;check_modal5&#39; /&gt;&amp;nbsp;24시간동안 표시되지 않습니다.
            &lt;/p&gt;
        &lt;/div&gt;
    &lt;/div&gt;
    &lt;?php } ?&gt;</code></pre><?php } ?>]]></description>
        </item>
        <item>
            <title><![CDATA[팝업창을 구현 해보자]]></title>
            <link>https://velog.io/@jong_dev/%ED%8C%9D%EC%97%85%EC%B0%BD%EC%9D%84-%EA%B5%AC%ED%98%84-%ED%95%B4%EB%B3%B4%EC%9E%90</link>
            <guid>https://velog.io/@jong_dev/%ED%8C%9D%EC%97%85%EC%B0%BD%EC%9D%84-%EA%B5%AC%ED%98%84-%ED%95%B4%EB%B3%B4%EC%9E%90</guid>
            <pubDate>Mon, 22 May 2023 14:33:34 GMT</pubDate>
            <description><![CDATA[<p>쿠키를 이용해서 &quot;24시간 띄우지 않기&quot; 기능이 포함된 팝업창 코드 입니다.</p>
<p>var today = new Date();
    let popup = document.querySelectorAll(&#39;[data-expired]&#39;);</p>
<pre><code>for(var i = 0, size = popup.length; i &lt; size; i++) {
    // 문자열을 공백, -, : 으로 나눠서 배열로 저장
    var d = popup[i].getAttribute(&#39;data-expired&#39;).split(/[\s,\-:]+/);
    var expired_date = new Date(d[0], d[1] - 1, d[2], d[3] || 24, d[4] || 0);

    if(today &lt; expired_date) {
        todayOpen(&#39;agreePopup&#39;);
        // popup[i].style.display = &#39;block&#39;;
    } else {
        popup[i].parentElement.removeChild(popup[i]);
    }
}

// 창열기
function todayOpen(winName) {
    var blnCookie = getCookie(winName);
    var obj = eval(&quot;window.&quot; + winName);
    if (!blnCookie) {
        obj.style.display = &quot;block&quot;;
    } else {
        obj.style.display = &quot;none&quot;;
    }
}
// 창닫기
function todayClose(winName, expiredays) {
    setCookie(winName, &quot;expire&quot;, expiredays);
    var obj = eval(&quot;window.&quot; + winName);
    obj.style.display = &quot;none&quot;;
}
// 쿠키 가져오기
function getCookie(name) {
    var nameOfCookie = name + &quot;=&quot;;
    var x = 0;
    while (x &lt;= document.cookie.length) {
        var y = (x + nameOfCookie.length);
        if (document.cookie.substring(x, y) == nameOfCookie) {
        if ((endOfCookie = document.cookie.indexOf(&quot;;&quot;, y)) == -1)
          endOfCookie = document.cookie.length;
        return unescape(document.cookie.substring(y, endOfCookie));
    }
        x = document.cookie.indexOf(&quot; &quot;, x) + 1;
        if (x == 0)
            break;
    }
    return &quot;&quot;;
}

// 24시간 기준 쿠키 설정하기, 만료 후 클릭한 시간까지 쿠키 설정
function setCookie(name, value, expiredays) {
    var todayDate = new Date();
    todayDate.setDate(todayDate.getDate() + expiredays);
    document.cookie = name + &quot;=&quot; + escape(value) + &quot;; path=/; expires=&quot; + todayDate.toGMTString() + &quot;;&quot;
}
$(&#39;.popup&#39;).each(function() {
    let self = this;
    $(this).find(&#39;.popup-close .x-btn&#39;).on(&#39;click&#39;, function() {
        $(self).remove();
    })
});</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[npm 설치 시 에러 해결방법을 알아보자]]></title>
            <link>https://velog.io/@jong_dev/npm-%EC%84%A4%EC%B9%98-%EC%8B%9C-%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0%EB%B0%A9%EB%B2%95%EC%9D%84-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90</link>
            <guid>https://velog.io/@jong_dev/npm-%EC%84%A4%EC%B9%98-%EC%8B%9C-%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0%EB%B0%A9%EB%B2%95%EC%9D%84-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90</guid>
            <pubDate>Mon, 22 May 2023 14:29:28 GMT</pubDate>
            <description><![CDATA[<p>만약 npm install 입력 시 에러가 난다면 아래와 같이 해결해봅시다.</p>
<p>npm cache verify 입력 후 npm install 입력
-&gt; 에러가 계속 발생한다면 npm cache clear --force</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[vue2,js swiper slide 사용법을 알아보자]]></title>
            <link>https://velog.io/@jong_dev/vue2js-swiper-slide-%EC%82%AC%EC%9A%A9%EB%B2%95%EC%9D%84-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90</link>
            <guid>https://velog.io/@jong_dev/vue2js-swiper-slide-%EC%82%AC%EC%9A%A9%EB%B2%95%EC%9D%84-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90</guid>
            <pubDate>Mon, 22 May 2023 14:21:23 GMT</pubDate>
            <description><![CDATA[<p>아래 순서대로 진행을 합니다.</p>
<ol>
<li>npm install <a href="mailto:swiper@5.4.5">swiper@5.4.5</a></li>
<li>npm install swiper <a href="mailto:vue-awesome-swiper@4.1.1">vue-awesome-swiper@4.1.1</a></li>
<li>import { Swiper, SwiperSlide } from &quot;vue-awesome-swiper&quot;;
import &quot;swiper/css/swiper.css&quot;;</li>
<li><swiper class="swiper" :options="swiperOption">
 <swiper-slide>Slide 1</swiper-slide>     
 <swiper-slide>Slide 2</swiper-slide>     
 <swiper-slide>Slide 3</swiper-slide>     
 <swiper-slide>Slide 4</swiper-slide>     
 <swiper-slide>Slide 5</swiper-slide>
 <div class="swiper-pagination" slot="pagination"></div>
 <div class="swiper-button-prev" slot="button-prev"></div>
 <div class="swiper-button-next" slot="button-next"></div>
</swiper>

</li>
</ol>
<p>data() {
        return {
            swiperOption: {
                slidesPerView: 4,
                spaceBetween: 30,
                autoplay : {
                    delay : 3000,
                    disableOnInteraction : false,
                },
                pagination: {
                    el: &#39;.swiper-pagination&#39;,
                    clickable: true
                }
            },
        }
},</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[local 환경 세팅 방법을 알아보자]]></title>
            <link>https://velog.io/@jong_dev/local-%ED%99%98%EA%B2%BD-%EC%84%B8%ED%8C%85-%EB%B0%A9%EB%B2%95%EC%9D%84-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90</link>
            <guid>https://velog.io/@jong_dev/local-%ED%99%98%EA%B2%BD-%EC%84%B8%ED%8C%85-%EB%B0%A9%EB%B2%95%EC%9D%84-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90</guid>
            <pubDate>Mon, 22 May 2023 14:17:56 GMT</pubDate>
            <description><![CDATA[<p>아래 3가지의 설정을 해야합니다.
C:\xampp\apache\conf\extra
=&gt; httpd-vhosts.conf 파일에 내용 추가</p>
<p>C:\xampp\apache\conf
=&gt; httpd.conf 파일에 Listen 포트번호 설정</p>
<p>C:\Windows\System32\drivers\etc
=&gt; 로컬 도메인 설정 (hosts파일)</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[test]]></title>
            <link>https://velog.io/@jong_dev/test-wov6m8s8</link>
            <guid>https://velog.io/@jong_dev/test-wov6m8s8</guid>
            <pubDate>Mon, 22 May 2023 14:14:58 GMT</pubDate>
            <description><![CDATA[<p>test</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[test]]></title>
            <link>https://velog.io/@jong_dev/test-g7o3v6ys</link>
            <guid>https://velog.io/@jong_dev/test-g7o3v6ys</guid>
            <pubDate>Mon, 22 May 2023 14:14:39 GMT</pubDate>
            <description><![CDATA[<p>test</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[test]]></title>
            <link>https://velog.io/@jong_dev/test-e2f3kotm</link>
            <guid>https://velog.io/@jong_dev/test-e2f3kotm</guid>
            <pubDate>Fri, 24 Feb 2023 03:53:02 GMT</pubDate>
            <description><![CDATA[<p>test</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[test]]></title>
            <link>https://velog.io/@jong_dev/test-w00w0mw4</link>
            <guid>https://velog.io/@jong_dev/test-w00w0mw4</guid>
            <pubDate>Fri, 24 Feb 2023 03:48:02 GMT</pubDate>
            <description><![CDATA[<p>test</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[test]]></title>
            <link>https://velog.io/@jong_dev/test-0v1jqdgg</link>
            <guid>https://velog.io/@jong_dev/test-0v1jqdgg</guid>
            <pubDate>Tue, 21 Feb 2023 06:40:30 GMT</pubDate>
            <description><![CDATA[<p>test</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[test]]></title>
            <link>https://velog.io/@jong_dev/test</link>
            <guid>https://velog.io/@jong_dev/test</guid>
            <pubDate>Tue, 21 Feb 2023 06:39:48 GMT</pubDate>
            <description><![CDATA[<p>test</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[바닐라 자바스크립트란]]></title>
            <link>https://velog.io/@jong_dev/%EB%B0%94%EB%8B%90%EB%9D%BC-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%9E%80</link>
            <guid>https://velog.io/@jong_dev/%EB%B0%94%EB%8B%90%EB%9D%BC-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%9E%80</guid>
            <pubDate>Tue, 14 Feb 2023 04:55:55 GMT</pubDate>
            <description><![CDATA[<p>test</p>
]]></description>
        </item>
    </channel>
</rss>