タグ

2016年5月3日のブックマーク (6件)

  • JSONのパース/生成 - はじめてのGo言語

    encoding/jsonパッケージ GoでJSON形式を扱うには、encoding/jsonパッケージを使用します。 パース処理 JSON形式の文字列をパースするには、あらかじめJSONのデータ構造に合わせて構造体を定義し、Unmarshal関数を使用します。 package main import ( "encoding/json" "fmt" ) type Country struct { Name string `json:"name"` Prefectures []Prefecture `json:"prefectures"` } type Prefecture struct { Name string `json:"name"` Capital string `json:"capital"` Population int `json:"population"` } func m

    kwry
    kwry 2016/05/03
  • Go と reflect と generate - Qiita

    この記事は Go Advent Calendar 2015 5 日目の記事です。 はじめに Go にはジェネリクスがありませんが、任意の型に対して共通の処理を提供したいことがあります。 例えば ORM ライブラリで User テーブルと Blog テーブルを struct で表す場合を考えてみます。 package main var db = func() *sql.DB { db, err := sql.Open("mysql", "hoge") if err != nil { panic(err) } return db }() func (u User) FindById(id int64) (*User, error) { return &u, db.QueryRow("SELECT Id, Name, Email FROM User WHERE Id = ?", id).Scan

    Go と reflect と generate - Qiita
  • Chromeのデフォルトの検索期間を過去一年にする - Qiita

    Chromeでググるときに期間を一年程度にすることがよくあるが、毎回やるのも面倒なのでデフォルトにする方法をググッた。 Chromeの設定を開く Settings > Search > Manage search engines...をクリックする 以下のようなGoogleのエントリがあるのを確認する URLのクエリにtbs=qdr:yを含めたエントリを新規追加してデフォルトにする。もちろんもとのオプションをコピーして加えてもよい 新規タブで検索して過去一年の設定が有効になっているのを確認する そもそもどういうオプションを追加できるのか、は実際の検索画面でいじってURLを眺めればわかる(ドキュメントで保証された機能なのかどうかは調べてない) 「一年以上前の情報は(技術情報やニュースだけでなく全般に)いらないぜ」っていうスタンスは結構ラジカルで実際には不便も発生しそう(重要だが古い情報にリー

    Chromeのデフォルトの検索期間を過去一年にする - Qiita
    kwry
    kwry 2016/05/03
  • x/net/context の実装パターン - Qiita

    モチベーション 例えば、外部のリソースにアクセスする時など、並列に実行する部分の処理を共通化したいことが多いと思う。特に既存のコードは逐次実行されるコードになっているが、局所的に並列化したい時などは、チャネル使って書き直すのはなかなかしんどかったりする。 そこで、x/net/context を使いつつ、並列処理を共通化する方法を考えてみた。 x/net/context Google製の x/net/context パッケージというのがある。 使い方などは、以下のリンクが詳しい Go Concurrency Patterns: Context - 小野マトペの納豆ペペロンチーノ日記 とてもシンプルだけどよく出来ているパッケージで、名前の通り、コンテキストなので、共通の値を管理する目的に主眼が置かれているけど、もう一つ、チャネルのキャンセル処理のための機能が備わっていて、キャンセル処理が階層化

    x/net/context の実装パターン - Qiita
    kwry
    kwry 2016/05/03
  • GAE/GoのRPCにフックするライブラリaespyを作った - Qiita

    @laco0416です。GAE/GoのRPCに介入して通信内容を使ってゴニョゴニョするためのライブラリを作ったのでその仕組みとかGAE/GoのRPC覗く上で気をつけなきゃいけないところなどを書きます。 laco0416/aespy 背景 GAE/Goに限らず、AppEngineとその他のGCPのサービス(Datastore, Memcache, UrlFetchなどなど)はRPCによって通信している。RPCはProtocol Buffer(以後pbと略記)という形式でシリアライズされたオブジェクトを用いており、これは簡単にデシリアライズ可能である。しかしGAE/JにはApiProxyとDelegateという仕組みが最初から用意されており、比較的容易にRPCに介入できるが、GAE/GoにはまだAPIが用意されていない。 ところでGAE/GoのDatastoreにはContextを取得できるイ

    GAE/GoのRPCにフックするライブラリaespyを作った - Qiita
  • Golangで自分自身で定義したパッケージをインポートする方法あれこれ - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    Golangで自分自身で定義したパッケージをインポートする方法あれこれ - Qiita
    kwry
    kwry 2016/05/03