mingg IT

[Cron] Cron 표현식 유효성검사 라이브러리 cron-validate VS cron-expression-validator 본문

기타

[Cron] Cron 표현식 유효성검사 라이브러리 cron-validate VS cron-expression-validator

mingg123 2021. 9. 8. 19:55

지난 포스팅에서 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

 

무료로 제공하는데 아마 사용해도 문제없을것 같다. 

 

 

Comments