존 벤틀리의 생각하는 프로그래밍(원서명: Programming Pearls)의 컬럼3에 "폼 레터 프로그래밍"이 있다.
일종의 메시지를 구성하는 템플릿에 대한 이야기이다.
2022년 메시지 발송 관련 개발을 하면서 메시지 템플릿을 어떻게 할지 조사한 적이 있었다.
결과적으로는 "{{ mustache }}" 형태로 변수를 치환하는 Moustache 문법 방식을 채택했다.
비개발자들도 템플릿 문법에 거부감없이 사용할 수 있어야 했던 것이 가장 큰 이유였다.
기존의 마케터 분들이 사용하는 Braze의 Webhook Templates과 유사했기에 추가적인 학습 비용을 낮출 수 있었기 때문이다.
물론, {% Directives %} 를 사용하기도 한다.
구현체로는 Pebble Templates을 사용했다.
Java, Kotlin, JavaScript, Solution 등 템플릿 형태 리스트업
변수 형태 | 구현 엔진 | 부가 기능 |
{{variation}} |
|
|
{{ variation }} {{variation}} 형태도 동작 허용 |
|
|
${variation} #{variation} Thymeleaf 카카오 알림톡 |
|
|
$References #Directives |
Apache Velocity (Java) | Velocity Template Language (VTL) |
<variation> | stringtemplate4 (Java) | |
@variation | Rocker (Java) | bindable 맵 필요 |
Performance
https://github.com/fizzed/template-benchmark
Pebble 관련 보안 취약점
- CVE-2022-37767 관련 2022-09-12 checkmarx에 보고됨
- CVE-2021-29425 관련 MVN repository for 3.1.5
- Apache Commons IO before 2.7 - FileNameUtils.normalize
- 3.2.2 버전에서는 취약점 해소
'Programing > OpenSource' 카테고리의 다른 글
[JobRunr] 지연된 작업 기능으로 문자 메시지 상태 조회하기 (0) | 2024.11.03 |
---|---|
[JobRunr] 시작하기 (0) | 2024.05.05 |
SimpleR2dbcRepository 를 사용한 R2DBC 학습 (0) | 2021.11.14 |
Electron ≥ 12.x : 컨텍스트 분리(Context Isolation) (0) | 2021.11.14 |
Mockito use case (0) | 2021.04.08 |