技術メモ

技術メモ

ラフなメモ

Golang

Goのエラーの生成方法

Go でエラーを生成するときにどのように生成するのがいいのか、少し考えました。 私はエラーを扱うときはたいてい pkg/errors を使うようにしています。エラーをスタックできるのが便利ですよね。 エラーの起点になるときには fmt.Errorf() や errors.New() …

「Go言語でつくるインタプリタ」を読んだ

「Go言語でつくるインタプリタ」を読んだ感想を連ねます。 Go言語でつくるインタプリタ作者: Thorsten Ball,設樂洋爾出版社/メーカー: オライリージャパン発売日: 2018/06/16メディア: 単行本(ソフトカバー)この商品を含むブログを見る インタプリタをつく…

インターフェース値のnilを扱うということ

インターフェース型 Golangのインターフェース型は、具象型がインターフェースのインスタンスとして見なされるために必要なメソッドの集まりを定義します。例えば標準パッケージのioに含まれる以下のReaderやWriterはインターフェース型です。 package io ty…

gonum/plotを用いたSVGファイルの生成

plotするデータのサンプルは Example plots を用いることにします。 package main import ( "bytes" "io/ioutil" "math" "math/rand" "gonum.org/v1/plot/vg/draw" "gonum.org/v1/plot/vg/vgsvg" "gonum.org/v1/plot/vg" "gonum.org/v1/plot" "gonum.org/v1/…

GolangでWebSocketを使ったHTTPサーバを実装する

はじめに GolangでWebSocketを使ったHTTPサーバを構築します。 WebSocketの仕様は RFC6455 で定められています。Webアプリケーションにおいて、双方向通信を実現するための技術規格です。Ajaxではブラウザからサーバにデータの送信要求を出す手段でした。Web…

Golangのnil sliceとnil map

nil sliceとempty sliceの違い nil sliceと空のsliceとは同じではないが、外から観測できる振る舞い(機能)は同じ len()もcap()もともに0を返す package main import "fmt" func main() { var s1 []int s2 := []int{} s3 := make([]int, 0) s34= nil fmt.Prin…

GolangのContext

背景など https://blog.golang.org/context Goを使ったサーバでは、それぞれのリクエストはgoroutineを用いて扱われる。リクエストハンドラーは別のバックエンドのデータベースやRPCサーバにアクセスするために別のgoroutineを生成して処理する。これらのgor…

Go言語による並行処理の点検読書

Go言語による並行処理作者: Katherine Cox-Buday,山口能迪出版社/メーカー: オライリージャパン発売日: 2018/10/26メディア: 単行本(ソフトカバー)この商品を含むブログを見る 全体として何に関する本か、何がどのように詳しく述べられているか Goでの並行…

Go言語に入門

Sphinxの勉強も含めて、Go言語に入門した時にまとめた内容を以下にまとめておきました。 d-tsuji.github.io