2020년 10월 6일 화요일

Cent OS 8 도커 사용하기 전 firewalld 설정.

 firewalld 백엔드가 Cent OS 8 에서는 nftables 이고 이것이 도커와 충돌. iptables 로 수정하자.

2020년 6월 15일 월요일

ssh를 통한 X forwarding

서버 측에 다음 패키지 필요

  • mesa-libGL - 없으면 크래쉬
  • mesa-libGLw - 없으면 swrast 에러
  • xorg-x11-xauth

클라이언트 측에 다음 조치 필요
  • .bashrc 에 `export DISPLAY=localhost:0.0` 추가
  • `xauth generate $DISPLAY .` 실행.

2020년 5월 26일 화요일

선호하는 이맥스 설정들


(setq default-input-method "korean-hangul3")
(column-number-mode t)
(show-paren-mode t)  
(setq read-process-output-max (* 16 1024 1024))
(setq gc-cons-threshold most-positive-fixnum)
 

2020년 4월 17일 금요일

emacs dart-mode 설정 구문

(setq dart-server-format-on-save t)
(defun isr-dart-mode-hook ()
  (dart-server)
  (lsp)
  (local-set-key (kbd "M-*") 'pop-tag-mark))
(add-hook 'dart-mode-hook 'isr-dart-mode-hook)

2020년 3월 26일 목요일

gopls 이후의 emacs 설정

gocode는 결국 gopls로 대체. gopls 시대의 emacs 설정은

(defun isr-go-mode-hook ()
  (lsp-deferred)
  (setq lsp-idle-delay 0.500)
  (add-hook 'before-save-hook #'lsp-format-buffer t t)
  (add-hook 'before-save-hook #'lsp-organize-imports t t)
  (local-set-key (kbd "M-*") 'pop-tag-mark)
  (require 'yasnippet)
  (yas-minor-mode)
(hl-todo-mode))
(add-hook 'go-mode-hook 'isr-go-mode-hook)

2019년 10월 9일 수요일

ssh 로컬 터널링 메모

-L port:host:hostport 형태로 쓸 때,


  • port - 로컬에서의 포트
  • host - 이 터널링을 이용할 때 호스트가 접속할 주소
  • hostport - 이 터널링을 이용할 때 호스트가 접속할 포트

ssh -L 80:127.0.0.1:8080

로 터널링을 성립시킨 후
localhost:80 으로 접속하면,
server address 로 접속한 서버가 127.0.0.1:8080으로 접속한다.

2019년 4월 23일 화요일

emacs Go언어 세팅

저는 IDE를 싫어하는 사람은 전혀 아닌데, Go 언어는 CLI 툴이 잘 되어 있어서 emacs로 거의 IDE에 준하는 작업흐름을 세팅할 수가 있습니다. 저는 대략 다음의 기능을 세팅합니다.

  1. 기본적인 신택스 하일라이팅
  2. 코드 포매팅 (저장시에 gofmt 실행)
  3. Go to definition 점프
  4. 실시간 linting
  5. 자동완성
  6. 심볼 하일라이팅

go-mode 신택스 하일라이팅 + 코드 포매팅


go-mode를 깔면 됩니다. 패키지를 깔기 위해서 .emacs 파일에 다음 구절이 포함되어야 합니다.

(require 'package)
(add-to-list 'package-archives
             '("melpa" . "https://melpa.org/packages/"))

go-mode를 설치합니다. 설치한 후 저장시에 자동으로 gofmt가 설정되도록 go-mode-hook에 다음과 같은 내용을 포함되도록 합니다.

(defun isr-go-mode-hook ()
  ...
  ;; Call Gofmt before saving                                                    
  (add-hook 'before-save-hook 'gofmt-before-save)
  ... 
(add-hook 'go-mode-hook 'isr-go-mode-hook)

문서 마지막에 isr-go-mode-hook 전체가 드러나는 예제가 있습니다. 여기서 조각조각 COPY&PASTE 하느라 고생할 필요는 없습니다.

Go to definition 점프, 심볼 하일라이팅, rename


한동안 정의/선언 지점으로 점프하는 백엔드 툴로 godef가 인기 있었습니다. 그러나 지금은 훨씬 강력한 기능을 많이 가진 go-guru에서도 이 기능을 제공하므로 godef를 굳이 깔아야 할 이유는 없다고 생각합니다. 아래는 go-guru로 정의/선언지점으로 점프하는 기능을 설정하는 방법입니다.

go get 으로 go-guru를 설치합니다. 하는 김에 다른 유용한 툴도 설치합니다.

go get -u golang.org/x/tools/cmd/...

emacs에서 go-guru, go-rename 패키지를 설치합니다. 다음의 단축기 설정을 .emacs 파일에 추가합니다. Alt+'.'로 이동, Alt+Shift+*로 되돌아오기입니다. 문서 마지막에 .emacs 파일 전체를 실을 것이므로 여기까지 읽고 따라할 필요는 없습니다.

(defun isr-go-mode-hook ()
  ...
  ;; Godef jump key binding                                                      
  (local-set-key (kbd "M-.") 'go-guru-definition)
  (local-set-key (kbd "M-*") 'pop-tag-mark))
  ;; highlight identifiers
  (go-guru-hl-identifier-mode))
  ...
(add-hook 'go-mode-hook 'isr-go-mode-hook)

flycheck (실시간 문법 체크)


golangci-lint 를 설치합니다.

go get -u github.com/golangci/golangci-lint/cmd/golangci-lint

emacs의 flycheck-golangcli-lint 를 package-install 로 설치합니다. 그 후 아래의 내용을 .emacs에 추가합니다. 역시 아직 따라하지 않아도 됩니다.

(defun isr-go-mode-hook ()
  ...
  ;; flycheck
  (flycheck-mode)
  ...
(add-hook 'go-mode-hook 'isr-go-mode-hook)

compnay-go (자동완성 기능)


백엔드로 gocode를 사용하므로 설치합니다.

go get -u github.com/nsf/gocode

이맥스에서 package-install로 company-go 플러그인을 설치합니다. .emacs에 추가합니다.

(defun isr-go-mode-hook ()
  ...
  (require 'company)
  (require 'company-go)
  (set (make-local-variable 'company-backends) '(company-go))
  (company-mode)
  ...
(add-hook 'go-mode-hook 'isr-go-mode-hook)


전체 .emacs 파일을 모으면 다음과 같습니다.



(require 'package)
(add-to-list 'package-archives
             '("melpa" . "https://www.melpa.org/packages/"))

(defun isr-go-mode-hook ()
  ;; flycheck
  (flycheck-mode)

  ;; Call Gofmt before saving                                                    
  (add-hook 'before-save-hook 'gofmt-before-save)

  ;; Godef jump key binding                                                      
  (local-set-key (kbd "M-.") 'go-guru-definition)
  (local-set-key (kbd "M-*") 'pop-tag-mark)

  ;; company-go
  (require 'company)
  (require 'company-go)
  (set (make-local-variable 'company-backends) '(company-go))
  (company-mode)

  ;; highlight identifiers
  (go-guru-hl-identifier-mode))
(add-hook 'go-mode-hook 'isr-go-mode-hook)