[Cron] Cron 표현식 유효성검사 라이브러리 cron-validate VS cron-expression-validator
지난 포스팅에서 cron 표현식의 유효성을 검사하기위해 cron-validate 라이브러리를 사용했었다.
헌데 문제가 생겼다..
const cronValidate = cron(cronexp, {
preset: "default",
override: {
useSeconds: true,
useBlankDay: true,
},
});
if(!cronResult.isValid()) {
alert("cron 표현식 수정해주세요!")
}
아래와 같이 사용하게되면 0 0/1 * * * ? 1초에 한번 실행과 같은 부분은 커버가 가능하지만
0 0/1 * 1/1 * ? * 과 같이 1분에 한번 실행 표현식에서 isValid() 로 걸리는 것이다..
그러면 0 0/1 * 1/1 * ? * 이걸 맞게 하려면 어캐해야할까 ?
const cronValidate = cron(cronexp, {
preset: "default",
override: {
useYears : true ,
useBlankDay: true,
},
});
아래와 같이 바꾸어야한다. 년도가 ? 이기 때문에 ...
위와 같이 바꾸게되면 0 0/1 * * * ? 가 안된다.
즉 모든 cronValidate를 만들어서 검사하는것은 무리라고 판단했다.
결국 다른 라이브러리를 찾기로 결정.
https://www.npmjs.com/package/cron-expression-validator
cron-expression-validator
Validate cron expressions
www.npmjs.com
보면 cron-validator 보다 다운로드 수가 작다.
가장중요한건 내가원하는 기능을 완벽하게 커버할 수 있냐가 문제이다.
if(!cronValidator.isValidCronExpression(0 0/1 * * * ?)) {
alert("cron 바꿔주세요");
}
통과했다!!
그렇다면 0 0/1 * 1/1 * ? * 은 과연?
통과했다.
아예 cron 표현식이아닌 문자를 입력해보았다. 예를들어 $같은.
alert가 발생했다. (굳)
한가지 마음에 걸리는것은 ISC 라이센스를 사용하는 것이다.
기존에 MIT 라이센스만 사용했었는데..
ISC라이센스는 다음과 같다.
https://www.olis.or.kr/license/Detailselect.do?lId=1074
ISC License
ISC 라이선스는 Internet Systems Consortium(ISC)에 허용된 free Software license 로, ISC에서 개발한 OpenBSD베이스로 개발된 소프트웨어 릴리즈를 위해서 사용되는 라이선스이다.
www.olis.or.kr
무료로 제공하는데 아마 사용해도 문제없을것 같다.