emahiro's ProgrammingBlog

勉強記録と書評とたまに長めの呟きを書きます

go

【go】QiitaのAPIで遊ぶ

go

サマリ APIで遊びながらgoの学習をするシリーズ第二弾で、Qiitaで記事を検索するクライアント goota をgoで書きました。 コードはこちら github.com demo ざっくり仕様 Requirement tagを指定できる。 tagはカンマ区切りでOR条件で検索出来る。 ストック数が…

githubのAPIで遊んだ話 その1

go

githubのsearchAPIを簡単にラップしたGUI作りました。 久しぶりにjqueryとか触ったらすごい懐かしい匂いがして色々つまりました。 request処理とかしててハマったところがあるので別でエントリでまとめようと思います。 コードは以下 github.com

Goでファイル読み込みを調べた話

go

サマリ io.Readerの読み込みついて調べた io.ReaderをWrapして文字列置換 io.Readerが一括読み込みでなくstream的な動作で順次読み込みされている io.Readerについて refs: io - The Go Programming Language io.ReaderはデフォルトのReadのWrap。 ioパッケ…

GAE/GOのversionを上げたらContextが違ってコードが動かなくなってた話

go

有名な話です。が、いざ自分が体験したので備忘録としてまとめます。 github.com 上記で上げられている netcontextとcontext周りで死ぬ というのに引っかかりました。 課題 go1.6上で以下のようなリクエスト比較するコードを書いてました。 ※ コードはあくま…

time.IsZero()の挙動でハマった話

go

サマリ goのtimeパッケージの IsZero() はUnixTime = 0ではない GAEのdatasotreのdefaultの時刻で IsZero() を使ってもtrueを返さない IsZero()メソッドについて refs: time - The Go Programming Language IsZero reports whether t represents the zero ti…

【続】FWに頼らないオレオレroutingを実装する

go

前回書いた記事の中でオレオレroutingを実装する際に標準の net/http パッケージだけだと足りないと書いてましたがこれ、間違いでした。 ema-hiro.hatenablog.com 標準の net/http パッケージだけでオレオレroutingを実装する方法は以下 main.go package mai…

GogLandでtmplファイルをhtmlのシンタックス対象に加える

いつからはわからないですが、GogLand EAPをアップデートしたらtmplファイルがhtmlのシンタックス対象から外れてて、htmlを開いてもxmlと判別されてエラーがうるさくなってしまったので、カスタムファイルとしてtmplファイルのときは、htmlのシンタックスを…

【go】FWに頼らないオレオレroutingを実装する

go

goでFWに頼らず、net/http だけで簡単なWeb Serverを立てたいと思ったので作ってみた。 routing設定 まず躓いたのはroutingをどうするかということ。 net/httpパッケージを使用する場合、全てmain.goにroutingを書いてしまうことになりますが、FWの構造に則…

depを使ってみる

go

golangのオフィシャル謹製パッケージマネージャ「dep」 github.com 個人プロジェクトではglideから乗り換えました。 install 公式の手順に則っておけば問題ないです。 Macでは brew でインストール出来ます。 $ brew install dep ディレクトリ構成 - $GOPATH…

goのsortで複数条件でのsortを実現する上で考えたこと

go

サマリ 特定のModelに対して複数条件でsortしたい場合の実装方法についての考察 実装方法 sortしたいfield毎にモデルにsortのinterfaceを実装をする - ➀ embedで親のsortパッケージを継承する(sort条件を上書きする) - ➁ ➀のとき sortしたいStructのfield毎…

goでprivateメソッドをテストする

go

サマリ go でのprivate methodをテストでcallする方法 テスト手順 goでprivateメソッドをテストファイルからcallする場合には、同一package内においてはファイルが異なっても、同じpackage内に存在するprivate methodを呼ぶことができる というgoの仕様を利…

(続)goでのhttpの書き方あれこれ

以前書いたこれの続き ema-hiro.hatenablog.com 以前書いたgoでのhttpの書き方の内容の続編です。 Postの書き方とAutorizationヘッダーを付けたリクエストを構築するときの方法を備忘録としてまとめました。 標準パッケージはこちら https://golang.org/pkg/…

goでのhttpの書き方あれこれ

goの標準 goでhttpの処理を書きたいときはnet/httpパッケージを使う。 強力なパッケージなので、基本これを使うで、やりたいことの殆どはまかなえてしまうと思う http.Get(url) package main import ( "fmt" "io/ioutil" "net/http" ) func main() { resp, e…

goで一時的なスクリプトを書く方法

go

Goで開発しているときに 標準パッケージの動作確認したい ライブラリの動作確認したい 簡単なスクリプト(HTTPやgoroutineなど)を書きたい と思って調べてみました。 Rubyならirbやpryを使ってコンソールで簡単な動作検証を行えたり、変数の内部見ることが…

GoonのGet()とGetAll()の違いでハマる

Go+GAEの環境でCloudDataStoreからデータを取得するときに Get() GetMulti() GetAll() の挙動の違いでハマったので備忘録として挙動をまとめておきます。 Datasotreのライブラリ datastore https://godoc.org/google.golang.org/appengine/datastore googlea…

appengineのmemcacheを使う

GAEではmemcache一択 appengineのmemcacheパッケージを使ってみました。 リファレンスはこちら https://cloud.google.com/appengine/docs/standard/go/memcache/reference goでキャッシュを扱うときに最初 go-cache を使おうと思っていたのだけれど、GAEでキ…

Goglandでソフトラップを消す

Preference ▶ Editor ▶ Appearance で show right margin をoffにする これでソフトラップがoffになる。 goは変なところでソフトラップがかかって改行されるとコンパイルエラーになるのが嫌なので、ソフトラップをオフにしてます。 参考 http://samuraism.co…

GoglandでFWのsrc配下のvendorを参照しなくなった時

前置き ginやechoと言ったgoのwebフレームワーク(FW)を使って開発するときに、glideみたいなパッケージ管理ツールを使って依存パッケージを管理しているケースはよくあると思います。 その依存パッケージの管理ディレクトリはプロジェクトルートではなく、…

参照型を作成するmake

go

goには2つの値の型があります 値型 参照型 値型と参照型 関数に渡されるときにコピーされる。 そのため、呼び出し元で引数に指定した値型の変数は関数に渡されるタイミングでコピーされ、コピーされた値が関数の呼び出しに使用されるので、呼び出し元の値は…