-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
9116c1d
commit e4fcfb6
Showing
2 changed files
with
151 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,150 @@ | ||
# 2020-08 | ||
|
||
## 목차 | ||
|
||
- [Go 새소식](#go-새소식) | ||
- [Go 릴리스 관련](#go-릴리스-관련) | ||
- [새로운 프로젝트 & 릴리스](#새로운-프로젝트--릴리스) | ||
- [튜토리얼 & 가이드](#튜토리얼--가이드) | ||
- [기술글 & 경험담 & 개선기](#기술글--경험담--개선기) | ||
- [읽을거리](#읽을거리) | ||
|
||
## Go 새소식 | ||
|
||
### [Go 팀은 제네릭을 어떻게 사용하고 있을까](https://github.com/golang/go/tree/dev.go2go/src/cmd/go2go/testdata/go2path/src) | ||
|
||
Go 팀이 제네릭을 사용하여 그래프, 맵, 리스트 등을 구현한 예시 코드입니다. | ||
|
||
### [제네릭 디자인에 대한 앞으로의 진행 방향](https://groups.google.com/g/golang-nuts/c/iAD0NBz3DYw/m/VcXSK55XAwAJ) | ||
|
||
제네릭 개발의 핵심 멤버인 Ian Lance Taylor가 제네릭 디자인에 대한 앞으로의 진행 방향을 공유했습니다. 타입 파라미터에서의 `type` 키워드는 제거 되었고, 제네릭 표기법으론 대괄호를 사용하기로 결정했습니다. 더 자세한 내용은 위 링크에서 확인하실 수 있습니다. | ||
|
||
## Go 릴리스 관련 | ||
|
||
### [Go 1.15 Release Notes](https://golang.org/doc/go1.15) | ||
|
||
Go 1.15가 출시 되었습니다. 이번 릴리즈에는 [링커에 대한 많은 개선](https://golang.org/doc/go1.15#linker)과 [높은 코어 수에서 작은 개체의 할당 개선](https://golang.org/doc/go1.15#runtime), [X.509 CommonName](https://golang.org/doc/go1.15#commonname)에 대한 지원 중단이 포함돼 있습니다. 또한, GOPROXY는 이제 오류를 반환하는 프록시를 건너뛸 수 있으며, 타임존 데이터베이스를 프로그램에 포함시킬 수 있도록 하는 [time/tzdata](https://golang.org/doc/go1.15#time/tzdata) 패키지가 추가되었습니다. | ||
|
||
## 새로운 프로젝트 & 릴리스 | ||
|
||
### [willscott/go-nfs: NFSv3 서버 구현체](https://github.com/willscott/go-nfs) | ||
|
||
Golang으로 NFSv3 프로토콜을 구현하여 네트워크 파일 서버 프로젝트 입니다. | ||
|
||
### [vartanbeno/go-reddit: Redit API 사용을 위한 Go 라이브러리](https://github.com/vartanbeno/go-reddit) | ||
|
||
Reddit API를 쉽게 사용할 수 있도록 만든 비공식 클라이언트 라이브러리 입니다. | ||
|
||
### [JohannesKaufmann/html-to-markdown: HTML을 Markdown으로!](https://github.com/JohannesKaufmann/html-to-markdown) | ||
|
||
HTML을 Markdown으로 변환하는 프로젝트의 v1.2.0가 릴리즈 되었습니다. | ||
|
||
### [cockroachdb/errors: 네트워크 이식성을 갖춘 에러 처리 라이브러리](https://github.com/cockroachdb/errors) | ||
|
||
`github.com/pkg/errors`, `errors` 패키지를 쉽게 대체할 수 있고, `errors.Is()`를 통해 크로스 네트워크 에러 처리를 가능케 하는 라이브러리 입니다. 이 외에도 분산 환경에서 에러를 처리하기 위한 강력한 기능을 포함하고 있습니다. | ||
|
||
### [openservicemesh/osm: 가볍고 확장가능한 클라우드 네이티브 서비스 메쉬](https://github.com/openservicemesh/osm) | ||
|
||
 | ||
|
||
OSM(Open Service Meshs)는 쿠버네티스 위에서 동작하는, 가볍고 확장성있는 서비스 메쉬 프로젝트 입니다. CNCF Envoy를 사용하여 [Service Mesh Interface](https://smi-spec.io/)를 구현했습니다. | ||
|
||
### [go-task/task: Make보다 쉽고 단순한 태스크 러너, v3.0.0 릴리즈](https://github.com/go-task/task) | ||
|
||
Task는 태스크 러너 / 빌드 툴로 [GNU Make](https://www.gnu.org/software/make/)와 같은 도구보다 쉽고, 단순하게 사용할 수 있습니다. 자세한 사용법은 프로젝트 [사이트](https://taskfile.dev/)에서 확인하실 수 있습니다. | ||
|
||
### [augmentable-dev/askgit: SQL로 깃 저장소 쿼리하기](https://github.com/augmentable-dev/askgit) | ||
|
||
askgit을 SQL로 깃 저장소에 쿼리할 수 있도록 만들 커맨드라인 툴입니다. 이 툴을 사용하면 다음과 같은 작업을 할 수 있습니다. | ||
|
||
```sql | ||
-- [email protected]가 커밋을 몇 개 했을까? | ||
SELECT count(*) FROM commits WHERE author_email = '[email protected]' | ||
``` | ||
|
||
더 자세한 내용은 위 링크와 관련 [이 글](https://willschenk.com/articles/2020/using_askgit/)에서 확인할 수 있습니다. | ||
|
||
### [gorm.io/gorm: Go를 위한 ORM 라이브러리 v2.0.0 릴리즈!](https://gorm.io/docs/v2_release_note.html) | ||
|
||
수많은 기능을 포함하고 있는 ORM 라이브러리인 gorm의 v2.0.0이 릴리즈 됐습니다. | ||
|
||
|
||
## 튜토리얼 & 가이드 | ||
|
||
### [Golang으로 traceroute 구현하기](https://blog.kalbhor.xyz/post/implementing-traceroute-in-go/) | ||
|
||
TCP/UDP 패킷의 헤더의 정보를 이용하여, 호스트간의 이동경로를 확인할 수 있도록 구현한 사례입니다. | ||
|
||
### [Tiny Go: Small Is Going Big](https://www.infoq.com/presentations/tiny-go) | ||
|
||
Tiny Go가 LLVM을 만나 어떻게 쓰이는지 영상과 스크립트를 통해 확인 할 수 있습니다. | ||
|
||
### [Golang에서 힙 데이터 구조를 다루는 예제](http://www.tugberkugurlu.com/archive/usage-of-the-heap-data-structure-in-go-golang-with-examples) | ||
|
||
Golang에서 heap.Interface 패키지를 사용하여 힙 데이터 구조를 구현하고, 벤치마크를 하는 과정을 살펴봅니다. | ||
|
||
### [Go의 다섯 가지 모킹 테크닉](https://dmv.myhatchpad.com/insight/mocking-techniques-for-go/) | ||
|
||
고차함수 사용, 몽키 패칭, 인터페이스 대치, 인터페이스 임베딩, `net/http/httptest` 사용을 통한 Go의 다섯 가지 모킹 테크닉을 알아봅니다. | ||
|
||
### [모듈의 하위 호환성을 지키는 방법](https://medium.com/@ngtzeyang94/go-with-examples-keeping-your-modules-compatible-2bab5a5b9022) | ||
|
||
이 글에서는 Go 공식 블로그의 지난 [모듈 호환성에 대한 글](https://blog.golang.org/module-compatibility)의 컨셉을 간단한 예시와 함께 살펴봅니다. | ||
|
||
## 기술글 & 경험담 & 개선기 | ||
|
||
### [Go 2에서 OrderedMap을 구현한다면 어떤 모습일까](https://medium.com/swlh/ordered-maps-for-go-using-generics-875ef3816c71) | ||
|
||
Golang으로 OrderedMap 데이터 구조를 구현하는 과정을 보여주며, 제네릭이 얼마나 강력한지 확인 할 수 있습니다. | ||
|
||
### [CockroachDB의 dep에서 Go Modules로 마이그레이션 하기](https://www.cockroachlabs.com/blog/dep-go-modules/?utm_campaign=cooperpress-2020-Q3&utm_source=go-weekly&utm_medium=newsletter&utm_content=blog-deo-to-go) | ||
|
||
dep에서 Go Modules로 마이그레이션 경험에서 직면했던 어려움과 극복과정을 확인 할 수 있습니다. | ||
|
||
### [Golang으로 Apache Parquet 읽고 쓰기](https://fraugster.com/blog/post/future-proofing-our-storage-needs-with-aws-athena-apache-parquet) | ||
|
||
 | ||
|
||
Fraugster사에서 Apache Parquet 파일을 이용하여 [fraugster/parquet-go](github.com/fraugster/parquet-go)를 만든 이야기입니다. | ||
|
||
### [위챗 미니프로그램에서 위챗 페이 연동 삽질기](https://www.popit.kr/%EC%9C%84%EC%B1%97-%EB%AF%B8%EB%8B%88%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%97%90%EC%84%9C-%EC%9C%84%EC%B1%97-%ED%8E%98%EC%9D%B4-%EC%97%B0%EB%8F%99-%EC%82%BD%EC%A7%88%EA%B8%B0%EB%B6%80%EC%A0%9C-gola/) | ||
|
||
중국인들에게 한국상품을 팔기위한 사업에서 국내 위챗페이 결제 대행사(이하 PG)와 연동하며 EUC-KR 인코딩 경험 사례입니다. | ||
|
||
### [http.DefaultServerMux 사용에 대한 짧지만 필요한 글](https://sgrodriguez.github.io/2020/08/21/defaultServerMux.html) | ||
|
||
Golang에서 http.DefaultServerMux 사용에 대한 짧지만 꼭 필요한 내용입니다. | ||
|
||
### [Google에선 Go를 어떻게 사용할까](https://opensource.googleblog.com/2020/08/new-case-studies-about-googles-use-of-go.html) | ||
|
||
 | ||
|
||
Google에서의 Go를 사용하는 새로운 사례들이 공유됐습니다. 구글의 핵심 데이터 팀, 크롬, 파이어베이스에서 각각 Go가 어떻게 사용되고 있는지 설명합니다. | ||
|
||
### [CockroachDB: dep에서 Go Modules로의 마이그레이션](https://www.cockroachlabs.com/blog/dep-go-modules) | ||
|
||
 | ||
|
||
Go로 짜여진 CockroachDB가 의존성 관리를 위해 사용하던 dep을 Go Modules를 사용도록 마이그레이션한 경험을 공유합니다. 큰 규모의 프로젝트가 Go Modules로 마이그레이션 하는 과정과 그 결과를 이 글에서 확인하실 수 있습니다. | ||
|
||
### [Go 1.15에서 int에서 interface로의 변환을 어떻게 개선했을까](https://utcc.utoronto.ca/~cks/space/blog/programming/Go115InterfaceSmallInts) | ||
|
||
Go에서 인터페이스는 타입을 가리키는 포인터와 값을 가리키는 포인터로 이루어져 있습니다. 즉, 일반적인 상황에서 인터페이스의 값은 힙에 할당돼야 함을 의미하고 이는 GC 오버헤드로 이어집니다. 이 글에서는 Go 1.15의 런타임 개선사항 중 하나인, 작은 크기의 int를 인터페이스로 변환하는 과정에서 어떻게 힙 할당을 제거했는지에 대해 설명합니다. | ||
|
||
### [Atomic 패키지를 사용해 락 경합 줄이기](https://medium.com/a-journey-with-go/go-how-to-reduce-lock-contention-with-the-atomic-package-ba3b2664b549) | ||
|
||
 | ||
|
||
Go는 채널, 뮤텍스와 같은 메모리 동기화 메커니즘을 제공합니다. 그와 동시에 성능을 더 향상시키기 위한 원자적 연산(Atomic Operation) 기능도 `atomic` 패키지를 통해 제공합니다. 이 글에서는 `sync` 패키지의 뮤텍스와 `atomic` 패키지를 간단한 예시와 벤치마크 결과를 통해 비교합니다. | ||
|
||
### [내장 함수는 어떻게 최적화 됐을까](https://medium.com/a-journey-with-go/go-built-in-functions-optimizations-70c5abb3a680) | ||
|
||
 | ||
|
||
Go에서 몇몇의 내장 함수는 `make`와 같이 실질적인 구현체가 존재하지만, `len`, `cap`과 같은 다른 몇몇의 함수들은 실질적인 구현체 없이 컴파일러에 의해 관리됩니다. 이 글에서는 Go가 이러한 내장 함수들을 최적화한 방법에 대해 알아봅니다. | ||
|
||
## 읽을거리 | ||
|
||
### [Golang기반의 빠른개발을 위한 5가지 도구](http://thetechnews.com/2020/08/05/5-advanced-golang-tools-for-rapid-software-development/) | ||
|
||
thetechnews.com에 소개된 Golang으로 개발시 필수적이며 활용도 높은 5가지 도구에 대한 글입니다. |