タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

golangに関するHiDEのブックマーク (22)

  • Go言語のエラーハンドリングについて - Qiita

    皆さまゴールデンウィークはいかがお過ごしでしょうか。 GW前に投稿しようと下書きにちまちま書き溜めていた記事ですが、スマホで誤ってゴミ箱ボタンを押してしまったがために一瞬で電子の藻屑と化してしまい泣きながら記事を書き直しています。 せめて削除時は確認ダイアログぐらい出るようにQiitaには改善してもらいたいものです。。 閑話休題。 Go言語で複数エラーハンドリングするためにいい方法ないかなーとネットの海を彷徨っていたところ、なかなかよさげな記事を見つけたので実例を交えて書き残していきたいと思います。 go1.6.2で検証 エラー処理の基 Go言語にはtry~catch~finallyの例外処理は存在しません。 http://golang.jp/go_faq#exceptions Go言語ではエラーを処理するためにerrorインタフェースが用意されています。 これはfunc Error(

    Go言語のエラーハンドリングについて - Qiita
    HiDE
    HiDE 2017/10/13
  • goenvでgoをインストール 〜初心者向け〜 - Qiita

    Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up

    goenvでgoをインストール 〜初心者向け〜 - Qiita
    HiDE
    HiDE 2017/10/12
  • golangでYAMLファイルを読み込んで構造体に入れる

    使い方がかなり特殊だったのでメモ (ドキュメントには書いてありますが…) goyamlでは、YAMLの構造とGoの構造体の構造を揃えておくと、 データを構造体にセットした状態で読み込むことが出来ます。 特にGoでは構造体を使わない場合、interfaceへの変換を書きまくる事になるので、 できる限り構造体を利用した方がお勧めです。 以下のように、YAMLのキーとGoの構造体の名前を揃えることで、 YAMLから構造体に直接データを代入できます。 type Data struct { UserId int UserName string `yaml:"user_name"` Follownum int `yaml:"followNum"` MessageText string invaliddata string } 後述するコードでYAMLを読み込むと、出力は以下の通りになります、 => {

    HiDE
    HiDE 2017/09/29
  • Go言語のいい感じの開発環境を構築する - TIS ENGINEER NOTE

    今回はmacに、いい感じでバージョン&パッケージを管理できる開発環境を構築していこうと思います。 goenvの導入 まずはgolang自体のバージョンを管理するためのツールであるgolangを導入します。 goenvを通してgolangをインストールすることで、異なるバージョンを利用する必要がある時にスムーズに作業を継続できます。 基的な使い方はrubyのrbenvや、pythonのpyenvと大差ありません。gvmというツールもあるのですが、個人的にrbenv,pyenvを使ってきたので、goenvを選択しました。 brew install goenv まずはbrewでgoenvをインストールします。 あとは環境変数にgo言語のコマンドを実行した時の利用先のパスを設定します。 export PATH="$HOME/.goenv/bin:$PATH" eval "$(goenv init

    Go言語のいい感じの開発環境を構築する - TIS ENGINEER NOTE
    HiDE
    HiDE 2017/09/29
  • Big Sky :: Goでmigemoライブラリ作った。

    HiDE
    HiDE 2017/06/13
  • Goでnet/httpを使う時のこまごまとした注意 - Qiita

    resp, err := http.DefaultClient.Do(req) if err != nil { return err } defer resp.Body.Close() HTTPレスポンスを受け取ったとき、err != nilのときresp.Bodyは常に非nilである(たとえBodyが0バイトであっても)。このresp.Body を Close するのは呼び出し側の責務である。Body.Close を怠ると、Keep-Alive(デフォルトで有効)のためにTCPコネクションが再利用されない。…ということが ドキュメントに口を酸っぱくして書いてある。 同一ホストへのコネクション数はデフォルトで最大2に制限されている 同一ホストへのコネクション数はhttp.DefaultMaxIdleConnsPerHost定数によりデフォルトで2に制限されている。 // DefaultMa

    Goでnet/httpを使う時のこまごまとした注意 - Qiita
    HiDE
    HiDE 2017/06/08
  • cgo の基本的な使い方とポインタ周りのTips (Go v1.2) | LESS IS MORE

    C/C++ライブラリのGoラッパーを書くためには、cgoというパッケージを使うのだけど、特にCのポインタ周りにハマりどころが多かったので、少しまとめとく cgoの基礎については、以下の二つを読むことを推奨 https://golang.org/cmd/cgo/ https://code.google.com/p/go-wiki/wiki/cgo この記事では、cgo基的な使い方と、いくつかポインタ絡みのTipsをまとめる。Tipsのみ必要な場合は、最初の方は飛ばして下さい cgo Cgo enables the creation of Go packages that call C code. https://golang.org/cmd/cgo/ cgoとは、GoからCの関数/型にアクセスするために用いるパッケージのこと。cgoを使えば、GoからCのコードが呼べる。つまり、Cで書かれた

    cgo の基本的な使い方とポインタ周りのTips (Go v1.2) | LESS IS MORE
  • Why I Don’t Use Go Web Frameworks

    I have had a fair share of writing applications in Go, and in despair, I had resorted to a few cool-looking, out-of-the-box shiny web frameworks in the hope of getting things done quickly and efficiently. I was wrong. Go is a different beast comparing to many other languages. While being general enough, Go was built for the modern web. It has all the built-in tools enough to accomplish most web pr

    HiDE
    HiDE 2017/06/08
  • Go言語 Web フレームワークはこれを使おう 2016年12月版 - Witch on the Other Shore

    2016 - 12 - 10 Go言語 Web フレームワークはこれを使おう 2016年12月版 この記事は Qiita Advent Calendar 2016 Go (その2) 10日目の記事です。 Go言語の Web アプリケーションフレームワーク (以下、Web フレームワーク) は、群雄割拠の時代を経てわずかばかりまとまってきた印象があります。今回、Go言語の Web フレームワーク を選定するさいの参考になればと思い、あらためていくつかのフレームワークの特長や最近の動向をまとめました。 結論 現時点では iris または Echo の選択をおすすめします。 選定と推薦の根拠 主観 GitHub Trending, Star, Issue プロダクトでの使用経験 (Gin, Echo) 現在、 株式会社ユーリエ のプロダクト eurie Desk 開発における主たる言語として G

    Go言語 Web フレームワークはこれを使おう 2016年12月版 - Witch on the Other Shore
    HiDE
    HiDE 2017/06/08
  • golang 1.8 pluginを使ってみた - Qiita

    2017/02にgolang 1.8が出ましたね。 所々変わってますが、pluginパッケージもその1つかと思います。 あえてプラグインにするための方法が標準パッケージに現れたということで試してみました。 環境 docker (moby?) pluginの書き方 基的にはパッケージの場合と同じ 呼び出し方がちょっと特殊なだけ プラグイン側 プラグインとして呼び出せるようにしたいものはpublicな命名規則で定義する go build -buildmode=plugin -o {プラグインファイル名.so} {プラグインのソースファイル名}.go [...] でビルド 通常のパッケージと同じでfunc init() { ... } があれば呼び出し時に実行される main()側 起動は普通にgo run main.goとかで良い プラグインを読み込むためにはpluginパッケージをインポー

    golang 1.8 pluginを使ってみた - Qiita
    HiDE
    HiDE 2017/05/25
  • Go 1.8のpluginパッケージを試してみる - Qiita

    はじめに 来年2月に正式リリース予定のGo 1.8にて、新たにpluginパッケージが仲間入りします。これはGoでプラグインの仕組みを実現するものです。 プラグインはGoで作成されたシェアードライブラリー(.so)ファイルであり、中身はmainパッケージでエクスポートされた(=名前が大文字で始まる)変数と関数で構成されます。 このプラグインの実装を12月1日に公開されたGo 1.8 beta 1で試してみた時はLinuxmacOSのみが対応していましたが、12月16日に公開されたGo 1.8 beta 2からはLinuxのみ対応となっています。(macOSGo 1.9で対応予定) ここではプラグインのコーディングの仕方をざっくりと紹介させて頂きます。詳細については公式ベータサイトのpluginパッケージのドキュメントをご覧ください。 ファイル目線でのコーディングの流れ ファイル目線での

    Go 1.8のpluginパッケージを試してみる - Qiita
    HiDE
    HiDE 2017/05/25
  • Go言語でプラグイン機構をつくる

    dullgiulio/pingo Go言語でのプラグイン機構の提供方法は実装者の好みによると思う(cf. fluentd の go 実装におけるプラグイン構想).Go言語はクロスコンパイルも含めビルドは楽なのでプラグインを含めて再ビルドでも良いと思う.が,使う人がみなGo言語の環境を準備しているとも限らないし,使い始めてもらう障壁はなるべく下げたい.プラグインのバイナリだけを持ってこればすぐに使えるという機構は魅力的だと思う. Go言語によるプラグイン機構はHashicorpの一連のプロダクトやCloudFoundryのCLIなどが既に提供していてかっこいい.net/rpcを使っているのは見ていてこれを自分で1から実装するのは面倒だなと思っていた. dullgiulio/pingoを使うと実装の面倒な部分を受け持ってくれて気軽にプラグイン機構を作れる. 使い方 サンプルに従ってプラグインを

    HiDE
    HiDE 2017/05/24
  • (Golang)リアルタイムログ転送+閲覧ツール作った - blog::wnotes.net

    最近ちょっと大きめのサービスをリニューアルしたんですが、リリース当初はエラーログとか張り付いて監視してました。 数台分散しているサーバに逐一ログインしてログファイルをtail -fしたりするのがもう面倒で、それを解決するためにツールを作りました。 各インスタンスからのログを集約してリアルタイムにブラウザで閲覧する 初めの着想はDockerコンテナの話でした。Docker内に吐かれるログを見るのに、インスタンスにログインして、docker execしてtailするとか、 ログファイルをホストにマウントして、それをtailするとかあると思いますが、そもそも分散している台数分確認するのが面倒で。 かつ各コンテナはネットワーク的に閉じているので、コンテナ側から送信して、それを集約して確認するツールにしました。こちらです: ysugimoto/tailor releaseにビルド済みのバイナリを置い

    HiDE
    HiDE 2017/05/18
  • Go の並行処理 - Block Rockin’ Codes

    intro 先日の Go のカンファレンス GoCon で、 Go の並行処理周りについて発表させて頂きました。 Go Conference 2013 spring - connpass 具体的には Goroutine や Channel の話ですが、これらの機能は結構面白くて、いじって遊んでるだけでもわくわくします。 Go の並行処理は、設計方針がわりと特殊だと思うのですが、設計がシンプルなので分かるとそこまで難しくはないです。 (使いこなすのは、経験が必要そうですが) 今回話すにあたって色々調べましたが、発表時間の都合上省いたものもあるし、質疑応答で聞かれて応えられなかったこともあるので、 ここでまとめて置こうと思います。 発表資料 今回の発表資料はこちらです。 このブログの内容は、これをベースにします。 http://jxck.node-ninja.com/slides/gocon-

    Go の並行処理 - Block Rockin’ Codes
    HiDE
    HiDE 2017/05/10
  • Vendoring in Go 1.6

    HiDE
    HiDE 2017/05/09
  • golang は ゆるふわに JSON を扱えまぁす! — KaoriYa

    以下のツイートにもある通り、一見 golang は struct を定義しないと JSON を扱えないように見えます。他にも似たようなツイートをチラホラと見かけましたが、それらは全部誤解です。そこでこの記事では、golang でゆるふわ (structを定義せず) に JSON を扱う方法を紹介します。 golangrubyのようにゆるふわにJSONは扱えない? https://t.co/olsryDHc5G — bamchoh (@bamchoh) 2016年6月24日 この記事では入力の json.Unmarshal() を取り扱いますが、出力の json.Marshal() にも応用できます。 TL;DR json.Unmarshal() には *interface{} を渡せます interface{} は dproxy を使うと、値のアクセスで楽ができます json.Unmar

  • #golang debugログを埋め込むには?

    たまたまgolang.orgのコードみてたら、debugログの書き方が良い感じだったので、忘れないようにメモ。 参考http://golang.org/src/pkg/net/mail/message.goPrevious #golang が簡単にインストールできるgoinstallを作りました。Next Startup Weekend Osaka 2013.4.19->21の優勝で学んだこと

    HiDE
    HiDE 2017/04/26
  • Golang : Escaping single quotes

    HiDE
    HiDE 2017/04/24
  • string replace backslash with slash

    HiDE
    HiDE 2017/04/24
  • How to pipe several commands in Go?

    How can I pipe several external commands together in Go? I've tried this code but I get an error that says exit status 1. package main import ( "io" "log" "os" "os/exec" ) func main() { c1 := exec.Command("ls") stdout1, err := c1.StdoutPipe() if err != nil { log.Fatal(err) } if err = c1.Start(); err != nil { log.Fatal(err) } if err = c1.Wait(); err != nil { log.Fatal(err) } c2 := exec.Command("wc"

    How to pipe several commands in Go?
    HiDE
    HiDE 2017/04/24