golang sciter Unhandled sciter event case: 32768 문제해결

golang에서 sciter 예제 어플을 테스트하는데, 뷰단의 스크립트에서 네이티브 코드쪽 펑션을 호출하는 코드가 있으면 실행이 안된다.

에러코드. Unhandled sciter event case: 32768

sciter의 golang 바인딩인 go-sciter 문제였고, 깃허브의 이슈란에서 힌트를 얻어서 해결했다. https://github.com/sciter-sdk/go-sciter/issues/239
해결 방법은 go.mod 파일에서 go-sciter 버전을 최신버전으로 지정하면 된다.

go.mod

gcc 버전 바꿔보고 별쇼를 다 했는데 역시 포럼을 잘 봐야한다… ㅠㅠ

golang gui sciter 리뷰? 사용기

sciter-acrylic-dark
이거에 반함…

go로 윈도우 어플을 좀 만들어보려고 이것저것 찾아보다 sciter 를 좀 만져봤는데 우리나라에선 sciter 관련한 글이 전무해서 혹시 찾는 사람이 있을까 해서 글을 남긴다.

sciter란

윈도우, 맥, 리눅스를 지원하는 GUI 툴이고 특징은 가벼운 라이브러리(sciter.dll 파일 한개 7메가)와 지원하는 언어가 많다는 것. (golang, python, rust, c# 등)
뷰쪽은 HTML, CSS를 쓰고 tiscript라는 독자 자바스크립트 같은 스크립트로 뷰단에서 제어를 한다.

나는 완전 투명이나 반투명 윈도우를 지원해서 써 보려 했는데…

golang 바인딩에 뭔가 문제가 있는듯해서 뷰단(html)에서 golang 네이티브 코드쪽 펑션을 호출하는 기능이 에러가 나서 되지를 않더라. 해결방법이 있는지 알아보고 있는데, 일단 안됨. 이거 아마 환경문제인듯하다.
Update:해결했다. golang sciter Unhandled sciter event case: 32768 문제해결

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 툴도 있어서…)

sciter 홈
https://sciter.com/
golang sciter 예제
https://github.com/sciter-sdk/go-sciter-example

룬테라 건틀릿 정복자 달성. 7승 덱코드(럭스 포로덱)

룬테라 건틀릿 정복자 뱃지
별로 멋지진 않은듯…

너프된 인내엘리칼리덱으로 쓴맛보고 버프된 포로덱 한번 만들어서 연습 중이던게 있었는데, 의외로 승률이 좋아서 이걸로 해 봤다가 도전 1회차에 바로 7승했다.
덱코드 CEBQCAQBAMBQCAA2EEVAMAIBBAERAFQZGUBQCAIAGIAQEAIHAMAQCKZOHEAA
포로지지에서 보기

럭스 포로덱인데 초반에 포로랑 포로치기, 브라움으로 버티다가 럭스로 상대 필드 정리해 주면서 간식 먹인 압도 포로로 마무리하는 덱이다.
칼리스타 위주의 덱만 쓰다가 이거 써보니 패가 좀 덜 말리는거 같고 계속 박치기 보다는 이득교환 위주로 해야되서 시간은 좀 더 걸리는 듯.

건틀릿은 탐험모드처럼 1패해도 다시 한번 기회가 있어서 그때 이기면 올라갈 수 있으니 그렇게 어렵지는 않았는데, 마지막 7번째는 단판 승부라 좀 쫄리긴 하더라…
경험치 보너스도 커서 일반 모드보다 이걸로 하는게 나을듯. 매칭만 좀 비슷한 수준으로 붙여주면 좋겠다.

마지막으로 룬테라 팁.
현메타 티어덱은 여기서 가져오면 된다.
https://lor.mobalytics.gg/meta-tier-list

우분투18.04 LTS VPN 와이어가드 Wireguard 설치

우분투 18.04 서버에서 VPN 서버로 와이어가드(Wireguard)를 설치해서 윈도우10 클라이언트로 와이어가드 VPN을 거쳐 인터넷에 접속하는 방법을 설명한다.

VPN 하면 OpenVPN을 많이 쓰는데 OpenVPN 보다 와이어가드가 좋은 이유는
1. OpenVPN 보다 빠름.
2. 코드량이 적어서 공격 당할 곳이 적다. (소스 코드가 4000 라인이라던데)
3. (OpenVPN 보다는) 설치 설정이 간단.

OpenVPN 은 인증 방식이나 암호화 방법을 유저가 설정해서 사용하는데 옵션이 많다보니 잘못 건드릴 경우에는 오히려 보안상 허점이 될 수 있는데, 와이어가드는 안전한 방법 하나를 정해서 사용하다, 문제가 생기면 그걸 바꾸는 방식으로 한단다.

IP 포워딩 설정

아래 파일을 열어서 net.ipv4.ip_forward=1 부분을 주석 해제하고 리부팅한다.

리부팅 후 net.ipv4.ip_forward=1 이 되어있는지 확인

와이어가드 설치 순서

와이어가드 인스톨 가이드대로 진행

저장소 추가. 아래 커맨드 입력 후 도중에 ENTER 키를 누르자.

add-apt-repository 가 없으면 설치

와이어가드 설치

암호키 만들기. 마지막에 출력되는 공개키는 와이어가드 클라이언트 설정에 적어 넣으므로 어딘가에 잠시 보관해 두자.

conf 파일을 만든다.

wg0.conf 파일 내용

Address 는 와이어가드가 네트워크 인터페이스를 wg0 이라는 이름으로 추가하는데 거기서 사용할 IP 주소이다.
오라클 클라우드의 서버에서 10.0.0.x 대는 사용하니까 10.0.1.x 대를 사용해야 한다.
10.0.0.1로 지정했다가 VPN 접속을 통해서 인터넷이 연결 안되서 한참 헤맸다. 꼭 안쓰는 비어있는 IP 주소 대역을 지정해야 된다.

SaveConfig 는 와이어가드 실행, 종료시 이 conf 파일에 사용한 설정을 저장한다. false 로 해도 된다.
PostUp, PostDown 은 와이어가드 실행, 종료시 실행할 커맨드이다. ens3 은 네트워크 인터페이스 이름이므로 ifconfig 커맨드로 확인해서 바꾸자.
ListenPort 는 서버의 접속할 UDP 포트번호인데 OpenVPN 포트와 같은걸로 지정했다. (오라클 클라우드 서큐리티 리스트에 1194 포트를 이미 열어둬서…)

PublicKey 에는 클라이언트에서 만든 공개키를 넣는다.
AllowdIPs 는 클라이언트의 IP 대역을 지정한다.

iptable 에 udp 포트도 열어주고…

와이어가드를 conf 파일을 지정해서 기동하자.

한번 conf 파일 지정해서 기동했으면 다음부터는 conf 파일 지정 없이 기동할 수 있다.

와이어가드를 끌때는

와이어가드 윈도우10 클라이언트 설정

윈도우즈용으로 받으면 된다. 4메가 밖에 안한다.
다운로드 – https://www.wireguard.com/install/

1. 설치 후에 실행.
2. 실행 후 화면에서 왼쪽 아래 터널추가 버튼을 눌러서, 빈 터널을 추가를 선택.
3. 이름은 적당히 넣으면 되고, 공개키 부분을 복사해서 wg0.conf 의 [Peer] 부분에 있던 PublicKey 에 넣는다.
4. 아래 설정을 쓰는 곳에 아래 내용을 입력하고 저장한다.

PrivateKey 는 클라이언트의 개인키. 그대로 둔다.
Address 는 클라이언트가 사용할 IP (대역이 아니니 /32 로 지정)
DNS 는 DNS 서버. 1.1.1.1은 클라우드플레어의 DNS 주소이고 구글은 8.8.8.8. 취향따라 쓰자. (내 경우에는 이걸 지정안하면 인터넷 접속이 안된다)
PublicKey 에는 서버의 공개키를 적어 넣는다.
AllowdIPs 는 클라이언트에서 VPN 서버를 경유할 IP 대역이다. 0.0.0.0/0 은 모든 IP를 VPN 서버를 경유해서 접속하겠다는 설정이다.
Endpoint 는 와이어가드 서버의 IP 주소와 포트번호를 적는다.

설정은 이게 끝이다. VPN 서버에 접속하고, IP가 서버의 IP로 바뀌었는지 확인한다.
IP 확인 사이트 – https://www.whatsmyip.org/

우분투 서버 20.04 LTS Postgresql12 설치와 설정

우분투 서버 20.04 LTS 에서 Postgresql 의 최신 버전인 Postgresql12 를 설치하는 방법을 설명한다.

사실 공식 가이드대로 하면 별 문제는 없다.
공식 인스톨 가이드 – https://www.postgresql.org/download/linux/ubuntu/

pgdg.list 파일을 만들고 nano 편집기로 열자.

pgdg.list 파일에 아래 내용을 넣고 저장하자. nano 에디터에서 저장은 Ctrl+O, 닫기는 Ctrl+X 이다.

아래 커맨드를 차례대로 실행하면 설치까지 끝난다.

아래 글에서 유저 추가와 외부에서 접속하는 설정을 가져왔다.
관련글: Postgresql 12 버젼을 우분투 18.04 에 설치 설정

유저 추가

아래 커맨드 중 elmitash 부분을 사용하고 싶은 아이디로 바꿀것.
postgres 유저로 바꾼 후, 새로운 유저를 추가
패스워드를 두번 입력

y를 입력해 관리자 권한을 준다

접속 테스트

외부 접속

postgresql.conf 파일을 수정

아래 부분을 찾아 주석 해제하고 localhost 를 * 로 바꾼다. 특정 IP에서만 접속할 경우엔 IP 주소를 쓰면 된다.

pg_hba.conf 파일을 수정

접속 인증을 할 IP 범위를 설정하기 위해서 아래 내용을 추가한다. 내부 네트웍일 경우 아래 내용에서 아이피 정도만 바꾸면 될듯.

설정을 마쳤으면 Postgresql 서비스 재시작

 
 
서버 시간(타임존)도 안맞추고 설치했다가 시간이 안맞아서 보니 타임존 설정이 잘못 되어 있었다.
아래 형식으로 지역에 맞는 걸로 DB 쿼리를 날리면 된다.