タグ

golangに関するcd01のブックマーク (20)

  • Go言語のCLIツールのpanicをラップしてクラッシュレポートをつくる

    mitchellh/panicwrap Go言語でpanicが発生したらどうしようもない.普通はちゃんとテストをしてそもそもpanicが発生しないようにする(もしくはトップレベルでrecoverする).しかし,クロスコンパイルして様々な環境に配布することを,もしくはユーザが作者が思ってもいない使いかたをすることを考慮すると,すべてを作者の想像力の範疇のテストでカバーし,panicをゼロにできるとは限らない. panicが発生した場合,ユーザからすると何が起こったか分からない(Go言語を使ったことがあるユーザなら「あの表示」を見て,panicが起こったことがわかるかもしれない).適切なエラーメッセージを表示できると良い.開発者からすると,そのpanicの詳しい発生状況を基に修正を行い,新たなテストケースを追加して二度とそのバグが発生しないようにしておきたい. mitchellh/panicw

    cd01
    cd01 2015/04/17
  • Golang パフォーマンスチューニング - Qiita

    この記事は Go Advent Calendar 2014 17 日目の記事です。 Go におけるパフォーマンスチューニングの話をします。 これらは Denco や Kocha などでのパフォーマンスチューニングの経験などから得た知見です。 処理系の話ではありませんのでご了承ください。 前提 プロファイリングを取った後、じゃあどうやって最適化するかというところの話です 「推測するな、計測せよ」 アルゴリズムやデータ構造は最適なものが選択されていると仮定します 小手先の最適化を行うよりアルゴリズム自体を変えたほうが圧倒的に良くなります。 この記事の各ベンチマークは Go 1.4 (go version go1.4 linux/amd64)で下記のコマンドにて取っています

    Golang パフォーマンスチューニング - Qiita
    cd01
    cd01 2014/12/17
  • go - Git at Google

    3959d54 runtime: mark lockWithRankMayAcquire as nosplit by Cuong Manh Le · 2 days ago master70491a8 maps: document handling of non-reflexive keys by Sean Liao · 7 months ago7321aa9 cmd: vendor golang.org/x/telemetry@0b706e1 by Rob Findley · 4 days ago420037b os: don't try to signal PID -1 on Unix by Ian Lance Taylor · 4 days ago87abb4a runtime: avoid multiple records with identical stacks from Mut

    cd01
    cd01 2014/12/09
    Go のメイン git リポジトリ
  • チャットで学ぶ Go ネットワークプログラミング : DSAS開発者の部屋

    簡単なチャットプログラムは、ネットワークプログラミング用のフレームワークでは定番のサンプルプログラムです。 echo サーバーが Hello World とするなら、チャットは FizzBuzz といったところでしょう。 とりあえず動くだけのチャットならだれでもすぐに作れるようになりますが、まじめにチャットを作ることで、 ネットワークプログラミングで考えないといけない点やエラー処理の重要な基礎を学ぶことができます。 ということで、 Go でシンプルなチャットを実装してみました。 (ソースコード) 以降、何を考えてどういう設計を採用したのかを解説していきます。 考慮すべきポイント 特定のクライアントへの送信に長時間待たされた場合に、他のクライアントへの送信が遅れないようにする。 クライアントを切断するのは、 (1)ルーム側から kick する場合, (2)受信エラー, (3)送信エラー の3

    チャットで学ぶ Go ネットワークプログラミング : DSAS開発者の部屋
    cd01
    cd01 2014/09/04
  • Go言語がダメな理由 | POSTD

    私はGo言語が気に入っていますし、多くの場面で使用します。現にこのブログもGoで書いています。Goは便利な言語ですが、優れた言語とは言えません。つまり、悪くはないけれど、十分ではないということです。 満足できない言語を使用する際は注意が必要です。注意を怠ると、その言語を次の20年間使い続ける羽目になるかもしれないからです。 私のGoに対する主な不満を文にまとめました。既に何度も指摘されていることも含まれていますが、中にはこれまでほとんど話題になっていない指摘もあります。 これから列挙する全ての課題には既に解決策があることを示すため、私が優良な言語と考えるRustやHaskellと比較して説明します。 汎用プログラミング 課題 誰でもさまざまな事柄に幅広く対応できるコードを記述したいと考えます。例えば数のリストの合計を求めるために定義した関数が、小数、整数、またその他の合計を求められるもの

    Go言語がダメな理由 | POSTD
    cd01
    cd01 2014/07/28
  • Go コードのレビュー時によくされるコメント - GRACEFULEXIT

    CodeReviewComments から Go コードのレビュー時によくされるコメントについて。 gofmt gofmt またはそのスーパーセットである goimports を実行すること。goimports は gofmt に加えて import 行の修正も行う。 コメント文 http://golang.org/doc/effective_go.html#commentary を参照。宣言に対するコメントは少し冗長に見えるかもしれないけど完全な文にする。そうすれば godoc できれいに整形される。次のように説明するものの名前から始めピリオドで終える。 // A Request represents a request to run a command. type Request struct { ... // Encode writes the JSON encoding of re

    cd01
    cd01 2014/07/21
  • ターミナル操作の記録(ttyrec)からGIFアニメを生成するツールを作った - すぎゃーんメモ

    ttyrec で録画したデータを使ってターミナル上で再生しつつ、そのスクリーンキャプチャを使ってアニメーションGIFを生成するツールをGoで作ってみた。 https://github.com/sugyan/ttygif Releases Mac, Linux Desktopで動作。再生速度はオプションで変更可能。 背景 percolを使ってターミナル操作を早く、便利に。 - すぎゃーんメモ のような記事を書いたりする際に、ターミナル操作を録画してGIFアニメにしたい需要があり。 そういった用途に使える汎用のデスクトップ録画ツールとしてはLICEcapやGifzoなどがある。 Cockos Incorporated | LICEcap http://gifzo.net/ これらはWindows, OSXあたりが対象で、Linuxの場合はまた他のツールがあるらしい(よく知らない)。 汎用的なキ

    ターミナル操作の記録(ttyrec)からGIFアニメを生成するツールを作った - すぎゃーんメモ
    cd01
    cd01 2014/07/19
  • Go packages

    Similar to any other large communities it becomes increasingly hard to find quality packages for any given task, so this is simply a list of ones that I’ve needed and found to be useful for my projects. Go’s standard library is pretty fantastic so this list is short for now, I’ll try and remember to update it as I Go! dustin/go-humanize — format times, numbers, bytesizes, relative datesvisionmedia

    cd01
    cd01 2014/07/16
  • 高速にGo言語のCLIツールをつくるcli-initというツールをつくった

    高速にGo言語のCLIツールをつくるcli-initというツールをつくった tcnkms/cli-initGitHub cli-initを使えば,Go言語コマンドラインツール作成時のお決まりパターンをテンプレートとして自動生成し,コア機能の記述に集中することができる. デモ 以下は簡単な動作例. 上のデモでは,addとlist,deleteというサブコマンドをもつtodoアプリケーションを生成している.生成結果は,tcnksm/sample-cli-initにある. 背景 Go言語で作られたコマンドラインツールを見ていると,codegangsta/cliというパッケージがよく使われている. これは,コマンドラインツールのインターフェースを定義するためのライブラリで,これを使えば,サブコマンドをもつコマンドラインツールを簡単につくることができる(Usageを自動で生成してくれたり,bash

    cd01
    cd01 2014/06/23
  • Dockerコンテナに入るなら SSH より nsinit が良さそう - Gosuke Miyashita

    追記 はてブでつっこみもらいました が、実行するカレントディレクトリは /var/lib/docker/execdriver/native/$id を使うのが正しいようです。(情報読み違えてた。)こちらには container.json があるので、ソースツリーからコピーしてくる必要ないですね。 また、コンテナ ID 取得は、docker ps -q --no-trunc の方が良い、とも教えていただきました。 つっこみにしたがって、最後の方の説明とシェル関数書き換えました。 つっこみありがとうございます! tl; dr タイトルまま 経緯 Docker でつくったコンテナの中に入って状態を確認するために、コンテナ内で sshd を立ち上げてアクセスする、ってなことを以前やってたんですが、コンテナ内で sshd を立ち上げる、というやり方がいまいちだし、そもそもコンテナの仕組みから考えれば

  • pkgname.com

    The domain has expired and may be available at auction. If this is your domain, you can still renew it. Register or transfer domains to Dynadot.com to save more and build your website for free! pkgname.com 2023 著作権. 不許複製 プライバシーポリシー

    cd01
    cd01 2014/06/02
  • Go言語のコードレビュー

    SoundCloudが2年半ほどGo言語を利用したプロダクトを番で運用した知見をGopherConで発表していた(“Go: Best Practices for Production Environments”).その中で“CodeReviewCommentsというGoogleでのGo言語のコードレビューにおいてよくあるコメントをまとめたサイトが紹介されていた. 最近Go言語を書くようになり,使えそうなのでざっと抄訳してみた.“リーダブルコード”的な視点も含まれており,Go以外の言語でも使えそう. gofmtでコードの整形をすること コメントは文章で書くこと.godocがいい感じに抜き出してくれる.対象となる関数(変数)名で初めて,ピリオドで終わること // A Request represents a request to run a command. type Request str

    cd01
    cd01 2014/05/27
  • Big Sky :: Golang のオフィシャルが提供するインタフェースまとめ

    golang が提供するインタフェースの中で代表的な物の使い方をまとめてみる。 io.Reader type Reader interface { Read(p []byte) (n int, err error) } ご存じ io.Reader。このシグネチャの Read を実装しておけば golang のありとあらゆる入力機能に対して自分のコードを提供する事が出来る。 例えば永遠に「おっぱい」と言い続ける Reader だと以下の様な実装になる。 package main import ( "io" "os" ) var text = []rune("おっぱい") type OppaiReader struct { n int } func (r *OppaiReader) Read(p []byte) (int, error) { in := len(p) nw := 0 for i

    Big Sky :: Golang のオフィシャルが提供するインタフェースまとめ
    cd01
    cd01 2014/05/02
  • Go for gophers

    Go for gophers GopherCon closing keynote 25 April 2014 Andrew Gerrand Google, Inc. Video A video of this talk was recorded at GopherCon in Denver. Watch the talk on YouTube 2 About me I joined Google and the Go team in February 2010. Had to re-think some of my preconceptions about programming. Let me share what I have learned since. 3 Interfaces 4 Interfaces: first impressions I used to think abou

    cd01
    cd01 2014/05/01
  • GitHub - youpy/go-wav: A Go library to read/write WAVE(RIFF waveform Audio) Format

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - youpy/go-wav: A Go library to read/write WAVE(RIFF waveform Audio) Format
    cd01
    cd01 2013/12/29
  • Code Readability

    Go 1.2が12月1日にリリースされました。 そして、同時くらいに社内のGo readability approverの一員になったので、ちょっとCode Readabilityについて書いてみようと思います。 Google社内では、主要なプログラミング言語について Readability というのが存在します。 「C++のReadabilityを持っている」とは、C++のコードをスタイルガイドに従ったコードを読み書きできる能力があることを意味しています。社内のコードベースと一貫したコードで開発できるということです。Readabilityをもっていない人は、Readabilityを持っている人にcode reviewしてLGTM/Approvalを貰わないとコードをrepositoryにcommit/submitすることができません。 readability approverは、ある開発

    cd01
    cd01 2013/12/05
  • GoCon で発表してきました - methaneのブログ

    僕の発表 発表資料というかメモ 発表時間が20分だったので、ISUCONの紹介と、 Go 凄いよってことをアピールしてきました。 あとで流れてる Tweet を見ていたら、僕が一番感動した部分があまり拡散されてなかったので こちらで繰り返しておきます。 去年の ISUCON2 に参加した時、最終的にはカーネル空間で動く Webサーバー兼Memcachedサーバーの recaro を作ったのですが、それ以前に Meinheld や Gonet/http を nginx 並に速くしようと チューニングしていました。 その時に accept4 対応、 nonblock な write を分ける (当時の Go 1.0 ではシステムコールは 基的にブロックするものとして他の goroutine を別スレッドで動かすための処理がシステムコールの たびに実行されていた)、 Date ヘッダを毎

    GoCon で発表してきました - methaneのブログ
    cd01
    cd01 2013/10/16
  • Go: a simple programming environment

    Go: a simple programming environment 23 April 2013 Andrew Gerrand Google Why Go? 2 Software should be simple 3 Software can be simple 4 What I mean by "simple" Small Readable Consistent Orthogonal Predictable Robust Useful by default 5 Go at a glance Compiled Statically typed Clean syntax Simple type system Concurrency primitives Rich standard library Great tools Open source This talk is just a ta

  • Goプログラミング: Rob Pike and Andrew Gerrand [The Changelog] - ワザノバ | wazanova.jp

    [Podcast] http://5by5.tv/changelog/100 GoogleのRob PikeとAndrew GerrandがThe Changelog PodcastGoプログラミングについてインタビューを受けてます。 Goは3年半前に最初にリリース。Cのようなローレベル言語とRubyPythonのようなスクリプト言語と中間の位置づけ。C++のようい何でも機能があるものではなく、シンプルであることがコアバリューで一貫性がある言語。 使ってもらうとどれだけ生産的で早いが実感できる。先日のプロジェクトで全部のテストプログラミングが8ミリ秒で実行できた。プログラマにとって効率的だが、コンピュータにとっても効率的。 Rubyのように同じことをあらゆる書き方で実現できるのではなく、一つではなくてもある程度決まった書き方でロジカルに解決するのが、プログラマー間での共通の理解、コード

    cd01
    cd01 2013/09/22
  • Libraries Written in Go

    This are various libraries implemented in the Go programming language. Please contact me if you know of any others not listed here. Databases go-cdb - Library to read and write D. J. Bernstein’s cdb (“constant database”) format. By John Barham. gocouch - A CouchDB client library written in Go. By Michael Hoisie. gofluid - FluidDB client library for Go by rossdjones (repo is down?) go datamapper -

    cd01
    cd01 2013/07/27
    Goライブラリ
  • 1