티스토리 에디터 모바일버전 개발 3일차 기록이다.
회사일에 정신없이 쫓기다보니 마지막 commit 이후로 어느새 2달이 지났다. Flutter 자체에 대한 이해는 그닥 어려운 것이 없어서 코드를 보고 금새 다시 기억을 떠올렸는데 Dart 문법이 가물가물하다. 프로그래밍 언어 문법이 다들 거기서 거기라서 대충 이해하는데는 문제없었지만 사용하는 것은 다른 문제다. 정확히 알고 있어야 사용할 수 있는데 그렇지가 못했다. 역시 하루만에 익힌 지식은 금새 날아가버린다. 적어도 3번은 반복해서 공부를 해야 그나마 기억이 조금 남아있는 것 같다.
Post view는 html 로 만들어져 webview로 표시하고 있다. 당시에는 빨리 찾아보느라 flutter_webview_plugin을 사용했는데 flutter에서 공식적으로 제공하는 webview_flutter가 더 좋지 않을까 싶어서 써보려했지만 모듈만 교체하는 것으로는 바로 동작하지 않았다. 또 자세히 알아보기는 귀찮아서 그냥 포기했다.
webview에 html 코드를 넣을때 모바일에 맞게 이미지 조정도 하고 텍스트 스타일도 바꾸려면 레이아웃 템플릿이 하나 필요했다. 템플릿 만드는거야 어렵지 않고 본문을 쉽게 교체하기 위해서 템플릿 엔진을 하나 사용하기로 했다.
dart test 모듈로 테스트 코드도 만들고 dart mustache 모듈로 템플릿도 만들었는데 test코드가 동작을 안한다. 내가 만든 모듈을 찾지를 못했다. 문제를 해결하기 귀찮아서 앱에서 수동으로 테스트하기로 했다. 그런데 앱이 실행이 안된다. 뭐가 문제인지 알 수가 없어서 지금까지 한 일을 되돌리며 원인을 찾기로 했다.
앱이 실행되지 않는 원인은 mustache에 있다는 것을 확인했다. 하지만 뭐가 문제인지는 알지 못했다. 로그도 남지 않았기 때문에 결국 소스코드를 뒤져봐야 한다. 귀찮아서 포기했다. string 이어붙이기로 해결해야겠다고 생각하는 순간. dart string에는 간단한 템플릿 기능이 있다는 것이 생각났다.
var source = ```
<!doctype html>
<html>
<head>
<meta charset='utf-8'>
</head>
<body>${content}</body>
</html>
```
애초에 mustache를 사용할 이유가 없었던 것이다. 그렇게 하려고 했던 mustache, test, webview_flutter 모두 귀찮다는 이유로 포기하고 나니 한 일이 매우 단촐해졌다. 뭔가 약간 내 스스로에게 미안하다.
그나마 한가지 제대로 한 일이 있는데 html2md의 버그리포팅 pr을 날린 것이다. 이걸 한 이유는 너무 핵심적인 기능이기 때문이다. codeblock에 탭대신 fence를 사용하는 것은 대세를 넘어 필수다. 언어를 지정해야하기 때문이다. 언제 머지되서 이걸 사용할 수 있을런지는 모르겠지만 오늘은 여기서 중단한다.