Go

Go

Go dependency(go.mod) 추적하기

~1 min read

제가 최근에 Dependabot alerts 에 확인된 취약점 중 패키지 확인이 안되는 취약점이 있었습니다.

Go에서 Stdin에 대한 테스트 코드 작성하기

1 min read

테스트 코드 작성 중 우리가 예측 가능한 함수 인자 값은 쉽게 체크가 가능하지만, 시스템으로 부터 넘어오는 데이터는 막상 작성하려고 하면 어떻게 해야할지 고민이 되기 시작합니다.

Golang Logrus에서 Channel hook 만들기

1 min read

Logrus는 golang의 아주 좋은 logger 패키지입니다. logrus는 hook을 이용해서 지정된 한번에 여러곳에 로그를 남길 수 있습니다. built-in hook으로는 현재 syslogio.Writer가 있고 저는 channel로 hook을 쓸 일이 있어 간단하게 작성하여 공유해봅니다 :D

Go에서 HTTP gzip response 처리하기

1 min read

최근 dalfox에 독특한 이슈가 제보됬는데(오프라인으로도 한번 제보받은 사항이라 이미 삽질을 좀 헀던 상태였네요) 오늘 이를 해결하고 어떻게 해결했는지 간략하게 공유할까 합니다. 특별한 내용은 아니지만, golang에서 http 기반 개발을 진행할 때 알고 있으면 실수를 예방할 수 있는 부분이죠.

pkg.go.dev에 go 패키지 즉시 업데이트하기

~1 min read

golang으로 개발된 앱은 pkg.go.dev에 저장되며 해당 사이트를 통해 패키지 정보를 볼 수 있고 실제 go get 으로 패키지를 가져올 때 이곳의 latest 버전을 가져오게 됩니다. 그래서 이 사실을 잘 몰랐던 과거의 저는 이런 실수도 했었던 기억이 나네요.

Go에서 아주 큰 JSON 파일을 핸들링하기

2 min read

최근에 시덥지 않은 문제로 구글링하다가 단순하게 해결한 일이 있어서 짧게 글로 공유 해볼까 합니다. 복잡한 문제로 생각해서 오히려 가까이에 있는 답을 놓치고 말았었네요.

Goreleaser에서 M1, Windows ARM64 지원하기

~1 min read

goreleaser의 각각 v0.157.0, v0.175.0 버전에서 M1 macbook, Windows ARM 64 지원이 추가되었습니다. 저도 제가 개발하는 도구에선 M1 지원이 약간 늦은 느낌이 있긴한데요. 관련해서 주의해야할 점들 정리해 둡니다.

Goroutine과 Sync

3 min read

Go 하면 어떤 특징이 떠오르시나요? 구글의 언어, 빠르다 등 전반적인 개념에서 goroutine, 채널 등 디테일한 부분까지 많은 것들이 있을텐데요, 저는 제가 처음 고를 접했을 때 가장 재미있게 봤던 것이 goroutine과 채널이였습니다.

Golang의 nil과 interface nil의 재미있는 특징

1 min read

Null은 일반적으로 존재하지 않는 값 또는 메모리 주소를 의미하며 언어에 따라 null nil nan none undefined 등 여러가지 형태로 표현됩니다. 다만 null이란 개념이 언어마다 특성과 철학, 표현하는 방식에 따라서 달라지기도 하는데요. 오늘은 golang에서의 null인 nil의 특성 하나를 살펴보려고 합니다.

25 Keywords in Go

1 min read

Go supports only 25 keywords. It’s very simple, which has the advantage of a low learning curve. I’ve never posting it while using Go. Let me summarize the meaning of each keyword today.

go-jwt와 golang-jwt/jwt

1 min read

최근에 golang으로 개발한 도구 중 jwt 라이브러리를 사용한 대다수의 프로젝트에서 아래와 같이 Security dependency alert이 나타났습니다.

Go에서 자동으로 테스트 코드 생성하기(with gotests)

3 min read

저는 테스트 코드를 많이 작성하진 않습니다. 아무래도 본업이 보안 엔지니어링이다 보니 현업 개발자처럼 꼼꼼하게 테스트 코드를 작성하고 조금 더 나아가 TDD(Test-Driven Development)를 신경쓰면서 개발할 수 있는 여유가 있는 것도 아니구요.

Bump a go package version

1 min read

My Problem

간혹 go get 으로 제가 만든 도구를 설치 시 구버전(현재는 2버전대인데, 1버전대가..)이 설치되는 이슈가 있었습니다. 또한 pkg.go.dev에도 구버전이 마지막 릴리즈로 있고 변화가 없던 상태였죠.

Go flag에서 custom usage 만들기

2 min read

golang에서 cli 도구를 만들 때 가장 먼저 접하는 도구는 flag입니다. 저 또한 flag로 시작하여 cobra, unfave 등 여러가지 써보다가 결국은 잘 사용하던 cobra를 버리고 flag로 다시 돌아왔습니다. go의 내장형 option parser로 심플하지만, 편의성을 위한 부분들은 많이 적어서 때때로, 직접 오버라이드와 같이 라이브러리의 원본 함수를 수정하여 사용해야하는 경우가 있습니다.

Write Metasploit Module in Golang

2 min read

Metaploit에서 2018년 12월부터 golang module 지원이 시작되었습니다. 저도 잘 모르고 있다가 최근에서야 알게 되었네요.

Update golang 1.10 to 1.13 with update-golang(subfinder install error fix)

~1 min read

SubFinder 설치 중 undefined: os.UserHomeDir , undefined: strings.ReplaceAll 에러가 발생해서 해결 방법 정리해둡니다. 아마.. 현재 일부 피씨에서 설치 시 위와 같은 에러가 발생할텐데요, 원인은 golang 의 버전 문제입니다.

[루비에서 Go로 넘어가기] Revel을 이용해 MVC 웹 구성하기

3 min read

Ruby에서 golang으로 주력 언어를 바꿔가는 중입니다. 이 과정에서 가장 문제가 되는 부분이 웹앱이였습니다. 이미 Rails에 익숙해진터라 대안이 될만한 여러 프레임워크를 찾아봤고, 2가지 생각이 나왔습니다.

Golang 으로 만든 웹 어플리케이션 Heroku에 배포하기

1 min read

요즘 공부도할겸 golang 으로 끄적끄적 만들어보고 있는게 있습니다. 그 중 일부는 웹 환경으로 구성하고 heroku에 띄울 생각인데, 루비처럼 사전에 세팅이 필요한 부분들이 있어서 내용 정리해둡니다.

Vim에서의 개발을 위한 최소한의 plugin 설정

1 min read

매번 느끼지만 글로 작성하지 않은 내용들은 나중에 다시 세팅하거나, 참고해야할 때 참 불편합니다. 꼭 필요할 때 보면 없다죠. 최근에도 vim 세팅을 다시 할일이 있어 하나하나 세팅하고 있는데, 한번쯤은 메모해두면 두고두고 볼 것 같다라는 생각이 들었습니다. 짧게나마 시간 내어서 글 작성해봅니다.

Learning Go Language - Hello world, GoRoutine

2 min read

요즘 Go langage를 배워볼까 합니다. 그래서 아주 천천히 틈날때마다 보고있는데, 조금씩은 정리해서 포스팅해볼까 합니다. 아마 익숙해지면 Ruby와 섞어서 코딩하게 될 것 같네요.