タグ

programmingとGoに関するnntsuguのブックマーク (14)

  • 結局、Go言語をやめる理由はなかった件 - Qiita

    この記事は Go 2 Advent Calendar 14日目の穴埋め記事です。 はじめに @okdyy75 さんによる Go 5 Advent Calendar 14日目の の記事「だから僕はGo言語を辞めた」 が「ベンチマークっていうのはこうやるんだよ」というのを説明するために反面教師的な意味で良い教材だと思ったので、反証記事を書きたいと思います。 ベンチマークを取りながらコードを改善して、最終的にGoは遅くないからやめる必要はないということ、そして、なぜ遅いという結論になってしまったのかを掘り下げていきたいと思います。 下準備 幸いなことに、ベンチマークのソースコードがGitHubにある ので、こちらを実行しながら問題点を改善していきましょう。 ちゃんとコードが上がっているのは素晴らしいですね! 一方で、元記事には測定環境が明記されていませんでしたので、同じ環境で測定することはできま

    結局、Go言語をやめる理由はなかった件 - Qiita
  • Goらしいコードの書き方(ミニ)

    Goらしいコードの書き方(ミニ) Go 1.6 Release Party 17 February 2016 鵜飼文敏 Fumitoshi Ukai Google Software Engineer - Chrome Infra team 巻末付録「Goらしいコードの書き方」を書きました。 Ebook is now available! 2 Go 1.6 言語仕様の変更 -> なし! Goらしいコードの書き方は基的にかわっていない。 golang.org/doc/effective_go.html github.com/golang/go/wiki/CodeReviewComments 3 Effective Go Go is a new language. Although it borrows ideas from existing languages, it has unusual

    nntsugu
    nntsugu 2016/02/18
    鵜飼さん
  • Go言語でファジング

    この記事はGo Advent Calendar 2015の21日目の記事です. 今年もGoコミュニティーから多くのツールが登場した.その中でも異彩を放っていたのがGoogleのDynamic testing toolsチームの@dvyukov氏によるgo-fuzzである. go-fuzzはGo関数のファジングを行うツールである.このツールはとても強力で標準パッケージで100以上,golang.org/x/パッケージで40以上,その他を含めると300以上のバグを発見するという実績を残している(cf. Trophies). 記事ではこのgo-fuzzの紹介を行う. ファジングとは? Fuzz testing - Wikipedia, the free encyclopedia ソフトウェアの脆弱性検出におけるファジングの活用 「ファジング」とはソフトウェアのテスト手法である.テスト対象となる

  • Dave Cheney | The acme of foolishness | Page 2

  • Effective Go - The Go Programming Language

    Introduction Go is a new language. Although it borrows ideas from existing languages, it has unusual properties that make effective Go programs different in character from programs written in its relatives. A straightforward translation of a C++ or Java program into Go is unlikely to produce a satisfactory result—Java programs are written in Java, not Go. On the other hand, thinking about the prob

    Effective Go - The Go Programming Language
    nntsugu
    nntsugu 2015/11/23
    まずはここから
  • 最近 golang 書いてる - おさかな日誌

    社内でパフォーマンスチューニングコンテストが開催されてテンション⤴⤴になったので Ruby 実装だった認証認可サーバーの負荷の高い部分を golang で書いてみるのやってみた。 net/http で素のまま書こうと思ったけど、ちょっと検索したら Gin Web Framework というのがあって、よさそうだったので使ってみた。よさそうポイント1、Rack middleware みたいなものがあって before/after filter みたいなのが楽そうだった。2、JSON レスポンスの生成が楽そうだった。適当な HashMap 渡してエンコードしてくれる。最終的にはちゃんとレスポンスも型付けしたほうがいいんだけど楽なやりかたもあると golang 初心者的にうれしい。3、なんかパフォーマンス⤴⤴みたいな空気感じた。あと、そんなに複雑じゃなくていつでも net/http 実装とかに移

    最近 golang 書いてる - おさかな日誌
  • Go入門 vol.2 〜Go言語の基本文法(main パッケージ、インポート、組込み型、変数)〜 - Qiita

    はじめに Go 言語に入門します。第 2 回目になります。 ひたすら写経です。 教材などについての説明は、 下記リンクの中の Go 入門の第一回目をご参照くださいね。 Go入門リンク Go入門 vol.1 〜Go言語の特徴〜 - Qiita 学習内容 今回は、 Go言語の基文法(main パッケージ、インポート、組込み型、変数) について、簡単にまとめていきたいと思います。

    Go入門 vol.2 〜Go言語の基本文法(main パッケージ、インポート、組込み型、変数)〜 - Qiita
  • GAE/Goのdatastoreの挙動について - Qiita

    GAE/J+Slim3の語彙・知識を元にここに解説を書く。 GAE/Goの知識とGo言語の知識が混ぜこぜで書かれているかあまり気にしてはいけない。 以下の調査結果を得るためのテストコードはここに置いた。 EntityにKeyは付属してこない structを定義する時に、そのstructに自分自身のKeyを持たせる方法はない。 EntityにIdまたはNameを自分で定義して、Putする時、Getした後にそこに忘れずにId, Nameを取り出したり移し替えたりして頑張る。 これを自動でやってくれるライブラリがgoonである。 IncompleteKeyはPutした後でも値は変わらない key := datastore.NewIncompleteKey(c, "Test", nil) newKey, err := datastore.Put(c, key, foo) // keyはIncomp

    GAE/Goのdatastoreの挙動について - Qiita
  • GAE/Goのハマったところ(´・ω・`) - Qiita

    2016.12 追記: 記事はGAEのGo SDKに特化した内容です。 GAE全般については↓に記事を書きました。 GAEでハマったこと(´・ω・`) 2014年は半年くらいGoogle App Engine(GAE)/Goのアプリを書く事に費やすことが出来て、とても幸せな一年でした(^^) GAE/Goはご存知の通りずっとbeta(or experimental) (2015/7に正式リリースされました!\(^o^)/)ですが、個人的にはGAEランタイムの中で最強だと思っています。 何よりspin-upが早い!リクエストの処理もgoroutineでシンプルに高速化出来る!GAEアプリ書くならGoを選ばない理由はない!と思っています。 とは言え書籍や情報の少ないGAE/Goの開発、少なからずハマった箇所もありましたのでそれを技術不足露呈も覚悟の上で共有したいと思います。 あ、GAEに興味

    GAE/Goのハマったところ(´・ω・`) - Qiita
  • golangでデストラクタ的なことをする - Qiita

    golangはstructにデストラクタ的なものを定義することは出来ないが、インスタンスがGCに拾われる時に任意の処理をさせることはできる。 具体的方法 runtimeパッケージのSetFinalizer()でfinalizer関数を設定できる。いわゆるデストラクタのようにstructの宣言に付けられるわけではなくて、インスタンスごとに設定しなければならない。 # なのでデストラクタではない runtime#SetFinalizer http://golang.org/pkg/runtime/#SetFinalizer createInstance()でfinalizer関数を設定している。runtime.SetFinalizerには対象のインスタンスの参照とfinalizerとして設定する関数を渡す。 func finalizer(m *string) { fmt.Println("fi

    golangでデストラクタ的なことをする - Qiita
  • goji コトハジメ - fresh,JSON decode,JSON encode - Qiita

    $ fresh 17:33:56 runner | InitFolders 17:33:56 runner | mkdir ./tmp 17:33:56 runner | mkdir ./tmp: file exists 17:33:56 watcher | Watching . 17:33:56 watcher | Watching view 17:33:56 main | Waiting (loop 1)... 17:33:56 main | receiving first event / 17:33:56 main | sleeping for 600 milliseconds 17:33:57 main | flushing events 17:33:57 main | Started! (15 Goroutines) 17:33:57 main | remove tmp/runn

    goji コトハジメ - fresh,JSON decode,JSON encode - Qiita
  • Golang+Revel環境でAngularJSを使うTips - Qiita

    目的: Revel内でAngularJSを使うのに少しコツがいるので環境絡みをまとめておく 環境: go version 1.3.1 revel angularJSは最新のもの 概要: このような環境でAngularJSを使うにはいくつか問題があります。参考文献にもありますがdelimiterが被りっているてんです。どちらかを{{ }}以外にしないとrevelの方が優先されてしまいます。そこで参考文献を参照して自由度が高いrevelのdelimiterを変更しました。その後AngularJSを被せるという方針にしました。 ソースコードと詳細説明: revel側のdelimiter変更方法です。こちらは参考文献そのままです。私は"[[ ]]"に変更しました。 を追加しています。重要なのは"[[ ]]"の部分です。必ず"[["の次にスペースを入れてください。入れないとErrorになります。変更

    Golang+Revel環境でAngularJSを使うTips - Qiita
  • [Go] port 80を開いたあとroot権限を捨てるwebサーバの例 - Qiita

    port 80を開くためにはroot権限が必要だが、開いたあとはセキュリティーリスクを最小限にするために一般ユーザ権限に降格したい、というWebサーバをGoで書く例です。 【追記3】 下記の例ではLinuxで動作させた場合に不十分です。 Linuxではsetuidを呼び出したスレッドにしか効かないので、以下の例をそのままLinuxで動かすとsyscall.Setuid()は成功しますが、HTTPのHandlerでは別スレッドで動くことがあるため、rootのままで動作することになります。 methaneさんのコメントを参照ください rootで起動した状態で":80"をlistenして syscall.Setuid() で一般ユーザになり http.Serve()する package main import ( "net" "net/http" "syscall" "log" ) func m

    [Go] port 80を開いたあとroot権限を捨てるwebサーバの例 - Qiita
  • 動的言語だけやってた僕が、38日間Go言語を書いて学んだこと - Qiita

    Go言語を始めて38日たったので、これからGo言語を始めるプログラマにちょっとでもヒントになるように、どのようにGo言語を始めて、どのような手順で学んできたかまとめておきます。 筆者のバックグランド PHP歴、JavaScript歴10年~ Python 3ヶ月くらい Ruby 1日 静的言語経験ほぼ皆無(Java 3日くらい、Scala 3日くらい、Objective-C 1週間くらい、Cそもそも挫折、C# 1日) 静的言語というと、「コンパイルの一手間が面倒」だとか「環境を作るのが面倒」だとか先入観があり、ほぼわず嫌い状態でした。 Go言語とは? Go言語は2009年にGoogleによって作られたオープンソースの静的言語で、LinuxMacWindowsAndroidで動作します。最近ではGoogle App Engineで使うこともできます。 golang.jpの解説によると

    動的言語だけやってた僕が、38日間Go言語を書いて学んだこと - Qiita
  • 1