go로 윈도우 어플을 좀 만들어보려고 이것저것 찾아보다 sciter 를 좀 만져봤는데 우리나라에선 sciter 관련한 글이 전무해서 혹시 찾는 사람이 있을까 해서 글을 남긴다.
sciter란
윈도우, 맥, 리눅스를 지원하는 GUI 툴이고 특징은 가벼운 라이브러리(sciter.dll 파일 한개 7메가)와 지원하는 언어가 많다는 것. (golang, python, rust, c# 등)
뷰쪽은 HTML, CSS를 쓰고 tiscript라는 독자 자바스크립트 같은 스크립트로 뷰단에서 제어를 한다.
sciter 에 대해서 여러가지 검색해보고 실제 돌려보고 알아낸 정보를 좀 써 두겠다.
1. 라이센스는 비상용/상용 관계없이 무료인데, 실행에 필요한 sciter.dll 파일을 정적링크=실행 파일 내부에 포함시키기 위해서는 돈을 내야한다. 제일 싼 라이센스가 310달러/첫해, 120달러/매년, 윈도우만 가능.
2. 실행파일 배포시에는 sciter.dll을 같은 폴더에 넣어야 되는듯.
3. tiscript 라는 독자 스크립트를 배워야하는게 좀 걸림. 대신 html/css 를 쓰니까 이부분에 러닝코스트는 없으니 상쇄되려나?
4. html/css 를 뷰에서 사용하지만 GUI에서 html 티는 별로 안난다. 윈도우에서 보기에 촌스럽거나하지 않고, 반투명 윈도우를 사용하는 순간 세련됨이 철철 흘러넘친다. 너무 예쁘다.
5. 개발자가 답변을 너무 잘해준다. 대신 코딩도 해주더라 ㅋ
6. 기본적인 제어는 뷰쪽에서 tiscript로 하는 느낌이고 네이티브 코드쪽은 보조적인 느낌이다. 서로간 메소드 호출이 가능해서 맘대로 할 수 있지만.
7. 컴파일이나 실행 속도도 빠른거 같고, vscode에서 golang 으로 실행도 잘 된다. (이거 안되는 gui 툴도 있어서…)
golang 에서 데이터베이스의 테이블 데이터를 가져올 때, Scan을 사용하면서 작성한 쿼리 결과의 컬럼 수 만큼 변수를 지정해서 가져와야 하는데,
필요없는 컬럼(당장 쓸일이 없지만, 혹시 몰라 넣어두는 작성일이나 갱신일 같은 컬럼)의 데이터는 빼고 가져오는 방법이 있어서 여기에 올려둔다.
필요한 컬럼만 쿼리하면 되는데 왜 이런걸 쓰냐…할 수도 있는데,
컬럼 수가 많으면 select * 으로 해버리는게 편하고, 컬럼 이름 일일이 쓰는게 귀찮기도 하니까 그렇다.
바로 테스트할 수 있도록 소스코드를 다 올리지만, Scan 부분과 TrashScanner 만 보면 된다.