Mysql 이벤트 스케줄러 사용하기

  1. 사용가능한 버전 확인

    • mysql 5.16
    • 이 포스트에서 사용하는 버전: MariaDB 10.2.9
  2. 이벤트 스케줄러 사용하도록 설정

    • option 설정
        MariaDB [(none)]> SET GLOBAL event_scheduler = ON;
        Query OK, 0 rows affected (0.00 sec)
      
    • option 설정 확인
        MariaDB [(none)]> show variables like 'event%';
        +-----------------+-------+
        | Variable_name   | Value |
        +-----------------+-------+
        | event_scheduler | ON    |
        +-----------------+-------+
        1 row in set (0.00 sec)
      
    • mysql 서버 재기동에도 스케줄러 동작하도록 my.cnf 설정 값 추가
        $ cat my.cnf
          [mysqld]
          event_scheduler = ON
      
  3. 이벤트 스케줄러 생성
    • 생성문:
        CREATE EVENT IF NOT EXISTS 이벤트 이름
        ON SCHEDULE
            EVERY 1 {INTERVAL_VALUE}
            STARTS CURRENT_TIMESTAMP
        DO
            {SQL 문 | call 프로시저}
      
    • INTERVAL_VALUE 변수:
      • YEAR , QUARTER , MONTH , DAY , HOUR , MINUTE , WEEK , SECOND , YEAR_MONTH , DAY_HOUR , DAY_MINUTE , DAY_SECOND , HOUR_MINUTE , HOUR_SECOND , MINUTE_SECOND
    • 예제: 매일 datetime 을 비교하여 하루 이상된 데이터를 삭제하는 스케줄러
      CREATE EVENT IF NOT EXISTS delete_row 
      ON SCHEDULE 
        EVERY 1 DAY 
        STARTS CURRENT_TIMESTAMP  
      DO 
        DELETE FROM testdb.testtable where date(ts) <= date(subdate(now(), interval 1 DAY));
      
  4. 이벤트 스케줄러 등록 확인
     MariaDB [(none)]> select EVENT_SCHEMA,EVENT_NAME,INTERVAL_FIELD from information_schema.events;
     +--------------+------------+----------------+
     | EVENT_SCHEMA | EVENT_NAME | INTERVAL_FIELD |
     +--------------+------------+----------------+
     | testdb       | delete_row | DAY            |
     +--------------+------------+----------------+
     1 row in set (0.00 sec)


Posted by 감각적신사
,

Javascript 테스트

개발/jquery 2018. 2. 14. 22:41
  1. qunit 소개

    • 링크
    • javascript 단위테스트 프레임워크 이다
    • javascript 뿐만 아니라 jQuery, jQuery UI, jQuery Mobile 에서도 사용이 가능하다
    • 장점:
      • UI 제공
      • report 제공
  2. qunit 을 이용한 test

    • 샘플을 통한 구조 이해
    •   <!DOCTYPE html>
        <html>
        <head>
          <meta charset="utf-8">
          <meta name="viewport" content="width=device-width">
          <title>QUnit Example</title>
          <link rel="stylesheet" href="https://code.jquery.com/qunit/qunit-2.5.0.css">
        </head>
        <body>
          <div id="qunit"></div>
          <div id="qunit-fixture"></div>
          <script src="https://code.jquery.com/qunit/qunit-2.5.0.js"></script>
          <script src="https://cdn.jsdelivr.net/npm/qunit-reporter-junit@1.1.1/qunit-reporter-junit.min.js"></script>
          <script>
              <!-- TEST CASE -->
            QUnit.test( "hello test", function( assert ) {
              assert.ok( 1 == "1", "Passed!" );
            });
              <!-- TEST REPORT -->
            QUnit.jUnitReport = function(report) {
              if (typeof console !== 'undefined') {
                console.log(report.xml);
              }
            };
          </script>
        </body>
        </html>
      
      • 샘플 html 호출 결과
  3. qunit 와 phantomjs 를 활용한 js test 구성하기

     html 코드에 필요한 JS function test 만 넣어도 테스트에는 문제가 없지만
     CI 서버에 연동하여 자동배포의 한 단계로 추가하고 싶다면 ...
     step.1 test 결과를 남기고
     step.2 결과를 분석해야 한다
    
    • pre-requisites:
        # yum install fontconfig freetype freetype-devel fontconfig-devel libstdc++
      
    • 필요한 패키지 다운로드 및 압축해제
        $ wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
        $ bunzip2 phantomjs-2.1.1-linux-x86_64.tar.bz2
        $ tar xvf phantomjs-2.1.1-linux-x86_64.tar
      
    • 실행 명령어 샘플
        # runner.js 다운로드
        $ wget https://github.com/jonkemp/qunit-phantomjs-runner/blob/master/runner.js
        # test 실행
        $ /{{phantomjs 압축 해제한 폴더}}/bin/phantomjs runner.js {{테스트 할 html 파일}}
      
    • 실행 예제

        $ /{{phantomjs 압축 해제한 폴더}}/bin/phantomjs runner.js QunitTest.html
        <?xml version="1.0" encoding="UTF-8"?>
        <testsuites name="file://{{QunitTest_PATH}}/QunitTest.html" tests="2" failures="0" errors="0" time="0.008">
            <testsuite id="0" name="" hostname="localhost" tests="1" failures="0" errors="0" time="0.004" timestamp="2018-01-31T07:50:38Z">
                <testcase name="hello test" time="0.002" timestamp="2018-01-31T07:50:38Z">
                </testcase>
            </testsuite>
        </testsuites>
      
        Took 8ms to run 2 tests. 2 passed, 0 failed.
        $


'개발 > jquery' 카테고리의 다른 글

Javascript 로 파일 다운로드 구현하기  (0) 2018.01.10
table rowspan 동적 적용  (1) 2017.11.28
Posted by 감각적신사
,

vi 사용하기

개발 2018. 2. 8. 00:26

vi 사용하기

  1. .vimrc 파일 작성

     "syntax 관련 설정"
     syntax on
     syntax enable
     highlight Comment term=bold cterm=bold
    
     "indent 관련 설정"
     set autoindent
     set cindent  "set [autoindent | smartindet | cindent]"
    
     "tab"
     set ts=4 " Tab 너비
     set shiftwidth=4 " 자동 인덴트할 때 너비
    
     "기타"
     set number "set nonumber"
     set title
     set hlsearch "검색어 하이라이팅"
     set ruler "현재 커서 위치 표시"
     set showcmd "(부분적인)명령어를 상태라인에 보여줌"
     set showmatch "매치되는 괄호의 반대쪽을 보여줌"
     set history=1000 "vi 편집기록 기억갯수 .viminfo에 기록"
    
     "vi 편집간 파일선택"
     command! E Explore
    
     " 마지막 수정된 곳으로 이동"
     au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "norm g`\"" | endif
    
  2. vim 파일 사용간 유용한 명령어

    • vim 편집기 내에서 파일 탐색
      • :E
    • 자동정렬:
      • 비쥬얼 모드에서 ggvG=
      • non 비쥬얼 모드에서 gg=G
    • 문자열치환

      • :%s/foo/bar/c
        • 바꿀 때마다 바꾸어도 좋은지 물어보기에 더 안전하다. y(하나치환)/n(하나치환하지 않음)/a(전체치환) 선택가능
      • :%s/\/bar

        • 정확하게 foo에 일치될 때만 치환, fooZZZ 같은 문자열은 치환하지 않음
      • :%s/foo/bar/i

        • 대소문자 구분하지 않고 치환함


'개발' 카테고리의 다른 글

성공적인 Git 브랜치 모델  (0) 2018.10.18
React 튜토리얼  (0) 2018.04.15
React 의 특징  (0) 2017.12.20
Git 입문  (0) 2017.12.17
Docker 기초 - 1  (0) 2017.06.10
Posted by 감각적신사
,