2016년 11월 17일 목요일

[SpRiNg] Scheduler - cron


출처 클릭


@Component("scheduler")
public class SchedulerController{

    @Scheduled(cron="*/10 * * * * *") 
    public void schedulerTest1(){
        System.out.println("10초 마다 실행 되는 스케쥴러 입니다.");
    }


    @Scheduled(cron="*/20 * * * * *") 
    public void schedulerTest2(){
        System.out.println("20초 마다 실행 되는 스케쥴러 입니다.");
    }
}


기존에 작성된 표현 방식이 잘못된 것으로 판단된다. 아래의 링크를 확인해 볼 것.

https://docs.spring.io/autorepo/docs/spring-framework/5.0.x/javadoc-api/org/springframework/scheduling/annotation/Scheduled.html#cron--





스케쥴러 cron 양식

초 0-59 , - * /
분 0-59 , - * /
시 0-23 , - * /
일 1-31 , - * ? / L W
월 1-12 or JAN-DEC , - * /
요일 1-7 or SUN-SAT , - * ? / L #
년(옵션) 1970-2099 , - * /
* : 모든 값
? : 특정 값 없음
- : 범위 지정에 사용
, : 여러 값 지정 구분에 사용
/ : 초기값과 증가치 설정에 사용
L : 지정할 수 있는 범위의 마지막 값 -> 안되는듯(For input string: "L" 에러 발생)
W : 월~금요일 또는 가장 가까운 월/금요일
# : 몇 번째 무슨 요일 2#1 => 첫 번째 월요일

예제) Expression Meaning
초 분 시 일 월 주(년)
"0 0 12 * * ?" : 아무 요일, 매월, 매일 12:00:00
"0 15 10 ? * *" : 모든 요일, 매월, 아무 날이나 10:15:00
"0 15 10 * * ?" : 아무 요일, 매월, 매일 10:15:00
"0 15 10 * * ? *" : 모든 연도, 아무 요일, 매월, 매일 10:15
"0 15 10 * * ? : 2005" 2005년 아무 요일이나 매월, 매일 10:15
"0 * 14 * * ?" : 아무 요일, 매월, 매일, 14시 매분 0초
"0 0/5 14 * * ?" : 아무 요일, 매월, 매일, 14시 매 5분마다 0초
"0 0/5 14,18 * * ?" : 아무 요일, 매월, 매일, 14시, 18시 매 5분마다 0초
"0 0-5 14 * * ?" : 아무 요일, 매월, 매일, 14:00 부터 매 14:05까지 매 분 0초
"0 10,44 14 ? 3 WED" : 3월의 매 주 수요일, 아무 날짜나 14:10:00, 14:44:00
"0 15 10 ? * MON-FRI" : 월~금, 매월, 아무 날이나 10:15:00
"0 15 10 15 * ?" : 아무 요일, 매월 15일 10:15:00
"0 15 10 L * ?" : 아무 요일, 매월 마지막 날 10:15:00
"0 15 10 ? * 6L" : 매월 마지막 금요일 아무 날이나 10:15:00
"0 15 10 ? * 6L 2002-2005" : 2002년부터 2005년까지 매월 마지막 금요일 아무 날이나 10:15:00
"0 15 10 ? * 6#3" : 매월 3번째 금요일 아무 날이나 10:15:00

2016년 11월 8일 화요일

[EtC] CAL69 Type D




사진을 클릭 하시면 크게 보실 수 있습니다.




온라인 쇼핑몰에서 구입한지 5일만에 커다란 상자에 썰렁하게(?) 도착 했습니다.




뒷면에 설명서도 읽어 보고...




앞면은 이렇게 생겼습니다.




꺼내 보았습니다. 단순한 구성 입니다. 외국인이 칼이라는거 모를까봐 영어로 칼 이라고 써 놨네요.




우선 나이프의 앞면 입니다.




뒷면에는 벨트에 고정 할 수 있는 클립이 있습니다. 




펼쳤을때 사진 입니다. 사진을 돌린다는게 깜박 했네요.




엄지 손가락 부분이 나이프를 펼쳤을때 고정 되는 부분 입니다.

안쪽으로 살짝 눌러 주면 나이프를 접을 수 있습니다.

스프링 없이 나이프를 고정 하여 내구성 면에서 좋은 점수를 주고 싶습니다.






약간 두꺼운 종이를 썰어 보았습니다.

종이를 써는 용도는 아니라서 그런지 잘 썰리는 편은 아니었습니다.

그래도 아웃도어에서 간단히 음식을 써는데는 문제 없을 것으로 판단 됩니다.




전체 길이는 위의 사진과 같습니다.




나이프의 날 모양은 사진과 같습니다.



무게감이나 나이프의 모양, 내구성 등 전체적으로 아웃도어용으로 손색이 없습니다.

녹이 잘 안스는 재질이라고 하는데, 그건 좀더 사용해 봐야 알 거 같습니다.

가격도 1만원 중반대로 나쁜편은 아니었습니다.


2016년 11월 3일 목요일

[C++] Hello World

main.cpp 예제
#include 
#include     /* getpid() 를 사용하기 위해 필요 */
#include     /* rand() 사용하기 위해 필요 */
#include 

#include "libs/testClass.h"  /* 사용자 정의 클래스 */

using namespace std;

/* prototype */
void sayHello(string msg);  /* 테스트용 메서드 */
string sayHello2(string msg); /* 테스트용 메서드2 */
int getRandInt(int maxNum);  /* 랜덤한 숫자를 얻어내기 위한 메서드 */

int main() {
 cout << "PID : " << getpid() << " ==> Hello World!!!" << endl; // prints !!!Hello World!!!

 sayHello("홍길동");
 cout << sayHello2("홍길순") << endl;
 cout << "RAND NUM : " << getRandInt(64) << endl;

 cout << "=====================================" << endl;

 testClass tc = testClass();
 cout << tc.iSay("ho~") << endl;
 cout << tc.youSay("hu~~") << endl;

 return 0;
}

/* 테스트용 메서드 */
void sayHello(string msg){
 cout << msg + "님, 안녕하세요?" << endl;
}

/* 테스트용 메서드2 */
string sayHello2(string msg){
 return msg + "님, 안녕하세요?";
}

/* 랜덤한 숫자를 얻어내기 위한 메서드 */
int getRandInt(int maxNum){
 srand(time(NULL));
 return rand() % maxNum +1;
}
testClass.h 예제
#ifndef TESTCLASS_H_
#define TESTCLASS_H_

#include 
using namespace std;

class testClass {
public:
 testClass();    /* 생성자 */
 virtual ~testClass();  /* 소멸자 */

 string iSay(string msg); /* 내가 말하는 메서드 */
 string youSay(string msg); /* 네가 말하기 메서드 */
};

#endif
testClass.cpp 예제
#include "testClass.h"

/* 생성자 */
testClass::testClass() {
 // TODO Auto-generated constructor stub
 cout << "생성자 호출 됨" << endl;
}

/* 소멸자 */
testClass::~testClass() {
 // TODO Auto-generated destructor stub
 cout << "소멸자 호출 됨" << endl;
}

/* 내가 말하는 메서드 */
string testClass::iSay(string msg){
 return "i say " + msg;
}

/* 네가 말하는 메서드 */
string testClass::youSay(string msg){
 return "you say " + msg;
}