タグ

Goに関するWatsonのブックマーク (260)

  • Go言語でag(The Silver Searcher)ライクな高速検索ツールをつくった。EUC-JP/Shift-JISも検索できマス。

    いまや高速パターン検索といえばag(The Silver Searcher)ですが、検索対象がUTF-8のテキストを前提としているため、EUC-JPやShift-JISといったファイルを検索するのに課題があります。 これまで、それらの日語文字セットを検索できるようにするため、色々とagの改造、公開を行っていました。 ag(The Silver Searcher)でEUC-JP/Shift-JISのファイルも検索できるようにしてみた 日語圏特化型ag -白金- の配備が完了しました しかし、特定の国の文字コードだけに特化した修正というのをmasterに取り込んでもらうわけにもいかず、派生ブランチとして追随するのも、やはり面倒… そこで年始にGo言語を触ったのをきっかけに、Go言語でパターン検索ツールをつくってみました。 せっかくなのでポストagを目指して、プラチナサーチャー(The Pl

    Go言語でag(The Silver Searcher)ライクな高速検索ツールをつくった。EUC-JP/Shift-JISも検索できマス。
    Watson
    Watson 2014/01/16
  • Go言語の気に入ったところ/気に入らなかったところ - はこべにっき ♨

    二日間ほど集中してgo言語でコード書いたので、その間に感じたことをまとめてみます。普段はだいたいPerlJavaScriptでWebアプリケーションを書いています。 まとめの要約 go言語良い Webアプリケーション書くならPerlとかRubyが良い PerlとかRuby書ける人がミドルウェア書くならgo言語良い 気に入ったところ コンパイルエラーが親切 たとえば気楽な気持ちで以下のようなコードを書くと package main import ("fmt"; "net/http"; "log") func main() { resp := http.Get("http://hatenablog.com/") fmt.Println(math.Pi) } 以下のように丁寧に問題箇所を教えてくれます。 ./hoge.go:6: imported and not used: "log" ./h

    Go言語の気に入ったところ/気に入らなかったところ - はこべにっき ♨
    Watson
    Watson 2013/12/21
  • GoでCocoa APIを使う、もしくは他のイベントループをGoに混ぜる方法 - unknownplace.org

    Gocgo という機能を使うと、GoからCの世界のコードを呼んだり、呼ばれたりすることができる。 Perlで言うところのXSというやつだ。 このcgoを使ったGoプログラムは、昔はMakefileを利用してビルドしていたそうだが、 1.0からは go get や go build と言った、go toolがcgoに対応したのでそういうことも必要なくなっている。 cgoの基的な使い方 まずは import "C" として、Cという疑似パッケージをimportする。 このパッケージを使うと、 C.fprintf(...) というような感じでCの世界にアクセスできるようになる。 また、このimport文の直前のコメントはCのコードとして解釈される。 なので、 package main /* #include <stdio.h> void hello() { fprintf(stderr,

  • Go 1.2 パフォーマンス改善のまとめ - ワザノバ | wazanova

    http://blog.gopheracademy.com/day-02-go-1.2-performance-improvements Gopher Academyがブログで、Go 1.2 のパフォーマンス改善点をまとめています。 1) 8kb stack segments goroutineはデフォルトで4,096 bytesのstack segmentsが割り当てられているが、繰り返しのある、もしくは長いcall chain(ほとんどのencoding/*パッケージはこれに当てはまる。)のstack splittingやstack straddlingのある内部ループを含むコードは、パフォーマンスが落ちることで知られていた。10月がRuss Coxが、この値を倍の8kにすることを提案。前提となるJsonEncoderのベンチマークが安定しないという問題があったが、Go 1のベンチマー

    Watson
    Watson 2013/12/04
  • 規模の大きい本番システムをGo言語で書き直した感想 - ワザノバ | wazanova.jp

    http://matt-welsh.blogspot.com.au/2013/08/rewriting-large-production-system-in-go.html Go言語の4周年をテーマにしたgolang.orgのブログで紹介されていた、GoogleのMobile Web Performanceチームに所属するMatt Welshのブログです。大規模な番システムの作り直しにGo言語を採用した経験を語っています。 1) 背景 C++のオリジナルのコードベースは問題なく作動していたが、何年も複数の目的の違うプロジェクトで共有されていたため、スピーディーに改修するのが難しくなっていた。(何のシステムなのか具体的に書いてないのは残念。。) イメージフォーマットをトランスコードするライブラリはC++で完璧に動作していたので、そのまま残し、それ以外を全てGo言語で書き直した。 元のコード

    Watson
    Watson 2013/11/21
  • GCC、JavaからGoへの入れ替え提案

    The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada, as well as libraries for these languages. GCCのメーリングリストにJava(GCJ)のサポートを終了し、代わりにGo言語をデフォルトのサポート言語としてはどうかという提案が「[RPC]Replace Java with Go in default languages」として投函された。すでにGCJの開発はメンテナンスモードに入っていること、OpenJDKという活発な開発コミュニティが存在していること、OpenJDKの活動を引き出すというGCJの当初の目的はすでに果たせたこと、などが理由としてあげられている。 GCJはGCCのブートストラップおよびリグレッシ

    GCC、JavaからGoへの入れ替え提案
  • Go言語のOS X上でのGDBデバッグ環境構築 - unknownplace.org

    Go言語は gdbでのデバッグがサポートされている のだが、OS X でそれを使おうとしたらいろいろ罠にはまったのでここに記しておく。 (このエントリ執筆時の手元の環境は OS X 10.9(.0) Mavericks + Xcode 5.0.1) 罠一覧 OS X 付属のgdbが古い Xcode 5.0.1のclangだとgdbのビルドがこける ビルドするgdbpython2にリンクさせないとGo付属のruntime-gdb.pyが動かない[1] ビルドしたgdbにコード署名をしないと他プロセスをアタッチできない OS X 付属のgdbが古い Goのコードをgdbでデバッグするには、gdb 7.1以上が必要ということだが、OS X (Xcode?) 付属のgdbは古くて使えない。 手元のバージョンは GNU gdb 6.3.50-20050815 (Apple version gdb-

    Watson
    Watson 2013/10/29
  • すぐに宮崎あおいを appletv で見られるものを作った。 - soh335 memo

    最近つらまることが多い。 そんなとき、 chrome の空タブで宮崎あおいを見ているが、家で一人で肉じゃが作って一人でべてる時は、両手が使えないし小さなパソコンと向き合うのはつらいし不便だ。 なので目の前にあるテレビで綺麗に見たかった。 appletv を持っているが、スクリーンセーバの機能では、手元にフォルダを作らないといけないし、気軽に切り替えることが出来ない。 だから手軽に、 appletv のスライドショーで綺麗に見られるものを作った。 あーもうやってらんねーって時はちょろっとコマンドを打てば pc より大きいテレビで、すぐ会える。最高。結婚したい。 airshow sample from soh335 on Vimeo. soh335/airshow · GitHub すぐに宮崎あおいを見れるGoogle Chromeの拡張作った。 - @soh335 memo aoi miy

    すぐに宮崎あおいを appletv で見られるものを作った。 - soh335 memo
  • Emacsを使ったGo言語開発手法(2013.07版) - YAMAGUCHI::weblog

    はじめに こんにちは、Go界の橋爪功です。以前mattnさんがVimを使ったGoの開発環境というエントリを書かれていたんですが、自分用にもEmacs版を、と思ったので、まとめておきます。 基礎からわかる Go言語 作者: 古川昇出版社/メーカー: シーアンドアール研究所発売日: 2012/11/21メディア: 単行(ソフトカバー) クリック: 7回この商品を含むブログ (2件) を見る 参考 Big Sky :: Vimを使ったGo言語開発手法 / - go - The Go Programming Language - Google Project Hosting Emacsのオプションを入れときましょう Adentures in Go: Using ctags with Go etags/ctagsを使いたい場合には、まだGoに対応してないので.ctagsファイルで対応 Emacsで

    Emacsを使ったGo言語開発手法(2013.07版) - YAMAGUCHI::weblog
  • Go1.1 の Race Detector - Block Rockin’ Codes

    intro 先々週、Go 1.1 がリリースされました。 いくつか新しい機能が入ったのですが、その中の Race Detector というのが面白そうだったので、 軽く調べてみました。 Race Detector この機能は、簡単に言うと「レースコンディションが発生していないか」を調べる機能です。 といわれると、なんだかすごい機能ですね。 そもそもレースコンディションとは、マルチスレッドプログラミングなどで、単一のリソースを複数のスレッドで共有した際に、競合状態が発生して、予期しない結果を生んだりする状態です。 レースコンディションによるバグは、再現生が低かったりするので、一般的にデバッグが難しいとされています。 そうした状態が起こらないように、がっちりロックを取り合ったり、そもそもメモリを共有せずメッセージパッシングするなど、別のパラダイムで情報を共有する方法が取られます。 Go も、以

    Go1.1 の Race Detector - Block Rockin’ Codes
    Watson
    Watson 2013/06/23
  • Docker を読む - Kato Kazuyoshi

    Docker はひとつの Linux システムの上で、複数の Linux システムを動かすためのソフトウェアだ。システムの分離には Linux Containers (LXC) を、ファイルシステムまわりには Advanced multi layered unification filesystem (Aufs) をつかっている。 DockerGo で書かれている。ソースコードは全体でだいたい15,000行で、そのうちおよそ 2/3 が体、1/3 がテストとなっている。 % cat **/*.go | wc -l 14976 % cat $(ls **/*.go | grep -vi test.go) | wc -l 9797 % cat $(ls **/*.go | grep -i test.go) | wc -l 5179 % Docker Init, Docker Daemo

    Watson
    Watson 2013/06/23
    Docker は Go で書かれているだね
  • Goはクロスコンパイルが簡単 - unknownplace.org

    homebrew の Go用のレシピ を見た人は、その中にこんなオプションが定義されているのに気がついたかもしれない: option 'cross-compile-all', "Build the cross-compilers and runtime support for all supported platforms" option 'cross-compile-common', "Build the cross-compilers and runtime support for darwin, linux and windows" Goはクロスコンパイルが可能なようにビルドしておけば、簡単に他の環境で動くバイナリを作ることができるようになっているらしい。 Goがダイナミックライブラリに依存しない実行バイナリを作るという特徴と併せて考えると非常におもしろい(そして、使える)機能だと思

    Watson
    Watson 2013/06/16
  • Statically Recompiling NES Games into Native Executables with LLVM and Go - Andrew Kelley

    Statically Recompiling NES Games into Native Executables with LLVM and Go I have always wanted to write an emulator. I made a half-hearted attempt in college but it never made it to a demo-able state. I also didn't want to write Yet Another Emulator. It should at least bring something new to the table. When I discovered LLVM, I felt like I finally had worthwhile idea for a project. This article pr

    Watson
    Watson 2013/06/08
  • TechCrunch | Startup and Technology News

    When Alex Ewing was a kid growing up in Purcell, Oklahoma, he knew how close he was to home based on which billboards he could see out the car window.…

    TechCrunch | Startup and Technology News
    Watson
    Watson 2013/05/15
  • http://blog.golang.org/go-11-is-released.article

    Watson
    Watson 2013/05/15
  • Mozilla、Goで実装されたサーバーログ収集・分析ツール「Heka」を公開 | OSDN Magazine

    Mozillaは4月30日、サーバーのログデータ収集や分析の簡素化を図るフレームワーク「Heka」のベータ版「Heka v0.2b1」をリリースした。サーバーの稼働状況に関するさまざまなデータの収集・分析などを簡素化・容易化するツールで、初めてのベータ版公開となる。 HekaはMozillaのサービスチームが開発したツール。メッセージのルーティング、収集、分析などの機能をもつ「hekad」とクライアントライブラリから構成されている。logstasch、statsd、syslogなどさまざまなツールが持つ役割を統合するもので、ログファイルやサーバー診断などのデータを収集し、標準形式に変換した後にルーティングルールセットに基づき評価してルーティングするという流れ。hekadはデータパイプラインの構築に適しているとの理由から米GoogleGo言語で作成されており、軽量でほとんどのホストで動くと

    Mozilla、Goで実装されたサーバーログ収集・分析ツール「Heka」を公開 | OSDN Magazine
  • gitでバイナリファイルを気軽に扱えるフィルターを作りました : DSAS開発者の部屋

    ネイティブアプリの開発とかしてると、ついつい git にスプライトの png とか一緒にコミットしてしまって、気づいたらリポジトリサイズが 1GB 超えてたとかありますよね。 git annex とか、格的なアセット管理システムとか使えば良いんだけど、普通のgitコマンド覚えるだけでいっぱいいっぱいな人にさらに他のツールまで覚えてもらうのは大変です。 そこで、登録しておいた拡張子のファイルはハッシュ値だけをリポジトリに格納し、ファイルの内容は別のディレクトリやAmazon S3に格納する git-largefile/gits3 を作りました。 git-largefile/gits3 は git の filter として動きます。 filter は通常改行コードの変換をしたり $Id$ のようなキーワードを変換したり行末のスペースを消す、文字通りフィルターなのですが、ここでファイル体から

    gitでバイナリファイルを気軽に扱えるフィルターを作りました : DSAS開発者の部屋
    Watson
    Watson 2013/03/23
  • Big Sky :: Go言語で出来た grep、jvgrep の高速化

    以前、こんな記事を書いた。 Big Sky :: 日語grepが出来るjvgrepというのを作った。 http://mattn.kaoriya.net/software/lang/go/20110819203649.htm 実は jvgrep を作った当初、処理がかなり遅かった。まぁ複数のエンコーディングを試すからしょうがないよね程度に思ってたけど、どうにか速くならないかと思い、処理の並行化を行ってパフォーマンスを向上させた。この記事はその時にやった改善策。 jvgrep は -R オプションや **/* で再帰検索する機能が付いているんだけど、これを行う場合 find grep という処理が走る事になる。 しかしながら結果の順番を守ろうと考えた場合、find と grep を安直に同時に走らせる訳にはいかなくなる。走らせると結果が交錯してしまうからだ。 こういうのを行う場合、C言語だと

    Big Sky :: Go言語で出来た grep、jvgrep の高速化
    Watson
    Watson 2012/12/04
  • Big Sky :: コマンドラインからredmineを扱える「godmine」作った。

    とりあえず issues 関連は出来てるので、これを使うコマンドラインプログラムを書いた。 $ go get github.com/mattn/go-redmine/godmine 名前は中二病っぽいけど「godmine」という名前にした。 使い方は、例えば issue の一覧であれば $ godmine issue list もしくは $ godmine i l issue の登録は $ godmine issue create "なんてこった" "大変だ!" みたいにするか $ godmine issue append で起動するテキストエディタ(環境変数EDITORを参照しunix改行コードが扱えるテキストエディタのみ使用可能)で ### Subject Here ### ### Description Here ### 上記の部分を書き換えて保存終了する。 設定ファイルは ~/.c

    Big Sky :: コマンドラインからredmineを扱える「godmine」作った。
  • 日本語プログラムに近づいたGo言語 - YAMAGUCHI::weblog

    はじめに こんにちは、Go界の荒俣宏です。適当にGoで遊んでたらむちゃくちゃなコードが書けたのでメモとして残しておきます。Special thanks to BeProud 前提 GoはコードがUTF-8で記述されることを前提としていて、UTF-8で表現できる文字列であればキーワードにかぶらない限り識別子として使えます。 サンプルコード main.go package main import ( "fmt" ) type びーぷらうど struct { めんばー []string } func びーぷらうどの設立() びーぷらうど { bp := びーぷらうど{ めんばー: []string{ "shacho", "しんすけさん", }, } return bp } func (bp *びーぷらうど) に彗星の如く現れた(新めんばー string) { bp.めんばー = append(b

    日本語プログラムに近づいたGo言語 - YAMAGUCHI::weblog
    Watson
    Watson 2012/11/05