전체 글
golang으로 signal 처리하기
golang으로 console app을 개발하다 보면 signal에 대한 처리가 필요한 경우가 있다. 예를 들어 동작 중인 console app을 CTRL+C 를 강제 종료하는 경우이다. 이런 경우에 interrupt를 발생시켜 종료하는 인데, interrupt에 대한 signal를 처리하여 app에서 필요한 처리를 마치고 종료할 수가 있다. 다음 예제는 모든 signal을 수신하는 코드이다. code를 실행한 상태에서 CTRL+C를 이용하여 강제 종료를 시키면, 아래와 같이 console에 signal 로그가 출력된다. Got signal: interrupt 하지만, kill PID, kill -SIGABRT PID를 이용하여 강제 종료를 하면, 해당 signal를 처리하지 못한다. 이런 부분을 처리하..
golang으로 Windows Registry에 등록된 NetCfgInstanceId를 얻는 방법
Windows Registry에 등록된 NetCfgInstanceId를 획득하는 방법을 구현해 본다. Windows는 Registry에 디바이스 정보를 등록할 때, 미리 정해진 GUID 값에 맞게 등록이 된다. CDROM: 4D36E965-E325–11CE-BFC1–08002BE10318 Keyboard: 4D36E96B-E325–11CE-BFC1–08002BE10318 Modem: 4D36E96D-E325–11CE-BFC1–08002BE10318 Mouse: 4D36E96F-E325–11CE-BFC1–08002BE10318 Net: 4D36E972-E325–11CE-BFC1–08002BE10318 이 중에서 Net 클래스의 GUID 값을 Key로 사용한다. SYSTEM\CurrentControlSet\..
golang은 정말 빠른걸까?
golang은 컴파일된 바이너리로 실행되기 때문에 java처럼 가상 머신에서 동작하는 언어보다 당연히 빠를 거라고 생각을 했다. 그런데 얼마전 stackoverflow에 java와 golang의 정렬을 비교했는데, golang이 느리다는 것이다. https://stackoverflow.com/questions/55263220/why-is-my-go-array-sorting-code-much-slower-than-java?fbclid=IwAR36BAYDzjwIRz9huWINmufbTeXZKFlz3OQKNXDAbsoscgQbGzATU5ckwC0 Why is my Go array sorting code much slower than Java? After migrating one of my computing h..
lurca를 이용한 어플리케이션 만들기
Visual Studio Code, Atom은 Electron(https://electronjs.org/)을 이용하여 개발된 Web App이다. Electron은 Javascript, CSS, HTML을 이용하여 크로스 플랫폼 App을 만들 수 있는 framework이다. Go를 이용하여 Electron처럼 Web App을 만들 수 있는 라이브러리가 있다. 바로 lorca(http://github.com/zserge/lorca)이다. OS 환경에 상관없이 좀 더 유연하게 App을 개발할 수 있는 장점이 있다. 그런데 Electron에 비해서 아직 부족한 점이 많다. HTML에서 Form을 Submit에 대한 처리도 되지 않는다. 만약 Form에 있는 값을 go에서 구하려면 Eval()을 이용하여 Java..
Spring Boot에서 JSP 사용하기
Spring Boot에서 JSP를 사용하는 방법에 대해 정리한다. Spring Boot 환경에서 JSP는 Pivotal에서 추천하는 방법이 아니다. Thymeleaft와 같은 서버 렌더링 엔진을 추천한다. JSP Limitations When running a Spring Boot application that uses an embedded servlet container (and is packaged as an executable archive), there are some limitations in the JSP support. - With Jetty and Tomcat, it should work if you use war packaging. An executable war will work whe..
golang으로 console 환경에서 UI 처리하기
console 환경에서 GUI 처럼 구성하는 것을 TUI라고 한다. 아래의 예제처럼 console 환경에서도 다양한 처리가 가능한다. golang으로 단순한 console을 넘어서는 application을 위해서는 이런 TUI 가 필요한데, 많이 사용되는 라이브러리로 termbox(https://github.com/nsf/termbox-go)가 있다.
Driver does not support get/set network timeout for connections
Spring Boot 1.5.x 기반으로 만들어진 프로젝트를 인수인계 받게 되었습니다. 일단 인수인계 받은 프로젝트를 실행해보니 아래와 같은 에러 메세지가 출력됩니다. INFO PoolBase[localhost-startStop-1] — HikariPool-1 — Driver does not support get/set network timeout for connections. (oracle.jdbc.driver.T4CConnection.getNetworkTimeout(I)) 로그 레벨은 INFO 라면 문제는 없지만 에러 문제를 찾아봤습니다. Dev Environment 개발환경은 DB, ojdbc 동일한 Patch 버전을 사용하고 있습니다. Spring Boot 1.5 Oracle 11g 11.2.04..