태그 글 보관함: 문제 해결

Golang Postgresql 접속시 jdbc URI 사용할 때 이스케이프

Golang 에서 Postgresql 접속시 익숙한 JDBC URI 방식으로 접속 정보를 쓰고 싶었는데, 패스워드에 특수문자가 있어서 제대로 접속이 안된다. 패스워드의 특수문자는 이스케이프 해서 사용하는 방법을 설명한다.

Go 에서 Postgresql 접속하기

Go 에서 Postgresql 접속하는 방법을 검색하면 DB 접속 정보를 넣는 방법을 아래처럼 쓰고 있다.

위 코드에서는 호스트, 포트를 지정하지 않는데, 기본값인 localhost, 5432를 사용할 때는 지정하지 않아도 된다. 아래 lib/pq 문서를 보면 기본값이 나와있다.

lib/pq 문서 – https://pkg.go.dev/github.com/lib/pq?tab=doc

하지만, 고 어플리케이션을 항상 DB가 있는 서버에서 돌릴 것도 아니고, 호스트랑 포트만 써도 아래처럼 길어지게 된다.

난 간결한 URI 방식이 좋다. 다행히 lib/pq 문서에 보면 지원한단다. 바꿔서 써보자.

필요한 정보만 모아서 쓰니까 알아보기가 쉽다. 이게 잘 돌아가면 좋은데 말이지.
딱 보면 패스워드 부분의 특수문자가 문제가 되게 생겼다. 실제로 돌려보면 아래처럼 에러가 나고…

해결방법은 문제가 되는 패스워드를 이스케이프 처리하면 된다.

이스케이프 처리

아래 특수문자를 퍼센트 인코딩하면 된다.

wikipedia percent encoding
Wikipedia Percent-encoding – https://en.wikipedia.org/wiki/Percent-encoding

이스케이프한 패스워드는 아래처럼 된다.

이걸로는 접속 안된다. 콤마는 이스케이프 안해도 되더라. 콤마는 그대로 둔 아래 코드로 접속에 성공했다.

결론은 파싱에 방해가 되는 특수문자만 이스케이프 처리해 주면 되는듯하다.
 
 
패스워드에 특수문자 넣기 좋아하는 나 같은 사람들이나 생기는 문제라 이 글이 도움될 사람은 별로 없을 것 같은데, 이렇게 써두지 않으면 나중에 내가 또 같은 함정에 걸리게 되니까 포스팅해 둬야한다. ㅋ

여담

자바에서도 같은 문제가 있나해서 해 봤는데 애초에 유저명과 패스워드는 URI 에 포함하지 않고 따로 입력하게 되어 있어서 이스케이프 처리 없이도 잘 접속 되더라.
golang 에 lib/pq 도 같은 방식으로 만들지…
 
 
접속 테스트에 사용한 golang 에서 postgresql 접속해서 select 하는 소스코드
GOLANG POSTGRES 접속해서 필요없는 컬럼은 빼고 가져오기

DBeaver 포터블판 jre를 찾지 못해서 실행 안되는 문제

DBeaver(디비버) 포터블판 jre(자바 경로)를 찾지 못하는 문제를 해결해 보자.

디비버는 이클립스와 같은 플랫폼으로 만들어져 있는데, 이클립스도 요즘은 jre를 포함해서 배포되고 해서 안그렇지만, 예전엔 이렇게 자바 경로를 못찾아서 똑같은 에러가 나고 그랬다.
자바 경로를 제대로 찾지 못할 경우에는 디비버를 실행하면 아래와 같은 에러가 표시 된다.

dbeaver jre error

dbeaver.ini 편집

디비버 디렉토리에 있는 dbeaver.ini 파일을 열어서 -vmargs 바로 윗줄에 jre 나 jdk 의 bin 디렉토리까지의 전체경로를 적어준다.

저장하고, 디비버 실행해 보면 잘 실행될 것이다.

별것도 아닌데 검색해 봐도 잘 나오질 않아서 글을 써 본다.

DB툴로 디비버는 추천

블로그에 사용하는 워드프레스는 mysql계열만 지원하고,
나는 개인적으로 postgresql를 선호해서 여러 디비를 사용할 때 디비버 같은 툴이 아주 편하다.

디비버 단점은 메모리를 많이 먹는다는거.
같은 플랫폼에서 개발된 이클립스도 같은 문제인데 요즘은 컴 성능이 상향평준화 되어서 메모리 많이 먹는건 불평거리가 못되는것 같고, 단지 로딩이 좀 느릴뿐이다.

가벼운걸 원하면 일본 개발현장에선 a5m2라고 하는 툴(정식 명칭이 A5:SQL Mk-2. 길다)을 많이 쓰는데 못생기고 기능이 디비버만큼 많지는 않지만,
딱 필요한 기능은 다 있어서 일할 때는 잘 쓰고 있다.

개인PC에서 사용할때는 컴 사양이 좋다보니 그냥 이쁘고 이것저것 다 되는 디비버가 좋은듯하다.
사실 오래전에 설치만 해두고 안쓰고 있다가 요즘 며칠동안 써 봤는데 일단 이쁘고. 화면 구성이 복잡하긴 한데 메뉴들이 직관적이라 헤매지는 않아서 좋다.
 
 
디비버는 커뮤니티 에디션만 무료다. 인터프라이즈 에디션은 시험버전만 사용가능.
DBeaver 다운로드 페이지 – https://dbeaver.io/download/

크롬 브라우저 호스트 알아내는 중(resolving host) 메시지 표시되며 지연

크롬 등의 브라우저에서 하단에 호스트 알아내는 중이라는 메시지가 표시되면서 웹페이지가 몇초간 지연되다가 열리는 문제를 해결해 보자.

현상

데스크탑을 오랜만에 사용하고 있는데 크롬에서 웹서핑을 할때 가끔 페이지가 느리게 열려서 답답하게 하더라. 잘 살펴보기 왼쪽 하단에 호스트 알아내는 중…이라는 메시지가 표시되면서 페이지 열리는게 지연되고 있었다.

해결 과정

호스트 알아내는 중이라면 Resolving host… DNS 문제인가? 하고 예전에 설정했던 클라우드 플레어 DNS(1.1.1.1)를 전부 해제하고 자동으로 바꾸었다.
원래 LAN 연결이었다가 지금은 USB 무선LAN 어댑터로 연결하고 있었기 때문에 WIFI 연결하고 있는 어댑터의 설정으로 들어가니 안쓰던거라 DNS 설정은 자동으로 되어있었다.
하여튼 공유기의 DNS 설정까지 몽땅 다 바꿔봤지만 여전히 호스트 알아내는 중 메시지는 사라지지 않는다.

다음은 구글DNS(8.8.8.8)을 시도해 봤다.
여전히 안되서, ipv6 의 DNS 서버까지 모두 변경했지만 그대로.

윈도우 커맨드 라인에서 nslookup 을 쳐보니 Default Server 가 Unknown 으로 나오는게 수상하다. 분명 DNS 서버 설정했는데…
네트워크 어댑터 중에 WIFI 가 아닌 이더넷 어댑터의 DNS 설정을 보니 클라우드 플레어DNS 설정이 되어있어서 구글DNS 로 바꿔보니, nslookup에서 Default Server 가 구글DNS 로 변경된다.
이거 왜 쓰지도 않는 유선랜 어댑터의 DNS 설정을 사용하는거야!?

해결 방법

윈도우에서 기본으로 사용하는 DNS 설정이 인터넷 연결이 되어있는 무선랜 어댑터에서 설정한 DNS 가 아니라 사용하지도 않는 유선랜 어댑터(이더넷)에서 설정한 DNS 를 사용하고 있는 사실을 알았다.
여기서 힌트를 얻어서 사용하지 않는 유선랩 어댑터를 사용 안함으로 설정하니 크롬에서 호스트 알아내는 중이라는 메시지가 표시되지 않고, 페이지가 바로바로 열리게 되었다. 만세!

네트워크 연결 설정
유선랜 어댑터(이더넷)을 사용 안함으로 설정한다.

윈도우10 노트북 일본어 키보드에서 Sharp Keys로 한영키 설정

일본어 키보드에서는 오른쪽 ALT 키로 한영 전환을 해야되는데 일본에서 노트북을 사게 되면 이게 없을 경우가 있다. 나는 Sharp Keys 라는 유틸리티로 일본어 키보드의 변환<変換>키를 한영키로 할당해서 쓰고 있는데 키를 재할당(키맵핑)하는 프로그램을 소개한다.

dell inspiron 7472 japanese keyboard
한/영 키로 쓸 오른쪽 ALT 키가 없다…

Sharp Keys 다운로드

아래 둘 중 아무데서나 받으면 되는데, 특별한 이유가 없으면 그냥 개발자 홈페이지에서 ZIP 파일로 받는게 빠르고 편할것이다.
Sharp Keys 개발자 홈페이지 다운로드 – 페이지 하단의 ZIP 링크를 누르면 된다.
MS 스토어 – Sharp Keys 다운로드 – 최종적으로 윈도우의 마소 스토어로 연결된다. (Update:2021/2/3 접속안됨)

ZIP 버전을 다운로드하면 설치는 필요없이 압축 풀고 그냥 파일을 실행하면 된다. 이 프로그램에서 윈도우에 변경을 허락할거냐는 경고창이 뜨니 확인을 눌러주자.

사용법

ADD 버튼 눌러서 키 목록이 뜨는데 왼쪽이 입력할 키보드의 키이고, 오른쪽이 무슨 키 기능을 넣을건지를 선택하는 것이다.
왼쪽 목록 아래에 Type Key 버튼을 누르고 변환<変換>키를 누르면 Unknown: 0x0079(00_79) 가 입력 되는데, 오른쪽 목록에서 Unknown: 0x0072(00_72) 를 선택하면 한영키 기능을 넣게 된다.
한자변환키는 Unknown: 0x0071(00_71) 이다.

Sharp Keys 키 추가

Write to Registry 버튼을 눌러서 레지스트리에 저장하고, 윈도우를 재기동해야 적용된다.

여담

나는 코딩할때 Home, End 키를 많이 쓰는데 펑션키 누르면서 커서키 좌우는 손도 많이 가고 해서, Print Screen키랑 Insert키를 Home, End 키로 할당해서 쓰고 있다.
15인치 노트북이면 풀사이즈 키보드가 많아서 좀 나은데(내가 일할때 쓰는 작업용 노트북은 15인치 숫자키패드도 따로 있는데도 오른쪽 ALT키가 없다), 14인치 이하 노트북에서는 회사마다 키보드 레이아웃이 천차만별이고 펑션키 조합도 가지각색이라 각자 익숙한 키 위치에 맞게 다시 할당해서 쓰면 편리할 것이다.

노트북 구입할 때, 키보드 구성도 상당히 신경써서 살펴보게 되고 구입할때도 영향을 꽤 미치는 부분인데 이런 유틸리티로 재할당이 될거라고 생각했으면 선택의 폭이 좀 더 넓었을것 같다.

이클립스 글자 흐림 듀얼 모니터 등 여러 모니터 사용시

이클립스 뿐만 아니라 윈도우에서 모니터를 여러대 사용할 경우에 글자가 흐릿하게 번지듯이 표시 되는 문제가 있다.
이클립스 같은 경우는 윈도우 설정에 있는 고급 배율 설정은 건드려 봐도 전혀 나아지지 않는다.
그럴 경우에 아래 블로그에서 높은 DPI 설정 변경이란 걸 하면 해결 된다.

윈도우10 고해상도 배율 높였을때 선명도 유지 하는 확실한 방법
출처: https://mastmanban.tistory.com/1019 [세상과 만나는 프로그램 이야기]

내용을 간단하게 요약하면 이클립스 실행파일인 eclipse.exe 파일에서 오른쪽 마우스 버튼을 누르고 속성을 선택, 호환성 탭을 누르고 제일 아래에 있는 ‘높은 DPI 설정 변경’ 버튼을 누르고, ‘높은 DPI 조정 동작을 재정의합니다.’ 에 체크를 하면 된다.
그 아래에 응용 프로그램, 시스템, 시스템(확장) 선택에 따라서도 달라지니 설정해서 이클립스 실행해 보고 글자 번짐이 해결 안되면 여기도 바꿔보면 된다.

개발하다 보면 모니터 두대를 보통 많이 쓰게 되는데, 윈도우에서 모니터 왔다갔다하면서 쓰다보면 이클립스 외에도 글자가 흐리게 표시 되는 경우가 많아서 불편한데 이 문제는 언제나 고쳐줄건지…