Skip to content

Commit

Permalink
docs: publish 2020-08
Browse files Browse the repository at this point in the history
  • Loading branch information
KimMachineGun committed Sep 1, 2020
1 parent 9116c1d commit e4fcfb6
Show file tree
Hide file tree
Showing 2 changed files with 151 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,4 @@ Golang News는 Golang Korea 운영진들이 [Golang Weekly](https://golangweekly
- [2020-05](issues/2020-05.md)
- [2020-06](issues/2020-06.md)
- [2020-07](issues/2020-07.md)
- [2020-08](issues/2020-08.md)
150 changes: 150 additions & 0 deletions issues/2020-08.md
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)

![Open Service Mesh Logo](https://openservicemesh.io/images/osm-twitter-card.png)

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)

![Future proofing our storage needs with AWS Athena & Apache Parquet.](https://images.prismic.io/fraugster/d5e70fa2-9e4e-47b1-9fd0-f598cb176553_20200812_Parquet_Blog.jpg?auto=compress,format&rect=0,15,1000,563&w=1000&h=563)

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)

![Credit to Renee French for the gopher illustration.](https://1.bp.blogspot.com/-x7Naiff2UUY/X0b962fciDI/AAAAAAAAAhA/iqpp1Oh6CyAXEanUAvJT1ziF5VORezf0ACLcBGAsYHQ/s640/case_study_blog_post_gopher.png)

Google에서의 Go를 사용하는 새로운 사례들이 공유됐습니다. 구글의 핵심 데이터 팀, 크롬, 파이어베이스에서 각각 Go가 어떻게 사용되고 있는지 설명합니다.

### [CockroachDB: dep에서 Go Modules로의 마이그레이션](https://www.cockroachlabs.com/blog/dep-go-modules)

![Upgrading CockroachDB From Dep To Go Modules](https://www.cockroachlabs.com/wp-content/uploads/2019/06/SQLSmith_Header_IMG_2.jpg)

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)

![Illustration created for “A Journey With Go”, made from the original Go Gopher, created by Renee French.](https://miro.medium.com/max/1400/1*Jrd9zIc7aD04yk_mlgSbFg.png)

Go는 채널, 뮤텍스와 같은 메모리 동기화 메커니즘을 제공합니다. 그와 동시에 성능을 더 향상시키기 위한 원자적 연산(Atomic Operation) 기능도 `atomic` 패키지를 통해 제공합니다. 이 글에서는 `sync` 패키지의 뮤텍스와 `atomic` 패키지를 간단한 예시와 벤치마크 결과를 통해 비교합니다.

### [내장 함수는 어떻게 최적화 됐을까](https://medium.com/a-journey-with-go/go-built-in-functions-optimizations-70c5abb3a680)

![Illustration created for “A Journey With Go”, made from the original Go Gopher, created by Renee French.](https://miro.medium.com/max/1400/1*5T5K8M9VAIHWhClAlKslkA.png)

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가지 도구에 대한 글입니다.

0 comments on commit e4fcfb6

Please sign in to comment.