タグ

Goに関するdamehumanのブックマーク (150)

  • Go で Language Benchmark Game に挑戦して惨敗した - Qiita

    {"B", "(c|g|t)"}, {"D", "(a|g|t)"}, {"H", "(a|c|t)"}, {"K", "(g|t)"}, {"M", "(a|c)"}, {"N", "(a|c|g|t)"}, {"R", "(a|g)"}, {"S", "(c|g)"}, {"V", "(a|c|g)"}, {"W", "(a|t)"}, {"Y", "(c|t)"}, このベンチマークは正規表現の速度を測るマイクロベンチになっていて、2~4は同じ正規表現を使わないといけないというルールになっています。 特に単純置換である2と4は普通文字列処理で書くと思うのですが、正規表現を使うことが要求されています。 まず、並列化ができてなくて遅いのか、それとも単純に1コア当たりの性能が悪いのかですが、これは CPU Time (全コアの計算時間を合計した時間) と Elapsed Time (開始か

    Go で Language Benchmark Game に挑戦して惨敗した - Qiita
    damehuman
    damehuman 2014/12/09
  • Yokohama.pm #12 でGoからPerlを使うというマニアックな話をしました

    今年も残すところあと1ヶ月ですね! さて、先週金曜日にYokohama.pm #12がありました。会場がうちの会社だったのでじゃあ誰かしゃべるよね〜と思って眺めてたのですが、なんかみんなもじもじしてて誰もしゃべりそうになかったので、とりあえずネタ枠としてGoからPerlを呼ぶという一発ネタでもやるかねぇということを考え始めました。 ちょうど最近GoでC/C++のライブラリを呼ぶのを仕事でやっていて、既にcgo周りの知見はだいぶたまっていたので、PerlをCから呼ぶところさえ理解すればたぶんできるなーということでperldocのperlembedを読みながらCのサンプルを動かして、それをGoに移植したら30分くらいで動いたのでじゃあこれで一ネタやろうかなということで15分でエントリーしました。 発表に至ったなりゆきはそんな感じでした。内容はスライドをご参照ください。 表紙の背景の写真はうちの

    Yokohama.pm #12 でGoからPerlを使うというマニアックな話をしました
  • Goに入ってはGoに従え

    Goに入ってはGoに従え Go Conference 2014 autumn 30 November 2014 鵜飼文敏 Fumitoshi Ukai Google Software Engineer - Chrome Infra team Go Readability Approver Go言語のReadabilityをレビューするチーム コードレビューを通じてGo言語のよいコードの書きかたを教える メインのプロジェクトとは別のコードをレビュー 一年前くらい前に参加して 20% timeで 200くらいのCLをレビューしました 今は一日3CLくらい、週に12CLほどのペースでやっています Gopher by Renée French 2 Readabilityスキルとは? プログラミング言語のリテラシー 作法にかなったやりかた で、読んだり書いたりできる能力 言語ごとに作法が違う C++

    damehuman
    damehuman 2014/12/01
  • Why my Go program is slow?

    The document discusses why a Go program may be slow and provides tips for profiling and optimizing Go code performance. It introduces the pprof CPU profiler and how to use it to analyze performance bottlenecks. Some factors that can slow down Go programs include garbage collection, memory copying, and function calls. The document hopes that future versions of Go will include features like concurre

    Why my Go program is slow?
    damehuman
    damehuman 2014/11/30
  • Go and the Zen of Python

    Go and the Zen of Python Andrew Gerrand Gopher What is Go? A new programming language. (First release in November 2009, 1.0 in March 2012.) In a nutshell: A simple language that is easy to learn and read. Statically typed, but with a dynamic feel. Compiled to native machine code, but has a fast development cycle. Language-level concurrency features. Expansive "batteries included" standard library.

    damehuman
    damehuman 2014/11/30
  • 識別子に絵文字などを使えるようにする - moriyoshiの日記

    とある言語で識別子に絵文字などのシンボルが使えるそうなのですが、一応GoだってUnicodeクリーンなんだ。 これをコンパイラにわせてみる。 $ go run sushi.goどうだ? # command-line-arguments ./sushi.go:3: invalid identifier character U+1f363 ./sushi.go:8: invalid identifier character U+1f363なのでちょっと悔しい。ということでやりました。 $ go run sushi.go sushi~

    識別子に絵文字などを使えるようにする - moriyoshiの日記
    damehuman
    damehuman 2014/11/30
  • groupcache‎ で組み込み型分散キャッシュ - Qiita

    groupcache‎ は Go で書かれた分散キャッシュライブラリで、複数プロセスでキャッシュを共有するプログラムが簡単に書けます。多くの用途で memcached を置き換えることを目指していて、Google のプロダクション環境で使われているようです。 個人的に groupcache の魅力は、 キャッシュを複数のピアに分散する (sharding) キャッシュに無いデータを同時に大量にリクエストしても、キャッシュ生成処理は1度だけ実行され、他のリクエストには生成されたキャッシュを返す(厳密では無いが、だいたいの場合1度きり) 頻繁にリクエストされるデータがリモートにあった場合、ローカルにもキャッシュする 一方、注意しないといけない点はキャッシュのアップデートには対応していないことです。groupcache には expire や明示的な破棄は存在しません。あるキーに対する値は 常に

    groupcache‎ で組み込み型分散キャッシュ - Qiita
    damehuman
    damehuman 2014/11/30
  • Goと大規模分散システムの相性 - ワザノバ | wazanova

    Googleで分散システムの開発をてがけ、現在はソーシャルメディア mttr.toを立上げ中のBen Sigelmanが、Goを分散システムの開発に利用する場合の、メリットおよびチャレンジについて講演しています。 分散システムのあるべき姿 分散システムの勘所は、最上位ビットをパフォーマンス的にも構造的にもうまく扱うことができるかというのがポイント。その効果が一番大きい。スループットの改善のような詳細は、自分もGoogleでそれに取組んだけれども、9ヶ月くらいたつとハードウェアの性能で解決される可能性が高い。また、構造的にというのは、なるべく小さなコンポーネントを組み合わせたシステムにできるかという意味。 Goのよいところは、 両方、とくに後者によい。Railsだとアプリを複数個用意して並列処理するのは大変だったけど、Goだとシンプルにできて、標準ライブラリも読みやすいとかなどなど。パフォー

    damehuman
    damehuman 2014/11/24
  • go.mobileを動かしてみた。 - Qiita

    go.mobileパッケージを利用してみたので、環境構築などのメモを書きました。 Go 1.4でAndroidをサポートすることに。 私はGoAndroidは相性が悪いので入らないだろうと思っていたのですが、Go1.4で入れてきました。 そこで、動作確認をしたところしっかり動作して、Nexus 5上にDeployもできたので記事を書いておこうと思います。 環境構築からデプロイまでの手順 詳細を飛ばしたい方は手順を見て進めて下さい。ちなみに確認した環境はMacOSX 10.9.5です。 go get code.google.com/p/go.mobile (2014/11/22追記) 公式サブパッケージが変更になる関係でgolang.org/x/mobileというリポジトリに変わります。 (2014/11/22追記) go get golang.org/x/mobile でも可能です。 (

    go.mobileを動かしてみた。 - Qiita
    damehuman
    damehuman 2014/11/03
  • goのprojectを始める - $shibayu36->blog;

    一切go触ってなくて全く何も分からなかったので、goのprojectの始め方すらも分からないのでググったのメモっておく。 私のプログラミングの始め方 : Go | Yakst 基的にはmkdirをしてprojectを開始するようだ。とりあえずこの記事を見ればgoのprojectを開始できる。 さあGoを始めよう!環境構築,”Hello World”から簡単なバックエンドサーバーまで | POSTD この記事もとりあえずの入門に参考になる。 これからGoを始める人のためのTips集 | The Wacul Blog Tips集もあった。gofmtの-rオプションとか便利そう。 http://r7kamura.github.io/2014/06/21/ghq.html あとはこの一番下に書いてあるとおり、ghqのpathとgoのpathは合わせた。 これでとりあえずは作れそう。

    goのprojectを始める - $shibayu36->blog;
  • さあGoを始めよう!環境構築,”Hello World”から簡単なバックエンドサーバーまで | POSTD

    Goは、 信頼できる賢い人たち によって作られた愛すべきささやかなプログラミング言語で、 現在も成長中の大規模なオープンソースコミュニティ によって、継続的に改善が続けられています。 Goの基原則はシンプルであることですが、時折、約束事が分かりにくいこともありますね。以下では、私がどのようにしてGoプロジェクトを始め、どのようにGoのイディオムを使っているかを紹介したいと思います。一緒に、Webアプリケーション用のバックエンドサービスを構築しましょう。 環境の構築 新規プロジェクト Webサーバの作成 ルートの追加 複数APIへのクエリ 並列化 シンプルさ 追加演習 環境の構築 最初のステップは、もちろんGoをインストールすることです。オフィシャルサイトに用意されている、 お使いのオペレーティングシステム用のバイナリディストリビューション を使ってください。MacでHomebrewを使

    さあGoを始めよう!環境構築,”Hello World”から簡単なバックエンドサーバーまで | POSTD
    damehuman
    damehuman 2014/10/14
  • Golang でのウェブ開発を考えてみる - Qiita

    Help us understand the problem. What is going on with this article? 仕事Golang を使ってウェブアプリを作ることになりそうなので、どんな構成がいいのか考えてみる。あくまで前提ありきの選択なので、何でもかんでも適用できるわけではない。 JS や静的ファイル部分は今のところ考慮していない。単によく知らないので。 突っ込み大歓迎です。これいいよ!とか教えてください 前提 多機能なフレームワークよりシンプルなフレームワークに色々組み合わせる方法をとりたい。 開発者は数名程度。Golang に精通している開発者が 1 名いる。残りはこれから。 開発者は Django での開発経験が豊富な人が多い 全員ウェブ開発経験はそれなりに積んでいる。 HTML と JSON 両方のパターンが存在するのでテンプレートエンジンは重要。 JS

    Golang でのウェブ開発を考えてみる - Qiita
    damehuman
    damehuman 2014/10/06
  • Goのガーベジコレクタを視覚化するツール | POSTD

    (環境変数GODEBUGは、 ランタイム パッケージで提供されています) この環境変数を指定してプログラムを起動すると、標準出力に以下の追加出力が出力されます(少し簡略化されています)。 % env GODEBUG=gctrace=1 godoc -http=:6060 ... gc76(1): 2+1+1390+1 us, 1 -> 3 MB, 16397 (1015746-999349) objects, 1436/1/0 sweeps, 0(0) handoff, 0(0) steal, 0/0/0 yields gc77(1): 2+0+1582+1 us, 2 -> 4 MB, 14623 (1016248-1001625) objects, 1436/0/0 sweeps, 0(0) handoff, 0(0) steal, 0/0/0 yields scvg0: inuse:

    Goのガーベジコレクタを視覚化するツール | POSTD
    damehuman
    damehuman 2014/09/05
  • チャットで学ぶ Go ネットワークプログラミング : DSAS開発者の部屋

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

    チャットで学ぶ Go ネットワークプログラミング : DSAS開発者の部屋
    damehuman
    damehuman 2014/09/04
  • Golangで関数をグローバル変数に代入してテスト時にスタブする - 小野マトペの納豆ペペロンチーノ日記

    こんにちは、小野マトペです。タイトル全部です。 昨日、現在時刻によって条件分岐するロジックを含むGoプログラムを書いていて、どうテストするか困ったのですが、うまい(と思う)やり方を思いついたのでここに書いておきます。 書いていたのはまあだいたいこういうソースコードです。 // main.go package main import ( "fmt" "time" ) func main() { fmt.Println(Greet("マトペ")) } func Greet(n string) string { t := time.Now() if 6 <= t.Hour() && t.Hour() <= 18 { return fmt.Sprintf("こんにちは%sさん。今は%d時ですよ!", n, t.Hour()) } else { return fmt.Sprintf("こんばんは%s

    Golangで関数をグローバル変数に代入してテスト時にスタブする - 小野マトペの納豆ペペロンチーノ日記
    damehuman
    damehuman 2014/08/14
  • Go言語のスタックとヒープ

    Go言語の スタックとヒープ najeira @ GoCon 2013 Autumn

    Go言語のスタックとヒープ
    damehuman
    damehuman 2014/08/13
  • golang勉強会でGo製ツールの配布方法について話してきた

    golang勉強会でGo製ツールの配布方法について話してきた “Ship your CLI tool built by golang to your user #golangstudy” “Golang勉強会”で発表してきた.Go言語で作成したツールをクロスコンパイルして,複数プラットフォームに配布する方法について話してきた.自分がGoをはじめた理由の一つがクロスコンパイルによる配布のしやすさであり,いろいろ実践したりそれ用のツールを作ったりしてきたのでそれをまとめた. 以下の視点で話したつもり, 自動化により開発者の負担を減らす ユーザがツールを使うまでの負担を減らす “わかりやすいREADME.mdを書く”にも似たようなことを書いたけど,自分のような無名なエンジニアの作ったツールであってもユーザに使ってもらうには,2点目のような視点を大切にしないといけないと思う. 発表は以下の記事をも

    damehuman
    damehuman 2014/08/11
  • インタフェースの実装パターン #golang - Qiita

    はじめに この記事は,以下の過去にQiitaに投稿したインタフェースの実装パターンの記事に,typeやメソッド,インタフェースの基的な説明を追加してわかりやすくしたものです. Go言語における埋め込みによるインタフェースの部分実装パターン structにinterfaceを埋め込んで,動的に入れ替えるパターン まずtypeとメソッド,基的なインタフェースの実装方法についておさらいすることで,さまざまなインタフェースの実装パターンを扱う準備をしましょう. typeで型を宣言する まずはじめに,Go言語における型の宣言方法をおさらいします.Go言語をはじめたばかりの方の中に,typeの使い方を限定的にしか理解していない方をよく見かけます.ご存知のとおり,typeは型を宣言するために使うキーワードです.以下のように,構造体型やインタフェース型の宣言の際に,使用することが多いでしょう. //

    インタフェースの実装パターン #golang - Qiita
    damehuman
    damehuman 2014/08/10
  • githubのwebhook用サーバをつくった

    githubのWebhook、皆さん使ってますか。Webhookを受け取るサーバって何使ってますか、sinatraですか?このエントリは社内でserfのデモ用に書いた、github webhook用のHTTPサーバhoko in golangについてのエントリです。 TL;DR hokoというgithubのwebhookを受け取るためのHTTPサーバをつくった。 https://github.com/tmtk75/hoko x-github-eventヘッダを解釈するよ x-hub-signatureに対応してるからsecurityもケアしてるよ みんな大好きgolangで書いたよ serfと連携、というかserfの関数をそのまま呼び出すよ hokoが作るクラスタにjoinしておけば、webhookイベントを他のホストで受けることが比較的簡単にできるよ 背景 githubへのpushされた

  • Big Sky :: golang で N 個の chan を同時に待つ

    « C++ 製 micro web framework「crow」を使って lingr の bot 書いてみた。 | Main | Windows でも色付きでログが出せる golang のライブラリ「go-colorable」書いた。 » あと最近の発見と絶望は、C.selectが呼び出せないこと。select中のdefaultでnonblocking相当にできるけど、可変数なfdをselectしたい相当をどう書けばいいんだろうか。 #golang — HiroakiKawai (@kwi) July 28, 2014 reflect.Select を使います。 package main import ( "fmt" "math/rand" "reflect" "sync" "time" ) func multpleSelect(chans []chan bool) (int, bool

    Big Sky :: golang で N 個の chan を同時に待つ
    damehuman
    damehuman 2014/07/29